<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.verzauberte-welten.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Maintenance+script</id>
	<title>Verzauberte Welten e.V. - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.verzauberte-welten.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Maintenance+script"/>
	<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/Spezial:Beitr%C3%A4ge/Maintenance_script"/>
	<updated>2026-10-27T16:30:32Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=SMW/Schema:Profile:Facetedsearch_default_profile&amp;diff=4744</id>
		<title>SMW/Schema:Profile:Facetedsearch default profile</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=SMW/Schema:Profile:Facetedsearch_default_profile&amp;diff=4744"/>
		<updated>2024-08-07T17:37:05Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Semantic MediaWiki search import&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;FACETEDSEARCH_PROFILE_SCHEMA&amp;quot;,&lt;br /&gt;
    &amp;quot;profiles&amp;quot;: {&lt;br /&gt;
        &amp;quot;default_profile&amp;quot;: {&lt;br /&gt;
            &amp;quot;message_key&amp;quot;: &amp;quot;smw-facetedsearch-profile-label-default&amp;quot;,&lt;br /&gt;
            &amp;quot;debug_output&amp;quot;: false,&lt;br /&gt;
            &amp;quot;theme&amp;quot;: &amp;quot;default-theme&amp;quot;,&lt;br /&gt;
            &amp;quot;result&amp;quot;: {&lt;br /&gt;
                &amp;quot;default_limit&amp;quot;: 50,&lt;br /&gt;
                &amp;quot;paging_limit&amp;quot;: [&lt;br /&gt;
                    10,&lt;br /&gt;
                    20,&lt;br /&gt;
                    50,&lt;br /&gt;
                    250,&lt;br /&gt;
                    500&lt;br /&gt;
                ]&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;filters&amp;quot;: {&lt;br /&gt;
                &amp;quot;property_filter&amp;quot;: {&lt;br /&gt;
                    &amp;quot;hierarchy_tree&amp;quot;: false,&lt;br /&gt;
                    &amp;quot;filter_input&amp;quot;: {&lt;br /&gt;
                        &amp;quot;min_item&amp;quot;: 10&lt;br /&gt;
                    }&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;category_filter&amp;quot;: {&lt;br /&gt;
                    &amp;quot;hierarchy_tree&amp;quot;: false,&lt;br /&gt;
                    &amp;quot;filter_input&amp;quot;: {&lt;br /&gt;
                        &amp;quot;min_item&amp;quot;: 10&lt;br /&gt;
                    }&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;value_filter&amp;quot;: {&lt;br /&gt;
                    &amp;quot;default_filter&amp;quot;: &amp;quot;list_filter&amp;quot;,&lt;br /&gt;
                    &amp;quot;condition_field&amp;quot;: false,&lt;br /&gt;
                    &amp;quot;filter_input&amp;quot;: {&lt;br /&gt;
                        &amp;quot;min_item&amp;quot;: 10&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tags&amp;quot;: [&lt;br /&gt;
        &amp;quot;faceted search&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=MediaWiki:Smw_import_schema&amp;diff=4743</id>
		<title>MediaWiki:Smw import schema</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=MediaWiki:Smw_import_schema&amp;diff=4743"/>
		<updated>2024-07-02T18:30:21Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Semantic MediaWiki default vocabulary import&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://schema.org/ | [https://schema.org/version/latest Schema.org], V 14.0&lt;br /&gt;
 about|Type:Text &lt;br /&gt;
 abridged|Type:Text &lt;br /&gt;
 abstract|Type:Text &lt;br /&gt;
 accelerationTime|Type:Text &lt;br /&gt;
 acceptedAnswer|Type:Text &lt;br /&gt;
 acceptedOffer|Type:Text &lt;br /&gt;
 acceptedPaymentMethod|Type:Text &lt;br /&gt;
 acceptsReservations|Type:Text &lt;br /&gt;
 accessCode|Type:Text &lt;br /&gt;
 accessMode|Type:Text &lt;br /&gt;
 accessModeSufficient|Type:Text &lt;br /&gt;
 accessibilityAPI|Type:Text &lt;br /&gt;
 accessibilityControl|Type:Text &lt;br /&gt;
 accessibilityFeature|Type:Text &lt;br /&gt;
 accessibilityHazard|Type:Text &lt;br /&gt;
 accessibilitySummary|Type:Text &lt;br /&gt;
 accommodationCategory|Type:Text &lt;br /&gt;
 accommodationFloorPlan|Type:Text &lt;br /&gt;
 accountId|Type:Text &lt;br /&gt;
 accountMinimumInflow|Type:Text &lt;br /&gt;
 accountOverdraftLimit|Type:Text &lt;br /&gt;
 accountablePerson|Type:Text &lt;br /&gt;
 acquireLicensePage|Type:Text &lt;br /&gt;
 acquiredFrom|Type:Text &lt;br /&gt;
 acrissCode|Type:Text &lt;br /&gt;
 actionAccessibilityRequirement|Type:Text &lt;br /&gt;
 actionApplication|Type:Text &lt;br /&gt;
 actionOption|Type:Text &lt;br /&gt;
 actionPlatform|Type:Text &lt;br /&gt;
 actionStatus|Type:Text &lt;br /&gt;
 actionableFeedbackPolicy|Type:Text &lt;br /&gt;
 activeIngredient|Type:Text &lt;br /&gt;
 activityDuration|Type:Text &lt;br /&gt;
 activityFrequency|Type:Text &lt;br /&gt;
 actor|Type:Text &lt;br /&gt;
 actors|Type:Text &lt;br /&gt;
 addOn|Type:Text &lt;br /&gt;
 additionalName|Type:Text &lt;br /&gt;
 additionalNumberOfGuests|Type:Text &lt;br /&gt;
 additionalProperty|Type:Text &lt;br /&gt;
 additionalType|Type:Text &lt;br /&gt;
 additionalVariable|Type:Text &lt;br /&gt;
 address|Type:Text &lt;br /&gt;
 addressCountry|Type:Text &lt;br /&gt;
 addressLocality|Type:Text &lt;br /&gt;
 addressRegion|Type:Text &lt;br /&gt;
 administrationRoute|Type:Text &lt;br /&gt;
 advanceBookingRequirement|Type:Text &lt;br /&gt;
 adverseOutcome|Type:Text &lt;br /&gt;
 affectedBy|Type:Text &lt;br /&gt;
 affiliation|Type:Text &lt;br /&gt;
 afterMedia|Type:Text &lt;br /&gt;
 agent|Type:Text &lt;br /&gt;
 aggregateRating|Type:Text &lt;br /&gt;
 aircraft|Type:Text &lt;br /&gt;
 album|Type:Text &lt;br /&gt;
 albumProductionType|Type:Text &lt;br /&gt;
 albumRelease|Type:Text &lt;br /&gt;
 albumReleaseType|Type:Text &lt;br /&gt;
 albums|Type:Text &lt;br /&gt;
 alcoholWarning|Type:Text &lt;br /&gt;
 algorithm|Type:Text &lt;br /&gt;
 alignmentType|Type:Text &lt;br /&gt;
 alternateName|Type:Text &lt;br /&gt;
 alternativeHeadline|Type:Text &lt;br /&gt;
 alternativeOf|Type:Text &lt;br /&gt;
 alumni|Type:Text &lt;br /&gt;
 alumniOf|Type:Text &lt;br /&gt;
 amenityFeature|Type:Text &lt;br /&gt;
 amount|Type:Text &lt;br /&gt;
 amountOfThisGood|Type:Text &lt;br /&gt;
 announcementLocation|Type:Text &lt;br /&gt;
 annualPercentageRate|Type:Text &lt;br /&gt;
 answerCount|Type:Text &lt;br /&gt;
 answerExplanation|Type:Text &lt;br /&gt;
 antagonist|Type:Text &lt;br /&gt;
 appearance|Type:Text &lt;br /&gt;
 applicableCountry|Type:Text &lt;br /&gt;
 applicableLocation|Type:Text &lt;br /&gt;
 applicantLocationRequirements|Type:Text &lt;br /&gt;
 application|Type:Text &lt;br /&gt;
 applicationCategory|Type:Text &lt;br /&gt;
 applicationContact|Type:Text &lt;br /&gt;
 applicationDeadline|Type:Text &lt;br /&gt;
 applicationStartDate|Type:Date&lt;br /&gt;
 applicationSubCategory|Type:Text &lt;br /&gt;
 applicationSuite|Type:Text &lt;br /&gt;
 appliesToDeliveryMethod|Type:Text &lt;br /&gt;
 appliesToPaymentMethod|Type:Text &lt;br /&gt;
 archiveHeld|Type:Text &lt;br /&gt;
 archivedAt|Type:Text &lt;br /&gt;
 area|Type:Text &lt;br /&gt;
 areaServed|Type:Text &lt;br /&gt;
 arrivalAirport|Type:Text &lt;br /&gt;
 arrivalBoatTerminal|Type:Text &lt;br /&gt;
 arrivalBusStop|Type:Text &lt;br /&gt;
 arrivalGate|Type:Text &lt;br /&gt;
 arrivalPlatform|Type:Text &lt;br /&gt;
 arrivalStation|Type:Text &lt;br /&gt;
 arrivalTerminal|Type:Text &lt;br /&gt;
 arrivalTime|Type:Text &lt;br /&gt;
 artEdition|Type:Text &lt;br /&gt;
 artMedium|Type:Text &lt;br /&gt;
 arterialBranch|Type:Text &lt;br /&gt;
 artform|Type:Text &lt;br /&gt;
 articleBody|Type:Text &lt;br /&gt;
 articleSection|Type:Text &lt;br /&gt;
 artist|Type:Text &lt;br /&gt;
 artworkSurface|Type:Text &lt;br /&gt;
 aspect|Type:Text &lt;br /&gt;
 assembly|Type:Text &lt;br /&gt;
 assemblyVersion|Type:Text &lt;br /&gt;
 assesses|Type:Text &lt;br /&gt;
 associatedAnatomy|Type:Text &lt;br /&gt;
 associatedArticle|Type:Text &lt;br /&gt;
 associatedClaimReview|Type:Text &lt;br /&gt;
 associatedDisease|Type:Text &lt;br /&gt;
 associatedMedia|Type:Text &lt;br /&gt;
 associatedMediaReview|Type:Text &lt;br /&gt;
 associatedPathophysiology|Type:Text &lt;br /&gt;
 associatedReview|Type:Text &lt;br /&gt;
 athlete|Type:Text &lt;br /&gt;
 attendee|Type:Text &lt;br /&gt;
 attendees|Type:Text &lt;br /&gt;
 audience|Type:Text &lt;br /&gt;
 audienceType|Type:Text &lt;br /&gt;
 audio|Type:Text &lt;br /&gt;
 authenticator|Type:Text &lt;br /&gt;
 author|Type:Text &lt;br /&gt;
 availability|Type:Text &lt;br /&gt;
 availabilityEnds|Type:Text &lt;br /&gt;
 availabilityStarts|Type:Text &lt;br /&gt;
 availableAtOrFrom|Type:Text &lt;br /&gt;
 availableChannel|Type:Text &lt;br /&gt;
 availableDeliveryMethod|Type:Text &lt;br /&gt;
 availableFrom|Type:Text &lt;br /&gt;
 availableIn|Type:Text &lt;br /&gt;
 availableLanguage|Type:Text &lt;br /&gt;
 availableOnDevice|Type:Text &lt;br /&gt;
 availableService|Type:Text &lt;br /&gt;
 availableStrength|Type:Text &lt;br /&gt;
 availableTest|Type:Text &lt;br /&gt;
 availableThrough|Type:Text &lt;br /&gt;
 award|Type:Text &lt;br /&gt;
 awards|Type:Text &lt;br /&gt;
 awayTeam|Type:Text &lt;br /&gt;
 backstory|Type:Text &lt;br /&gt;
 bankAccountType|Type:Text &lt;br /&gt;
 baseSalary|Type:Text &lt;br /&gt;
 bccRecipient|Type:Text &lt;br /&gt;
 bed|Type:Text &lt;br /&gt;
 beforeMedia|Type:Text &lt;br /&gt;
 beneficiaryBank|Type:Text &lt;br /&gt;
 benefits|Type:Text &lt;br /&gt;
 benefitsSummaryUrl|Type:URL&lt;br /&gt;
 bestRating|Type:Text &lt;br /&gt;
 billingAddress|Type:Text &lt;br /&gt;
 billingDuration|Type:Text &lt;br /&gt;
 billingIncrement|Type:Text &lt;br /&gt;
 billingPeriod|Type:Text &lt;br /&gt;
 billingStart|Type:Text &lt;br /&gt;
 bioChemInteraction|Type:Text &lt;br /&gt;
 bioChemSimilarity|Type:Text &lt;br /&gt;
 biologicalRole|Type:Text &lt;br /&gt;
 biomechnicalClass|Type:Text &lt;br /&gt;
 birthDate|Type:Date&lt;br /&gt;
 birthPlace|Type:Text &lt;br /&gt;
 bitrate|Type:Text &lt;br /&gt;
 blogPost|Type:Text &lt;br /&gt;
 blogPosts|Type:Text &lt;br /&gt;
 bloodSupply|Type:Text &lt;br /&gt;
 boardingGroup|Type:Text &lt;br /&gt;
 boardingPolicy|Type:Text &lt;br /&gt;
 bodyLocation|Type:Text &lt;br /&gt;
 bodyType|Type:Text &lt;br /&gt;
 bookEdition|Type:Text &lt;br /&gt;
 bookFormat|Type:Text &lt;br /&gt;
 bookingAgent|Type:Text &lt;br /&gt;
 bookingTime|Type:Text &lt;br /&gt;
 borrower|Type:Text &lt;br /&gt;
 box|Type:Text &lt;br /&gt;
 branch|Type:Text &lt;br /&gt;
 branchCode|Type:Text &lt;br /&gt;
 branchOf|Type:Text &lt;br /&gt;
 brand|Type:Text &lt;br /&gt;
 breadcrumb|Type:Text &lt;br /&gt;
 breastfeedingWarning|Type:Text &lt;br /&gt;
 broadcastAffiliateOf|Type:Text &lt;br /&gt;
 broadcastChannelId|Type:Text &lt;br /&gt;
 broadcastDisplayName|Type:Text &lt;br /&gt;
 broadcastFrequency|Type:Text &lt;br /&gt;
 broadcastFrequencyValue|Type:Text &lt;br /&gt;
 broadcastOfEvent|Type:Text &lt;br /&gt;
 broadcastServiceTier|Type:Text &lt;br /&gt;
 broadcastSignalModulation|Type:Text &lt;br /&gt;
 broadcastSubChannel|Type:Text &lt;br /&gt;
 broadcastTimezone|Type:Text &lt;br /&gt;
 broadcaster|Type:Text &lt;br /&gt;
 broker|Type:Text &lt;br /&gt;
 browserRequirements|Type:Text &lt;br /&gt;
 busName|Type:Text &lt;br /&gt;
 busNumber|Type:Text &lt;br /&gt;
 businessDays|Type:Text &lt;br /&gt;
 businessFunction|Type:Text &lt;br /&gt;
 buyer|Type:Text &lt;br /&gt;
 byArtist|Type:Text &lt;br /&gt;
 byDay|Type:Text &lt;br /&gt;
 byMonth|Type:Text &lt;br /&gt;
 byMonthDay|Type:Text &lt;br /&gt;
 byMonthWeek|Type:Text &lt;br /&gt;
 callSign|Type:Text &lt;br /&gt;
 calories|Type:Text &lt;br /&gt;
 candidate|Type:Text &lt;br /&gt;
 caption|Type:Text &lt;br /&gt;
 carbohydrateContent|Type:Text &lt;br /&gt;
 cargoVolume|Type:Text &lt;br /&gt;
 carrier|Type:Text &lt;br /&gt;
 carrierRequirements|Type:Text &lt;br /&gt;
 cashBack|Type:Text &lt;br /&gt;
 catalog|Type:Text &lt;br /&gt;
 catalogNumber|Type:Text &lt;br /&gt;
 category|Type:Text &lt;br /&gt;
 causeOf|Type:Text &lt;br /&gt;
 ccRecipient|Type:Text &lt;br /&gt;
 character|Type:Text &lt;br /&gt;
 characterAttribute|Type:Text &lt;br /&gt;
 characterName|Type:Text &lt;br /&gt;
 cheatCode|Type:Text &lt;br /&gt;
 checkinTime|Type:Text &lt;br /&gt;
 checkoutTime|Type:Text &lt;br /&gt;
 chemicalComposition|Type:Text &lt;br /&gt;
 chemicalRole|Type:Text &lt;br /&gt;
 childMaxAge|Type:Text &lt;br /&gt;
 childMinAge|Type:Text &lt;br /&gt;
 childTaxon|Type:Text &lt;br /&gt;
 children|Type:Text &lt;br /&gt;
 cholesterolContent|Type:Text &lt;br /&gt;
 circle|Type:Text &lt;br /&gt;
 citation|Type:Text &lt;br /&gt;
 claimInterpreter|Type:Text &lt;br /&gt;
 claimReviewed|Type:Text &lt;br /&gt;
 clincalPharmacology|Type:Text &lt;br /&gt;
 clinicalPharmacology|Type:Text &lt;br /&gt;
 clipNumber|Type:Text &lt;br /&gt;
 closes|Type:Text &lt;br /&gt;
 coach|Type:Text &lt;br /&gt;
 code|Type:Text &lt;br /&gt;
 codeRepository|Type:Text &lt;br /&gt;
 codeSampleType|Type:Text &lt;br /&gt;
 codeValue|Type:Text &lt;br /&gt;
 codingSystem|Type:Text &lt;br /&gt;
 colleague|Type:Text &lt;br /&gt;
 colleagues|Type:Text &lt;br /&gt;
 collection|Type:Text &lt;br /&gt;
 collectionSize|Type:Text &lt;br /&gt;
 color|Type:Text &lt;br /&gt;
 colorist|Type:Text &lt;br /&gt;
 comment|Type:Text &lt;br /&gt;
 commentCount|Type:Text &lt;br /&gt;
 commentText|Type:Text &lt;br /&gt;
 commentTime|Type:Text &lt;br /&gt;
 competencyRequired|Type:Text &lt;br /&gt;
 competitor|Type:Text &lt;br /&gt;
 composer|Type:Text &lt;br /&gt;
 comprisedOf|Type:Text &lt;br /&gt;
 conditionsOfAccess|Type:Text &lt;br /&gt;
 confirmationNumber|Type:Text &lt;br /&gt;
 connectedTo|Type:Text &lt;br /&gt;
 constrainingProperty|Type:Text &lt;br /&gt;
 contactOption|Type:Text &lt;br /&gt;
 contactPoint|Type:Text &lt;br /&gt;
 contactPoints|Type:Text &lt;br /&gt;
 contactType|Type:Text &lt;br /&gt;
 contactlessPayment|Type:Text &lt;br /&gt;
 containedIn|Type:Text &lt;br /&gt;
 containedInPlace|Type:Text &lt;br /&gt;
 containsPlace|Type:Text &lt;br /&gt;
 containsSeason|Type:Text &lt;br /&gt;
 contentLocation|Type:Text &lt;br /&gt;
 contentRating|Type:Text &lt;br /&gt;
 contentReferenceTime|Type:Text &lt;br /&gt;
 contentSize|Type:Text &lt;br /&gt;
 contentType|Type:Text &lt;br /&gt;
 contentUrl|Type:URL&lt;br /&gt;
 contraindication|Type:Text &lt;br /&gt;
 contributor|Type:Text &lt;br /&gt;
 cookTime|Type:Text &lt;br /&gt;
 cookingMethod|Type:Text &lt;br /&gt;
 copyrightHolder|Type:Text &lt;br /&gt;
 copyrightNotice|Type:Text &lt;br /&gt;
 copyrightYear|Type:Text &lt;br /&gt;
 correction|Type:Text &lt;br /&gt;
 correctionsPolicy|Type:Text &lt;br /&gt;
 costCategory|Type:Text &lt;br /&gt;
 costCurrency|Type:Text &lt;br /&gt;
 costOrigin|Type:Text &lt;br /&gt;
 costPerUnit|Type:Text &lt;br /&gt;
 countriesNotSupported|Type:Text &lt;br /&gt;
 countriesSupported|Type:Text &lt;br /&gt;
 countryOfAssembly|Type:Text &lt;br /&gt;
 countryOfLastProcessing|Type:Text &lt;br /&gt;
 countryOfOrigin|Type:Text &lt;br /&gt;
 course|Type:Text &lt;br /&gt;
 courseCode|Type:Text &lt;br /&gt;
 courseMode|Type:Text &lt;br /&gt;
 coursePrerequisites|Type:Text &lt;br /&gt;
 courseWorkload|Type:Text &lt;br /&gt;
 coverageEndTime|Type:Text &lt;br /&gt;
 coverageStartTime|Type:Text &lt;br /&gt;
 creativeWorkStatus|Type:Text &lt;br /&gt;
 creator|Type:Text &lt;br /&gt;
 credentialCategory|Type:Text &lt;br /&gt;
 creditText|Type:Text &lt;br /&gt;
 creditedTo|Type:Text &lt;br /&gt;
 cssSelector|Type:Text &lt;br /&gt;
 currenciesAccepted|Type:Text &lt;br /&gt;
 currency|Type:Text &lt;br /&gt;
 currentExchangeRate|Type:Text &lt;br /&gt;
 customer|Type:Text &lt;br /&gt;
 customerRemorseReturnFees|Type:Text &lt;br /&gt;
 customerRemorseReturnLabelSource|Type:Text &lt;br /&gt;
 customerRemorseReturnShippingFeesAmount|Type:Text &lt;br /&gt;
 cutoffTime|Type:Text &lt;br /&gt;
 cvdCollectionDate|Type:Date &lt;br /&gt;
 cvdFacilityCounty|Type:Text &lt;br /&gt;
 cvdFacilityId|Type:Text &lt;br /&gt;
 cvdNumBeds|Type:Text &lt;br /&gt;
 cvdNumBedsOcc|Type:Text &lt;br /&gt;
 cvdNumC19Died|Type:Text &lt;br /&gt;
 cvdNumC19HOPats|Type:Text &lt;br /&gt;
 cvdNumC19HospPats|Type:Text &lt;br /&gt;
 cvdNumC19MechVentPats|Type:Text &lt;br /&gt;
 cvdNumC19OFMechVentPats|Type:Text &lt;br /&gt;
 cvdNumC19OverflowPats|Type:Text &lt;br /&gt;
 cvdNumICUBeds|Type:Text &lt;br /&gt;
 cvdNumICUBedsOcc|Type:Text &lt;br /&gt;
 cvdNumTotBeds|Type:Text &lt;br /&gt;
 cvdNumVent|Type:Text &lt;br /&gt;
 cvdNumVentUse|Type:Text &lt;br /&gt;
 dataFeedElement|Type:Text &lt;br /&gt;
 dataset|Type:Text &lt;br /&gt;
 datasetTimeInterval|Type:Text &lt;br /&gt;
 dateCreated|Type:Date &lt;br /&gt;
 dateDeleted|Type:Date &lt;br /&gt;
 dateIssued|Type:Date &lt;br /&gt;
 dateModified|Type:Date &lt;br /&gt;
 datePosted|Type:Date &lt;br /&gt;
 datePublished|Type:Date &lt;br /&gt;
 dateRead|Type:Date &lt;br /&gt;
 dateReceived|Type:Date &lt;br /&gt;
 dateSent|Type:Date &lt;br /&gt;
 dateVehicleFirstRegistered|Type:Date &lt;br /&gt;
 dateline|Type:Text &lt;br /&gt;
 dayOfWeek|Type:Text &lt;br /&gt;
 deathDate|Type:Date&lt;br /&gt;
 deathPlace|Type:Text &lt;br /&gt;
 defaultValue|Type:Text &lt;br /&gt;
 deliveryAddress|Type:Text &lt;br /&gt;
 deliveryLeadTime|Type:Text &lt;br /&gt;
 deliveryMethod|Type:Text &lt;br /&gt;
 deliveryStatus|Type:Text &lt;br /&gt;
 deliveryTime|Type:Text &lt;br /&gt;
 department|Type:Text &lt;br /&gt;
 departureAirport|Type:Text &lt;br /&gt;
 departureBoatTerminal|Type:Text &lt;br /&gt;
 departureBusStop|Type:Text &lt;br /&gt;
 departureGate|Type:Text &lt;br /&gt;
 departurePlatform|Type:Text &lt;br /&gt;
 departureStation|Type:Text &lt;br /&gt;
 departureTerminal|Type:Text &lt;br /&gt;
 departureTime|Type:Text &lt;br /&gt;
 dependencies|Type:Text &lt;br /&gt;
 depth|Type:Text &lt;br /&gt;
 description|Type:Text &lt;br /&gt;
 device|Type:Text &lt;br /&gt;
 diagnosis|Type:Text &lt;br /&gt;
 diagram|Type:Text &lt;br /&gt;
 diet|Type:Text &lt;br /&gt;
 dietFeatures|Type:Text &lt;br /&gt;
 differentialDiagnosis|Type:Text &lt;br /&gt;
 directApply|Type:Text &lt;br /&gt;
 director|Type:Text &lt;br /&gt;
 directors|Type:Text &lt;br /&gt;
 disambiguatingDescription|Type:Text &lt;br /&gt;
 discount|Type:Text &lt;br /&gt;
 discountCode|Type:Text &lt;br /&gt;
 discountCurrency|Type:Text &lt;br /&gt;
 discusses|Type:Text &lt;br /&gt;
 discussionUrl|Type:URL&lt;br /&gt;
 diseasePreventionInfo|Type:Text &lt;br /&gt;
 diseaseSpreadStatistics|Type:Text &lt;br /&gt;
 dissolutionDate|Type:Date&lt;br /&gt;
 distance|Type:Text &lt;br /&gt;
 distinguishingSign|Type:Text &lt;br /&gt;
 distribution|Type:Text &lt;br /&gt;
 diversityPolicy|Type:Text &lt;br /&gt;
 diversityStaffingReport|Type:Text &lt;br /&gt;
 documentation|Type:Text &lt;br /&gt;
 doesNotShip|Type:Text &lt;br /&gt;
 domainIncludes|Type:Text &lt;br /&gt;
 domiciledMortgage|Type:Text &lt;br /&gt;
 doorTime|Type:Text &lt;br /&gt;
 dosageForm|Type:Text &lt;br /&gt;
 doseSchedule|Type:Text &lt;br /&gt;
 doseUnit|Type:Text &lt;br /&gt;
 doseValue|Type:Text &lt;br /&gt;
 downPayment|Type:Text &lt;br /&gt;
 downloadUrl|Type:URL&lt;br /&gt;
 downvoteCount|Type:Text &lt;br /&gt;
 drainsTo|Type:Text &lt;br /&gt;
 driveWheelConfiguration|Type:Text &lt;br /&gt;
 dropoffLocation|Type:Text &lt;br /&gt;
 dropoffTime|Type:Text &lt;br /&gt;
 drug|Type:Text &lt;br /&gt;
 drugClass|Type:Text &lt;br /&gt;
 drugUnit|Type:Text &lt;br /&gt;
 duns|Type:Text &lt;br /&gt;
 duplicateTherapy|Type:Text &lt;br /&gt;
 duration|Type:Text &lt;br /&gt;
 durationOfWarranty|Type:Text &lt;br /&gt;
 duringMedia|Type:Text &lt;br /&gt;
 earlyPrepaymentPenalty|Type:Text &lt;br /&gt;
 editEIDR|Type:Text &lt;br /&gt;
 editor|Type:Text &lt;br /&gt;
 eduQuestionType|Type:Text &lt;br /&gt;
 educationRequirements|Type:Text &lt;br /&gt;
 educationalAlignment|Type:Text &lt;br /&gt;
 educationalCredentialAwarded|Type:Text &lt;br /&gt;
 educationalFramework|Type:Text &lt;br /&gt;
 educationalLevel|Type:Text &lt;br /&gt;
 educationalProgramMode|Type:Text &lt;br /&gt;
 educationalRole|Type:Text &lt;br /&gt;
 educationalUse|Type:Text &lt;br /&gt;
 elevation|Type:Text &lt;br /&gt;
 eligibilityToWorkRequirement|Type:Text &lt;br /&gt;
 eligibleCustomerType|Type:Text &lt;br /&gt;
 eligibleDuration|Type:Text &lt;br /&gt;
 eligibleQuantity|Type:Text &lt;br /&gt;
 eligibleRegion|Type:Text &lt;br /&gt;
 eligibleTransactionVolume|Type:Text &lt;br /&gt;
 email|Type:Email&lt;br /&gt;
 embedUrl|Type:URL&lt;br /&gt;
 embeddedTextCaption|Type:Text &lt;br /&gt;
 emissionsCO2|Type:Text &lt;br /&gt;
 employee|Type:Text &lt;br /&gt;
 employees|Type:Text &lt;br /&gt;
 employerOverview|Type:Text &lt;br /&gt;
 employmentType|Type:Text &lt;br /&gt;
 employmentUnit|Type:Text &lt;br /&gt;
 encodesBioChemEntity|Type:Text &lt;br /&gt;
 encodesCreativeWork|Type:Text &lt;br /&gt;
 encoding|Type:Text &lt;br /&gt;
 encodingFormat|Type:Text &lt;br /&gt;
 encodingType|Type:Text &lt;br /&gt;
 encodings|Type:Text &lt;br /&gt;
 endDate|Type:Date&lt;br /&gt;
 endOffset|Type:Text &lt;br /&gt;
 endTime|Type:Text &lt;br /&gt;
 endorsee|Type:Text &lt;br /&gt;
 endorsers|Type:Text &lt;br /&gt;
 energyEfficiencyScaleMax|Type:Text &lt;br /&gt;
 energyEfficiencyScaleMin|Type:Text &lt;br /&gt;
 engineDisplacement|Type:Text &lt;br /&gt;
 enginePower|Type:Text &lt;br /&gt;
 engineType|Type:Text &lt;br /&gt;
 entertainmentBusiness|Type:Text &lt;br /&gt;
 epidemiology|Type:Text &lt;br /&gt;
 episode|Type:Text &lt;br /&gt;
 episodeNumber|Type:Text &lt;br /&gt;
 episodes|Type:Text &lt;br /&gt;
 equal|Type:Text &lt;br /&gt;
 error|Type:Text &lt;br /&gt;
 estimatedCost|Type:Text &lt;br /&gt;
 estimatedFlightDuration|Type:Text &lt;br /&gt;
 estimatedSalary|Type:Text &lt;br /&gt;
 estimatesRiskOf|Type:Text &lt;br /&gt;
 ethicsPolicy|Type:Text &lt;br /&gt;
 event|Type:Text &lt;br /&gt;
 eventAttendanceMode|Type:Text &lt;br /&gt;
 eventSchedule|Type:Text &lt;br /&gt;
 eventStatus|Type:Text &lt;br /&gt;
 events|Type:Text &lt;br /&gt;
 evidenceLevel|Type:Text &lt;br /&gt;
 evidenceOrigin|Type:Text &lt;br /&gt;
 exampleOfWork|Type:Text &lt;br /&gt;
 exceptDate|Type:Date&lt;br /&gt;
 exchangeRateSpread|Type:Text &lt;br /&gt;
 executableLibraryName|Type:Text &lt;br /&gt;
 exerciseCourse|Type:Text &lt;br /&gt;
 exercisePlan|Type:Text &lt;br /&gt;
 exerciseRelatedDiet|Type:Text &lt;br /&gt;
 exerciseType|Type:Text &lt;br /&gt;
 exifData|Type:Text &lt;br /&gt;
 expectedArrivalFrom|Type:Text &lt;br /&gt;
 expectedArrivalUntil|Type:Text &lt;br /&gt;
 expectedPrognosis|Type:Text &lt;br /&gt;
 expectsAcceptanceOf|Type:Text &lt;br /&gt;
 experienceInPlaceOfEducation|Type:Text &lt;br /&gt;
 experienceRequirements|Type:Text &lt;br /&gt;
 expertConsiderations|Type:Text &lt;br /&gt;
 expires|Type:Text &lt;br /&gt;
 expressedIn|Type:Text &lt;br /&gt;
 familyName|Type:Text &lt;br /&gt;
 fatContent|Type:Text &lt;br /&gt;
 faxNumber|Type:Text &lt;br /&gt;
 featureList|Type:Text &lt;br /&gt;
 feesAndCommissionsSpecification|Type:Text &lt;br /&gt;
 fiberContent|Type:Text &lt;br /&gt;
 fileFormat|Type:Text &lt;br /&gt;
 fileSize|Type:Text &lt;br /&gt;
 financialAidEligible|Type:Text &lt;br /&gt;
 firstAppearance|Type:Text &lt;br /&gt;
 firstPerformance|Type:Text &lt;br /&gt;
 flightDistance|Type:Text &lt;br /&gt;
 flightNumber|Type:Text &lt;br /&gt;
 floorLevel|Type:Text &lt;br /&gt;
 floorLimit|Type:Text &lt;br /&gt;
 floorSize|Type:Text &lt;br /&gt;
 followee|Type:Text &lt;br /&gt;
 follows|Type:Text &lt;br /&gt;
 followup|Type:Text &lt;br /&gt;
 foodEstablishment|Type:Text &lt;br /&gt;
 foodEvent|Type:Text &lt;br /&gt;
 foodWarning|Type:Text &lt;br /&gt;
 founder|Type:Text &lt;br /&gt;
 founders|Type:Text &lt;br /&gt;
 foundingDate|Type:Date&lt;br /&gt;
 foundingLocation|Type:Text &lt;br /&gt;
 free|Type:Text &lt;br /&gt;
 freeShippingThreshold|Type:Text &lt;br /&gt;
 frequency|Type:Text &lt;br /&gt;
 fromLocation|Type:Text &lt;br /&gt;
 fuelCapacity|Type:Text &lt;br /&gt;
 fuelConsumption|Type:Text &lt;br /&gt;
 fuelEfficiency|Type:Text &lt;br /&gt;
 fuelType|Type:Text &lt;br /&gt;
 functionalClass|Type:Text &lt;br /&gt;
 fundedItem|Type:Text &lt;br /&gt;
 funder|Type:Text &lt;br /&gt;
 funding|Type:Text &lt;br /&gt;
 game|Type:Text &lt;br /&gt;
 gameAvailabilityType|Type:Text &lt;br /&gt;
 gameEdition|Type:Text &lt;br /&gt;
 gameItem|Type:Text &lt;br /&gt;
 gameLocation|Type:Text &lt;br /&gt;
 gamePlatform|Type:Text &lt;br /&gt;
 gameServer|Type:Text &lt;br /&gt;
 gameTip|Type:Text &lt;br /&gt;
 gender|Type:Text &lt;br /&gt;
 genre|Type:Text &lt;br /&gt;
 geo|Type:Text &lt;br /&gt;
 geoContains|Type:Text &lt;br /&gt;
 geoCoveredBy|Type:Text &lt;br /&gt;
 geoCovers|Type:Text &lt;br /&gt;
 geoCrosses|Type:Text &lt;br /&gt;
 geoDisjoint|Type:Text &lt;br /&gt;
 geoEquals|Type:Text &lt;br /&gt;
 geoIntersects|Type:Text &lt;br /&gt;
 geoMidpoint|Type:Text &lt;br /&gt;
 geoOverlaps|Type:Text &lt;br /&gt;
 geoRadius|Type:Text &lt;br /&gt;
 geoTouches|Type:Text &lt;br /&gt;
 geoWithin|Type:Text &lt;br /&gt;
 geographicArea|Type:Text &lt;br /&gt;
 gettingTestedInfo|Type:Text &lt;br /&gt;
 givenName|Type:Text &lt;br /&gt;
 globalLocationNumber|Type:Text &lt;br /&gt;
 governmentBenefitsInfo|Type:Text &lt;br /&gt;
 gracePeriod|Type:Text &lt;br /&gt;
 grantee|Type:Text &lt;br /&gt;
 greater|Type:Text &lt;br /&gt;
 greaterOrEqual|Type:Text &lt;br /&gt;
 gtin|Type:Text &lt;br /&gt;
 gtin12|Type:Text &lt;br /&gt;
 gtin13|Type:Text &lt;br /&gt;
 gtin14|Type:Text &lt;br /&gt;
 gtin8|Type:Text &lt;br /&gt;
 guideline|Type:Text &lt;br /&gt;
 guidelineDate|Type:Date&lt;br /&gt;
 guidelineSubject|Type:Text &lt;br /&gt;
 handlingTime|Type:Text &lt;br /&gt;
 hasAdultConsideration|Type:Text &lt;br /&gt;
 hasBioChemEntityPart|Type:Text &lt;br /&gt;
 hasBioPolymerSequence|Type:Text &lt;br /&gt;
 hasBroadcastChannel|Type:Text &lt;br /&gt;
 hasCategoryCode|Type:Text &lt;br /&gt;
 hasCourse|Type:Text &lt;br /&gt;
 hasCourseInstance|Type:Text &lt;br /&gt;
 hasCredential|Type:Text &lt;br /&gt;
 hasDefinedTerm|Type:Text &lt;br /&gt;
 hasDeliveryMethod|Type:Text &lt;br /&gt;
 hasDigitalDocumentPermission|Type:Text &lt;br /&gt;
 hasDriveThroughService|Type:Text &lt;br /&gt;
 hasEnergyConsumptionDetails|Type:Text &lt;br /&gt;
 hasEnergyEfficiencyCategory|Type:Text &lt;br /&gt;
 hasHealthAspect|Type:Text &lt;br /&gt;
 hasMap|Type:Text &lt;br /&gt;
 hasMeasurement|Type:Text &lt;br /&gt;
 hasMenu|Type:Text &lt;br /&gt;
 hasMenuItem|Type:Text &lt;br /&gt;
 hasMenuSection|Type:Text &lt;br /&gt;
 hasMerchantReturnPolicy|Type:Text &lt;br /&gt;
 hasMolecularFunction|Type:Text &lt;br /&gt;
 hasOccupation|Type:Text &lt;br /&gt;
 hasOfferCatalog|Type:Text &lt;br /&gt;
 hasPOS|Type:Text &lt;br /&gt;
 hasPart|Type:Text &lt;br /&gt;
 hasRepresentation|Type:Text &lt;br /&gt;
 hasVariant|Type:Text &lt;br /&gt;
 headline|Type:Text &lt;br /&gt;
 healthCondition|Type:Text &lt;br /&gt;
 healthPlanCoinsuranceOption|Type:Text &lt;br /&gt;
 healthPlanCoinsuranceRate|Type:Text &lt;br /&gt;
 healthPlanCopay|Type:Text &lt;br /&gt;
 healthPlanCopayOption|Type:Text &lt;br /&gt;
 healthPlanCostSharing|Type:Text &lt;br /&gt;
 healthPlanDrugOption|Type:Text &lt;br /&gt;
 healthPlanDrugTier|Type:Text &lt;br /&gt;
 healthPlanId|Type:Text &lt;br /&gt;
 healthPlanMarketingUrl|Type:URL &lt;br /&gt;
 healthPlanNetworkId|Type:Text &lt;br /&gt;
 healthPlanNetworkTier|Type:Text &lt;br /&gt;
 healthPlanPharmacyCategory|Type:Text &lt;br /&gt;
 healthcareReportingData|Type:Text &lt;br /&gt;
 height|Type:Text &lt;br /&gt;
 highPrice|Type:Text &lt;br /&gt;
 hiringOrganization|Type:Text &lt;br /&gt;
 holdingArchive|Type:Text &lt;br /&gt;
 homeLocation|Type:Text &lt;br /&gt;
 homeTeam|Type:Text &lt;br /&gt;
 honorificPrefix|Type:Text &lt;br /&gt;
 honorificSuffix|Type:Text &lt;br /&gt;
 hospitalAffiliation|Type:Text &lt;br /&gt;
 hostingOrganization|Type:Text &lt;br /&gt;
 hoursAvailable|Type:Text &lt;br /&gt;
 howPerformed|Type:Text &lt;br /&gt;
 httpMethod|Type:Text &lt;br /&gt;
 iataCode|Type:Text &lt;br /&gt;
 icaoCode|Type:Text &lt;br /&gt;
 identifier|Type:Text &lt;br /&gt;
 identifyingExam|Type:Text &lt;br /&gt;
 identifyingTest|Type:Text &lt;br /&gt;
 illustrator|Type:Text &lt;br /&gt;
 image|Type:Text &lt;br /&gt;
 imagingTechnique|Type:Text &lt;br /&gt;
 inAlbum|Type:Text &lt;br /&gt;
 inBroadcastLineup|Type:Text &lt;br /&gt;
 inChI|Type:Text &lt;br /&gt;
 inChIKey|Type:Text &lt;br /&gt;
 inCodeSet|Type:Text &lt;br /&gt;
 inDefinedTermSet|Type:Text &lt;br /&gt;
 inLanguage|Type:Text &lt;br /&gt;
 inPlaylist|Type:Text &lt;br /&gt;
 inProductGroupWithID|Type:Text &lt;br /&gt;
 inStoreReturnsOffered|Type:Text &lt;br /&gt;
 inSupportOf|Type:Text &lt;br /&gt;
 incentiveCompensation|Type:Text &lt;br /&gt;
 incentives|Type:Text &lt;br /&gt;
 includedComposition|Type:Text &lt;br /&gt;
 includedDataCatalog|Type:Text &lt;br /&gt;
 includedInDataCatalog|Type:Text &lt;br /&gt;
 includedInHealthInsurancePlan|Type:Text &lt;br /&gt;
 includedRiskFactor|Type:Text &lt;br /&gt;
 includesAttraction|Type:Text &lt;br /&gt;
 includesHealthPlanFormulary|Type:Text &lt;br /&gt;
 includesHealthPlanNetwork|Type:Text &lt;br /&gt;
 includesObject|Type:Text &lt;br /&gt;
 increasesRiskOf|Type:Text &lt;br /&gt;
 industry|Type:Text &lt;br /&gt;
 ineligibleRegion|Type:Text &lt;br /&gt;
 infectiousAgent|Type:Text &lt;br /&gt;
 infectiousAgentClass|Type:Text &lt;br /&gt;
 ingredients|Type:Text &lt;br /&gt;
 inker|Type:Text &lt;br /&gt;
 insertion|Type:Text &lt;br /&gt;
 installUrl|Type:URL&lt;br /&gt;
 instructor|Type:Text &lt;br /&gt;
 instrument|Type:Text &lt;br /&gt;
 intensity|Type:Text &lt;br /&gt;
 interactingDrug|Type:Text &lt;br /&gt;
 interactionCount|Type:Text &lt;br /&gt;
 interactionService|Type:Text &lt;br /&gt;
 interactionStatistic|Type:Text &lt;br /&gt;
 interactionType|Type:Text &lt;br /&gt;
 interactivityType|Type:Text &lt;br /&gt;
 interestRate|Type:Text &lt;br /&gt;
 interpretedAsClaim|Type:Text &lt;br /&gt;
 inventoryLevel|Type:Text &lt;br /&gt;
 inverseOf|Type:Text &lt;br /&gt;
 isAcceptingNewPatients|Type:Text &lt;br /&gt;
 isAccessibleForFree|Type:Text &lt;br /&gt;
 isAccessoryOrSparePartFor|Type:Text &lt;br /&gt;
 isAvailableGenerically|Type:Text &lt;br /&gt;
 isBasedOn|Type:Text &lt;br /&gt;
 isBasedOnUrl|Type:URL&lt;br /&gt;
 isConsumableFor|Type:Text &lt;br /&gt;
 isEncodedByBioChemEntity|Type:Text &lt;br /&gt;
 isFamilyFriendly|Type:Text &lt;br /&gt;
 isGift|Type:Text &lt;br /&gt;
 isInvolvedInBiologicalProcess|Type:Text &lt;br /&gt;
 isLiveBroadcast|Type:Text &lt;br /&gt;
 isLocatedInSubcellularLocation|Type:Text &lt;br /&gt;
 isPartOf|Type:Text &lt;br /&gt;
 isPartOfBioChemEntity|Type:Text &lt;br /&gt;
 isPlanForApartment|Type:Text &lt;br /&gt;
 isProprietary|Type:Text &lt;br /&gt;
 isRelatedTo|Type:Text &lt;br /&gt;
 isResizable|Type:Text &lt;br /&gt;
 isSimilarTo|Type:Text &lt;br /&gt;
 isUnlabelledFallback|Type:Text &lt;br /&gt;
 isVariantOf|Type:Text &lt;br /&gt;
 isbn|Type:Text &lt;br /&gt;
 isicV4|Type:Text &lt;br /&gt;
 iso6523Code|Type:Text &lt;br /&gt;
 isrcCode|Type:Text &lt;br /&gt;
 issn|Type:Text &lt;br /&gt;
 issueNumber|Type:Text &lt;br /&gt;
 issuedBy|Type:Text &lt;br /&gt;
 issuedThrough|Type:Text &lt;br /&gt;
 iswcCode|Type:Text &lt;br /&gt;
 item|Type:Text &lt;br /&gt;
 itemCondition|Type:Text &lt;br /&gt;
 itemDefectReturnFees|Type:Text &lt;br /&gt;
 itemDefectReturnLabelSource|Type:Text &lt;br /&gt;
 itemDefectReturnShippingFeesAmount|Type:Text &lt;br /&gt;
 itemListElement|Type:Text &lt;br /&gt;
 itemListOrder|Type:Text &lt;br /&gt;
 itemLocation|Type:Text &lt;br /&gt;
 itemOffered|Type:Text &lt;br /&gt;
 itemReviewed|Type:Text &lt;br /&gt;
 itemShipped|Type:Text &lt;br /&gt;
 itinerary|Type:Text &lt;br /&gt;
 iupacName|Type:Text &lt;br /&gt;
 jobBenefits|Type:Text &lt;br /&gt;
 jobImmediateStart|Type:Text &lt;br /&gt;
 jobLocation|Type:Text &lt;br /&gt;
 jobLocationType|Type:Text &lt;br /&gt;
 jobStartDate|Type:Date &lt;br /&gt;
 jobTitle|Type:Text &lt;br /&gt;
 jurisdiction|Type:Text &lt;br /&gt;
 keywords|Type:Text &lt;br /&gt;
 knownVehicleDamages|Type:Text &lt;br /&gt;
 knows|Type:Text &lt;br /&gt;
 knowsAbout|Type:Text &lt;br /&gt;
 knowsLanguage|Type:Text &lt;br /&gt;
 labelDetails|Type:Text &lt;br /&gt;
 landlord|Type:Text &lt;br /&gt;
 language|Type:Text &lt;br /&gt;
 lastReviewed|Type:Text &lt;br /&gt;
 latitude|Type:Text &lt;br /&gt;
 layoutImage|Type:Text &lt;br /&gt;
 learningResourceType|Type:Text &lt;br /&gt;
 leaseLength|Type:Text &lt;br /&gt;
 legalName|Type:Text &lt;br /&gt;
 legalStatus|Type:Text &lt;br /&gt;
 legislationApplies|Type:Text &lt;br /&gt;
 legislationChanges|Type:Text &lt;br /&gt;
 legislationConsolidates|Type:Text &lt;br /&gt;
 legislationDate|Type:Date&lt;br /&gt;
 legislationDateVersion|Type:Text &lt;br /&gt;
 legislationIdentifier|Type:Text &lt;br /&gt;
 legislationJurisdiction|Type:Text &lt;br /&gt;
 legislationLegalForce|Type:Text &lt;br /&gt;
 legislationLegalValue|Type:Text &lt;br /&gt;
 legislationPassedBy|Type:Text &lt;br /&gt;
 legislationResponsible|Type:Text &lt;br /&gt;
 legislationTransposes|Type:Text &lt;br /&gt;
 legislationType|Type:Text &lt;br /&gt;
 leiCode|Type:Text &lt;br /&gt;
 lender|Type:Text &lt;br /&gt;
 lesser|Type:Text &lt;br /&gt;
 lesserOrEqual|Type:Text &lt;br /&gt;
 letterer|Type:Text &lt;br /&gt;
 license|Type:Text &lt;br /&gt;
 line|Type:Text &lt;br /&gt;
 linkRelationship|Type:Text &lt;br /&gt;
 liveBlogUpdate|Type:Text &lt;br /&gt;
 loanMortgageMandateAmount|Type:Text &lt;br /&gt;
 loanPaymentAmount|Type:Text &lt;br /&gt;
 loanPaymentFrequency|Type:Text &lt;br /&gt;
 loanRepaymentForm|Type:Text &lt;br /&gt;
 loanTerm|Type:Text &lt;br /&gt;
 loanType|Type:Text &lt;br /&gt;
 location|Type:Text &lt;br /&gt;
 locationCreated|Type:Text &lt;br /&gt;
 lodgingUnitDescription|Type:Text &lt;br /&gt;
 lodgingUnitType|Type:Text &lt;br /&gt;
 logo|Type:Text &lt;br /&gt;
 longitude|Type:Text &lt;br /&gt;
 loser|Type:Text &lt;br /&gt;
 lowPrice|Type:Text &lt;br /&gt;
 lyricist|Type:Text &lt;br /&gt;
 lyrics|Type:Text &lt;br /&gt;
 mainContentOfPage|Type:Text &lt;br /&gt;
 mainEntity|Type:Text &lt;br /&gt;
 mainEntityOfPage|Type:Text &lt;br /&gt;
 maintainer|Type:Text &lt;br /&gt;
 makesOffer|Type:Text &lt;br /&gt;
 manufacturer|Type:Text &lt;br /&gt;
 map|Type:Text &lt;br /&gt;
 mapType|Type:Text &lt;br /&gt;
 maps|Type:Text &lt;br /&gt;
 marginOfError|Type:Text &lt;br /&gt;
 masthead|Type:Text &lt;br /&gt;
 material|Type:Text &lt;br /&gt;
 materialExtent|Type:Text &lt;br /&gt;
 mathExpression|Type:Text &lt;br /&gt;
 maxPrice|Type:Text &lt;br /&gt;
 maxValue|Type:Text &lt;br /&gt;
 maximumAttendeeCapacity|Type:Text &lt;br /&gt;
 maximumEnrollment|Type:Text &lt;br /&gt;
 maximumIntake|Type:Text &lt;br /&gt;
 maximumPhysicalAttendeeCapacity|Type:Text &lt;br /&gt;
 maximumVirtualAttendeeCapacity|Type:Text &lt;br /&gt;
 mealService|Type:Text &lt;br /&gt;
 measuredProperty|Type:Text &lt;br /&gt;
 measuredValue|Type:Text &lt;br /&gt;
 measurementTechnique|Type:Text &lt;br /&gt;
 mechanismOfAction|Type:Text &lt;br /&gt;
 mediaAuthenticityCategory|Type:Text &lt;br /&gt;
 mediaItemAppearance|Type:Text &lt;br /&gt;
 median|Type:Text &lt;br /&gt;
 medicalAudience|Type:Text &lt;br /&gt;
 medicalSpecialty|Type:Text &lt;br /&gt;
 medicineSystem|Type:Text &lt;br /&gt;
 meetsEmissionStandard|Type:Text &lt;br /&gt;
 member|Type:Text &lt;br /&gt;
 memberOf|Type:Text &lt;br /&gt;
 members|Type:Text &lt;br /&gt;
 membershipNumber|Type:Text &lt;br /&gt;
 membershipPointsEarned|Type:Text &lt;br /&gt;
 memoryRequirements|Type:Text &lt;br /&gt;
 mentions|Type:Text &lt;br /&gt;
 menu|Type:Text &lt;br /&gt;
 menuAddOn|Type:Text &lt;br /&gt;
 merchant|Type:Text &lt;br /&gt;
 merchantReturnDays|Type:Text &lt;br /&gt;
 merchantReturnLink|Type:Text &lt;br /&gt;
 messageAttachment|Type:Text &lt;br /&gt;
 mileageFromOdometer|Type:Text &lt;br /&gt;
 minPrice|Type:Text &lt;br /&gt;
 minValue|Type:Text &lt;br /&gt;
 minimumPaymentDue|Type:Text &lt;br /&gt;
 missionCoveragePrioritiesPolicy|Type:Text &lt;br /&gt;
 model|Type:Text &lt;br /&gt;
 modelDate|Type:Date&lt;br /&gt;
 modifiedTime|Type:Text &lt;br /&gt;
 molecularFormula|Type:Text &lt;br /&gt;
 molecularWeight|Type:Text &lt;br /&gt;
 monoisotopicMolecularWeight|Type:Text &lt;br /&gt;
 monthlyMinimumRepaymentAmount|Type:Text &lt;br /&gt;
 monthsOfExperience|Type:Text &lt;br /&gt;
 mpn|Type:Text &lt;br /&gt;
 multipleValues|Type:Text &lt;br /&gt;
 muscleAction|Type:Text &lt;br /&gt;
 musicArrangement|Type:Text &lt;br /&gt;
 musicBy|Type:Text &lt;br /&gt;
 musicCompositionForm|Type:Text &lt;br /&gt;
 musicGroupMember|Type:Text &lt;br /&gt;
 musicReleaseFormat|Type:Text &lt;br /&gt;
 musicalKey|Type:Text &lt;br /&gt;
 naics|Type:Text &lt;br /&gt;
 name|Type:Text &lt;br /&gt;
 namedPosition|Type:Text &lt;br /&gt;
 nationality|Type:Text &lt;br /&gt;
 naturalProgression|Type:Text &lt;br /&gt;
 negativeNotes|Type:Text &lt;br /&gt;
 nerve|Type:Text &lt;br /&gt;
 nerveMotor|Type:Text &lt;br /&gt;
 netWorth|Type:Text &lt;br /&gt;
 newsUpdatesAndGuidelines|Type:Text &lt;br /&gt;
 nextItem|Type:Text &lt;br /&gt;
 noBylinesPolicy|Type:Text &lt;br /&gt;
 nonEqual|Type:Text &lt;br /&gt;
 nonProprietaryName|Type:Text &lt;br /&gt;
 nonprofitStatus|Type:Text &lt;br /&gt;
 normalRange|Type:Text &lt;br /&gt;
 nsn|Type:Text &lt;br /&gt;
 numAdults|Type:Text &lt;br /&gt;
 numChildren|Type:Text &lt;br /&gt;
 numConstraints|Type:Text &lt;br /&gt;
 numTracks|Type:Text &lt;br /&gt;
 numberOfAccommodationUnits|Type:Text &lt;br /&gt;
 numberOfAirbags|Type:Text &lt;br /&gt;
 numberOfAvailableAccommodationUnits|Type:Text &lt;br /&gt;
 numberOfAxles|Type:Text &lt;br /&gt;
 numberOfBathroomsTotal|Type:Text &lt;br /&gt;
 numberOfBedrooms|Type:Text &lt;br /&gt;
 numberOfBeds|Type:Text &lt;br /&gt;
 numberOfCredits|Type:Text &lt;br /&gt;
 numberOfDoors|Type:Text &lt;br /&gt;
 numberOfEmployees|Type:Text &lt;br /&gt;
 numberOfEpisodes|Type:Text &lt;br /&gt;
 numberOfForwardGears|Type:Text &lt;br /&gt;
 numberOfFullBathrooms|Type:Text &lt;br /&gt;
 numberOfItems|Type:Text &lt;br /&gt;
 numberOfLoanPayments|Type:Text &lt;br /&gt;
 numberOfPages|Type:Text &lt;br /&gt;
 numberOfPartialBathrooms|Type:Text &lt;br /&gt;
 numberOfPlayers|Type:Text &lt;br /&gt;
 numberOfPreviousOwners|Type:Text &lt;br /&gt;
 numberOfRooms|Type:Text &lt;br /&gt;
 numberOfSeasons|Type:Text &lt;br /&gt;
 numberedPosition|Type:Text &lt;br /&gt;
 nutrition|Type:Text &lt;br /&gt;
 object|Type:Text &lt;br /&gt;
 observationDate|Type:Date &lt;br /&gt;
 observedNode|Type:Text &lt;br /&gt;
 occupancy|Type:Text &lt;br /&gt;
 occupationLocation|Type:Text &lt;br /&gt;
 occupationalCategory|Type:Text &lt;br /&gt;
 occupationalCredentialAwarded|Type:Text &lt;br /&gt;
 offerCount|Type:Text &lt;br /&gt;
 offeredBy|Type:Text &lt;br /&gt;
 offers|Type:Text &lt;br /&gt;
 offersPrescriptionByMail|Type:Text &lt;br /&gt;
 openingHours|Type:Text &lt;br /&gt;
 openingHoursSpecification|Type:Text &lt;br /&gt;
 opens|Type:Text &lt;br /&gt;
 operatingSystem|Type:Text &lt;br /&gt;
 opponent|Type:Text &lt;br /&gt;
 option|Type:Text &lt;br /&gt;
 orderDate|Type:Date &lt;br /&gt;
 orderDelivery|Type:Text &lt;br /&gt;
 orderItemNumber|Type:Text &lt;br /&gt;
 orderItemStatus|Type:Text &lt;br /&gt;
 orderNumber|Type:Text &lt;br /&gt;
 orderQuantity|Type:Text &lt;br /&gt;
 orderStatus|Type:Text &lt;br /&gt;
 orderedItem|Type:Text &lt;br /&gt;
 organizer|Type:Text &lt;br /&gt;
 originAddress|Type:Text &lt;br /&gt;
 originalMediaContextDescription|Type:Text &lt;br /&gt;
 originalMediaLink|Type:Text &lt;br /&gt;
 originatesFrom|Type:Text &lt;br /&gt;
 overdosage|Type:Text &lt;br /&gt;
 ownedFrom|Type:Text &lt;br /&gt;
 ownedThrough|Type:Text &lt;br /&gt;
 ownershipFundingInfo|Type:Text &lt;br /&gt;
 owns|Type:Text &lt;br /&gt;
 pageEnd|Type:Text &lt;br /&gt;
 pageStart|Type:Text &lt;br /&gt;
 pagination|Type:Text &lt;br /&gt;
 parent|Type:Text &lt;br /&gt;
 parentItem|Type:Text &lt;br /&gt;
 parentOrganization|Type:Text &lt;br /&gt;
 parentService|Type:Text &lt;br /&gt;
 parentTaxon|Type:Text &lt;br /&gt;
 parents|Type:Text &lt;br /&gt;
 partOfEpisode|Type:Text &lt;br /&gt;
 partOfInvoice|Type:Text &lt;br /&gt;
 partOfOrder|Type:Text &lt;br /&gt;
 partOfSeason|Type:Text &lt;br /&gt;
 partOfSeries|Type:Text &lt;br /&gt;
 partOfSystem|Type:Text &lt;br /&gt;
 partOfTVSeries|Type:Text &lt;br /&gt;
 partOfTrip|Type:Text &lt;br /&gt;
 participant|Type:Text &lt;br /&gt;
 partySize|Type:Text &lt;br /&gt;
 passengerPriorityStatus|Type:Text &lt;br /&gt;
 passengerSequenceNumber|Type:Text &lt;br /&gt;
 pathophysiology|Type:Text &lt;br /&gt;
 pattern|Type:Text &lt;br /&gt;
 payload|Type:Text &lt;br /&gt;
 paymentAccepted|Type:Text &lt;br /&gt;
 paymentDue|Type:Text &lt;br /&gt;
 paymentDueDate|Type:Date &lt;br /&gt;
 paymentMethod|Type:Text &lt;br /&gt;
 paymentMethodId|Type:Text &lt;br /&gt;
 paymentStatus|Type:Text &lt;br /&gt;
 paymentUrl|Type:URL&lt;br /&gt;
 penciler|Type:Text &lt;br /&gt;
 percentile10|Type:Text &lt;br /&gt;
 percentile25|Type:Text &lt;br /&gt;
 percentile75|Type:Text &lt;br /&gt;
 percentile90|Type:Text &lt;br /&gt;
 performTime|Type:Text &lt;br /&gt;
 performer|Type:Text &lt;br /&gt;
 performerIn|Type:Text &lt;br /&gt;
 performers|Type:Text &lt;br /&gt;
 permissionType|Type:Text &lt;br /&gt;
 permissions|Type:Text &lt;br /&gt;
 permitAudience|Type:Text &lt;br /&gt;
 permittedUsage|Type:Text &lt;br /&gt;
 petsAllowed|Type:Text &lt;br /&gt;
 phoneticText|Type:Text &lt;br /&gt;
 photo|Type:Text &lt;br /&gt;
 photos|Type:Text &lt;br /&gt;
 physicalRequirement|Type:Text &lt;br /&gt;
 physiologicalBenefits|Type:Text &lt;br /&gt;
 pickupLocation|Type:Text &lt;br /&gt;
 pickupTime|Type:Text &lt;br /&gt;
 playMode|Type:Text &lt;br /&gt;
 playerType|Type:Text &lt;br /&gt;
 playersOnline|Type:Text &lt;br /&gt;
 polygon|Type:Text &lt;br /&gt;
 populationType|Type:Text &lt;br /&gt;
 position|Type:Text &lt;br /&gt;
 positiveNotes|Type:Text &lt;br /&gt;
 possibleComplication|Type:Text &lt;br /&gt;
 possibleTreatment|Type:Text &lt;br /&gt;
 postOfficeBoxNumber|Type:Text &lt;br /&gt;
 postOp|Type:Text &lt;br /&gt;
 postalCode|Type:Text &lt;br /&gt;
 postalCodeBegin|Type:Text &lt;br /&gt;
 postalCodeEnd|Type:Text &lt;br /&gt;
 postalCodePrefix|Type:Text &lt;br /&gt;
 postalCodeRange|Type:Text &lt;br /&gt;
 potentialAction|Type:Text &lt;br /&gt;
 potentialUse|Type:Text &lt;br /&gt;
 preOp|Type:Text &lt;br /&gt;
 predecessorOf|Type:Text &lt;br /&gt;
 pregnancyCategory|Type:Text &lt;br /&gt;
 pregnancyWarning|Type:Text &lt;br /&gt;
 prepTime|Type:Text &lt;br /&gt;
 preparation|Type:Text &lt;br /&gt;
 prescribingInfo|Type:Text &lt;br /&gt;
 prescriptionStatus|Type:Text &lt;br /&gt;
 previousItem|Type:Text &lt;br /&gt;
 previousStartDate|Type:Date&lt;br /&gt;
 price|Type:Text &lt;br /&gt;
 priceComponent|Type:Text &lt;br /&gt;
 priceComponentType|Type:Text &lt;br /&gt;
 priceCurrency|Type:Text &lt;br /&gt;
 priceRange|Type:Text &lt;br /&gt;
 priceSpecification|Type:Text &lt;br /&gt;
 priceType|Type:Text &lt;br /&gt;
 priceValidUntil|Type:Text &lt;br /&gt;
 primaryImageOfPage|Type:Text &lt;br /&gt;
 primaryPrevention|Type:Text &lt;br /&gt;
 printColumn|Type:Text &lt;br /&gt;
 printEdition|Type:Text &lt;br /&gt;
 printPage|Type:Text &lt;br /&gt;
 printSection|Type:Text &lt;br /&gt;
 procedure|Type:Text &lt;br /&gt;
 procedureType|Type:Text &lt;br /&gt;
 processingTime|Type:Text &lt;br /&gt;
 processorRequirements|Type:Text &lt;br /&gt;
 producer|Type:Text &lt;br /&gt;
 produces|Type:Text &lt;br /&gt;
 productGroupID|Type:Text &lt;br /&gt;
 productID|Type:Text &lt;br /&gt;
 productSupported|Type:Text &lt;br /&gt;
 productionCompany|Type:Text &lt;br /&gt;
 productionDate|Type:Date&lt;br /&gt;
 proficiencyLevel|Type:Text &lt;br /&gt;
 programMembershipUsed|Type:Text &lt;br /&gt;
 programName|Type:Text &lt;br /&gt;
 programPrerequisites|Type:Text &lt;br /&gt;
 programType|Type:Text &lt;br /&gt;
 programmingLanguage|Type:Text &lt;br /&gt;
 programmingModel|Type:Text &lt;br /&gt;
 propertyID|Type:Text &lt;br /&gt;
 proprietaryName|Type:Text &lt;br /&gt;
 proteinContent|Type:Text &lt;br /&gt;
 provider|Type:Text &lt;br /&gt;
 providerMobility|Type:Text &lt;br /&gt;
 providesBroadcastService|Type:Text &lt;br /&gt;
 providesService|Type:Text &lt;br /&gt;
 publicAccess|Type:Text &lt;br /&gt;
 publicTransportClosuresInfo|Type:Text &lt;br /&gt;
 publication|Type:Text &lt;br /&gt;
 publicationType|Type:Text &lt;br /&gt;
 publishedBy|Type:Text &lt;br /&gt;
 publishedOn|Type:Text &lt;br /&gt;
 publisher|Type:Text &lt;br /&gt;
 publisherImprint|Type:Text &lt;br /&gt;
 publishingPrinciples|Type:Text &lt;br /&gt;
 purchaseDate|Type:Date &lt;br /&gt;
 qualifications|Type:Text &lt;br /&gt;
 quarantineGuidelines|Type:Text &lt;br /&gt;
 query|Type:Text &lt;br /&gt;
 quest|Type:Text &lt;br /&gt;
 question|Type:Text &lt;br /&gt;
 rangeIncludes|Type:Text &lt;br /&gt;
 ratingCount|Type:Text &lt;br /&gt;
 ratingExplanation|Type:Text &lt;br /&gt;
 ratingValue|Type:Text &lt;br /&gt;
 readBy|Type:Text &lt;br /&gt;
 readonlyValue|Type:Text &lt;br /&gt;
 realEstateAgent|Type:Text &lt;br /&gt;
 recipe|Type:Text &lt;br /&gt;
 recipeCategory|Type:Text &lt;br /&gt;
 recipeCuisine|Type:Text &lt;br /&gt;
 recipeIngredient|Type:Text &lt;br /&gt;
 recipeInstructions|Type:Text &lt;br /&gt;
 recipeYield|Type:Text &lt;br /&gt;
 recipient|Type:Text &lt;br /&gt;
 recognizedBy|Type:Text &lt;br /&gt;
 recognizingAuthority|Type:Text &lt;br /&gt;
 recommendationStrength|Type:Text &lt;br /&gt;
 recommendedIntake|Type:Text &lt;br /&gt;
 recordLabel|Type:Text &lt;br /&gt;
 recordedAs|Type:Text &lt;br /&gt;
 recordedAt|Type:Text &lt;br /&gt;
 recordedIn|Type:Text &lt;br /&gt;
 recordingOf|Type:Text &lt;br /&gt;
 recourseLoan|Type:Text &lt;br /&gt;
 referenceQuantity|Type:Text &lt;br /&gt;
 referencesOrder|Type:Text &lt;br /&gt;
 refundType|Type:Text &lt;br /&gt;
 regionDrained|Type:Text &lt;br /&gt;
 regionsAllowed|Type:Text &lt;br /&gt;
 relatedAnatomy|Type:Text &lt;br /&gt;
 relatedCondition|Type:Text &lt;br /&gt;
 relatedDrug|Type:Text &lt;br /&gt;
 relatedLink|Type:Text &lt;br /&gt;
 relatedStructure|Type:Text &lt;br /&gt;
 relatedTherapy|Type:Text &lt;br /&gt;
 relatedTo|Type:Text &lt;br /&gt;
 releaseDate|Type:Date&lt;br /&gt;
 releaseNotes|Type:Text &lt;br /&gt;
 releaseOf|Type:Text &lt;br /&gt;
 releasedEvent|Type:Text &lt;br /&gt;
 relevantOccupation|Type:Text &lt;br /&gt;
 relevantSpecialty|Type:Text &lt;br /&gt;
 remainingAttendeeCapacity|Type:Text &lt;br /&gt;
 renegotiableLoan|Type:Text &lt;br /&gt;
 repeatCount|Type:Text &lt;br /&gt;
 repeatFrequency|Type:Text &lt;br /&gt;
 repetitions|Type:Text &lt;br /&gt;
 replacee|Type:Text &lt;br /&gt;
 replacer|Type:Text &lt;br /&gt;
 replyToUrl|Type:URL&lt;br /&gt;
 reportNumber|Type:Text &lt;br /&gt;
 representativeOfPage|Type:Text &lt;br /&gt;
 requiredCollateral|Type:Text &lt;br /&gt;
 requiredGender|Type:Text &lt;br /&gt;
 requiredMaxAge|Type:Text &lt;br /&gt;
 requiredMinAge|Type:Text &lt;br /&gt;
 requiredQuantity|Type:Text &lt;br /&gt;
 requirements|Type:Text &lt;br /&gt;
 requiresSubscription|Type:Text &lt;br /&gt;
 reservationFor|Type:Text &lt;br /&gt;
 reservationId|Type:Text &lt;br /&gt;
 reservationStatus|Type:Text &lt;br /&gt;
 reservedTicket|Type:Text &lt;br /&gt;
 responsibilities|Type:Text &lt;br /&gt;
 restPeriods|Type:Text &lt;br /&gt;
 restockingFee|Type:Text &lt;br /&gt;
 result|Type:Text &lt;br /&gt;
 resultComment|Type:Text &lt;br /&gt;
 resultReview|Type:Text &lt;br /&gt;
 returnFees|Type:Text &lt;br /&gt;
 returnLabelSource|Type:Text &lt;br /&gt;
 returnMethod|Type:Text &lt;br /&gt;
 returnPolicyCategory|Type:Text &lt;br /&gt;
 returnPolicyCountry|Type:Text &lt;br /&gt;
 returnPolicySeasonalOverride|Type:Text &lt;br /&gt;
 returnShippingFeesAmount|Type:Text &lt;br /&gt;
 review|Type:Text &lt;br /&gt;
 reviewAspect|Type:Text &lt;br /&gt;
 reviewBody|Type:Text &lt;br /&gt;
 reviewCount|Type:Text &lt;br /&gt;
 reviewRating|Type:Text &lt;br /&gt;
 reviewedBy|Type:Text &lt;br /&gt;
 reviews|Type:Text &lt;br /&gt;
 riskFactor|Type:Text &lt;br /&gt;
 risks|Type:Text &lt;br /&gt;
 roleName|Type:Text &lt;br /&gt;
 roofLoad|Type:Text &lt;br /&gt;
 rsvpResponse|Type:Text &lt;br /&gt;
 runsTo|Type:Text &lt;br /&gt;
 runtime|Type:Text &lt;br /&gt;
 runtimePlatform|Type:Text &lt;br /&gt;
 rxcui|Type:Text &lt;br /&gt;
 safetyConsideration|Type:Text &lt;br /&gt;
 salaryCurrency|Type:Text &lt;br /&gt;
 salaryUponCompletion|Type:Text &lt;br /&gt;
 sameAs|Type:Text &lt;br /&gt;
 sampleType|Type:Text &lt;br /&gt;
 saturatedFatContent|Type:Text &lt;br /&gt;
 scheduleTimezone|Type:Text &lt;br /&gt;
 scheduledPaymentDate|Type:Date &lt;br /&gt;
 scheduledTime|Type:Text &lt;br /&gt;
 schemaVersion|Type:Text &lt;br /&gt;
 schoolClosuresInfo|Type:Text &lt;br /&gt;
 screenCount|Type:Text &lt;br /&gt;
 screenshot|Type:Text &lt;br /&gt;
 sdDatePublished|Type:Date&lt;br /&gt;
 sdLicense|Type:Text &lt;br /&gt;
 sdPublisher|Type:Text &lt;br /&gt;
 season|Type:Text &lt;br /&gt;
 seasonNumber|Type:Text &lt;br /&gt;
 seasons|Type:Text &lt;br /&gt;
 seatNumber|Type:Text &lt;br /&gt;
 seatRow|Type:Text &lt;br /&gt;
 seatSection|Type:Text &lt;br /&gt;
 seatingCapacity|Type:Text &lt;br /&gt;
 seatingType|Type:Text &lt;br /&gt;
 secondaryPrevention|Type:Text &lt;br /&gt;
 securityClearanceRequirement|Type:Text &lt;br /&gt;
 securityScreening|Type:Text &lt;br /&gt;
 seeks|Type:Text &lt;br /&gt;
 seller|Type:Text &lt;br /&gt;
 sender|Type:Text &lt;br /&gt;
 sensoryRequirement|Type:Text &lt;br /&gt;
 sensoryUnit|Type:Text &lt;br /&gt;
 serialNumber|Type:Text &lt;br /&gt;
 seriousAdverseOutcome|Type:Text &lt;br /&gt;
 serverStatus|Type:Text &lt;br /&gt;
 servesCuisine|Type:Text &lt;br /&gt;
 serviceArea|Type:Text &lt;br /&gt;
 serviceAudience|Type:Text &lt;br /&gt;
 serviceLocation|Type:Text &lt;br /&gt;
 serviceOperator|Type:Text &lt;br /&gt;
 serviceOutput|Type:Text &lt;br /&gt;
 servicePhone|Type:Text &lt;br /&gt;
 servicePostalAddress|Type:Text &lt;br /&gt;
 serviceSmsNumber|Type:Text &lt;br /&gt;
 serviceType|Type:Text &lt;br /&gt;
 serviceUrl|Type:URL&lt;br /&gt;
 servingSize|Type:Text &lt;br /&gt;
 sha256|Type:Text &lt;br /&gt;
 sharedContent|Type:Text &lt;br /&gt;
 shippingDestination|Type:Text &lt;br /&gt;
 shippingDetails|Type:Text &lt;br /&gt;
 shippingLabel|Type:Text &lt;br /&gt;
 shippingRate|Type:Text &lt;br /&gt;
 shippingSettingsLink|Type:Text &lt;br /&gt;
 sibling|Type:Text &lt;br /&gt;
 siblings|Type:Text &lt;br /&gt;
 signDetected|Type:Text &lt;br /&gt;
 signOrSymptom|Type:Text &lt;br /&gt;
 significance|Type:Text &lt;br /&gt;
 significantLink|Type:Text &lt;br /&gt;
 significantLinks|Type:Text &lt;br /&gt;
 size|Type:Text &lt;br /&gt;
 sizeGroup|Type:Text &lt;br /&gt;
 sizeSystem|Type:Text &lt;br /&gt;
 skills|Type:Text &lt;br /&gt;
 sku|Type:Text &lt;br /&gt;
 slogan|Type:Text &lt;br /&gt;
 smiles|Type:Text &lt;br /&gt;
 smokingAllowed|Type:Text &lt;br /&gt;
 sodiumContent|Type:Text &lt;br /&gt;
 softwareAddOn|Type:Text &lt;br /&gt;
 softwareHelp|Type:Text &lt;br /&gt;
 softwareRequirements|Type:Text &lt;br /&gt;
 softwareVersion|Type:Text &lt;br /&gt;
 sourceOrganization|Type:Text &lt;br /&gt;
 sourcedFrom|Type:Text &lt;br /&gt;
 spatial|Type:Text &lt;br /&gt;
 spatialCoverage|Type:Text &lt;br /&gt;
 speakable|Type:Text &lt;br /&gt;
 specialCommitments|Type:Text &lt;br /&gt;
 specialOpeningHoursSpecification|Type:Text &lt;br /&gt;
 specialty|Type:Text &lt;br /&gt;
 speechToTextMarkup|Type:Text &lt;br /&gt;
 speed|Type:Text &lt;br /&gt;
 spokenByCharacter|Type:Text &lt;br /&gt;
 sponsor|Type:Text &lt;br /&gt;
 sport|Type:Text &lt;br /&gt;
 sportsActivityLocation|Type:Text &lt;br /&gt;
 sportsEvent|Type:Text &lt;br /&gt;
 sportsTeam|Type:Text &lt;br /&gt;
 spouse|Type:Text &lt;br /&gt;
 stage|Type:Text &lt;br /&gt;
 stageAsNumber|Type:Text &lt;br /&gt;
 starRating|Type:Text &lt;br /&gt;
 startDate|Type:Date &lt;br /&gt;
 startOffset|Type:Text &lt;br /&gt;
 startTime|Type:Text &lt;br /&gt;
 status|Type:Text &lt;br /&gt;
 steeringPosition|Type:Text &lt;br /&gt;
 step|Type:Text &lt;br /&gt;
 stepValue|Type:Text &lt;br /&gt;
 steps|Type:Text &lt;br /&gt;
 storageRequirements|Type:Text &lt;br /&gt;
 streetAddress|Type:Text &lt;br /&gt;
 strengthUnit|Type:Text &lt;br /&gt;
 strengthValue|Type:Text &lt;br /&gt;
 structuralClass|Type:Text &lt;br /&gt;
 study|Type:Text &lt;br /&gt;
 studyDesign|Type:Text &lt;br /&gt;
 studyLocation|Type:Text &lt;br /&gt;
 studySubject|Type:Text &lt;br /&gt;
 subEvent|Type:Text &lt;br /&gt;
 subEvents|Type:Text &lt;br /&gt;
 subOrganization|Type:Text &lt;br /&gt;
 subReservation|Type:Text &lt;br /&gt;
 subStageSuffix|Type:Text &lt;br /&gt;
 subStructure|Type:Text &lt;br /&gt;
 subTest|Type:Text &lt;br /&gt;
 subTrip|Type:Text &lt;br /&gt;
 subjectOf|Type:Text &lt;br /&gt;
 subtitleLanguage|Type:Text &lt;br /&gt;
 successorOf|Type:Text &lt;br /&gt;
 sugarContent|Type:Text &lt;br /&gt;
 suggestedAge|Type:Text &lt;br /&gt;
 suggestedAnswer|Type:Text &lt;br /&gt;
 suggestedGender|Type:Text &lt;br /&gt;
 suggestedMaxAge|Type:Text &lt;br /&gt;
 suggestedMeasurement|Type:Text &lt;br /&gt;
 suggestedMinAge|Type:Text &lt;br /&gt;
 suitableForDiet|Type:Text &lt;br /&gt;
 superEvent|Type:Text &lt;br /&gt;
 supersededBy|Type:Text &lt;br /&gt;
 supply|Type:Text &lt;br /&gt;
 supplyTo|Type:Text &lt;br /&gt;
 supportingData|Type:Text &lt;br /&gt;
 surface|Type:Text &lt;br /&gt;
 target|Type:Text &lt;br /&gt;
 targetCollection|Type:Text &lt;br /&gt;
 targetDescription|Type:Text &lt;br /&gt;
 targetName|Type:Text &lt;br /&gt;
 targetPlatform|Type:Text &lt;br /&gt;
 targetPopulation|Type:Text &lt;br /&gt;
 targetProduct|Type:Text &lt;br /&gt;
 targetUrl|Type:URL &lt;br /&gt;
 taxID|Type:Text &lt;br /&gt;
 taxonRank|Type:Text &lt;br /&gt;
 taxonomicRange|Type:Text &lt;br /&gt;
 teaches|Type:Text &lt;br /&gt;
 telephone|Type:Telephone number&lt;br /&gt;
 temporal|Type:Text &lt;br /&gt;
 temporalCoverage|Type:Text &lt;br /&gt;
 termCode|Type:Text &lt;br /&gt;
 termDuration|Type:Text &lt;br /&gt;
 termsOfService|Type:Text &lt;br /&gt;
 termsPerYear|Type:Text &lt;br /&gt;
 text|Type:Text &lt;br /&gt;
 textValue|Type:Text &lt;br /&gt;
 thumbnail|Type:Text &lt;br /&gt;
 thumbnailUrl|Type:URL&lt;br /&gt;
 tickerSymbol|Type:Text &lt;br /&gt;
 ticketNumber|Type:Text &lt;br /&gt;
 ticketToken|Type:Text &lt;br /&gt;
 ticketedSeat|Type:Text &lt;br /&gt;
 timeOfDay|Type:Text &lt;br /&gt;
 timeRequired|Type:Text &lt;br /&gt;
 timeToComplete|Type:Text &lt;br /&gt;
 tissueSample|Type:Text &lt;br /&gt;
 title|Type:Text &lt;br /&gt;
 titleEIDR|Type:Text &lt;br /&gt;
 toLocation|Type:Text &lt;br /&gt;
 toRecipient|Type:Text &lt;br /&gt;
 tocContinuation|Type:Text &lt;br /&gt;
 tocEntry|Type:Text &lt;br /&gt;
 tongueWeight|Type:Text &lt;br /&gt;
 tool|Type:Text &lt;br /&gt;
 torque|Type:Text &lt;br /&gt;
 totalJobOpenings|Type:Text &lt;br /&gt;
 totalPaymentDue|Type:Text &lt;br /&gt;
 totalPrice|Type:Text &lt;br /&gt;
 totalTime|Type:Text &lt;br /&gt;
 tourBookingPage|Type:Text &lt;br /&gt;
 touristType|Type:Text &lt;br /&gt;
 track|Type:Text &lt;br /&gt;
 trackingNumber|Type:Text &lt;br /&gt;
 trackingUrl|Type:URL&lt;br /&gt;
 tracks|Type:Text &lt;br /&gt;
 trailer|Type:Text &lt;br /&gt;
 trailerWeight|Type:Text &lt;br /&gt;
 trainName|Type:Text &lt;br /&gt;
 trainNumber|Type:Text &lt;br /&gt;
 trainingSalary|Type:Text &lt;br /&gt;
 transFatContent|Type:Text &lt;br /&gt;
 transcript|Type:Text &lt;br /&gt;
 transitTime|Type:Text &lt;br /&gt;
 transitTimeLabel|Type:Text &lt;br /&gt;
 translationOfWork|Type:Text &lt;br /&gt;
 translator|Type:Text &lt;br /&gt;
 transmissionMethod|Type:Text &lt;br /&gt;
 travelBans|Type:Text &lt;br /&gt;
 trialDesign|Type:Text &lt;br /&gt;
 tributary|Type:Text &lt;br /&gt;
 typeOfBed|Type:Text &lt;br /&gt;
 typeOfGood|Type:Text &lt;br /&gt;
 typicalAgeRange|Type:Text &lt;br /&gt;
 typicalCreditsPerTerm|Type:Text &lt;br /&gt;
 typicalTest|Type:Text &lt;br /&gt;
 underName|Type:Text &lt;br /&gt;
 unitCode|Type:Text &lt;br /&gt;
 unitText|Type:Text &lt;br /&gt;
 unnamedSourcesPolicy|Type:Text &lt;br /&gt;
 unsaturatedFatContent|Type:Text &lt;br /&gt;
 uploadDate|Type:Date&lt;br /&gt;
 upvoteCount|Type:Text &lt;br /&gt;
 url|Type:URL &lt;br /&gt;
 urlTemplate|Type:Text &lt;br /&gt;
 usageInfo|Type:Text &lt;br /&gt;
 usedToDiagnose|Type:Text &lt;br /&gt;
 userInteractionCount|Type:Text &lt;br /&gt;
 usesDevice|Type:Text &lt;br /&gt;
 usesHealthPlanIdStandard|Type:Text &lt;br /&gt;
 utterances|Type:Text &lt;br /&gt;
 validFor|Type:Text &lt;br /&gt;
 validFrom|Type:Text &lt;br /&gt;
 validIn|Type:Text &lt;br /&gt;
 validThrough|Type:Text &lt;br /&gt;
 validUntil|Type:Text &lt;br /&gt;
 value|Type:Text &lt;br /&gt;
 valueAddedTaxIncluded|Type:Text &lt;br /&gt;
 valueMaxLength|Type:Text &lt;br /&gt;
 valueMinLength|Type:Text &lt;br /&gt;
 valueName|Type:Text &lt;br /&gt;
 valuePattern|Type:Text &lt;br /&gt;
 valueReference|Type:Text &lt;br /&gt;
 valueRequired|Type:Text &lt;br /&gt;
 variableMeasured|Type:Text &lt;br /&gt;
 variantCover|Type:Text &lt;br /&gt;
 variesBy|Type:Text &lt;br /&gt;
 vatID|Type:Text &lt;br /&gt;
 vehicleConfiguration|Type:Text &lt;br /&gt;
 vehicleEngine|Type:Text &lt;br /&gt;
 vehicleIdentificationNumber|Type:Text &lt;br /&gt;
 vehicleInteriorColor|Type:Text &lt;br /&gt;
 vehicleInteriorType|Type:Text &lt;br /&gt;
 vehicleModelDate|Type:Date&lt;br /&gt;
 vehicleSeatingCapacity|Type:Text &lt;br /&gt;
 vehicleSpecialUsage|Type:Text &lt;br /&gt;
 vehicleTransmission|Type:Text &lt;br /&gt;
 vendor|Type:Text &lt;br /&gt;
 verificationFactCheckingPolicy|Type:Text &lt;br /&gt;
 version|Type:Text &lt;br /&gt;
 video|Type:Text &lt;br /&gt;
 videoFormat|Type:Text &lt;br /&gt;
 videoFrameSize|Type:Text &lt;br /&gt;
 videoQuality|Type:Text &lt;br /&gt;
 volumeNumber|Type:Text &lt;br /&gt;
 warning|Type:Text &lt;br /&gt;
 warranty|Type:Text &lt;br /&gt;
 warrantyPromise|Type:Text &lt;br /&gt;
 warrantyScope|Type:Text &lt;br /&gt;
 webCheckinTime|Type:Text &lt;br /&gt;
 webFeed|Type:Text &lt;br /&gt;
 weight|Type:Text &lt;br /&gt;
 weightTotal|Type:Text &lt;br /&gt;
 wheelbase|Type:Text &lt;br /&gt;
 width|Type:Text &lt;br /&gt;
 winner|Type:Text &lt;br /&gt;
 wordCount|Type:Text &lt;br /&gt;
 workExample|Type:Text &lt;br /&gt;
 workFeatured|Type:Text &lt;br /&gt;
 workHours|Type:Text &lt;br /&gt;
 workLocation|Type:Text &lt;br /&gt;
 workPerformed|Type:Text &lt;br /&gt;
 workPresented|Type:Text &lt;br /&gt;
 workTranslation|Type:Text &lt;br /&gt;
 workload|Type:Text &lt;br /&gt;
 worksFor|Type:Text &lt;br /&gt;
 worstRating|Type:Text &lt;br /&gt;
 xpath|Type:Text &lt;br /&gt;
 yearBuilt|Type:Text &lt;br /&gt;
 yearlyRevenue|Type:Text &lt;br /&gt;
 yearsInOperation|Type:Text &lt;br /&gt;
 yield|Type:Text &lt;br /&gt;
&lt;br /&gt;
 3DModel|Category&lt;br /&gt;
 AMRadioChannel|Category&lt;br /&gt;
 APIReference|Category&lt;br /&gt;
 Abdomen|Category&lt;br /&gt;
 AboutPage|Category&lt;br /&gt;
 AcceptAction|Category&lt;br /&gt;
 Accommodation|Category&lt;br /&gt;
 AccountingService|Category&lt;br /&gt;
 AchieveAction|Category&lt;br /&gt;
 Action|Category&lt;br /&gt;
 ActionAccessSpecification|Category&lt;br /&gt;
 ActionStatusType|Category&lt;br /&gt;
 ActivateAction|Category&lt;br /&gt;
 ActivationFee|Category&lt;br /&gt;
 ActiveActionStatus|Category&lt;br /&gt;
 ActiveNotRecruiting|Category&lt;br /&gt;
 AddAction|Category&lt;br /&gt;
 AdministrativeArea|Category&lt;br /&gt;
 AdultEntertainment|Category&lt;br /&gt;
 AdultOrientedEnumeration|Category&lt;br /&gt;
 AdvertiserContentArticle|Category&lt;br /&gt;
 AerobicActivity|Category&lt;br /&gt;
 AggregateOffer|Category&lt;br /&gt;
 AggregateRating|Category&lt;br /&gt;
 AgreeAction|Category&lt;br /&gt;
 Airline|Category&lt;br /&gt;
 Airport|Category&lt;br /&gt;
 AlbumRelease|Category&lt;br /&gt;
 AlcoholConsideration|Category&lt;br /&gt;
 AlignmentObject|Category&lt;br /&gt;
 AllWheelDriveConfiguration|Category&lt;br /&gt;
 AllergiesHealthAspect|Category&lt;br /&gt;
 AllocateAction|Category&lt;br /&gt;
 AmpStory|Category&lt;br /&gt;
 AmusementPark|Category&lt;br /&gt;
 AnaerobicActivity|Category&lt;br /&gt;
 AnalysisNewsArticle|Category&lt;br /&gt;
 AnatomicalStructure|Category&lt;br /&gt;
 AnatomicalSystem|Category&lt;br /&gt;
 AndroidPlatform|Category&lt;br /&gt;
 Anesthesia|Category&lt;br /&gt;
 AnimalShelter|Category&lt;br /&gt;
 Answer|Category&lt;br /&gt;
 Apartment|Category&lt;br /&gt;
 ApartmentComplex|Category&lt;br /&gt;
 Appearance|Category&lt;br /&gt;
 AppendAction|Category&lt;br /&gt;
 ApplyAction|Category&lt;br /&gt;
 ApprovedIndication|Category&lt;br /&gt;
 Aquarium|Category&lt;br /&gt;
 ArchiveComponent|Category&lt;br /&gt;
 ArchiveOrganization|Category&lt;br /&gt;
 ArriveAction|Category&lt;br /&gt;
 ArtGallery|Category&lt;br /&gt;
 Artery|Category&lt;br /&gt;
 Article|Category&lt;br /&gt;
 AskAction|Category&lt;br /&gt;
 AskPublicNewsArticle|Category&lt;br /&gt;
 AssessAction|Category&lt;br /&gt;
 AssignAction|Category&lt;br /&gt;
 Atlas|Category&lt;br /&gt;
 Attorney|Category&lt;br /&gt;
 Audience|Category&lt;br /&gt;
 AudioObject|Category&lt;br /&gt;
 AudioObjectSnapshot|Category&lt;br /&gt;
 Audiobook|Category&lt;br /&gt;
 AudiobookFormat|Category&lt;br /&gt;
 AuthoritativeLegalValue|Category&lt;br /&gt;
 AuthorizeAction|Category&lt;br /&gt;
 AutoBodyShop|Category&lt;br /&gt;
 AutoDealer|Category&lt;br /&gt;
 AutoPartsStore|Category&lt;br /&gt;
 AutoRental|Category&lt;br /&gt;
 AutoRepair|Category&lt;br /&gt;
 AutoWash|Category&lt;br /&gt;
 AutomatedTeller|Category&lt;br /&gt;
 AutomotiveBusiness|Category&lt;br /&gt;
 Ayurvedic|Category&lt;br /&gt;
 BackOrder|Category&lt;br /&gt;
 BackgroundNewsArticle|Category&lt;br /&gt;
 Bacteria|Category&lt;br /&gt;
 Bakery|Category&lt;br /&gt;
 Balance|Category&lt;br /&gt;
 BankAccount|Category&lt;br /&gt;
 BankOrCreditUnion|Category&lt;br /&gt;
 BarOrPub|Category&lt;br /&gt;
 Barcode|Category&lt;br /&gt;
 BasicIncome|Category&lt;br /&gt;
 Beach|Category&lt;br /&gt;
 BeautySalon|Category&lt;br /&gt;
 BedAndBreakfast|Category&lt;br /&gt;
 BedDetails|Category&lt;br /&gt;
 BedType|Category&lt;br /&gt;
 BefriendAction|Category&lt;br /&gt;
 BenefitsHealthAspect|Category&lt;br /&gt;
 BikeStore|Category&lt;br /&gt;
 BioChemEntity|Category&lt;br /&gt;
 Blog|Category&lt;br /&gt;
 BlogPosting|Category&lt;br /&gt;
 BloodTest|Category&lt;br /&gt;
 BoardingPolicyType|Category&lt;br /&gt;
 BoatReservation|Category&lt;br /&gt;
 BoatTerminal|Category&lt;br /&gt;
 BoatTrip|Category&lt;br /&gt;
 BodyMeasurementArm|Category&lt;br /&gt;
 BodyMeasurementBust|Category&lt;br /&gt;
 BodyMeasurementChest|Category&lt;br /&gt;
 BodyMeasurementFoot|Category&lt;br /&gt;
 BodyMeasurementHand|Category&lt;br /&gt;
 BodyMeasurementHead|Category&lt;br /&gt;
 BodyMeasurementHeight|Category&lt;br /&gt;
 BodyMeasurementHips|Category&lt;br /&gt;
 BodyMeasurementInsideLeg|Category&lt;br /&gt;
 BodyMeasurementNeck|Category&lt;br /&gt;
 BodyMeasurementTypeEnumeration|Category&lt;br /&gt;
 BodyMeasurementUnderbust|Category&lt;br /&gt;
 BodyMeasurementWaist|Category&lt;br /&gt;
 BodyMeasurementWeight|Category&lt;br /&gt;
 BodyOfWater|Category&lt;br /&gt;
 Bone|Category&lt;br /&gt;
 Book|Category&lt;br /&gt;
 BookFormatType|Category&lt;br /&gt;
 BookSeries|Category&lt;br /&gt;
 BookStore|Category&lt;br /&gt;
 BookmarkAction|Category&lt;br /&gt;
 Boolean|Category&lt;br /&gt;
 BorrowAction|Category&lt;br /&gt;
 BowlingAlley|Category&lt;br /&gt;
 BrainStructure|Category&lt;br /&gt;
 Brand|Category&lt;br /&gt;
 BreadcrumbList|Category&lt;br /&gt;
 Brewery|Category&lt;br /&gt;
 Bridge|Category&lt;br /&gt;
 BroadcastChannel|Category&lt;br /&gt;
 BroadcastEvent|Category&lt;br /&gt;
 BroadcastFrequencySpecification|Category&lt;br /&gt;
 BroadcastRelease|Category&lt;br /&gt;
 BroadcastService|Category&lt;br /&gt;
 BrokerageAccount|Category&lt;br /&gt;
 BuddhistTemple|Category&lt;br /&gt;
 BusOrCoach|Category&lt;br /&gt;
 BusReservation|Category&lt;br /&gt;
 BusStation|Category&lt;br /&gt;
 BusStop|Category&lt;br /&gt;
 BusTrip|Category&lt;br /&gt;
 BusinessAudience|Category&lt;br /&gt;
 BusinessEntityType|Category&lt;br /&gt;
 BusinessEvent|Category&lt;br /&gt;
 BusinessFunction|Category&lt;br /&gt;
 BusinessSupport|Category&lt;br /&gt;
 BuyAction|Category&lt;br /&gt;
 CDCPMDRecord|Category&lt;br /&gt;
 CDFormat|Category&lt;br /&gt;
 CT|Category&lt;br /&gt;
 CableOrSatelliteService|Category&lt;br /&gt;
 CafeOrCoffeeShop|Category&lt;br /&gt;
 Campground|Category&lt;br /&gt;
 CampingPitch|Category&lt;br /&gt;
 Canal|Category&lt;br /&gt;
 CancelAction|Category&lt;br /&gt;
 Car|Category&lt;br /&gt;
 CarUsageType|Category&lt;br /&gt;
 Cardiovascular|Category&lt;br /&gt;
 CardiovascularExam|Category&lt;br /&gt;
 CaseSeries|Category&lt;br /&gt;
 Casino|Category&lt;br /&gt;
 CassetteFormat|Category&lt;br /&gt;
 CategoryCode|Category&lt;br /&gt;
 CategoryCodeSet|Category&lt;br /&gt;
 CatholicChurch|Category&lt;br /&gt;
 CausesHealthAspect|Category&lt;br /&gt;
 Cemetery|Category&lt;br /&gt;
 Chapter|Category&lt;br /&gt;
 CharitableIncorporatedOrganization|Category&lt;br /&gt;
 CheckAction|Category&lt;br /&gt;
 CheckInAction|Category&lt;br /&gt;
 CheckOutAction|Category&lt;br /&gt;
 CheckoutPage|Category&lt;br /&gt;
 ChemicalSubstance|Category&lt;br /&gt;
 ChildCare|Category&lt;br /&gt;
 ChildrensEvent|Category&lt;br /&gt;
 Chiropractic|Category&lt;br /&gt;
 ChooseAction|Category&lt;br /&gt;
 Church|Category&lt;br /&gt;
 City|Category&lt;br /&gt;
 CityHall|Category&lt;br /&gt;
 CivicStructure|Category&lt;br /&gt;
 Claim|Category&lt;br /&gt;
 ClaimReview|Category&lt;br /&gt;
 Class|Category&lt;br /&gt;
 CleaningFee|Category&lt;br /&gt;
 Clinician|Category&lt;br /&gt;
 Clip|Category&lt;br /&gt;
 ClothingStore|Category&lt;br /&gt;
 CoOp|Category&lt;br /&gt;
 Code|Category&lt;br /&gt;
 CohortStudy|Category&lt;br /&gt;
 Collection|Category&lt;br /&gt;
 CollectionPage|Category&lt;br /&gt;
 CollegeOrUniversity|Category&lt;br /&gt;
 ComedyClub|Category&lt;br /&gt;
 ComedyEvent|Category&lt;br /&gt;
 ComicCoverArt|Category&lt;br /&gt;
 ComicIssue|Category&lt;br /&gt;
 ComicSeries|Category&lt;br /&gt;
 ComicStory|Category&lt;br /&gt;
 Comment|Category&lt;br /&gt;
 CommentAction|Category&lt;br /&gt;
 CommentPermission|Category&lt;br /&gt;
 CommunicateAction|Category&lt;br /&gt;
 CommunityHealth|Category&lt;br /&gt;
 CompilationAlbum|Category&lt;br /&gt;
 CompleteDataFeed|Category&lt;br /&gt;
 Completed|Category&lt;br /&gt;
 CompletedActionStatus|Category&lt;br /&gt;
 CompoundPriceSpecification|Category&lt;br /&gt;
 ComputerLanguage|Category&lt;br /&gt;
 ComputerStore|Category&lt;br /&gt;
 ConfirmAction|Category&lt;br /&gt;
 Consortium|Category&lt;br /&gt;
 ConsumeAction|Category&lt;br /&gt;
 ContactPage|Category&lt;br /&gt;
 ContactPoint|Category&lt;br /&gt;
 ContactPointOption|Category&lt;br /&gt;
 ContagiousnessHealthAspect|Category&lt;br /&gt;
 Continent|Category&lt;br /&gt;
 ControlAction|Category&lt;br /&gt;
 ConvenienceStore|Category&lt;br /&gt;
 Conversation|Category&lt;br /&gt;
 CookAction|Category&lt;br /&gt;
 Corporation|Category&lt;br /&gt;
 CorrectionComment|Category&lt;br /&gt;
 Country|Category&lt;br /&gt;
 Course|Category&lt;br /&gt;
 CourseInstance|Category&lt;br /&gt;
 Courthouse|Category&lt;br /&gt;
 CoverArt|Category&lt;br /&gt;
 CovidTestingFacility|Category&lt;br /&gt;
 CreateAction|Category&lt;br /&gt;
 CreativeWork|Category&lt;br /&gt;
 CreativeWorkSeason|Category&lt;br /&gt;
 CreativeWorkSeries|Category&lt;br /&gt;
 CreditCard|Category&lt;br /&gt;
 Crematorium|Category&lt;br /&gt;
 CriticReview|Category&lt;br /&gt;
 CrossSectional|Category&lt;br /&gt;
 CssSelectorType|Category&lt;br /&gt;
 CurrencyConversionService|Category&lt;br /&gt;
 DDxElement|Category&lt;br /&gt;
 DJMixAlbum|Category&lt;br /&gt;
 DVDFormat|Category&lt;br /&gt;
 DamagedCondition|Category&lt;br /&gt;
 DanceEvent|Category&lt;br /&gt;
 DanceGroup|Category&lt;br /&gt;
 DangerousGoodConsideration|Category&lt;br /&gt;
 DataCatalog|Category&lt;br /&gt;
 DataDownload|Category&lt;br /&gt;
 DataFeed|Category&lt;br /&gt;
 DataFeedItem|Category&lt;br /&gt;
 DataType|Category&lt;br /&gt;
 Dataset|Category&lt;br /&gt;
 Date|Category&lt;br /&gt;
 DateTime|Category&lt;br /&gt;
 DatedMoneySpecification|Category&lt;br /&gt;
 DayOfWeek|Category&lt;br /&gt;
 DaySpa|Category&lt;br /&gt;
 DeactivateAction|Category&lt;br /&gt;
 DecontextualizedContent|Category&lt;br /&gt;
 DefenceEstablishment|Category&lt;br /&gt;
 DefinedRegion|Category&lt;br /&gt;
 DefinedTerm|Category&lt;br /&gt;
 DefinedTermSet|Category&lt;br /&gt;
 DefinitiveLegalValue|Category&lt;br /&gt;
 DeleteAction|Category&lt;br /&gt;
 DeliveryChargeSpecification|Category&lt;br /&gt;
 DeliveryEvent|Category&lt;br /&gt;
 DeliveryMethod|Category&lt;br /&gt;
 DeliveryTimeSettings|Category&lt;br /&gt;
 Demand|Category&lt;br /&gt;
 DemoAlbum|Category&lt;br /&gt;
 DemoGameAvailability|Category&lt;br /&gt;
 Dentist|Category&lt;br /&gt;
 Dentistry|Category&lt;br /&gt;
 DepartAction|Category&lt;br /&gt;
 DepartmentStore|Category&lt;br /&gt;
 DepositAccount|Category&lt;br /&gt;
 Dermatologic|Category&lt;br /&gt;
 Dermatology|Category&lt;br /&gt;
 DesktopWebPlatform|Category&lt;br /&gt;
 DiabeticDiet|Category&lt;br /&gt;
 Diagnostic|Category&lt;br /&gt;
 DiagnosticLab|Category&lt;br /&gt;
 DiagnosticProcedure|Category&lt;br /&gt;
 Diet|Category&lt;br /&gt;
 DietNutrition|Category&lt;br /&gt;
 DietarySupplement|Category&lt;br /&gt;
 DigitalAudioTapeFormat|Category&lt;br /&gt;
 DigitalDocument|Category&lt;br /&gt;
 DigitalDocumentPermission|Category&lt;br /&gt;
 DigitalDocumentPermissionType|Category&lt;br /&gt;
 DigitalFormat|Category&lt;br /&gt;
 DigitalPlatformEnumeration|Category&lt;br /&gt;
 DisabilitySupport|Category&lt;br /&gt;
 DisagreeAction|Category&lt;br /&gt;
 Discontinued|Category&lt;br /&gt;
 DiscoverAction|Category&lt;br /&gt;
 DiscussionForumPosting|Category&lt;br /&gt;
 DislikeAction|Category&lt;br /&gt;
 Distance|Category&lt;br /&gt;
 DistanceFee|Category&lt;br /&gt;
 Distillery|Category&lt;br /&gt;
 DonateAction|Category&lt;br /&gt;
 DoseSchedule|Category&lt;br /&gt;
 DoubleBlindedTrial|Category&lt;br /&gt;
 DownloadAction|Category&lt;br /&gt;
 Downpayment|Category&lt;br /&gt;
 DrawAction|Category&lt;br /&gt;
 Drawing|Category&lt;br /&gt;
 DrinkAction|Category&lt;br /&gt;
 DriveWheelConfigurationValue|Category&lt;br /&gt;
 DrivingSchoolVehicleUsage|Category&lt;br /&gt;
 Drug|Category&lt;br /&gt;
 DrugClass|Category&lt;br /&gt;
 DrugCost|Category&lt;br /&gt;
 DrugCostCategory|Category&lt;br /&gt;
 DrugLegalStatus|Category&lt;br /&gt;
 DrugPregnancyCategory|Category&lt;br /&gt;
 DrugPrescriptionStatus|Category&lt;br /&gt;
 DrugStrength|Category&lt;br /&gt;
 DryCleaningOrLaundry|Category&lt;br /&gt;
 Duration|Category&lt;br /&gt;
 EBook|Category&lt;br /&gt;
 EPRelease|Category&lt;br /&gt;
 EUEnergyEfficiencyCategoryA|Category&lt;br /&gt;
 EUEnergyEfficiencyCategoryA1Plus|Category&lt;br /&gt;
 EUEnergyEfficiencyCategoryA2Plus|Category&lt;br /&gt;
 EUEnergyEfficiencyCategoryA3Plus|Category&lt;br /&gt;
 EUEnergyEfficiencyCategoryB|Category&lt;br /&gt;
 EUEnergyEfficiencyCategoryC|Category&lt;br /&gt;
 EUEnergyEfficiencyCategoryD|Category&lt;br /&gt;
 EUEnergyEfficiencyCategoryE|Category&lt;br /&gt;
 EUEnergyEfficiencyCategoryF|Category&lt;br /&gt;
 EUEnergyEfficiencyCategoryG|Category&lt;br /&gt;
 EUEnergyEfficiencyEnumeration|Category&lt;br /&gt;
 Ear|Category&lt;br /&gt;
 EatAction|Category&lt;br /&gt;
 EditedOrCroppedContent|Category&lt;br /&gt;
 EducationEvent|Category&lt;br /&gt;
 EducationalAudience|Category&lt;br /&gt;
 EducationalOccupationalCredential|Category&lt;br /&gt;
 EducationalOccupationalProgram|Category&lt;br /&gt;
 EducationalOrganization|Category&lt;br /&gt;
 EffectivenessHealthAspect|Category&lt;br /&gt;
 Electrician|Category&lt;br /&gt;
 ElectronicsStore|Category&lt;br /&gt;
 ElementarySchool|Category&lt;br /&gt;
 EmailMessage|Category&lt;br /&gt;
 Embassy|Category&lt;br /&gt;
 Emergency|Category&lt;br /&gt;
 EmergencyService|Category&lt;br /&gt;
 EmployeeRole|Category&lt;br /&gt;
 EmployerAggregateRating|Category&lt;br /&gt;
 EmployerReview|Category&lt;br /&gt;
 EmploymentAgency|Category&lt;br /&gt;
 Endocrine|Category&lt;br /&gt;
 EndorseAction|Category&lt;br /&gt;
 EndorsementRating|Category&lt;br /&gt;
 Energy|Category&lt;br /&gt;
 EnergyConsumptionDetails|Category&lt;br /&gt;
 EnergyEfficiencyEnumeration|Category&lt;br /&gt;
 EnergyStarCertified|Category&lt;br /&gt;
 EnergyStarEnergyEfficiencyEnumeration|Category&lt;br /&gt;
 EngineSpecification|Category&lt;br /&gt;
 EnrollingByInvitation|Category&lt;br /&gt;
 EntertainmentBusiness|Category&lt;br /&gt;
 EntryPoint|Category&lt;br /&gt;
 Enumeration|Category&lt;br /&gt;
 Episode|Category&lt;br /&gt;
 Event|Category&lt;br /&gt;
 EventAttendanceModeEnumeration|Category&lt;br /&gt;
 EventCancelled|Category&lt;br /&gt;
 EventMovedOnline|Category&lt;br /&gt;
 EventPostponed|Category&lt;br /&gt;
 EventRescheduled|Category&lt;br /&gt;
 EventReservation|Category&lt;br /&gt;
 EventScheduled|Category&lt;br /&gt;
 EventSeries|Category&lt;br /&gt;
 EventStatusType|Category&lt;br /&gt;
 EventVenue|Category&lt;br /&gt;
 EvidenceLevelA|Category&lt;br /&gt;
 EvidenceLevelB|Category&lt;br /&gt;
 EvidenceLevelC|Category&lt;br /&gt;
 ExchangeRateSpecification|Category&lt;br /&gt;
 ExchangeRefund|Category&lt;br /&gt;
 ExerciseAction|Category&lt;br /&gt;
 ExerciseGym|Category&lt;br /&gt;
 ExercisePlan|Category&lt;br /&gt;
 ExhibitionEvent|Category&lt;br /&gt;
 Eye|Category&lt;br /&gt;
 FAQPage|Category&lt;br /&gt;
 FDAcategoryA|Category&lt;br /&gt;
 FDAcategoryB|Category&lt;br /&gt;
 FDAcategoryC|Category&lt;br /&gt;
 FDAcategoryD|Category&lt;br /&gt;
 FDAcategoryX|Category&lt;br /&gt;
 FDAnotEvaluated|Category&lt;br /&gt;
 FMRadioChannel|Category&lt;br /&gt;
 FailedActionStatus|Category&lt;br /&gt;
 False|Category&lt;br /&gt;
 FastFoodRestaurant|Category&lt;br /&gt;
 Female|Category&lt;br /&gt;
 Festival|Category&lt;br /&gt;
 FilmAction|Category&lt;br /&gt;
 FinancialProduct|Category&lt;br /&gt;
 FinancialService|Category&lt;br /&gt;
 FindAction|Category&lt;br /&gt;
 FireStation|Category&lt;br /&gt;
 Flexibility|Category&lt;br /&gt;
 Flight|Category&lt;br /&gt;
 FlightReservation|Category&lt;br /&gt;
 Float|Category&lt;br /&gt;
 FloorPlan|Category&lt;br /&gt;
 Florist|Category&lt;br /&gt;
 FollowAction|Category&lt;br /&gt;
 FoodEstablishment|Category&lt;br /&gt;
 FoodEstablishmentReservation|Category&lt;br /&gt;
 FoodEvent|Category&lt;br /&gt;
 FoodService|Category&lt;br /&gt;
 FourWheelDriveConfiguration|Category&lt;br /&gt;
 FreeReturn|Category&lt;br /&gt;
 Friday|Category&lt;br /&gt;
 FrontWheelDriveConfiguration|Category&lt;br /&gt;
 FullGameAvailability|Category&lt;br /&gt;
 FullRefund|Category&lt;br /&gt;
 FundingAgency|Category&lt;br /&gt;
 FundingScheme|Category&lt;br /&gt;
 Fungus|Category&lt;br /&gt;
 FurnitureStore|Category&lt;br /&gt;
 Game|Category&lt;br /&gt;
 GameAvailabilityEnumeration|Category&lt;br /&gt;
 GamePlayMode|Category&lt;br /&gt;
 GameServer|Category&lt;br /&gt;
 GameServerStatus|Category&lt;br /&gt;
 GardenStore|Category&lt;br /&gt;
 GasStation|Category&lt;br /&gt;
 Gastroenterologic|Category&lt;br /&gt;
 GatedResidenceCommunity|Category&lt;br /&gt;
 GenderType|Category&lt;br /&gt;
 Gene|Category&lt;br /&gt;
 GeneralContractor|Category&lt;br /&gt;
 GenericWebPlatform|Category&lt;br /&gt;
 Genetic|Category&lt;br /&gt;
 Genitourinary|Category&lt;br /&gt;
 GeoCircle|Category&lt;br /&gt;
 GeoCoordinates|Category&lt;br /&gt;
 GeoShape|Category&lt;br /&gt;
 GeospatialGeometry|Category&lt;br /&gt;
 Geriatric|Category&lt;br /&gt;
 GettingAccessHealthAspect|Category&lt;br /&gt;
 GiveAction|Category&lt;br /&gt;
 GlutenFreeDiet|Category&lt;br /&gt;
 GolfCourse|Category&lt;br /&gt;
 GovernmentBenefitsType|Category&lt;br /&gt;
 GovernmentBuilding|Category&lt;br /&gt;
 GovernmentOffice|Category&lt;br /&gt;
 GovernmentOrganization|Category&lt;br /&gt;
 GovernmentPermit|Category&lt;br /&gt;
 GovernmentService|Category&lt;br /&gt;
 Grant|Category&lt;br /&gt;
 GraphicNovel|Category&lt;br /&gt;
 GroceryStore|Category&lt;br /&gt;
 GroupBoardingPolicy|Category&lt;br /&gt;
 Guide|Category&lt;br /&gt;
 Gynecologic|Category&lt;br /&gt;
 HVACBusiness|Category&lt;br /&gt;
 Hackathon|Category&lt;br /&gt;
 HairSalon|Category&lt;br /&gt;
 HalalDiet|Category&lt;br /&gt;
 Hardcover|Category&lt;br /&gt;
 HardwareStore|Category&lt;br /&gt;
 Head|Category&lt;br /&gt;
 HealthAndBeautyBusiness|Category&lt;br /&gt;
 HealthAspectEnumeration|Category&lt;br /&gt;
 HealthCare|Category&lt;br /&gt;
 HealthClub|Category&lt;br /&gt;
 HealthInsurancePlan|Category&lt;br /&gt;
 HealthPlanCostSharingSpecification|Category&lt;br /&gt;
 HealthPlanFormulary|Category&lt;br /&gt;
 HealthPlanNetwork|Category&lt;br /&gt;
 HealthTopicContent|Category&lt;br /&gt;
 HealthcareConsideration|Category&lt;br /&gt;
 HearingImpairedSupported|Category&lt;br /&gt;
 Hematologic|Category&lt;br /&gt;
 HighSchool|Category&lt;br /&gt;
 HinduDiet|Category&lt;br /&gt;
 HinduTemple|Category&lt;br /&gt;
 HobbyShop|Category&lt;br /&gt;
 HomeAndConstructionBusiness|Category&lt;br /&gt;
 HomeGoodsStore|Category&lt;br /&gt;
 Homeopathic|Category&lt;br /&gt;
 Hospital|Category&lt;br /&gt;
 Hostel|Category&lt;br /&gt;
 Hotel|Category&lt;br /&gt;
 HotelRoom|Category&lt;br /&gt;
 House|Category&lt;br /&gt;
 HousePainter|Category&lt;br /&gt;
 HowItWorksHealthAspect|Category&lt;br /&gt;
 HowOrWhereHealthAspect|Category&lt;br /&gt;
 HowTo|Category&lt;br /&gt;
 HowToDirection|Category&lt;br /&gt;
 HowToItem|Category&lt;br /&gt;
 HowToSection|Category&lt;br /&gt;
 HowToStep|Category&lt;br /&gt;
 HowToSupply|Category&lt;br /&gt;
 HowToTip|Category&lt;br /&gt;
 HowToTool|Category&lt;br /&gt;
 HyperToc|Category&lt;br /&gt;
 HyperTocEntry|Category&lt;br /&gt;
 IOSPlatform|Category&lt;br /&gt;
 IceCreamShop|Category&lt;br /&gt;
 IgnoreAction|Category&lt;br /&gt;
 ImageGallery|Category&lt;br /&gt;
 ImageObject|Category&lt;br /&gt;
 ImageObjectSnapshot|Category&lt;br /&gt;
 ImagingTest|Category&lt;br /&gt;
 InForce|Category&lt;br /&gt;
 InStock|Category&lt;br /&gt;
 InStoreOnly|Category&lt;br /&gt;
 IndividualProduct|Category&lt;br /&gt;
 Infectious|Category&lt;br /&gt;
 InfectiousAgentClass|Category&lt;br /&gt;
 InfectiousDisease|Category&lt;br /&gt;
 InformAction|Category&lt;br /&gt;
 IngredientsHealthAspect|Category&lt;br /&gt;
 InsertAction|Category&lt;br /&gt;
 InstallAction|Category&lt;br /&gt;
 Installment|Category&lt;br /&gt;
 InsuranceAgency|Category&lt;br /&gt;
 Intangible|Category&lt;br /&gt;
 Integer|Category&lt;br /&gt;
 InteractAction|Category&lt;br /&gt;
 InteractionCounter|Category&lt;br /&gt;
 InternationalTrial|Category&lt;br /&gt;
 InternetCafe|Category&lt;br /&gt;
 InvestmentFund|Category&lt;br /&gt;
 InvestmentOrDeposit|Category&lt;br /&gt;
 InviteAction|Category&lt;br /&gt;
 Invoice|Category&lt;br /&gt;
 InvoicePrice|Category&lt;br /&gt;
 ItemAvailability|Category&lt;br /&gt;
 ItemList|Category&lt;br /&gt;
 ItemListOrderAscending|Category&lt;br /&gt;
 ItemListOrderDescending|Category&lt;br /&gt;
 ItemListOrderType|Category&lt;br /&gt;
 ItemListUnordered|Category&lt;br /&gt;
 ItemPage|Category&lt;br /&gt;
 JewelryStore|Category&lt;br /&gt;
 JobPosting|Category&lt;br /&gt;
 JoinAction|Category&lt;br /&gt;
 Joint|Category&lt;br /&gt;
 KosherDiet|Category&lt;br /&gt;
 LaboratoryScience|Category&lt;br /&gt;
 LakeBodyOfWater|Category&lt;br /&gt;
 Landform|Category&lt;br /&gt;
 LandmarksOrHistoricalBuildings|Category&lt;br /&gt;
 Language|Category&lt;br /&gt;
 LaserDiscFormat|Category&lt;br /&gt;
 LearningResource|Category&lt;br /&gt;
 LeaveAction|Category&lt;br /&gt;
 LeftHandDriving|Category&lt;br /&gt;
 LegalForceStatus|Category&lt;br /&gt;
 LegalService|Category&lt;br /&gt;
 LegalValueLevel|Category&lt;br /&gt;
 Legislation|Category&lt;br /&gt;
 LegislationObject|Category&lt;br /&gt;
 LegislativeBuilding|Category&lt;br /&gt;
 LeisureTimeActivity|Category&lt;br /&gt;
 LendAction|Category&lt;br /&gt;
 Library|Category&lt;br /&gt;
 LibrarySystem|Category&lt;br /&gt;
 LifestyleModification|Category&lt;br /&gt;
 Ligament|Category&lt;br /&gt;
 LikeAction|Category&lt;br /&gt;
 LimitedAvailability|Category&lt;br /&gt;
 LimitedByGuaranteeCharity|Category&lt;br /&gt;
 LinkRole|Category&lt;br /&gt;
 LiquorStore|Category&lt;br /&gt;
 ListItem|Category&lt;br /&gt;
 ListPrice|Category&lt;br /&gt;
 ListenAction|Category&lt;br /&gt;
 LiteraryEvent|Category&lt;br /&gt;
 LiveAlbum|Category&lt;br /&gt;
 LiveBlogPosting|Category&lt;br /&gt;
 LivingWithHealthAspect|Category&lt;br /&gt;
 LoanOrCredit|Category&lt;br /&gt;
 LocalBusiness|Category&lt;br /&gt;
 LocationFeatureSpecification|Category&lt;br /&gt;
 LockerDelivery|Category&lt;br /&gt;
 Locksmith|Category&lt;br /&gt;
 LodgingBusiness|Category&lt;br /&gt;
 LodgingReservation|Category&lt;br /&gt;
 Longitudinal|Category&lt;br /&gt;
 LoseAction|Category&lt;br /&gt;
 LowCalorieDiet|Category&lt;br /&gt;
 LowFatDiet|Category&lt;br /&gt;
 LowLactoseDiet|Category&lt;br /&gt;
 LowSaltDiet|Category&lt;br /&gt;
 Lung|Category&lt;br /&gt;
 LymphaticVessel|Category&lt;br /&gt;
 MRI|Category&lt;br /&gt;
 MSRP|Category&lt;br /&gt;
 Male|Category&lt;br /&gt;
 Manuscript|Category&lt;br /&gt;
 Map|Category&lt;br /&gt;
 MapCategoryType|Category&lt;br /&gt;
 MarryAction|Category&lt;br /&gt;
 Mass|Category&lt;br /&gt;
 MathSolver|Category&lt;br /&gt;
 MaximumDoseSchedule|Category&lt;br /&gt;
 MayTreatHealthAspect|Category&lt;br /&gt;
 MeasurementTypeEnumeration|Category&lt;br /&gt;
 MediaGallery|Category&lt;br /&gt;
 MediaManipulationRatingEnumeration|Category&lt;br /&gt;
 MediaObject|Category&lt;br /&gt;
 MediaReview|Category&lt;br /&gt;
 MediaReviewItem|Category&lt;br /&gt;
 MediaSubscription|Category&lt;br /&gt;
 MedicalAudience|Category&lt;br /&gt;
 MedicalAudienceType|Category&lt;br /&gt;
 MedicalBusiness|Category&lt;br /&gt;
 MedicalCause|Category&lt;br /&gt;
 MedicalClinic|Category&lt;br /&gt;
 MedicalCode|Category&lt;br /&gt;
 MedicalCondition|Category&lt;br /&gt;
 MedicalConditionStage|Category&lt;br /&gt;
 MedicalContraindication|Category&lt;br /&gt;
 MedicalDevice|Category&lt;br /&gt;
 MedicalDevicePurpose|Category&lt;br /&gt;
 MedicalEntity|Category&lt;br /&gt;
 MedicalEnumeration|Category&lt;br /&gt;
 MedicalEvidenceLevel|Category&lt;br /&gt;
 MedicalGuideline|Category&lt;br /&gt;
 MedicalGuidelineContraindication|Category&lt;br /&gt;
 MedicalGuidelineRecommendation|Category&lt;br /&gt;
 MedicalImagingTechnique|Category&lt;br /&gt;
 MedicalIndication|Category&lt;br /&gt;
 MedicalIntangible|Category&lt;br /&gt;
 MedicalObservationalStudy|Category&lt;br /&gt;
 MedicalObservationalStudyDesign|Category&lt;br /&gt;
 MedicalOrganization|Category&lt;br /&gt;
 MedicalProcedure|Category&lt;br /&gt;
 MedicalProcedureType|Category&lt;br /&gt;
 MedicalResearcher|Category&lt;br /&gt;
 MedicalRiskCalculator|Category&lt;br /&gt;
 MedicalRiskEstimator|Category&lt;br /&gt;
 MedicalRiskFactor|Category&lt;br /&gt;
 MedicalRiskScore|Category&lt;br /&gt;
 MedicalScholarlyArticle|Category&lt;br /&gt;
 MedicalSign|Category&lt;br /&gt;
 MedicalSignOrSymptom|Category&lt;br /&gt;
 MedicalSpecialty|Category&lt;br /&gt;
 MedicalStudy|Category&lt;br /&gt;
 MedicalStudyStatus|Category&lt;br /&gt;
 MedicalSymptom|Category&lt;br /&gt;
 MedicalTest|Category&lt;br /&gt;
 MedicalTestPanel|Category&lt;br /&gt;
 MedicalTherapy|Category&lt;br /&gt;
 MedicalTrial|Category&lt;br /&gt;
 MedicalTrialDesign|Category&lt;br /&gt;
 MedicalWebPage|Category&lt;br /&gt;
 MedicineSystem|Category&lt;br /&gt;
 MeetingRoom|Category&lt;br /&gt;
 MensClothingStore|Category&lt;br /&gt;
 Menu|Category&lt;br /&gt;
 MenuItem|Category&lt;br /&gt;
 MenuSection|Category&lt;br /&gt;
 MerchantReturnEnumeration|Category&lt;br /&gt;
 MerchantReturnFiniteReturnWindow|Category&lt;br /&gt;
 MerchantReturnNotPermitted|Category&lt;br /&gt;
 MerchantReturnPolicy|Category&lt;br /&gt;
 MerchantReturnPolicySeasonalOverride|Category&lt;br /&gt;
 MerchantReturnUnlimitedWindow|Category&lt;br /&gt;
 MerchantReturnUnspecified|Category&lt;br /&gt;
 Message|Category&lt;br /&gt;
 MiddleSchool|Category&lt;br /&gt;
 Midwifery|Category&lt;br /&gt;
 MinimumAdvertisedPrice|Category&lt;br /&gt;
 MisconceptionsHealthAspect|Category&lt;br /&gt;
 MixedEventAttendanceMode|Category&lt;br /&gt;
 MixtapeAlbum|Category&lt;br /&gt;
 MobileApplication|Category&lt;br /&gt;
 MobilePhoneStore|Category&lt;br /&gt;
 MobileWebPlatform|Category&lt;br /&gt;
 MolecularEntity|Category&lt;br /&gt;
 Monday|Category&lt;br /&gt;
 MonetaryAmount|Category&lt;br /&gt;
 MonetaryAmountDistribution|Category&lt;br /&gt;
 MonetaryGrant|Category&lt;br /&gt;
 MoneyTransfer|Category&lt;br /&gt;
 MortgageLoan|Category&lt;br /&gt;
 Mosque|Category&lt;br /&gt;
 Motel|Category&lt;br /&gt;
 Motorcycle|Category&lt;br /&gt;
 MotorcycleDealer|Category&lt;br /&gt;
 MotorcycleRepair|Category&lt;br /&gt;
 MotorizedBicycle|Category&lt;br /&gt;
 Mountain|Category&lt;br /&gt;
 MoveAction|Category&lt;br /&gt;
 Movie|Category&lt;br /&gt;
 MovieClip|Category&lt;br /&gt;
 MovieRentalStore|Category&lt;br /&gt;
 MovieSeries|Category&lt;br /&gt;
 MovieTheater|Category&lt;br /&gt;
 MovingCompany|Category&lt;br /&gt;
 MultiCenterTrial|Category&lt;br /&gt;
 MultiPlayer|Category&lt;br /&gt;
 MulticellularParasite|Category&lt;br /&gt;
 Muscle|Category&lt;br /&gt;
 Musculoskeletal|Category&lt;br /&gt;
 MusculoskeletalExam|Category&lt;br /&gt;
 Museum|Category&lt;br /&gt;
 MusicAlbum|Category&lt;br /&gt;
 MusicAlbumProductionType|Category&lt;br /&gt;
 MusicAlbumReleaseType|Category&lt;br /&gt;
 MusicComposition|Category&lt;br /&gt;
 MusicEvent|Category&lt;br /&gt;
 MusicGroup|Category&lt;br /&gt;
 MusicPlaylist|Category&lt;br /&gt;
 MusicRecording|Category&lt;br /&gt;
 MusicRelease|Category&lt;br /&gt;
 MusicReleaseFormatType|Category&lt;br /&gt;
 MusicStore|Category&lt;br /&gt;
 MusicVenue|Category&lt;br /&gt;
 MusicVideoObject|Category&lt;br /&gt;
 NGO|Category&lt;br /&gt;
 NLNonprofitType|Category&lt;br /&gt;
 NailSalon|Category&lt;br /&gt;
 NarcoticConsideration|Category&lt;br /&gt;
 Neck|Category&lt;br /&gt;
 Nerve|Category&lt;br /&gt;
 Neuro|Category&lt;br /&gt;
 Neurologic|Category&lt;br /&gt;
 NewCondition|Category&lt;br /&gt;
 NewsArticle|Category&lt;br /&gt;
 NewsMediaOrganization|Category&lt;br /&gt;
 Newspaper|Category&lt;br /&gt;
 NightClub|Category&lt;br /&gt;
 NoninvasiveProcedure|Category&lt;br /&gt;
 Nonprofit501a|Category&lt;br /&gt;
 Nonprofit501c1|Category&lt;br /&gt;
 Nonprofit501c10|Category&lt;br /&gt;
 Nonprofit501c11|Category&lt;br /&gt;
 Nonprofit501c12|Category&lt;br /&gt;
 Nonprofit501c13|Category&lt;br /&gt;
 Nonprofit501c14|Category&lt;br /&gt;
 Nonprofit501c15|Category&lt;br /&gt;
 Nonprofit501c16|Category&lt;br /&gt;
 Nonprofit501c17|Category&lt;br /&gt;
 Nonprofit501c18|Category&lt;br /&gt;
 Nonprofit501c19|Category&lt;br /&gt;
 Nonprofit501c2|Category&lt;br /&gt;
 Nonprofit501c20|Category&lt;br /&gt;
 Nonprofit501c21|Category&lt;br /&gt;
 Nonprofit501c22|Category&lt;br /&gt;
 Nonprofit501c23|Category&lt;br /&gt;
 Nonprofit501c24|Category&lt;br /&gt;
 Nonprofit501c25|Category&lt;br /&gt;
 Nonprofit501c26|Category&lt;br /&gt;
 Nonprofit501c27|Category&lt;br /&gt;
 Nonprofit501c28|Category&lt;br /&gt;
 Nonprofit501c3|Category&lt;br /&gt;
 Nonprofit501c4|Category&lt;br /&gt;
 Nonprofit501c5|Category&lt;br /&gt;
 Nonprofit501c6|Category&lt;br /&gt;
 Nonprofit501c7|Category&lt;br /&gt;
 Nonprofit501c8|Category&lt;br /&gt;
 Nonprofit501c9|Category&lt;br /&gt;
 Nonprofit501d|Category&lt;br /&gt;
 Nonprofit501e|Category&lt;br /&gt;
 Nonprofit501f|Category&lt;br /&gt;
 Nonprofit501k|Category&lt;br /&gt;
 Nonprofit501n|Category&lt;br /&gt;
 Nonprofit501q|Category&lt;br /&gt;
 Nonprofit527|Category&lt;br /&gt;
 NonprofitANBI|Category&lt;br /&gt;
 NonprofitSBBI|Category&lt;br /&gt;
 NonprofitType|Category&lt;br /&gt;
 Nose|Category&lt;br /&gt;
 NotInForce|Category&lt;br /&gt;
 NotYetRecruiting|Category&lt;br /&gt;
 Notary|Category&lt;br /&gt;
 NoteDigitalDocument|Category&lt;br /&gt;
 Number|Category&lt;br /&gt;
 Nursing|Category&lt;br /&gt;
 NutritionInformation|Category&lt;br /&gt;
 OTC|Category&lt;br /&gt;
 Observation|Category&lt;br /&gt;
 Observational|Category&lt;br /&gt;
 Obstetric|Category&lt;br /&gt;
 Occupation|Category&lt;br /&gt;
 OccupationalActivity|Category&lt;br /&gt;
 OccupationalExperienceRequirements|Category&lt;br /&gt;
 OccupationalTherapy|Category&lt;br /&gt;
 OceanBodyOfWater|Category&lt;br /&gt;
 Offer|Category&lt;br /&gt;
 OfferCatalog|Category&lt;br /&gt;
 OfferForLease|Category&lt;br /&gt;
 OfferForPurchase|Category&lt;br /&gt;
 OfferItemCondition|Category&lt;br /&gt;
 OfferShippingDetails|Category&lt;br /&gt;
 OfficeEquipmentStore|Category&lt;br /&gt;
 OfficialLegalValue|Category&lt;br /&gt;
 OfflineEventAttendanceMode|Category&lt;br /&gt;
 OfflinePermanently|Category&lt;br /&gt;
 OfflineTemporarily|Category&lt;br /&gt;
 OnDemandEvent|Category&lt;br /&gt;
 OnSitePickup|Category&lt;br /&gt;
 Oncologic|Category&lt;br /&gt;
 OneTimePayments|Category&lt;br /&gt;
 Online|Category&lt;br /&gt;
 OnlineBusiness|Category&lt;br /&gt;
 OnlineEventAttendanceMode|Category&lt;br /&gt;
 OnlineFull|Category&lt;br /&gt;
 OnlineOnly|Category&lt;br /&gt;
 OnlineStore|Category&lt;br /&gt;
 OpenTrial|Category&lt;br /&gt;
 OpeningHoursSpecification|Category&lt;br /&gt;
 OpinionNewsArticle|Category&lt;br /&gt;
 Optician|Category&lt;br /&gt;
 Optometric|Category&lt;br /&gt;
 Order|Category&lt;br /&gt;
 OrderAction|Category&lt;br /&gt;
 OrderCancelled|Category&lt;br /&gt;
 OrderDelivered|Category&lt;br /&gt;
 OrderInTransit|Category&lt;br /&gt;
 OrderItem|Category&lt;br /&gt;
 OrderPaymentDue|Category&lt;br /&gt;
 OrderPickupAvailable|Category&lt;br /&gt;
 OrderProblem|Category&lt;br /&gt;
 OrderProcessing|Category&lt;br /&gt;
 OrderReturned|Category&lt;br /&gt;
 OrderStatus|Category&lt;br /&gt;
 Organization|Category&lt;br /&gt;
 OrganizationRole|Category&lt;br /&gt;
 OrganizeAction|Category&lt;br /&gt;
 OriginalMediaContent|Category&lt;br /&gt;
 OriginalShippingFees|Category&lt;br /&gt;
 Osteopathic|Category&lt;br /&gt;
 Otolaryngologic|Category&lt;br /&gt;
 OutOfStock|Category&lt;br /&gt;
 OutletStore|Category&lt;br /&gt;
 OverviewHealthAspect|Category&lt;br /&gt;
 OwnershipInfo|Category&lt;br /&gt;
 PET|Category&lt;br /&gt;
 PaidLeave|Category&lt;br /&gt;
 PaintAction|Category&lt;br /&gt;
 Painting|Category&lt;br /&gt;
 PalliativeProcedure|Category&lt;br /&gt;
 Paperback|Category&lt;br /&gt;
 ParcelDelivery|Category&lt;br /&gt;
 ParcelService|Category&lt;br /&gt;
 ParentAudience|Category&lt;br /&gt;
 ParentalSupport|Category&lt;br /&gt;
 Park|Category&lt;br /&gt;
 ParkingFacility|Category&lt;br /&gt;
 ParkingMap|Category&lt;br /&gt;
 PartiallyInForce|Category&lt;br /&gt;
 Pathology|Category&lt;br /&gt;
 PathologyTest|Category&lt;br /&gt;
 Patient|Category&lt;br /&gt;
 PatientExperienceHealthAspect|Category&lt;br /&gt;
 PawnShop|Category&lt;br /&gt;
 PayAction|Category&lt;br /&gt;
 PaymentAutomaticallyApplied|Category&lt;br /&gt;
 PaymentCard|Category&lt;br /&gt;
 PaymentChargeSpecification|Category&lt;br /&gt;
 PaymentComplete|Category&lt;br /&gt;
 PaymentDeclined|Category&lt;br /&gt;
 PaymentDue|Category&lt;br /&gt;
 PaymentMethod|Category&lt;br /&gt;
 PaymentPastDue|Category&lt;br /&gt;
 PaymentService|Category&lt;br /&gt;
 PaymentStatusType|Category&lt;br /&gt;
 Pediatric|Category&lt;br /&gt;
 PeopleAudience|Category&lt;br /&gt;
 PercutaneousProcedure|Category&lt;br /&gt;
 PerformAction|Category&lt;br /&gt;
 PerformanceRole|Category&lt;br /&gt;
 PerformingArtsTheater|Category&lt;br /&gt;
 PerformingGroup|Category&lt;br /&gt;
 Periodical|Category&lt;br /&gt;
 Permit|Category&lt;br /&gt;
 Person|Category&lt;br /&gt;
 PetStore|Category&lt;br /&gt;
 Pharmacy|Category&lt;br /&gt;
 PharmacySpecialty|Category&lt;br /&gt;
 Photograph|Category&lt;br /&gt;
 PhotographAction|Category&lt;br /&gt;
 PhysicalActivity|Category&lt;br /&gt;
 PhysicalActivityCategory|Category&lt;br /&gt;
 PhysicalExam|Category&lt;br /&gt;
 PhysicalTherapy|Category&lt;br /&gt;
 Physician|Category&lt;br /&gt;
 Physiotherapy|Category&lt;br /&gt;
 Place|Category&lt;br /&gt;
 PlaceOfWorship|Category&lt;br /&gt;
 PlaceboControlledTrial|Category&lt;br /&gt;
 PlanAction|Category&lt;br /&gt;
 PlasticSurgery|Category&lt;br /&gt;
 Play|Category&lt;br /&gt;
 PlayAction|Category&lt;br /&gt;
 PlayGameAction|Category&lt;br /&gt;
 Playground|Category&lt;br /&gt;
 Plumber|Category&lt;br /&gt;
 PodcastEpisode|Category&lt;br /&gt;
 PodcastSeason|Category&lt;br /&gt;
 PodcastSeries|Category&lt;br /&gt;
 Podiatric|Category&lt;br /&gt;
 PoliceStation|Category&lt;br /&gt;
 Pond|Category&lt;br /&gt;
 PostOffice|Category&lt;br /&gt;
 PostalAddress|Category&lt;br /&gt;
 PostalCodeRangeSpecification|Category&lt;br /&gt;
 Poster|Category&lt;br /&gt;
 PotentialActionStatus|Category&lt;br /&gt;
 PreOrder|Category&lt;br /&gt;
 PreOrderAction|Category&lt;br /&gt;
 PreSale|Category&lt;br /&gt;
 PregnancyHealthAspect|Category&lt;br /&gt;
 PrependAction|Category&lt;br /&gt;
 Preschool|Category&lt;br /&gt;
 PrescriptionOnly|Category&lt;br /&gt;
 PresentationDigitalDocument|Category&lt;br /&gt;
 PreventionHealthAspect|Category&lt;br /&gt;
 PreventionIndication|Category&lt;br /&gt;
 PriceComponentTypeEnumeration|Category&lt;br /&gt;
 PriceSpecification|Category&lt;br /&gt;
 PriceTypeEnumeration|Category&lt;br /&gt;
 PrimaryCare|Category&lt;br /&gt;
 Prion|Category&lt;br /&gt;
 Product|Category&lt;br /&gt;
 ProductCollection|Category&lt;br /&gt;
 ProductGroup|Category&lt;br /&gt;
 ProductModel|Category&lt;br /&gt;
 ProfessionalService|Category&lt;br /&gt;
 ProfilePage|Category&lt;br /&gt;
 PrognosisHealthAspect|Category&lt;br /&gt;
 ProgramMembership|Category&lt;br /&gt;
 Project|Category&lt;br /&gt;
 PronounceableText|Category&lt;br /&gt;
 Property|Category&lt;br /&gt;
 PropertyValue|Category&lt;br /&gt;
 PropertyValueSpecification|Category&lt;br /&gt;
 Protein|Category&lt;br /&gt;
 Protozoa|Category&lt;br /&gt;
 Psychiatric|Category&lt;br /&gt;
 PsychologicalTreatment|Category&lt;br /&gt;
 PublicHealth|Category&lt;br /&gt;
 PublicHolidays|Category&lt;br /&gt;
 PublicSwimmingPool|Category&lt;br /&gt;
 PublicToilet|Category&lt;br /&gt;
 PublicationEvent|Category&lt;br /&gt;
 PublicationIssue|Category&lt;br /&gt;
 PublicationVolume|Category&lt;br /&gt;
 Pulmonary|Category&lt;br /&gt;
 QAPage|Category&lt;br /&gt;
 QualitativeValue|Category&lt;br /&gt;
 QuantitativeValue|Category&lt;br /&gt;
 QuantitativeValueDistribution|Category&lt;br /&gt;
 Quantity|Category&lt;br /&gt;
 Question|Category&lt;br /&gt;
 Quiz|Category&lt;br /&gt;
 Quotation|Category&lt;br /&gt;
 QuoteAction|Category&lt;br /&gt;
 RVPark|Category&lt;br /&gt;
 RadiationTherapy|Category&lt;br /&gt;
 RadioBroadcastService|Category&lt;br /&gt;
 RadioChannel|Category&lt;br /&gt;
 RadioClip|Category&lt;br /&gt;
 RadioEpisode|Category&lt;br /&gt;
 RadioSeason|Category&lt;br /&gt;
 RadioSeries|Category&lt;br /&gt;
 RadioStation|Category&lt;br /&gt;
 Radiography|Category&lt;br /&gt;
 RandomizedTrial|Category&lt;br /&gt;
 Rating|Category&lt;br /&gt;
 ReactAction|Category&lt;br /&gt;
 ReadAction|Category&lt;br /&gt;
 ReadPermission|Category&lt;br /&gt;
 RealEstateAgent|Category&lt;br /&gt;
 RealEstateListing|Category&lt;br /&gt;
 RearWheelDriveConfiguration|Category&lt;br /&gt;
 ReceiveAction|Category&lt;br /&gt;
 Recipe|Category&lt;br /&gt;
 Recommendation|Category&lt;br /&gt;
 RecommendedDoseSchedule|Category&lt;br /&gt;
 Recruiting|Category&lt;br /&gt;
 RecyclingCenter|Category&lt;br /&gt;
 ReducedRelevanceForChildrenConsideration|Category&lt;br /&gt;
 RefundTypeEnumeration|Category&lt;br /&gt;
 RefurbishedCondition|Category&lt;br /&gt;
 RegisterAction|Category&lt;br /&gt;
 Registry|Category&lt;br /&gt;
 ReimbursementCap|Category&lt;br /&gt;
 RejectAction|Category&lt;br /&gt;
 RelatedTopicsHealthAspect|Category&lt;br /&gt;
 RemixAlbum|Category&lt;br /&gt;
 Renal|Category&lt;br /&gt;
 RentAction|Category&lt;br /&gt;
 RentalCarReservation|Category&lt;br /&gt;
 RentalVehicleUsage|Category&lt;br /&gt;
 RepaymentSpecification|Category&lt;br /&gt;
 ReplaceAction|Category&lt;br /&gt;
 ReplyAction|Category&lt;br /&gt;
 Report|Category&lt;br /&gt;
 ReportageNewsArticle|Category&lt;br /&gt;
 ReportedDoseSchedule|Category&lt;br /&gt;
 ResearchOrganization|Category&lt;br /&gt;
 ResearchProject|Category&lt;br /&gt;
 Researcher|Category&lt;br /&gt;
 Reservation|Category&lt;br /&gt;
 ReservationCancelled|Category&lt;br /&gt;
 ReservationConfirmed|Category&lt;br /&gt;
 ReservationHold|Category&lt;br /&gt;
 ReservationPackage|Category&lt;br /&gt;
 ReservationPending|Category&lt;br /&gt;
 ReservationStatusType|Category&lt;br /&gt;
 ReserveAction|Category&lt;br /&gt;
 Reservoir|Category&lt;br /&gt;
 Residence|Category&lt;br /&gt;
 Resort|Category&lt;br /&gt;
 RespiratoryTherapy|Category&lt;br /&gt;
 Restaurant|Category&lt;br /&gt;
 RestockingFees|Category&lt;br /&gt;
 RestrictedDiet|Category&lt;br /&gt;
 ResultsAvailable|Category&lt;br /&gt;
 ResultsNotAvailable|Category&lt;br /&gt;
 ResumeAction|Category&lt;br /&gt;
 Retail|Category&lt;br /&gt;
 ReturnAction|Category&lt;br /&gt;
 ReturnAtKiosk|Category&lt;br /&gt;
 ReturnByMail|Category&lt;br /&gt;
 ReturnFeesCustomerResponsibility|Category&lt;br /&gt;
 ReturnFeesEnumeration|Category&lt;br /&gt;
 ReturnInStore|Category&lt;br /&gt;
 ReturnLabelCustomerResponsibility|Category&lt;br /&gt;
 ReturnLabelDownloadAndPrint|Category&lt;br /&gt;
 ReturnLabelInBox|Category&lt;br /&gt;
 ReturnLabelSourceEnumeration|Category&lt;br /&gt;
 ReturnMethodEnumeration|Category&lt;br /&gt;
 ReturnShippingFees|Category&lt;br /&gt;
 Review|Category&lt;br /&gt;
 ReviewAction|Category&lt;br /&gt;
 ReviewNewsArticle|Category&lt;br /&gt;
 Rheumatologic|Category&lt;br /&gt;
 RightHandDriving|Category&lt;br /&gt;
 RisksOrComplicationsHealthAspect|Category&lt;br /&gt;
 RiverBodyOfWater|Category&lt;br /&gt;
 Role|Category&lt;br /&gt;
 RoofingContractor|Category&lt;br /&gt;
 Room|Category&lt;br /&gt;
 RsvpAction|Category&lt;br /&gt;
 RsvpResponseMaybe|Category&lt;br /&gt;
 RsvpResponseNo|Category&lt;br /&gt;
 RsvpResponseType|Category&lt;br /&gt;
 RsvpResponseYes|Category&lt;br /&gt;
 SRP|Category&lt;br /&gt;
 SafetyHealthAspect|Category&lt;br /&gt;
 SaleEvent|Category&lt;br /&gt;
 SalePrice|Category&lt;br /&gt;
 SatireOrParodyContent|Category&lt;br /&gt;
 SatiricalArticle|Category&lt;br /&gt;
 Saturday|Category&lt;br /&gt;
 Schedule|Category&lt;br /&gt;
 ScheduleAction|Category&lt;br /&gt;
 ScholarlyArticle|Category&lt;br /&gt;
 School|Category&lt;br /&gt;
 SchoolDistrict|Category&lt;br /&gt;
 ScreeningEvent|Category&lt;br /&gt;
 ScreeningHealthAspect|Category&lt;br /&gt;
 Sculpture|Category&lt;br /&gt;
 SeaBodyOfWater|Category&lt;br /&gt;
 SearchAction|Category&lt;br /&gt;
 SearchRescueOrganization|Category&lt;br /&gt;
 SearchResultsPage|Category&lt;br /&gt;
 Season|Category&lt;br /&gt;
 Seat|Category&lt;br /&gt;
 SeatingMap|Category&lt;br /&gt;
 SeeDoctorHealthAspect|Category&lt;br /&gt;
 SeekToAction|Category&lt;br /&gt;
 SelfCareHealthAspect|Category&lt;br /&gt;
 SelfStorage|Category&lt;br /&gt;
 SellAction|Category&lt;br /&gt;
 SendAction|Category&lt;br /&gt;
 Series|Category&lt;br /&gt;
 Service|Category&lt;br /&gt;
 ServiceChannel|Category&lt;br /&gt;
 SexualContentConsideration|Category&lt;br /&gt;
 ShareAction|Category&lt;br /&gt;
 SheetMusic|Category&lt;br /&gt;
 ShippingDeliveryTime|Category&lt;br /&gt;
 ShippingRateSettings|Category&lt;br /&gt;
 ShoeStore|Category&lt;br /&gt;
 ShoppingCenter|Category&lt;br /&gt;
 ShortStory|Category&lt;br /&gt;
 SideEffectsHealthAspect|Category&lt;br /&gt;
 SingleBlindedTrial|Category&lt;br /&gt;
 SingleCenterTrial|Category&lt;br /&gt;
 SingleFamilyResidence|Category&lt;br /&gt;
 SinglePlayer|Category&lt;br /&gt;
 SingleRelease|Category&lt;br /&gt;
 SiteNavigationElement|Category&lt;br /&gt;
 SizeGroupEnumeration|Category&lt;br /&gt;
 SizeSpecification|Category&lt;br /&gt;
 SizeSystemEnumeration|Category&lt;br /&gt;
 SizeSystemImperial|Category&lt;br /&gt;
 SizeSystemMetric|Category&lt;br /&gt;
 SkiResort|Category&lt;br /&gt;
 Skin|Category&lt;br /&gt;
 SocialEvent|Category&lt;br /&gt;
 SocialMediaPosting|Category&lt;br /&gt;
 SoftwareApplication|Category&lt;br /&gt;
 SoftwareSourceCode|Category&lt;br /&gt;
 SoldOut|Category&lt;br /&gt;
 SolveMathAction|Category&lt;br /&gt;
 SomeProducts|Category&lt;br /&gt;
 SoundtrackAlbum|Category&lt;br /&gt;
 SpeakableSpecification|Category&lt;br /&gt;
 SpecialAnnouncement|Category&lt;br /&gt;
 Specialty|Category&lt;br /&gt;
 SpeechPathology|Category&lt;br /&gt;
 SpokenWordAlbum|Category&lt;br /&gt;
 SportingGoodsStore|Category&lt;br /&gt;
 SportsActivityLocation|Category&lt;br /&gt;
 SportsClub|Category&lt;br /&gt;
 SportsEvent|Category&lt;br /&gt;
 SportsOrganization|Category&lt;br /&gt;
 SportsTeam|Category&lt;br /&gt;
 SpreadsheetDigitalDocument|Category&lt;br /&gt;
 StadiumOrArena|Category&lt;br /&gt;
 StagedContent|Category&lt;br /&gt;
 StagesHealthAspect|Category&lt;br /&gt;
 State|Category&lt;br /&gt;
 Statement|Category&lt;br /&gt;
 StatisticalPopulation|Category&lt;br /&gt;
 StatusEnumeration|Category&lt;br /&gt;
 SteeringPositionValue|Category&lt;br /&gt;
 Store|Category&lt;br /&gt;
 StoreCreditRefund|Category&lt;br /&gt;
 StrengthTraining|Category&lt;br /&gt;
 StructuredValue|Category&lt;br /&gt;
 StudioAlbum|Category&lt;br /&gt;
 SubscribeAction|Category&lt;br /&gt;
 Subscription|Category&lt;br /&gt;
 Substance|Category&lt;br /&gt;
 SubwayStation|Category&lt;br /&gt;
 Suite|Category&lt;br /&gt;
 Sunday|Category&lt;br /&gt;
 SuperficialAnatomy|Category&lt;br /&gt;
 Surgical|Category&lt;br /&gt;
 SurgicalProcedure|Category&lt;br /&gt;
 SuspendAction|Category&lt;br /&gt;
 Suspended|Category&lt;br /&gt;
 SymptomsHealthAspect|Category&lt;br /&gt;
 Synagogue|Category&lt;br /&gt;
 TVClip|Category&lt;br /&gt;
 TVEpisode|Category&lt;br /&gt;
 TVSeason|Category&lt;br /&gt;
 TVSeries|Category&lt;br /&gt;
 Table|Category&lt;br /&gt;
 TakeAction|Category&lt;br /&gt;
 TattooParlor|Category&lt;br /&gt;
 Taxi|Category&lt;br /&gt;
 TaxiReservation|Category&lt;br /&gt;
 TaxiService|Category&lt;br /&gt;
 TaxiStand|Category&lt;br /&gt;
 TaxiVehicleUsage|Category&lt;br /&gt;
 Taxon|Category&lt;br /&gt;
 TechArticle|Category&lt;br /&gt;
 TelevisionChannel|Category&lt;br /&gt;
 TelevisionStation|Category&lt;br /&gt;
 TennisComplex|Category&lt;br /&gt;
 Terminated|Category&lt;br /&gt;
 Text|Category&lt;br /&gt;
 TextDigitalDocument|Category&lt;br /&gt;
 TheaterEvent|Category&lt;br /&gt;
 TheaterGroup|Category&lt;br /&gt;
 Therapeutic|Category&lt;br /&gt;
 TherapeuticProcedure|Category&lt;br /&gt;
 Thesis|Category&lt;br /&gt;
 Thing|Category&lt;br /&gt;
 Throat|Category&lt;br /&gt;
 Thursday|Category&lt;br /&gt;
 Ticket|Category&lt;br /&gt;
 TieAction|Category&lt;br /&gt;
 Time|Category&lt;br /&gt;
 TipAction|Category&lt;br /&gt;
 TireShop|Category&lt;br /&gt;
 TobaccoNicotineConsideration|Category&lt;br /&gt;
 TollFree|Category&lt;br /&gt;
 TouristAttraction|Category&lt;br /&gt;
 TouristDestination|Category&lt;br /&gt;
 TouristInformationCenter|Category&lt;br /&gt;
 TouristTrip|Category&lt;br /&gt;
 Toxicologic|Category&lt;br /&gt;
 ToyStore|Category&lt;br /&gt;
 TrackAction|Category&lt;br /&gt;
 TradeAction|Category&lt;br /&gt;
 TraditionalChinese|Category&lt;br /&gt;
 TrainReservation|Category&lt;br /&gt;
 TrainStation|Category&lt;br /&gt;
 TrainTrip|Category&lt;br /&gt;
 TransferAction|Category&lt;br /&gt;
 TransformedContent|Category&lt;br /&gt;
 TransitMap|Category&lt;br /&gt;
 TravelAction|Category&lt;br /&gt;
 TravelAgency|Category&lt;br /&gt;
 TreatmentIndication|Category&lt;br /&gt;
 TreatmentsHealthAspect|Category&lt;br /&gt;
 Trip|Category&lt;br /&gt;
 TripleBlindedTrial|Category&lt;br /&gt;
 True|Category&lt;br /&gt;
 Tuesday|Category&lt;br /&gt;
 TypeAndQuantityNode|Category&lt;br /&gt;
 TypesHealthAspect|Category&lt;br /&gt;
 UKNonprofitType|Category&lt;br /&gt;
 UKTrust|Category&lt;br /&gt;
 URL|Category&lt;br /&gt;
 USNonprofitType|Category&lt;br /&gt;
 Ultrasound|Category&lt;br /&gt;
 UnRegisterAction|Category&lt;br /&gt;
 UnclassifiedAdultConsideration|Category&lt;br /&gt;
 UnemploymentSupport|Category&lt;br /&gt;
 UnincorporatedAssociationCharity|Category&lt;br /&gt;
 UnitPriceSpecification|Category&lt;br /&gt;
 UnofficialLegalValue|Category&lt;br /&gt;
 UpdateAction|Category&lt;br /&gt;
 Urologic|Category&lt;br /&gt;
 UsageOrScheduleHealthAspect|Category&lt;br /&gt;
 UseAction|Category&lt;br /&gt;
 UsedCondition|Category&lt;br /&gt;
 UserBlocks|Category&lt;br /&gt;
 UserCheckins|Category&lt;br /&gt;
 UserComments|Category&lt;br /&gt;
 UserDownloads|Category&lt;br /&gt;
 UserInteraction|Category&lt;br /&gt;
 UserLikes|Category&lt;br /&gt;
 UserPageVisits|Category&lt;br /&gt;
 UserPlays|Category&lt;br /&gt;
 UserPlusOnes|Category&lt;br /&gt;
 UserReview|Category&lt;br /&gt;
 UserTweets|Category&lt;br /&gt;
 VeganDiet|Category&lt;br /&gt;
 VegetarianDiet|Category&lt;br /&gt;
 Vehicle|Category&lt;br /&gt;
 Vein|Category&lt;br /&gt;
 VenueMap|Category&lt;br /&gt;
 Vessel|Category&lt;br /&gt;
 VeterinaryCare|Category&lt;br /&gt;
 VideoGallery|Category&lt;br /&gt;
 VideoGame|Category&lt;br /&gt;
 VideoGameClip|Category&lt;br /&gt;
 VideoGameSeries|Category&lt;br /&gt;
 VideoObject|Category&lt;br /&gt;
 VideoObjectSnapshot|Category&lt;br /&gt;
 ViewAction|Category&lt;br /&gt;
 VinylFormat|Category&lt;br /&gt;
 ViolenceConsideration|Category&lt;br /&gt;
 VirtualLocation|Category&lt;br /&gt;
 Virus|Category&lt;br /&gt;
 VisualArtsEvent|Category&lt;br /&gt;
 VisualArtwork|Category&lt;br /&gt;
 VitalSign|Category&lt;br /&gt;
 Volcano|Category&lt;br /&gt;
 VoteAction|Category&lt;br /&gt;
 WPAdBlock|Category&lt;br /&gt;
 WPFooter|Category&lt;br /&gt;
 WPHeader|Category&lt;br /&gt;
 WPSideBar|Category&lt;br /&gt;
 WantAction|Category&lt;br /&gt;
 WarrantyPromise|Category&lt;br /&gt;
 WarrantyScope|Category&lt;br /&gt;
 WatchAction|Category&lt;br /&gt;
 Waterfall|Category&lt;br /&gt;
 WeaponConsideration|Category&lt;br /&gt;
 WearAction|Category&lt;br /&gt;
 WearableMeasurementBack|Category&lt;br /&gt;
 WearableMeasurementChestOrBust|Category&lt;br /&gt;
 WearableMeasurementCollar|Category&lt;br /&gt;
 WearableMeasurementCup|Category&lt;br /&gt;
 WearableMeasurementHeight|Category&lt;br /&gt;
 WearableMeasurementHips|Category&lt;br /&gt;
 WearableMeasurementInseam|Category&lt;br /&gt;
 WearableMeasurementLength|Category&lt;br /&gt;
 WearableMeasurementOutsideLeg|Category&lt;br /&gt;
 WearableMeasurementSleeve|Category&lt;br /&gt;
 WearableMeasurementTypeEnumeration|Category&lt;br /&gt;
 WearableMeasurementWaist|Category&lt;br /&gt;
 WearableMeasurementWidth|Category&lt;br /&gt;
 WearableSizeGroupBig|Category&lt;br /&gt;
 WearableSizeGroupBoys|Category&lt;br /&gt;
 WearableSizeGroupEnumeration|Category&lt;br /&gt;
 WearableSizeGroupExtraShort|Category&lt;br /&gt;
 WearableSizeGroupExtraTall|Category&lt;br /&gt;
 WearableSizeGroupGirls|Category&lt;br /&gt;
 WearableSizeGroupHusky|Category&lt;br /&gt;
 WearableSizeGroupInfants|Category&lt;br /&gt;
 WearableSizeGroupJuniors|Category&lt;br /&gt;
 WearableSizeGroupMaternity|Category&lt;br /&gt;
 WearableSizeGroupMens|Category&lt;br /&gt;
 WearableSizeGroupMisses|Category&lt;br /&gt;
 WearableSizeGroupPetite|Category&lt;br /&gt;
 WearableSizeGroupPlus|Category&lt;br /&gt;
 WearableSizeGroupRegular|Category&lt;br /&gt;
 WearableSizeGroupShort|Category&lt;br /&gt;
 WearableSizeGroupTall|Category&lt;br /&gt;
 WearableSizeGroupWomens|Category&lt;br /&gt;
 WearableSizeSystemAU|Category&lt;br /&gt;
 WearableSizeSystemBR|Category&lt;br /&gt;
 WearableSizeSystemCN|Category&lt;br /&gt;
 WearableSizeSystemContinental|Category&lt;br /&gt;
 WearableSizeSystemDE|Category&lt;br /&gt;
 WearableSizeSystemEN13402|Category&lt;br /&gt;
 WearableSizeSystemEnumeration|Category&lt;br /&gt;
 WearableSizeSystemEurope|Category&lt;br /&gt;
 WearableSizeSystemFR|Category&lt;br /&gt;
 WearableSizeSystemGS1|Category&lt;br /&gt;
 WearableSizeSystemIT|Category&lt;br /&gt;
 WearableSizeSystemJP|Category&lt;br /&gt;
 WearableSizeSystemMX|Category&lt;br /&gt;
 WearableSizeSystemUK|Category&lt;br /&gt;
 WearableSizeSystemUS|Category&lt;br /&gt;
 WebAPI|Category&lt;br /&gt;
 WebApplication|Category&lt;br /&gt;
 WebContent|Category&lt;br /&gt;
 WebPage|Category&lt;br /&gt;
 WebPageElement|Category&lt;br /&gt;
 WebSite|Category&lt;br /&gt;
 Wednesday|Category&lt;br /&gt;
 WesternConventional|Category&lt;br /&gt;
 Wholesale|Category&lt;br /&gt;
 WholesaleStore|Category&lt;br /&gt;
 WinAction|Category&lt;br /&gt;
 Winery|Category&lt;br /&gt;
 Withdrawn|Category&lt;br /&gt;
 WorkBasedProgram|Category&lt;br /&gt;
 WorkersUnion|Category&lt;br /&gt;
 WriteAction|Category&lt;br /&gt;
 WritePermission|Category&lt;br /&gt;
 XPathType|Category&lt;br /&gt;
 XRay|Category&lt;br /&gt;
 ZoneBoardingPolicy|Category&lt;br /&gt;
 Zoo|Category&lt;br /&gt;
&lt;br /&gt;
[[Category:Imported vocabulary]]&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=SMW/Schema:Group:Predefined_properties&amp;diff=4741</id>
		<title>SMW/Schema:Group:Predefined properties</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=SMW/Schema:Group:Predefined_properties&amp;diff=4741"/>
		<updated>2023-05-01T09:40:22Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Semantic MediaWiki group import&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;PROPERTY_GROUP_SCHEMA&amp;quot;,&lt;br /&gt;
    &amp;quot;groups&amp;quot;: {&lt;br /&gt;
        &amp;quot;administrative_group&amp;quot;: {&lt;br /&gt;
            &amp;quot;canonical_name&amp;quot;: &amp;quot;Administrative properties&amp;quot;,&lt;br /&gt;
            &amp;quot;message_key&amp;quot;: &amp;quot;smw-property-group-label-administrative-properties&amp;quot;,&lt;br /&gt;
            &amp;quot;property_keys&amp;quot;: [&lt;br /&gt;
                &amp;quot;_MDAT&amp;quot;,&lt;br /&gt;
                &amp;quot;_CDAT&amp;quot;,&lt;br /&gt;
                &amp;quot;_NEWP&amp;quot;,&lt;br /&gt;
                &amp;quot;_LEDT&amp;quot;,&lt;br /&gt;
                &amp;quot;_DTITLE&amp;quot;,&lt;br /&gt;
                &amp;quot;_CHGPRO&amp;quot;,&lt;br /&gt;
                &amp;quot;_EDIP&amp;quot;,&lt;br /&gt;
                &amp;quot;_ERRC&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;classification_group&amp;quot;: {&lt;br /&gt;
            &amp;quot;canonical_name&amp;quot;: &amp;quot;Classification properties&amp;quot;,&lt;br /&gt;
            &amp;quot;message_key&amp;quot;: &amp;quot;smw-property-group-label-classification-properties&amp;quot;,&lt;br /&gt;
            &amp;quot;property_keys&amp;quot;: [&lt;br /&gt;
                &amp;quot;_INST&amp;quot;,&lt;br /&gt;
                &amp;quot;_PPGR&amp;quot;,&lt;br /&gt;
                &amp;quot;_SUBP&amp;quot;,&lt;br /&gt;
                &amp;quot;_SUBC&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;content_group&amp;quot;: {&lt;br /&gt;
            &amp;quot;canonical_name&amp;quot;: &amp;quot;Content properties&amp;quot;,&lt;br /&gt;
            &amp;quot;message_key&amp;quot;: &amp;quot;smw-property-group-label-content-properties&amp;quot;,&lt;br /&gt;
            &amp;quot;property_keys&amp;quot;: [&lt;br /&gt;
                &amp;quot;_SOBJ&amp;quot;,&lt;br /&gt;
                &amp;quot;_ASK&amp;quot;,&lt;br /&gt;
                &amp;quot;_MEDIA&amp;quot;,&lt;br /&gt;
                &amp;quot;_MIME&amp;quot;,&lt;br /&gt;
                &amp;quot;_ATTCH_LINK&amp;quot;,&lt;br /&gt;
                &amp;quot;_FILE_ATTCH&amp;quot;,&lt;br /&gt;
                &amp;quot;_CONT_TYPE&amp;quot;,&lt;br /&gt;
                &amp;quot;_CONT_AUTHOR&amp;quot;,&lt;br /&gt;
                &amp;quot;_CONT_LEN&amp;quot;,&lt;br /&gt;
                &amp;quot;_CONT_LANG&amp;quot;,&lt;br /&gt;
                &amp;quot;_CONT_TITLE&amp;quot;,&lt;br /&gt;
                &amp;quot;_CONT_DATE&amp;quot;,&lt;br /&gt;
                &amp;quot;_CONT_KEYW&amp;quot;,&lt;br /&gt;
                &amp;quot;_TRANS&amp;quot;,&lt;br /&gt;
                &amp;quot;_TRANS_SOURCE&amp;quot;,&lt;br /&gt;
                &amp;quot;_TRANS_GROUP&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;declarative_group&amp;quot;: {&lt;br /&gt;
            &amp;quot;canonical_name&amp;quot;: &amp;quot;Declarative properties&amp;quot;,&lt;br /&gt;
            &amp;quot;message_key&amp;quot;: &amp;quot;smw-property-group-label-declarative-properties&amp;quot;,&lt;br /&gt;
            &amp;quot;property_keys&amp;quot;: [&lt;br /&gt;
                &amp;quot;_TYPE&amp;quot;,&lt;br /&gt;
                &amp;quot;_UNIT&amp;quot;,&lt;br /&gt;
                &amp;quot;_IMPO&amp;quot;,&lt;br /&gt;
                &amp;quot;_CONV&amp;quot;,&lt;br /&gt;
                &amp;quot;_SERV&amp;quot;,&lt;br /&gt;
                &amp;quot;_PVAL&amp;quot;,&lt;br /&gt;
                &amp;quot;_LIST&amp;quot;,&lt;br /&gt;
                &amp;quot;_PREC&amp;quot;,&lt;br /&gt;
                &amp;quot;_PDESC&amp;quot;,&lt;br /&gt;
                &amp;quot;_PPLB&amp;quot;,&lt;br /&gt;
                &amp;quot;_PVAP&amp;quot;,&lt;br /&gt;
                &amp;quot;_PVALI&amp;quot;,&lt;br /&gt;
                &amp;quot;_PVUC&amp;quot;,&lt;br /&gt;
                &amp;quot;_PEID&amp;quot;,&lt;br /&gt;
                &amp;quot;_PEFU&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tags&amp;quot;: [&lt;br /&gt;
        &amp;quot;group&amp;quot;,&lt;br /&gt;
        &amp;quot;property group&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Vorlage:Protected_page_text/template&amp;diff=1114</id>
		<title>Vorlage:Protected page text/template</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Vorlage:Protected_page_text/template&amp;diff=1114"/>
		<updated>2015-08-09T08:57:08Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Vorlage:Protected page text/template“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#switch:{{{language|en}}}&lt;br /&gt;
|de={{protected page text&lt;br /&gt;
  | protection-message = Diese Vorlage ist geschützt und kann nur von Administratoren bearbeitet werden.&lt;br /&gt;
  | suggestions = {{#ifexist: {{FULLPAGENAME}} | yes}}&lt;br /&gt;
  | protection-reason = Die meinsten Vorlagen und Module sind auf unbestimmte Zeit geschützt, da sie Teil der Kernfunktionalität dieses Wikis sind.&lt;br /&gt;
  | template-links = yes&lt;br /&gt;
  | who-can-edit = Administratoren&lt;br /&gt;
  | request-type = template&lt;br /&gt;
  | language = de&lt;br /&gt;
  }}&lt;br /&gt;
|en&lt;br /&gt;
|#default={{protected page text&lt;br /&gt;
  | protection-message = This page is currently [[wpen:Wikipedia:Protection policy#Template protection|protected]] and can be edited only by [[wpen:Wikipedia:Administrators|administrators]].&lt;br /&gt;
  | suggestions = {{#ifexist: {{FULLPAGENAME}} | yes}}&lt;br /&gt;
  | protection-reason = Most [[wpen:Help:Template|templates]] and site interface pages are permanently [[wpen:Wikipedia:Protection policy#Template protection|protected]] due to visibility.&lt;br /&gt;
  | template-links = yes&lt;br /&gt;
  | who-can-edit = An [[wpen:Wikipedia:Administrators|administrator]]&lt;br /&gt;
  | request-type = template&lt;br /&gt;
  }}&lt;br /&gt;
}}&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>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Vorlage:Protected_page_text/semi&amp;diff=1113</id>
		<title>Vorlage:Protected page text/semi</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Vorlage:Protected_page_text/semi&amp;diff=1113"/>
		<updated>2015-08-09T08:57:07Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Vorlage:Protected page text/semi“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#switch:{{{language|en}}}&lt;br /&gt;
|de={{protected page text&lt;br /&gt;
  | image = Padlock-silver.png&lt;br /&gt;
  | protection-message = Diese Seite unterliegt einer Halbsperrung. Sie kann nur von registrierten Benutzern bearbeitet werden.&lt;br /&gt;
  | suggestions = yes&lt;br /&gt;
  | protection-reason = Auf öffentlichen Wikis können die meinsten Seiten von jedem auch anonym bearbeitet werden. Wir haben uns jedoch entschieden, dass Seiten nur von angemeldeten Benutzern bearbeitet werden können. Bitte [[Special:UserLogin|melden Sie sich &amp;lt;!--mit Ihrem Uni-Accout --&amp;gt;an]].&lt;br /&gt;
  | login-message = yes&lt;br /&gt;
  | who-can-edit = Angemeldete Nutzer&lt;br /&gt;
  | request-type = semi&lt;br /&gt;
  | language = de&lt;br /&gt;
  }}&lt;br /&gt;
|en&lt;br /&gt;
|#default={{protected page text&lt;br /&gt;
  | image = Padlock-silver.png&lt;br /&gt;
  | protection-message = This page is currently semi-protected and can be edited only by established registered users.&lt;br /&gt;
  | suggestions = yes&lt;br /&gt;
  | protection-reason = In typical Wiki systems most articles can be edited by anyone, however we decided agains anonymous editing. Please [[Special:UserLogin|log in]]&amp;lt;!-- with your university account--&amp;gt;.&lt;br /&gt;
  | login-message = yes&lt;br /&gt;
  | who-can-edit = An authenticated user&lt;br /&gt;
  | request-type = semi&lt;br /&gt;
  }}&lt;br /&gt;
}}&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>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Vorlage:Protected_page_text/full&amp;diff=1112</id>
		<title>Vorlage:Protected page text/full</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Vorlage:Protected_page_text/full&amp;diff=1112"/>
		<updated>2015-08-09T08:57:05Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Vorlage:Protected page text/full“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#switch:{{{language|en}}}&lt;br /&gt;
|de={{protected page text&lt;br /&gt;
  | protection-message = Diese Seite ist geschützt und kann nur von Administratoren bearbeitet werden.&lt;br /&gt;
  | suggestions = {{#ifexist: {{FULLPAGENAME}} | yes}}&lt;br /&gt;
  | protection-reason = Die meinsten Vorlagen und häufig besuchten Seiten unterliegen einem permanenten Seitenschutz.&amp;lt;!-- Die meisten Seiten können von Mitgliedern der Universität bearbeitet werden.--&amp;gt;&lt;br /&gt;
  | main-page-links = yes&lt;br /&gt;
  | template-links = yes&lt;br /&gt;
  | who-can-edit = Administratoren&lt;br /&gt;
  | request-type = full&lt;br /&gt;
  | language = de&lt;br /&gt;
  }}&lt;br /&gt;
|en&lt;br /&gt;
|#default={{protected page text&lt;br /&gt;
  | protection-message = This page is currently [[wpen:Wikipedia:Protection policy#Full protection|protected]] and can be edited only by [[wpen:Wikipedia:Administrators|administrators]].&lt;br /&gt;
  | suggestions = {{#ifexist: {{FULLPAGENAME}} | yes}}&lt;br /&gt;
  | protection-reason = Most [[wpen:Help:Template|templates]] and site interface pages are permanently [[wpen:Wikipedia:Protection policy#Full protection|protected]] due to visibility, as are all so called structure articles. Occasionally, articles are temporarily protected.&amp;lt;!-- Most articles can be edited by members of the university.--&amp;gt;&lt;br /&gt;
  | main-page-links = yes&lt;br /&gt;
  | template-links = yes&lt;br /&gt;
  | who-can-edit = An [[wpen:Wikipedia:Administrators|administrator]]&lt;br /&gt;
  | request-type = full&lt;br /&gt;
  }}&lt;br /&gt;
}}&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>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Vorlage:Protected_page_text&amp;diff=1111</id>
		<title>Vorlage:Protected page text</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Vorlage:Protected_page_text&amp;diff=1111"/>
		<updated>2015-08-09T08:57:04Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Vorlage:Protected page text“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{fmbox&lt;br /&gt;
 | id    = mw-protectedpagetext&lt;br /&gt;
 | type  = system&lt;br /&gt;
 | image = none&lt;br /&gt;
 | style = border-style:none;&lt;br /&gt;
 | text  = &lt;br /&gt;
   {{mbox&lt;br /&gt;
    | type = protection&lt;br /&gt;
    | textstyle = font-weight:bold; font-size:130%;&lt;br /&gt;
    | image = [[File:{{{image|Padlock.png}}}|40x40px|link=|alt=]]&lt;br /&gt;
    | text = {{{protection-message}}}&lt;br /&gt;
   }}{{#if: {{{suggestions|}}}&lt;br /&gt;
    |&lt;br /&gt;
&amp;lt;table style=&amp;quot;margin-top:1em; background:none;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width:50%; vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:80%; vertical-align:top; background:transparent;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position:relative; height:25px; left:1.3em; top:4px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;border-bottom:0; font-size:130%; font-weight:bold; padding:.15em;&amp;quot;&amp;gt;{{#switch:{{{language|en}}}&lt;br /&gt;
|de=Warum ist diese Seite geschützt?&lt;br /&gt;
|en&lt;br /&gt;
|#default=Why is the page protected?}}&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;{{{protection-reason}}}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;{{{log-text|{{#switch:{{{language|en}}}&lt;br /&gt;
|de=Der Grund für den Seitenschutz kann im [{{fullurl:Special:Log|type=protect&amp;amp;page={{FULLPAGENAMEE}}}} Seitenschutz-Logbuch] eingesehen werden. Falls dort kein entsprechender Eintrag zu finden ist, dürfte die Seite verschoben worden sein, nachdem sie geschützt worden ist.&lt;br /&gt;
|en&lt;br /&gt;
|#default=The reason for protection can be found in the [{{fullurl:Special:Log|type=protect&amp;amp;page={{FULLPAGENAMEE}}}} protection log]. If there are no relevant entries in the protection log, the page may have been moved after being protected.}}}}}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width:50%; vertical-align:top;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position:relative; height:25px; left:1.3em; top:4px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;border-bottom:0; font-size:130%; font-weight:bold; padding:.15em;&amp;quot;&amp;gt;{{#switch:{{{language|en}}}&lt;br /&gt;
|de=Was können Sie tun?&lt;br /&gt;
|en&lt;br /&gt;
|#default=What can I do?}}&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
{{#if: {{{login-message|}}}&lt;br /&gt;
 | &amp;lt;li&amp;gt; {{#switch:{{{language|en}}}&lt;br /&gt;
|de=Falls Sie einen Account besitzen, [[Special:UserLogin|melden Sie sich an]]. Falls Sie noch keinen Account haben, können Sie sich einen [{{fullurl:Special:UserLogin|type=signup&amp;amp;campaign=semiprotectednotice}} erstellen].&lt;br /&gt;
|en&lt;br /&gt;
|#default=If you have a user account, [[Special:UserLogin|log in]] first. If you do not yet have an account, you may [{{fullurl:Special:UserLogin|type=signup&amp;amp;campaign=semiprotectednotice}} create one]; after [[Wikipedia:User access levels#Autoconfirmed users|4 days and 10 edits]], you will be able to edit semi-protected pages.}}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#ifeq: {{#if:{{{main-page-links|}}}|{{FULLPAGENAME}}}} | {{MediaWiki:mainpage}}&lt;br /&gt;
 | {{#switch:{{{language|en}}}&lt;br /&gt;
|de=&amp;lt;li&amp;gt;Erstellen Sie sich einen Account, falls Sie noch keinen haben.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Besuchen Sie die Seite [[Sandbox]] und bearbeiteten Sie sie testweise&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Besuchen Sie die Hilfeseiten dieses Wikis&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Beachrichtigen Sie uns über Fehler auf der Startseite&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
|en&lt;br /&gt;
|#default=&amp;lt;li&amp;gt;Register for an account if you don&#039;t already have one&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Visit the [[Sandbox]] to make test edits&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Check out the Tutorials to learn more about editing&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Report errors on the Main Page&lt;br /&gt;
&amp;lt;/li&amp;gt;}}&lt;br /&gt;
 | {{#ifeq: {{#if:{{{template-links|}}}|{{NAMESPACE}}}} | {{ns:Template}}&lt;br /&gt;
    | {{#switch:{{#ifexist: {{FULLPAGENAME}}/doc |doc}}{{#ifexist: {{FULLPAGENAME}}/sandbox|sandbox}}&lt;br /&gt;
       | doc = {{#switch:{{{language|en}}}&lt;br /&gt;
|de=&amp;lt;li&amp;gt;Diese Vorlage besitzt eine Dokumentationsseite ([[{{FULLPAGENAME}}/doc]]) die frei bearbeitet werden kann.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
|en&lt;br /&gt;
|#default=&amp;lt;li&amp;gt; This template has a documentation page – [[{{FULLPAGENAME}}/doc]] – which may be freely edited.&lt;br /&gt;
&amp;lt;/li&amp;gt;}}&lt;br /&gt;
       | sandbox = {{#switch:{{{language|en}}}&lt;br /&gt;
|de=&amp;lt;li&amp;gt;Diese Vorlage besitzt eine Sandkastenseite ({{FULLPAGENAME}}/sandbox) die frei bearbeitet werden kann.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
|en&lt;br /&gt;
|#default=&amp;lt;li&amp;gt; This template has a sandbox page – [[{{FULLPAGENAME}}/sandbox]] – which may be freely edited.&lt;br /&gt;
&amp;lt;/li&amp;gt;}}&lt;br /&gt;
       | docsandbox = {{#switch:{{{language|en}}}&lt;br /&gt;
|de=&amp;lt;li&amp;gt;Diese Vorlage besitzt eine Dokumentationsseite ([[{{FULLPAGENAME}}/doc]]) und eine Sandkastenseite ({{FULLPAGENAME}}/sandbox) die beide frei bearbeitet werden können.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
|en&lt;br /&gt;
|#default=&amp;lt;li&amp;gt; This template has a documentation page – [[{{FULLPAGENAME}}/doc]] – and a sandbox page – [[{{FULLPAGENAME}}/sandbox]] – both may be freely edited.&lt;br /&gt;
&amp;lt;/li&amp;gt;}}&lt;br /&gt;
      }}&lt;br /&gt;
   }}{{#ifexist: {{FULLPAGENAME}}&lt;br /&gt;
    | {{#ifeq: {{NAMESPACE}} | {{TALKSPACE}}&lt;br /&gt;
       |&lt;br /&gt;
       | {{#if: {{TALKPAGENAME}}&lt;br /&gt;
          | {{#switch:{{{language|en}}}&lt;br /&gt;
|de=&amp;lt;li&amp;gt; [[{{TALKPAGENAME}}|Diskutieren]] Sie mit anderen Nutzern über diese Seite&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
|en&lt;br /&gt;
|#default=&amp;lt;li&amp;gt; [[{{TALKPAGENAME}}|Discuss this page]] with others.&lt;br /&gt;
&amp;lt;/li&amp;gt;}}&lt;br /&gt;
         }}&lt;br /&gt;
{{#switch:{{{language|en}}}&lt;br /&gt;
|de=&amp;lt;li&amp;gt; Für Seiten, die einem Verschiebeschutz unterliegen, kontaktieren Sie bitte einen Administrator.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
|en&lt;br /&gt;
|#default=&amp;lt;li&amp;gt; For move-protected pages, please request a move.&lt;br /&gt;
&amp;lt;/li&amp;gt;}}&lt;br /&gt;
      }}&lt;br /&gt;
   }}&lt;br /&gt;
{{#switch:{{{language|en}}}&lt;br /&gt;
|de=&amp;lt;li&amp;gt; Erbitten Sie Aufhebung des Seitenschutzes.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Besuchen Sie die Hilfeseiten und erfahren Sie mehr über das Arbeiten in diesem Wiki.&amp;lt;!----***************************************ADD SOME SITE SPECIFIC LINKS TO HELP AND MANUAL PAGES HERE!********************--&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
|en&lt;br /&gt;
|#default=&amp;lt;li&amp;gt; Request unprotection of the page.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Find out more about how to get started editing this wiki.&amp;lt;!----***************************************ADD SOME SITE SPECIFIC LINKS TO HELP AND MANUAL PAGES HERE!********************--&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;}}&lt;br /&gt;
{{#if: {{TALKPAGENAME}}&lt;br /&gt;
 | &lt;br /&gt;
{{#switch:{{{language|en}}}&lt;br /&gt;
|de=&amp;lt;li&amp;gt;Falls Sie einen Fehler gefunden haben oder einen einen Änderungsvorschlag übermitteln wollen, klicken Sie bitte auf den Knopf weiter unten und folgen Sie den Anweisungen. {{{who-can-edit}}} können dann die Änderungen für Sie vornehmen. Bitte besuchen Sie zuvor [[{{TALKPAGENAMEE}}|die Diskussionsseite]] um zu überprüfen, ob das entsprechende Thema schon besprochen wird.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
|en&lt;br /&gt;
|#default=&amp;lt;li&amp;gt;If you have noticed an error or have a suggestion for a simple change, you can submit an edit request, by clicking the button below and following instructions. {{{who-can-edit}}} may then make the change on your behalf. Please check [[{{TALKPAGENAMEE}}|the talk page]] first in case the issue is already being discussed.&lt;br /&gt;
&amp;lt;/li&amp;gt;}}&lt;br /&gt;
&amp;lt;li style=&amp;quot;list-style:none; display:inline;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; margin:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{{Submit an edit request|type={{{request-type}}}|language={{{language|en}}}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
}}&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>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Vorlage:Pp-protected&amp;diff=1110</id>
		<title>Vorlage:Pp-protected</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Vorlage:Pp-protected&amp;diff=1110"/>
		<updated>2015-08-09T08:57:03Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Vorlage:Pp-protected“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:Pp]]&lt;br /&gt;
[[Category:Protection templates]]&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Vorlage:Edit_template-protected/editintro&amp;diff=1109</id>
		<title>Vorlage:Edit template-protected/editintro</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Vorlage:Edit_template-protected/editintro&amp;diff=1109"/>
		<updated>2015-08-09T08:57:01Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Vorlage:Edit template-protected/editintro“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Fmbox&lt;br /&gt;
| type  = editnotice&lt;br /&gt;
| style = background: #f8eaba;&lt;br /&gt;
| image = [[File:Padlock-pink.png|45px]]&lt;br /&gt;
| text  = &amp;lt;div style=&amp;quot;text-align: center; font-size: 140%;&amp;quot;&amp;gt;&#039;&#039;&#039;How to make an edit request:&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
* If this is your first time making an edit request, please read &#039;&#039;&#039;[[Wikipedia:Edit requests]]&#039;&#039;&#039;.&lt;br /&gt;
* Be specific. Say exactly what you would like to be changed, and if applicable, add your suggested template code to the {{#ifexist: {{SUBJECTPAGENAME}}/sandbox | [[{{SUBJECTPAGENAME}}/sandbox|sandbox]] | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{fullurl: {{SUBJECTPAGENAME}}/sandbox | action=edit&amp;amp;preload=Template:Documentation/preload-sandbox }} sandbox]&amp;lt;/span&amp;gt; }} and create some [[WP:TESTCASES|test cases]].&lt;br /&gt;
* Give your reasons. Requests without reasons will probably be declined.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{pp-template|small=yes}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Vorlage:Edit_semi-protected/editintro&amp;diff=1108</id>
		<title>Vorlage:Edit semi-protected/editintro</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Vorlage:Edit_semi-protected/editintro&amp;diff=1108"/>
		<updated>2015-08-09T08:57:00Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Vorlage:Edit semi-protected/editintro“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quote box&lt;br /&gt;
|width     = 35%&lt;br /&gt;
|border    = 1px&lt;br /&gt;
|align     = right&lt;br /&gt;
|bgcolor   = &lt;br /&gt;
|fontsize  = 1em&lt;br /&gt;
|title_bg  = #dddddd&lt;br /&gt;
|title_fnt = &lt;br /&gt;
|title     = About edit requests&lt;br /&gt;
|qalign    = left&lt;br /&gt;
|quote     = [[File:mbox_notice.png|50px|right|alt=|link=]]&lt;br /&gt;
&#039;&#039;&#039;What an edit request IS NOT for:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:X mark.png|15px]] making test edits: use the [[WP:SANDBOX|sandbox]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:X mark.png|15px]] asking for help: go to the [[WP:HELPDESK|Help Desk]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:X mark.png|15px]] making a comment or starting a discussion: go to the [[{{TALKPAGENAME}}|talk page]]&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:X mark.png|15px]] requesting unprotection: go to [[WP:RFPP|RFPP]] &amp;lt;small&amp;gt;(unprotection requests should take into account the original protection reason - see the [{{fullurl:Special:Log|type=protect&amp;amp;page={{SUBJECTPAGENAMEE}}}} protection log])&amp;lt;/small&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;What an edit request IS for:&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:Yes check.png|15px]] requesting straight-forward changes like grammar, spelling, formatting&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Image:Yes check.png|15px]] requesting more substantive changes, if they are justified with reference to [[WP:RS|reliable sources]], and not the subject of ongoing discussion&lt;br /&gt;
&lt;br /&gt;
|salign    = &lt;br /&gt;
|source    = &lt;br /&gt;
}}&lt;br /&gt;
{{tmbox&lt;br /&gt;
| type      = content&lt;br /&gt;
| image     = &lt;br /&gt;
| style     = width: 50%; &lt;br /&gt;
| textstyle = &lt;br /&gt;
| text      = &lt;br /&gt;
[[File:Padlock-silver.png|right|25px]]&amp;lt;center&amp;gt;&#039;&#039;&#039;[[{{SUBJECTPAGENAME}}]] is currently [[WP:SEMI|semi-protected]] and can be edited only by established [[Wikipedia:Why create an account?|registered users]].&#039;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Follow the instructions below to submit an edit request&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt; - a request to have someone edit the article for you. Please be clear and precise in explaining and justifying the change. An [[Wikipedia:User access levels#Autoconfirmed users|established user]] may then make the change on your behalf.&lt;br /&gt;
# &#039;&#039;&#039;Please leave the existing codes intact.&#039;&#039;&#039; Write your request below the &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;!-- Begin request --&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; line and above the &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;!-- End request --&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; line.&lt;br /&gt;
# &#039;&#039;&#039;Please provide a &#039;&#039;specific&#039;&#039; description of the edit request&#039;&#039;&#039;, that is, specific text that should be removed and a verbatim copy of the text that should replace it. &amp;quot;Please change X&amp;quot; is not helpful and will often be rejected; the request should be of the form &amp;quot;please change X to Y because...&amp;quot;.&lt;br /&gt;
# &#039;&#039;&#039;Please don&#039;t copy the entire article into the request.&#039;&#039;&#039; Only copy the part you&#039;re changing. If you copy the entire article into the request, you&#039;ll break navigation on the talk page, and another editor may remove your entire request.&lt;br /&gt;
# &#039;&#039;&#039;Please &amp;lt;u&amp;gt;provide reliable sources&amp;lt;/u&amp;gt; if appropriate.&#039;&#039;&#039; All information in Wikipedia articles should be [[WP:V|verifiable]] from [[WP:RS|reliable sources]] which are independent of the subject.&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{{fmbox&lt;br /&gt;
  | id    = &lt;br /&gt;
  | type  = system&lt;br /&gt;
  | image = none&lt;br /&gt;
  | style= width:80%;&lt;br /&gt;
  | text  = &lt;br /&gt;
&#039;&#039;If you have a user account, [[Special:UserLogin|log in]] first. If you do not yet have an account, you may [{{fullurl:Special:UserLogin|type=signup}} create one] (this is free and requires no personal information); after [[Wikipedia:User access levels#Autoconfirmed users|a while and some edits]], you will be able to edit semi-protected pages. You might also be interested in the [[Wikipedia:Tutorial]].&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/center&amp;gt;&amp;lt;noinclude&amp;gt;{{pp-template|small=yes}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Vorlage:Edit_protected/editintro&amp;diff=1107</id>
		<title>Vorlage:Edit protected/editintro</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Vorlage:Edit_protected/editintro&amp;diff=1107"/>
		<updated>2015-08-09T08:56:59Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Vorlage:Edit protected/editintro“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{fmbox&lt;br /&gt;
| type  = editnotice&lt;br /&gt;
| style = background: #f8eaba;&lt;br /&gt;
| image = [[File:Padlock.png|45px]]&lt;br /&gt;
| text  = &amp;lt;div style=&amp;quot;text-align: center; font-size: 140%;&amp;quot;&amp;gt;&#039;&#039;&#039;How to make an edit request:&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
* If you want to fix an error on the main page, contact an administrator.&lt;br /&gt;
* If this is your first time making an edit request, please read &#039;&#039;&#039;[[Wikipedia:Edit requests]]&#039;&#039;&#039;.&lt;br /&gt;
* Be specific. {{#ifeq: {{NAMESPACE}} | Template talk | If possible, add your suggested template code to the {{#ifexist: {{SUBJECTPAGENAME}}/sandbox | [[{{SUBJECTPAGENAME}}/sandbox|sandbox]] | &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{fullurl: {{SUBJECTPAGENAME}}/sandbox | action=edit&amp;amp;preload=Template:Documentation/preload-sandbox }} create]&amp;lt;/span&amp;gt; }} and create some [[WP:TESTCASES|test cases]]. | Say exactly what text you want changed, and include a copy of exactly what text should replace it. }}&lt;br /&gt;
* Give your reasons. Requests without reasons will probably be declined.&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{pp-template|small=yes}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Vorlage:Did_you_mean/box&amp;diff=1106</id>
		<title>Vorlage:Did you mean/box</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Vorlage:Did_you_mean/box&amp;diff=1106"/>
		<updated>2015-08-09T08:56:58Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Vorlage:Did you mean/box“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;pagetitlecorrection&amp;quot;&amp;gt;{{fmbox&lt;br /&gt;
 | type  = editnotice&lt;br /&gt;
 | id    = newarticletext&lt;br /&gt;
 | image = [[File:Dialog-information on.png|35px]]&lt;br /&gt;
 | textstyle = font-size: 85%;&lt;br /&gt;
 | text  = {{#switch:{{{2|en}}}&lt;br /&gt;
|de=&#039;&#039;&#039;Meinten Sie:&lt;br /&gt;
|#default=&#039;&#039;&#039;Did you mean:&lt;br /&gt;
}} [[:{{{1|Page name}}}]]?&#039;&#039;&#039;&lt;br /&gt;
}}&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;{{pp-template}}[[Category:Hatnote templates]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Vorlage:Cot&amp;diff=1105</id>
		<title>Vorlage:Cot</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Vorlage:Cot&amp;diff=1105"/>
		<updated>2015-08-09T08:56:57Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Vorlage:Cot“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:Collapse top]]&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{pp-template|small=yes}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Vorlage:Navigation_templates&amp;diff=1104</id>
		<title>Vorlage:Navigation templates</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Vorlage:Navigation_templates&amp;diff=1104"/>
		<updated>2015-08-09T08:56:55Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Vorlage:Navigation templates“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable hlist&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; width: auto; text-align: center; font-size: 90%;&amp;quot;&lt;br /&gt;
|+ &amp;lt;span style=&amp;quot;font-size: 130%;&amp;quot;&amp;gt;Navigation templates comparison&amp;lt;/span&amp;gt;&lt;br /&gt;
|- style=&amp;quot;line-height: 10pt;&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align: left; padding-left: 4px; font-size: 111%;&amp;quot; | {{Navbar|Navigation templates|plain=1}}&lt;br /&gt;
! Collapsible !! Header color&lt;br /&gt;
! Image !! Groups !! Style (body) &amp;lt;br /&amp;gt; parameter/s !! Examples&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | {{tl|Navbox}}&lt;br /&gt;
| collapsible || style=&amp;quot;background: #ccf;&amp;quot; | navbox&lt;br /&gt;
| Left/right of body || Yes || Yes ||&lt;br /&gt;
see https://en.wikipedia.org/wiki/Template:Navigation_templates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | {{tl|Navbox with collapsible groups}}&lt;br /&gt;
| collapsible || style=&amp;quot;background: #ccf;&amp;quot; | navbox&lt;br /&gt;
| Left/right of body and/or in each list || Yes || Yes ||&lt;br /&gt;
see https://en.wikipedia.org/wiki/Template:Navigation_templates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | {{tl|Navbox with columns}}&lt;br /&gt;
| collapsible || style=&amp;quot;background: #ccf;&amp;quot; | navbox&lt;br /&gt;
| Left/right of columns || No || Yes ||&lt;br /&gt;
see https://en.wikipedia.org/wiki/Template:Navigation_templates&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left: auto; margin-right: auto; width: auto; text-align: center; font-size: 90%;&amp;quot;&lt;br /&gt;
|+ &amp;lt;span style=&amp;quot;font-size: 130%;&amp;quot;&amp;gt;Collapsible attributes&amp;lt;/span&amp;gt;&lt;br /&gt;
|- style=&amp;quot;line-height: 10pt;&amp;quot;&lt;br /&gt;
! Type !! CSS classes !! JavaScript !! Collapses when !! Custom &amp;lt;br /&amp;gt; initial&amp;amp;nbsp;state !! Nesting&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; | [[wpen:Help:Collapsing|Collapsible tables]]&lt;br /&gt;
| collapsible&lt;br /&gt;
| Defined in [[MediaWiki:Common.js|Common.js]]&lt;br /&gt;
| 2 or more autocollapse on page || Yes || Yes&lt;br /&gt;
|}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Navigational boxes]]&lt;br /&gt;
[[Category:Template documentation boilerplates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Toolbar&amp;diff=1103</id>
		<title>Modul:Toolbar</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Toolbar&amp;diff=1103"/>
		<updated>2015-08-09T08:56:52Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Toolbar“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{toolbar}}.&lt;br /&gt;
&lt;br /&gt;
local mArguments -- Lazily initialise [[Module:Arguments]]&lt;br /&gt;
local mTableTools = require(&#039;Module:TableTools&#039;)&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	mArguments = require(&#039;Module:Arguments&#039;)&lt;br /&gt;
	local args = mArguments.getArgs(frame)&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 toolbarItems = p.makeToolbarItems(args)&lt;br /&gt;
	if not toolbarItems then&lt;br /&gt;
		-- Return the blank string if no arguments were specified, rather than&lt;br /&gt;
		-- returning empty brackets.&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	elseif yesno(args.span) == false then&lt;br /&gt;
		return string.format(&lt;br /&gt;
			&#039;(%s)&#039;,&lt;br /&gt;
			toolbarItems&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		return string.format(&lt;br /&gt;
			&#039;&amp;lt;span class=&amp;quot;plainlinks%s&amp;quot;%s&amp;gt;(%s)&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
			type(args.class) == &#039;string&#039; and &#039; &#039; .. args.class or &#039;&#039;,&lt;br /&gt;
			type(args.style) == &#039;string&#039; and string.format(&#039; style=&amp;quot;%s&amp;quot;&#039;, args.style) or &#039;&#039;,&lt;br /&gt;
			toolbarItems&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeToolbarItems(args)&lt;br /&gt;
	local nums = mTableTools.numKeys(args)&lt;br /&gt;
	local sep = (args.separator or &#039;pipe&#039;) .. &#039;-separator&#039;&lt;br /&gt;
	sep = mw.message.new(sep):plain()&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for i, v in ipairs(nums) do&lt;br /&gt;
		ret[#ret + 1] = args[v]&lt;br /&gt;
	end&lt;br /&gt;
	if #ret &amp;gt; 0 then&lt;br /&gt;
		return table.concat(ret, sep)&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Sidebar&amp;diff=1102</id>
		<title>Modul:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Sidebar&amp;diff=1102"/>
		<updated>2015-08-09T08:56:51Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Sidebar“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--&lt;br /&gt;
-- This module implements {{Sidebar}}&lt;br /&gt;
--&lt;br /&gt;
 &lt;br /&gt;
local p = {}&lt;br /&gt;
 &lt;br /&gt;
local getArgs&lt;br /&gt;
local HtmlBuilder = require(&#039;Module:HtmlBuilder&#039;)&lt;br /&gt;
local navbar = require(&#039;Module:Navbar&#039;)._navbar&lt;br /&gt;
 &lt;br /&gt;
local function trimAndAddAutomaticNewline(s)&lt;br /&gt;
	-- For compatibility with the original {{sidebar with collapsible lists}} &lt;br /&gt;
	-- implementation, which passed some parameters through {{#if}} to trim&lt;br /&gt;
	-- their whitespace. This also triggered the automatic newline behavior.&lt;br /&gt;
	-- ([[meta:Help:Newlines and spaces#Automatic newline]])&lt;br /&gt;
	s = mw.ustring.gsub(s, &amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;)&lt;br /&gt;
	if mw.ustring.find(s, &#039;^[#*:;]&#039;) or mw.ustring.find(s, &#039;^{|&#039;) then&lt;br /&gt;
		return &#039;\n&#039; .. s&lt;br /&gt;
	else&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function _sidebar(args)&lt;br /&gt;
	local root = HtmlBuilder.create()&lt;br /&gt;
	local child = args.child and mw.text.trim(args.child) == &#039;yes&#039;&lt;br /&gt;
	&lt;br /&gt;
	if not child then&lt;br /&gt;
		root = root&lt;br /&gt;
			.tag(&#039;table&#039;)&lt;br /&gt;
			.addClass(&#039;vertical-navbox&#039;)&lt;br /&gt;
			.addClass(args.wraplinks ~= &#039;true&#039; and &#039;nowraplinks&#039;)&lt;br /&gt;
			.addClass(args.bodyclass or args.class)&lt;br /&gt;
			.attr(&#039;cellspacing&#039;, args.cellspacing or 5)&lt;br /&gt;
			.attr(&#039;cellpadding&#039;, args.cellpadding or 0)&lt;br /&gt;
			.css(&#039;float&#039;, args.float or &#039;right&#039;)&lt;br /&gt;
			.css(&#039;clear&#039;, (args.float == &#039;none&#039; and &#039;both&#039;) or args.float or &#039;right&#039;)&lt;br /&gt;
			.css(&#039;width&#039;, args.width or &#039;22.0em&#039;)&lt;br /&gt;
			.css(&#039;margin&#039;, args.float == &#039;left&#039; and &#039;0 1.0em 1.0em 0&#039; or &#039;0 0 1.0em 1.0em&#039;)&lt;br /&gt;
			.css(&#039;background&#039;, &#039;#f9f9f9&#039;)&lt;br /&gt;
			.css(&#039;border&#039;, &#039;1px solid #aaa&#039;)&lt;br /&gt;
			.css(&#039;padding&#039;, &#039;0.2em&#039;)&lt;br /&gt;
			.css(&#039;border-spacing&#039;, &#039;0.4em 0&#039;)&lt;br /&gt;
			.css(&#039;text-align&#039;, &#039;center&#039;)&lt;br /&gt;
			.css(&#039;line-height&#039;, &#039;1.4em&#039;)&lt;br /&gt;
			.css(&#039;font-size&#039;, &#039;88%&#039;)&lt;br /&gt;
			.cssText(args.bodystyle or args.style)&lt;br /&gt;
	&lt;br /&gt;
		if args.outertitle then&lt;br /&gt;
			root&lt;br /&gt;
				.tag(&#039;caption&#039;)&lt;br /&gt;
					.addClass(args.outertitleclass)&lt;br /&gt;
					.css(&#039;padding-bottom&#039;, &#039;0.2em&#039;)&lt;br /&gt;
					.css(&#039;font-size&#039;, &#039;125%&#039;)&lt;br /&gt;
					.css(&#039;line-height&#039;, &#039;1.2em&#039;)&lt;br /&gt;
					.css(&#039;font-weight&#039;, &#039;bold&#039;)&lt;br /&gt;
					.cssText(args.outertitlestyle)&lt;br /&gt;
					.wikitext(args.outertitle)&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		if args.topimage then&lt;br /&gt;
			local imageCell = root.tag(&#039;tr&#039;).tag(&#039;td&#039;)&lt;br /&gt;
			&lt;br /&gt;
			imageCell&lt;br /&gt;
				.addClass(args.topimageclass)&lt;br /&gt;
				.css(&#039;padding&#039;, &#039;0.4em 0&#039;)&lt;br /&gt;
				.cssText(args.topimagestyle)&lt;br /&gt;
				.wikitext(args.topimage)&lt;br /&gt;
			&lt;br /&gt;
			if args.topcaption then&lt;br /&gt;
				imageCell&lt;br /&gt;
					.tag(&#039;div&#039;)&lt;br /&gt;
						.css(&#039;padding-top&#039;, &#039;0.2em&#039;)&lt;br /&gt;
						.css(&#039;line-height&#039;, &#039;1.2em&#039;)&lt;br /&gt;
						.cssText(args.topcaptionstyle)&lt;br /&gt;
						.wikitext(args.topcaption)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if args.pretitle then&lt;br /&gt;
			root&lt;br /&gt;
				.tag(&#039;tr&#039;)&lt;br /&gt;
					.tag(&#039;td&#039;)&lt;br /&gt;
						.addClass(args.pretitleclass)&lt;br /&gt;
						.cssText(args.basestyle)&lt;br /&gt;
						.css(&#039;padding-top&#039;, args.topimage and &#039;0.2em&#039; or &#039;0.4em&#039;)&lt;br /&gt;
						.css(&#039;line-height&#039;, &#039;1.2em&#039;)&lt;br /&gt;
						.cssText(args.pretitlestyle)&lt;br /&gt;
						.wikitext(args.pretitle)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.title then&lt;br /&gt;
		if child then&lt;br /&gt;
			root&lt;br /&gt;
				.wikitext(args.title)&lt;br /&gt;
				.tag(&#039;/th&#039;, {unclosed = true})&lt;br /&gt;
				.tag(&#039;/tr&#039;, {unclosed = true})&lt;br /&gt;
		else&lt;br /&gt;
			root&lt;br /&gt;
				.tag(&#039;tr&#039;)&lt;br /&gt;
					.tag(&#039;th&#039;)&lt;br /&gt;
						.addClass(args.titleclass)&lt;br /&gt;
						.cssText(args.basestyle)&lt;br /&gt;
						.css(&#039;padding&#039;, &#039;0.2em 0.4em 0.2em&#039;)&lt;br /&gt;
						.css(&#039;padding-top&#039;, args.pretitle and 0)&lt;br /&gt;
						.css(&#039;font-size&#039;, &#039;145%&#039;)&lt;br /&gt;
						.css(&#039;line-height&#039;, &#039;1.2em&#039;)&lt;br /&gt;
						.cssText(args.titlestyle)&lt;br /&gt;
						.wikitext(args.title)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.image then&lt;br /&gt;
		local imageCell = root.tag(&#039;tr&#039;).tag(&#039;td&#039;)&lt;br /&gt;
		&lt;br /&gt;
		imageCell&lt;br /&gt;
			.addClass(args.imageclass)&lt;br /&gt;
			.css(&#039;padding&#039;, &#039;0.2em 0 0.4em&#039;)&lt;br /&gt;
			.cssText(args.imagestyle)&lt;br /&gt;
			.wikitext(args.image)&lt;br /&gt;
			&lt;br /&gt;
		if args.caption then&lt;br /&gt;
			imageCell&lt;br /&gt;
				.tag(&#039;div&#039;)&lt;br /&gt;
					.css(&#039;padding-top&#039;, &#039;0.2em&#039;)&lt;br /&gt;
					.css(&#039;line-height&#039;, &#039;1.2em&#039;)&lt;br /&gt;
					.cssText(args.captionstyle)&lt;br /&gt;
					.wikitext(args.caption)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.above then&lt;br /&gt;
		root&lt;br /&gt;
			.tag(&#039;tr&#039;)&lt;br /&gt;
				.tag(&#039;td&#039;)&lt;br /&gt;
					.addClass(args.aboveclass)&lt;br /&gt;
					.css(&#039;padding&#039;, &#039;0.3em 0.4em 0.3em&#039;)&lt;br /&gt;
					.css(&#039;font-weight&#039;, &#039;bold&#039;)&lt;br /&gt;
					.cssText(args.abovestyle)&lt;br /&gt;
					.newline()	  -- newline required for bullet-points to work&lt;br /&gt;
					.wikitext(args.above)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local rowNums = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		k = &#039;&#039; .. k&lt;br /&gt;
		local num = k:match(&#039;^heading(%d+)$&#039;) or k:match(&#039;^content(%d+)$&#039;)&lt;br /&gt;
		if num then table.insert(rowNums, tonumber(num)) end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(rowNums)&lt;br /&gt;
	-- remove duplicates from the list (e.g. 3 will be duplicated if both heading3 and content3 are specified)&lt;br /&gt;
	for i = #rowNums, 1, -1 do&lt;br /&gt;
		if rowNums[i] == rowNums[i - 1] then&lt;br /&gt;
			table.remove(rowNums, i)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for i, num in ipairs(rowNums) do&lt;br /&gt;
		local heading = args[&#039;heading&#039; .. num]&lt;br /&gt;
		if heading then&lt;br /&gt;
			root&lt;br /&gt;
				.tag(&#039;tr&#039;)&lt;br /&gt;
					.tag(&#039;th&#039;)&lt;br /&gt;
						.addClass(args.headingclass)&lt;br /&gt;
						.css(&#039;padding&#039;, &#039;0.1em&#039;)&lt;br /&gt;
						.cssText(args.basestyle)&lt;br /&gt;
						.cssText(args.headingstyle)&lt;br /&gt;
						.cssText(args[&#039;heading&#039; .. num .. &#039;style&#039;])&lt;br /&gt;
						.newline()&lt;br /&gt;
						.wikitext(heading)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local content = args[&#039;content&#039; .. num]&lt;br /&gt;
		if content then&lt;br /&gt;
			root&lt;br /&gt;
				.tag(&#039;tr&#039;)&lt;br /&gt;
					.tag(&#039;td&#039;)&lt;br /&gt;
						.addClass(args.contentclass)&lt;br /&gt;
						.css(&#039;padding&#039;, &#039;0 0.1em 0.4em&#039;)&lt;br /&gt;
						.cssText(args.contentstyle)&lt;br /&gt;
						.cssText(args[&#039;content&#039; .. num .. &#039;style&#039;])&lt;br /&gt;
						.newline()&lt;br /&gt;
						.wikitext(content)&lt;br /&gt;
						.done()&lt;br /&gt;
					.newline()  -- Without a linebreak after the &amp;lt;/td&amp;gt;, a nested list like &amp;quot;* {{hlist| ...}}&amp;quot; doesn&#039;t parse correctly.&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.below then&lt;br /&gt;
		root&lt;br /&gt;
			.tag(&#039;tr&#039;)&lt;br /&gt;
				.tag(&#039;td&#039;)&lt;br /&gt;
					.addClass(args.belowclass)&lt;br /&gt;
					.css(&#039;padding&#039;, &#039;0.3em 0.4em 0.3em&#039;)&lt;br /&gt;
					.css(&#039;font-weight&#039;, &#039;bold&#039;)&lt;br /&gt;
					.cssText(args.belowstyle)&lt;br /&gt;
					.newline()&lt;br /&gt;
					.wikitext(args.below)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not child then&lt;br /&gt;
		local navbarArg = args.navbar or args.tnavbar&lt;br /&gt;
		if navbarArg ~= &#039;none&#039; and navbarArg ~= &#039;off&#039; then&lt;br /&gt;
			root&lt;br /&gt;
				.tag(&#039;tr&#039;)&lt;br /&gt;
					.tag(&#039;td&#039;)&lt;br /&gt;
						.css(&#039;text-align&#039;, &#039;right&#039;)&lt;br /&gt;
						.css(&#039;font-size&#039;, &#039;115%&#039;)&lt;br /&gt;
						.cssText(args.navbarstyle or args.tnavbarstyle)&lt;br /&gt;
						.wikitext(navbar{&lt;br /&gt;
							args.name,&lt;br /&gt;
							mini = 1,&lt;br /&gt;
							fontstyle = args.navbarfontstyle or args.tnavbarfontstyle&lt;br /&gt;
						})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function _collapsibleSidebar(args)&lt;br /&gt;
	args.abovestyle = &#039;border-top: 1px solid #aaa; border-bottom: 1px solid #aaa;&#039; .. (args.abovestyle or &#039;&#039;)&lt;br /&gt;
	args.belowstyle = &#039;border-top: 1px solid #aaa; border-bottom: 1px solid #aaa;&#039; .. (args.belowstyle or &#039;&#039;)&lt;br /&gt;
	args.navbarstyle = &#039;padding-top: 0.6em;&#039; .. (args.navbarstyle or args.tnavbarstyle or &#039;&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local contentArgs = {}&lt;br /&gt;
	&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local num = (&#039;&#039; .. k):match(&#039;^list(%d+)$&#039;)&lt;br /&gt;
		if num then &lt;br /&gt;
			local expand = args.expanded and (args.expanded == &#039;all&#039; or args.expanded == args[&#039;list&#039; .. num .. &#039;name&#039;])&lt;br /&gt;
			&lt;br /&gt;
			local row = HtmlBuilder.create(&#039;div&#039;)&lt;br /&gt;
			row&lt;br /&gt;
				.addClass(&#039;NavFrame&#039;)&lt;br /&gt;
				.addClass((not expand) and &#039;collapsed&#039;)&lt;br /&gt;
				.css(&#039;border&#039;, &#039;none&#039;)&lt;br /&gt;
				.css(&#039;padding&#039;, 0)&lt;br /&gt;
				.cssText(args.listframestyle)&lt;br /&gt;
				.cssText(args[&#039;list&#039; .. num .. &#039;framestyle&#039;])&lt;br /&gt;
				.tag(&#039;div&#039;)&lt;br /&gt;
					.addClass(&#039;NavHead&#039;)&lt;br /&gt;
					.addClass(args.listtitleclass)&lt;br /&gt;
					.css(&#039;font-size&#039;, &#039;105%&#039;)&lt;br /&gt;
					.css(&#039;background&#039;, &#039;transparent&#039;)&lt;br /&gt;
					.css(&#039;text-align&#039;, &#039;left&#039;)&lt;br /&gt;
					.cssText(args.basestyle)&lt;br /&gt;
					.cssText(args.listtitlestyle)&lt;br /&gt;
					.cssText(args[&#039;list&#039; .. num .. &#039;titlestyle&#039;])&lt;br /&gt;
					.wikitext(trimAndAddAutomaticNewline(args[&#039;list&#039; .. num .. &#039;title&#039;] or &#039;List&#039;))&lt;br /&gt;
					.done()&lt;br /&gt;
				.tag(&#039;div&#039;)&lt;br /&gt;
					.addClass(&#039;NavContent&#039;)&lt;br /&gt;
					.addClass(args.listclass)&lt;br /&gt;
					.addClass(args[&#039;list&#039; .. num .. &#039;class&#039;])&lt;br /&gt;
					.css(&#039;font-size&#039;, &#039;105%&#039;)&lt;br /&gt;
					.css(&#039;padding&#039;, &#039;0.2em 0 0.4em&#039;)&lt;br /&gt;
					.css(&#039;text-align&#039;, &#039;center&#039;)&lt;br /&gt;
					.cssText(args.liststyle)&lt;br /&gt;
					.cssText(args[&#039;list&#039; .. num .. &#039;style&#039;])&lt;br /&gt;
					.wikitext(trimAndAddAutomaticNewline(args[&#039;list&#039; .. num]))&lt;br /&gt;
					&lt;br /&gt;
			contentArgs[&#039;content&#039; .. num] = tostring(row)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs(contentArgs) do&lt;br /&gt;
		args[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return _sidebar(args)&lt;br /&gt;
end&lt;br /&gt;
					  &lt;br /&gt;
function makeWrapper(func)&lt;br /&gt;
	return function(frame)&lt;br /&gt;
		if not getArgs then&lt;br /&gt;
			getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
		end&lt;br /&gt;
		return func(getArgs(frame))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	sidebar = makeWrapper(_sidebar),&lt;br /&gt;
	collapsible = makeWrapper(_collapsibleSidebar)&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Protection_banner/config&amp;diff=1101</id>
		<title>Modul:Protection banner/config</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Protection_banner/config&amp;diff=1101"/>
		<updated>2015-08-09T08:56:49Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Protection banner/config“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&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;
-- ${EXPIRY} - the protection expiry date in the format DD Month YYYY. If&lt;br /&gt;
-- protection is indefinite or is not set, this is the blank string.&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 == &#039;autoconfirmed&#039; then&lt;br /&gt;
--         return &#039;foo&#039;&lt;br /&gt;
--     else&lt;br /&gt;
--         return &#039;bar&#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 = &#039;${INTROBLURB}&#039;,&lt;br /&gt;
	explanation = &#039;${EXPLANATIONBLURB}&#039;,&lt;br /&gt;
	tooltip = &#039;${TOOLTIPBLURB}&#039;,&lt;br /&gt;
	link = &#039;${IMAGELINK}&#039;,&lt;br /&gt;
	alt = &#039;Page ${PROTECTIONLEVEL}&#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, and autoreview subtables.&lt;br /&gt;
defaultBanners = {&lt;br /&gt;
	edit = {},&lt;br /&gt;
	move = {},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		autoconfirmed = {&lt;br /&gt;
			alt = &#039;Page protected with pending changes level 1&#039;,&lt;br /&gt;
			tooltip = &#039;All edits by unregistered and new users are subject to review&#039;,&lt;br /&gt;
			image = &#039;Padlock-silver-light.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		default = {&lt;br /&gt;
			alt = &#039;Page protected with pending changes level 2&#039;,&lt;br /&gt;
			tooltip = &#039;All edits by users who are not reviewers or administrators are&#039;&lt;br /&gt;
				.. &#039; subject to review&#039;,&lt;br /&gt;
		}&lt;br /&gt;
	}&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, and autoreview subtables.&lt;br /&gt;
banners = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		blp = {&lt;br /&gt;
			description = &#039;For pages protected to promote compliance with the&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Biographies of living persons&#039;&lt;br /&gt;
				.. &#039;|biographies of living persons]] policy.&#039;,&lt;br /&gt;
			text = &#039;${INTROFRAGMENT} to promote compliance with&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Biographies of living persons&#039;&lt;br /&gt;
				.. &amp;quot;|Wikipedia&#039;s&amp;amp;nbsp;policy on&amp;amp;nbsp;the&amp;amp;nbsp;biographies&amp;quot;&lt;br /&gt;
				.. &#039; of&amp;amp;nbsp;living&amp;amp;nbsp;people]].&#039;,&lt;br /&gt;
			tooltip = &#039;${TOOLTIPFRAGMENT} to promote compliance with the policy on&#039;&lt;br /&gt;
				.. &#039; biographies of living people&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		dmca = {&lt;br /&gt;
			description = &#039;For pages protected by the Wikimedia Foundation&#039;&lt;br /&gt;
				.. &#039; due to Digital Millennium Copyright Act takedown requests.&#039;,&lt;br /&gt;
			explanation = function (protectionObj, args)&lt;br /&gt;
				local ret = &#039;Pursuant to a rights owner notice under the Digital&#039;&lt;br /&gt;
					.. &#039; Millennium Copyright Act (DMCA) regarding some content&#039;&lt;br /&gt;
					.. &#039; in this article, the Wikimedia Foundation acted under&#039;&lt;br /&gt;
					.. &#039; applicable law and took down and restricted the content&#039;&lt;br /&gt;
					.. &#039; in question.&#039;&lt;br /&gt;
				if args.notice then&lt;br /&gt;
					ret = ret .. &#039; A copy of the received notice can be found here: &#039;&lt;br /&gt;
						.. args.notice .. &#039;.&#039;&lt;br /&gt;
				end&lt;br /&gt;
				ret = ret .. &#039; For more information, including websites discussing&#039;&lt;br /&gt;
					.. &#039; how to file a counter-notice, please see&#039;&lt;br /&gt;
					.. &amp;quot; [[Wikipedia:Office actions]] and the article&#039;s ${TALKPAGE}.&amp;quot;&lt;br /&gt;
					.. &amp;quot;&#039;&#039;&#039;Do not remove this template from the article until the&amp;quot;&lt;br /&gt;
					.. &amp;quot; restrictions are withdrawn&#039;&#039;&#039;.&amp;quot;&lt;br /&gt;
				return ret&lt;br /&gt;
			end,&lt;br /&gt;
			image = &#039;Padlock-black.png&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		dispute = {&lt;br /&gt;
			description = &#039;For pages protected due to editing disputes.&#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 = &#039;disputes&#039;&lt;br /&gt;
				local disputes&lt;br /&gt;
				if args.section then&lt;br /&gt;
					disputes = string.format(&lt;br /&gt;
						&#039;[[%s:%s#%s|%s]]&#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) == &#039;number&#039; then&lt;br /&gt;
					msg = &#039;${INTROFRAGMENT} or until editing %s have been resolved.&#039;&lt;br /&gt;
				else&lt;br /&gt;
					msg = &#039;${INTROFRAGMENT} until editing %s have been resolved.&#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 &#039;&#039;&#039;not&#039;&#039;&#039; an endorsement of the&amp;quot;&lt;br /&gt;
				.. &#039; ${CURRENTVERSION}. ${EXPLANATIONBLURB}&#039;,&lt;br /&gt;
			tooltip = &#039;${TOOLTIPFRAGMENT} due to editing disputes&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		mainpage = {&lt;br /&gt;
			description = &#039;For pages protected for being displayed on the [[Main Page]].&#039;,&lt;br /&gt;
			text = &#039;This file is currently&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:This page is protected|protected]] from&#039;&lt;br /&gt;
				.. &#039; editing because it is currently or will soon be displayed&#039;&lt;br /&gt;
				.. &#039; on the [[Main Page]].&#039;,&lt;br /&gt;
			explanation = &#039;Images on the Main Page are protected due to their high&#039;&lt;br /&gt;
				.. &#039; visibility. Please discuss any necessary changes on the ${TALKPAGE}.&#039;&lt;br /&gt;
				.. &#039;&amp;lt;br /&amp;gt;&amp;lt;span style=&amp;quot;font-size:90%;&amp;quot;&amp;gt;&#039;&lt;br /&gt;
				.. &amp;quot;&#039;&#039;&#039;Administrators:&#039;&#039;&#039; Once this image is definitely off the Main Page,&amp;quot;&lt;br /&gt;
				.. &#039; please unprotect this file, or reduce to semi-protection,&#039;&lt;br /&gt;
				.. &#039; as appropriate.&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		office = {&lt;br /&gt;
			description = &#039;For pages protected by the Wikimedia Foundation.&#039;,&lt;br /&gt;
			text = function (protectionObj, args)&lt;br /&gt;
				local ret = &#039;This ${PAGETYPE} is currently under the&#039;&lt;br /&gt;
					.. &#039; scrutiny of the&#039;&lt;br /&gt;
					.. &#039; [[Wikipedia:Office actions|Wikimedia Foundation Office]]&#039;&lt;br /&gt;
					.. &#039; and is protected.&#039;&lt;br /&gt;
				if protectionObj.protectionDate then&lt;br /&gt;
					ret = ret .. &#039; It has been protected since ${PROTECTIONDATE}.&#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. &#039;&#039;&#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.&#039;&#039;&#039;&amp;quot;,&lt;br /&gt;
			image = &#039;Padlock-black.png&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		reset = {&lt;br /&gt;
			description = &#039;For pages protected by the Wikimedia Foundation and&#039;&lt;br /&gt;
				.. &#039; &amp;quot;reset&amp;quot; to a bare-bones version.&#039;,&lt;br /&gt;
 			text = &#039;This ${PAGETYPE} is currently under the&#039;&lt;br /&gt;
					.. &#039; scrutiny of the&#039;&lt;br /&gt;
					.. &#039; [[Wikipedia:Office actions|Wikimedia Foundation Office]]&#039;&lt;br /&gt;
					.. &#039; and is protected.&#039;,&lt;br /&gt;
			explanation = function (protectionObj, args)&lt;br /&gt;
				local ret = &#039;&#039;&lt;br /&gt;
				if protectionObj.protectionDate then&lt;br /&gt;
					ret = ret .. &#039;On ${PROTECTIONDATE} this ${PAGETYPE} was&#039;&lt;br /&gt;
				else&lt;br /&gt;
					ret = ret .. &#039;This ${PAGETYPE} has been&#039;&lt;br /&gt;
				end&lt;br /&gt;
				ret = ret .. &#039; reduced to a&#039;&lt;br /&gt;
				.. &#039; simplified, &amp;quot;bare bones&amp;quot; version so that it may be completely&#039;&lt;br /&gt;
				.. &#039; rewritten to ensure it meets the policies of&#039;&lt;br /&gt;
				.. &#039; [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].&#039;&lt;br /&gt;
				.. &#039; Standard Wikipedia policies will apply to its rewriting—which&#039;&lt;br /&gt;
				.. &#039; will eventually be open to all editors—and will be strictly&#039;&lt;br /&gt;
				.. &#039; enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while&#039;&lt;br /&gt;
				.. &#039; it is being rebuilt.\n\n&#039;&lt;br /&gt;
				.. &#039;Any insertion of material directly from&#039;&lt;br /&gt;
				.. &#039; pre-protection revisions of the ${PAGETYPE} will be removed, as&#039;&lt;br /&gt;
				.. &#039; will any material added to the ${PAGETYPE} that is not properly&#039;&lt;br /&gt;
				.. &#039; sourced. The associated talk page(s) were also cleared on the&#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. &#039;&#039;&#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.&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
				return ret&lt;br /&gt;
			end,&lt;br /&gt;
			image = &#039;Padlock-black.png&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		sock = {&lt;br /&gt;
			description = &#039;For pages protected due to&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Sock puppetry|sock puppetry]].&#039;,&lt;br /&gt;
			text = &#039;${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Blocking policy|blocked]] or&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:List of banned users|banned users]]&#039;&lt;br /&gt;
				.. &#039; from editing it.&#039;,&lt;br /&gt;
			tooltip = &#039;${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from&#039;&lt;br /&gt;
				.. &#039; editing it&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		template = {&lt;br /&gt;
			description = &#039;For [[Wikipedia:High-risk templates|high-risk]]&#039;&lt;br /&gt;
				.. &#039; templates and Lua modules.&#039;,&lt;br /&gt;
			text = &#039;This is a permanently [[Help:Protection|protected]] ${PAGETYPE},&#039;&lt;br /&gt;
				.. &#039; as it is [[Wikipedia:High-risk templates|high-risk]].&#039;,&lt;br /&gt;
			explanation = &#039;Please discuss any changes on the ${TALKPAGE}; you may&#039;&lt;br /&gt;
				.. &#039; ${EDITREQUEST} to ask an&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Administrators|administrator]] or&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Template editor|template editor]] to make an edit if&#039;&lt;br /&gt;
				.. &#039; it is [[Help:Minor edit#When to mark an edit as a minor edit&#039;&lt;br /&gt;
				.. &#039;|uncontroversial]] or supported by&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Consensus|consensus]]. You can also&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requests for page protection|request]] that the page be&#039;&lt;br /&gt;
				.. &#039; unprotected.&#039;,&lt;br /&gt;
			tooltip = &#039;This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}&#039;&lt;br /&gt;
				.. &#039; to prevent vandalism&#039;,&lt;br /&gt;
			alt = &#039;Permanently protected ${PAGETYPE}&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		usertalk = {&lt;br /&gt;
			description = &#039;For pages protected against disruptive edits by a&#039;&lt;br /&gt;
				.. &#039; particular user.&#039;,&lt;br /&gt;
			text = &#039;${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,&#039;&lt;br /&gt;
				.. &#039; such as abusing the&#039;&lt;br /&gt;
				.. &#039; &amp;amp;#123;&amp;amp;#123;[[Template:unblock|unblock]]&amp;amp;#125;&amp;amp;#125; template.&#039;,&lt;br /&gt;
			explanation = &#039;If you cannot edit this user talk page and you need to&#039;&lt;br /&gt;
				.. &#039; make a change or leave a message, you can&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requests for page protection&#039;&lt;br /&gt;
				.. &#039;#Current requests for edits to a protected page&#039;&lt;br /&gt;
				.. &#039;|request an edit]],&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requests for page protection&#039;&lt;br /&gt;
				.. &#039;#Current requests for reduction in protection level&#039;&lt;br /&gt;
				.. &#039;|request unprotection]],&#039;&lt;br /&gt;
				.. &#039; [[Special:Userlogin|log in]],&#039;&lt;br /&gt;
				.. &#039; or [[Special:UserLogin/signup|create an account]].&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		vandalism = {&lt;br /&gt;
			description = &#039;For pages protected against&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Vandalism|vandalism]].&#039;,&lt;br /&gt;
			text = &#039;${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].&#039;,&lt;br /&gt;
			explanation = function (protectionObj, args)&lt;br /&gt;
				local ret = &#039;&#039;&lt;br /&gt;
				if protectionObj.level == &#039;sysop&#039; then&lt;br /&gt;
					ret = ret .. &amp;quot;This protection is &#039;&#039;&#039;not&#039;&#039;&#039; an endorsement of the&amp;quot;&lt;br /&gt;
						.. &#039; ${CURRENTVERSION}. &#039;&lt;br /&gt;
				end&lt;br /&gt;
				return ret .. &#039;${EXPLANATIONBLURB}&#039;&lt;br /&gt;
			end,&lt;br /&gt;
			tooltip = &#039;${TOOLTIPFRAGMENT} due to vandalism&#039;,&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		dispute = {&lt;br /&gt;
			description = &#039;For pages protected against page moves due to&#039;&lt;br /&gt;
				.. &#039; disputes over the page title.&#039;,&lt;br /&gt;
			explanation = &amp;quot;This protection is &#039;&#039;&#039;not&#039;&#039;&#039; an endorsement of the&amp;quot;&lt;br /&gt;
				.. &#039; ${CURRENTVERSION}. ${EXPLANATIONBLURB}&#039;,&lt;br /&gt;
			image = &#039;Padlock-olive.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		vandalism = {&lt;br /&gt;
			description = &#039;For pages protected against&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Vandalism#Page-move vandalism&#039;&lt;br /&gt;
				.. &#039; |page-move vandalism]].&#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {}&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&#039;s protection action, page&#039;s protection level&lt;br /&gt;
-- 2. page&#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, and autoreview subtables.&lt;br /&gt;
protectionBlurbs = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		default = &#039;This ${PAGETYPE} is currently [[Help:Protection|&#039;&lt;br /&gt;
			.. &#039;protected]] from editing&#039;,&lt;br /&gt;
		autoconfirmed = &#039;Editing of this ${PAGETYPE} by [[Wikipedia:User access&#039;&lt;br /&gt;
			.. &#039; levels#New users|new]] or [[Wikipedia:User access levels#Unregistered&#039;&lt;br /&gt;
			.. &#039; users|unregistered]] users is currently [[Help:Protection|disabled]]&#039;&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = &#039;This ${PAGETYPE} is currently [[Help:Protection|protected]]&#039;&lt;br /&gt;
			.. &#039; from [[Help:Moving a page|page moves]]&#039;&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		autoconfirmed = &#039;All edits made to this ${PAGETYPE} by&#039;&lt;br /&gt;
			.. &#039; [[Wikipedia:User access levels#New users|new]] or&#039;&lt;br /&gt;
			.. &#039; [[Wikipedia:User access levels#Unregistered users|unregistered]]&#039;&lt;br /&gt;
			.. &#039; users are currently&#039;&lt;br /&gt;
			.. &#039; [[Wikipedia:Pending changes|subject to review]]&#039;,&lt;br /&gt;
		default = &#039;All edits made to this ${PAGETYPE} by users who are not&#039;&lt;br /&gt;
			.. &#039; [[Wikipedia:Reviewing|reviewers]] or&#039;&lt;br /&gt;
			.. &#039; [[Wikipedia:Administrators|administrators]] are currently&#039;&lt;br /&gt;
			.. &#039; [[Wikipedia:Pending changes|subject to review]]&#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&#039;s protection action, page&#039;s protection level, page&#039;s talk key&lt;br /&gt;
-- 2. page&#039;s protection action, page&#039;s protection level, default talk key&lt;br /&gt;
-- 3. page&#039;s protection action, default protection level, page&#039;s talk key&lt;br /&gt;
-- 4. page&#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, and autoreview subtables.&lt;br /&gt;
explanationBlurbs = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		autoconfirmed = {&lt;br /&gt;
			subject = &#039;See the [[Wikipedia:Protection policy|&#039;&lt;br /&gt;
				.. &#039;protection policy]] and ${PROTECTIONLOG} for more details. If you&#039;&lt;br /&gt;
				.. &#039; cannot edit this ${PAGETYPE} and you wish to make a change, you can&#039;&lt;br /&gt;
				.. &#039; ${EDITREQUEST}, discuss changes on the ${TALKPAGE},&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requests for page protection&#039;&lt;br /&gt;
				.. &#039;#Current requests for reduction in protection level&#039;&lt;br /&gt;
				.. &#039;|request unprotection]], [[Special:Userlogin|log in]], or&#039;&lt;br /&gt;
				.. &#039; [[Special:UserLogin/signup|create an account]].&#039;,&lt;br /&gt;
			default = &#039;See the [[Wikipedia:Protection policy|&#039;&lt;br /&gt;
				.. &#039;protection policy]] and ${PROTECTIONLOG} for more details. If you&#039;&lt;br /&gt;
				.. &#039; cannot edit this ${PAGETYPE} and you wish to make a change, you can&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requests for page protection&#039;&lt;br /&gt;
				.. &#039;#Current requests for reduction in protection level&#039;&lt;br /&gt;
				.. &#039;|request unprotection]], [[Special:Userlogin|log in]], or&#039;&lt;br /&gt;
				.. &#039; [[Special:UserLogin/signup|create an account]].&#039;,&lt;br /&gt;
		},&lt;br /&gt;
		default = {&lt;br /&gt;
			subject = &#039;See the [[Wikipedia:Protection policy|&#039;&lt;br /&gt;
				.. &#039;protection policy]] and ${PROTECTIONLOG} for more details.&#039;&lt;br /&gt;
				.. &#039; Please discuss any changes on the ${TALKPAGE}; you&#039;&lt;br /&gt;
				.. &#039; may ${EDITREQUEST} to ask an&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Administrators|administrator]] to make an edit if it&#039;&lt;br /&gt;
				.. &#039; is [[Help:Minor edit#When to mark an edit as a minor edit&#039;&lt;br /&gt;
				.. &#039;|uncontroversial]] or supported by [[Wikipedia:Consensus&#039;&lt;br /&gt;
				.. &#039;|consensus]]. You may also [[Wikipedia:Requests for&#039;&lt;br /&gt;
				.. &#039; page protection#Current requests for reduction in protection level&#039;&lt;br /&gt;
				.. &#039;|request]] that this page be unprotected.&#039;,&lt;br /&gt;
			default = &#039;See the [[Wikipedia:Protection policy|&#039;&lt;br /&gt;
				.. &#039;protection policy]] and ${PROTECTIONLOG} for more details.&#039;&lt;br /&gt;
				.. &#039; You may [[Wikipedia:Requests for page&#039;&lt;br /&gt;
				.. &#039; protection#Current requests for edits to a protected page|request an&#039;&lt;br /&gt;
				.. &#039; edit]] to this page, or [[Wikipedia:Requests for&#039;&lt;br /&gt;
				.. &#039; page protection#Current requests for reduction in protection level&#039;&lt;br /&gt;
				.. &#039;|ask]] for it to be unprotected.&#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = {&lt;br /&gt;
			subject = &#039;See the [[Wikipedia:Protection policy|&#039;&lt;br /&gt;
				.. &#039;protection policy]] and ${PROTECTIONLOG} for more details.&#039;&lt;br /&gt;
				.. &#039; The page may still be edited but cannot be moved&#039;&lt;br /&gt;
				.. &#039; until unprotected. Please discuss any suggested moves on the&#039;&lt;br /&gt;
				.. &#039; ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requests for page protection|request]] that the page be&#039;&lt;br /&gt;
				.. &#039; unprotected.&#039;,&lt;br /&gt;
			default = &#039;See the [[Wikipedia:Protection policy|&#039;&lt;br /&gt;
				.. &#039;protection policy]] and ${PROTECTIONLOG} for more details.&#039;&lt;br /&gt;
				.. &#039; The page may still be edited but cannot be moved&#039;&lt;br /&gt;
				.. &#039; until unprotected. Please discuss any suggested moves at&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requested moves]]. You can also&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requests for page protection|request]] that the page be&#039;&lt;br /&gt;
				.. &#039; unprotected.&#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		default = {&lt;br /&gt;
			reviewer = &#039;See the [[Wikipedia:Protection policy|&#039;&lt;br /&gt;
				.. &#039;protection policy]] and ${PROTECTIONLOG} for more details.&#039;&lt;br /&gt;
				.. &#039; Edits to this ${PAGETYPE} will not be visible to readers&#039;&lt;br /&gt;
				.. &#039; until they are accepted by a reviewer or an administrator.&#039;&lt;br /&gt;
				.. &#039; To avoid the need for your edits to be reviewed, you may&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requests for page protection&#039;&lt;br /&gt;
				.. &#039;#Current requests for reduction in protection level&#039;&lt;br /&gt;
				.. &#039;|request unprotection]]. Experienced editors may also&#039;&lt;br /&gt;
				.. &#039; request the [[Wikipedia:Reviewing|reviewer user right]].&#039;,&lt;br /&gt;
			default = &#039;See the [[Wikipedia:Protection policy|&#039;&lt;br /&gt;
				.. &#039;protection policy]] and ${PROTECTIONLOG} for more details.&#039;&lt;br /&gt;
				.. &#039; Edits to this ${PAGETYPE} by new and unregistered users&#039;&lt;br /&gt;
				.. &#039; will not be visible to readers until they are accepted by&#039;&lt;br /&gt;
				.. &#039; a reviewer. To avoid the need for your edits to be&#039;&lt;br /&gt;
				.. &#039; reviewed, you may&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Requests for page protection&#039;&lt;br /&gt;
				.. &#039;#Current requests for reduction in protection level&#039;&lt;br /&gt;
				.. &#039;|request unprotection]], [[Special:Userlogin|log in]], or&#039;&lt;br /&gt;
				.. &#039; [[Special:UserLogin/signup|create an account]].&#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 proteciton level, and is checked in the following&lt;br /&gt;
-- order:&lt;br /&gt;
-- 1. page&#039;s protection action, page&#039;s protection level&lt;br /&gt;
-- 2. page&#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, and autoreview subtables.&lt;br /&gt;
protectionLevels = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		default = &#039;protected&#039;,&lt;br /&gt;
		templateeditor = &#039;template-protected&#039;,&lt;br /&gt;
		autoconfirmed = &#039;semi-protected&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = &#039;move-protected&#039;&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&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 [&#039;image-filename-indef&#039;] image. It is checked in the following order:&lt;br /&gt;
-- 1. page&#039;s protection action, page&#039;s protection level&lt;br /&gt;
-- 2. page&#039;s protection action, default protection level&lt;br /&gt;
images = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		default = &#039;Padlock.png&#039;,&lt;br /&gt;
		templateeditor = &#039;Padlock-pink.png&#039;,&lt;br /&gt;
		autoconfirmed = &#039;Padlock-silver.png&#039;&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = &#039;Padlock-olive.png&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		autoconfirmed = &#039;Padlock-silver-light.png&#039;,&lt;br /&gt;
		default = &#039;Padlock-orange.png&#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 &#039;image-filename-indef&#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&#039;s protection action&lt;br /&gt;
-- and protection level. It is checked in the following order:&lt;br /&gt;
-- 1. page&#039;s protection action, page&#039;s protection level&lt;br /&gt;
-- 2. page&#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, and autoreview subtables.&lt;br /&gt;
imageLinks = {&lt;br /&gt;
	edit = {&lt;br /&gt;
		default = &#039;Wikipedia:Protection policy#full&#039;,&lt;br /&gt;
		templateeditor = &#039;Wikipedia:Protection policy#template&#039;,&lt;br /&gt;
		autoconfirmed = &#039;Wikipedia:Protection policy#semi&#039;&lt;br /&gt;
	},&lt;br /&gt;
	move = {&lt;br /&gt;
		default = &#039;Wikipedia:Protection policy#move&#039;&lt;br /&gt;
	},&lt;br /&gt;
	autoreview = {&lt;br /&gt;
		autoconfirmed = &#039;Wikipedia:Protection policy#pc1&#039;,&lt;br /&gt;
		reviewer = &#039;Wikipedia:Protection policy#pc2&#039;&lt;br /&gt;
	}&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Padlock positions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table provides the data for the &amp;quot;right&amp;quot; CSS property for small padlock&lt;br /&gt;
-- icons, which determines where the icon appears on the top bar among the other&lt;br /&gt;
-- top icons. The data is stored by protection action. If no value is found for&lt;br /&gt;
-- the action, the default field is used.&lt;br /&gt;
padlockPositions = {&lt;br /&gt;
	autoreview = &#039;85px&#039;,&lt;br /&gt;
	default = &#039;55px&#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] = &#039;user&#039;,&lt;br /&gt;
	[  3] = &#039;user&#039;,&lt;br /&gt;
	[  4] = &#039;project&#039;,&lt;br /&gt;
	[  6] = &#039;file&#039;,&lt;br /&gt;
	[  8] = &#039;mediawiki&#039;,&lt;br /&gt;
	[ 10] = &#039;template&#039;,&lt;br /&gt;
	[ 12] = &#039;project&#039;,&lt;br /&gt;
	[ 14] = &#039;category&#039;,&lt;br /&gt;
	[100] = &#039;portal&#039;,&lt;br /&gt;
	[828] = &#039;module&#039;,&lt;br /&gt;
},&lt;br /&gt;
&lt;br /&gt;
protectionCategories = {&lt;br /&gt;
	[&#039;all|all|all|all|all&#039;]                  = &#039;Protected pages&#039;,&lt;br /&gt;
	[&#039;all|all|office|all|all&#039;]               = &#039;Office-protected pages&#039;,&lt;br /&gt;
	[&#039;all|all|reset|all|all&#039;]                = &#039;Office-protected pages&#039;,&lt;br /&gt;
	[&#039;all|all|dmca|all|all&#039;]                 = &#039;Office-protected pages&#039;,&lt;br /&gt;
	[&#039;all|all|mainpage|all|all&#039;]             = &#039;Protected main page images&#039;,&lt;br /&gt;
	[&#039;all|template|all|all|edit&#039;]            = &#039;Protected templates&#039;,&lt;br /&gt;
	[&#039;all|modules|all|all|edit&#039;]             = &#039;Protected modules&#039;,&lt;br /&gt;
	[&#039;all|all|all|autoconfirmed|edit&#039;]       = &#039;Semi-protected pages&#039;,&lt;br /&gt;
	[&#039;indef|all|all|autoconfirmed|edit&#039;]     = &#039;Indefinitely semi-protected pages&#039;,&lt;br /&gt;
	[&#039;all|all|blp|autoconfirmed|edit&#039;]       = &#039;Indefinitely semi-protected biographies of living people&#039;,&lt;br /&gt;
	[&#039;temp|all|blp|autoconfirmed|edit&#039;]      = &#039;Temporarily semi-protected biographies of living people&#039;,&lt;br /&gt;
	[&#039;all|all|dispute|autoconfirmed|edit&#039;]   = &#039;Pages semi-protected due to dispute&#039;,&lt;br /&gt;
	[&#039;all|all|sock|autoconfirmed|edit&#039;]      = &#039;Pages semi-protected from banned users&#039;,&lt;br /&gt;
	[&#039;all|all|vandalism|autoconfirmed|edit&#039;] = &#039;Pages semi-protected against vandalism&#039;,&lt;br /&gt;
	[&#039;all|category|all|autoconfirmed|edit&#039;]  = &#039;Semi-protected categories&#039;,&lt;br /&gt;
	[&#039;all|file|all|autoconfirmed|edit&#039;]      = &#039;Semi-protected images&#039;,&lt;br /&gt;
	[&#039;all|portal|all|autoconfirmed|edit&#039;]    = &#039;Semi-protected portals&#039;,&lt;br /&gt;
	[&#039;all|project|all|autoconfirmed|edit&#039;]   = &#039;Semi-protected project pages&#039;,&lt;br /&gt;
	[&#039;all|talk|all|autoconfirmed|edit&#039;]      = &#039;Semi-protected talk pages&#039;,&lt;br /&gt;
	[&#039;all|template|all|autoconfirmed|edit&#039;]  = &#039;Semi-protected templates&#039;,&lt;br /&gt;
	[&#039;all|module|all|autoconfirmed|edit&#039;]    = &#039;Semi-protected modules&#039;,&lt;br /&gt;
	[&#039;all|user|all|autoconfirmed|edit&#039;]      = &#039;Semi-protected user and user talk pages&#039;,&lt;br /&gt;
	[&#039;all|all|blp|sysop|edit&#039;]               = &#039;Indefinitely protected biographies of living people&#039;,&lt;br /&gt;
	[&#039;temp|all|blp|sysop|edit&#039;]              = &#039;Temporarily protected biographies of living people&#039;,&lt;br /&gt;
	[&#039;all|all|dispute|sysop|edit&#039;]           = &#039;Pages protected due to dispute&#039;,&lt;br /&gt;
	[&#039;all|all|sock|sysop|edit&#039;]              = &#039;Pages protected from banned users&#039;,&lt;br /&gt;
	[&#039;all|all|vandalism|sysop|edit&#039;]         = &#039;Pages protected against vandalism&#039;,&lt;br /&gt;
	[&#039;all|category|all|sysop|edit&#039;]          = &#039;Protected categories&#039;,&lt;br /&gt;
	[&#039;all|file|all|sysop|edit&#039;]              = &#039;Protected images&#039;,&lt;br /&gt;
	[&#039;all|project|all|sysop|edit&#039;]           = &#039;Protected project pages&#039;,&lt;br /&gt;
	[&#039;all|talk|all|sysop|edit&#039;]              = &#039;Protected talk pages&#039;,&lt;br /&gt;
	[&#039;all|template|all|sysop|edit&#039;]          = &#039;Protected templates&#039;,&lt;br /&gt;
	[&#039;all|module|all|sysop|edit&#039;]            = &#039;Protected modules&#039;,&lt;br /&gt;
	[&#039;all|user|all|sysop|edit&#039;]              = &#039;Protected user and user talk pages&#039;,&lt;br /&gt;
	[&#039;all|all|all|sysop|move&#039;]               = &#039;Move-protected pages&#039;,&lt;br /&gt;
	[&#039;indef|all|all|sysop|move&#039;]             = &#039;Indefinitely move-protected pages&#039;,&lt;br /&gt;
	[&#039;all|all|dispute|sysop|move&#039;]           = &#039;Pages move-protected due to dispute&#039;,&lt;br /&gt;
	[&#039;all|all|vandalism|sysop|move&#039;]         = &#039;Pages move-protected due to vandalism&#039;,&lt;br /&gt;
	[&#039;all|portal|all|sysop|move&#039;]            = &#039;Move-protected portals&#039;,&lt;br /&gt;
	[&#039;all|portal|all|sysop|move&#039;]            = &#039;Move-protected portals&#039;,&lt;br /&gt;
	[&#039;all|project|all|sysop|move&#039;]           = &#039;Move-protected project pages&#039;,&lt;br /&gt;
	[&#039;all|talk|all|sysop|move&#039;]              = &#039;Move-protected talk pages&#039;,&lt;br /&gt;
	[&#039;all|template|all|sysop|move&#039;]          = &#039;Move-protected templates&#039;,&lt;br /&gt;
	[&#039;all|user|all|sysop|move&#039;]              = &#039;Move-protected user and user talk pages&#039;,&lt;br /&gt;
	[&#039;all|all|all|autoconfirmed|autoreview&#039;] = &#039;Pending changes protected pages (level 1)&#039;,&lt;br /&gt;
	[&#039;all|all|all|reviewer|autoreview&#039;]      = &#039;Pending changes protected pages (level 2)&#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;
},&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] = &#039;article&#039;,&lt;br /&gt;
	[6] = &#039;file&#039;,&lt;br /&gt;
	[10] = &#039;template&#039;,&lt;br /&gt;
	[14] = &#039;category&#039;,&lt;br /&gt;
	[828] = &#039;module&#039;,&lt;br /&gt;
	default = &#039;page&#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;
	[&#039;indef&#039;] = true,&lt;br /&gt;
	[&#039;indefinite&#039;] = true,&lt;br /&gt;
	[&#039;indefinitely&#039;] = true,&lt;br /&gt;
	[&#039;infinite&#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&#039;s page editing permissions.&lt;br /&gt;
hierarchy = {&lt;br /&gt;
	sysop = {},&lt;br /&gt;
	reviewer = {&#039;sysop&#039;},&lt;br /&gt;
	filemover = {&#039;sysop&#039;},&lt;br /&gt;
	templateeditor = {&#039;sysop&#039;},&lt;br /&gt;
	accountcreator = {&#039;templateeditor&#039;},&lt;br /&gt;
	autoconfirmed = {&#039;reviewer&#039;, &#039;filemover&#039;, &#039;accountcreator&#039;},&lt;br /&gt;
	user = {&#039;autoconfirmed&#039;},&lt;br /&gt;
	[&#039;*&#039;] = {&#039;user&#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. The arguments cannot be overwritten by the&lt;br /&gt;
-- user.&lt;br /&gt;
wrappers = {&lt;br /&gt;
	[&#039;Template:Pp&#039;]                         = {},&lt;br /&gt;
	[&#039;Template:Pp-blp&#039;]                     = {&#039;blp&#039;},&lt;br /&gt;
	-- we don&#039;t need Template:Pp-create&lt;br /&gt;
	[&#039;Template:Pp-dispute&#039;]                 = {&#039;dispute&#039;},&lt;br /&gt;
	[&#039;Template:Pp-main-page&#039;]                = {&#039;mainpage&#039;},&lt;br /&gt;
	[&#039;Template:Pp-move&#039;]                    = {action = &#039;move&#039;},&lt;br /&gt;
	[&#039;Template:Pp-move-dispute&#039;]            = {&#039;dispute&#039;, action = &#039;move&#039;},&lt;br /&gt;
	-- we don&#039;t need Template:Pp-move-indef&lt;br /&gt;
	[&#039;Template:Pp-move-vandalism&#039;]          = {&#039;vandalism&#039;, action = &#039;move&#039;},&lt;br /&gt;
	[&#039;Template:Pp-office&#039;]                  = {&#039;office&#039;},&lt;br /&gt;
	[&#039;Template:Pp-office-dmca&#039;]             = {&#039;dmca&#039;},&lt;br /&gt;
	[&#039;Template:Pp-pc1&#039;]                     = {action = &#039;autoreview&#039;, small = true},&lt;br /&gt;
	[&#039;Template:Pp-pc2&#039;]                     = {action = &#039;autoreview&#039;, small = true},&lt;br /&gt;
	[&#039;Template:Pp-reset&#039;]                   = {&#039;reset&#039;},&lt;br /&gt;
	[&#039;Template:Pp-semi-indef&#039;]              = {expiry = &#039;indef&#039;, small = true},&lt;br /&gt;
	[&#039;Template:Pp-sock&#039;]                    = {&#039;sock&#039;},&lt;br /&gt;
	[&#039;Template:Pp-template&#039;]                = {&#039;template&#039;, small = true},&lt;br /&gt;
	[&#039;Template:Pp-usertalk&#039;]                = {&#039;usertalk&#039;},&lt;br /&gt;
	[&#039;Template:Pp-vandalism&#039;]               = {&#039;vandalism&#039;},&lt;br /&gt;
	[&#039;Vorlage:Pp&#039;]                         = {},&lt;br /&gt;
	[&#039;Vorlage:Pp-blp&#039;]                     = {&#039;blp&#039;},&lt;br /&gt;
	-- we don&#039;t need Vorlage:Pp-create&lt;br /&gt;
	[&#039;Vorlage:Pp-dispute&#039;]                 = {&#039;dispute&#039;},&lt;br /&gt;
	[&#039;Vorlage:Pp-main-page&#039;]                = {&#039;mainpage&#039;},&lt;br /&gt;
	[&#039;Vorlage:Pp-move&#039;]                    = {action = &#039;move&#039;},&lt;br /&gt;
	[&#039;Vorlage:Pp-move-dispute&#039;]            = {&#039;dispute&#039;, action = &#039;move&#039;},&lt;br /&gt;
	-- we don&#039;t need Vorlage:Pp-move-indef&lt;br /&gt;
	[&#039;Vorlage:Pp-move-vandalism&#039;]          = {&#039;vandalism&#039;, action = &#039;move&#039;},&lt;br /&gt;
	[&#039;Vorlage:Pp-office&#039;]                  = {&#039;office&#039;},&lt;br /&gt;
	[&#039;Vorlage:Pp-office-dmca&#039;]             = {&#039;dmca&#039;},&lt;br /&gt;
	[&#039;Vorlage:Pp-pc1&#039;]                     = {action = &#039;autoreview&#039;, small = true},&lt;br /&gt;
	[&#039;Vorlage:Pp-pc2&#039;]                     = {action = &#039;autoreview&#039;, small = true},&lt;br /&gt;
	[&#039;Vorlage:Pp-reset&#039;]                   = {&#039;reset&#039;},&lt;br /&gt;
	[&#039;Vorlage:Pp-semi-indef&#039;]              = {expiry = &#039;indef&#039;, small = true},&lt;br /&gt;
	[&#039;Vorlage:Pp-sock&#039;]                    = {&#039;sock&#039;},&lt;br /&gt;
	[&#039;Vorlage:Pp-template&#039;]                = {&#039;template&#039;, small = true},&lt;br /&gt;
	[&#039;Vorlage:Pp-usertalk&#039;]                = {&#039;usertalk&#039;},&lt;br /&gt;
	[&#039;Vorlage:Pp-vandalism&#039;]               = {&#039;vandalism&#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;
[&#039;intro-blurb-expiry&#039;] = &#039;${PROTECTIONBLURB} until ${EXPIRY}.&#039;,&lt;br /&gt;
[&#039;intro-blurb-noexpiry&#039;] = &#039;${PROTECTIONBLURB}.&#039;,&lt;br /&gt;
[&#039;intro-fragment-expiry&#039;] = &#039;${PROTECTIONBLURB} until ${EXPIRY},&#039;,&lt;br /&gt;
[&#039;intro-fragment-noexpiry&#039;] = &#039;${PROTECTIONBLURB}&#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;
[&#039;tooltip-blurb-expiry&#039;] = &#039;This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.&#039;,&lt;br /&gt;
[&#039;tooltip-blurb-noexpiry&#039;] = &#039;This ${PAGETYPE} is ${PROTECTIONLEVEL}.&#039;,&lt;br /&gt;
[&#039;tooltip-fragment-expiry&#039;] = &#039;This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},&#039;,&lt;br /&gt;
[&#039;tooltip-fragment-noexpiry&#039;] = &#039;This ${PAGETYPE} is ${PROTECTIONLEVEL}&#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;
[&#039;explanation-blurb-nounprotect&#039;] = &#039;See the [[Wikipedia:Protection policy|&#039;&lt;br /&gt;
	.. &#039;protection policy]] and ${PROTECTIONLOG} for more details.&#039;&lt;br /&gt;
	.. &#039; Please discuss any changes on the ${TALKPAGE}; you&#039;&lt;br /&gt;
	.. &#039; may ${EDITREQUEST} to ask an&#039;&lt;br /&gt;
	.. &#039; [[Wikipedia:Administrators|administrator]] to make an edit if it&#039;&lt;br /&gt;
	.. &#039; is [[Help:Minor edit#When to mark an edit as a minor edit&#039;&lt;br /&gt;
	.. &#039;|uncontroversial]] or supported by [[Wikipedia:Consensus&#039;&lt;br /&gt;
	.. &#039;|consensus]].&#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;
[&#039;protection-log-display&#039;] = &#039;protection log&#039;,&lt;br /&gt;
[&#039;pc-log-display&#039;] = &#039;pending changes log&#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;
[&#039;current-version-move-display&#039;] = &#039;current title&#039;,&lt;br /&gt;
[&#039;current-version-edit-display&#039;] = &#039;current version&#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;
[&#039;talk-page-link-display&#039;] = &#039;talk page&#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;
[&#039;edit-request-display&#039;] = &#039;submit an edit request&#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;
[&#039;expiry-date-format&#039;] = &#039;F j, Y&#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;
[&#039;tracking-category-incorrect&#039;] = &#039;Pages with incorrect protection templates&#039;,&lt;br /&gt;
[&#039;tracking-category-expiry&#039;] = &#039;Protected pages without expiry&#039;,&lt;br /&gt;
[&#039;tracking-category-template&#039;] = &#039;Template-protected pages other than templates and modules&#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;
[&#039;image-filename-indef&#039;] = &#039;Padlock-red.png&#039;,&lt;br /&gt;
[&#039;image-filename-default&#039;] = &#039;Transparent.gif&#039;,&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Error message blurb&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This is the blurb that is outputted with error messages produced by the&lt;br /&gt;
-- module. $1 is replaced with the error message text. The whole message is&lt;br /&gt;
-- turned into a large red error message, so there is no need to add HTML&lt;br /&gt;
-- styling.&lt;br /&gt;
[&#039;error-message-blurb&#039;] = &#039;Error: $1 ([[Module:Protection banner#Errors|help]])&#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>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Protection_banner&amp;diff=1100</id>
		<title>Modul:Protection banner</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Protection_banner&amp;diff=1100"/>
		<updated>2015-08-09T08:56:48Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Protection banner“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{pp-meta}} and its daughter templates such as&lt;br /&gt;
-- {{pp-dispute}}, {{pp-vandalism}} and {{pp-sock}}.&lt;br /&gt;
&lt;br /&gt;
-- Initialise necessary modules.&lt;br /&gt;
require(&#039;Module:No globals&#039;)&lt;br /&gt;
local newFileLink = require(&#039;Module:File link&#039;).new&lt;br /&gt;
local effectiveProtectionLevel = require(&#039;Module:Effective protection level&#039;)._main&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
&lt;br /&gt;
-- Lazily initialise modules and objects we don&#039;t always need.&lt;br /&gt;
local getArgs, makeMessageBox, lang&lt;br /&gt;
&lt;br /&gt;
-- Set constants.&lt;br /&gt;
local CONFIG_MODULE = &#039;Module:Protection banner/config&#039;&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function makeCategoryLink(cat, sort)&lt;br /&gt;
	local nsText = mw.site.namespaces[14].name&lt;br /&gt;
	if cat and sort then&lt;br /&gt;
		return string.format(&lt;br /&gt;
			&#039;[[%s:%s|%s]]&#039;,&lt;br /&gt;
			nsText,&lt;br /&gt;
			cat,&lt;br /&gt;
			sort&lt;br /&gt;
		)&lt;br /&gt;
	elseif cat then&lt;br /&gt;
		return string.format(&lt;br /&gt;
			&#039;[[%s:%s]]&#039;,&lt;br /&gt;
			nsText,&lt;br /&gt;
			cat&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Validation function for the expiry and the protection date&lt;br /&gt;
local function validateDate(dateString, dateType)&lt;br /&gt;
	lang = lang or mw.language.getContentLanguage()&lt;br /&gt;
	local success, result = pcall(lang.formatDate, lang, &#039;U&#039;, dateString)&lt;br /&gt;
	if success then&lt;br /&gt;
		result = tonumber(result)&lt;br /&gt;
		if result then&lt;br /&gt;
			return result&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	error(string.format(&lt;br /&gt;
		&#039;invalid %s (&amp;quot;%s&amp;quot;)&#039;,&lt;br /&gt;
		dateType,&lt;br /&gt;
		tostring(dateString)&lt;br /&gt;
	), 0)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeFullUrl(page, query, display)&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&#039;[%s %s]&#039;,&lt;br /&gt;
		tostring(mw.uri.fullUrl(page, query)),&lt;br /&gt;
		display&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function toTableEnd(t, pos)&lt;br /&gt;
	-- Sends the value at position pos to the end of array t, and shifts the&lt;br /&gt;
	-- other items down accordingly.&lt;br /&gt;
	return table.insert(t, table.remove(t, pos))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function walkHierarchy(hierarchy, start)&lt;br /&gt;
	local toWalk, retval = {[start] = true}, {}&lt;br /&gt;
	while true do&lt;br /&gt;
		-- Can&#039;t use pairs() since we&#039;re adding and removing things as we&#039;re iterating&lt;br /&gt;
		local k = next(toWalk)&lt;br /&gt;
		if k == nil then break end&lt;br /&gt;
		toWalk[k] = nil&lt;br /&gt;
		retval[k] = true&lt;br /&gt;
		for _,v in ipairs(hierarchy[k]) do&lt;br /&gt;
			if not retval[v] then&lt;br /&gt;
				toWalk[v] = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return retval&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Protection class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local Protection = {}&lt;br /&gt;
Protection.__index = Protection&lt;br /&gt;
&lt;br /&gt;
Protection.supportedActions = {&lt;br /&gt;
	edit = true,&lt;br /&gt;
	move = true,&lt;br /&gt;
	autoreview = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Protection.bannerConfigFields = {&lt;br /&gt;
	&#039;text&#039;,&lt;br /&gt;
	&#039;explanation&#039;,&lt;br /&gt;
	&#039;tooltip&#039;,&lt;br /&gt;
	&#039;alt&#039;,&lt;br /&gt;
	&#039;link&#039;,&lt;br /&gt;
	&#039;image&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function Protection.new(args, cfg, title)&lt;br /&gt;
	local obj = {}&lt;br /&gt;
	obj._cfg = cfg&lt;br /&gt;
	obj.title = title or mw.title.getCurrentTitle()&lt;br /&gt;
&lt;br /&gt;
	-- Set action&lt;br /&gt;
	if not args.action then&lt;br /&gt;
		obj.action = &#039;edit&#039;&lt;br /&gt;
	elseif Protection.supportedActions[args.action] then&lt;br /&gt;
		obj.action = args.action&lt;br /&gt;
	else&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			&#039;invalid action (&amp;quot;%s&amp;quot;)&#039;,&lt;br /&gt;
			tostring(args.action)&lt;br /&gt;
		), 0)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set level&lt;br /&gt;
	obj.level = effectiveProtectionLevel(obj.action, obj.title)&lt;br /&gt;
	if obj.level == &#039;accountcreator&#039; then&lt;br /&gt;
		-- Lump titleblacklisted pages in with template-protected pages,&lt;br /&gt;
		-- since templateeditors can do both.&lt;br /&gt;
		obj.level = &#039;templateeditor&#039;&lt;br /&gt;
	elseif not obj.level or (obj.action == &#039;move&#039; and obj.level == &#039;autoconfirmed&#039;) then&lt;br /&gt;
		-- Users need to be autoconfirmed to move pages anyway, so treat&lt;br /&gt;
		-- semi-move-protected pages as unprotected.&lt;br /&gt;
		obj.level = &#039;*&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set expiry&lt;br /&gt;
	if args.expiry then&lt;br /&gt;
		if cfg.indefStrings[args.expiry] then&lt;br /&gt;
			obj.expiry = &#039;indef&#039;&lt;br /&gt;
		elseif type(args.expiry) == &#039;number&#039; then&lt;br /&gt;
			obj.expiry = args.expiry&lt;br /&gt;
		else&lt;br /&gt;
			obj.expiry = validateDate(args.expiry, &#039;expiry date&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set reason&lt;br /&gt;
	if args[1] then&lt;br /&gt;
		obj.reason = mw.ustring.lower(args[1])&lt;br /&gt;
		if obj.reason:find(&#039;|&#039;) then&lt;br /&gt;
			error(&#039;reasons cannot contain the pipe character (&amp;quot;|&amp;quot;)&#039;, 0)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set protection date&lt;br /&gt;
	if args.date then&lt;br /&gt;
		obj.protectionDate = validateDate(args.date, &#039;protection date&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Set banner config&lt;br /&gt;
	do&lt;br /&gt;
		obj.bannerConfig = {}&lt;br /&gt;
		local configTables = {}&lt;br /&gt;
		if cfg.banners[obj.action] then&lt;br /&gt;
			configTables[#configTables + 1] = cfg.banners[obj.action][obj.reason]&lt;br /&gt;
		end&lt;br /&gt;
		if cfg.defaultBanners[obj.action] then&lt;br /&gt;
			configTables[#configTables + 1] = cfg.defaultBanners[obj.action][obj.level]&lt;br /&gt;
			configTables[#configTables + 1] = cfg.defaultBanners[obj.action].default&lt;br /&gt;
		end&lt;br /&gt;
		configTables[#configTables + 1] = cfg.masterBanner&lt;br /&gt;
		for i, field in ipairs(Protection.bannerConfigFields) do&lt;br /&gt;
			for j, t in ipairs(configTables) do&lt;br /&gt;
				if t[field] then&lt;br /&gt;
					obj.bannerConfig[field] = t[field]&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return setmetatable(obj, Protection)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:isProtected()&lt;br /&gt;
	return self.level ~= &#039;*&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:isTemporary()&lt;br /&gt;
	return type(self.expiry) == &#039;number&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:makeProtectionCategory()&lt;br /&gt;
	local cfg = self._cfg&lt;br /&gt;
	local title = self.title&lt;br /&gt;
	&lt;br /&gt;
	-- Exit if the page is not protected.&lt;br /&gt;
	if not self:isProtected() then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Get the expiry key fragment.&lt;br /&gt;
	local expiryFragment&lt;br /&gt;
	if self.expiry == &#039;indef&#039; then&lt;br /&gt;
		expiryFragment = self.expiry&lt;br /&gt;
	elseif type(self.expiry) == &#039;number&#039; then&lt;br /&gt;
		expiryFragment = &#039;temp&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Get the namespace key fragment.&lt;br /&gt;
	local namespaceFragment&lt;br /&gt;
	do&lt;br /&gt;
		namespaceFragment = cfg.categoryNamespaceKeys[title.namespace]&lt;br /&gt;
		if not namespaceFragment and title.namespace % 2 == 1 then&lt;br /&gt;
				namespaceFragment = &#039;talk&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	-- Define the order that key fragments are tested in. This is done with an&lt;br /&gt;
	-- array of tables containing the value to be tested, along with its&lt;br /&gt;
	-- position in the cfg.protectionCategories table.&lt;br /&gt;
	local order = {&lt;br /&gt;
		{val = expiryFragment,    keypos = 1},&lt;br /&gt;
		{val = namespaceFragment, keypos = 2},&lt;br /&gt;
		{val = self.reason,       keypos = 3},&lt;br /&gt;
		{val = self.level,        keypos = 4},&lt;br /&gt;
		{val = self.action,       keypos = 5}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- The old protection templates used an ad-hoc protection category system,&lt;br /&gt;
	-- with some templates prioritising namespaces in their categories, and&lt;br /&gt;
	-- others prioritising the protection reason. To emulate this in this module&lt;br /&gt;
	-- we use the config table cfg.reasonsWithNamespacePriority to set the&lt;br /&gt;
	-- reasons for which namespaces have priority over protection reason.&lt;br /&gt;
	-- If we are dealing with one of those reasons, move the namespace table to&lt;br /&gt;
	-- the end of the order table, i.e. give it highest priority. If not, the&lt;br /&gt;
	-- reason should have highest priority, so move that to the end of the table&lt;br /&gt;
	-- instead.&lt;br /&gt;
	--]]&lt;br /&gt;
	if self.reason and cfg.reasonsWithNamespacePriority[self.reason] then&lt;br /&gt;
		-- table.insert(order, 3, table.remove(order, 2))&lt;br /&gt;
		toTableEnd(order, 2)&lt;br /&gt;
	else&lt;br /&gt;
		toTableEnd(order, 3)&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	--[[&lt;br /&gt;
	-- Define the attempt order. Inactive subtables (subtables with nil &amp;quot;value&amp;quot;&lt;br /&gt;
	-- fields) are moved to the end, where they will later be given the key&lt;br /&gt;
	-- &amp;quot;all&amp;quot;. This is to cut down on the number of table lookups in&lt;br /&gt;
	-- cfg.protectionCategories, which grows exponentially with the number of&lt;br /&gt;
	-- non-nil keys. We keep track of the number of active subtables with the&lt;br /&gt;
	-- noActive parameter.&lt;br /&gt;
	--]]&lt;br /&gt;
	local noActive, attemptOrder&lt;br /&gt;
	do&lt;br /&gt;
		local active, inactive = {}, {}&lt;br /&gt;
		for i, t in ipairs(order) do&lt;br /&gt;
			if t.val then&lt;br /&gt;
				active[#active + 1] = t&lt;br /&gt;
			else&lt;br /&gt;
				inactive[#inactive + 1] = t&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		noActive = #active&lt;br /&gt;
		attemptOrder = active&lt;br /&gt;
		for i, t in ipairs(inactive) do&lt;br /&gt;
			attemptOrder[#attemptOrder + 1] = t&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	--[[&lt;br /&gt;
	-- Check increasingly generic key combinations until we find a match. If a&lt;br /&gt;
	-- specific category exists for the combination of key fragments we are&lt;br /&gt;
	-- given, that match will be found first. If not, we keep trying different&lt;br /&gt;
	-- key fragment combinations until we match using the key&lt;br /&gt;
	-- &amp;quot;all-all-all-all-all&amp;quot;.&lt;br /&gt;
	--&lt;br /&gt;
	-- To generate the keys, we index the key subtables using a binary matrix&lt;br /&gt;
	-- with indexes i and j. j is only calculated up to the number of active&lt;br /&gt;
	-- subtables. For example, if there were three active subtables, the matrix&lt;br /&gt;
	-- would look like this, with 0 corresponding to the key fragment &amp;quot;all&amp;quot;, and&lt;br /&gt;
	-- 1 corresponding to other key fragments.&lt;br /&gt;
	-- &lt;br /&gt;
	--   j 1  2  3&lt;br /&gt;
	-- i  &lt;br /&gt;
	-- 1   1  1  1&lt;br /&gt;
	-- 2   0  1  1&lt;br /&gt;
	-- 3   1  0  1&lt;br /&gt;
	-- 4   0  0  1&lt;br /&gt;
	-- 5   1  1  0&lt;br /&gt;
	-- 6   0  1  0&lt;br /&gt;
	-- 7   1  0  0&lt;br /&gt;
	-- 8   0  0  0&lt;br /&gt;
	-- &lt;br /&gt;
	-- Values of j higher than the number of active subtables are set&lt;br /&gt;
	-- to the string &amp;quot;all&amp;quot;.&lt;br /&gt;
	--&lt;br /&gt;
	-- A key for cfg.protectionCategories is constructed for each value of i.&lt;br /&gt;
	-- The position of the value in the key is determined by the keypos field in&lt;br /&gt;
	-- each subtable.&lt;br /&gt;
	--]]&lt;br /&gt;
	local cats = cfg.protectionCategories&lt;br /&gt;
	for i = 1, 2^noActive do&lt;br /&gt;
		local key = {}&lt;br /&gt;
		for j, t in ipairs(attemptOrder) do&lt;br /&gt;
			if j &amp;gt; noActive then&lt;br /&gt;
				key[t.keypos] = &#039;all&#039;&lt;br /&gt;
			else&lt;br /&gt;
				local quotient = i / 2 ^ (j - 1)&lt;br /&gt;
				quotient = math.ceil(quotient)&lt;br /&gt;
				if quotient % 2 == 1 then&lt;br /&gt;
					key[t.keypos] = t.val&lt;br /&gt;
				else&lt;br /&gt;
					key[t.keypos] = &#039;all&#039;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		key = table.concat(key, &#039;|&#039;)&lt;br /&gt;
		local attempt = cats[key]&lt;br /&gt;
		if attempt then&lt;br /&gt;
			return makeCategoryLink(attempt, title.text)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:needsExpiry()&lt;br /&gt;
	local cfg = self._cfg&lt;br /&gt;
	local actionNeedsCheck = cfg.expiryCheckActions[self.action]&lt;br /&gt;
	return not self.expiry and (&lt;br /&gt;
		actionNeedsCheck or (&lt;br /&gt;
			actionNeedsCheck == nil&lt;br /&gt;
			and self.reason -- the old {{pp-protected}} didn&#039;t check for expiry&lt;br /&gt;
			and not cfg.reasonsWithoutExpiryCheck[self.reason]&lt;br /&gt;
		)&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:isIncorrect()&lt;br /&gt;
	local expiry = self.expiry&lt;br /&gt;
	return not self:isProtected()&lt;br /&gt;
		or type(expiry) == &#039;number&#039; and expiry &amp;lt; os.time()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:isTemplateProtectedNonTemplate()&lt;br /&gt;
	local action, namespace = self.action, self.title.namespace&lt;br /&gt;
	return self.level == &#039;templateeditor&#039;&lt;br /&gt;
		and (&lt;br /&gt;
			(action ~= &#039;edit&#039; and action ~= &#039;move&#039;)&lt;br /&gt;
			or (namespace ~= 10 and namespace ~= 828)&lt;br /&gt;
		)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Protection:makeCategoryLinks()&lt;br /&gt;
	local msg = self._cfg.msg&lt;br /&gt;
	local ret = { self:makeProtectionCategory() }&lt;br /&gt;
	if self:needsExpiry() then&lt;br /&gt;
		ret[#ret + 1] = makeCategoryLink(&lt;br /&gt;
			msg[&#039;tracking-category-expiry&#039;],&lt;br /&gt;
			self.title.text&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	if self:isIncorrect() then&lt;br /&gt;
		ret[#ret + 1] = makeCategoryLink(&lt;br /&gt;
			msg[&#039;tracking-category-incorrect&#039;],&lt;br /&gt;
			self.title.text&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	if self:isTemplateProtectedNonTemplate() then&lt;br /&gt;
		ret[#ret + 1] = makeCategoryLink(&lt;br /&gt;
			msg[&#039;tracking-category-template&#039;],&lt;br /&gt;
			self.title.text&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Blurb class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local Blurb = {}&lt;br /&gt;
Blurb.__index = Blurb&lt;br /&gt;
&lt;br /&gt;
Blurb.bannerTextFields = {&lt;br /&gt;
	text = true,&lt;br /&gt;
	explanation = true,&lt;br /&gt;
	tooltip = true,&lt;br /&gt;
	alt = true,&lt;br /&gt;
	link = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function Blurb.new(protectionObj, args, cfg)&lt;br /&gt;
	return setmetatable({&lt;br /&gt;
		_cfg = cfg,&lt;br /&gt;
		_protectionObj = protectionObj,&lt;br /&gt;
		_args = args&lt;br /&gt;
	}, Blurb)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Private methods --&lt;br /&gt;
&lt;br /&gt;
function Blurb:_formatDate(num)&lt;br /&gt;
	-- Formats a Unix timestamp into dd Month, YYYY format.&lt;br /&gt;
	lang = lang or mw.language.getContentLanguage()&lt;br /&gt;
	local success, date = pcall(&lt;br /&gt;
		lang.formatDate,&lt;br /&gt;
		lang,&lt;br /&gt;
		self._cfg.msg[&#039;expiry-date-format&#039;] or &#039;j F Y&#039;,&lt;br /&gt;
		&#039;@&#039; .. tostring(num)&lt;br /&gt;
	)&lt;br /&gt;
	if success then&lt;br /&gt;
		return date&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_getExpandedMessage(msgKey)&lt;br /&gt;
	return self:_substituteParameters(self._cfg.msg[msgKey])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_substituteParameters(msg)&lt;br /&gt;
	if not self._params then&lt;br /&gt;
		local parameterFuncs = {}&lt;br /&gt;
&lt;br /&gt;
		parameterFuncs.CURRENTVERSION     = self._makeCurrentVersionParameter&lt;br /&gt;
		parameterFuncs.EDITREQUEST        = self._makeEditRequestParameter&lt;br /&gt;
		parameterFuncs.EXPIRY             = self._makeExpiryParameter&lt;br /&gt;
		parameterFuncs.EXPLANATIONBLURB   = self._makeExplanationBlurbParameter&lt;br /&gt;
		parameterFuncs.IMAGELINK          = self._makeImageLinkParameter&lt;br /&gt;
		parameterFuncs.INTROBLURB         = self._makeIntroBlurbParameter&lt;br /&gt;
		parameterFuncs.INTROFRAGMENT      = self._makeIntroFragmentParameter&lt;br /&gt;
		parameterFuncs.PAGETYPE           = self._makePagetypeParameter&lt;br /&gt;
		parameterFuncs.PROTECTIONBLURB    = self._makeProtectionBlurbParameter&lt;br /&gt;
		parameterFuncs.PROTECTIONDATE     = self._makeProtectionDateParameter&lt;br /&gt;
		parameterFuncs.PROTECTIONLEVEL    = self._makeProtectionLevelParameter&lt;br /&gt;
		parameterFuncs.PROTECTIONLOG      = self._makeProtectionLogParameter&lt;br /&gt;
		parameterFuncs.TALKPAGE           = self._makeTalkPageParameter&lt;br /&gt;
		parameterFuncs.TOOLTIPBLURB       = self._makeTooltipBlurbParameter&lt;br /&gt;
		parameterFuncs.TOOLTIPFRAGMENT    = self._makeTooltipFragmentParameter&lt;br /&gt;
		parameterFuncs.VANDAL             = self._makeVandalTemplateParameter&lt;br /&gt;
		&lt;br /&gt;
		self._params = setmetatable({}, {&lt;br /&gt;
			__index = function (t, k)&lt;br /&gt;
				local param&lt;br /&gt;
				if parameterFuncs[k] then&lt;br /&gt;
					param = parameterFuncs[k](self)&lt;br /&gt;
				end&lt;br /&gt;
				param = param or &#039;&#039;&lt;br /&gt;
				t[k] = param&lt;br /&gt;
				return param&lt;br /&gt;
			end&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	msg = msg:gsub(&#039;${(%u+)}&#039;, self._params)&lt;br /&gt;
	return msg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeCurrentVersionParameter()&lt;br /&gt;
	-- A link to the page history or the move log, depending on the kind of&lt;br /&gt;
	-- protection.&lt;br /&gt;
	local pagename = self._protectionObj.title.prefixedText&lt;br /&gt;
	if self._protectionObj.action == &#039;move&#039; then&lt;br /&gt;
		-- We need the move log link.&lt;br /&gt;
		return makeFullUrl(&lt;br /&gt;
			&#039;Special:Log&#039;,&lt;br /&gt;
			{type = &#039;move&#039;, page = pagename},&lt;br /&gt;
			self:_getExpandedMessage(&#039;current-version-move-display&#039;)&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		-- We need the history link.&lt;br /&gt;
		return makeFullUrl(&lt;br /&gt;
			pagename,&lt;br /&gt;
			{action = &#039;history&#039;},&lt;br /&gt;
			self:_getExpandedMessage(&#039;current-version-edit-display&#039;)&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeEditRequestParameter()&lt;br /&gt;
	local mEditRequest = require(&#039;Module:Submit an edit request&#039;)&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	&lt;br /&gt;
	-- Get the edit request type.&lt;br /&gt;
	local requestType&lt;br /&gt;
	if action == &#039;edit&#039; then&lt;br /&gt;
		if level == &#039;autoconfirmed&#039; then&lt;br /&gt;
			requestType = &#039;semi&#039;&lt;br /&gt;
		elseif level == &#039;templateeditor&#039; then&lt;br /&gt;
			requestType = &#039;template&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	requestType = requestType or &#039;full&#039;&lt;br /&gt;
	&lt;br /&gt;
	-- Get the display value.&lt;br /&gt;
	local display = self:_getExpandedMessage(&#039;edit-request-display&#039;)&lt;br /&gt;
&lt;br /&gt;
	return mEditRequest._link{type = requestType, display = display}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeExpiryParameter()&lt;br /&gt;
	local expiry = self._protectionObj.expiry&lt;br /&gt;
	if type(expiry) == &#039;number&#039; then&lt;br /&gt;
		return self:_formatDate(expiry)&lt;br /&gt;
	else&lt;br /&gt;
		return expiry&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeExplanationBlurbParameter()&lt;br /&gt;
	-- Cover special cases first.&lt;br /&gt;
	if self._protectionObj.title.namespace == 8 then&lt;br /&gt;
		-- MediaWiki namespace&lt;br /&gt;
		return self:_getExpandedMessage(&#039;explanation-blurb-nounprotect&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Get explanation blurb table keys&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	local talkKey = self._protectionObj.title.isTalkPage and &#039;talk&#039; or &#039;subject&#039;&lt;br /&gt;
&lt;br /&gt;
	-- Find the message in the explanation blurb table and substitute any&lt;br /&gt;
	-- parameters.&lt;br /&gt;
	local explanations = self._cfg.explanationBlurbs&lt;br /&gt;
	local msg&lt;br /&gt;
	if explanations[action][level] and explanations[action][level][talkKey] then&lt;br /&gt;
		msg = explanations[action][level][talkKey]&lt;br /&gt;
	elseif explanations[action][level] and explanations[action][level].default then&lt;br /&gt;
		msg = explanations[action][level].default&lt;br /&gt;
	elseif explanations[action].default and explanations[action].default[talkKey] then&lt;br /&gt;
		msg = explanations[action].default[talkKey]&lt;br /&gt;
	elseif explanations[action].default and explanations[action].default.default then&lt;br /&gt;
		msg = explanations[action].default.default&lt;br /&gt;
	else&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			&#039;could not find explanation blurb for action &amp;quot;%s&amp;quot;, level &amp;quot;%s&amp;quot; and talk key &amp;quot;%s&amp;quot;&#039;,&lt;br /&gt;
			action,&lt;br /&gt;
			level,&lt;br /&gt;
			talkKey&lt;br /&gt;
		))&lt;br /&gt;
	end&lt;br /&gt;
	return self:_substituteParameters(msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeImageLinkParameter()&lt;br /&gt;
	local imageLinks = self._cfg.imageLinks&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	local msg&lt;br /&gt;
	if imageLinks[action][level] then&lt;br /&gt;
		msg = imageLinks[action][level]&lt;br /&gt;
	elseif imageLinks[action].default then&lt;br /&gt;
		msg = imageLinks[action].default&lt;br /&gt;
	else&lt;br /&gt;
		msg = imageLinks.edit.default&lt;br /&gt;
	end&lt;br /&gt;
	return self:_substituteParameters(msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeIntroBlurbParameter()&lt;br /&gt;
	if self._protectionObj:isTemporary() then&lt;br /&gt;
		return self:_getExpandedMessage(&#039;intro-blurb-expiry&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return self:_getExpandedMessage(&#039;intro-blurb-noexpiry&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeIntroFragmentParameter()&lt;br /&gt;
	if self._protectionObj:isTemporary() then&lt;br /&gt;
		return self:_getExpandedMessage(&#039;intro-fragment-expiry&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return self:_getExpandedMessage(&#039;intro-fragment-noexpiry&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makePagetypeParameter()&lt;br /&gt;
	local pagetypes = self._cfg.pagetypes&lt;br /&gt;
	return pagetypes[self._protectionObj.title.namespace]&lt;br /&gt;
		or pagetypes.default&lt;br /&gt;
		or error(&#039;no default pagetype defined&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeProtectionBlurbParameter()&lt;br /&gt;
	local protectionBlurbs = self._cfg.protectionBlurbs&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	local msg&lt;br /&gt;
	if protectionBlurbs[action][level] then&lt;br /&gt;
		msg = protectionBlurbs[action][level]&lt;br /&gt;
	elseif protectionBlurbs[action].default then&lt;br /&gt;
		msg = protectionBlurbs[action].default&lt;br /&gt;
	elseif protectionBlurbs.edit.default then&lt;br /&gt;
		msg = protectionBlurbs.edit.default&lt;br /&gt;
	else&lt;br /&gt;
		error(&#039;no protection blurb defined for protectionBlurbs.edit.default&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return self:_substituteParameters(msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeProtectionDateParameter()&lt;br /&gt;
	local protectionDate = self._protectionObj.protectionDate&lt;br /&gt;
	if type(protectionDate) == &#039;number&#039; then&lt;br /&gt;
		return self:_formatDate(protectionDate)&lt;br /&gt;
	else&lt;br /&gt;
		return protectionDate&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeProtectionLevelParameter()&lt;br /&gt;
	local protectionLevels = self._cfg.protectionLevels&lt;br /&gt;
	local action = self._protectionObj.action&lt;br /&gt;
	local level = self._protectionObj.level&lt;br /&gt;
	local msg&lt;br /&gt;
	if protectionLevels[action][level] then&lt;br /&gt;
		msg = protectionLevels[action][level]&lt;br /&gt;
	elseif protectionLevels[action].default then&lt;br /&gt;
		msg = protectionLevels[action].default&lt;br /&gt;
	elseif protectionLevels.edit.default then&lt;br /&gt;
		msg = protectionLevels.edit.default&lt;br /&gt;
	else&lt;br /&gt;
		error(&#039;no protection level defined for protectionLevels.edit.default&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return self:_substituteParameters(msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeProtectionLogParameter()&lt;br /&gt;
	local pagename = self._protectionObj.title.prefixedText&lt;br /&gt;
	if self._protectionObj.action == &#039;autoreview&#039; then&lt;br /&gt;
		-- We need the pending changes log.&lt;br /&gt;
		return makeFullUrl(&lt;br /&gt;
			&#039;Special:Log&#039;,&lt;br /&gt;
			{type = &#039;stable&#039;, page = pagename},&lt;br /&gt;
			self:_getExpandedMessage(&#039;pc-log-display&#039;)&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		-- We need the protection log.&lt;br /&gt;
		return makeFullUrl(&lt;br /&gt;
			&#039;Special:Log&#039;,&lt;br /&gt;
			{type = &#039;protect&#039;, page = pagename},&lt;br /&gt;
			self:_getExpandedMessage(&#039;protection-log-display&#039;)&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeTalkPageParameter()&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&#039;[[%s:%s#%s|%s]]&#039;,&lt;br /&gt;
		mw.site.namespaces[self._protectionObj.title.namespace].talk.name,&lt;br /&gt;
		self._protectionObj.title.text,&lt;br /&gt;
		self._args.section or &#039;top&#039;,&lt;br /&gt;
		self:_getExpandedMessage(&#039;talk-page-link-display&#039;)&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeTooltipBlurbParameter()&lt;br /&gt;
	if self._protectionObj:isTemporary() then&lt;br /&gt;
		return self:_getExpandedMessage(&#039;tooltip-blurb-expiry&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return self:_getExpandedMessage(&#039;tooltip-blurb-noexpiry&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeTooltipFragmentParameter()&lt;br /&gt;
	if self._protectionObj:isTemporary() then&lt;br /&gt;
		return self:_getExpandedMessage(&#039;tooltip-fragment-expiry&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return self:_getExpandedMessage(&#039;tooltip-fragment-noexpiry&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Blurb:_makeVandalTemplateParameter()&lt;br /&gt;
	return require(&#039;Module:Vandal-m&#039;)._main{&lt;br /&gt;
		self._args.user or self._protectionObj.title.baseText&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Public methods --&lt;br /&gt;
&lt;br /&gt;
function Blurb:makeBannerText(key)&lt;br /&gt;
	-- Validate input.&lt;br /&gt;
	if not key or not Blurb.bannerTextFields[key] then&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			&#039;&amp;quot;%s&amp;quot; is not a valid banner config field&#039;,&lt;br /&gt;
			tostring(key)&lt;br /&gt;
		), 2)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Generate the text.&lt;br /&gt;
	local msg = self._protectionObj.bannerConfig[key]&lt;br /&gt;
	if type(msg) == &#039;string&#039; then&lt;br /&gt;
		return self:_substituteParameters(msg)&lt;br /&gt;
	elseif type(msg) == &#039;function&#039; then&lt;br /&gt;
		msg = msg(self._protectionObj, self._args)&lt;br /&gt;
		if type(msg) ~= &#039;string&#039; then&lt;br /&gt;
			error(string.format(&lt;br /&gt;
				&#039;bad output from banner config function with key &amp;quot;%s&amp;quot;&#039;&lt;br /&gt;
					.. &#039; (expected string, got %s)&#039;,&lt;br /&gt;
				tostring(key),&lt;br /&gt;
				type(msg)&lt;br /&gt;
			))&lt;br /&gt;
		end&lt;br /&gt;
		return self:_substituteParameters(msg)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- BannerTemplate class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local BannerTemplate = {}&lt;br /&gt;
BannerTemplate.__index = BannerTemplate&lt;br /&gt;
&lt;br /&gt;
function BannerTemplate.new(protectionObj, cfg)&lt;br /&gt;
	local obj = {}&lt;br /&gt;
	obj._cfg = cfg&lt;br /&gt;
&lt;br /&gt;
	-- Set the image filename.&lt;br /&gt;
	local imageFilename = protectionObj.bannerConfig.image&lt;br /&gt;
	if imageFilename then&lt;br /&gt;
		obj._imageFilename = imageFilename&lt;br /&gt;
	else&lt;br /&gt;
		-- If an image filename isn&#039;t specified explicitly in the banner config,&lt;br /&gt;
		-- generate it from the protection status and the namespace.&lt;br /&gt;
		local action = protectionObj.action&lt;br /&gt;
		local level = protectionObj.level&lt;br /&gt;
		local namespace = protectionObj.title.namespace&lt;br /&gt;
		local reason = protectionObj.reason&lt;br /&gt;
		&lt;br /&gt;
		-- Deal with special cases first.&lt;br /&gt;
		if (&lt;br /&gt;
			namespace == 10&lt;br /&gt;
			or namespace == 828&lt;br /&gt;
			or reason and obj._cfg.indefImageReasons[reason]&lt;br /&gt;
			)&lt;br /&gt;
			and action == &#039;edit&#039;&lt;br /&gt;
			and level == &#039;sysop&#039;&lt;br /&gt;
			and not protectionObj:isTemporary()&lt;br /&gt;
		then&lt;br /&gt;
			-- Fully protected modules and templates get the special red &amp;quot;indef&amp;quot;&lt;br /&gt;
			-- padlock.&lt;br /&gt;
			obj._imageFilename = obj._cfg.msg[&#039;image-filename-indef&#039;]&lt;br /&gt;
		else&lt;br /&gt;
			-- Deal with regular protection types.&lt;br /&gt;
			local images = obj._cfg.images&lt;br /&gt;
			if images[action] then&lt;br /&gt;
				if images[action][level] then&lt;br /&gt;
					obj._imageFilename = images[action][level]&lt;br /&gt;
				elseif images[action].default then&lt;br /&gt;
					obj._imageFilename = images[action].default&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return setmetatable(obj, BannerTemplate)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function BannerTemplate:setImageWidth(width)&lt;br /&gt;
	self._imageWidth = width&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function BannerTemplate:setImageTooltip(tooltip)&lt;br /&gt;
	self._imageCaption = tooltip&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function BannerTemplate:renderImage()&lt;br /&gt;
	local filename = self._imageFilename&lt;br /&gt;
		or self._cfg.msg[&#039;image-filename-default&#039;]&lt;br /&gt;
		or &#039;Transparent.gif&#039;&lt;br /&gt;
	return newFileLink(filename)&lt;br /&gt;
		:width(self._imageWidth or 20)&lt;br /&gt;
		:alt(self._imageAlt)&lt;br /&gt;
		:link(self._imageLink)&lt;br /&gt;
		:caption(self._imageCaption)&lt;br /&gt;
		:render()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Banner class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local Banner = setmetatable({}, BannerTemplate)&lt;br /&gt;
Banner.__index = Banner&lt;br /&gt;
&lt;br /&gt;
function Banner.new(protectionObj, blurbObj, cfg)&lt;br /&gt;
	local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn&#039;t need the blurb.&lt;br /&gt;
	obj:setImageWidth(40)&lt;br /&gt;
	obj:setImageTooltip(blurbObj:makeBannerText(&#039;alt&#039;)) -- Large banners use the alt text for the tooltip.&lt;br /&gt;
	obj._reasonText = blurbObj:makeBannerText(&#039;text&#039;)&lt;br /&gt;
	obj._explanationText = blurbObj:makeBannerText(&#039;explanation&#039;)&lt;br /&gt;
	obj._page = protectionObj.title.prefixedText -- Only makes a difference in testing.&lt;br /&gt;
	return setmetatable(obj, Banner)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Banner:__tostring()&lt;br /&gt;
	-- Renders the banner.&lt;br /&gt;
	makeMessageBox = makeMessageBox or require(&#039;Module:Message box&#039;).main&lt;br /&gt;
	local reasonText = self._reasonText or error(&#039;no reason text set&#039;)&lt;br /&gt;
	local explanationText = self._explanationText&lt;br /&gt;
	local mbargs = {&lt;br /&gt;
		page = self._page,&lt;br /&gt;
		type = &#039;protection&#039;,&lt;br /&gt;
		image = self:renderImage(),&lt;br /&gt;
		text = string.format(&lt;br /&gt;
			&amp;quot;&#039;&#039;&#039;%s&#039;&#039;&#039;%s&amp;quot;,&lt;br /&gt;
			reasonText,&lt;br /&gt;
			explanationText and &#039;&amp;lt;br /&amp;gt;&#039; .. explanationText or &#039;&#039;&lt;br /&gt;
		)&lt;br /&gt;
	}&lt;br /&gt;
	return makeMessageBox(&#039;mbox&#039;, mbargs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Padlock class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local Padlock = setmetatable({}, BannerTemplate)&lt;br /&gt;
Padlock.__index = Padlock&lt;br /&gt;
&lt;br /&gt;
function Padlock.new(protectionObj, blurbObj, cfg)&lt;br /&gt;
	local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn&#039;t need the blurb.&lt;br /&gt;
	obj:setImageWidth(20)&lt;br /&gt;
	obj:setImageTooltip(blurbObj:makeBannerText(&#039;tooltip&#039;))&lt;br /&gt;
	obj._imageAlt = blurbObj:makeBannerText(&#039;alt&#039;)&lt;br /&gt;
	obj._imageLink = blurbObj:makeBannerText(&#039;link&#039;)&lt;br /&gt;
	obj._right = cfg.padlockPositions[protectionObj.action]&lt;br /&gt;
		or cfg.padlockPositions.default&lt;br /&gt;
		or &#039;55px&#039;&lt;br /&gt;
	return setmetatable(obj, Padlock)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function Padlock:__tostring()&lt;br /&gt;
	local root = mw.html.create(&#039;div&#039;)&lt;br /&gt;
	root&lt;br /&gt;
		:addClass(&#039;metadata topicon nopopups&#039;)&lt;br /&gt;
		:attr(&#039;id&#039;, &#039;protected-icon&#039;)&lt;br /&gt;
		:css{display = &#039;none&#039;, right = self._right}&lt;br /&gt;
		:wikitext(self:renderImage())&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 = {}&lt;br /&gt;
&lt;br /&gt;
function p._exportClasses()&lt;br /&gt;
	-- This is used for testing purposes.&lt;br /&gt;
	return {&lt;br /&gt;
		Protection = Protection,&lt;br /&gt;
		Blurb = Blurb,&lt;br /&gt;
		BannerTemplate = BannerTemplate,&lt;br /&gt;
		Banner = Banner,&lt;br /&gt;
		Padlock = Padlock,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args, cfg, title)&lt;br /&gt;
	args = args or {}&lt;br /&gt;
	cfg = cfg or require(CONFIG_MODULE)&lt;br /&gt;
&lt;br /&gt;
	-- Initialise the protection object and check for errors&lt;br /&gt;
	local protectionObjCreated, protectionObj = pcall(&lt;br /&gt;
		Protection.new,&lt;br /&gt;
		args,&lt;br /&gt;
		cfg,&lt;br /&gt;
		title&lt;br /&gt;
	)&lt;br /&gt;
	if not protectionObjCreated then&lt;br /&gt;
		local errorBlurb = cfg.msg[&#039;error-message-blurb&#039;] or &#039;Error: $1.&#039;&lt;br /&gt;
		local errorText = mw.message.newRawMessage(errorBlurb)&lt;br /&gt;
			:params(protectionObj) -- protectionObj is the error message&lt;br /&gt;
			:plain()&lt;br /&gt;
		return string.format(&lt;br /&gt;
			&#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;%s&amp;lt;/strong&amp;gt;%s&#039;,&lt;br /&gt;
			errorText,&lt;br /&gt;
			makeCategoryLink(&lt;br /&gt;
				cfg.msg[&#039;tracking-category-incorrect&#039;],&lt;br /&gt;
				title and title.text or mw.title.getCurrentTitle().text&lt;br /&gt;
			)&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ret = {}&lt;br /&gt;
&lt;br /&gt;
	-- If a page&#039;s edit protection is equally or more restrictive than its protection from some other action,&lt;br /&gt;
	-- then don&#039;t bother displaying anything for the other action (except categories).&lt;br /&gt;
	if protectionObj.action == &#039;edit&#039; or not walkHierarchy(cfg.hierarchy, protectionObj.level)[effectiveProtectionLevel(&#039;edit&#039;, protectionObj.title)] then&lt;br /&gt;
		-- Initialise the blurb object&lt;br /&gt;
		local blurbObj = Blurb.new(protectionObj, args, cfg)&lt;br /&gt;
	&lt;br /&gt;
		-- Render the banner&lt;br /&gt;
		if protectionObj:isProtected() then&lt;br /&gt;
			ret[#ret + 1] = tostring(&lt;br /&gt;
				(yesno(args.small) and Padlock or Banner)&lt;br /&gt;
				.new(protectionObj, blurbObj, cfg)&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Render the categories&lt;br /&gt;
	if yesno(args.category) ~= false then&lt;br /&gt;
		ret[#ret + 1] = protectionObj:makeCategoryLinks()&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(ret)	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame, cfg)&lt;br /&gt;
	cfg = cfg or require(CONFIG_MODULE)&lt;br /&gt;
&lt;br /&gt;
	-- Find default args, if any.&lt;br /&gt;
	local parent = frame.getParent and frame:getParent()&lt;br /&gt;
	local defaultArgs = parent and cfg.wrappers[parent:getTitle():gsub(&#039;/sandbox$&#039;, &#039;&#039;)] or {}&lt;br /&gt;
&lt;br /&gt;
	-- Find user args, and use the parent frame if we are being called from a&lt;br /&gt;
	-- wrapper template.&lt;br /&gt;
	getArgs = getArgs or require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
	local userArgs = getArgs(frame, {&lt;br /&gt;
		parentOnly = defaultArgs,&lt;br /&gt;
		frameOnly = not defaultArgs&lt;br /&gt;
	})&lt;br /&gt;
&lt;br /&gt;
	-- Build the args table. User-specified args overwrite default args.&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for k, v in pairs(defaultArgs) do&lt;br /&gt;
		args[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs(userArgs) do&lt;br /&gt;
		args[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return p._main(args, cfg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Pagetype/config&amp;diff=1099</id>
		<title>Modul:Pagetype/config</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Pagetype/config&amp;diff=1099"/>
		<updated>2015-08-09T08:56:47Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Pagetype/config“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                  Module:Pagetype configuration data                        --&lt;br /&gt;
-- This page holds localisation and configuration data for Module:Pagetype.   --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local cfg = {} -- Don&#039;t edit this line.&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--                        Start configuration data                            --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- This table holds the values to use for &amp;quot;main=true&amp;quot;, &amp;quot;user=true&amp;quot;, etc. Keys to&lt;br /&gt;
-- this table should be namespace parameters that can be used with&lt;br /&gt;
-- [[Module:Namespace detect]]. &lt;br /&gt;
cfg.pagetypes = {&lt;br /&gt;
	[&#039;main&#039;]              = &#039;article&#039;,&lt;br /&gt;
	[&#039;user&#039;]              = &#039;user page&#039;,&lt;br /&gt;
	[&#039;project&#039;]           = &#039;project page&#039;,&lt;br /&gt;
	[&#039;wikipedia&#039;]         = &#039;project page&#039;,&lt;br /&gt;
	[&#039;wp&#039;]                = &#039;project page&#039;,&lt;br /&gt;
	[&#039;file&#039;]              = &#039;file&#039;,&lt;br /&gt;
	[&#039;image&#039;]             = &#039;file&#039;,&lt;br /&gt;
	[&#039;mediawiki&#039;]         = &#039;interface page&#039;,&lt;br /&gt;
	[&#039;template&#039;]          = &#039;template&#039;,&lt;br /&gt;
	[&#039;help&#039;]              = &#039;help page&#039;,&lt;br /&gt;
	[&#039;category&#039;]          = &#039;category&#039;,&lt;br /&gt;
	[&#039;portal&#039;]            = &#039;portal&#039;,&lt;br /&gt;
	[&#039;book&#039;]              = &#039;book&#039;,&lt;br /&gt;
	[&#039;draft&#039;]             = &#039;draft&#039;,&lt;br /&gt;
	[&#039;education program&#039;] = &#039;education program page&#039;,&lt;br /&gt;
	[&#039;timedtext&#039;]         = &#039;Timed Text page&#039;,&lt;br /&gt;
	[&#039;module&#039;]            = &#039;module&#039;,&lt;br /&gt;
	[&#039;talk&#039;]              = &#039;talk page&#039;,&lt;br /&gt;
	[&#039;special&#039;]           = &#039;special page&#039;,&lt;br /&gt;
	[&#039;media&#039;]             = &#039;file&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- This table holds the names of the namespaces to be looked up from&lt;br /&gt;
-- cfg.pagetypes by default.&lt;br /&gt;
cfg.defaultNamespaces = {&lt;br /&gt;
	&#039;main&#039;,&lt;br /&gt;
	&#039;file&#039;,&lt;br /&gt;
	&#039;template&#039;,&lt;br /&gt;
	&#039;category&#039;,&lt;br /&gt;
	&#039;module&#039;,&lt;br /&gt;
	&#039;book&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- This table holds the names of the namespaces to be looked up from&lt;br /&gt;
-- cfg.pagetypes if cfg.defaultnsExtended is set.&lt;br /&gt;
cfg.extendedNamespaces = {&lt;br /&gt;
	&#039;main&#039;,&lt;br /&gt;
	&#039;user&#039;,&lt;br /&gt;
	&#039;project&#039;,&lt;br /&gt;
	&#039;file&#039;,&lt;br /&gt;
	&#039;mediawiki&#039;,&lt;br /&gt;
	&#039;template&#039;,&lt;br /&gt;
	&#039;category&#039;,&lt;br /&gt;
	&#039;help&#039;,&lt;br /&gt;
	&#039;portal&#039;,&lt;br /&gt;
	&#039;module&#039;,&lt;br /&gt;
	&#039;book&#039;,&lt;br /&gt;
	&#039;draft&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- The parameter name to set which default namespace values to be looked up from&lt;br /&gt;
-- cfg.pagetypes.&lt;br /&gt;
cfg.defaultns = &#039;defaultns&#039;&lt;br /&gt;
&lt;br /&gt;
-- The value of cfg.defaultns to set all namespaces, including talk.&lt;br /&gt;
cfg.defaultnsAll = &#039;all&#039;&lt;br /&gt;
&lt;br /&gt;
-- The value of cfg.defaultns to set the namespaces listed in&lt;br /&gt;
-- cfg.extendedNamespaces&lt;br /&gt;
cfg.defaultnsExtended = &#039;extended&#039;&lt;br /&gt;
&lt;br /&gt;
-- The value of cfg.defaultns to set no default namespaces.&lt;br /&gt;
cfg.defaultnsNone = &#039;none&#039;&lt;br /&gt;
&lt;br /&gt;
-- The parameter name to use for disambiguation pages page.&lt;br /&gt;
cfg.dab = &#039;dab&#039;&lt;br /&gt;
&lt;br /&gt;
-- This table holds the different possible aliases for disambiguation-class&lt;br /&gt;
-- pages. These should be lower-case.&lt;br /&gt;
cfg.dabAliases = {&lt;br /&gt;
	&#039;disambiguation&#039;,&lt;br /&gt;
	&#039;disambig&#039;,&lt;br /&gt;
	&#039;disamb&#039;,&lt;br /&gt;
	&#039;dab&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- The default value for disambiguation pages.&lt;br /&gt;
cfg.dabDefault = &#039;page&#039;&lt;br /&gt;
&lt;br /&gt;
-- The parameter name to use for N/A-class page.&lt;br /&gt;
cfg.na = &#039;na&#039;&lt;br /&gt;
&lt;br /&gt;
-- This table holds the different possible aliases for N/A-class pages. These&lt;br /&gt;
-- should be lower-case.&lt;br /&gt;
cfg.naAliases = {&#039;na&#039;, &#039;n/a&#039;}&lt;br /&gt;
&lt;br /&gt;
-- The default value for N/A-class pages.&lt;br /&gt;
cfg.naDefault = &#039;page&#039;&lt;br /&gt;
&lt;br /&gt;
-- The parameter name to use for redirects.&lt;br /&gt;
cfg.redirect = &#039;redirect&#039;&lt;br /&gt;
&lt;br /&gt;
-- The default value to use for redirects.&lt;br /&gt;
cfg.redirectDefault = &#039;redirect&#039;&lt;br /&gt;
&lt;br /&gt;
-- The parameter name for undefined namespaces.&lt;br /&gt;
cfg.other = &#039;other&#039;&lt;br /&gt;
&lt;br /&gt;
-- The value used if the module detects an undefined namespace.&lt;br /&gt;
cfg.otherDefault = &#039;page&#039;&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--                        End configuration data                              --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
return cfg -- Don&#039;t edit this line&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Pagetype&amp;diff=1098</id>
		<title>Modul:Pagetype</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Pagetype&amp;diff=1098"/>
		<updated>2015-08-09T08:56:44Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Pagetype“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                                                                            --&lt;br /&gt;
--                                PAGETYPE                                    --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
--      This is a meta-module intended to replace {{pagetype}} and similar    --&lt;br /&gt;
--      templates. It automatically detects namespaces, and allows for a      --&lt;br /&gt;
--      great deal of customisation. It can easily be ported to other         --&lt;br /&gt;
--      wikis by changing the values in the [[Module:Pagetype/config]].       --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Load config.&lt;br /&gt;
local cfg = mw.loadData(&#039;Module:Pagetype/config&#039;)&lt;br /&gt;
&lt;br /&gt;
-- Load required modules.&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
local nsDetectModule = require(&#039;Module:Namespace detect&#039;)&lt;br /&gt;
local nsDetect = nsDetectModule._main&lt;br /&gt;
local getParamMappings = nsDetectModule.getParamMappings&lt;br /&gt;
local getPageObject = nsDetectModule.getPageObject&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function shallowCopy(t)&lt;br /&gt;
	-- Makes a shallow copy of a table.&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		ret[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function checkPagetypeInput(namespace, val)&lt;br /&gt;
	-- Checks to see whether we need the default value for the given namespace,&lt;br /&gt;
	-- and if so gets it from the pagetypes table.&lt;br /&gt;
	-- The yesno function returns true/false for &amp;quot;yes&amp;quot;, &amp;quot;no&amp;quot;, etc., and returns&lt;br /&gt;
	-- val for other input.&lt;br /&gt;
	local ret = yesno(val, val)&lt;br /&gt;
	if ret and type(ret) ~= &#039;string&#039; then&lt;br /&gt;
		ret = cfg.pagetypes[namespace]&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getPagetypeFromClass(class, param, aliasTable, default)&lt;br /&gt;
	-- Gets the pagetype from a class specified from the first positional&lt;br /&gt;
	-- parameter.&lt;br /&gt;
	param = yesno(param, param)&lt;br /&gt;
	if param ~= false then -- No check if specifically disallowed.&lt;br /&gt;
		for _, alias in ipairs(aliasTable) do&lt;br /&gt;
			if class == alias then&lt;br /&gt;
				if type(param) == &#039;string&#039; then&lt;br /&gt;
					return param&lt;br /&gt;
				else&lt;br /&gt;
					return default&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getNsDetectValue(args)&lt;br /&gt;
	-- Builds the arguments to pass to [[Module:Namespace detect]] and returns&lt;br /&gt;
	-- the result.&lt;br /&gt;
&lt;br /&gt;
	-- Get the default values.&lt;br /&gt;
	local ndArgs = {}&lt;br /&gt;
	local defaultns = args[cfg.defaultns]&lt;br /&gt;
	if defaultns == cfg.defaultnsAll then&lt;br /&gt;
		ndArgs = shallowCopy(cfg.pagetypes)&lt;br /&gt;
	else&lt;br /&gt;
		local defaultnsArray&lt;br /&gt;
		if defaultns == cfg.defaultnsExtended then&lt;br /&gt;
			defaultnsArray = cfg.extendedNamespaces&lt;br /&gt;
		elseif defaultns == cfg.defaultnsNone then&lt;br /&gt;
			defaultnsArray = {}&lt;br /&gt;
		else&lt;br /&gt;
			defaultnsArray = cfg.defaultNamespaces&lt;br /&gt;
		end&lt;br /&gt;
		for _, namespace in ipairs(defaultnsArray) do&lt;br /&gt;
			ndArgs[namespace] = cfg.pagetypes[namespace]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Add custom values passed in from the arguments. These overwrite the&lt;br /&gt;
	-- defaults. The possible argument names are fetched from&lt;br /&gt;
	-- Module:Namespace detect automatically in case new namespaces are&lt;br /&gt;
	-- added. Although we accept namespace aliases as parameters, we only pass&lt;br /&gt;
	-- the local namespace name as a parameter to Module:Namespace detect.&lt;br /&gt;
	-- This means that the &amp;quot;image&amp;quot; parameter can overwrite defaults for the&lt;br /&gt;
	-- File: namespace, which wouldn&#039;t work if we passed the parameters through&lt;br /&gt;
	-- separately.&lt;br /&gt;
	--]]&lt;br /&gt;
	local mappings = getParamMappings()&lt;br /&gt;
	for ns, paramAliases in pairs(mappings) do&lt;br /&gt;
		-- Copy the aliases table, as # doesn&#039;t work with tables returned from&lt;br /&gt;
		-- mw.loadData.&lt;br /&gt;
		paramAliases = shallowCopy(paramAliases)&lt;br /&gt;
		local paramName = paramAliases[1]&lt;br /&gt;
		-- Iterate backwards along the array so that any values for the local&lt;br /&gt;
		-- namespace names overwrite those for namespace aliases.&lt;br /&gt;
		for i = #paramAliases, 1, -1 do&lt;br /&gt;
			local paramAlias = paramAliases[i]&lt;br /&gt;
			local ndArg = checkPagetypeInput(paramAlias, args[paramAlias])&lt;br /&gt;
			if ndArg == false then&lt;br /&gt;
				-- If any arguments are false, convert them to nil to protect&lt;br /&gt;
				-- against breakage by future changes to&lt;br /&gt;
				-- [[Module:Namespace detect]].&lt;br /&gt;
				ndArgs[paramName] = nil&lt;br /&gt;
			elseif ndArg then&lt;br /&gt;
				ndArgs[paramName] = ndArg&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Check for disambiguation-class and N/A-class pages in mainspace.&lt;br /&gt;
	if ndArgs.main then&lt;br /&gt;
		local class = args[1]&lt;br /&gt;
		if type(class) == &#039;string&#039; then&lt;br /&gt;
			-- Put in lower case so e.g. &amp;quot;Dab&amp;quot; and &amp;quot;dab&amp;quot; will both match.&lt;br /&gt;
			class = mw.ustring.lower(class)&lt;br /&gt;
		end&lt;br /&gt;
		local dab = getPagetypeFromClass(&lt;br /&gt;
			class,&lt;br /&gt;
			args[cfg.dab],&lt;br /&gt;
			cfg.dabAliases,&lt;br /&gt;
			cfg.dabDefault&lt;br /&gt;
		)&lt;br /&gt;
		if dab then&lt;br /&gt;
			ndArgs.main = dab&lt;br /&gt;
		else&lt;br /&gt;
			local na = getPagetypeFromClass(&lt;br /&gt;
				class,&lt;br /&gt;
				args[cfg.na],&lt;br /&gt;
				cfg.naAliases,&lt;br /&gt;
				cfg.naDefault&lt;br /&gt;
			)&lt;br /&gt;
			if na then&lt;br /&gt;
				ndArgs.main = na&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- If there is no talk value specified, use the corresponding subject &lt;br /&gt;
	-- namespace for talk pages.&lt;br /&gt;
	if not ndArgs.talk then&lt;br /&gt;
		ndArgs.subjectns = true&lt;br /&gt;
	end&lt;br /&gt;
	-- Add the fallback value. This can also be customised, but it cannot be&lt;br /&gt;
	-- disabled.&lt;br /&gt;
	local other = args[cfg.other]&lt;br /&gt;
	-- We will ignore true/false/nil results from yesno here, but using it&lt;br /&gt;
	-- anyway for consistency.&lt;br /&gt;
	other = yesno(other, other)&lt;br /&gt;
	if type(other) == &#039;string&#039; then&lt;br /&gt;
		ndArgs.other = other&lt;br /&gt;
	else&lt;br /&gt;
		ndArgs.other = cfg.otherDefault&lt;br /&gt;
	end&lt;br /&gt;
	-- Allow custom page values.&lt;br /&gt;
	ndArgs.page = args.page&lt;br /&gt;
	return nsDetect(ndArgs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function detectRedirects(args)&lt;br /&gt;
	local redirect = args[cfg.redirect]&lt;br /&gt;
	-- The yesno function returns true/false for &amp;quot;yes&amp;quot;, &amp;quot;no&amp;quot;, etc., and returns&lt;br /&gt;
	-- redirect for other input.&lt;br /&gt;
	redirect = yesno(redirect, redirect)&lt;br /&gt;
	if redirect == false then&lt;br /&gt;
		-- Detect redirects unless they have been explicitly disallowed with&lt;br /&gt;
		-- &amp;quot;redirect=no&amp;quot; or similar.&lt;br /&gt;
		return&lt;br /&gt;
	end&lt;br /&gt;
	local pageObject = getPageObject(args.page)&lt;br /&gt;
	-- If we are using subject namespaces elsewhere, do so here as well.&lt;br /&gt;
	if pageObject&lt;br /&gt;
		and not yesno(args.talk, true)&lt;br /&gt;
		and args[cfg.defaultns] ~= cfg.defaultnsAll&lt;br /&gt;
	then&lt;br /&gt;
		pageObject = getPageObject(&lt;br /&gt;
			pageObject.subjectNsText .. &#039;:&#039; .. pageObject.text&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	-- Allow custom values for redirects.&lt;br /&gt;
	if pageObject and pageObject.isRedirect then&lt;br /&gt;
		if type(redirect) == &#039;string&#039; then&lt;br /&gt;
			return redirect&lt;br /&gt;
		else&lt;br /&gt;
			return cfg.redirectDefault&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local redirect = detectRedirects(args)&lt;br /&gt;
	if redirect then&lt;br /&gt;
		return redirect&lt;br /&gt;
	else&lt;br /&gt;
		return getNsDetectValue(args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame)&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>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:No_globals&amp;diff=1097</id>
		<title>Modul:No globals</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:No_globals&amp;diff=1097"/>
		<updated>2015-08-09T08:56:43Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:No globals“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local mt = getmetatable(_G) or {}&lt;br /&gt;
function mt.__index (t, k)&lt;br /&gt;
	if k ~= &#039;arg&#039; then&lt;br /&gt;
		error(&#039;Tried to read nil global &#039; .. tostring(k), 2)&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
function mt.__newindex(t, k, v)&lt;br /&gt;
	if k ~= &#039;arg&#039; then&lt;br /&gt;
		error(&#039;Tried to write global &#039; .. tostring(k), 2)&lt;br /&gt;
	end&lt;br /&gt;
	rawset(t, k, v)&lt;br /&gt;
end&lt;br /&gt;
setmetatable(_G, mt)&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Navbox&amp;diff=1096</id>
		<title>Modul:Navbox</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Navbox&amp;diff=1096"/>
		<updated>2015-08-09T08:56:42Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Navbox“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--&lt;br /&gt;
-- This module will implement {{Navbox}}&lt;br /&gt;
--&lt;br /&gt;
 &lt;br /&gt;
local p = {}&lt;br /&gt;
 &lt;br /&gt;
local HtmlBuilder = require(&#039;Module:HtmlBuilder&#039;)&lt;br /&gt;
local navbar = require(&#039;Module:Navbar&#039;)._navbar&lt;br /&gt;
local getArgs -- lazily initialized&lt;br /&gt;
&lt;br /&gt;
local args&lt;br /&gt;
local tableRowAdded = false&lt;br /&gt;
local border&lt;br /&gt;
local listnums = {}&lt;br /&gt;
 &lt;br /&gt;
local function trim(s)&lt;br /&gt;
    return (mw.ustring.gsub(s, &amp;quot;^%s*(.-)%s*$&amp;quot;, &amp;quot;%1&amp;quot;))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addNewline(s)&lt;br /&gt;
    if s:match(&#039;^[*:;#]&#039;) or s:match(&#039;^{|&#039;) then&lt;br /&gt;
        return &#039;\n&#039; .. s ..&#039;\n&#039;&lt;br /&gt;
    else&lt;br /&gt;
        return s&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addTableRow(tbl)&lt;br /&gt;
    -- If any other rows have already been added, then we add a 2px gutter row.&lt;br /&gt;
    if tableRowAdded then&lt;br /&gt;
        tbl&lt;br /&gt;
            .tag(&#039;tr&#039;)&lt;br /&gt;
                .css(&#039;height&#039;, &#039;2px&#039;)&lt;br /&gt;
                .tag(&#039;td&#039;)&lt;br /&gt;
                	.attr(&#039;colspan&#039;,2)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    tableRowAdded = true&lt;br /&gt;
    &lt;br /&gt;
    return tbl.tag(&#039;tr&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderNavBar(titleCell)&lt;br /&gt;
    -- Depending on the presence of the navbar and/or show/hide link, we may need to add a spacer div on the left&lt;br /&gt;
    -- or right to keep the title centered.&lt;br /&gt;
    local spacerSide = nil&lt;br /&gt;
&lt;br /&gt;
    if args.navbar == &#039;off&#039; then&lt;br /&gt;
        -- No navbar, and client wants no spacer, i.e. wants the title to be shifted to the left. If there&#039;s&lt;br /&gt;
        -- also no show/hide link, then we need a spacer on the right to achieve the left shift.&lt;br /&gt;
        if args.state == &#039;plain&#039; then spacerSide = &#039;right&#039; end&lt;br /&gt;
    elseif args.navbar == &#039;plain&#039; or (not args.name and (mw.getCurrentFrame():getParent():getTitle() == &#039;Template:Navbox&#039; or mw.getCurrentFrame():getParent():getTitle() == &#039;Vorlage:Navbox&#039;) &lt;br /&gt;
    	and (border == &#039;subgroup&#039; or border == &#039;child&#039; or border == &#039;none&#039;)) then&lt;br /&gt;
        -- No navbar. Need a spacer on the left to balance out the width of the show/hide link.&lt;br /&gt;
        if args.state ~= &#039;plain&#039; then spacerSide = &#039;left&#039; end&lt;br /&gt;
    else&lt;br /&gt;
        -- Will render navbar (or error message). If there&#039;s no show/hide link, need a spacer on the right&lt;br /&gt;
        -- to balance out the width of the navbar.&lt;br /&gt;
        if args.state == &#039;plain&#039; then spacerSide = &#039;right&#039; end&lt;br /&gt;
&lt;br /&gt;
        titleCell.wikitext(navbar{ &lt;br /&gt;
            args.name, &lt;br /&gt;
            mini = 1, &lt;br /&gt;
            fontstyle = (args.basestyle or &#039;&#039;) .. &#039;;&#039; .. (args.titlestyle or &#039;&#039;) ..  &#039;;background:none transparent;border:none;&#039;&lt;br /&gt;
        })&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- Render the spacer div.&lt;br /&gt;
    if spacerSide then&lt;br /&gt;
        titleCell&lt;br /&gt;
            .tag(&#039;span&#039;)&lt;br /&gt;
                .css(&#039;float&#039;, spacerSide)&lt;br /&gt;
                .css(&#039;width&#039;, &#039;6em&#039;)&lt;br /&gt;
                .wikitext(&#039;&amp;amp;nbsp;&#039;)&lt;br /&gt;
    end&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 = addTableRow(tbl)&lt;br /&gt;
     &lt;br /&gt;
    if args.titlegroup then&lt;br /&gt;
        titleRow&lt;br /&gt;
            .tag(&#039;th&#039;)&lt;br /&gt;
                .attr(&#039;scope&#039;, &#039;row&#039;)&lt;br /&gt;
                .addClass(&#039;navbox-group&#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(&#039;th&#039;).attr(&#039;scope&#039;, &#039;col&#039;)&lt;br /&gt;
            &lt;br /&gt;
    if args.titlegroup then&lt;br /&gt;
        titleCell&lt;br /&gt;
            .css(&#039;border-left&#039;, &#039;2px solid #fdfdfd&#039;)&lt;br /&gt;
            .css(&#039;width&#039;, &#039;100%&#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(&#039;navbox-title&#039;)&lt;br /&gt;
        .attr(&#039;colspan&#039;, titleColspan)&lt;br /&gt;
 &lt;br /&gt;
    renderNavBar(titleCell)&lt;br /&gt;
&lt;br /&gt;
    titleCell&lt;br /&gt;
         .tag(&#039;div&#039;)&lt;br /&gt;
             .addClass(args.titleclass)&lt;br /&gt;
             .css(&#039;font-size&#039;, &#039;110%&#039;)&lt;br /&gt;
             .wikitext(addNewline(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;
    addTableRow(tbl)&lt;br /&gt;
        .tag(&#039;td&#039;)&lt;br /&gt;
            .addClass(&#039;navbox-abovebelow&#039;)&lt;br /&gt;
            .addClass(args.aboveclass)&lt;br /&gt;
            .cssText(args.basestyle)&lt;br /&gt;
            .cssText(args.abovestyle)&lt;br /&gt;
            .attr(&#039;colspan&#039;, getAboveBelowColspan())&lt;br /&gt;
            .tag(&#039;div&#039;)&lt;br /&gt;
                .wikitext(addNewline(args.above))&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;
    addTableRow(tbl)&lt;br /&gt;
        .tag(&#039;td&#039;)&lt;br /&gt;
            .addClass(&#039;navbox-abovebelow&#039;)&lt;br /&gt;
            .addClass(args.belowclass)&lt;br /&gt;
            .cssText(args.basestyle)&lt;br /&gt;
            .cssText(args.belowstyle)&lt;br /&gt;
            .attr(&#039;colspan&#039;, getAboveBelowColspan())&lt;br /&gt;
            .tag(&#039;div&#039;)&lt;br /&gt;
                .wikitext(addNewline(args.below))&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, listnum)&lt;br /&gt;
    local row = addTableRow(tbl)&lt;br /&gt;
    &lt;br /&gt;
    if listnum == 1 and args.imageleft then&lt;br /&gt;
        row&lt;br /&gt;
            .tag(&#039;td&#039;)&lt;br /&gt;
                .addClass(&#039;navbox-image&#039;)&lt;br /&gt;
                .addClass(args.imageclass)&lt;br /&gt;
                .css(&#039;width&#039;, &#039;0%&#039;)&lt;br /&gt;
                .css(&#039;padding&#039;, &#039;0px 2px 0px 0px&#039;)&lt;br /&gt;
                .cssText(args.imageleftstyle)&lt;br /&gt;
                .attr(&#039;rowspan&#039;, 2 * #listnums - 1)&lt;br /&gt;
                .tag(&#039;div&#039;)&lt;br /&gt;
                    .wikitext(addNewline(args.imageleft))&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    if args[&#039;group&#039; .. listnum] then&lt;br /&gt;
        local groupCell = row.tag(&#039;th&#039;)&lt;br /&gt;
        &lt;br /&gt;
        groupCell&lt;br /&gt;
               .attr(&#039;scope&#039;, &#039;row&#039;)&lt;br /&gt;
               .addClass(&#039;navbox-group&#039;)&lt;br /&gt;
               .addClass(args.groupclass)&lt;br /&gt;
               .cssText(args.basestyle)&lt;br /&gt;
               &lt;br /&gt;
        if args.groupwidth then&lt;br /&gt;
            groupCell.css(&#039;width&#039;, args.groupwidth)&lt;br /&gt;
        end&lt;br /&gt;
           &lt;br /&gt;
        groupCell&lt;br /&gt;
            .cssText(args.groupstyle)&lt;br /&gt;
            .cssText(args[&#039;group&#039; .. listnum .. &#039;style&#039;])&lt;br /&gt;
            .wikitext(args[&#039;group&#039; .. listnum])&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local listCell = row.tag(&#039;td&#039;)&lt;br /&gt;
&lt;br /&gt;
    if args[&#039;group&#039; .. listnum] then&lt;br /&gt;
        listCell&lt;br /&gt;
            .css(&#039;text-align&#039;, &#039;left&#039;)&lt;br /&gt;
            .css(&#039;border-left-width&#039;, &#039;2px&#039;)&lt;br /&gt;
            .css(&#039;border-left-style&#039;, &#039;solid&#039;)&lt;br /&gt;
    else&lt;br /&gt;
        listCell.attr(&#039;colspan&#039;, 2)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    if not args.groupwidth then &lt;br /&gt;
        listCell.css(&#039;width&#039;, &#039;100%&#039;)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local isOdd = (listnum % 2) == 1&lt;br /&gt;
    local rowstyle = args.evenstyle&lt;br /&gt;
    if isOdd then rowstyle = args.oddstyle end&lt;br /&gt;
 &lt;br /&gt;
    local evenOdd&lt;br /&gt;
    if args.evenodd == &#039;swap&#039; then&lt;br /&gt;
        if isOdd then evenOdd = &#039;even&#039; else evenOdd = &#039;odd&#039; end&lt;br /&gt;
    else&lt;br /&gt;
        if isOdd then evenOdd = args.evenodd or &#039;odd&#039; else evenOdd = args.evenodd or &#039;even&#039; end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    listCell&lt;br /&gt;
        .css(&#039;padding&#039;, &#039;0px&#039;)&lt;br /&gt;
        .cssText(args.liststyle)&lt;br /&gt;
        .cssText(rowstyle)&lt;br /&gt;
        .cssText(args[&#039;list&#039; .. listnum .. &#039;style&#039;])&lt;br /&gt;
        .addClass(&#039;navbox-list&#039;)&lt;br /&gt;
        .addClass(&#039;navbox-&#039; .. evenOdd)&lt;br /&gt;
        .addClass(args.listclass)&lt;br /&gt;
        .tag(&#039;div&#039;)&lt;br /&gt;
            .css(&#039;padding&#039;, (listnum == 1 and args.list1padding) or args.listpadding or &#039;0em 0.25em&#039;)&lt;br /&gt;
            .wikitext(addNewline(args[&#039;list&#039; .. listnum]))&lt;br /&gt;
&lt;br /&gt;
    if listnum == 1 and args.image then&lt;br /&gt;
        row&lt;br /&gt;
            .tag(&#039;td&#039;)&lt;br /&gt;
                .addClass(&#039;navbox-image&#039;)&lt;br /&gt;
                .addClass(args.imageclass)&lt;br /&gt;
                .css(&#039;width&#039;, &#039;0%&#039;)&lt;br /&gt;
                .css(&#039;padding&#039;, &#039;0px 0px 0px 2px&#039;)&lt;br /&gt;
                .cssText(args.imagestyle)&lt;br /&gt;
                .attr(&#039;rowspan&#039;, 2 * #listnums - 1)&lt;br /&gt;
                .tag(&#039;div&#039;)&lt;br /&gt;
                    .wikitext(addNewline(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 == &#039;child&#039; or border == &#039;subgroup&#039;  or args.tracking == &#039;no&#039; then return false end&lt;br /&gt;
    &lt;br /&gt;
    local listClasses = {&#039;plainlist&#039;, &#039;hlist&#039;, &#039;hlist hnum&#039;, &#039;hlist hwrap&#039;, &#039;hlist vcard&#039;, &#039;vcard hlist&#039;, &#039;hlist vevent&#039;}&lt;br /&gt;
    for i, cls in ipairs(listClasses) do&lt;br /&gt;
        if args.listclass == cls or args.bodyclass == cls then&lt;br /&gt;
            return false&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasBackgroundColors()&lt;br /&gt;
    return mw.ustring.match(args.titlestyle or &#039;&#039;,&#039;background&#039;) or mw.ustring.match(args.groupstyle or &#039;&#039;,&#039;background&#039;) or mw.ustring.match(args.basestyle or &#039;&#039;,&#039;background&#039;)&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, &#039;Navigational boxes without horizontal lists&#039;) end&lt;br /&gt;
    -- if hasBackgroundColors() then table.insert(cats, &#039;Navboxes using background colours&#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 == &#039;doc&#039; or subpage == &#039;sandbox&#039; or subpage == &#039;testcases&#039; then return end&lt;br /&gt;
    &lt;br /&gt;
    for i, cat in ipairs(getTrackingCategories()) do&lt;br /&gt;
        builder.wikitext(&#039;[[Category:&#039; .. cat .. &#039;]]&#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 = HtmlBuilder.create(&#039;table&#039;)&lt;br /&gt;
        .attr(&#039;cellspacing&#039;, 0)&lt;br /&gt;
        .addClass(&#039;nowraplinks&#039;)&lt;br /&gt;
        .addClass(args.bodyclass)&lt;br /&gt;
             &lt;br /&gt;
    if args.title and (args.state ~= &#039;plain&#039; and args.state ~= &#039;off&#039;) then&lt;br /&gt;
        tbl&lt;br /&gt;
            .addClass(&#039;mw-collapsible&#039;)&lt;br /&gt;
            .addClass(args.state and (&#039;mw-&#039; .. args.state) or &#039;mw-autocollapse&#039;)&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    tbl.css(&#039;border-spacing&#039;, 0)&lt;br /&gt;
    if border == &#039;subgroup&#039; or border == &#039;child&#039; or border == &#039;none&#039; then&lt;br /&gt;
        tbl&lt;br /&gt;
            .addClass(&#039;navbox-subgroup&#039;)&lt;br /&gt;
            .cssText(args.bodystyle)&lt;br /&gt;
            .cssText(args.style)&lt;br /&gt;
    else -- regular navobx - bodystyle and style will be applied to the wrapper table&lt;br /&gt;
        tbl&lt;br /&gt;
            .addClass(&#039;navbox-inner&#039;)&lt;br /&gt;
            .css(&#039;background&#039;, &#039;transparent&#039;)&lt;br /&gt;
            .css(&#039;color&#039;, &#039;inherit&#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, 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;
    &lt;br /&gt;
    for k, v in pairs(args) do&lt;br /&gt;
        local listnum = (&#039;&#039; .. k):match(&#039;^list(%d+)$&#039;)&lt;br /&gt;
        if listnum then table.insert(listnums, tonumber(listnum)) end&lt;br /&gt;
    end&lt;br /&gt;
    table.sort(listnums)&lt;br /&gt;
 &lt;br /&gt;
    border = trim(args.border or args[1] or &#039;&#039;)&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 = HtmlBuilder.create()&lt;br /&gt;
    if border == &#039;none&#039; then&lt;br /&gt;
        res.node(tbl)&lt;br /&gt;
    elseif border == &#039;subgroup&#039; or border == &#039;child&#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&#039;s &amp;lt;/div&amp;gt;&lt;br /&gt;
        res&lt;br /&gt;
            .tag(&#039;/div&#039;, {unclosed = true})&lt;br /&gt;
                .done()&lt;br /&gt;
            .node(tbl)&lt;br /&gt;
            .tag(&#039;div&#039;, {unclosed = true})&lt;br /&gt;
    else&lt;br /&gt;
        res&lt;br /&gt;
            .tag(&#039;table&#039;)&lt;br /&gt;
                .attr(&#039;cellspacing&#039;, 0)&lt;br /&gt;
                .addClass(&#039;navbox&#039;)&lt;br /&gt;
                .css(&#039;border-spacing&#039;, 0)&lt;br /&gt;
                .cssText(args.bodystyle)&lt;br /&gt;
                .cssText(args.style)&lt;br /&gt;
                .tag(&#039;tr&#039;)&lt;br /&gt;
                    .tag(&#039;td&#039;)&lt;br /&gt;
                        .css(&#039;padding&#039;, &#039;2px&#039;)&lt;br /&gt;
                        .node(tbl)&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    renderTrackingCategories(res)&lt;br /&gt;
&lt;br /&gt;
    return 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(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
    end&lt;br /&gt;
    args = getArgs(frame, {wrappers = {&#039;Template:Navbox&#039;, &#039;Vorlage:Navbox&#039;}})&lt;br /&gt;
&lt;br /&gt;
    -- Read the arguments in the order they&#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>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Navbar&amp;diff=1095</id>
		<title>Modul:Navbar</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Navbar&amp;diff=1095"/>
		<updated>2015-08-09T08:56:41Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Navbar“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local getArgs&lt;br /&gt;
&lt;br /&gt;
function p._navbar(args)&lt;br /&gt;
	local titleArg = 1&lt;br /&gt;
&lt;br /&gt;
	if args.collapsible then&lt;br /&gt;
		titleArg = 2&lt;br /&gt;
		if not args.plain then&lt;br /&gt;
			args.mini = 1&lt;br /&gt;
		end&lt;br /&gt;
		if args.fontcolor then&lt;br /&gt;
			args.fontstyle = &#039;color:&#039; .. args.fontcolor .. &#039;;&#039;&lt;br /&gt;
		end&lt;br /&gt;
		args.style = &#039;float:left; text-align:left; width:6em;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local titleText = args[titleArg] or (&#039;:&#039; .. mw.getCurrentFrame():getParent():getTitle())&lt;br /&gt;
	--local title = mw.title.new(mw.text.trim(titleText), &#039;Template&#039;);&lt;br /&gt;
	local title = mw.title.new(&amp;quot;Navbar&amp;quot;, &#039;Template&#039;);&lt;br /&gt;
&lt;br /&gt;
	if not title then&lt;br /&gt;
		error(&#039;Invalid title &#039; .. titleText)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
	local div = mw.html.create(&#039;&#039;):tag(&#039;div&#039;)&lt;br /&gt;
	div&lt;br /&gt;
		:addClass(&#039;plainlinks&#039;)&lt;br /&gt;
		:addClass(&#039;hlist&#039;)&lt;br /&gt;
		:addClass(&#039;navbar&#039;)&lt;br /&gt;
		:cssText(args.style or &#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
	if args.mini then div:addClass(&#039;mini&#039;) end&lt;br /&gt;
&lt;br /&gt;
	if not (args.mini or args.plain) then&lt;br /&gt;
		div&lt;br /&gt;
			:tag(&#039;span&#039;)&lt;br /&gt;
				:css(&#039;word-spacing&#039;, 0)&lt;br /&gt;
				:cssText(args.fontstyle)&lt;br /&gt;
				:wikitext(args.text or &#039;This box:&#039;)&lt;br /&gt;
				:wikitext(&#039; &#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.brackets then&lt;br /&gt;
		div&lt;br /&gt;
			:tag(&#039;span&#039;)&lt;br /&gt;
				:css(&#039;margin-right&#039;, &#039;-0.125em&#039;)&lt;br /&gt;
				:cssText(args.fontstyle)&lt;br /&gt;
				:wikitext(&#039;&amp;amp;#91;&#039;)&lt;br /&gt;
				:newline();&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ul = div:tag(&#039;ul&#039;);&lt;br /&gt;
&lt;br /&gt;
	ul&lt;br /&gt;
		:tag(&#039;li&#039;)&lt;br /&gt;
			:addClass(&#039;nv-view&#039;)&lt;br /&gt;
			:wikitext(&#039;[[&#039; .. title.fullText .. &#039;|&#039;)&lt;br /&gt;
			:tag(&#039;span&#039;)&lt;br /&gt;
				:attr(&#039;title&#039;, &#039;View this template&#039;)&lt;br /&gt;
				:cssText(args.fontstyle or &#039;&#039;)&lt;br /&gt;
				:wikitext(args.mini and &#039;v&#039; or &#039;view&#039;)&lt;br /&gt;
				:done()&lt;br /&gt;
			:wikitext(&#039;]]&#039;)&lt;br /&gt;
			:done()&lt;br /&gt;
		:tag(&#039;li&#039;)&lt;br /&gt;
			:addClass(&#039;nv-talk&#039;)&lt;br /&gt;
			:wikitext(&#039;[[&#039; .. talkpage .. &#039;|&#039;)&lt;br /&gt;
			:tag(&#039;span&#039;)&lt;br /&gt;
				:attr(&#039;title&#039;, &#039;Discuss this template&#039;)&lt;br /&gt;
				:cssText(args.fontstyle or &#039;&#039;)&lt;br /&gt;
				:wikitext(args.mini and &#039;t&#039; or &#039;talk&#039;)&lt;br /&gt;
				:done()&lt;br /&gt;
			:wikitext(&#039;]]&#039;);&lt;br /&gt;
&lt;br /&gt;
	if not args.noedit then&lt;br /&gt;
		ul&lt;br /&gt;
			:tag(&#039;li&#039;)&lt;br /&gt;
				:addClass(&#039;nv-edit&#039;)&lt;br /&gt;
				:wikitext(&#039;[&#039; .. title:fullUrl(&#039;action=edit&#039;) .. &#039; &#039;)&lt;br /&gt;
				:tag(&#039;span&#039;)&lt;br /&gt;
					:attr(&#039;title&#039;, &#039;Edit this template&#039;)&lt;br /&gt;
					:cssText(args.fontstyle or &#039;&#039;)&lt;br /&gt;
					:wikitext(args.mini and &#039;e&#039; or &#039;edit&#039;)&lt;br /&gt;
					:done()&lt;br /&gt;
				:wikitext(&#039;]&#039;);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.brackets then&lt;br /&gt;
		div&lt;br /&gt;
			:tag(&#039;span&#039;)&lt;br /&gt;
				:css(&#039;margin-left&#039;, &#039;-0.125em&#039;)&lt;br /&gt;
				:cssText(args.fontstyle or &#039;&#039;)&lt;br /&gt;
				:wikitext(&#039;&amp;amp;#93;&#039;)&lt;br /&gt;
				:newline();&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.collapsible then&lt;br /&gt;
		div&lt;br /&gt;
			:done()&lt;br /&gt;
		:tag(&#039;span&#039;)&lt;br /&gt;
			:css(&#039;font-size&#039;, &#039;110%&#039;)&lt;br /&gt;
			:cssText(args.fontstyle or &#039;&#039;)&lt;br /&gt;
			:wikitext(args[1])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(div:done())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.navbar(frame)&lt;br /&gt;
	if not getArgs then&lt;br /&gt;
		getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
	end&lt;br /&gt;
	return p._navbar(getArgs(frame))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Namespace_detect/data&amp;diff=1094</id>
		<title>Modul:Namespace detect/data</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Namespace_detect/data&amp;diff=1094"/>
		<updated>2015-08-09T08:56:40Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Namespace detect/data“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                          Namespace detect data                             --&lt;br /&gt;
-- This module holds data for [[Module:Namespace detect]] to be loaded per    --&lt;br /&gt;
-- page, rather than per #invoke, for performance reasons.                    --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local cfg = require(&#039;Module:Namespace detect/config&#039;)&lt;br /&gt;
&lt;br /&gt;
local function addKey(t, key, defaultKey)&lt;br /&gt;
	if key ~= defaultKey then&lt;br /&gt;
		t[#t + 1] = key&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Get a table of parameters to query for each default parameter name.&lt;br /&gt;
-- This allows wikis to customise parameter names in the cfg table while&lt;br /&gt;
-- ensuring that default parameter names will always work. The cfg table&lt;br /&gt;
-- values can be added as a string, or as an array of strings.&lt;br /&gt;
&lt;br /&gt;
local defaultKeys = {&lt;br /&gt;
	&#039;main&#039;,&lt;br /&gt;
	&#039;talk&#039;,&lt;br /&gt;
	&#039;other&#039;,&lt;br /&gt;
	&#039;subjectns&#039;,&lt;br /&gt;
	&#039;demospace&#039;,&lt;br /&gt;
	&#039;demopage&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local argKeys = {}&lt;br /&gt;
for i, defaultKey in ipairs(defaultKeys) do&lt;br /&gt;
	argKeys[defaultKey] = {defaultKey}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for defaultKey, t in pairs(argKeys) do&lt;br /&gt;
	local cfgValue = cfg[defaultKey]&lt;br /&gt;
	local cfgValueType = type(cfgValue)&lt;br /&gt;
	if cfgValueType == &#039;string&#039; then&lt;br /&gt;
		addKey(t, cfgValue, defaultKey)&lt;br /&gt;
	elseif cfgValueType == &#039;table&#039; then&lt;br /&gt;
		for i, key in ipairs(cfgValue) do&lt;br /&gt;
			addKey(t, key, defaultKey)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	cfg[defaultKey] = nil -- Free the cfg value as we don&#039;t need it any more.&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getParamMappings()&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Returns a table of how parameter names map to namespace names. The keys&lt;br /&gt;
	-- are the actual namespace names, in lower case, and the values are the&lt;br /&gt;
	-- possible parameter names for that namespace, also in lower case. The&lt;br /&gt;
	-- table entries are structured like this:&lt;br /&gt;
	-- {&lt;br /&gt;
	--   [&#039;&#039;] = {&#039;main&#039;},&lt;br /&gt;
	--   [&#039;wikipedia&#039;] = {&#039;wikipedia&#039;, &#039;project&#039;, &#039;wp&#039;},&lt;br /&gt;
	--   ...&lt;br /&gt;
	-- }&lt;br /&gt;
	--]]&lt;br /&gt;
	local mappings = {}&lt;br /&gt;
	local mainNsName = mw.site.subjectNamespaces[0].name&lt;br /&gt;
	mainNsName = mw.ustring.lower(mainNsName)&lt;br /&gt;
	mappings[mainNsName] = mw.clone(argKeys.main)&lt;br /&gt;
	mappings[&#039;talk&#039;] = mw.clone(argKeys.talk)&lt;br /&gt;
	for nsid, ns in pairs(mw.site.subjectNamespaces) do&lt;br /&gt;
		if nsid ~= 0 then -- Exclude main namespace.&lt;br /&gt;
			local nsname = mw.ustring.lower(ns.name)&lt;br /&gt;
			local canonicalName = mw.ustring.lower(ns.canonicalName)&lt;br /&gt;
			mappings[nsname] = {nsname}&lt;br /&gt;
			if canonicalName ~= nsname then&lt;br /&gt;
				table.insert(mappings[nsname], canonicalName)&lt;br /&gt;
			end&lt;br /&gt;
			for _, alias in ipairs(ns.aliases) do&lt;br /&gt;
				table.insert(mappings[nsname], mw.ustring.lower(alias))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return mappings&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	argKeys = argKeys,&lt;br /&gt;
	cfg = cfg,&lt;br /&gt;
	mappings = getParamMappings()&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Namespace_detect/config&amp;diff=1093</id>
		<title>Modul:Namespace detect/config</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Namespace_detect/config&amp;diff=1093"/>
		<updated>2015-08-09T08:56:39Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Namespace detect/config“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                    Namespace detect configuration data                     --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- This module stores configuration data for Module:Namespace detect. Here    --&lt;br /&gt;
-- you can localise the module to your wiki&#039;s language.                       --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- To activate a configuration item, you need to uncomment it. This means     --&lt;br /&gt;
-- that you need to remove the text &amp;quot;-- &amp;quot; at the start of the line.           --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local cfg = {} -- Don&#039;t edit this line.&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--                              Parameter names                               --&lt;br /&gt;
-- These configuration items specify custom parameter names. Values added     --&lt;br /&gt;
-- here will work in addition to the default English parameter names.         --&lt;br /&gt;
-- To add one extra name, you can use this format:                            --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- cfg.foo = &#039;parameter name&#039;                                                 --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- To add multiple names, you can use this format:                            --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- cfg.foo = {&#039;parameter name 1&#039;, &#039;parameter name 2&#039;, &#039;parameter name 3&#039;}     --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
---- This parameter displays content for the main namespace:&lt;br /&gt;
-- cfg.main = &#039;Hauptstr&#039;&lt;br /&gt;
&lt;br /&gt;
---- This parameter displays in talk namespaces:&lt;br /&gt;
cfg.talk = &#039;Diskussion&#039;&lt;br /&gt;
&lt;br /&gt;
---- This parameter displays content for &amp;quot;other&amp;quot; namespaces (namespaces for which&lt;br /&gt;
---- parameters have not been specified):&lt;br /&gt;
-- cfg.other = &#039;other&#039;&lt;br /&gt;
&lt;br /&gt;
---- This parameter makes talk pages behave as though they are the corresponding&lt;br /&gt;
---- subject namespace. Note that this parameter is used with [[Module:Yesno]].&lt;br /&gt;
---- Edit that module to change the default values of &amp;quot;yes&amp;quot;, &amp;quot;no&amp;quot;, etc.&lt;br /&gt;
-- cfg.subjectns = &#039;subjectns&#039;&lt;br /&gt;
&lt;br /&gt;
---- This parameter sets a demonstration namespace:&lt;br /&gt;
-- cfg.demospace = &#039;demospace&#039;&lt;br /&gt;
&lt;br /&gt;
---- This parameter sets a specific page to compare:&lt;br /&gt;
cfg.demopage = &#039;page&#039;&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--                           Table configuration                              --&lt;br /&gt;
-- These configuration items allow customisation of the &amp;quot;table&amp;quot; function,     --&lt;br /&gt;
-- used to generate a table of possible parameters in the module              --&lt;br /&gt;
-- documentation.                                                             --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
---- The header for the namespace column in the wikitable containing the list of&lt;br /&gt;
---- possible subject-space parameters.&lt;br /&gt;
-- cfg.wikitableNamespaceHeader = &#039;Namespace&#039;&lt;br /&gt;
&lt;br /&gt;
---- The header for the wikitable containing the list of possible subject-space&lt;br /&gt;
---- parameters.&lt;br /&gt;
-- cfg.wikitableAliasesHeader = &#039;Aliases&#039;&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--                        End of configuration data                           --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
return cfg -- Don&#039;t edit this line.&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Namespace_detect&amp;diff=1092</id>
		<title>Modul:Namespace detect</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Namespace_detect&amp;diff=1092"/>
		<updated>2015-08-09T08:56:37Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Namespace detect“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--                                                                            --&lt;br /&gt;
--                            NAMESPACE DETECT                                --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- This module implements the {{namespace detect}} template in Lua, with a    --&lt;br /&gt;
-- few improvements: all namespaces and all namespace aliases are supported,  --&lt;br /&gt;
-- and namespace names are detected automatically for the local wiki. The     --&lt;br /&gt;
-- module can also use the corresponding subject namespace value if it is     --&lt;br /&gt;
-- used on a talk page. Parameter names can be configured for different wikis --&lt;br /&gt;
-- by altering the values in the &amp;quot;cfg&amp;quot; table in                               --&lt;br /&gt;
-- Module:Namespace detect/config.                                            --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local data = mw.loadData(&#039;Module:Namespace detect/data&#039;)&lt;br /&gt;
local argKeys = data.argKeys&lt;br /&gt;
local cfg = data.cfg&lt;br /&gt;
local mappings = data.mappings&lt;br /&gt;
&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
local mArguments -- Lazily initialise Module:Arguments&lt;br /&gt;
local mTableTools -- Lazily initilalise Module:TableTools&lt;br /&gt;
local ustringLower = mw.ustring.lower&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function fetchValue(t1, t2)&lt;br /&gt;
	-- Fetches a value from the table t1 for the first key in array t2 where&lt;br /&gt;
	-- a non-nil value of t1 exists.&lt;br /&gt;
	for i, key in ipairs(t2) do&lt;br /&gt;
		local value = t1[key]&lt;br /&gt;
		if value ~= nil then&lt;br /&gt;
			return value&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function equalsArrayValue(t, value)&lt;br /&gt;
	-- Returns true if value equals a value in the array t. Otherwise&lt;br /&gt;
	-- returns false.&lt;br /&gt;
	for i, arrayValue in ipairs(t) do&lt;br /&gt;
		if value == arrayValue then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getPageObject(page)&lt;br /&gt;
	-- Get the page object, passing the function through pcall in case of&lt;br /&gt;
	-- errors, e.g. being over the expensive function count limit.&lt;br /&gt;
	if page then&lt;br /&gt;
		local success, pageObject = pcall(mw.title.new, page)&lt;br /&gt;
		if success then&lt;br /&gt;
			return pageObject&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return mw.title.getCurrentTitle()&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Provided for backward compatibility with other modules&lt;br /&gt;
function p.getParamMappings()&lt;br /&gt;
	return mappings&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getNamespace(args)&lt;br /&gt;
	-- This function gets the namespace name from the page object.&lt;br /&gt;
	local page = fetchValue(args, argKeys.demopage)&lt;br /&gt;
	if page == &#039;&#039; then&lt;br /&gt;
		page = nil&lt;br /&gt;
	end&lt;br /&gt;
	local demospace = fetchValue(args, argKeys.demospace)&lt;br /&gt;
	if demospace == &#039;&#039; then&lt;br /&gt;
		demospace = nil&lt;br /&gt;
	end&lt;br /&gt;
	local subjectns = fetchValue(args, argKeys.subjectns)&lt;br /&gt;
	local ret&lt;br /&gt;
	if demospace then&lt;br /&gt;
		-- Handle &amp;quot;demospace = main&amp;quot; properly.&lt;br /&gt;
		if equalsArrayValue(argKeys.main, ustringLower(demospace)) then&lt;br /&gt;
			ret = mw.site.namespaces[0].name&lt;br /&gt;
		else&lt;br /&gt;
			ret = demospace&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		local pageObject = p.getPageObject(page)&lt;br /&gt;
		if pageObject then&lt;br /&gt;
			if pageObject.isTalkPage then&lt;br /&gt;
				-- Get the subject namespace if the option is set,&lt;br /&gt;
				-- otherwise use &amp;quot;talk&amp;quot;.&lt;br /&gt;
				if yesno(subjectns) then&lt;br /&gt;
					ret = mw.site.namespaces[pageObject.namespace].subject.name&lt;br /&gt;
				else&lt;br /&gt;
					ret = &#039;talk&#039;&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				ret = pageObject.nsText&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return nil -- return nil if the page object doesn&#039;t exist.&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	ret = ret:gsub(&#039;_&#039;, &#039; &#039;)&lt;br /&gt;
	return ustringLower(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	-- Check the parameters stored in the mappings table for any matches.&lt;br /&gt;
	local namespace = getNamespace(args) or &#039;other&#039; -- &amp;quot;other&amp;quot; avoids nil table keys&lt;br /&gt;
	local params = mappings[namespace] or {}&lt;br /&gt;
	local ret = fetchValue(args, params)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- If there were no matches, return parameters for other namespaces.&lt;br /&gt;
	-- This happens if there was no text specified for the namespace that&lt;br /&gt;
	-- was detected or if the demospace parameter is not a valid&lt;br /&gt;
	-- namespace. Note that the parameter for the detected namespace must be&lt;br /&gt;
	-- completely absent for this to happen, not merely blank.&lt;br /&gt;
	--]]&lt;br /&gt;
	if ret == nil then&lt;br /&gt;
		ret = fetchValue(args, argKeys.other)&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	mArguments = require(&#039;Module:Arguments&#039;)&lt;br /&gt;
	local args = mArguments.getArgs(frame, {removeBlanks = false})&lt;br /&gt;
	local ret = p._main(args)&lt;br /&gt;
	return ret or &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(frame)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Create a wikitable of all subject namespace parameters, for&lt;br /&gt;
	-- documentation purposes. The talk parameter is optional, in case it&lt;br /&gt;
	-- needs to be excluded in the documentation.&lt;br /&gt;
	--]]&lt;br /&gt;
	&lt;br /&gt;
	-- Load modules and initialise variables.&lt;br /&gt;
	mTableTools = require(&#039;Module:TableTools&#039;)&lt;br /&gt;
	local namespaces = mw.site.namespaces&lt;br /&gt;
	local cfg = data.cfg&lt;br /&gt;
	local useTalk = type(frame) == &#039;table&#039; &lt;br /&gt;
		and type(frame.args) == &#039;table&#039; &lt;br /&gt;
		and yesno(frame.args.talk) -- Whether to use the talk parameter.&lt;br /&gt;
	&lt;br /&gt;
	-- Get the header names.&lt;br /&gt;
	local function checkValue(value, default)&lt;br /&gt;
		if type(value) == &#039;string&#039; then&lt;br /&gt;
			return value&lt;br /&gt;
		else&lt;br /&gt;
			return default&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local nsHeader = checkValue(cfg.wikitableNamespaceHeader, &#039;Namespace&#039;)&lt;br /&gt;
	local aliasesHeader = checkValue(cfg.wikitableAliasesHeader, &#039;Aliases&#039;)&lt;br /&gt;
&lt;br /&gt;
	-- Put the namespaces in order.&lt;br /&gt;
	local mappingsOrdered = {}&lt;br /&gt;
	for nsname, params in pairs(mappings) do&lt;br /&gt;
		if useTalk or nsname ~= &#039;talk&#039; then&lt;br /&gt;
			local nsid = namespaces[nsname].id&lt;br /&gt;
			-- Add 1, as the array must start with 1; nsid 0 would be lost otherwise.&lt;br /&gt;
			nsid = nsid + 1 &lt;br /&gt;
			mappingsOrdered[nsid] = params&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	mappingsOrdered = mTableTools.compressSparseArray(mappingsOrdered)&lt;br /&gt;
&lt;br /&gt;
	-- Build the table.&lt;br /&gt;
	local ret = &#039;{| class=&amp;quot;wikitable&amp;quot;&#039;&lt;br /&gt;
		.. &#039;\n|-&#039;&lt;br /&gt;
		.. &#039;\n! &#039; .. nsHeader&lt;br /&gt;
		.. &#039;\n! &#039; .. aliasesHeader&lt;br /&gt;
	for i, params in ipairs(mappingsOrdered) do&lt;br /&gt;
		for j, param in ipairs(params) do&lt;br /&gt;
			if j == 1 then&lt;br /&gt;
				ret = ret .. &#039;\n|-&#039;&lt;br /&gt;
					.. &#039;\n| &amp;lt;code&amp;gt;&#039; .. param .. &#039;&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
					.. &#039;\n| &#039;&lt;br /&gt;
			elseif j == 2 then&lt;br /&gt;
				ret = ret .. &#039;&amp;lt;code&amp;gt;&#039; .. param .. &#039;&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
			else&lt;br /&gt;
				ret = ret .. &#039;, &amp;lt;code&amp;gt;&#039; .. param .. &#039;&amp;lt;/code&amp;gt;&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	ret = ret .. &#039;\n|-&#039;&lt;br /&gt;
		.. &#039;\n|}&#039;&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Message_box/configuration&amp;diff=1091</id>
		<title>Modul:Message box/configuration</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Message_box/configuration&amp;diff=1091"/>
		<updated>2015-08-09T08:56:36Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Message box/configuration“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local ambox = {&lt;br /&gt;
	types = {&lt;br /&gt;
		speedy = {&lt;br /&gt;
			class = &#039;ambox-speedy&#039;,&lt;br /&gt;
			image = &#039;Mbox deletion.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		delete = {&lt;br /&gt;
			class = &#039;ambox-delete&#039;,&lt;br /&gt;
			image = &#039;Mbox deletion.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		content = {&lt;br /&gt;
			class = &#039;ambox-content&#039;,&lt;br /&gt;
			image = &#039;Mbox content.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		style = {&lt;br /&gt;
			class = &#039;ambox-style&#039;,&lt;br /&gt;
			image = &#039;Mbox style.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		move = {&lt;br /&gt;
			class = &#039;ambox-move&#039;,&lt;br /&gt;
			image = &#039;Mbox move.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		protection = {&lt;br /&gt;
			class = &#039;ambox-protection&#039;,&lt;br /&gt;
			image = &#039;Padlock-silver.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		notice = {&lt;br /&gt;
			class = &#039;ambox-notice&#039;,&lt;br /&gt;
			image = &#039;Mbox notice.png&#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	default                     = &#039;notice&#039;,&lt;br /&gt;
	allowBlankParams            = {&#039;talk&#039;, &#039;sect&#039;, &#039;date&#039;, &#039;issue&#039;, &#039;fix&#039;, &#039;subst&#039;, &#039;hidden&#039;},&lt;br /&gt;
	allowSmall                  = true,&lt;br /&gt;
	smallParam                  = &#039;left&#039;,&lt;br /&gt;
	smallClass                  = &#039;mbox-small-left&#039;,&lt;br /&gt;
	substCheck                  = true,&lt;br /&gt;
	classes                     = {&#039;metadata&#039;, &#039;plainlinks&#039;, &#039;ambox&#039;},&lt;br /&gt;
	imageEmptyCell              = true,&lt;br /&gt;
	imageCheckBlank             = true,&lt;br /&gt;
	imageSmallSize              = &#039;20x20px&#039;,&lt;br /&gt;
	imageCellDiv                = true,&lt;br /&gt;
	useCollapsibleTextFields    = true,&lt;br /&gt;
	imageRightNone              = true,&lt;br /&gt;
	sectionDefault              = &#039;article&#039;,&lt;br /&gt;
	allowMainspaceCategories    = true,&lt;br /&gt;
--	templateCategory            = &#039;&#039;, -- &#039;Article message templates&#039;,&lt;br /&gt;
--	templateCategoryRequireName = false,&lt;br /&gt;
--	templateErrorCategory       = &#039;&#039;, --&#039;Article message templates with missing parameters&#039;,&lt;br /&gt;
--	templateErrorParamsToCheck  = {} -- {&#039;issue&#039;, &#039;fixed&#039;, &#039;subst&#039;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local cmbox = {&lt;br /&gt;
	types = {&lt;br /&gt;
		speedy = {&lt;br /&gt;
			class = &#039;cmbox-speedy&#039;,&lt;br /&gt;
			image = &#039;Mbox deletion.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		delete = {&lt;br /&gt;
			class = &#039;cmbox-delete&#039;,&lt;br /&gt;
			image = &#039;Mbox deletion.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		content = {&lt;br /&gt;
			class = &#039;cmbox-content&#039;,&lt;br /&gt;
			image = &#039;Mbox content.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		style = {&lt;br /&gt;
			class = &#039;cmbox-style&#039;,&lt;br /&gt;
			image = &#039;Mbox style.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		move = {&lt;br /&gt;
			class = &#039;cmbox-move&#039;,&lt;br /&gt;
			image = &#039;Mbox move.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		protection = {&lt;br /&gt;
			class = &#039;cmbox-protection&#039;,&lt;br /&gt;
			image = &#039;Padlock-silver.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		notice = {&lt;br /&gt;
			class = &#039;cmbox-notice&#039;,&lt;br /&gt;
			image = &#039;Mbox notice.png&#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	default              = &#039;notice&#039;,&lt;br /&gt;
	showInvalidTypeError = true,&lt;br /&gt;
	classes              = {&#039;plainlinks&#039;, &#039;cmbox&#039;},&lt;br /&gt;
	imageEmptyCell       = true&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local fmbox = {&lt;br /&gt;
	types = {&lt;br /&gt;
		warning = {&lt;br /&gt;
			class = &#039;fmbox-warning&#039;,&lt;br /&gt;
			image = &#039;Mbox deletion.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		editnotice = {&lt;br /&gt;
			class = &#039;fmbox-editnotice&#039;,&lt;br /&gt;
			image = &#039;Mbox notice.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		system = {&lt;br /&gt;
			class = &#039;fmbox-system&#039;,&lt;br /&gt;
			image = &#039;Mbox notice.png&#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	default              = &#039;system&#039;,&lt;br /&gt;
	showInvalidTypeError = true,&lt;br /&gt;
	allowId                = true,&lt;br /&gt;
	classes              = {&#039;plainlinks&#039;, &#039;fmbox&#039;},&lt;br /&gt;
	imageEmptyCell       = false,&lt;br /&gt;
	imageRightNone       = false&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local imbox = {&lt;br /&gt;
	types = {&lt;br /&gt;
		speedy = {&lt;br /&gt;
			class = &#039;imbox-speedy&#039;,&lt;br /&gt;
			image = &#039;Mbox deletion.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		delete = {&lt;br /&gt;
			class = &#039;imbox-delete&#039;,&lt;br /&gt;
			image = &#039;Mbox deletion.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		content = {&lt;br /&gt;
			class = &#039;imbox-content&#039;,&lt;br /&gt;
			image = &#039;Mbox content.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		style = {&lt;br /&gt;
			class = &#039;imbox-style&#039;,&lt;br /&gt;
			image = &#039;Mbox style.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		move = {&lt;br /&gt;
			class = &#039;imbox-move&#039;,&lt;br /&gt;
			image = &#039;Mbox move.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		protection = {&lt;br /&gt;
			class = &#039;imbox-protection&#039;,&lt;br /&gt;
			image = &#039;Padlock-silver.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		license = {&lt;br /&gt;
			class = &#039;imbox-license&#039;,&lt;br /&gt;
			image = &#039;Mbox license.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		featured = {&lt;br /&gt;
			class = &#039;imbox-featured&#039;,&lt;br /&gt;
			image = &#039;Mbox featured.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		notice = {&lt;br /&gt;
			class = &#039;imbox-notice&#039;,&lt;br /&gt;
			image = &#039;Mbox notice.png&#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	default              = &#039;notice&#039;,&lt;br /&gt;
	showInvalidTypeError = true,&lt;br /&gt;
	classes              = {&#039;imbox&#039;},&lt;br /&gt;
	usePlainlinksParam   = true,&lt;br /&gt;
	imageEmptyCell       = true,&lt;br /&gt;
	below                = true&lt;br /&gt;
--	templateCategory     = &#039;File message boxes&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local ombox = {&lt;br /&gt;
	types = {&lt;br /&gt;
		speedy = {&lt;br /&gt;
			class = &#039;ombox-speedy&#039;,&lt;br /&gt;
			image = &#039;Mbox deletion.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		delete = {&lt;br /&gt;
			class = &#039;ombox-delete&#039;,&lt;br /&gt;
			image = &#039;Mbox deletion.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		content = {&lt;br /&gt;
			class = &#039;ombox-content&#039;,&lt;br /&gt;
			image = &#039;Mbox content.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		style = {&lt;br /&gt;
			class = &#039;ombox-style&#039;,&lt;br /&gt;
			image = &#039;Mbox style.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		move = {&lt;br /&gt;
			class = &#039;ombox-move&#039;,&lt;br /&gt;
			image = &#039;Mbox move.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		protection = {&lt;br /&gt;
			class = &#039;ombox-protection&#039;,&lt;br /&gt;
			image = &#039;Padlock-silver.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		notice = {&lt;br /&gt;
			class = &#039;ombox-notice&#039;,&lt;br /&gt;
			image = &#039;Mbox notice.png&#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	default              = &#039;notice&#039;,&lt;br /&gt;
	showInvalidTypeError = true,&lt;br /&gt;
	classes              = {&#039;plainlinks&#039;, &#039;ombox&#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;
local tmbox = {&lt;br /&gt;
	types = {&lt;br /&gt;
		speedy = {&lt;br /&gt;
			class = &#039;tmbox-speedy&#039;,&lt;br /&gt;
			image = &#039;Mbox deletion.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		delete = {&lt;br /&gt;
			class = &#039;tmbox-delete&#039;,&lt;br /&gt;
			image = &#039;Mbox deletion.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		content = {&lt;br /&gt;
			class = &#039;tmbox-content&#039;,&lt;br /&gt;
			image = &#039;Mbox content.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		style = {&lt;br /&gt;
			class = &#039;tmbox-style&#039;,&lt;br /&gt;
			image = &#039;Mbox style.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		move = {&lt;br /&gt;
			class = &#039;tmbox-move&#039;,&lt;br /&gt;
			image = &#039;Mbox move.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		protection = {&lt;br /&gt;
			class = &#039;tmbox-protection&#039;,&lt;br /&gt;
			image = &#039;Padlock-silver.png&#039;&lt;br /&gt;
		},&lt;br /&gt;
		notice = {&lt;br /&gt;
			class = &#039;tmbox-notice&#039;,&lt;br /&gt;
			image = &#039;Mbox notice.png&#039;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	default              = &#039;notice&#039;,&lt;br /&gt;
	showInvalidTypeError = true,&lt;br /&gt;
	classes              = {&#039;plainlinks&#039;, &#039;tmbox&#039;},&lt;br /&gt;
	allowId              = true,&lt;br /&gt;
	allowSmall           = true,&lt;br /&gt;
	imageRightNone       = true,&lt;br /&gt;
	imageEmptyCell       = true,&lt;br /&gt;
	imageEmptyCellStyle  = true,&lt;br /&gt;
	templateCategory     = &#039;&#039; -- &#039;Talk message boxes&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	ambox = ambox,&lt;br /&gt;
	cmbox = cmbox,&lt;br /&gt;
	fmbox = fmbox,&lt;br /&gt;
	imbox = imbox,&lt;br /&gt;
	ombox = ombox,&lt;br /&gt;
	tmbox = tmbox&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Message_box&amp;diff=1090</id>
		<title>Modul:Message box</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Message_box&amp;diff=1090"/>
		<updated>2015-08-09T08:56:35Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Message box“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&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;
-- Require necessary modules.&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local htmlBuilder = require(&#039;Module:HtmlBuilder&#039;)&lt;br /&gt;
local categoryHandler = require(&#039;Module:Category handler&#039;).main&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
&lt;br /&gt;
-- Load the configuration page.&lt;br /&gt;
local cfgTables = mw.loadData(&#039;Module:Message box/configuration&#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;
-- Set aliases for often-used functions to reduce table lookups.&lt;br /&gt;
local format = mw.ustring.format&lt;br /&gt;
local tinsert = table.insert&lt;br /&gt;
local tconcat = table.concat&lt;br /&gt;
local trim = mw.text.trim&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function getTitleObject(page, ...)&lt;br /&gt;
	if type(page) == &#039;string&#039; then&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, page, ...)&lt;br /&gt;
		if success then&lt;br /&gt;
			return title&lt;br /&gt;
		end&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;
		tinsert(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), &#039;^&#039; .. prefix .. &#039;([1-9]%d*)$&#039;)&lt;br /&gt;
		if num then&lt;br /&gt;
			tinsert(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 box = {}&lt;br /&gt;
box.__index = box&lt;br /&gt;
&lt;br /&gt;
function box.new()&lt;br /&gt;
	local obj = {}&lt;br /&gt;
	setmetatable(obj, box)&lt;br /&gt;
	return obj&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box.getNamespaceId(ns)&lt;br /&gt;
	if not ns then return end&lt;br /&gt;
	if type(ns) == &#039;string&#039; then&lt;br /&gt;
		ns = lang:ucfirst(mw.ustring.lower(ns))&lt;br /&gt;
		if ns == &#039;Main&#039; then&lt;br /&gt;
			ns = 0&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local nsTable = mw.site.namespaces[ns]&lt;br /&gt;
	if nsTable then&lt;br /&gt;
		return nsTable.id&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box.getMboxType(nsid)&lt;br /&gt;
	-- Gets the mbox type from a namespace number.&lt;br /&gt;
	if nsid == 0 then&lt;br /&gt;
		return &#039;ambox&#039; -- main namespace&lt;br /&gt;
	elseif nsid == 6 then&lt;br /&gt;
		return &#039;imbox&#039; -- file namespace&lt;br /&gt;
	elseif nsid == 14 then&lt;br /&gt;
		return &#039;cmbox&#039; -- category namespace&lt;br /&gt;
	else&lt;br /&gt;
		local nsTable = mw.site.namespaces[nsid]&lt;br /&gt;
		if nsTable and nsTable.isTalk then&lt;br /&gt;
			return &#039;tmbox&#039; -- any talk namespace&lt;br /&gt;
		else&lt;br /&gt;
			return &#039;ombox&#039; -- other namespaces or invalid input&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box:addCat(ns, cat, sort)&lt;br /&gt;
	if type(cat) ~= &#039;string&#039; then return end&lt;br /&gt;
	local nsVals = {&#039;main&#039;, &#039;template&#039;, &#039;all&#039;}&lt;br /&gt;
	local tname&lt;br /&gt;
	for i, val in ipairs(nsVals) do&lt;br /&gt;
		if ns == val then&lt;br /&gt;
			tname = ns .. &#039;Cats&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not tname then&lt;br /&gt;
		for i, val in ipairs(nsVals) do&lt;br /&gt;
			nsVals[i] = format(&#039;&amp;quot;%s&amp;quot;&#039;, val)&lt;br /&gt;
		end&lt;br /&gt;
		error(&lt;br /&gt;
			&#039;invalid ns parameter passed to box:addCat; valid values are &#039;&lt;br /&gt;
			.. mw.text.listToText(nsVals, nil, &#039; or &#039;)&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	self[tname] = self[tname] or {}&lt;br /&gt;
	if type(sort) == &#039;string&#039; then&lt;br /&gt;
		tinsert(self[tname], format(&#039;[[Category:%s|%s]]&#039;, cat, sort))&lt;br /&gt;
	else&lt;br /&gt;
		tinsert(self[tname], format(&#039;[[Category:%s]]&#039;, cat))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box:addClass(class)&lt;br /&gt;
	if type(class) ~= &#039;string&#039; then return end&lt;br /&gt;
	self.classes = self.classes or {}&lt;br /&gt;
	tinsert(self.classes, class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box:addAttr(attr, val)&lt;br /&gt;
	if type(attr) ~= &#039;string&#039; or type(val) ~= &#039;string&#039; then return end&lt;br /&gt;
	self.attrs = self.attrs or {}&lt;br /&gt;
	tinsert(self.attrs, attr)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box:setTitle(args)&lt;br /&gt;
	-- Get the title object and the namespace.&lt;br /&gt;
	self.pageTitle = getTitleObject(args.page ~= &#039;&#039; and args.page)&lt;br /&gt;
	self.title = self.pageTitle or mw.title.getCurrentTitle()&lt;br /&gt;
	self.demospace = args.demospace ~= &#039;&#039; and args.demospace or nil&lt;br /&gt;
	self.nsid = box.getNamespaceId(self.demospace) or self.title.namespace&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box:getConfig(boxType)&lt;br /&gt;
	-- Get the box config data from the data page.&lt;br /&gt;
	if boxType == &#039;mbox&#039; then&lt;br /&gt;
		boxType = box.getMboxType(self.nsid)&lt;br /&gt;
	end&lt;br /&gt;
	local cfg = cfgTables[boxType]&lt;br /&gt;
	if not cfg then&lt;br /&gt;
		local boxTypes = {}&lt;br /&gt;
		for k, v in pairs(dataTables) do&lt;br /&gt;
			tinsert(boxTypes, format(&#039;&amp;quot;%s&amp;quot;&#039;, k))&lt;br /&gt;
		end&lt;br /&gt;
		tinsert(boxTypes, &#039;&amp;quot;mbox&amp;quot;&#039;)&lt;br /&gt;
		error(format(&lt;br /&gt;
			&#039;invalid message box type &amp;quot;%s&amp;quot;; valid types are %s&#039;,&lt;br /&gt;
			tostring(boxType),&lt;br /&gt;
			mw.text.listToText(boxTypes)&lt;br /&gt;
		), 2)&lt;br /&gt;
	end&lt;br /&gt;
	return cfg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box:removeBlankArgs(cfg, args)&lt;br /&gt;
	-- Only allow blank arguments for the parameter names listed in&lt;br /&gt;
	-- cfg.allowBlankParams.&lt;br /&gt;
	local newArgs = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if v ~= &#039;&#039; then&lt;br /&gt;
			newArgs[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for i, param in ipairs(cfg.allowBlankParams or {}) do&lt;br /&gt;
		newArgs[param] = args[param]&lt;br /&gt;
	end&lt;br /&gt;
	return newArgs&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box:setBoxParameters(cfg, args)&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;
		and true&lt;br /&gt;
		or false&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;
	if cfg.substCheck and args.subst == &#039;SUBST&#039; then&lt;br /&gt;
		self.isSubstituted = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Find whether we are using a small message box.&lt;br /&gt;
	if 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;
	then&lt;br /&gt;
		self.isSmall = true&lt;br /&gt;
	else&lt;br /&gt;
		self.isSmall = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add attributes, classes and styles.&lt;br /&gt;
	if cfg.allowId then&lt;br /&gt;
		self.id = args.id&lt;br /&gt;
	end&lt;br /&gt;
	self:addClass(&lt;br /&gt;
		cfg.usePlainlinksParam and yesno(args.plainlinks or true) and &#039;plainlinks&#039;&lt;br /&gt;
	)&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 &#039;mbox-small&#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;
				&#039;^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$&#039;&lt;br /&gt;
			) or self.name&lt;br /&gt;
			templateName = &#039;Template:&#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;
			or false&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 == &#039;&#039; then&lt;br /&gt;
				sect = &#039;This &#039; .. (cfg.sectionDefault or &#039;page&#039;)&lt;br /&gt;
			elseif type(args.sect) == &#039;string&#039; then&lt;br /&gt;
				sect = &#039;This &#039; .. args.sect&lt;br /&gt;
			end&lt;br /&gt;
			local issue = args.issue&lt;br /&gt;
			issue = type(issue) == &#039;string&#039; and issue ~= &#039;&#039; and issue or nil&lt;br /&gt;
			local text = args.text&lt;br /&gt;
			text = type(text) == &#039;string&#039; and text or nil&lt;br /&gt;
			local issues = {}&lt;br /&gt;
			tinsert(issues, sect)&lt;br /&gt;
			tinsert(issues, issue)&lt;br /&gt;
			tinsert(issues, text)&lt;br /&gt;
			self.issue = tconcat(issues, &#039; &#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 == &#039;&#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 = &#039;#&#039;&lt;br /&gt;
		elseif talk == &#039;&#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&#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 = &#039;Relevant discussion may be found on&#039;&lt;br /&gt;
				if talkArgIsTalkPage then&lt;br /&gt;
					talkText = format(&lt;br /&gt;
						&#039;%s [[%s|%s]].&#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 = format(&lt;br /&gt;
						&#039;%s the [[%s#%s|talk page]].&#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 ~= &#039;&#039; and args.fix or nil&lt;br /&gt;
		local date&lt;br /&gt;
		if args.date and args.date ~= &#039;&#039; then&lt;br /&gt;
			date = args.date&lt;br /&gt;
		elseif args.date == &#039;&#039; and self.isTemplatePage then&lt;br /&gt;
			date = lang:formatDate(&#039;F Y&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if date then&lt;br /&gt;
			self.date = format(&amp;quot; &amp;lt;small&amp;gt;&#039;&#039;(%s)&#039;&#039;&amp;lt;/small&amp;gt;&amp;quot;, date)&lt;br /&gt;
		end&lt;br /&gt;
		self.info = args.info&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 and true or false&lt;br /&gt;
	self.imageEmptyCell = cfg.imageEmptyCell&lt;br /&gt;
	if cfg.imageEmptyCellStyle then&lt;br /&gt;
		self.imageEmptyCellStyle = &#039;border:none;padding:0px;width:1px&#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 ~= &#039;blank&#039; and imageLeft ~= &#039;none&#039;&lt;br /&gt;
		or not cfg.imageCheckBlank and imageLeft ~= &#039;none&#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 &#039;30x30px&#039;)&lt;br /&gt;
				or &#039;40x40px&#039;&lt;br /&gt;
			self.imageLeft = format(&#039;[[File:%s|%s|link=|alt=]]&#039;, self.typeImage&lt;br /&gt;
				or &#039;Imbox notice.png&#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 == &#039;none&#039;) then&lt;br /&gt;
		self.imageRight = imageRight&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add mainspace categories. At the moment these are only used in {{ambox}}.&lt;br /&gt;
	if cfg.allowMainspaceCategories then&lt;br /&gt;
		if args.cat then&lt;br /&gt;
			args.cat1 = args.cat&lt;br /&gt;
		end&lt;br /&gt;
		self.catNums = getArgNums(args, &#039;cat&#039;)&lt;br /&gt;
		if args.category then&lt;br /&gt;
			args.category1 = args.category&lt;br /&gt;
		end&lt;br /&gt;
		self.categoryNums = getArgNums(args, &#039;category&#039;)&lt;br /&gt;
		if args.all then&lt;br /&gt;
			args.all1 = args.all&lt;br /&gt;
		end&lt;br /&gt;
		self.allNums = getArgNums(args, &#039;all&#039;)&lt;br /&gt;
		self.categoryParamNums = union(self.catNums, self.categoryNums)&lt;br /&gt;
		self.categoryParamNums = union(self.categoryParamNums, self.allNums)&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) == &#039;string&#039; and date&lt;br /&gt;
		local preposition = &#039;from&#039;&lt;br /&gt;
		for _, num in ipairs(self.categoryParamNums) do&lt;br /&gt;
			local mainCat = args[&#039;cat&#039; .. tostring(num)]&lt;br /&gt;
				or args[&#039;category&#039; .. tostring(num)]&lt;br /&gt;
			local allCat = args[&#039;all&#039; .. tostring(num)]&lt;br /&gt;
			mainCat = type(mainCat) == &#039;string&#039; and mainCat&lt;br /&gt;
			allCat = type(allCat) == &#039;string&#039; and allCat&lt;br /&gt;
			if mainCat and date and date ~= &#039;&#039; then&lt;br /&gt;
				local catTitle = format(&#039;%s %s %s&#039;, mainCat, preposition, date)&lt;br /&gt;
				self:addCat(&#039;main&#039;, catTitle)&lt;br /&gt;
				catTitle = getTitleObject(&#039;Category:&#039; .. catTitle)&lt;br /&gt;
				if not catTitle or not catTitle.exists then&lt;br /&gt;
					self:addCat(&lt;br /&gt;
						&#039;main&#039;,&lt;br /&gt;
						&#039;Articles with invalid date parameter in template&#039;&lt;br /&gt;
					)&lt;br /&gt;
				end&lt;br /&gt;
			elseif mainCat and (not date or date == &#039;&#039;) then&lt;br /&gt;
				self:addCat(&#039;main&#039;, mainCat)&lt;br /&gt;
			end&lt;br /&gt;
			if allCat then&lt;br /&gt;
				self:addCat(&#039;main&#039;, allCat)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add template-namespace 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(&#039;template&#039;, cfg.templateCategory)&lt;br /&gt;
			end&lt;br /&gt;
		elseif not self.title.isSubpage then&lt;br /&gt;
			self:addCat(&#039;template&#039;, cfg.templateCategory)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add template error category.&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 = &#039;C&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		self:addCat(&#039;template&#039;, templateCat, templateSort)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Categories for all namespaces.&lt;br /&gt;
	if self.invalidTypeError then&lt;br /&gt;
		local allSort = (self.nsid == 0 and &#039;Main:&#039; or &#039;&#039;) .. self.title.prefixedText&lt;br /&gt;
		self:addCat(&#039;all&#039;, &#039;Message box parameter needs fixing&#039;, allSort)&lt;br /&gt;
	end&lt;br /&gt;
	if self.isSubstituted then&lt;br /&gt;
		self:addCat(&#039;all&#039;, &#039;Pages with incorrectly substituted templates&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Convert category tables to strings and pass them through&lt;br /&gt;
	-- [[Module:Category handler]].&lt;br /&gt;
	self.categories = categoryHandler{&lt;br /&gt;
		main = tconcat(self.mainCats or {}),&lt;br /&gt;
		template = tconcat(self.templateCats or {}),&lt;br /&gt;
		all = tconcat(self.allCats or {}),&lt;br /&gt;
		nocat = args.nocat,&lt;br /&gt;
		demospace = self.demospace,&lt;br /&gt;
		page = self.pageTitle and self.pageTitle.prefixedText or nil&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function box:export()&lt;br /&gt;
	local root = htmlBuilder.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&lt;br /&gt;
			.tag(&#039;b&#039;)&lt;br /&gt;
				.addClass(&#039;error&#039;)&lt;br /&gt;
				.wikitext(format(&lt;br /&gt;
					&#039;Template &amp;lt;code&amp;gt;%s[[Template:%s|%s]]%s&amp;lt;/code&amp;gt; has been incorrectly substituted.&#039;,&lt;br /&gt;
					mw.text.nowiki(&#039;{{&#039;), self.name, self.name, mw.text.nowiki(&#039;}}&#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(&#039;table&#039;)&lt;br /&gt;
	boxTable&lt;br /&gt;
		.attr(&#039;id&#039;, self.id)&lt;br /&gt;
	for i, class in ipairs(self.classes or {}) do&lt;br /&gt;
		boxTable&lt;br /&gt;
			.addClass(class)&lt;br /&gt;
	end&lt;br /&gt;
	boxTable&lt;br /&gt;
		.cssText(self.style)&lt;br /&gt;
		.attr(&#039;role&#039;, &#039;presentation&#039;)&lt;br /&gt;
	for attr, val in pairs(self.attrs or {}) do&lt;br /&gt;
		boxTable&lt;br /&gt;
			.attr(attr, val)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the left-hand image.&lt;br /&gt;
	local row = boxTable.tag(&#039;tr&#039;)&lt;br /&gt;
	if self.imageLeft then&lt;br /&gt;
		local imageLeftCell = row.tag(&#039;td&#039;).addClass(&#039;mbox-image&#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(&#039;div&#039;).css(&#039;width&#039;, &#039;52px&#039;) &lt;br /&gt;
		end&lt;br /&gt;
		imageLeftCell&lt;br /&gt;
			.wikitext(self.imageLeft)&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&#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(&#039;td&#039;)&lt;br /&gt;
			.addClass(&#039;mbox-empty-cell&#039;) &lt;br /&gt;
			.cssText(self.imageEmptyCellStyle)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the text.&lt;br /&gt;
	local textCell = row.tag(&#039;td&#039;).addClass(&#039;mbox-text&#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&lt;br /&gt;
			.cssText(self.textstyle)&lt;br /&gt;
		local textCellSpan = textCell.tag(&#039;span&#039;)&lt;br /&gt;
		textCellSpan&lt;br /&gt;
			.addClass(&#039;mbox-text-span&#039;)&lt;br /&gt;
			.wikitext(self.issue)&lt;br /&gt;
		if not self.isSmall then&lt;br /&gt;
			textCellSpan&lt;br /&gt;
				.tag(&#039;span&#039;)&lt;br /&gt;
					.addClass(&#039;hide-when-compact&#039;)&lt;br /&gt;
					.wikitext(self.talk and &#039; &#039; .. self.talk)&lt;br /&gt;
					.wikitext(self.fix and &#039; &#039; .. self.fix)&lt;br /&gt;
		end&lt;br /&gt;
		textCellSpan&lt;br /&gt;
			.wikitext(self.date and &#039; &#039; .. self.date)&lt;br /&gt;
		if not self.isSmall then&lt;br /&gt;
			textCellSpan&lt;br /&gt;
				.tag(&#039;span&#039;)&lt;br /&gt;
				.addClass(&#039;hide-when-compact&#039;)&lt;br /&gt;
				.wikitext(self.info and &#039; &#039; .. self.info)&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)&lt;br /&gt;
			.wikitext(self.text)&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(&#039;td&#039;).addClass(&#039;mbox-imageright&#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(&#039;div&#039;).css(&#039;width&#039;, &#039;52px&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		imageRightCell&lt;br /&gt;
			.wikitext(self.imageRight)&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(&#039;tr&#039;)&lt;br /&gt;
			.tag(&#039;td&#039;)&lt;br /&gt;
				.attr(&#039;colspan&#039;, self.imageRight and &#039;3&#039; or &#039;2&#039;)&lt;br /&gt;
				.addClass(&#039;mbox-text&#039;)&lt;br /&gt;
				.cssText(self.textstyle)&lt;br /&gt;
				.wikitext(self.below)&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&lt;br /&gt;
			.tag(&#039;div&#039;)&lt;br /&gt;
				.css(&#039;text-align&#039;, &#039;center&#039;)&lt;br /&gt;
				.wikitext(format(&lt;br /&gt;
					&#039;This message box is using an invalid &amp;quot;type=%s&amp;quot; parameter and needs fixing.&#039;,&lt;br /&gt;
					self.type or &#039;&#039;&lt;br /&gt;
				))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add categories.&lt;br /&gt;
	root&lt;br /&gt;
		.wikitext(self.categories)&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function main(boxType, args)&lt;br /&gt;
	local outputBox = box.new()&lt;br /&gt;
	outputBox:setTitle(args)&lt;br /&gt;
	local cfg = outputBox:getConfig(boxType)&lt;br /&gt;
	args = outputBox:removeBlankArgs(cfg, args)&lt;br /&gt;
	outputBox:setBoxParameters(cfg, args)&lt;br /&gt;
	return outputBox:export()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeWrapper(boxType)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local args = getArgs(frame, {trim = false, removeBlanks = false})&lt;br /&gt;
		return main(boxType, args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local p = {&lt;br /&gt;
	main = main,&lt;br /&gt;
	mbox = makeWrapper(&#039;mbox&#039;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for boxType in pairs(cfgTables) do&lt;br /&gt;
	p[boxType] = makeWrapper(boxType)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Hatnote&amp;diff=1089</id>
		<title>Modul:Hatnote</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Hatnote&amp;diff=1089"/>
		<updated>2015-08-09T08:56:32Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Hatnote“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&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 hatnote link}} meta-templates, and --&lt;br /&gt;
-- includes helper functions for other Lua hatnote modules.                   --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#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(&#039;Module:Arguments&#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(&#039;^:?(.*)&#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 true.&lt;br /&gt;
	checkType(&#039;findNamespaceId&#039;, 1, link, &#039;string&#039;)&lt;br /&gt;
	checkType(&#039;findNamespaceId&#039;, 2, removeColon, &#039;boolean&#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(&#039;^(.-):&#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(&#039;formatPageTables&#039;, i, t, &#039;table&#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)&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(&#039;makeWikitextError&#039;, 1, msg, &#039;string&#039;)&lt;br /&gt;
	checkType(&#039;makeWikitextError&#039;, 2, helpLink, &#039;string&#039;, true)&lt;br /&gt;
	yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
	local title = 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 = &#039; ([[&#039; .. helpLink .. &#039;|help]])&#039;&lt;br /&gt;
	else&lt;br /&gt;
		helpText = &#039;&#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 = &#039;Hatnote templates with errors&#039;&lt;br /&gt;
		category = string.format(&lt;br /&gt;
			&#039;[[%s:%s]]&#039;,&lt;br /&gt;
			mw.site.namespaces[14].name,&lt;br /&gt;
			category&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		category = &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Error: %s%s.&amp;lt;/strong&amp;gt;%s&#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;
--------------------------------------------------------------------------------&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;
			&#039;no link specified&#039;,&lt;br /&gt;
			&#039;Template:Format hatnote link#Errors&#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;
	-- Find whether we need to use the colon trick or not. We need to use the&lt;br /&gt;
	-- colon trick for categories and files, as otherwise category links&lt;br /&gt;
	-- categorise the page and file links display the file.&lt;br /&gt;
	checkType(&#039;_formatLink&#039;, 1, link, &#039;string&#039;)&lt;br /&gt;
	checkType(&#039;_formatLink&#039;, 2, display, &#039;string&#039;, true)&lt;br /&gt;
	link = removeInitialColon(link)&lt;br /&gt;
	local namespace = p.findNamespaceId(link, false)&lt;br /&gt;
	local colon&lt;br /&gt;
	if namespace == 6 or namespace == 14 then&lt;br /&gt;
		colon = &#039;:&#039;&lt;br /&gt;
	else&lt;br /&gt;
		colon = &#039;&#039;&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(&#039;^(.-)#(.*)$&#039;)&lt;br /&gt;
		if page then&lt;br /&gt;
			display = page .. &#039; § &#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(&#039;[[%s%s|%s]]&#039;, colon, link, display)&lt;br /&gt;
	else&lt;br /&gt;
		return string.format(&#039;[[%s%s]]&#039;, colon, 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;
			&#039;no text specified&#039;,&lt;br /&gt;
			&#039;Template:Hatnote#Errors&#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(&#039;_hatnote&#039;, 1, s, &#039;string&#039;)&lt;br /&gt;
	checkType(&#039;_hatnote&#039;, 2, options, &#039;table&#039;, true)&lt;br /&gt;
	local classes = {&#039;hatnote&#039;}&lt;br /&gt;
	local extraclasses = options.extraclasses&lt;br /&gt;
	local selfref = options.selfref&lt;br /&gt;
	if type(extraclasses) == &#039;string&#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] = &#039;selfref&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&#039;&amp;lt;div class=&amp;quot;%s&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;,&lt;br /&gt;
		table.concat(classes, &#039; &#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>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Error&amp;diff=1088</id>
		<title>Modul:Error</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Error&amp;diff=1088"/>
		<updated>2015-08-09T08:56:31Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Error“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{error}}.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local HtmlBuilder = require(&#039;Module:HtmlBuilder&#039;)&lt;br /&gt;
&lt;br /&gt;
local function _error(args)&lt;br /&gt;
    local message = args.message or args[1] or error(&#039;no message specified&#039;, 2)&lt;br /&gt;
    message = tostring(message)&lt;br /&gt;
    local tag = mw.ustring.lower(tostring(args.tag))&lt;br /&gt;
&lt;br /&gt;
    -- Work out what html tag we should use.&lt;br /&gt;
    if not (tag == &#039;p&#039; or tag == &#039;span&#039; or tag == &#039;div&#039;) then&lt;br /&gt;
        tag = &#039;strong&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Generate the html.&lt;br /&gt;
    local root = HtmlBuilder.create(tag)&lt;br /&gt;
    root&lt;br /&gt;
        .addClass(&#039;error&#039;)&lt;br /&gt;
        .wikitext(message)&lt;br /&gt;
&lt;br /&gt;
    return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.error(frame)&lt;br /&gt;
    local args&lt;br /&gt;
    if frame == mw.getCurrentFrame() then&lt;br /&gt;
        -- We&#039;re being called via #invoke. The args are passed through to the module&lt;br /&gt;
        -- from the template page, so use the args that were passed into the template.&lt;br /&gt;
        args = frame.args&lt;br /&gt;
    else&lt;br /&gt;
        -- We&#039;re being called from another module or from the debug console, so assume&lt;br /&gt;
        -- the args are passed in directly.&lt;br /&gt;
        args = frame&lt;br /&gt;
    end&lt;br /&gt;
    -- if the message parameter is present but blank, change it to nil so that Lua will&lt;br /&gt;
    -- consider it false.&lt;br /&gt;
    if args.message == &amp;quot;&amp;quot; then&lt;br /&gt;
        args.message = nil&lt;br /&gt;
    end&lt;br /&gt;
    return _error(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Effective_protection_level&amp;diff=1087</id>
		<title>Modul:Effective protection level</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Effective_protection_level&amp;diff=1087"/>
		<updated>2015-08-09T08:56:30Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Effective protection level“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
local blacklistentry = nil&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) == &#039;table&#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 == &#039;autoreview&#039; then&lt;br /&gt;
		local level = mw.getCurrentFrame():callParserFunction(&#039;PENDINGCHANGELEVEL&#039;, pagename)&lt;br /&gt;
		if level == &#039;review&#039; then&lt;br /&gt;
			return &#039;reviewer&#039;&lt;br /&gt;
		elseif level ~= &#039;&#039; then&lt;br /&gt;
			return level&lt;br /&gt;
		else&lt;br /&gt;
			return nil -- not &#039;*&#039;. a page not being PC-protected is distinct from it being PC-protected with anyone able to review. also not &#039;&#039;, as that would mean PC-protected but nobody can review&lt;br /&gt;
		end&lt;br /&gt;
	elseif action ~= &#039;edit&#039; and action ~= &#039;move&#039; and action ~= &#039;create&#039; and action ~= &#039;upload&#039; then&lt;br /&gt;
		error( &#039;First parameter must be one of edit, move, create, upload, autoreview&#039;, 2 )&lt;br /&gt;
	end&lt;br /&gt;
	if title.namespace == 8 then -- MediaWiki namespace&lt;br /&gt;
		return &#039;sysop&#039;&lt;br /&gt;
	elseif title.namespace == 2 and title.isSubpage and ( title.contentModel == &#039;javascript&#039; or title.contentModel == &#039;css&#039; ) then -- user JS or CSS page&lt;br /&gt;
		return &#039;sysop&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local level = title.protectionLevels[action] and title.protectionLevels[action][1]&lt;br /&gt;
	if level == &#039;sysop&#039; then&lt;br /&gt;
		return &#039;sysop&#039;&lt;br /&gt;
	elseif title.cascadingProtection and title.cascadingProtection.restrictions[action] and title.cascadingProtection.restrictions[action][1] then -- used by a cascading-protected page&lt;br /&gt;
		return &#039;sysop&#039;&lt;br /&gt;
	elseif level == &#039;templateeditor&#039; then&lt;br /&gt;
		return &#039;templateeditor&#039;&lt;br /&gt;
	elseif action == &#039;move&#039; then&lt;br /&gt;
		-- no TitleBlacklist extension, so comment out&lt;br /&gt;
		-- local blacklistentry = mw.ext.TitleBlacklist.test(&#039;edit&#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 &#039;accountcreator&#039;&lt;br /&gt;
		elseif title.namespace == 6 then&lt;br /&gt;
			return &#039;filemover&#039;&lt;br /&gt;
		else&lt;br /&gt;
			return &#039;autoconfirmed&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- no TitleBlacklist extension, so comment out&lt;br /&gt;
	-- local blacklistentry = mw.ext.TitleBlacklist.test(action, pagename)&lt;br /&gt;
	if blacklistentry then&lt;br /&gt;
		return blacklistentry.params.autoconfirmed and &#039;autoconfirmed&#039; or &#039;accountcreator&#039;&lt;br /&gt;
	elseif level then&lt;br /&gt;
		return level&lt;br /&gt;
	elseif action == &#039;upload&#039; then&lt;br /&gt;
		return &#039;autoconfirmed&#039;&lt;br /&gt;
	elseif action == &#039;create&#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 &#039;user&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;*&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- unfortunately with REL1_23 setting of metatable doesn&#039;t seem to work.&lt;br /&gt;
-- more precisely: setting metatables works, but Scribunto strips them when the module is returned to the mw environment&lt;br /&gt;
-- you can thereby use metatables as long as you are within your module. but it gets lost at the final return :(&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;
&lt;br /&gt;
-- we have to declare a function for each action manually. reason see line 65ff&lt;br /&gt;
function p.edit(frame)&lt;br /&gt;
	return p._main(&#039;edit&#039;, frame.args[1])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.create(frame)&lt;br /&gt;
	return p._main(&#039;create&#039;, frame.args[1])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.move(frame)&lt;br /&gt;
	return p._main(&#039;move&#039;, frame.args[1])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.upload(frame)&lt;br /&gt;
	return p._main(&#039;upload&#039;, frame.args[1])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.autoreview(frame)&lt;br /&gt;
	return p._main(&#039;autoreview&#039;, frame.args[1])&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Documentation/config&amp;diff=1086</id>
		<title>Modul:Documentation/config</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Documentation/config&amp;diff=1086"/>
		<updated>2015-08-09T08:56:29Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Documentation/config“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----------------------------------------------------------------------------------------------------&lt;br /&gt;
--&lt;br /&gt;
--                               Configuration for Module:Documentation&lt;br /&gt;
--&lt;br /&gt;
-- Here you can set the values of the parameters and messages used in Module:Documentation to&lt;br /&gt;
-- localise it to your wiki and your language. Unless specified otherwise, values given here&lt;br /&gt;
-- should be string values.&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local cfg = {} -- Do not edit this line.&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Protection template configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;protection-template&#039;]&lt;br /&gt;
-- The name of the template that displays the protection icon (a padlock on enwiki).&lt;br /&gt;
cfg[&#039;protection-template&#039;] = &#039;pp-template&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;protection-reason-edit&#039;]&lt;br /&gt;
-- The protection reason for edit-protected templates to pass to&lt;br /&gt;
-- [[Module:Protection banner]].&lt;br /&gt;
cfg[&#039;protection-reason-edit&#039;] = &#039;template&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;protection-template-args&#039;]&lt;br /&gt;
-- Any arguments to send to the protection template. This should be a Lua table.&lt;br /&gt;
-- For example, if the protection template is &amp;quot;pp-template&amp;quot;, and the wikitext template invocation&lt;br /&gt;
-- looks like &amp;quot;{{pp-template|docusage=yes}}&amp;quot;, then this table should look like &amp;quot;{docusage = &#039;yes&#039;}&amp;quot;.&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;protection-template-args&#039;] = {docusage = &#039;yes&#039;}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Sandbox notice configuration&lt;br /&gt;
--&lt;br /&gt;
-- On sandbox pages the module can display a template notifying users that the current page is a&lt;br /&gt;
-- sandbox, and the location of test cases pages, etc. The module decides whether the page is a&lt;br /&gt;
-- sandbox or not based on the value of cfg[&#039;sandbox-subpage&#039;]. The following settings configure the&lt;br /&gt;
-- messages that the notices contains.&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;sandbox-notice-image&#039;]&lt;br /&gt;
-- The image displayed in the sandbox notice.&lt;br /&gt;
cfg[&#039;sandbox-notice-image&#039;] = &#039;[[Image:Sandbox.png|50px|alt=|link=]]&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;sandbox-notice-pagetype-template&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-pagetype-module&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-pagetype-other&#039;]&lt;br /&gt;
-- The page type of the sandbox page. The message that is displayed depends on the current subject&lt;br /&gt;
-- namespace. This message is used in either cfg[&#039;sandbox-notice-blurb&#039;] or&lt;br /&gt;
-- cfg[&#039;sandbox-notice-diff-blurb&#039;].&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;sandbox-notice-pagetype-template&#039;] = &#039;[[Wikipedia:Template test cases|template sandbox]] page&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-pagetype-module&#039;] = &#039;[[Wikipedia:Template test cases|module sandbox]] page&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-pagetype-other&#039;] = &#039;sandbox page&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;sandbox-notice-blurb&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-diff-blurb&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-diff-display&#039;]&lt;br /&gt;
-- Either cfg[&#039;sandbox-notice-blurb&#039;] or cfg[&#039;sandbox-notice-diff-blurb&#039;] is the opening sentence&lt;br /&gt;
-- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page&lt;br /&gt;
-- type, which is either cfg[&#039;sandbox-notice-pagetype-template&#039;],&lt;br /&gt;
-- cfg[&#039;sandbox-notice-pagetype-module&#039;] or cfg[&#039;sandbox-notice-pagetype-other&#039;] depending what&lt;br /&gt;
-- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between&lt;br /&gt;
-- the sandbox and the main template. The display value of the diff link is set by &lt;br /&gt;
-- cfg[&#039;sandbox-notice-compare-link-display&#039;].&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;sandbox-notice-blurb&#039;] = &#039;This is the $1 for $2.&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-diff-blurb&#039;] = &#039;This is the $1 for $2 ($3).&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-compare-link-display&#039;] = &#039;diff&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-blurb&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-link-display&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-run-blurb&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-run-link-display&#039;]&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-blurb&#039;] is a sentence notifying the user that there is a test cases page&lt;br /&gt;
-- corresponding to this sandbox that they can edit. $1 is a link to the test cases page.&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-link-display&#039;] is the display value for that link.&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-run-blurb&#039;] is a sentence notifying the user that there is a test cases page&lt;br /&gt;
-- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test&lt;br /&gt;
-- cases page, and $2 is a link to the page to run it.&lt;br /&gt;
-- cfg[&#039;sandbox-notice-testcases-run-link-display&#039;] is the display value for the link to run the test&lt;br /&gt;
-- cases.&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;sandbox-notice-testcases-blurb&#039;] = &#039;See also the companion subpage for $1.&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-testcases-link-display&#039;] = &#039;test cases&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-testcases-run-blurb&#039;] = &#039;See also the companion subpage for $1 ($2).&#039;&lt;br /&gt;
cfg[&#039;sandbox-notice-testcases-run-link-display&#039;] = &#039;run&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;sandbox-category&#039;]&lt;br /&gt;
-- A category to add to all template sandboxes.&lt;br /&gt;
cfg[&#039;sandbox-category&#039;] = &#039;Template sandboxes&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Start box configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;documentation-icon-wikitext&#039;]&lt;br /&gt;
-- The wikitext for the icon shown at the top of the template.&lt;br /&gt;
cfg[&#039;documentation-icon-wikitext&#039;] = &#039;[[File:Template-info.png|50px|link=|alt=Documentation icon]]&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;template-namespace-heading&#039;]&lt;br /&gt;
-- The heading shown in the template namespace.&lt;br /&gt;
cfg[&#039;template-namespace-heading&#039;] = &#039;Template documentation&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;module-namespace-heading&#039;]&lt;br /&gt;
-- The heading shown in the module namespace.&lt;br /&gt;
cfg[&#039;module-namespace-heading&#039;] = &#039;Module documentation&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;file-namespace-heading&#039;]&lt;br /&gt;
-- The heading shown in the file namespace.&lt;br /&gt;
cfg[&#039;file-namespace-heading&#039;] = &#039;Summary&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;other-namespaces-heading&#039;]&lt;br /&gt;
-- The heading shown in other namespaces.&lt;br /&gt;
cfg[&#039;other-namespaces-heading&#039;] = &#039;Documentation&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;view-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;view&amp;quot; links.&lt;br /&gt;
cfg[&#039;view-link-display&#039;] = &#039;view&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;edit-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;edit&amp;quot; links.&lt;br /&gt;
cfg[&#039;edit-link-display&#039;] = &#039;edit&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;history-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;history&amp;quot; links.&lt;br /&gt;
cfg[&#039;history-link-display&#039;] = &#039;history&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;purge-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;purge&amp;quot; links.&lt;br /&gt;
cfg[&#039;purge-link-display&#039;] = &#039;purge&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;create-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;create&amp;quot; links.&lt;br /&gt;
cfg[&#039;create-link-display&#039;] = &#039;create&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Link box (end box) configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;transcluded-from-blurb&#039;]&lt;br /&gt;
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.&lt;br /&gt;
cfg[&#039;transcluded-from-blurb&#039;] = &#039;The above [[Wikipedia:Template documentation|documentation]] is [[Wikipedia:Transclusion|transcluded]] from $1.&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;create-module-doc-blurb&#039;]&lt;br /&gt;
-- Notice displayed in the module namespace when the documentation subpage does not exist.&lt;br /&gt;
-- $1 is a link to create the documentation page with the preload cfg[&#039;module-preload&#039;] and the&lt;br /&gt;
-- display cfg[&#039;create-link-display&#039;].&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;create-module-doc-blurb&#039;] = &#039;You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Experiment blurb configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;experiment-blurb-template&#039;]&lt;br /&gt;
-- cfg[&#039;experiment-blurb-module&#039;]&lt;br /&gt;
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.&lt;br /&gt;
-- It is only shown in the template and module namespaces. With the default English settings, it&lt;br /&gt;
-- might look like this:&lt;br /&gt;
--&lt;br /&gt;
-- Editors can experiment in this template&#039;s sandbox (edit | diff) and testcases (edit) pages.&lt;br /&gt;
--&lt;br /&gt;
-- In this example, &amp;quot;sandbox&amp;quot;, &amp;quot;edit&amp;quot;, &amp;quot;diff&amp;quot;, &amp;quot;testcases&amp;quot;, and &amp;quot;edit&amp;quot; would all be links.&lt;br /&gt;
--&lt;br /&gt;
-- There are two versions, cfg[&#039;experiment-blurb-template&#039;] and cfg[&#039;experiment-blurb-module&#039;], depending&lt;br /&gt;
-- on what namespace we are in.&lt;br /&gt;
-- &lt;br /&gt;
-- Parameters:&lt;br /&gt;
--&lt;br /&gt;
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:&lt;br /&gt;
--&lt;br /&gt;
--     cfg[&#039;sandbox-link-display&#039;] (cfg[&#039;sandbox-edit-link-display&#039;] | cfg[&#039;compare-link-display&#039;])&lt;br /&gt;
-- &lt;br /&gt;
-- If the sandbox doesn&#039;t exist, it is in the format:&lt;br /&gt;
--&lt;br /&gt;
--     cfg[&#039;sandbox-link-display&#039;] (cfg[&#039;sandbox-create-link-display&#039;] | cfg[&#039;mirror-link-display&#039;])&lt;br /&gt;
-- &lt;br /&gt;
-- The link for cfg[&#039;sandbox-create-link-display&#039;] link preloads the page with cfg[&#039;template-sandbox-preload&#039;]&lt;br /&gt;
-- or cfg[&#039;module-sandbox-preload&#039;], depending on the current namespace. The link for cfg[&#039;mirror-link-display&#039;]&lt;br /&gt;
-- loads a default edit summary of cfg[&#039;mirror-edit-summary&#039;].&lt;br /&gt;
--&lt;br /&gt;
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:&lt;br /&gt;
--&lt;br /&gt;
--     cfg[&#039;testcases-link-display&#039;] (cfg[&#039;testcases-edit-link-display&#039;])&lt;br /&gt;
--&lt;br /&gt;
-- If the test cases page doesn&#039;t exist, it is in the format:&lt;br /&gt;
-- &lt;br /&gt;
--     cfg[&#039;testcases-link-display&#039;] (cfg[&#039;testcases-create-link-display&#039;])&lt;br /&gt;
--&lt;br /&gt;
-- If the test cases page doesn&#039;t exist, the link for cfg[&#039;testcases-create-link-display&#039;] preloads the&lt;br /&gt;
-- page with cfg[&#039;template-testcases-preload&#039;] or cfg[&#039;module-testcases-preload&#039;], depending on the current&lt;br /&gt;
-- namespace.&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;experiment-blurb-template&#039;] = &amp;quot;Editors can experiment in this template&#039;s $1 and $2 pages.&amp;quot;&lt;br /&gt;
cfg[&#039;experiment-blurb-module&#039;] = &amp;quot;Editors can experiment in this module&#039;s $1 and $2 pages.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Sandbox link configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;sandbox-subpage&#039;]&lt;br /&gt;
-- The name of the template subpage typically used for sandboxes.&lt;br /&gt;
cfg[&#039;sandbox-subpage&#039;] = &#039;sandbox&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;template-sandbox-preload&#039;]&lt;br /&gt;
-- Preload file for template sandbox pages.&lt;br /&gt;
cfg[&#039;template-sandbox-preload&#039;] = &#039;Template:Documentation/preload-sandbox&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;module-sandbox-preload&#039;]&lt;br /&gt;
-- Preload file for Lua module sandbox pages.&lt;br /&gt;
cfg[&#039;module-sandbox-preload&#039;] = &#039;Template:Documentation/preload-module-sandbox&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;sandbox-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;sandbox&amp;quot; links.&lt;br /&gt;
cfg[&#039;sandbox-link-display&#039;] = &#039;sandbox&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;sandbox-edit-link-display&#039;]&lt;br /&gt;
-- The text to display for sandbox &amp;quot;edit&amp;quot; links.&lt;br /&gt;
cfg[&#039;sandbox-edit-link-display&#039;] = &#039;edit&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;sandbox-create-link-display&#039;]&lt;br /&gt;
-- The text to display for sandbox &amp;quot;create&amp;quot; links.&lt;br /&gt;
cfg[&#039;sandbox-create-link-display&#039;] = &#039;create&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;compare-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;compare&amp;quot; links.&lt;br /&gt;
cfg[&#039;compare-link-display&#039;] = &#039;diff&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;mirror-edit-summary&#039;]&lt;br /&gt;
-- The default edit summary to use when a user clicks the &amp;quot;mirror&amp;quot; link. $1 is a wikilink to the&lt;br /&gt;
-- template page.&lt;br /&gt;
cfg[&#039;mirror-edit-summary&#039;] = &#039;Create sandbox version of $1&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;mirror-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;mirror&amp;quot; links.&lt;br /&gt;
cfg[&#039;mirror-link-display&#039;] = &#039;mirror&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Test cases link configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;testcases-subpage&#039;]&lt;br /&gt;
-- The name of the template subpage typically used for test cases.&lt;br /&gt;
cfg[&#039;testcases-subpage&#039;] = &#039;testcases&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;template-testcases-preload&#039;]&lt;br /&gt;
-- Preload file for template test cases pages.&lt;br /&gt;
cfg[&#039;template-testcases-preload&#039;] = &#039;Template:Documentation/preload-testcases&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;module-testcases-preload&#039;]&lt;br /&gt;
-- Preload file for Lua module test cases pages.&lt;br /&gt;
cfg[&#039;module-testcases-preload&#039;] = &#039;Template:Documentation/preload-module-testcases&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;testcases-link-display&#039;]&lt;br /&gt;
-- The text to display for &amp;quot;testcases&amp;quot; links.&lt;br /&gt;
cfg[&#039;testcases-link-display&#039;] = &#039;testcases&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;testcases-edit-link-display&#039;]&lt;br /&gt;
-- The text to display for test cases &amp;quot;edit&amp;quot; links.&lt;br /&gt;
cfg[&#039;testcases-edit-link-display&#039;] = &#039;edit&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;testcases-create-link-display&#039;]&lt;br /&gt;
-- The text to display for test cases &amp;quot;create&amp;quot; links.&lt;br /&gt;
cfg[&#039;testcases-create-link-display&#039;] = &#039;create&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Add categories blurb configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;add-categories-blurb&#039;]&lt;br /&gt;
-- Text to direct users to add categories to the /doc subpage. Not used if the &amp;quot;content&amp;quot; or&lt;br /&gt;
-- &amp;quot;docname fed&amp;quot; arguments are set, as then it is not clear where to add the categories. $1 is a&lt;br /&gt;
-- link to the /doc subpage with a display value of cfg[&#039;doc-link-display&#039;].&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;add-categories-blurb&#039;] = &#039;Please add categories to the $1 subpage.&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;doc-link-display&#039;]&lt;br /&gt;
-- The text to display when linking to the /doc subpage.&lt;br /&gt;
cfg[&#039;doc-link-display&#039;] = &#039;/doc&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Subpages link configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;subpages-blurb&#039;]&lt;br /&gt;
-- The &amp;quot;Subpages of this template&amp;quot; blurb. $1 is a link to the main template&#039;s subpages with a&lt;br /&gt;
-- display value of cfg[&#039;subpages-link-display&#039;]. In the English version this blurb is simply&lt;br /&gt;
-- the link followed by a period, and the link display provides the actual text.&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;subpages-blurb&#039;] = &#039;$1.&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- cfg[&#039;subpages-link-display&#039;]&lt;br /&gt;
-- The text to display for the &amp;quot;subpages of this page&amp;quot; link. $1 is cfg[&#039;template-pagetype&#039;],&lt;br /&gt;
-- cfg[&#039;module-pagetype&#039;] or cfg[&#039;default-pagetype&#039;], depending on whether the current page is in&lt;br /&gt;
-- the template namespace, the module namespace, or another namespace.&lt;br /&gt;
--]]&lt;br /&gt;
cfg[&#039;subpages-link-display&#039;] = &#039;Subpages of this $1&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;template-pagetype&#039;]&lt;br /&gt;
-- The pagetype to display for template pages.&lt;br /&gt;
cfg[&#039;template-pagetype&#039;] = &#039;template&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;module-pagetype&#039;]&lt;br /&gt;
-- The pagetype to display for Lua module pages.&lt;br /&gt;
cfg[&#039;module-pagetype&#039;] = &#039;module&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;default-pagetype&#039;]&lt;br /&gt;
-- The pagetype to display for pages other than templates or Lua modules.&lt;br /&gt;
cfg[&#039;default-pagetype&#039;] = &#039;page&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Doc link configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;doc-subpage&#039;]&lt;br /&gt;
-- The name of the subpage typically used for documentation pages.&lt;br /&gt;
cfg[&#039;doc-subpage&#039;] = &#039;doc&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;file-docpage-preload&#039;]&lt;br /&gt;
-- Preload file for documentation page in the file namespace.&lt;br /&gt;
cfg[&#039;file-docpage-preload&#039;] = &#039;Template:Documentation/preload-filespace&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;docpage-preload&#039;]&lt;br /&gt;
-- Preload file for template documentation pages in all namespaces.&lt;br /&gt;
cfg[&#039;docpage-preload&#039;] = &#039;Template:Documentation/preload&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;module-preload&#039;]&lt;br /&gt;
-- Preload file for Lua module documentation pages.&lt;br /&gt;
cfg[&#039;module-preload&#039;] = &#039;Template:Documentation/preload-module-doc&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Print version configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;print-subpage&#039;]&lt;br /&gt;
-- The name of the template subpage used for print versions.&lt;br /&gt;
cfg[&#039;print-subpage&#039;] = &#039;Print&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;print-link-display&#039;]&lt;br /&gt;
-- The text to display when linking to the /Print subpage.&lt;br /&gt;
cfg[&#039;print-link-display&#039;] = &#039;/Print&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;print-blurb&#039;]&lt;br /&gt;
-- Text to display if a /Print subpage exists. $1 is a link to the subpage with a display value of cfg[&#039;print-link-display&#039;].&lt;br /&gt;
cfg[&#039;print-blurb&#039;] = &#039;A [[Help:Books/for experts#Improving the book layout|print version]] of this template exists at $1.&#039;&lt;br /&gt;
	.. &#039; If you make a change to this template, please update the print version as well.&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;display-print-category&#039;]&lt;br /&gt;
-- Set to true to enable output of cfg[&#039;print-category&#039;] if a /Print subpage exists.&lt;br /&gt;
-- This should be a boolean value (either true or false).&lt;br /&gt;
cfg[&#039;display-print-category&#039;] = true&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;print-category&#039;]&lt;br /&gt;
-- Category to output if cfg[&#039;display-print-category&#039;] is set to true, and a /Print subpage exists.&lt;br /&gt;
cfg[&#039;print-category&#039;] = &#039;Templates with print versions&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- HTML and CSS configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;main-div-id&#039;]&lt;br /&gt;
-- The &amp;quot;id&amp;quot; attribute of the main HTML &amp;quot;div&amp;quot; tag.&lt;br /&gt;
cfg[&#039;main-div-id&#039;] = &#039;template-documentation&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;main-div-classes&#039;]&lt;br /&gt;
-- The CSS classes added to the main HTML &amp;quot;div&amp;quot; tag.&lt;br /&gt;
cfg[&#039;main-div-classes&#039;] = &#039;template-documentation iezoomfix&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;start-box-linkclasses&#039;]&lt;br /&gt;
-- The CSS classes used for the [view][edit][history] or [create] links in the start box.&lt;br /&gt;
cfg[&#039;start-box-linkclasses&#039;] = &#039;mw-editsection-like plainlinks&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;start-box-link-id&#039;]&lt;br /&gt;
-- The HTML &amp;quot;id&amp;quot; attribute for the links in the start box.&lt;br /&gt;
cfg[&#039;start-box-link-id&#039;] = &#039;doc_editlinks&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- {{fmbox}} template configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;fmbox-id&#039;]&lt;br /&gt;
-- The id sent to the &amp;quot;id&amp;quot; parameter of the {{fmbox}} template.&lt;br /&gt;
cfg[&#039;fmbox-id&#039;] = &#039;documentation-meta-data&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;fmbox-style&#039;]&lt;br /&gt;
-- The value sent to the style parameter of {{fmbox}}.&lt;br /&gt;
cfg[&#039;fmbox-style&#039;] = &#039;background-color: #ecfcf4&#039;&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;fmbox-textstyle&#039;]&lt;br /&gt;
-- The value sent to the &amp;quot;textstyle parameter of {{fmbox}}.&lt;br /&gt;
cfg[&#039;fmbox-textstyle&#039;] = &#039;font-style: italic&#039;&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- Tracking category configuration&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;display-strange-usage-category&#039;]&lt;br /&gt;
-- Set to true to enable output of cfg[&#039;strange-usage-category&#039;] if the module is used on a /doc subpage&lt;br /&gt;
-- or a /testcases subpage. This should be a boolean value (either true or false).&lt;br /&gt;
cfg[&#039;display-strange-usage-category&#039;] = true&lt;br /&gt;
&lt;br /&gt;
-- cfg[&#039;strange-usage-category&#039;]&lt;br /&gt;
-- Category to output if cfg[&#039;display-strange-usage-category&#039;] is set to true and the module is used on a&lt;br /&gt;
-- /doc subpage or a /testcases subpage.&lt;br /&gt;
cfg[&#039;strange-usage-category&#039;] = &#039;Wikipedia pages with strange ((documentation)) usage&#039;&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
-- End configuration&lt;br /&gt;
--&lt;br /&gt;
-- Don&#039;t edit anything below this line.&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
return cfg&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Documentation&amp;diff=1085</id>
		<title>Modul:Documentation</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Documentation&amp;diff=1085"/>
		<updated>2015-08-09T08:56:27Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Documentation“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{documentation}}.&lt;br /&gt;
&lt;br /&gt;
-- Get required modules.&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local messageBox = require(&#039;Module:Message box&#039;)&lt;br /&gt;
&lt;br /&gt;
-- Get the config table.&lt;br /&gt;
local cfg = mw.loadData(&#039;Module:Documentation/config&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Often-used functions.&lt;br /&gt;
local ugsub = mw.ustring.gsub&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--&lt;br /&gt;
-- These are defined as local functions, but are made available in the p&lt;br /&gt;
-- table for testing purposes.&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function message(cfgKey, valArray, expectType)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Gets a message from the cfg table and formats it if appropriate.&lt;br /&gt;
	-- The function raises an error if the value from the cfg table is not&lt;br /&gt;
	-- of the type expectType. The default type for expectType is &#039;string&#039;.&lt;br /&gt;
	-- If the table valArray is present, strings such as $1, $2 etc. in the&lt;br /&gt;
	-- message are substituted with values from the table keys [1], [2] etc.&lt;br /&gt;
	-- For example, if the message &amp;quot;foo-message&amp;quot; had the value &#039;Foo $2 bar $1.&#039;,&lt;br /&gt;
	-- message(&#039;foo-message&#039;, {&#039;baz&#039;, &#039;qux&#039;}) would return &amp;quot;Foo qux bar baz.&amp;quot;&lt;br /&gt;
	--]]&lt;br /&gt;
	local msg = cfg[cfgKey]&lt;br /&gt;
	expectType = expectType or &#039;string&#039;&lt;br /&gt;
	if type(msg) ~= expectType then&lt;br /&gt;
		error(&#039;message: type error in message cfg.&#039; .. cfgKey .. &#039; (&#039; .. expectType .. &#039; expected, got &#039; .. type(msg) .. &#039;)&#039;, 2)&lt;br /&gt;
	end&lt;br /&gt;
	if not valArray then&lt;br /&gt;
		return msg&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function getMessageVal(match)&lt;br /&gt;
		match = tonumber(match)&lt;br /&gt;
		return valArray[match] or error(&#039;message: no value found for key $&#039; .. match .. &#039; in message cfg.&#039; .. cfgKey, 4)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ret = ugsub(msg, &#039;$([1-9][0-9]*)&#039;, getMessageVal)&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.message = message&lt;br /&gt;
&lt;br /&gt;
local function makeWikilink(page, display)&lt;br /&gt;
	if display then&lt;br /&gt;
		return mw.ustring.format(&#039;[[%s|%s]]&#039;, page, display)&lt;br /&gt;
	else&lt;br /&gt;
		return mw.ustring.format(&#039;[[%s]]&#039;, page)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.makeWikilink = makeWikilink&lt;br /&gt;
&lt;br /&gt;
local function makeCategoryLink(cat, sort)&lt;br /&gt;
	local catns = mw.site.namespaces[14].name&lt;br /&gt;
	return makeWikilink(catns .. &#039;:&#039; .. cat, sort)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.makeCategoryLink = makeCategoryLink&lt;br /&gt;
&lt;br /&gt;
local function makeUrlLink(url, display)&lt;br /&gt;
	return mw.ustring.format(&#039;[%s %s]&#039;, url, display)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.makeUrlLink = makeUrlLink&lt;br /&gt;
&lt;br /&gt;
local function makeToolbar(...)&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	local lim = select(&#039;#&#039;, ...)&lt;br /&gt;
	if lim &amp;lt; 1 then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	for i = 1, lim do&lt;br /&gt;
		ret[#ret + 1] = select(i, ...)&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&amp;lt;small style=&amp;quot;font-style: normal;&amp;quot;&amp;gt;(&#039; .. table.concat(ret, &#039; &amp;amp;#124; &#039;) .. &#039;)&amp;lt;/small&amp;gt;&#039;&lt;br /&gt;
end	&lt;br /&gt;
&lt;br /&gt;
p.makeToolbar = makeToolbar&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Argument processing&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function makeInvokeFunc(funcName)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local args = getArgs(frame, {&lt;br /&gt;
			valueFunc = function (key, value)&lt;br /&gt;
				if type(value) == &#039;string&#039; then&lt;br /&gt;
					value = value:match(&#039;^%s*(.-)%s*$&#039;) -- Remove whitespace.&lt;br /&gt;
					if key == &#039;heading&#039; or value ~= &#039;&#039; then&lt;br /&gt;
						return value&lt;br /&gt;
					else&lt;br /&gt;
						return nil&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					return value&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		})&lt;br /&gt;
		return p[funcName](args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Main function&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
p.main = makeInvokeFunc(&#039;_main&#039;)&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- This function defines logic flow for the module.&lt;br /&gt;
	-- @args - table of arguments passed by the user&lt;br /&gt;
	-- &lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;main-div-id&#039; --&amp;gt; &#039;template-documentation&#039;&lt;br /&gt;
	-- &#039;main-div-classes&#039; --&amp;gt; &#039;template-documentation iezoomfix&#039;&lt;br /&gt;
	--]]&lt;br /&gt;
	local env = p.getEnvironment(args)&lt;br /&gt;
	local root = mw.html.create(&#039;&#039;)&lt;br /&gt;
	root&lt;br /&gt;
		:wikitext(p.protectionTemplate(env))&lt;br /&gt;
		:wikitext(p.sandboxNotice(args, env))&lt;br /&gt;
		 -- This div tag is from {{documentation/start box}}, but moving it here&lt;br /&gt;
		 -- so that we don&#039;t have to worry about unclosed tags.&lt;br /&gt;
		:tag(&#039;div&#039;)&lt;br /&gt;
			:attr(&#039;id&#039;, message(&#039;main-div-id&#039;))&lt;br /&gt;
			:addClass(message(&#039;main-div-classes&#039;))&lt;br /&gt;
			:newline()&lt;br /&gt;
			:wikitext(p._startBox(args, env))&lt;br /&gt;
			:wikitext(p._content(args, env))&lt;br /&gt;
			:tag(&#039;div&#039;)&lt;br /&gt;
				:css(&#039;clear&#039;, &#039;both&#039;) -- So right or left floating items don&#039;t stick out of the doc box.&lt;br /&gt;
				:newline()&lt;br /&gt;
				:done()&lt;br /&gt;
			:done()&lt;br /&gt;
		:wikitext(p._endBox(args, env))&lt;br /&gt;
		:wikitext(p.addTrackingCategories(env))&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Environment settings&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.getEnvironment(args)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Returns a table with information about the environment, including title objects and other namespace- or&lt;br /&gt;
	-- path-related data.&lt;br /&gt;
	-- @args - table of arguments passed by the user&lt;br /&gt;
	--&lt;br /&gt;
	-- Title objects include:&lt;br /&gt;
	-- env.title - the page we are making documentation for (usually the current title)&lt;br /&gt;
	-- env.templateTitle - the template (or module, file, etc.)&lt;br /&gt;
	-- env.docTitle - the /doc subpage.&lt;br /&gt;
	-- env.sandboxTitle - the /sandbox subpage.&lt;br /&gt;
	-- env.testcasesTitle - the /testcases subpage.&lt;br /&gt;
	-- env.printTitle - the print version of the template, located at the /Print subpage.&lt;br /&gt;
	--&lt;br /&gt;
	-- Data includes:&lt;br /&gt;
	-- env.protectionLevels - the protection levels table of the title object.&lt;br /&gt;
	-- env.subjectSpace - the number of the title&#039;s subject namespace.&lt;br /&gt;
	-- env.docSpace - the number of the namespace the title puts its documentation in.&lt;br /&gt;
	-- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace.&lt;br /&gt;
	-- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template.&lt;br /&gt;
	-- &lt;br /&gt;
	-- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value&lt;br /&gt;
	-- returned will be nil.&lt;br /&gt;
	--]]&lt;br /&gt;
	&lt;br /&gt;
	local env, envFuncs = {}, {}&lt;br /&gt;
&lt;br /&gt;
	-- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value&lt;br /&gt;
	-- returned by that function is memoized in the env table so that we don&#039;t call any of the functions&lt;br /&gt;
	-- more than once. (Nils won&#039;t be memoized.)&lt;br /&gt;
	setmetatable(env, {&lt;br /&gt;
		__index = function (t, key)&lt;br /&gt;
			local envFunc = envFuncs[key]&lt;br /&gt;
			if envFunc then&lt;br /&gt;
				local success, val = pcall(envFunc)&lt;br /&gt;
				if success then&lt;br /&gt;
					env[key] = val -- Memoise the value.&lt;br /&gt;
					return val&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	})	&lt;br /&gt;
&lt;br /&gt;
	function envFuncs.title()&lt;br /&gt;
		-- The title object for the current page, or a test page passed with args.page.&lt;br /&gt;
		local title&lt;br /&gt;
		local titleArg = args.page&lt;br /&gt;
		if titleArg then&lt;br /&gt;
			title = mw.title.new(titleArg)&lt;br /&gt;
		else&lt;br /&gt;
			title = mw.title.getCurrentTitle()&lt;br /&gt;
		end&lt;br /&gt;
		return title&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	function envFuncs.templateTitle()&lt;br /&gt;
		--[[&lt;br /&gt;
		-- The template (or module, etc.) title object.&lt;br /&gt;
		-- Messages:&lt;br /&gt;
		-- &#039;sandbox-subpage&#039; --&amp;gt; &#039;sandbox&#039;&lt;br /&gt;
		-- &#039;testcases-subpage&#039; --&amp;gt; &#039;testcases&#039;&lt;br /&gt;
		--]]&lt;br /&gt;
		local subjectSpace = env.subjectSpace&lt;br /&gt;
		local title = env.title&lt;br /&gt;
		local subpage = title.subpageText&lt;br /&gt;
		if subpage == message(&#039;sandbox-subpage&#039;) or subpage == message(&#039;testcases-subpage&#039;) then&lt;br /&gt;
			return mw.title.makeTitle(subjectSpace, title.baseText)&lt;br /&gt;
		else&lt;br /&gt;
			return mw.title.makeTitle(subjectSpace, title.text)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	function envFuncs.docTitle()&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Title object of the /doc subpage.&lt;br /&gt;
		-- Messages:&lt;br /&gt;
		-- &#039;doc-subpage&#039; --&amp;gt; &#039;doc&#039;&lt;br /&gt;
		--]]&lt;br /&gt;
		local title = env.title&lt;br /&gt;
		local docname = args[1] -- User-specified doc page.&lt;br /&gt;
		local docpage&lt;br /&gt;
		if docname then&lt;br /&gt;
			docpage = docname&lt;br /&gt;
		else&lt;br /&gt;
			docpage = env.docpageBase .. &#039;/&#039; .. message(&#039;doc-subpage&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		return mw.title.new(docpage)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	function envFuncs.sandboxTitle()&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Title object for the /sandbox subpage.&lt;br /&gt;
		-- Messages:&lt;br /&gt;
		-- &#039;sandbox-subpage&#039; --&amp;gt; &#039;sandbox&#039;&lt;br /&gt;
		--]]&lt;br /&gt;
		return mw.title.new(env.docpageBase .. &#039;/&#039; .. message(&#039;sandbox-subpage&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	function envFuncs.testcasesTitle()&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Title object for the /testcases subpage.&lt;br /&gt;
		-- Messages:&lt;br /&gt;
		-- &#039;testcases-subpage&#039; --&amp;gt; &#039;testcases&#039;&lt;br /&gt;
		--]]&lt;br /&gt;
		return mw.title.new(env.docpageBase .. &#039;/&#039; .. message(&#039;testcases-subpage&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	function envFuncs.printTitle()&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Title object for the /Print subpage.&lt;br /&gt;
		-- Messages:&lt;br /&gt;
		-- &#039;print-subpage&#039; --&amp;gt; &#039;Print&#039;&lt;br /&gt;
		--]]&lt;br /&gt;
		return env.templateTitle:subPageTitle(message(&#039;print-subpage&#039;))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	function envFuncs.protectionLevels()&lt;br /&gt;
		-- The protection levels table of the title object.&lt;br /&gt;
		return env.title.protectionLevels&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	function envFuncs.subjectSpace()&lt;br /&gt;
		-- The subject namespace number.&lt;br /&gt;
		return mw.site.namespaces[env.title.namespace].subject.id&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	function envFuncs.docSpace()&lt;br /&gt;
		-- The documentation namespace number. For most namespaces this is the same as the&lt;br /&gt;
		-- subject namespace. However, pages in the Article, File, MediaWiki or Category&lt;br /&gt;
		-- namespaces must have their /doc, /sandbox and /testcases pages in talk space.&lt;br /&gt;
		local subjectSpace = env.subjectSpace&lt;br /&gt;
		if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then&lt;br /&gt;
			return subjectSpace + 1&lt;br /&gt;
		else&lt;br /&gt;
			return subjectSpace&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	function envFuncs.docpageBase()&lt;br /&gt;
		-- The base page of the /doc, /sandbox, and /testcases subpages.&lt;br /&gt;
		-- For some namespaces this is the talk page, rather than the template page.&lt;br /&gt;
		local templateTitle = env.templateTitle&lt;br /&gt;
		local docSpace = env.docSpace&lt;br /&gt;
		local docSpaceText = mw.site.namespaces[docSpace].name&lt;br /&gt;
		-- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon.&lt;br /&gt;
		return docSpaceText .. &#039;:&#039; .. templateTitle.text&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	function envFuncs.compareUrl()&lt;br /&gt;
		-- Diff link between the sandbox and the main template using [[Special:ComparePages]].&lt;br /&gt;
		local templateTitle = env.templateTitle&lt;br /&gt;
		local sandboxTitle = env.sandboxTitle&lt;br /&gt;
		if templateTitle.exists and sandboxTitle.exists then&lt;br /&gt;
			local compareUrl = mw.uri.fullUrl(&lt;br /&gt;
				&#039;Special:ComparePages&#039;,&lt;br /&gt;
				{page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText}&lt;br /&gt;
			)&lt;br /&gt;
			return tostring(compareUrl)&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	end		&lt;br /&gt;
&lt;br /&gt;
	return env&lt;br /&gt;
end	&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Auxiliary templates&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.sandboxNotice(args, env)&lt;br /&gt;
	--[=[&lt;br /&gt;
	-- Generates a sandbox notice for display above sandbox pages.&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	-- &lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;sandbox-notice-image&#039; --&amp;gt; &#039;[[Image:Sandbox.svg|50px|alt=|link=]]&#039;&lt;br /&gt;
	-- &#039;sandbox-notice-blurb&#039; --&amp;gt; &#039;This is the $1 for $2.&#039;&lt;br /&gt;
	-- &#039;sandbox-notice-diff-blurb&#039; --&amp;gt; &#039;This is the $1 for $2 ($3).&#039;&lt;br /&gt;
	-- &#039;sandbox-notice-pagetype-template&#039; --&amp;gt; &#039;[[Wikipedia:Template test cases|template sandbox]] page&#039;&lt;br /&gt;
	-- &#039;sandbox-notice-pagetype-module&#039; --&amp;gt; &#039;[[Wikipedia:Template test cases|module sandbox]] page&#039;&lt;br /&gt;
	-- &#039;sandbox-notice-pagetype-other&#039; --&amp;gt; &#039;sandbox page&#039;&lt;br /&gt;
	-- &#039;sandbox-notice-compare-link-display&#039; --&amp;gt; &#039;diff&#039;&lt;br /&gt;
	-- &#039;sandbox-notice-testcases-blurb&#039; --&amp;gt; &#039;See also the companion subpage for $1.&#039;&lt;br /&gt;
	-- &#039;sandbox-notice-testcases-link-display&#039; --&amp;gt; &#039;test cases&#039;&lt;br /&gt;
	-- &#039;sandbox-category&#039; --&amp;gt; &#039;Template sandboxes&#039;&lt;br /&gt;
	--]=]&lt;br /&gt;
	local title = env.title&lt;br /&gt;
	local sandboxTitle = env.sandboxTitle&lt;br /&gt;
	local templateTitle = env.templateTitle&lt;br /&gt;
	local subjectSpace = env.subjectSpace&lt;br /&gt;
	if not (subjectSpace and title and sandboxTitle and templateTitle and mw.title.equals(title, sandboxTitle)) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	-- Build the table of arguments to pass to {{ombox}}. We need just two fields, &amp;quot;image&amp;quot; and &amp;quot;text&amp;quot;.&lt;br /&gt;
	local omargs = {}&lt;br /&gt;
	omargs.image = message(&#039;sandbox-notice-image&#039;)&lt;br /&gt;
	-- Get the text. We start with the opening blurb, which is something like&lt;br /&gt;
	-- &amp;quot;This is the template sandbox for [[Template:Foo]] (diff).&amp;quot;&lt;br /&gt;
	local text = &#039;&#039;&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	local isPreviewing = frame:preprocess(&#039;{{REVISIONID}}&#039;) == &#039;&#039; -- True if the page is being previewed.&lt;br /&gt;
	local pagetype&lt;br /&gt;
	if subjectSpace == 10 then&lt;br /&gt;
		pagetype = message(&#039;sandbox-notice-pagetype-template&#039;)&lt;br /&gt;
	elseif subjectSpace == 828 then&lt;br /&gt;
		pagetype = message(&#039;sandbox-notice-pagetype-module&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		pagetype = message(&#039;sandbox-notice-pagetype-other&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local templateLink = makeWikilink(templateTitle.prefixedText)&lt;br /&gt;
	local compareUrl = env.compareUrl&lt;br /&gt;
	if isPreviewing or not compareUrl then&lt;br /&gt;
		text = text .. message(&#039;sandbox-notice-blurb&#039;, {pagetype, templateLink})&lt;br /&gt;
	else&lt;br /&gt;
		local compareDisplay = message(&#039;sandbox-notice-compare-link-display&#039;)&lt;br /&gt;
		local compareLink = makeUrlLink(compareUrl, compareDisplay)&lt;br /&gt;
		text = text .. message(&#039;sandbox-notice-diff-blurb&#039;, {pagetype, templateLink, compareLink})&lt;br /&gt;
	end&lt;br /&gt;
	-- Get the test cases page blurb if the page exists. This is something like&lt;br /&gt;
	-- &amp;quot;See also the companion subpage for [[Template:Foo/testcases|test cases]].&amp;quot;&lt;br /&gt;
	local testcasesTitle = env.testcasesTitle&lt;br /&gt;
	if testcasesTitle and testcasesTitle.exists then&lt;br /&gt;
		if testcasesTitle.namespace == mw.site.namespaces.Module.id then&lt;br /&gt;
			local testcasesLinkDisplay = message(&#039;sandbox-notice-testcases-link-display&#039;)&lt;br /&gt;
			local testcasesRunLinkDisplay = message(&#039;sandbox-notice-testcases-run-link-display&#039;)&lt;br /&gt;
			local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)&lt;br /&gt;
			local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)&lt;br /&gt;
			text = text .. &#039;&amp;lt;br /&amp;gt;&#039; .. message(&#039;sandbox-notice-testcases-run-blurb&#039;, {testcasesLink, testcasesRunLink})&lt;br /&gt;
		else&lt;br /&gt;
			local testcasesLinkDisplay = message(&#039;sandbox-notice-testcases-link-display&#039;)&lt;br /&gt;
			local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)&lt;br /&gt;
			text = text .. &#039;&amp;lt;br /&amp;gt;&#039; .. message(&#039;sandbox-notice-testcases-blurb&#039;, {testcasesLink})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Add the sandbox to the sandbox category.&lt;br /&gt;
	text = text .. makeCategoryLink(message(&#039;sandbox-category&#039;))&lt;br /&gt;
	omargs.text = text&lt;br /&gt;
	local ret = &#039;&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	ret = ret .. messageBox.main(&#039;ombox&#039;, omargs)&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.protectionTemplate(env)&lt;br /&gt;
	-- Generates the padlock icon in the top right.&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;protection-template&#039; --&amp;gt; &#039;pp-template&#039;&lt;br /&gt;
	-- &#039;protection-template-args&#039; --&amp;gt; {docusage = &#039;yes&#039;}&lt;br /&gt;
	local protectionLevels, mProtectionBanner&lt;br /&gt;
	local title = env.title&lt;br /&gt;
	if title.namespace ~= 10 and title.namespace ~= 828 then&lt;br /&gt;
		-- Don&#039;t display the protection template if we are not in the template or module namespaces.&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	protectionLevels = env.protectionLevels&lt;br /&gt;
	if not protectionLevels then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local editProt = protectionLevels.edit and protectionLevels.edit[1]&lt;br /&gt;
	local moveProt = protectionLevels.move and protectionLevels.move[1]&lt;br /&gt;
	if editProt then&lt;br /&gt;
		-- The page is edit-protected.&lt;br /&gt;
		mProtectionBanner = require(&#039;Module:Protection banner&#039;)&lt;br /&gt;
		local reason = message(&#039;protection-reason-edit&#039;)&lt;br /&gt;
		return mProtectionBanner._main{reason, small = true}&lt;br /&gt;
	elseif moveProt and moveProt ~= &#039;autoconfirmed&#039; then&lt;br /&gt;
		-- The page is move-protected but not edit-protected. Exclude move&lt;br /&gt;
		-- protection with the level &amp;quot;autoconfirmed&amp;quot;, as this is equivalent to&lt;br /&gt;
		-- no move protection at all.&lt;br /&gt;
		mProtectionBanner = require(&#039;Module:Protection banner&#039;)&lt;br /&gt;
		return mProtectionBanner._main{action = &#039;move&#039;, small = true}&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Start box&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
p.startBox = makeInvokeFunc(&#039;_startBox&#039;)&lt;br /&gt;
&lt;br /&gt;
function p._startBox(args, env)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- This function generates the start box.&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	-- &lt;br /&gt;
	-- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make&lt;br /&gt;
	-- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox&lt;br /&gt;
	-- which generate the box HTML.&lt;br /&gt;
	--]]&lt;br /&gt;
	env = env or p.getEnvironment(args)&lt;br /&gt;
	local links&lt;br /&gt;
	local content = args.content&lt;br /&gt;
	if not content then&lt;br /&gt;
		-- No need to include the links if the documentation is on the template page itself.&lt;br /&gt;
		local linksData = p.makeStartBoxLinksData(args, env)&lt;br /&gt;
		if linksData then&lt;br /&gt;
			links = p.renderStartBoxLinks(linksData)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Generate the start box html.&lt;br /&gt;
	local data = p.makeStartBoxData(args, env, links)&lt;br /&gt;
	if data then&lt;br /&gt;
		return p.renderStartBox(data)&lt;br /&gt;
	else&lt;br /&gt;
		-- User specified no heading.&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeStartBoxLinksData(args, env)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Does initial processing of data to make the [view] [edit] [history] [purge] links.&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	-- &lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;view-link-display&#039; --&amp;gt; &#039;view&#039;&lt;br /&gt;
	-- &#039;edit-link-display&#039; --&amp;gt; &#039;edit&#039;&lt;br /&gt;
	-- &#039;history-link-display&#039; --&amp;gt; &#039;history&#039;&lt;br /&gt;
	-- &#039;purge-link-display&#039; --&amp;gt; &#039;purge&#039;&lt;br /&gt;
	-- &#039;file-docpage-preload&#039; --&amp;gt; &#039;Template:Documentation/preload-filespace&#039;&lt;br /&gt;
	-- &#039;module-preload&#039; --&amp;gt; &#039;Template:Documentation/preload-module-doc&#039;&lt;br /&gt;
	-- &#039;docpage-preload&#039; --&amp;gt; &#039;Template:Documentation/preload&#039;&lt;br /&gt;
	-- &#039;create-link-display&#039; --&amp;gt; &#039;create&#039;&lt;br /&gt;
	--]]&lt;br /&gt;
	local subjectSpace = env.subjectSpace&lt;br /&gt;
	local title = env.title&lt;br /&gt;
	local docTitle = env.docTitle&lt;br /&gt;
	if not title or not docTitle then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local data = {}&lt;br /&gt;
	data.title = title&lt;br /&gt;
	data.docTitle = docTitle&lt;br /&gt;
	-- View, display, edit, and purge links if /doc exists.&lt;br /&gt;
	data.viewLinkDisplay = message(&#039;view-link-display&#039;)&lt;br /&gt;
	data.editLinkDisplay = message(&#039;edit-link-display&#039;)&lt;br /&gt;
	data.historyLinkDisplay = message(&#039;history-link-display&#039;)&lt;br /&gt;
	data.purgeLinkDisplay = message(&#039;purge-link-display&#039;)&lt;br /&gt;
	-- Create link if /doc doesn&#039;t exist.&lt;br /&gt;
	local preload = args.preload&lt;br /&gt;
	if not preload then&lt;br /&gt;
		if subjectSpace == 6 then -- File namespace&lt;br /&gt;
			preload = message(&#039;file-docpage-preload&#039;)&lt;br /&gt;
		elseif subjectSpace == 828 then -- Module namespace&lt;br /&gt;
			preload = message(&#039;module-preload&#039;)&lt;br /&gt;
		else&lt;br /&gt;
			preload = message(&#039;docpage-preload&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	data.preload = preload&lt;br /&gt;
	data.createLinkDisplay = message(&#039;create-link-display&#039;)&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderStartBoxLinks(data)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Generates the [view][edit][history][purge] or [create] links from the data table.&lt;br /&gt;
	-- @data - a table of data generated by p.makeStartBoxLinksData&lt;br /&gt;
	--]]&lt;br /&gt;
	&lt;br /&gt;
	local function escapeBrackets(s)&lt;br /&gt;
		-- Escapes square brackets with HTML entities.&lt;br /&gt;
		s = s:gsub(&#039;%[&#039;, &#039;&amp;amp;#91;&#039;) -- Replace square brackets with HTML entities.&lt;br /&gt;
		s = s:gsub(&#039;%]&#039;, &#039;&amp;amp;#93;&#039;)&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ret&lt;br /&gt;
	local docTitle = data.docTitle&lt;br /&gt;
	local title = data.title&lt;br /&gt;
	if docTitle.exists then&lt;br /&gt;
		local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay)&lt;br /&gt;
		local editLink = makeUrlLink(docTitle:fullUrl{action = &#039;edit&#039;}, data.editLinkDisplay)&lt;br /&gt;
		local historyLink = makeUrlLink(docTitle:fullUrl{action = &#039;history&#039;}, data.historyLinkDisplay)&lt;br /&gt;
		local purgeLink = makeUrlLink(title:fullUrl{action = &#039;purge&#039;}, data.purgeLinkDisplay)&lt;br /&gt;
		ret = &#039;[%s] [%s] [%s] [%s]&#039;&lt;br /&gt;
		ret = escapeBrackets(ret)&lt;br /&gt;
		ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink)&lt;br /&gt;
	else&lt;br /&gt;
		local createLink = makeUrlLink(docTitle:fullUrl{action = &#039;edit&#039;, preload = data.preload}, data.createLinkDisplay)&lt;br /&gt;
		ret = &#039;[%s]&#039;&lt;br /&gt;
		ret = escapeBrackets(ret)&lt;br /&gt;
		ret = mw.ustring.format(ret, createLink)&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeStartBoxData(args, env, links)&lt;br /&gt;
	--[=[&lt;br /&gt;
	-- Does initial processing of data to pass to the start-box render function, p.renderStartBox.&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	-- @links - a string containing the [view][edit][history][purge] links - could be nil if there&#039;s an error.&lt;br /&gt;
	--&lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;documentation-icon-wikitext&#039; --&amp;gt; &#039;[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=Documentation icon]]&#039;&lt;br /&gt;
	-- &#039;template-namespace-heading&#039; --&amp;gt; &#039;Template documentation&#039;&lt;br /&gt;
	-- &#039;module-namespace-heading&#039; --&amp;gt; &#039;Module documentation&#039;&lt;br /&gt;
	-- &#039;file-namespace-heading&#039; --&amp;gt; &#039;Summary&#039;&lt;br /&gt;
	-- &#039;other-namespaces-heading&#039; --&amp;gt; &#039;Documentation&#039;&lt;br /&gt;
	-- &#039;start-box-linkclasses&#039; --&amp;gt; &#039;mw-editsection-like plainlinks&#039;&lt;br /&gt;
	-- &#039;start-box-link-id&#039; --&amp;gt; &#039;doc_editlinks&#039;&lt;br /&gt;
	-- &#039;testcases-create-link-display&#039; --&amp;gt; &#039;create&#039;&lt;br /&gt;
	--]=]&lt;br /&gt;
	local subjectSpace = env.subjectSpace&lt;br /&gt;
	if not subjectSpace then&lt;br /&gt;
		-- Default to an &amp;quot;other namespaces&amp;quot; namespace, so that we get at least some output&lt;br /&gt;
		-- if an error occurs.&lt;br /&gt;
		subjectSpace = 2&lt;br /&gt;
	end&lt;br /&gt;
	local data = {}&lt;br /&gt;
	&lt;br /&gt;
	-- Heading&lt;br /&gt;
	local heading = args.heading -- Blank values are not removed.&lt;br /&gt;
	if heading == &#039;&#039; then&lt;br /&gt;
		-- Don&#039;t display the start box if the heading arg is defined but blank.&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if heading then&lt;br /&gt;
		data.heading = heading&lt;br /&gt;
	elseif subjectSpace == 10 then -- Template namespace&lt;br /&gt;
		data.heading = message(&#039;documentation-icon-wikitext&#039;) .. &#039; &#039; .. message(&#039;template-namespace-heading&#039;)&lt;br /&gt;
	elseif subjectSpace == 828 then -- Module namespace&lt;br /&gt;
		data.heading = message(&#039;documentation-icon-wikitext&#039;) .. &#039; &#039; .. message(&#039;module-namespace-heading&#039;)&lt;br /&gt;
	elseif subjectSpace == 6 then -- File namespace&lt;br /&gt;
		data.heading = message(&#039;file-namespace-heading&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		data.heading = message(&#039;other-namespaces-heading&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Heading CSS&lt;br /&gt;
	local headingStyle = args[&#039;heading-style&#039;]&lt;br /&gt;
	if headingStyle then&lt;br /&gt;
		data.headingStyleText = headingStyle&lt;br /&gt;
	elseif subjectSpace == 10 then&lt;br /&gt;
		-- We are in the template or template talk namespaces.&lt;br /&gt;
		data.headingFontWeight = &#039;bold&#039;&lt;br /&gt;
		data.headingFontSize = &#039;125%&#039;&lt;br /&gt;
	else&lt;br /&gt;
		data.headingFontSize = &#039;150%&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Data for the [view][edit][history][purge] or [create] links.&lt;br /&gt;
	if links then&lt;br /&gt;
		data.linksClass = message(&#039;start-box-linkclasses&#039;)&lt;br /&gt;
		data.linksId = message(&#039;start-box-link-id&#039;)&lt;br /&gt;
		data.links = links&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderStartBox(data)&lt;br /&gt;
	-- Renders the start box html.&lt;br /&gt;
	-- @data - a table of data generated by p.makeStartBoxData.&lt;br /&gt;
	local sbox = mw.html.create(&#039;div&#039;)&lt;br /&gt;
	sbox&lt;br /&gt;
		:css(&#039;padding-bottom&#039;, &#039;3px&#039;)&lt;br /&gt;
		:css(&#039;border-bottom&#039;, &#039;1px solid #aaa&#039;)&lt;br /&gt;
		:css(&#039;margin-bottom&#039;, &#039;1ex&#039;)&lt;br /&gt;
		:newline()&lt;br /&gt;
		:tag(&#039;span&#039;)&lt;br /&gt;
			:cssText(data.headingStyleText or &#039;&#039;)&lt;br /&gt;
			:css(&#039;font-weight&#039;, data.headingFontWeight or &#039;&#039;)&lt;br /&gt;
			:css(&#039;font-size&#039;, data.headingFontSize or &#039;&#039;)&lt;br /&gt;
			:wikitext(data.heading)&lt;br /&gt;
	local links = data.links&lt;br /&gt;
	if links then&lt;br /&gt;
		sbox:tag(&#039;span&#039;)&lt;br /&gt;
			:addClass(data.linksClass or &#039;&#039;)&lt;br /&gt;
			:attr(&#039;id&#039;, data.linksId or &#039;&#039;)&lt;br /&gt;
			:wikitext(links)&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(sbox)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Documentation content&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
p.content = makeInvokeFunc(&#039;_content&#039;)&lt;br /&gt;
&lt;br /&gt;
function p._content(args, env)&lt;br /&gt;
	-- Displays the documentation contents&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	env = env or p.getEnvironment(args)&lt;br /&gt;
	local docTitle = env.docTitle&lt;br /&gt;
	local content = args.content&lt;br /&gt;
	if not content and docTitle and docTitle.exists then&lt;br /&gt;
		content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText}&lt;br /&gt;
	end&lt;br /&gt;
	-- The line breaks below are necessary so that &amp;quot;=== Headings ===&amp;quot; at the start and end&lt;br /&gt;
	-- of docs are interpreted correctly.&lt;br /&gt;
	return &#039;\n&#039; .. (content or &#039;&#039;) .. &#039;\n&#039; &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.contentTitle = makeInvokeFunc(&#039;_contentTitle&#039;)&lt;br /&gt;
&lt;br /&gt;
function p._contentTitle(args, env)&lt;br /&gt;
	env = env or p.getEnvironment(args)&lt;br /&gt;
	local docTitle = env.docTitle&lt;br /&gt;
	if not args.content and docTitle and docTitle.exists then&lt;br /&gt;
		return docTitle.prefixedText&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- End box&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
p.endBox = makeInvokeFunc(&#039;_endBox&#039;)&lt;br /&gt;
&lt;br /&gt;
function p._endBox(args, env)&lt;br /&gt;
	--[=[&lt;br /&gt;
	-- This function generates the end box (also known as the link box).&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	-- &lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;fmbox-id&#039; --&amp;gt; &#039;documentation-meta-data&#039;&lt;br /&gt;
	-- &#039;fmbox-style&#039; --&amp;gt; &#039;background-color: #ecfcf4&#039;&lt;br /&gt;
	-- &#039;fmbox-textstyle&#039; --&amp;gt; &#039;font-style: italic&#039;&lt;br /&gt;
	-- &lt;br /&gt;
	-- The HTML is generated by the {{fmbox}} template, courtesy of [[Module:Message box]].&lt;br /&gt;
	--]=]&lt;br /&gt;
	&lt;br /&gt;
	-- Get environment data.&lt;br /&gt;
	env = env or p.getEnvironment(args)&lt;br /&gt;
	local subjectSpace = env.subjectSpace&lt;br /&gt;
	local docTitle = env.docTitle&lt;br /&gt;
	if not subjectSpace or not docTitle then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
		&lt;br /&gt;
	-- Check whether we should output the end box at all. Add the end&lt;br /&gt;
	-- box by default if the documentation exists or if we are in the&lt;br /&gt;
	-- user, module or template namespaces.&lt;br /&gt;
	local linkBox = args[&#039;link box&#039;]&lt;br /&gt;
	if linkBox == &#039;off&#039;&lt;br /&gt;
		or not (&lt;br /&gt;
			docTitle.exists&lt;br /&gt;
			or subjectSpace == 2&lt;br /&gt;
			or subjectSpace == 828&lt;br /&gt;
			or subjectSpace == 10&lt;br /&gt;
		)&lt;br /&gt;
	then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Assemble the arguments for {{fmbox}}.&lt;br /&gt;
	local fmargs = {}&lt;br /&gt;
	fmargs.id = message(&#039;fmbox-id&#039;) -- Sets &#039;documentation-meta-data&#039;&lt;br /&gt;
	fmargs.image = &#039;none&#039;&lt;br /&gt;
	fmargs.style = message(&#039;fmbox-style&#039;) -- Sets &#039;background-color: #ecfcf4&#039;&lt;br /&gt;
	fmargs.textstyle = message(&#039;fmbox-textstyle&#039;) -- &#039;font-style: italic;&#039;&lt;br /&gt;
&lt;br /&gt;
	-- Assemble the fmbox text field.&lt;br /&gt;
	local text = &#039;&#039;&lt;br /&gt;
	if linkBox then&lt;br /&gt;
		text = text .. linkBox&lt;br /&gt;
	else&lt;br /&gt;
		text = text .. (p.makeDocPageBlurb(args, env) or &#039;&#039;) -- &amp;quot;This documentation is transcluded from [[Foo]].&amp;quot; &lt;br /&gt;
		if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then&lt;br /&gt;
			-- We are in the user, template or module namespaces.&lt;br /&gt;
			-- Add sandbox and testcases links.&lt;br /&gt;
			-- &amp;quot;Editors can experiment in this template&#039;s sandbox and testcases pages.&amp;quot;&lt;br /&gt;
			-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;br /&gt;
			-- text = text .. (p.makeExperimentBlurb(args, env) or &#039;&#039;)&lt;br /&gt;
			-- text = text .. &#039;&amp;lt;br /&amp;gt;&#039;&lt;br /&gt;
			if not args.content and not args[1] then&lt;br /&gt;
				-- &amp;quot;Please add categories to the /doc subpage.&amp;quot;&lt;br /&gt;
				-- Don&#039;t show this message with inline docs or with an explicitly specified doc page,&lt;br /&gt;
				-- as then it is unclear where to add the categories.&lt;br /&gt;
				text = text .. (p.makeCategoriesBlurb(args, env) or &#039;&#039;)&lt;br /&gt;
			end&lt;br /&gt;
			text = text .. &#039; &#039; .. (p.makeSubpagesBlurb(args, env) or &#039;&#039;) --&amp;quot;Subpages of this template&amp;quot;&lt;br /&gt;
			local printBlurb = p.makePrintBlurb(args, env) -- Two-line blurb about print versions of templates.&lt;br /&gt;
			if printBlurb then&lt;br /&gt;
				text = text .. &#039;&amp;lt;br /&amp;gt;&#039; .. printBlurb&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	fmargs.text = text&lt;br /&gt;
&lt;br /&gt;
	return messageBox.main(&#039;fmbox&#039;, fmargs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeDocPageBlurb(args, env)&lt;br /&gt;
	--[=[&lt;br /&gt;
	-- Makes the blurb &amp;quot;This documentation is transcluded from [[Template:Foo]] (edit, history)&amp;quot;.&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	-- &lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;edit-link-display&#039; --&amp;gt; &#039;edit&#039;&lt;br /&gt;
	-- &#039;history-link-display&#039; --&amp;gt; &#039;history&#039;&lt;br /&gt;
	-- &#039;transcluded-from-blurb&#039; --&amp;gt; &lt;br /&gt;
	-- &#039;The above [[Wikipedia:Template documentation|documentation]] &lt;br /&gt;
	-- is [[Wikipedia:Transclusion|transcluded]] from $1.&#039;&lt;br /&gt;
	-- &#039;module-preload&#039; --&amp;gt; &#039;Template:Documentation/preload-module-doc&#039;&lt;br /&gt;
	-- &#039;create-link-display&#039; --&amp;gt; &#039;create&#039;&lt;br /&gt;
	-- &#039;create-module-doc-blurb&#039; --&amp;gt;&lt;br /&gt;
	-- &#039;You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].&#039;&lt;br /&gt;
	--]=]&lt;br /&gt;
	local docTitle = env.docTitle&lt;br /&gt;
	if not docTitle then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local ret&lt;br /&gt;
	if docTitle.exists then&lt;br /&gt;
		-- /doc exists; link to it.&lt;br /&gt;
		local docLink = makeWikilink(docTitle.prefixedText)&lt;br /&gt;
		local editUrl = docTitle:fullUrl{action = &#039;edit&#039;}&lt;br /&gt;
		local editDisplay = message(&#039;edit-link-display&#039;)&lt;br /&gt;
		local editLink = makeUrlLink(editUrl, editDisplay)&lt;br /&gt;
		local historyUrl = docTitle:fullUrl{action = &#039;history&#039;}&lt;br /&gt;
		local historyDisplay = message(&#039;history-link-display&#039;)&lt;br /&gt;
		local historyLink = makeUrlLink(historyUrl, historyDisplay)&lt;br /&gt;
		ret = message(&#039;transcluded-from-blurb&#039;, {docLink})&lt;br /&gt;
			.. &#039; &#039;&lt;br /&gt;
			.. makeToolbar(editLink, historyLink)&lt;br /&gt;
			.. &#039;&amp;lt;br /&amp;gt;&#039;&lt;br /&gt;
	elseif env.subjectSpace == 828 then&lt;br /&gt;
		-- /doc does not exist; ask to create it.&lt;br /&gt;
		local createUrl = docTitle:fullUrl{action = &#039;edit&#039;, preload = message(&#039;module-preload&#039;)}&lt;br /&gt;
		local createDisplay = message(&#039;create-link-display&#039;)&lt;br /&gt;
		local createLink = makeUrlLink(createUrl, createDisplay)&lt;br /&gt;
		ret = message(&#039;create-module-doc-blurb&#039;, {createLink})&lt;br /&gt;
			.. &#039;&amp;lt;br /&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeExperimentBlurb(args, env)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Renders the text &amp;quot;Editors can experiment in this template&#039;s sandbox (edit | diff) and testcases (edit) pages.&amp;quot;&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	-- &lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;sandbox-link-display&#039; --&amp;gt; &#039;sandbox&#039;&lt;br /&gt;
	-- &#039;sandbox-edit-link-display&#039; --&amp;gt; &#039;edit&#039;&lt;br /&gt;
	-- &#039;compare-link-display&#039; --&amp;gt; &#039;diff&#039;&lt;br /&gt;
	-- &#039;module-sandbox-preload&#039; --&amp;gt; &#039;Template:Documentation/preload-module-sandbox&#039;&lt;br /&gt;
	-- &#039;template-sandbox-preload&#039; --&amp;gt; &#039;Template:Documentation/preload-sandbox&#039;&lt;br /&gt;
	-- &#039;sandbox-create-link-display&#039; --&amp;gt; &#039;create&#039;&lt;br /&gt;
	-- &#039;mirror-edit-summary&#039; --&amp;gt; &#039;Create sandbox version of $1&#039;&lt;br /&gt;
	-- &#039;mirror-link-display&#039; --&amp;gt; &#039;mirror&#039;&lt;br /&gt;
	-- &#039;sandbox-link-display&#039; --&amp;gt; &#039;sandbox&#039;&lt;br /&gt;
	-- &#039;testcases-link-display&#039; --&amp;gt; &#039;testcases&#039;&lt;br /&gt;
	-- &#039;testcases-edit-link-display&#039;--&amp;gt; &#039;edit&#039;&lt;br /&gt;
	-- &#039;module-testcases-preload&#039; --&amp;gt; &#039;Template:Documentation/preload-module-testcases&#039;&lt;br /&gt;
	-- &#039;template-sandbox-preload&#039; --&amp;gt; &#039;Template:Documentation/preload-sandbox&#039;&lt;br /&gt;
	-- &#039;testcases-create-link-display&#039; --&amp;gt; &#039;create&#039;&lt;br /&gt;
	-- &#039;testcases-link-display&#039; --&amp;gt; &#039;testcases&#039;&lt;br /&gt;
	-- &#039;testcases-edit-link-display&#039; --&amp;gt; &#039;edit&#039;&lt;br /&gt;
	-- &#039;module-testcases-preload&#039; --&amp;gt; &#039;Template:Documentation/preload-module-testcases&#039;&lt;br /&gt;
	-- &#039;template-testcases-preload&#039; --&amp;gt; &#039;Template:Documentation/preload-testcases&#039;&lt;br /&gt;
	-- &#039;experiment-blurb-module&#039; --&amp;gt; &#039;Editors can experiment in this module&#039;s $1 and $2 pages.&#039;&lt;br /&gt;
	-- &#039;experiment-blurb-template&#039; --&amp;gt; &#039;Editors can experiment in this template&#039;s $1 and $2 pages.&#039;&lt;br /&gt;
	--]]&lt;br /&gt;
	local subjectSpace = env.subjectSpace&lt;br /&gt;
	local templateTitle = env.templateTitle&lt;br /&gt;
	local sandboxTitle = env.sandboxTitle&lt;br /&gt;
	local testcasesTitle = env.testcasesTitle&lt;br /&gt;
	local templatePage = templateTitle.prefixedText&lt;br /&gt;
	if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	-- Make links.&lt;br /&gt;
	local sandboxLinks, testcasesLinks&lt;br /&gt;
	if sandboxTitle.exists then&lt;br /&gt;
		local sandboxPage = sandboxTitle.prefixedText&lt;br /&gt;
		local sandboxDisplay = message(&#039;sandbox-link-display&#039;)&lt;br /&gt;
		local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay)&lt;br /&gt;
		local sandboxEditUrl = sandboxTitle:fullUrl{action = &#039;edit&#039;}&lt;br /&gt;
		local sandboxEditDisplay = message(&#039;sandbox-edit-link-display&#039;)&lt;br /&gt;
		local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay)&lt;br /&gt;
		local compareUrl = env.compareUrl&lt;br /&gt;
		local compareLink&lt;br /&gt;
		if compareUrl then&lt;br /&gt;
			local compareDisplay = message(&#039;compare-link-display&#039;)&lt;br /&gt;
			compareLink = makeUrlLink(compareUrl, compareDisplay)&lt;br /&gt;
		end&lt;br /&gt;
		sandboxLinks = sandboxLink .. &#039; &#039; .. makeToolbar(sandboxEditLink, compareLink)&lt;br /&gt;
	else&lt;br /&gt;
		local sandboxPreload&lt;br /&gt;
		if subjectSpace == 828 then&lt;br /&gt;
			sandboxPreload = message(&#039;module-sandbox-preload&#039;)&lt;br /&gt;
		else&lt;br /&gt;
			sandboxPreload = message(&#039;template-sandbox-preload&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		local sandboxCreateUrl = sandboxTitle:fullUrl{action = &#039;edit&#039;, preload = sandboxPreload}&lt;br /&gt;
		local sandboxCreateDisplay = message(&#039;sandbox-create-link-display&#039;)&lt;br /&gt;
		local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay)&lt;br /&gt;
		local mirrorSummary = message(&#039;mirror-edit-summary&#039;, {makeWikilink(templatePage)})&lt;br /&gt;
		local mirrorUrl = sandboxTitle:fullUrl{action = &#039;edit&#039;, preload = templatePage, summary = mirrorSummary}&lt;br /&gt;
		local mirrorDisplay = message(&#039;mirror-link-display&#039;)&lt;br /&gt;
		local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay)&lt;br /&gt;
		sandboxLinks = message(&#039;sandbox-link-display&#039;) .. &#039; &#039; .. makeToolbar(sandboxCreateLink, mirrorLink)&lt;br /&gt;
	end&lt;br /&gt;
	if testcasesTitle.exists then&lt;br /&gt;
		local testcasesPage = testcasesTitle.prefixedText&lt;br /&gt;
		local testcasesDisplay = message(&#039;testcases-link-display&#039;)&lt;br /&gt;
		local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay)&lt;br /&gt;
		local testcasesEditUrl = testcasesTitle:fullUrl{action = &#039;edit&#039;}&lt;br /&gt;
		local testcasesEditDisplay = message(&#039;testcases-edit-link-display&#039;)&lt;br /&gt;
		local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay)&lt;br /&gt;
		testcasesLinks = testcasesLink .. &#039; &#039; .. makeToolbar(testcasesEditLink)&lt;br /&gt;
	else&lt;br /&gt;
		local testcasesPreload&lt;br /&gt;
		if subjectSpace == 828 then&lt;br /&gt;
			testcasesPreload = message(&#039;module-testcases-preload&#039;)&lt;br /&gt;
		else&lt;br /&gt;
			testcasesPreload = message(&#039;template-testcases-preload&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		local testcasesCreateUrl = testcasesTitle:fullUrl{action = &#039;edit&#039;, preload = testcasesPreload}&lt;br /&gt;
		local testcasesCreateDisplay = message(&#039;testcases-create-link-display&#039;)&lt;br /&gt;
		local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay)&lt;br /&gt;
		testcasesLinks = message(&#039;testcases-link-display&#039;) .. &#039; &#039; .. makeToolbar(testcasesCreateLink)&lt;br /&gt;
	end&lt;br /&gt;
	local messageName&lt;br /&gt;
	if subjectSpace == 828 then&lt;br /&gt;
		messageName = &#039;experiment-blurb-module&#039;&lt;br /&gt;
	else&lt;br /&gt;
		messageName = &#039;experiment-blurb-template&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return message(messageName, {sandboxLinks, testcasesLinks})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeCategoriesBlurb(args, env)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Generates the text &amp;quot;Please add categories to the /doc subpage.&amp;quot;&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;doc-link-display&#039; --&amp;gt; &#039;/doc&#039;&lt;br /&gt;
	-- &#039;add-categories-blurb&#039; --&amp;gt; &#039;Please add categories to the $1 subpage.&#039;&lt;br /&gt;
	--]]&lt;br /&gt;
	local docTitle = env.docTitle&lt;br /&gt;
	if not docTitle then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local docPathLink = makeWikilink(docTitle.prefixedText, message(&#039;doc-link-display&#039;))&lt;br /&gt;
	return message(&#039;add-categories-blurb&#039;, {docPathLink})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeSubpagesBlurb(args, env)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Generates the &amp;quot;Subpages of this template&amp;quot; link.&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	&lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;template-pagetype&#039; --&amp;gt; &#039;template&#039;&lt;br /&gt;
	-- &#039;module-pagetype&#039; --&amp;gt; &#039;module&#039;&lt;br /&gt;
	-- &#039;default-pagetype&#039; --&amp;gt; &#039;page&#039;&lt;br /&gt;
	-- &#039;subpages-link-display&#039; --&amp;gt; &#039;Subpages of this $1&#039;&lt;br /&gt;
	--]]&lt;br /&gt;
	local subjectSpace = env.subjectSpace&lt;br /&gt;
	local templateTitle = env.templateTitle&lt;br /&gt;
	if not subjectSpace or not templateTitle then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local pagetype&lt;br /&gt;
	if subjectSpace == 10 then&lt;br /&gt;
		pagetype = message(&#039;template-pagetype&#039;)&lt;br /&gt;
	elseif subjectSpace == 828 then&lt;br /&gt;
		pagetype = message(&#039;module-pagetype&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		pagetype = message(&#039;default-pagetype&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	local subpagesLink = makeWikilink(&lt;br /&gt;
		&#039;Special:PrefixIndex/&#039; .. templateTitle.prefixedText .. &#039;/&#039;,&lt;br /&gt;
		message(&#039;subpages-link-display&#039;, {pagetype})&lt;br /&gt;
	)&lt;br /&gt;
	return message(&#039;subpages-blurb&#039;, {subpagesLink})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makePrintBlurb(args, env)&lt;br /&gt;
	--[=[&lt;br /&gt;
	-- Generates the blurb displayed when there is a print version of the template available.&lt;br /&gt;
	-- @args - a table of arguments passed by the user&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	--&lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;print-link-display&#039; --&amp;gt; &#039;/Print&#039;&lt;br /&gt;
	-- &#039;print-blurb&#039; --&amp;gt; &#039;A [[Help:Books/for experts#Improving the book layout|print version]]&#039;&lt;br /&gt;
	--		.. &#039; of this template exists at $1.&#039;&lt;br /&gt;
	--		.. &#039; If you make a change to this template, please update the print version as well.&#039;&lt;br /&gt;
	-- &#039;display-print-category&#039; --&amp;gt; true&lt;br /&gt;
	-- &#039;print-category&#039; --&amp;gt; &#039;Templates with print versions&#039;&lt;br /&gt;
	--]=]&lt;br /&gt;
	local printTitle = env.printTitle&lt;br /&gt;
	if true or not printTitle then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local ret&lt;br /&gt;
	if printTitle.exists then&lt;br /&gt;
		local printLink = makeWikilink(printTitle.prefixedText, message(&#039;print-link-display&#039;))&lt;br /&gt;
		ret = message(&#039;print-blurb&#039;, {printLink})&lt;br /&gt;
		local displayPrintCategory = message(&#039;display-print-category&#039;, nil, &#039;boolean&#039;)&lt;br /&gt;
		if displayPrintCategory then&lt;br /&gt;
			ret = ret .. makeCategoryLink(message(&#039;print-category&#039;))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
-- Tracking categories&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.addTrackingCategories(env)&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Check if {{documentation}} is transcluded on a /doc or /testcases page.&lt;br /&gt;
	-- @env - environment table containing title objects, etc., generated with p.getEnvironment&lt;br /&gt;
	&lt;br /&gt;
	-- Messages:&lt;br /&gt;
	-- &#039;display-strange-usage-category&#039; --&amp;gt; true&lt;br /&gt;
	-- &#039;doc-subpage&#039; --&amp;gt; &#039;doc&#039;&lt;br /&gt;
	-- &#039;testcases-subpage&#039; --&amp;gt; &#039;testcases&#039;&lt;br /&gt;
	-- &#039;strange-usage-category&#039; --&amp;gt; &#039;Wikipedia pages with strange ((documentation)) usage&#039;&lt;br /&gt;
	-- &lt;br /&gt;
	-- /testcases pages in the module namespace are not categorised, as they may have&lt;br /&gt;
	-- {{documentation}} transcluded automatically.&lt;br /&gt;
	--]]&lt;br /&gt;
	local title = env.title&lt;br /&gt;
	local subjectSpace = env.subjectSpace&lt;br /&gt;
	if not title or not subjectSpace then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local subpage = title.subpageText&lt;br /&gt;
	local ret = &#039;&#039;&lt;br /&gt;
	if message(&#039;display-strange-usage-category&#039;, nil, &#039;boolean&#039;)&lt;br /&gt;
		and (&lt;br /&gt;
			subpage == message(&#039;doc-subpage&#039;)&lt;br /&gt;
			or subjectSpace ~= 828 and subpage == message(&#039;testcases-subpage&#039;)&lt;br /&gt;
		)&lt;br /&gt;
	then&lt;br /&gt;
		ret = ret .. makeCategoryLink(message(&#039;strange-usage-category&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Category_handler/shared&amp;diff=1084</id>
		<title>Modul:Category handler/shared</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Category_handler/shared&amp;diff=1084"/>
		<updated>2015-08-09T08:56:26Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Category handler/shared“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module contains shared functions used by [[Module:Category handler]]&lt;br /&gt;
-- and its submodules.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.matchesBlacklist(page, blacklist)&lt;br /&gt;
	for i, pattern in ipairs(blacklist) do&lt;br /&gt;
		local match = mw.ustring.match(page, pattern)&lt;br /&gt;
		if match then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getParamMappings(useLoadData)&lt;br /&gt;
	local dataPage = &#039;Module:Namespace detect/data&#039;&lt;br /&gt;
	if useLoadData then&lt;br /&gt;
		return mw.loadData(dataPage).mappings&lt;br /&gt;
	else&lt;br /&gt;
		return require(dataPage).mappings&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getNamespaceParameters(titleObj, mappings)&lt;br /&gt;
	-- We don&#039;t use title.nsText for the namespace name because it adds&lt;br /&gt;
	-- underscores.&lt;br /&gt;
	local mappingsKey&lt;br /&gt;
	if titleObj.isTalkPage then&lt;br /&gt;
		mappingsKey = &#039;talk&#039;&lt;br /&gt;
	else&lt;br /&gt;
		mappingsKey = mw.site.namespaces[titleObj.namespace].name&lt;br /&gt;
	end&lt;br /&gt;
	mappingsKey = mw.ustring.lower(mappingsKey)&lt;br /&gt;
	return mappings[mappingsKey] or {}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Category_handler/data&amp;diff=1083</id>
		<title>Modul:Category handler/data</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Category_handler/data&amp;diff=1083"/>
		<updated>2015-08-09T08:56:25Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Category handler/data“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module assembles data to be passed to [[Module:Category handler]] using&lt;br /&gt;
-- mw.loadData. This includes the configuration data and whether the current&lt;br /&gt;
-- page matches the title blacklist.&lt;br /&gt;
&lt;br /&gt;
local data = require(&#039;Module:Category handler/config&#039;)&lt;br /&gt;
local mShared = require(&#039;Module:Category handler/shared&#039;)&lt;br /&gt;
local blacklist = require(&#039;Module:Category handler/blacklist&#039;)&lt;br /&gt;
local title = mw.title.getCurrentTitle()&lt;br /&gt;
&lt;br /&gt;
data.currentTitleMatchesBlacklist = mShared.matchesBlacklist(&lt;br /&gt;
	title.prefixedText,&lt;br /&gt;
	blacklist&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
data.currentTitleNamespaceParameters = mShared.getNamespaceParameters(&lt;br /&gt;
	title,&lt;br /&gt;
	mShared.getParamMappings()&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
return data&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Category_handler/config&amp;diff=1082</id>
		<title>Modul:Category handler/config</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Category_handler/config&amp;diff=1082"/>
		<updated>2015-08-09T08:56:24Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Category handler/config“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--            [[Module:Category handler]] configuration data                  --&lt;br /&gt;
--       Language-specific parameter names and values can be set here.        --&lt;br /&gt;
--       For blacklist config, see [[Module:Category handler/blacklist]].     --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local cfg = {} -- Don&#039;t edit this line.&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--                       Start configuration data                             --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--                              Parameter names                               --&lt;br /&gt;
-- These configuration items specify custom parameter names.                  --&lt;br /&gt;
-- To add one extra name, you can use this format:                            --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- foo = &#039;parameter name&#039;,                                                    --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- To add multiple names, you can use this format:                            --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- foo = {&#039;parameter name 1&#039;, &#039;parameter name 2&#039;, &#039;parameter name 3&#039;},        --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
cfg.parameters = {&lt;br /&gt;
	&lt;br /&gt;
	-- The nocat and categories parameter suppress&lt;br /&gt;
	-- categorisation. They are used with Module:Yesno, and work as follows:&lt;br /&gt;
	--&lt;br /&gt;
	-- cfg.nocat:&lt;br /&gt;
	-- Result of yesno()                        Effect&lt;br /&gt;
	-- true                                     Categorisation is suppressed&lt;br /&gt;
	-- false                                    Categorisation is allowed, and&lt;br /&gt;
	--                                          the blacklist check is skipped&lt;br /&gt;
	-- nil                                      Categorisation is allowed&lt;br /&gt;
	--&lt;br /&gt;
	-- cfg.categories:&lt;br /&gt;
	-- Result of yesno()                        Effect&lt;br /&gt;
	-- true                                     Categorisation is allowed, and&lt;br /&gt;
	--                                          the blacklist check is skipped&lt;br /&gt;
	-- false                                    Categorisation is suppressed&lt;br /&gt;
	-- nil                                      Categorisation is allowed&lt;br /&gt;
	nocat = &#039;nocat&#039;,&lt;br /&gt;
	categories = &#039;categories&#039;,&lt;br /&gt;
	&lt;br /&gt;
	-- The parameter name for the legacy &amp;quot;category2&amp;quot; parameter. This skips the&lt;br /&gt;
	-- blacklist if set to the cfg.category2Yes value, and suppresses&lt;br /&gt;
	-- categorisation if present but equal to anything other than&lt;br /&gt;
	-- cfg.category2Yes or cfg.category2Negative.&lt;br /&gt;
	category2 = &#039;category2&#039;,&lt;br /&gt;
	&lt;br /&gt;
	-- cfg.subpage is the parameter name to specify how to behave on subpages.&lt;br /&gt;
	subpage = &#039;subpage&#039;,&lt;br /&gt;
	&lt;br /&gt;
	-- The parameter for data to return in all namespaces.&lt;br /&gt;
	all = &#039;all&#039;,&lt;br /&gt;
	&lt;br /&gt;
	-- The parameter name for data to return if no data is specified for the&lt;br /&gt;
	-- namespace that is detected.&lt;br /&gt;
	other = &#039;other&#039;,&lt;br /&gt;
	&lt;br /&gt;
	-- The parameter name used to specify a page other than the current page;&lt;br /&gt;
	-- used for testing and demonstration.&lt;br /&gt;
	demopage = &#039;page&#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--                              Parameter values                              --&lt;br /&gt;
-- These are set values that can be used with certain parameters. Only one    --&lt;br /&gt;
-- value can be specified, like this:                                         --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- cfg.foo = &#039;value name&#039;                                                     --                                               --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- The following settings are used with the cfg.category2 parameter. Setting&lt;br /&gt;
-- cfg.category2 to cfg.category2Yes skips the blacklist, and if cfg.category2&lt;br /&gt;
-- is present but equal to anything other than cfg.category2Yes or&lt;br /&gt;
-- cfg.category2Negative then it supresses cateogrisation.&lt;br /&gt;
cfg.category2Yes = &#039;yes&#039;&lt;br /&gt;
cfg.category2Negative = &#039;¬&#039;&lt;br /&gt;
&lt;br /&gt;
-- The following settings are used with the cfg.subpage parameter.&lt;br /&gt;
-- cfg.subpageNo is the value to specify to not categorise on subpages;&lt;br /&gt;
-- cfg.subpageOnly is the value to specify to only categorise on subpages.&lt;br /&gt;
cfg.subpageNo = &#039;no&#039;&lt;br /&gt;
cfg.subpageOnly = &#039;only&#039;&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--                           Default namespaces                               --&lt;br /&gt;
-- This is a table of namespaces to categorise by default. The keys are the   --&lt;br /&gt;
-- namespace numbers.                                                         --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
cfg.defaultNamespaces = {&lt;br /&gt;
	[  0] = true, -- main&lt;br /&gt;
	[  6] = true, -- file&lt;br /&gt;
	[ 12] = true, -- help&lt;br /&gt;
	[ 14] = true, -- category&lt;br /&gt;
	[100] = true, -- portal&lt;br /&gt;
	[108] = true, -- book&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--                                Wrappers                                    --&lt;br /&gt;
-- This is a wrapper template or a list of wrapper templates to be passed to  --&lt;br /&gt;
-- [[Module:Arguments]].                                                      --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
cfg.wrappers = {&#039;Template:Category handler&#039;, &#039;Vorlage:Category handler&#039;}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
--                           End configuration data                           --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
return cfg -- Don&#039;t edit this line.&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Category_handler/blacklist&amp;diff=1081</id>
		<title>Modul:Category handler/blacklist</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Category_handler/blacklist&amp;diff=1081"/>
		<updated>2015-08-09T08:56:23Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Category handler/blacklist“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module contains the blacklist used by [[Module:Category handler]].&lt;br /&gt;
-- Pages that match Lua patterns in this list will not be categorised unless&lt;br /&gt;
-- categorisation is explicitly requested.&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
    &#039;^Main Page$&#039;, -- don&#039;t categorise the main page.&lt;br /&gt;
 &lt;br /&gt;
    -- Don&#039;t categorise the following pages or their subpages.&lt;br /&gt;
    -- &amp;quot;%f[/\0]&amp;quot; matches if the next character is &amp;quot;/&amp;quot; or the end of the string.&lt;br /&gt;
    &#039;^Wikipedia:Cascade%-protected items%f[/\0]&#039;,&lt;br /&gt;
    &#039;^User:UBX%f[/\0]&#039;, -- The userbox &amp;quot;template&amp;quot; space.&lt;br /&gt;
    &#039;^User talk:UBX%f[/\0]&#039;,&lt;br /&gt;
 &lt;br /&gt;
    -- Don&#039;t categorise subpages of these pages, but allow&lt;br /&gt;
    -- categorisation of the base page.&lt;br /&gt;
    &#039;^Wikipedia:Template messages/.*$&#039;,&lt;br /&gt;
 &lt;br /&gt;
    &#039;/[aA]rchive&#039; -- Don&#039;t categorise archives.&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Category_handler&amp;diff=1080</id>
		<title>Modul:Category handler</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Category_handler&amp;diff=1080"/>
		<updated>2015-08-09T08:56:22Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Category handler“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                                                                            --&lt;br /&gt;
--                              CATEGORY HANDLER                              --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
--      This module implements the {{category handler}} template in Lua,      --&lt;br /&gt;
--      with a few improvements: all namespaces and all namespace aliases     --&lt;br /&gt;
--      are supported, and namespace names are detected automatically for     --&lt;br /&gt;
--      the local wiki. This module requires [[Module:Namespace detect]]      --&lt;br /&gt;
--      and [[Module:Yesno]] to be available on the local wiki. It can be     --&lt;br /&gt;
--      configured for different wikis by altering the values in              --&lt;br /&gt;
--      [[Module:Category handler/config]], and pages can be blacklisted      --&lt;br /&gt;
--      from categorisation by using [[Module:Category handler/blacklist]].   --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Load required modules&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
&lt;br /&gt;
-- Lazily load things we don&#039;t always need&lt;br /&gt;
local mShared, mappings&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 trimWhitespace(s, removeBlanks)&lt;br /&gt;
	if type(s) ~= &#039;string&#039; then&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
	s = s:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
	if removeBlanks then&lt;br /&gt;
		if s ~= &#039;&#039; then&lt;br /&gt;
			return s&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return s&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- CategoryHandler class&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local CategoryHandler = {}&lt;br /&gt;
CategoryHandler.__index = CategoryHandler&lt;br /&gt;
&lt;br /&gt;
function CategoryHandler.new(data, args)&lt;br /&gt;
	local obj = setmetatable({ _data = data, _args = args }, CategoryHandler)&lt;br /&gt;
	&lt;br /&gt;
	-- Set the title object&lt;br /&gt;
	do&lt;br /&gt;
		local pagename = obj:parameter(&#039;demopage&#039;)&lt;br /&gt;
		local success, titleObj&lt;br /&gt;
		if pagename then&lt;br /&gt;
			success, titleObj = pcall(mw.title.new, pagename)&lt;br /&gt;
		end&lt;br /&gt;
		if success and titleObj then&lt;br /&gt;
			obj.title = titleObj&lt;br /&gt;
			if titleObj == mw.title.getCurrentTitle() then&lt;br /&gt;
				obj._usesCurrentTitle = true&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			obj.title = mw.title.getCurrentTitle()&lt;br /&gt;
			obj._usesCurrentTitle = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set suppression parameter values&lt;br /&gt;
	for _, key in ipairs{&#039;nocat&#039;, &#039;categories&#039;} do&lt;br /&gt;
		local value = obj:parameter(key)&lt;br /&gt;
		value = trimWhitespace(value, true)&lt;br /&gt;
		obj[&#039;_&#039; .. key] = yesno(value)&lt;br /&gt;
	end&lt;br /&gt;
	do&lt;br /&gt;
		local subpage = obj:parameter(&#039;subpage&#039;)&lt;br /&gt;
		local category2 = obj:parameter(&#039;category2&#039;)&lt;br /&gt;
		if type(subpage) == &#039;string&#039; then&lt;br /&gt;
			subpage = mw.ustring.lower(subpage)&lt;br /&gt;
		end&lt;br /&gt;
		if type(category2) == &#039;string&#039; then&lt;br /&gt;
			subpage = mw.ustring.lower(category2)&lt;br /&gt;
		end&lt;br /&gt;
		obj._subpage = trimWhitespace(subpage, true)&lt;br /&gt;
		obj._category2 = trimWhitespace(category2) -- don&#039;t remove blank values&lt;br /&gt;
	end&lt;br /&gt;
	return obj&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function CategoryHandler:parameter(key)&lt;br /&gt;
	local parameterNames = self._data.parameters[key]&lt;br /&gt;
	local pntype = type(parameterNames)&lt;br /&gt;
	if pntype == &#039;string&#039; or pntype == &#039;number&#039; then&lt;br /&gt;
		return self._args[parameterNames]&lt;br /&gt;
	elseif pntype == &#039;table&#039; then&lt;br /&gt;
		for _, name in ipairs(parameterNames) do&lt;br /&gt;
			local value = self._args[name]&lt;br /&gt;
			if value ~= nil then&lt;br /&gt;
				return value&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return nil&lt;br /&gt;
	else&lt;br /&gt;
		error(string.format(&lt;br /&gt;
			&#039;invalid config key &amp;quot;%s&amp;quot;&#039;,&lt;br /&gt;
			tostring(key)&lt;br /&gt;
		), 2)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function CategoryHandler:isSuppressedByArguments()&lt;br /&gt;
	return&lt;br /&gt;
		-- See if a category suppression argument has been set.&lt;br /&gt;
		self._nocat == true&lt;br /&gt;
		or self._categories == false&lt;br /&gt;
		or (&lt;br /&gt;
			self._category2&lt;br /&gt;
			and self._category2 ~= self._data.category2Yes&lt;br /&gt;
			and self._category2 ~= self._data.category2Negative&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
		-- Check whether we are on a subpage, and see if categories are&lt;br /&gt;
		-- suppressed based on our subpage status.&lt;br /&gt;
		or self._subpage == self._data.subpageNo and self.title.isSubpage&lt;br /&gt;
		or self._subpage == self._data.subpageOnly and not self.title.isSubpage&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function CategoryHandler:shouldSkipBlacklistCheck()&lt;br /&gt;
	-- Check whether the category suppression arguments indicate we&lt;br /&gt;
	-- should skip the blacklist check.&lt;br /&gt;
	return self._nocat == false&lt;br /&gt;
		or self._categories == true&lt;br /&gt;
		or self._category2 == self._data.category2Yes&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function CategoryHandler:matchesBlacklist()&lt;br /&gt;
	if self._usesCurrentTitle then&lt;br /&gt;
		return self._data.currentTitleMatchesBlacklist&lt;br /&gt;
	else&lt;br /&gt;
		mShared = mShared or require(&#039;Module:Category handler/shared&#039;)&lt;br /&gt;
		return mShared.matchesBlacklist(&lt;br /&gt;
			self.title.prefixedText,&lt;br /&gt;
			mw.loadData(&#039;Module:Category handler/blacklist&#039;)&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function CategoryHandler:isSuppressed()&lt;br /&gt;
	-- Find if categories are suppressed by either the arguments or by&lt;br /&gt;
	-- matching the blacklist.&lt;br /&gt;
	return self:isSuppressedByArguments()&lt;br /&gt;
		or not self:shouldSkipBlacklistCheck() and self:matchesBlacklist()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function CategoryHandler:getNamespaceParameters()&lt;br /&gt;
	if self._usesCurrentTitle then&lt;br /&gt;
		return self._data.currentTitleNamespaceParameters&lt;br /&gt;
	else&lt;br /&gt;
		if not mappings then&lt;br /&gt;
			mShared = mShared or require(&#039;Module:Category handler/shared&#039;)&lt;br /&gt;
			mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData&lt;br /&gt;
		end&lt;br /&gt;
		return mShared.getNamespaceParameters(&lt;br /&gt;
			self.title,&lt;br /&gt;
			mappings&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function CategoryHandler:namespaceParametersExist()&lt;br /&gt;
	-- Find whether any namespace parameters have been specified.&lt;br /&gt;
	-- We use the order &amp;quot;all&amp;quot; --&amp;gt; namespace params --&amp;gt; &amp;quot;other&amp;quot; as this is what&lt;br /&gt;
	-- the old template did.&lt;br /&gt;
	if self:parameter(&#039;all&#039;) then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	if not mappings then&lt;br /&gt;
		mShared = mShared or require(&#039;Module:Category handler/shared&#039;)&lt;br /&gt;
		mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData&lt;br /&gt;
	end&lt;br /&gt;
	for ns, params in pairs(mappings) do&lt;br /&gt;
		for i, param in ipairs(params) do&lt;br /&gt;
			if self._args[param] then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if self:parameter(&#039;other&#039;) then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function CategoryHandler:getCategories()&lt;br /&gt;
	local params = self:getNamespaceParameters()&lt;br /&gt;
	local nsCategory&lt;br /&gt;
	for i, param in ipairs(params) do&lt;br /&gt;
		local value = self._args[param]&lt;br /&gt;
		if value ~= nil then&lt;br /&gt;
			nsCategory = value&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if nsCategory ~= nil or self:namespaceParametersExist() then&lt;br /&gt;
		-- Namespace parameters exist - advanced usage.&lt;br /&gt;
		if nsCategory == nil then&lt;br /&gt;
			nsCategory = self:parameter(&#039;other&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		local ret = {self:parameter(&#039;all&#039;)}&lt;br /&gt;
		local numParam = tonumber(nsCategory)&lt;br /&gt;
		if numParam and numParam &amp;gt;= 1 and math.floor(numParam) == numParam then&lt;br /&gt;
			-- nsCategory is an integer&lt;br /&gt;
			ret[#ret + 1] = self._args[numParam]&lt;br /&gt;
		else&lt;br /&gt;
			ret[#ret + 1] = nsCategory&lt;br /&gt;
		end&lt;br /&gt;
		if #ret &amp;lt; 1 then&lt;br /&gt;
			return nil&lt;br /&gt;
		else&lt;br /&gt;
			return table.concat(ret)&lt;br /&gt;
		end&lt;br /&gt;
	elseif self._data.defaultNamespaces[self.title.namespace] then&lt;br /&gt;
		-- Namespace parameters don&#039;t exist, simple usage.&lt;br /&gt;
		return self._args[1]&lt;br /&gt;
	end&lt;br /&gt;
	return nil&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 = {}&lt;br /&gt;
&lt;br /&gt;
function p._exportClasses()&lt;br /&gt;
	-- Used for testing purposes.&lt;br /&gt;
	return {&lt;br /&gt;
		CategoryHandler = CategoryHandler&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args, data)&lt;br /&gt;
	data = data or mw.loadData(&#039;Module:Category handler/data&#039;)&lt;br /&gt;
	local handler = CategoryHandler.new(data, args)&lt;br /&gt;
	if handler:isSuppressed() then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	return handler:getCategories()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame, data)&lt;br /&gt;
	data = data or mw.loadData(&#039;Module:Category handler/data&#039;)&lt;br /&gt;
	local args = require(&#039;Module:Arguments&#039;).getArgs(frame, {&lt;br /&gt;
		wrappers = data.wrappers,&lt;br /&gt;
		valueFunc = function (k, v)&lt;br /&gt;
			v = trimWhitespace(v)&lt;br /&gt;
			if type(k) == &#039;number&#039; then&lt;br /&gt;
				if v ~= &#039;&#039; then&lt;br /&gt;
					return v&lt;br /&gt;
				else&lt;br /&gt;
					return nil&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				return v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	})&lt;br /&gt;
	return p._main(args, data)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Anchor&amp;diff=1079</id>
		<title>Modul:Anchor</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Anchor&amp;diff=1079"/>
		<updated>2015-08-09T08:56:20Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Anchor“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{anchor}}.&lt;br /&gt;
&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local tableTools = require(&#039;Module:TableTools&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	-- Get the positional arguments from #invoke, remove any nil values,&lt;br /&gt;
	-- and pass them to p._main.&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local argArray = tableTools.compressSparseArray(args)&lt;br /&gt;
	return p._main(unpack(argArray))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(...)&lt;br /&gt;
	-- Generate the list of anchors.&lt;br /&gt;
	local anchors = {...}&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for _, anchor in ipairs(anchors) do&lt;br /&gt;
		ret[#ret + 1] = &#039;&amp;lt;span id=&amp;quot;&#039; .. anchor .. &#039;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Aligned_table&amp;diff=1078</id>
		<title>Modul:Aligned table</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Aligned_table&amp;diff=1078"/>
		<updated>2015-08-09T08:56:19Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Aligned table“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{aligned table}}&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function isnotempty(s)&lt;br /&gt;
	return s and s:match( &#039;^%s*(.-)%s*$&#039; ) ~= &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(frame)&lt;br /&gt;
	local args = (frame.args[3] ~= nil) and frame.args or frame:getParent().args&lt;br /&gt;
	local entries = {}&lt;br /&gt;
	local colclass = {}&lt;br /&gt;
	local colstyle = {}&lt;br /&gt;
	local cols = tonumber(args[&#039;cols&#039;]) or 2&lt;br /&gt;
&lt;br /&gt;
	-- create the root table&lt;br /&gt;
	local root = mw.html.create(&#039;table&#039;)&lt;br /&gt;
&lt;br /&gt;
	-- add table style for fullwidth&lt;br /&gt;
	if isnotempty(args[&#039;fullwidth&#039;]) then&lt;br /&gt;
		root&lt;br /&gt;
			:css(&#039;width&#039;, &#039;100%&#039;)&lt;br /&gt;
			:css(&#039;border-collapse&#039;, &#039;collapse&#039;)&lt;br /&gt;
			:css(&#039;border-spacing&#039;, &#039;0px 0px&#039;)&lt;br /&gt;
			:css(&#039;border&#039;, &#039;none&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- add table classes&lt;br /&gt;
	if isnotempty(args[&#039;class&#039;]) then&lt;br /&gt;
		root:addClass(args[&#039;class&#039;])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- add table style&lt;br /&gt;
	if isnotempty(args[&#039;style&#039;]) then&lt;br /&gt;
		root:cssText(args[&#039;style&#039;])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- build arrays with the column styles and classes&lt;br /&gt;
	if isnotempty(args[&#039;leftright&#039;]) then&lt;br /&gt;
		colstyle[1] = &#039;text-align:left;&#039;&lt;br /&gt;
		colstyle[2] = &#039;text-align:right;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	for i = 1,cols do&lt;br /&gt;
		colclass[ i ] = colclass[ i ] or &#039;&#039;&lt;br /&gt;
		colstyle[ i ] = colstyle[ i ] or &#039;&#039;&lt;br /&gt;
		if isnotempty(args[&#039;colstyle&#039;]) then&lt;br /&gt;
			colstyle[ i ] = args[&#039;colstyle&#039;] .. &#039;;&#039; .. colstyle[ i ]&lt;br /&gt;
		end&lt;br /&gt;
		if isnotempty(args[&#039;colalign&#039; .. tostring(i)]) then&lt;br /&gt;
			colstyle[ i ] = &#039;text-align:&#039; .. args[&#039;colalign&#039; .. tostring(i)] .. &#039;;&#039; .. colstyle[ i ]&lt;br /&gt;
		elseif isnotempty(args[&#039;col&#039; .. tostring(i) .. &#039;align&#039;]) then&lt;br /&gt;
			colstyle[ i ] = &#039;text-align:&#039; .. args[&#039;col&#039; .. tostring(i) .. &#039;align&#039;] .. &#039;;&#039; .. colstyle[ i ]&lt;br /&gt;
		elseif isnotempty(args[&#039;align&#039; .. tostring(i)]) then&lt;br /&gt;
			colstyle[ i ] = &#039;text-align:&#039; .. args[&#039;align&#039; .. tostring(i)] .. &#039;;&#039; .. colstyle[ i ]&lt;br /&gt;
		end&lt;br /&gt;
		if isnotempty(args[&#039;colnowrap&#039; .. tostring(i)]) then&lt;br /&gt;
			colstyle[ i ] = &#039;white-space:nowrap;&#039; .. colstyle[ i ]&lt;br /&gt;
		elseif isnotempty(args[&#039;col&#039; .. tostring(i) .. &#039;nowrap&#039;]) then&lt;br /&gt;
			colstyle[ i ] = &#039;white-space:nowrap;&#039; .. colstyle[ i ]&lt;br /&gt;
		elseif isnotempty(args[&#039;nowrap&#039; .. tostring(i)]) then&lt;br /&gt;
			colstyle[ i ] = &#039;white-space:nowrap;&#039; .. colstyle[ i ]&lt;br /&gt;
		end&lt;br /&gt;
		if isnotempty(args[&#039;colwidth&#039; .. tostring(i)]) then&lt;br /&gt;
			colstyle[ i ] = &#039;width:&#039; .. args[&#039;colwidth&#039; .. tostring(i)] .. &#039;;&#039; .. colstyle[ i ]&lt;br /&gt;
		elseif isnotempty(args[&#039;col&#039; .. tostring(i) .. &#039;width&#039;]) then&lt;br /&gt;
			colstyle[ i ] = &#039;width:&#039; .. args[&#039;col&#039; .. tostring(i) .. &#039;width&#039;] .. &#039;;&#039; .. colstyle[ i ]&lt;br /&gt;
		elseif isnotempty(args[&#039;colwidth&#039;]) then&lt;br /&gt;
			colstyle[ i ] = &#039;width:&#039; .. args[&#039;colwidth&#039;] .. &#039;;&#039; .. colstyle[ i ]&lt;br /&gt;
		end&lt;br /&gt;
		if isnotempty(args[&#039;colstyle&#039; .. tostring(i)]) then&lt;br /&gt;
			colstyle[ i ] = colstyle[ i ] .. args[&#039;colstyle&#039; .. tostring(i)]&lt;br /&gt;
		elseif isnotempty(args[&#039;col&#039; .. tostring(i) .. &#039;style&#039;]) then&lt;br /&gt;
			colstyle[ i ] = colstyle[ i ] .. args[&#039;col&#039; .. tostring(i) .. &#039;style&#039;]&lt;br /&gt;
		elseif isnotempty(args[&#039;style&#039; .. tostring(i)]) then&lt;br /&gt;
			colstyle[ i ] = colstyle[ i ] .. args[&#039;style&#039; .. tostring(i)]&lt;br /&gt;
		end&lt;br /&gt;
		if isnotempty(args[&#039;colclass&#039; .. tostring(i)]) then&lt;br /&gt;
			colclass[ i ] =  args[&#039;colclass&#039; .. tostring(i)]&lt;br /&gt;
		elseif isnotempty(args[&#039;col&#039; .. tostring(i) .. &#039;class&#039;]) then&lt;br /&gt;
			colclass[ i ] =  args[&#039;col&#039; .. tostring(i) .. &#039;class&#039;]&lt;br /&gt;
		elseif isnotempty(args[&#039;class&#039; .. tostring(i)]) then&lt;br /&gt;
			colclass[ i ] =  args[&#039;class&#039; .. tostring(i)]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- compute the maximum cell index&lt;br /&gt;
	local cellcount = 0&lt;br /&gt;
	for k, v in pairs( args ) do&lt;br /&gt;
		if type( k ) == &#039;number&#039; then&lt;br /&gt;
			cellcount = math.max(cellcount, k)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- compute the number of rows&lt;br /&gt;
	local rows = math.ceil(cellcount / cols)&lt;br /&gt;
&lt;br /&gt;
	-- build the table content&lt;br /&gt;
	if isnotempty(args[&#039;title&#039;]) then&lt;br /&gt;
		local caption = root:tag(&#039;caption&#039;)&lt;br /&gt;
		caption:cssText(args[&#039;titlestyle&#039;])&lt;br /&gt;
		caption:wikitext(args[&#039;title&#039;])&lt;br /&gt;
	end&lt;br /&gt;
	if isnotempty(args[&#039;above&#039;]) then&lt;br /&gt;
		local row = root:tag(&#039;tr&#039;)&lt;br /&gt;
		local cell = row:tag(&#039;th&#039;)&lt;br /&gt;
		cell:attr(&#039;colspan&#039;, cols)&lt;br /&gt;
		cell:cssText(args[&#039;abovestyle&#039;])&lt;br /&gt;
		cell:wikitext(args[&#039;above&#039;])&lt;br /&gt;
	end&lt;br /&gt;
	for j=1,rows do&lt;br /&gt;
		-- start a new row&lt;br /&gt;
		local row = root:tag(&#039;tr&#039;)&lt;br /&gt;
		row:css(&#039;vertical-align&#039;, &#039;top&#039;)&lt;br /&gt;
		-- loop over the cells in each row&lt;br /&gt;
		for i=1,cols do&lt;br /&gt;
			local cell&lt;br /&gt;
			if isnotempty(args[&#039;row&#039; .. tostring(j) .. &#039;header&#039;]) then&lt;br /&gt;
				cell = row:tag(&#039;th&#039;)&lt;br /&gt;
			else&lt;br /&gt;
				cell = row:tag(&#039;td&#039;)&lt;br /&gt;
			end&lt;br /&gt;
			if args[&#039;class&#039; .. tostring(j) .. &#039;.&#039; .. tostring(i)] then&lt;br /&gt;
				cell:addClass(args[&#039;class&#039; .. tostring(j) .. &#039;.&#039; .. tostring(i)])&lt;br /&gt;
			else&lt;br /&gt;
				if args[&#039;rowclass&#039; .. tostring(j)] then&lt;br /&gt;
					cell:addClass(args[&#039;rowclass&#039; .. tostring(j)])&lt;br /&gt;
				elseif args[&#039;row&#039; .. tostring(j) .. &#039;class&#039;] then&lt;br /&gt;
					cell:addClass(args[&#039;row&#039; .. tostring(j) .. &#039;class&#039;])&lt;br /&gt;
				end&lt;br /&gt;
				if colclass[i] ~= &#039;&#039; then&lt;br /&gt;
					cell:addClass(colclass[i])&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if args[&#039;style&#039; .. tostring(j) .. &#039;.&#039; .. tostring(i)] then&lt;br /&gt;
				cell:cssText(args[&#039;style&#039; .. tostring(j) .. &#039;.&#039; .. tostring(i)])&lt;br /&gt;
			else&lt;br /&gt;
				if args[&#039;rowstyle&#039; .. tostring(j)] then&lt;br /&gt;
					cell:cssText(args[&#039;rowstyle&#039; .. tostring(j)])&lt;br /&gt;
				elseif args[&#039;row&#039; .. tostring(j) .. &#039;style&#039;] then&lt;br /&gt;
					cell:cssText(args[&#039;row&#039; .. tostring(j) .. &#039;style&#039;])&lt;br /&gt;
				end&lt;br /&gt;
				if isnotempty(colstyle[i]) then&lt;br /&gt;
					cell:cssText(colstyle[i])&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			cell:wikitext(args[cols*(j - 1) + i] or &#039;&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- return the root table&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Vandal-m&amp;diff=1077</id>
		<title>Modul:Vandal-m</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Vandal-m&amp;diff=1077"/>
		<updated>2015-08-09T08:56:18Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Vandal-m“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{vandal-m}}.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local su = require(&#039;Module:Su&#039;)._main&lt;br /&gt;
&lt;br /&gt;
local function makeWikilink(link, display)&lt;br /&gt;
	if display then&lt;br /&gt;
		return string.format(&#039;[[%s|%s]]&#039;, link, display)&lt;br /&gt;
	else&lt;br /&gt;
		return string.format(&#039;[[%s]]&#039;, link)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeUrlLink(data, display)&lt;br /&gt;
	local url = mw.uri.new(data)&lt;br /&gt;
	url = tostring(url)&lt;br /&gt;
	return string.format(&#039;[%s %s]&#039;, url, display)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeFullUrlLink(page, query, display)&lt;br /&gt;
	local url = mw.uri.fullUrl(page, query)&lt;br /&gt;
	url = tostring(url)&lt;br /&gt;
	return string.format(&#039;[%s %s]&#039;, url, display)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getTitle(page)&lt;br /&gt;
	local success, title = pcall(mw.title.new, page)&lt;br /&gt;
	if success then&lt;br /&gt;
		return title&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getLinkIfExists(pagePrefix, username, display)&lt;br /&gt;
	local title = getTitle(pagePrefix .. username)&lt;br /&gt;
	if title and title.exists then&lt;br /&gt;
		return makeWikilink(title.prefixedText, display)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&#039;Module:Arguments&#039;).getArgs(frame, {parentOnly = true})&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 username, usernameEncoded&lt;br /&gt;
	do&lt;br /&gt;
		local lang = mw.language.getContentLanguage()&lt;br /&gt;
		username = args.User or args[1] or &#039;Example&#039;&lt;br /&gt;
		username = lang:ucfirst(username)&lt;br /&gt;
		usernameEncoded = mw.uri.encode(username)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local links = {}&lt;br /&gt;
&lt;br /&gt;
	-- Talk&lt;br /&gt;
	links[#links + 1] = makeWikilink(&#039;User talk:&#039; .. username, &#039;talk&#039;)&lt;br /&gt;
&lt;br /&gt;
	-- Contribs&lt;br /&gt;
	links[#links + 1] = makeWikilink(&lt;br /&gt;
		&#039;Special:Contributions/&#039; .. username,&lt;br /&gt;
		&#039;&amp;lt;span title=&amp;quot;Contributions: &#039; .. username .. &#039;&amp;quot;&amp;gt;contribs&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	-- Block log and autoblocks&lt;br /&gt;
	do&lt;br /&gt;
		local blockLogLink = makeFullUrlLink(&lt;br /&gt;
			&#039;Special:Log/block&#039;,&lt;br /&gt;
			{page = &#039;User:&#039; .. username},&lt;br /&gt;
			&#039;&amp;lt;span title=&amp;quot;Blocklog: &#039;&lt;br /&gt;
				.. username&lt;br /&gt;
				.. &#039;&amp;quot; style=&amp;quot;color:#002bb8&amp;quot;&amp;gt;block&amp;amp;nbsp;log&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
		local autoblocksLink = makeUrlLink(&lt;br /&gt;
			{&lt;br /&gt;
				host = &#039;tools.wmflabs.org&#039;,&lt;br /&gt;
				path = &#039;/xtools/autoblock/&#039;,&lt;br /&gt;
				query = {user = username}&lt;br /&gt;
			},&lt;br /&gt;
			&#039;&amp;lt;sup title=&amp;quot;Autoblock: &#039;&lt;br /&gt;
				.. username&lt;br /&gt;
				.. &#039;&amp;quot; style=&amp;quot;color:#002bb8&amp;quot;&amp;gt;auto&amp;lt;/sup&amp;gt;&#039;&lt;br /&gt;
		)&lt;br /&gt;
		links[#links + 1] = blockLogLink .. autoblocksLink&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Ban listing&lt;br /&gt;
	if args.ban then&lt;br /&gt;
		links[#links + 1] = makeWikilink(&lt;br /&gt;
			mw.site.namespaces[4].name .. &#039;List of banned users#&#039; .. username,&lt;br /&gt;
			&#039;ban&#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Arbitration requests&lt;br /&gt;
	links[#links + 1] = getLinkIfExists(&lt;br /&gt;
		&#039;Wikipedia:Requests for arbitration/&#039;,&lt;br /&gt;
		username,&lt;br /&gt;
		&#039;rfarb&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	-- Requests for comment&lt;br /&gt;
	links[#links + 1] = getLinkIfExists(&lt;br /&gt;
		&#039;Wikipedia:Requests for comment/&#039;,&lt;br /&gt;
		username,&lt;br /&gt;
		&#039;rfcuser&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	-- Long-term abuse&lt;br /&gt;
	links[#links + 1] = getLinkIfExists(&lt;br /&gt;
		&#039;Wikipedia:Long term abuse/&#039;,&lt;br /&gt;
		username,&lt;br /&gt;
		&#039;lta&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	-- Requests for checkuser&lt;br /&gt;
	links[#links + 1] = getLinkIfExists(&lt;br /&gt;
		&#039;Wikipedia:Requests for checkuser/Case/&#039;,&lt;br /&gt;
		username,&lt;br /&gt;
		&#039;rfcu&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	-- Sockpuppet investigations&lt;br /&gt;
	links[#links + 1] = getLinkIfExists(&lt;br /&gt;
		&#039;Wikipedia:Sockpuppet investigations/&#039;,&lt;br /&gt;
		username,&lt;br /&gt;
		&#039;spi&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	-- Suspected sockpuppets&lt;br /&gt;
	links[#links + 1] = getLinkIfExists(&lt;br /&gt;
		&#039;Wikipedia:Suspected sock puppets/&#039;,&lt;br /&gt;
		username,&lt;br /&gt;
		&#039;ssp&#039;&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	-- Sockpuppet categories&lt;br /&gt;
	-- There isn&#039;t a seperator between these and the suspected sockpuppets link,&lt;br /&gt;
	-- so we will add them later instead of adding them to the links table.&lt;br /&gt;
	local sockCategoryLinks&lt;br /&gt;
	do&lt;br /&gt;
		local confirmed = getTitle(&lt;br /&gt;
			&#039;Category:Wikipedia sockpuppets of &#039; .. username&lt;br /&gt;
		)&lt;br /&gt;
		local suspected = getTitle(&lt;br /&gt;
			&#039;Category:Suspected Wikipedia sockpuppets of &#039; .. username&lt;br /&gt;
		)&lt;br /&gt;
		if confirmed and confirmed.exists or suspected and suspected.exists then&lt;br /&gt;
			local sup, sub&lt;br /&gt;
			if confirmed and confirmed.exists then&lt;br /&gt;
				sup = &#039;&amp;amp;ensp;&#039; .. makeWikilink(&lt;br /&gt;
					&#039;:&#039; .. confirmed.prefixedText,&lt;br /&gt;
					&#039;confirmed&amp;amp;nbsp;socks&#039;&lt;br /&gt;
				)&lt;br /&gt;
			end&lt;br /&gt;
			if suspected and suspected.exists then&lt;br /&gt;
				sub = &#039;&amp;amp;ensp;&#039; .. makeWikilink(&lt;br /&gt;
					&#039;:&#039; .. suspected.prefixedText,&lt;br /&gt;
					&#039;suspected&amp;amp;nbsp;socks&#039;&lt;br /&gt;
				)&lt;br /&gt;
			end&lt;br /&gt;
			sockCategoryLinks = su(sup, sub)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the user link and the outer span tags.&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&#039;&amp;lt;span id=&amp;quot;%s&amp;quot; class=&amp;quot;plainlinks&amp;quot;&amp;gt;%s (%s%s)&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
		username,&lt;br /&gt;
		makeWikilink(&#039;User:&#039; .. username, username),&lt;br /&gt;
		table.concat(links, &#039; &amp;amp;bull; &#039;),&lt;br /&gt;
		sockCategoryLinks or &#039;&#039;&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Submit_an_edit_request/config&amp;diff=1076</id>
		<title>Modul:Submit an edit request/config</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Submit_an_edit_request/config&amp;diff=1076"/>
		<updated>2015-08-09T08:56:17Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Submit an edit request/config“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module contains configuration data for [[Module:Submit an edit request]].&lt;br /&gt;
&lt;br /&gt;
local cfg = {}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- General config&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- The default display value for edit requests.&lt;br /&gt;
cfg[&#039;default-display-value-en&#039;] = &#039;Submit an edit request&#039;&lt;br /&gt;
cfg[&#039;default-display-value-de&#039;] = &#039;Überarbeitungshinweis erstellen&#039;&lt;br /&gt;
cfg[&#039;default-display-value&#039;] = cfg[&#039;default-display-value-en&#039;]&lt;br /&gt;
&lt;br /&gt;
-- The template that stores the edit request preload text&lt;br /&gt;
cfg[&#039;preload-template&#039;] = &#039;Template:Submit an edit request/preload&#039;&lt;br /&gt;
&lt;br /&gt;
-- The section heading that is generated when a user clicks on an edit request&lt;br /&gt;
-- link. $1 is the protection level text, e.g. &amp;quot;Semi-protected&amp;quot; or&lt;br /&gt;
-- &amp;quot;Template-protected&amp;quot;. $2 is the current date, in the format specified by the&lt;br /&gt;
-- &amp;quot;preload-title-date-format&amp;quot; message.&lt;br /&gt;
cfg[&#039;preload-title-text&#039;] = &#039;$1 edit request on $2&#039;&lt;br /&gt;
&lt;br /&gt;
-- The date format for the automatically-generated section heading. The format&lt;br /&gt;
-- must be valid input for the #time parser function.&lt;br /&gt;
cfg[&#039;preload-title-date-format&#039;] = &#039;j F Y&#039;&lt;br /&gt;
&lt;br /&gt;
-- The names of the templates to be used as wrappers for the &amp;quot;link&amp;quot; and &amp;quot;button&amp;quot;&lt;br /&gt;
-- functions. These are passed as arguments to the &amp;quot;wrappers&amp;quot; option of&lt;br /&gt;
-- [[Module:Arguments]].&lt;br /&gt;
cfg[&#039;link-wrapper-template&#039;] = {&#039;Template:Submit an edit request/link&#039;, &#039;Vorlage:Submit an edit request/link&#039;}&lt;br /&gt;
cfg[&#039;button-wrapper-template&#039;] = {&#039;Template:Submit an edit request&#039;, &#039;Vorlage:Submit an edit request&#039;}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Protection level config&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- These settings are for the different protection levels which the module can&lt;br /&gt;
-- output edit request links for.&lt;br /&gt;
--&lt;br /&gt;
-- editintro:&lt;br /&gt;
-- The template to use as the edit intro users see when they click on an edit&lt;br /&gt;
-- request link.&lt;br /&gt;
--&lt;br /&gt;
-- request-template:&lt;br /&gt;
-- The name of the edit request template for that protection level. Do not&lt;br /&gt;
-- include the &amp;quot;Template:&amp;quot; text.&lt;br /&gt;
--&lt;br /&gt;
-- protectionlevel:&lt;br /&gt;
-- The name of the protection level, used for formatting the automatically-&lt;br /&gt;
-- generated section headings.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- Semi-protection&lt;br /&gt;
cfg[&#039;semi-editintro&#039;] = &#039;Template:Edit semi-protected/editintro&#039;&lt;br /&gt;
cfg[&#039;semi-request-template&#039;] = &#039;edit semi-protected&#039;&lt;br /&gt;
cfg[&#039;semi-protectionlevel&#039;] = &#039;Semi-protected&#039;&lt;br /&gt;
&lt;br /&gt;
-- Template-protection&lt;br /&gt;
cfg[&#039;template-editintro&#039;] = &#039;Template:Edit template-protected/editintro&#039;&lt;br /&gt;
cfg[&#039;template-request-template&#039;] = &#039;edit template-protected&#039;&lt;br /&gt;
cfg[&#039;template-protectionlevel&#039;] = &#039;Template-protected&#039;&lt;br /&gt;
&lt;br /&gt;
-- Full protection&lt;br /&gt;
cfg[&#039;full-editintro&#039;] = &#039;Template:Edit protected/editintro&#039;&lt;br /&gt;
cfg[&#039;full-request-template&#039;] = &#039;edit protected&#039;&lt;br /&gt;
cfg[&#039;full-protectionlevel&#039;] = &#039;Protected&#039;&lt;br /&gt;
&lt;br /&gt;
return cfg&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Submit_an_edit_request&amp;diff=1075</id>
		<title>Modul:Submit an edit request</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Submit_an_edit_request&amp;diff=1075"/>
		<updated>2015-08-09T08:56:16Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Submit an edit request“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{Submit an edit request}}.&lt;br /&gt;
&lt;br /&gt;
-- Load necessary modules&lt;br /&gt;
local mRedirect = require(&#039;Module:Redirect&#039;)&lt;br /&gt;
local cfg = mw.loadData(&#039;Module:Submit an edit request/config&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function message(key, ...)&lt;br /&gt;
	local params = {...}&lt;br /&gt;
	local msg = cfg[key]&lt;br /&gt;
	if #params &amp;lt; 1 then&lt;br /&gt;
		return msg&lt;br /&gt;
	else&lt;br /&gt;
		return mw.message.newRawMessage(msg):params(params):plain()&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeRequestUrl(level, titleObj)&lt;br /&gt;
	titleObj = titleObj or mw.title.getCurrentTitle()&lt;br /&gt;
	&lt;br /&gt;
	do&lt;br /&gt;
		local levels = {&lt;br /&gt;
			semi = true,&lt;br /&gt;
			template = true,&lt;br /&gt;
			full = true&lt;br /&gt;
		}&lt;br /&gt;
		level = level and levels[level] and level or &#039;full&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local editintro, requestTemplate, levelText&lt;br /&gt;
	do&lt;br /&gt;
		local messages = {&lt;br /&gt;
			semi = {&lt;br /&gt;
				editintro = &#039;semi-editintro&#039;,&lt;br /&gt;
				requestTemplate = &#039;semi-request-template&#039;,&lt;br /&gt;
				levelText = &#039;semi-protectionlevel&#039;&lt;br /&gt;
			},&lt;br /&gt;
			template = {&lt;br /&gt;
				editintro = &#039;template-editintro&#039;,&lt;br /&gt;
				requestTemplate = &#039;template-request-template&#039;,&lt;br /&gt;
				levelText = &#039;template-protectionlevel&#039;&lt;br /&gt;
			},&lt;br /&gt;
			full = {&lt;br /&gt;
				editintro = &#039;full-editintro&#039;,&lt;br /&gt;
				requestTemplate = &#039;full-request-template&#039;,&lt;br /&gt;
				levelText = &#039;full-protectionlevel&#039;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		local levelMessages = messages[level]&lt;br /&gt;
		editintro = message(levelMessages.editintro)&lt;br /&gt;
		requestTemplate = message(levelMessages.requestTemplate)&lt;br /&gt;
		levelText = message(levelMessages.levelText)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local preloadtitle, talkpagename&lt;br /&gt;
	do&lt;br /&gt;
		-- Get the date text.&lt;br /&gt;
		local dateFormat = message(&#039;preload-title-date-format&#039;)&lt;br /&gt;
		local lang = mw.language.getContentLanguage()&lt;br /&gt;
		local date = lang:formatDate(dateFormat)&lt;br /&gt;
		&lt;br /&gt;
		-- Get the talk page name, and resolve it if it is a redirect.&lt;br /&gt;
		local namespace = titleObj.namespace&lt;br /&gt;
		talkpagename = mw.site.namespaces[namespace].talk.name&lt;br /&gt;
			.. &#039;:&#039;&lt;br /&gt;
			..  titleObj.text&lt;br /&gt;
		talkpagename = mRedirect.luaMain(talkpagename)&lt;br /&gt;
		preloadtitle = message(&#039;preload-title-text&#039;, levelText, date)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local preloadTemplate = message(&#039;preload-template&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local function encode(key, value)&lt;br /&gt;
		key = mw.uri.encode(key)&lt;br /&gt;
		value = mw.uri.encode(value)&lt;br /&gt;
		return key .. &#039;=&#039; .. value&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local query = {}&lt;br /&gt;
	query[#query + 1] = encode(&#039;preload&#039;, preloadTemplate)&lt;br /&gt;
	query[#query + 1] = encode(&#039;editintro&#039;, editintro)&lt;br /&gt;
	query[#query + 1] = encode(&#039;preloadparams[]&#039;, requestTemplate)&lt;br /&gt;
	query[#query + 1] = encode(&#039;preloadtitle&#039;, preloadtitle)&lt;br /&gt;
	query[#query + 1] = &#039;section=new&#039;&lt;br /&gt;
	query[#query + 1] = encode(&#039;preloadparams[]&#039;, titleObj.prefixedText)&lt;br /&gt;
	&lt;br /&gt;
	local url = mw.uri.fullUrl(talkpagename, {action = &#039;edit&#039;})&lt;br /&gt;
	url = tostring(url) .. &#039;&amp;amp;&#039; .. table.concat(query, &#039;&amp;amp;&#039;)&lt;br /&gt;
	return url&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._link(args)&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&#039;&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[%s %s]&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
		p.makeRequestUrl(args.type),&lt;br /&gt;
		args.display or message(&#039;default-display-value&#039; .. (((args.language and cfg[&#039;default-display-value-&#039; .. args.language]) and &#039;-&#039; .. args.language) or &#039;&#039;))&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._button(args)&lt;br /&gt;
	return require(&#039;Module:Clickable button 2&#039;).luaMain{&lt;br /&gt;
		[1] = args.display or message(&#039;default-display-value&#039; .. (((args.language and cfg[&#039;default-display-value-&#039; .. args.language]) and &#039;-&#039; .. args.language) or &#039;&#039;)),&lt;br /&gt;
		url = p.makeRequestUrl(args.type),&lt;br /&gt;
		class = &#039;mw-ui-progressive&#039;&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeInvokeFunc(func, wrapper)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local args = require(&#039;Module:Arguments&#039;).getArgs(frame, {&lt;br /&gt;
			wrappers = wrapper&lt;br /&gt;
		})&lt;br /&gt;
		return func(args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.link = makeInvokeFunc(p._link, message(&#039;link-wrapper-template&#039;))&lt;br /&gt;
p.button = makeInvokeFunc(p._button, message(&#039;button-wrapper-template&#039;))&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Su&amp;diff=1074</id>
		<title>Modul:Su</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Su&amp;diff=1074"/>
		<updated>2015-08-09T08:56:15Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Su“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{su}}.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	-- Use arguments from the parent frame only, and remove any blank arguments.&lt;br /&gt;
	-- We don&#039;t need to trim whitespace from any arguments, as this module only&lt;br /&gt;
	-- uses named arguments, and whitespace is trimmed from them automatically. &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;
		if v ~= &#039;&#039; then&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Define the variables to pass to luaMain.&lt;br /&gt;
	local sup = args.p&lt;br /&gt;
	local sub = args.b&lt;br /&gt;
	local options = {&lt;br /&gt;
		align = args.a,&lt;br /&gt;
		fontSize = args.w&lt;br /&gt;
	}&lt;br /&gt;
	return p._main(sup, sub, options)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(sup, sub, options)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	local span = mw.html.create(&#039;span&#039;)&lt;br /&gt;
&lt;br /&gt;
	-- Set the styles.&lt;br /&gt;
	span:css{&lt;br /&gt;
		[&#039;display&#039;]        = &#039;inline-block&#039;,&lt;br /&gt;
		[&#039;margin-bottom&#039;]  = &#039;-0.3em&#039;,&lt;br /&gt;
		[&#039;vertical-align&#039;] = sub and &#039;-0.4em&#039; or &#039;0.8em&#039;,&lt;br /&gt;
		[&#039;line-height&#039;]    = &#039;1.2em&#039;,&lt;br /&gt;
	}&lt;br /&gt;
	if options.fontSize == &#039;f&#039; or options.fontSize == &#039;fixed&#039; then&lt;br /&gt;
		span:css{&lt;br /&gt;
			[&#039;font-family&#039;] = &#039;monospace,courier&#039;,&lt;br /&gt;
			[&#039;font-size&#039;]   = &#039;85%&#039;&lt;br /&gt;
		}&lt;br /&gt;
	else&lt;br /&gt;
		span:css(&#039;font-size&#039;, options.fontSize and options.fontSize or &#039;85%&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if options.align == &#039;r&#039; or options.align == &#039;right&#039; then&lt;br /&gt;
		span:css(&#039;text-align&#039;, &#039;right&#039;)&lt;br /&gt;
	elseif options.align == &#039;c&#039; or options.align == &#039;center&#039; then&lt;br /&gt;
		span:css(&#039;text-align&#039;, &#039;center&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		span:css(&#039;text-align&#039;, &#039;left&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the wikitext.&lt;br /&gt;
	span&lt;br /&gt;
		:wikitext(sup)&lt;br /&gt;
		:tag(&#039;br&#039;, {selfClosing = true}):done()&lt;br /&gt;
		:wikitext(sub)&lt;br /&gt;
	&lt;br /&gt;
	return tostring(span)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Redirect_hatnote&amp;diff=1073</id>
		<title>Modul:Redirect hatnote</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Redirect_hatnote&amp;diff=1073"/>
		<updated>2015-08-09T08:56:13Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Redirect hatnote“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
-- This module produces a &amp;quot;redirect&amp;quot; hatnote. It looks like this:&lt;br /&gt;
-- &#039;&amp;quot;X&amp;quot; redirects here. For other uses, see Y.&#039;&lt;br /&gt;
-- It implements the {{redirect}} template.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local mHatnote = require(&#039;Module:Hatnote&#039;)&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local mRedirect -- lazily initialise [[Module:Redirect]]&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function getTitle(...)&lt;br /&gt;
	local success, titleObj = pcall(mw.title.new, ...)&lt;br /&gt;
	if success then&lt;br /&gt;
		return titleObj&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.redirect(frame)&lt;br /&gt;
	-- Get the args table and work out the maximum arg key.&lt;br /&gt;
	local origArgs = frame:getParent().args&lt;br /&gt;
	local args = {}&lt;br /&gt;
	local maxArg = 0&lt;br /&gt;
	for k, v in pairs(origArgs) do&lt;br /&gt;
		if type(k) == &#039;number&#039; and k &amp;gt; maxArg then&lt;br /&gt;
			maxArg = k&lt;br /&gt;
		end&lt;br /&gt;
		v = v:match(&#039;^%s*(.-)%s*$&#039;) -- Trim whitespace&lt;br /&gt;
		if v ~= &#039;&#039; then&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Return an error if no redirect was specified.&lt;br /&gt;
	local redirect = args[1]&lt;br /&gt;
	if not redirect then&lt;br /&gt;
		return mHatnote.makeWikitextError(&lt;br /&gt;
			&#039;no redirect specified&#039;,&lt;br /&gt;
			&#039;Template:Redirect#Errors&#039;,&lt;br /&gt;
			args.category&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Create the data table.&lt;br /&gt;
	local data = {}&lt;br /&gt;
	local iArg = 0&lt;br /&gt;
	local iData = 1&lt;br /&gt;
	repeat&lt;br /&gt;
		iArg = iArg + 2&lt;br /&gt;
		local useTable = data[iData] or {}&lt;br /&gt;
		local pages = useTable.pages or {}&lt;br /&gt;
		local use = args[iArg]&lt;br /&gt;
		local page = args[iArg + 1]&lt;br /&gt;
		local nextUse = args[iArg + 2]&lt;br /&gt;
		pages[#pages + 1] = page&lt;br /&gt;
		useTable.pages = pages&lt;br /&gt;
		if use ~= &#039;and&#039; then&lt;br /&gt;
			useTable.use = use&lt;br /&gt;
		end&lt;br /&gt;
		data[iData] = useTable&lt;br /&gt;
		if nextUse ~= &#039;and&#039; then&lt;br /&gt;
			iData = iData + 1&lt;br /&gt;
		end&lt;br /&gt;
	until iArg &amp;gt;= maxArg - 1&lt;br /&gt;
&lt;br /&gt;
	-- Create the options table.&lt;br /&gt;
	local options = {}&lt;br /&gt;
	options.selfref = args.selfref&lt;br /&gt;
		&lt;br /&gt;
	return p._redirect(redirect, data, options)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatUseTable(useTable, isFirst, redirect)&lt;br /&gt;
	-- Formats one use table. Use tables are the tables inside the data array.&lt;br /&gt;
	-- Each one corresponds to one use. (A use might be the word &amp;quot;cats&amp;quot; in the&lt;br /&gt;
	-- phrase &amp;quot;For cats, see [[Felines]]&amp;quot;.)&lt;br /&gt;
	-- Returns a string, or nil if no use was specified.&lt;br /&gt;
	-- The isFirst parameter is used to apply special formatting for the first&lt;br /&gt;
	-- table in the data array. If isFirst is specified, the redirect parameter&lt;br /&gt;
	useTable = useTable or {}&lt;br /&gt;
	local use&lt;br /&gt;
	if isFirst then&lt;br /&gt;
		use = useTable.use or &#039;other uses&#039;&lt;br /&gt;
	elseif not useTable.use then&lt;br /&gt;
		return nil&lt;br /&gt;
	elseif tonumber(useTable.use) == 1 then&lt;br /&gt;
		use = &#039;other uses&#039;&lt;br /&gt;
	else&lt;br /&gt;
		use = useTable.use&lt;br /&gt;
	end&lt;br /&gt;
	local pages = useTable.pages or {}&lt;br /&gt;
	if isFirst then&lt;br /&gt;
		redirect = redirect or error(&lt;br /&gt;
			&#039;isFirst was set in formatUseTable, but no redirect was supplied&#039;,&lt;br /&gt;
			2&lt;br /&gt;
		)&lt;br /&gt;
		pages[1] = pages[1] or redirect .. &#039; (disambiguation)&#039;&lt;br /&gt;
	else&lt;br /&gt;
		pages[1] = pages[1] or useTable.use .. &#039; (disambiguation)&#039;&lt;br /&gt;
	end&lt;br /&gt;
	pages = mHatnote.formatPages(unpack(pages))&lt;br /&gt;
	pages = mw.text.listToText(pages)&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&#039;For %s, see %s.&#039;,&lt;br /&gt;
		use,&lt;br /&gt;
		pages&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._redirect(redirect, data, options, titleObj)&lt;br /&gt;
	-- Validate the input. Don&#039;t bother checking titleObj as it is only used&lt;br /&gt;
	-- for testing purposes.&lt;br /&gt;
	checkType(&#039;_redirect&#039;, 1, redirect, &#039;string&#039;)&lt;br /&gt;
	checkType(&#039;_redirect&#039;, 2, data, &#039;table&#039;, true)&lt;br /&gt;
	checkType(&#039;_redirect&#039;, 3, options, &#039;table&#039;, true)&lt;br /&gt;
	data = data or {}&lt;br /&gt;
	options = options or {}&lt;br /&gt;
&lt;br /&gt;
	-- Generate the text.&lt;br /&gt;
	local text = {}&lt;br /&gt;
	text[#text + 1] = &#039;&amp;quot;&#039; .. redirect .. &#039;&amp;quot; redirects here.&#039;&lt;br /&gt;
	text[#text + 1] = formatUseTable(data[1] or {}, true, redirect)&lt;br /&gt;
	if data[1] and data[1].use and data[1].use ~= &#039;other uses&#039; then&lt;br /&gt;
		for i = 2, #data do&lt;br /&gt;
			text[#text + 1] = formatUseTable(data[i] or {}, false)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	text = table.concat(text, &#039; &#039;)&lt;br /&gt;
	&lt;br /&gt;
	-- Generate the options to pass to [[Module:Hatnote]].&lt;br /&gt;
	local mhOptions = {}&lt;br /&gt;
	mhOptions.selfref = options.selfref&lt;br /&gt;
&lt;br /&gt;
	-- Find whether to add the tracking category.&lt;br /&gt;
	-- We only add the category if both of the following are true:&lt;br /&gt;
	-- a) redirect isn&#039;t any of the keywords &#039;REDIRECT&#039;, &#039;REDIRECT1&#039;,&lt;br /&gt;
	-- &#039;REDIRECT2&#039;, ..., or &#039;TERM&#039;.&lt;br /&gt;
	-- b) we are in the main namespace.&lt;br /&gt;
	-- If these are both true, then we check for existence of the redirect. If&lt;br /&gt;
	-- it doesn&#039;t exist, then we add the missing redirect category. If it does&lt;br /&gt;
	-- exist, but the redirect target is not the current page, we add the&lt;br /&gt;
	-- invalid redirect category.&lt;br /&gt;
	local category&lt;br /&gt;
	if not redirect:find(&#039;^REDIRECT%d*$&#039;) and redirect ~= &#039;TERM&#039; then&lt;br /&gt;
		titleObj = titleObj or mw.title.getCurrentTitle()&lt;br /&gt;
		if titleObj.namespace == 0 then&lt;br /&gt;
			local redirectTitle = getTitle(redirect)&lt;br /&gt;
			if redirectTitle then&lt;br /&gt;
				if not redirectTitle.exists then&lt;br /&gt;
					category = &#039;[[Category:Missing redirects]]&#039;&lt;br /&gt;
				else&lt;br /&gt;
					mRedirect = require(&#039;Module:Redirect&#039;)&lt;br /&gt;
					local target = mRedirect.getTarget(redirectTitle)&lt;br /&gt;
					local targetTitle = target and getTitle(target)&lt;br /&gt;
					if targetTitle and not mw.title.equals(targetTitle, titleObj) then&lt;br /&gt;
						category = &#039;[[Category:Invalid redirects]]&#039;&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	category = category or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	return mHatnote._hatnote(text, mhOptions) .. category&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Main&amp;diff=1072</id>
		<title>Modul:Main</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Main&amp;diff=1072"/>
		<updated>2015-08-09T08:56:12Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Main“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
-- This module produces a link to a main article or articles. It implements the&lt;br /&gt;
-- template {{main}}.&lt;br /&gt;
-- &lt;br /&gt;
-- If the module is used in category or category talk space, it produces &amp;quot;The&lt;br /&gt;
-- main article for this category is xxx&amp;quot;. Otherwise, it produces&lt;br /&gt;
-- &amp;quot;Main article: xxx&amp;quot;.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local mHatnote = require(&#039;Module:Hatnote&#039;)&lt;br /&gt;
local mTableTools -- lazily initialise&lt;br /&gt;
local mArguments -- lazily initialise&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	mTableTools = require(&#039;Module:TableTools&#039;)&lt;br /&gt;
	mArguments = require(&#039;Module:Arguments&#039;)&lt;br /&gt;
	local args = mArguments.getArgs(frame, {parentOnly = true})&lt;br /&gt;
	local pages = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &#039;number&#039; then&lt;br /&gt;
			local display = args[&#039;l&#039; .. tostring(k)]&lt;br /&gt;
			local page = {v, display}&lt;br /&gt;
			pages[k] = page&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	pages = mTableTools.compressSparseArray(pages)&lt;br /&gt;
	local options = {&lt;br /&gt;
		selfref = args.selfref&lt;br /&gt;
	}&lt;br /&gt;
	return p._main(options, unpack(pages))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(options, ...)&lt;br /&gt;
	-- Get the list of pages. If no first page was specified we use the current&lt;br /&gt;
	-- page name.&lt;br /&gt;
	local pages = {...}&lt;br /&gt;
	local currentTitle = mw.title.getCurrentTitle()&lt;br /&gt;
	local firstPageTable = pages[1]&lt;br /&gt;
	local firstPage&lt;br /&gt;
	if firstPageTable then&lt;br /&gt;
		firstPage = firstPageTable[1]&lt;br /&gt;
	else&lt;br /&gt;
		firstPage = currentTitle.text&lt;br /&gt;
		firstPageTable = {firstPage}&lt;br /&gt;
		pages[1] = firstPageTable&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Find the pagetype.&lt;br /&gt;
	local firstPageNs = mHatnote.findNamespaceId(firstPage)&lt;br /&gt;
	local pagetype = firstPageNs == 0 and &#039;article&#039; or &#039;page&#039;&lt;br /&gt;
&lt;br /&gt;
	-- Make the formatted link text&lt;br /&gt;
	local links = mHatnote.formatPageTables(unpack(pages))&lt;br /&gt;
	links = mw.text.listToText(links)&lt;br /&gt;
&lt;br /&gt;
	-- Build the text.&lt;br /&gt;
	local isPlural = #pages &amp;gt; 1&lt;br /&gt;
	local currentNs = currentTitle.namespace&lt;br /&gt;
	local isCategoryNamespace = currentNs - currentNs % 2 == 14&lt;br /&gt;
	local stringToFormat&lt;br /&gt;
	if isCategoryNamespace then&lt;br /&gt;
		if isPlural then&lt;br /&gt;
			stringToFormat = &#039;The main %ss for this&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Categorization|category]] are %s&#039;&lt;br /&gt;
		else&lt;br /&gt;
			stringToFormat = &#039;The main %s for this&#039;&lt;br /&gt;
				.. &#039; [[Wikipedia:Categorization|category]] is %s&#039;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if isPlural then&lt;br /&gt;
			stringToFormat = &#039;Main %ss: %s&#039;&lt;br /&gt;
		else&lt;br /&gt;
			stringToFormat = &#039;Main %s: %s&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local text = string.format(stringToFormat, pagetype, links)&lt;br /&gt;
&lt;br /&gt;
	-- Process the options and pass the text to the _rellink function in&lt;br /&gt;
	-- [[Module:Hatnote]].&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	local hnOptions = {&lt;br /&gt;
		extraclasses = &#039;relarticle mainarticle&#039;,&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>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Lua_banner&amp;diff=1071</id>
		<title>Modul:Lua banner</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Lua_banner&amp;diff=1071"/>
		<updated>2015-08-09T08:56:11Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Lua banner“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements the {{lua}} template.&lt;br /&gt;
&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
local mList = require(&#039;Module:List&#039;)&lt;br /&gt;
local mTableTools = require(&#039;Module:TableTools&#039;)&lt;br /&gt;
local mMessageBox = require(&#039;Module:Message box&#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(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
		if v ~= &#039;&#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 = &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Error: no modules specified&amp;lt;/strong&amp;gt;&#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(&#039;[[:%s]]&#039;, module)&lt;br /&gt;
		end&lt;br /&gt;
		local moduleList = mList.makeList(&#039;bulleted&#039;, moduleLinks)&lt;br /&gt;
		boxArgs.text = &#039;Uses [[Wikipedia:Lua|Lua]]:\n&#039; .. moduleList&lt;br /&gt;
	end&lt;br /&gt;
	boxArgs.type = &#039;notice&#039;&lt;br /&gt;
	boxArgs.small = true&lt;br /&gt;
	boxArgs.image = &#039;[[File:Lua-logo-nolabel.png|30px|alt=Lua logo|link=Wikipedia:Lua]]&#039;&lt;br /&gt;
	return mMessageBox.main(&#039;mbox&#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 &#039;&#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] = &#039;Lua templates with errors&#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;
--				[&#039;Module:String&#039;] = &#039;Lua String-based templates&#039;,&lt;br /&gt;
--				[&#039;Module:Math&#039;] = &#039;Templates based on the Math Lua module&#039;,&lt;br /&gt;
--				[&#039;Module:BaseConvert&#039;] = &#039;Templates based on the BaseConvert Lua module&#039;,&lt;br /&gt;
--				[&#039;Module:Citation&#039;] = &#039;Lua-based citation templates&#039;&lt;br /&gt;
--			}&lt;br /&gt;
--			categories[&#039;Module:Citation/CS1&#039;] = categories[&#039;Module:Citation&#039;]&lt;br /&gt;
--			category = modules[1] and categories[modules[1]]&lt;br /&gt;
--			category = category or &#039;Lua-based templates&#039;&lt;br /&gt;
			category = &#039;Lua-based templates&#039;&lt;br /&gt;
		end&lt;br /&gt;
		cats[#cats + 1] = category&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i, cat in ipairs(cats) do&lt;br /&gt;
		cats[i] = string.format(&#039;[[Category:%s]]&#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>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Hidden&amp;diff=1070</id>
		<title>Modul:Hidden</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Hidden&amp;diff=1070"/>
		<updated>2015-08-09T08:56:10Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Hidden“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
local getArgs = require( &#039;Module:Arguments&#039; ).getArgs&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	&lt;br /&gt;
	div = mw.html.create( &#039;div&#039; )&lt;br /&gt;
	div:addClass( &#039;NavFrame&#039; )&lt;br /&gt;
	if not args.expanded then&lt;br /&gt;
		div:addClass( &#039;collapsed&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if args.class then&lt;br /&gt;
		div:addClass( args.class )&lt;br /&gt;
	end&lt;br /&gt;
	div:css ( &#039;border&#039;, args.border )&lt;br /&gt;
		:cssText ( args.style )&lt;br /&gt;
		:tag( &#039;div&#039; )&lt;br /&gt;
			:addClass( &#039;NavHead&#039; )&lt;br /&gt;
			:css( &#039;font-weight&#039;, args.fw1 )&lt;br /&gt;
			:css( &#039;background&#039;, args.bg1 )&lt;br /&gt;
			:css( &#039;text-align&#039;, args.ta1 )&lt;br /&gt;
			:cssText( args.headerstyle )&lt;br /&gt;
			:wikitext( args.header )&lt;br /&gt;
			:done()&lt;br /&gt;
		:tag( &#039;div&#039; )&lt;br /&gt;
			:addClass( &#039;NavContent&#039; )&lt;br /&gt;
			:css( &#039;font-weight&#039;, args.fw2 )&lt;br /&gt;
			:css( &#039;background&#039;, args.bg2 )&lt;br /&gt;
			:css( &#039;text-align&#039;, args.ta2 )&lt;br /&gt;
			:cssText( args.contentstyle )&lt;br /&gt;
			:wikitext( args.content )&lt;br /&gt;
			:done()&lt;br /&gt;
		:done()&lt;br /&gt;
		&lt;br /&gt;
	return tostring(div)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	&lt;br /&gt;
	args.header = args.header or args.title or (args[1] and mw.text.trim(args[1])) or &#039;{{{header}}}&#039;&lt;br /&gt;
	args.content = args.content or (args[2] and mw.text.trim(args[2])) or &#039;{{{content}}}&#039;&lt;br /&gt;
	args.style = args.style or args.css or &#039;&#039;&lt;br /&gt;
	args.border = args.border or &#039;none&#039;&lt;br /&gt;
	args.headerstyle = args.headerstyle or args.titlestyle or args.headercss or &#039;&#039;&lt;br /&gt;
	args.contentstyle = args.contentstyle or args.contentcss or &#039;&#039;&lt;br /&gt;
	args.fw1 = args.fw1 or &#039;bold&#039;&lt;br /&gt;
	args.fw2 = args.fw2 or &#039;normal&#039;&lt;br /&gt;
	args.bg1 = args.bg1 or &#039;transparent&#039;&lt;br /&gt;
	args.bg2 = args.bg2 or &#039;transparent&#039;&lt;br /&gt;
	args.ta1 = args.ta1 or &#039;center&#039;&lt;br /&gt;
	args.ta2 = args.ta2 or &#039;left&#039;&lt;br /&gt;
	&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>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Further&amp;diff=1069</id>
		<title>Modul:Further</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Further&amp;diff=1069"/>
		<updated>2015-08-09T08:56:09Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Further“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
-- This module produces a &amp;quot;Further information: a, b and c&amp;quot; link. It implements&lt;br /&gt;
-- the {{further}} template.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local mHatnote = require(&#039;Module:Hatnote&#039;)&lt;br /&gt;
local mTableTools -- lazily initialise&lt;br /&gt;
local mArguments -- lazily initialise&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.further(frame)&lt;br /&gt;
	mTableTools = require(&#039;Module:TableTools&#039;)&lt;br /&gt;
	mArguments = require(&#039;Module:Arguments&#039;)&lt;br /&gt;
	local args = mArguments.getArgs(frame, {parentOnly = true})&lt;br /&gt;
	local pages = mTableTools.compressSparseArray(args)&lt;br /&gt;
	if #pages &amp;lt; 1 then&lt;br /&gt;
		return mHatnote.makeWikitextError(&lt;br /&gt;
			&#039;no page names specified&#039;,&lt;br /&gt;
			&#039;Template:Further#Errors&#039;,&lt;br /&gt;
			args.category&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	local options = {&lt;br /&gt;
		selfref = args.selfref&lt;br /&gt;
	}&lt;br /&gt;
	return p._further(options, unpack(pages))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._further(options, ...)&lt;br /&gt;
	local links = mHatnote.formatPages(...)&lt;br /&gt;
	local text = &#039;Further information: &#039; .. mw.text.listToText(links)&lt;br /&gt;
	return mHatnote._hatnote(text, options)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://www.verzauberte-welten.de/index.php?title=Modul:Clickable_button_2&amp;diff=1068</id>
		<title>Modul:Clickable button 2</title>
		<link rel="alternate" type="text/html" href="https://www.verzauberte-welten.de/index.php?title=Modul:Clickable_button_2&amp;diff=1068"/>
		<updated>2015-08-09T08:56:07Z</updated>

		<summary type="html">&lt;p&gt;Maintenance script: Schützte „Modul:Clickable button 2“ ([Bearbeiten=Nur Administratoren erlauben] (unbeschränkt) [Verschieben=Nur Administratoren erlauben] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{clickable button 2}}.&lt;br /&gt;
&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&#039;Module:Arguments&#039;).getArgs(frame, {&lt;br /&gt;
		wrappers = {&#039;Template:Clickable button 2&#039;, &#039;Vorlage:Clickable button 2&#039;}&lt;br /&gt;
	})&lt;br /&gt;
	return p.luaMain(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.luaMain(args)&lt;br /&gt;
	if not args[1] and not args.url then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local data = p.makeLinkData(args)&lt;br /&gt;
	local link = p.renderLink(data)&lt;br /&gt;
	local trackingCategories = p.renderTrackingCategories(args)&lt;br /&gt;
	return link .. trackingCategories&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeLinkData(args)&lt;br /&gt;
	local data = {}&lt;br /&gt;
&lt;br /&gt;
	-- Get the link and display values, and find whether we are outputting a&lt;br /&gt;
	-- wikilink or a URL.&lt;br /&gt;
	if args.url then&lt;br /&gt;
		data.isUrl = true&lt;br /&gt;
		data.link = args.url&lt;br /&gt;
		if args[1] then&lt;br /&gt;
			data.display = args[1]&lt;br /&gt;
		else&lt;br /&gt;
			data.display = args.url&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		data.isUrl = false&lt;br /&gt;
		data.link = args[1]&lt;br /&gt;
		if args[2] then&lt;br /&gt;
			data.display = args[2]&lt;br /&gt;
		else&lt;br /&gt;
			data.display = args[1]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Classes&lt;br /&gt;
	local class = args.class and args.class:lower()&lt;br /&gt;
	data.classes = {}&lt;br /&gt;
	if class == &#039;ui-button-green&#039;&lt;br /&gt;
		or class == &#039;ui-button-blue&#039;&lt;br /&gt;
		or class == &#039;ui-button-red&#039;&lt;br /&gt;
	then&lt;br /&gt;
		table.insert(&lt;br /&gt;
			data.classes,&lt;br /&gt;
			&#039;submit ui-button ui-widget ui-state-default ui-corner-all&#039;&lt;br /&gt;
				.. &#039; ui-button-text-only ui-button-text&#039;&lt;br /&gt;
		)&lt;br /&gt;
	else&lt;br /&gt;
		table.insert(data.classes, &#039;mw-ui-button&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if class then&lt;br /&gt;
		table.insert(data.classes, class)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Styles&lt;br /&gt;
	do&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Check whether we are on the same page as we have specified in&lt;br /&gt;
		-- args[1], but not if we are using a URL link, as then args[1] is only&lt;br /&gt;
		-- a display value. If we are currently on the page specified in&lt;br /&gt;
		-- args[1] make the button colour darker so that it stands out from&lt;br /&gt;
		-- other buttons on the page.&lt;br /&gt;
		--]]&lt;br /&gt;
		local success, linkTitle, currentTitle&lt;br /&gt;
		if not data.isUrl then&lt;br /&gt;
			currentTitle = mw.title.getCurrentTitle()&lt;br /&gt;
			success, linkTitle = pcall(mw.title.new, args[1])&lt;br /&gt;
		end&lt;br /&gt;
		if success&lt;br /&gt;
			and linkTitle&lt;br /&gt;
			and mw.title.equals(currentTitle, linkTitle)&lt;br /&gt;
		then&lt;br /&gt;
			if class == &#039;ui-button-blue&#039;&lt;br /&gt;
				or class == &#039;mw-ui-progressive&#039;&lt;br /&gt;
			then&lt;br /&gt;
				data.backgroundColor = &#039;#2962CB&#039;&lt;br /&gt;
			elseif class == &#039;ui-button-green&#039;&lt;br /&gt;
				or class == &#039;mw-ui-constructive&#039;&lt;br /&gt;
			then&lt;br /&gt;
				data.backgroundColor = &#039;#008B6D&#039;&lt;br /&gt;
			elseif class == &#039;ui-button-red&#039;&lt;br /&gt;
				or class == &#039;mw-ui-destructive&#039;&lt;br /&gt;
			then&lt;br /&gt;
				data.backgroundColor = &#039;#A6170F&#039;&lt;br /&gt;
			else&lt;br /&gt;
				data.backgroundColor = &#039;#CCC&#039;&lt;br /&gt;
				data.color = &#039;#666&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		-- Add user-specified styles.&lt;br /&gt;
		data.style = args.style&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderLink(data)&lt;br /&gt;
	-- Render the display span tag.&lt;br /&gt;
	local display&lt;br /&gt;
	do&lt;br /&gt;
		local displaySpan = mw.html.create(&#039;span&#039;)&lt;br /&gt;
		for i, class in ipairs(data.classes or {}) do&lt;br /&gt;
			displaySpan:addClass(class)&lt;br /&gt;
		end&lt;br /&gt;
		displaySpan&lt;br /&gt;
			:attr(&#039;role&#039;, &#039;button&#039;)&lt;br /&gt;
			:attr(&#039;aria-disabled&#039;, &#039;false&#039;)&lt;br /&gt;
			:css{&lt;br /&gt;
				[&#039;background-color&#039;] = data.backgroundColor,&lt;br /&gt;
				color = data.color&lt;br /&gt;
			}&lt;br /&gt;
		if data.style then&lt;br /&gt;
			displaySpan:cssText(data.style)&lt;br /&gt;
		end&lt;br /&gt;
		displaySpan:wikitext(data.display)&lt;br /&gt;
		display = tostring(displaySpan)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Render the link&lt;br /&gt;
	local link &lt;br /&gt;
	if data.isUrl then&lt;br /&gt;
		link = string.format(&#039;[%s %s]&#039;, data.link, display)&lt;br /&gt;
	else&lt;br /&gt;
		link = string.format(&#039;[[%s|%s]]&#039;, data.link, display)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return string.format(&#039;&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039;, link)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderTrackingCategories(args)&lt;br /&gt;
	if yesno(args.category) == false then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local class = args.class and args.class:lower()&lt;br /&gt;
	if class == &#039;ui-button-green&#039;&lt;br /&gt;
		or class == &#039;ui-button-blue&#039;&lt;br /&gt;
		or class == &#039;ui-button-red&#039;&lt;br /&gt;
	then&lt;br /&gt;
		return &#039;[[Category:Pages using old style ui-button-color]]&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>