User:PerfektesChaos/js/WikiSyntaxTextMod/dL.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
// PerfektesChaos/js/WikiSyntaxTextMod/dL.js
/// 2024-02-25   PerfektesChaos@de.wikipedia
/// Fingerprint: #0#0#
/// @license: CC-by-sa/4.0 GPLv3
/// <nowiki>
// Localization for WikiSyntaxTextMod
/* global mw:true, mediaWiki:false                                     */
/* jshint forin:false,
          bitwise:true, curly:true, eqeqeq:true, latedef:true,
          laxbreak:true,
          nocomma:true, strict:true, undef:true, unused:true           */


if ( typeof mediaWiki  !==  "object" ) {   // disconnected
   mw  =  { libs:   { WikiSyntaxTextMod:  { }
                    },
            log:    function () {"use strict";}
          };
}
( function ( mw ) {
   "use strict";
   var version  =  -7.69,
       sign     =  "WikiSyntaxTextMod",
       sub      =  "L",
       rls, self, WSTM;
   if ( typeof mw.loader  ===  "object" ) {
      rls   =  { };
      self  =  "user:PerfektesChaos/" + sign + "/" + sub;
      rls[ self ] = "loading";
      mw.loader.state( rls );
   }
   if ( typeof mw.libs[ sign ]  !==  "object" ) {   // isolated
      mw.libs[ sign ]  =  { };
   }
   WSTM  =  mw.libs[ sign ];
   if ( typeof WSTM.lang  !==  "object" ) {
      WSTM.lang  =  { };
   }
   WSTM.lang.vsn   =  version;
   WSTM.lang.self  =  self;
   if ( typeof WSTM.bb  !==  "object" ) {
      WSTM.bb  =  { };
   }
   if ( typeof WSTM.debugging  !==  "object" ) {
      WSTM.debugging  =  { };
   }
} ( mw ) );




/*
Uses:
   >  .g.projLang
   >  .g.wDBname
   >  .g.wNsNumber
    < .hooks
Requires: JavaScript 1.3  (String.charCodeAt String.fromCharCode)
          JavaScript 1.5  RegExp non-capturing parenthese
 */



//-----------------------------------------------------------------------



mw.libs.WikiSyntaxTextMod.bb.utilL  =  function ( WSTM ) {
   // Building block and run environment support
   // 2012-05-18 PerfektesChaos@de.wikipedia
   "use strict";
   if ( typeof WSTM.util  !==  "object" ) {
      WSTM.util  =  { };
   }


   if ( typeof WSTM.util.fiatObjects  !==  "function" ) {
      WSTM.util.fiatObjects  =  function ( adult, activate, assign ) {
         // Ensure existence of at least empty object
         // Precondition:
         //    adult     -- parent object
         //    activate  -- String with name of child object
         //    assign    -- optional object with initial definition
         //                 if containing object components,
         //                 they will be asserted as well
         // Postcondition:
         //    adult has been extended
         // Uses:
         //    .util.fiatObjects()  -- recursive
         // 2012-05-18 PerfektesChaos@de.wikipedia
         var elt,
             obj,
             s;
         if ( typeof adult[ activate ]  !==  "object" ) {
            adult[ activate ]  =  ( assign  ?  assign  :  { } );
         }
         if ( assign ) {
            obj  =  adult[ activate ];
            for ( s in assign ) {
               elt  =  assign[ s ];
               if ( typeof elt  ===  "object" ) {
                  WSTM.util.fiatObjects( obj, s, elt );
               }
            }  //  for s in assign
         }
      };   // .util.fiatObjects()
   }


   WSTM.util.fiatObjects( WSTM,  "debugging",  { loud: false } );


};   // .bb.utilL()
mw.libs.WikiSyntaxTextMod.bb.utilL( mw.libs.WikiSyntaxTextMod );
delete mw.libs.WikiSyntaxTextMod.bb.utilL;



//-----------------------------------------------------------------------



mw.libs.WikiSyntaxTextMod.bb.langL  =  function ( WSTM ) {
   // Variant localization functions
   // Uses:
   //    .util.fiatObjects()
   // 2012-12-07 PerfektesChaos@de.wikipedia
   "use strict";
   WSTM.util.fiatObjects( WSTM,  "lang",
                          { chr:       { },
                            l:         { },
                            p:         { },
                            s:         { },
                            templates: {  magic$:  { }  },
                            text:      { },
                            translate: { read:  [ "en" ],
                                         write: [ "en" ] }
                          } );



   WSTM.lang.chr  =  { cjk:  ":jp:ko:zh:",
                       rtl:  ":ar:fa:he:",
                       zwj:  ":kn:ml:sa:si:",
                       zwnj: ":bn:fa:kn:ml:mr:mzn:te:",
                       zwsp: ":bo:km:"
                       // 200A   8203  ZERO WIDTH SPACE
                       // 200B   8204  ZERO WIDTH NON-JOINER
                       // 200C   8205  ZERO WIDTH JOINER
   };   // .lang.chr



   WSTM.lang.rtl  =    "|aeb|ar|arc|arq|arz|azb|azj|bcc|bgn|bqi"
                     + "|chg|dv|fa|glk|he|hbo|ira|khw|ku|ota|lrc"
                     + "|mzn|pnb|prd|ps|sd|syc|syr|ug|ur|ydd|yi|";
   // 2021-10-26 PerfektesChaos@de.wikipedia



   //  .lang.translate.context  =  false;   "w:de:"



   WSTM.lang.correct  =  {   // Fix frequently mistaken language code
      "aze"   : "az",
      "cz"    : "cs",
      "dk"    : "da",
      "en-UK" : "en-GB",
      "eng"   : "en",
      "ger"   : "de",
      "gr"    : "el",
      "in"    : "id",
      "iw"    : "he",
      "jp"    : "ja",
      "lat"   : "la"
   };   // .lang.correct 2021-10-26



   WSTM.lang.trans  =  {   // Replace less common by major language
      // 2012-11-20 PerfektesChaos@de.wikipedia
      "als" : "de",
      "bar" : "de",
      "dsb" : "de",
      "frr" : "de",
      "gsw" : "de",
      "hsb" : "de",
      "ksh" : "de",
      "lb" :  "de",
      "nds" : "de",
      "pdc" : "de",
      "pdt" : "de",
      "pfl" : "de",
      "sli" : "de",
      "stq" : "de",
      "vmf" : "de"
   };   // .lang.trans



   WSTM.lang.templates.issn  =  { trsl: false };



   WSTM.lang.templates.magic$["*$"]  =
         // Regexp for generic variable names
           "ANCHORENCODE|"
         + "(ARTICLE|BASE|FULL|SUB(JECT)?|TALK)?PAGENAMEE?|"
         + "(ARTICLE|NAME|SUBJECT|TALK)SPACEE?|"
         + "CONTENTLANG(UAGE)?|"
         + "(CURRENT|LOCAL)"
         +    "(DAY(2|NAME)?|"
         +     "DOW|"
         +     "HOUR|"
         +     "MONTH(1|2|ABBREV|NAME(GEN)?)?|"
         +     "TIME(STAMP)?|"
         +     "|VERSION"
         +     "|WEEK"
         +     "YEAR)|"
         + "DIR(ECTION)?MARK|"
         + "NAMESPACENUMBER|"
         + "NUMBER"
         +   "(OF"
         +    "(ACTIVEUSERS|ADMINS|ARTICLES"
         +                "|EDITS|FILES|PAGES|USERS|VIEWS)"
         +   ")|"
         + "PAGE(LANGUAGE|S(INCAT(EGORY)?|IZE))|"
         + "PATH|"
         + "PROTECTIONLEVEL|"
         + "QUERY|"
         + "REVISION(ID|DAY2?|MONTH1?|TIMESTAMP|USER|YEAR)|"
         + "ROOTPAGENAME|"
         + "(ARTICLE|SCRIPT|STYLE)PATH|"
         + "SERVER(NAME)?|"
         + "WIKI";   // 2017-04-09
   WSTM.lang.templates.magic$["*:"]  =
         // Regexp for generic variable names terminated by colon ':'
         "defaultsort|displaytitle|gender|int|plural|protectionlevel|"
         + "pagesi(ncategory|ze)|"
         + "(canonica|ful|loca)lurle?|"
         + "anchorencode|filepath|formatnum|msgnw|ns|urlencode|"
         + "[lu]c(first)?|"
         + "pad(lef|righ)t|"
         + "protectionlevel|"
         + "revision(timestamp|user)|"
         + "msg(nw)?";   // 2014-12-19



WSTM.lang.text.trsl  =  {
   // 2019-08-21 PerfektesChaos@de.wikipedia
   "BadRegExp":             {"en": "Invalid RegExp",
                             "de": "Syntaxfehler in RegExp"},
   "BadRegExpFlag":         {"en": "Invalid RegExp flag",
                             "de": "Fehlerhafter RegExp flag"},
   "ExceptionListHas":      {"en": "exception list has",
                             "de": "Ausschluss-Liste hat"},
   "HasMoreThan4Elements":  {"en": "Has More Than 4 Elements",
                             "de": "hat mehr als 4 Elemente"},
   "Invalid":               {"en": "invalid",
                             "de": "unzulässig"},
   "IsNotAnArray":          {"en": "is not an array",
                             "de": "ist kein Array"},
   "IsNotAString":          {"en": "is not a string",
                             "de": "ist kein String"},
   "IsNotStringOrFunction": {"en": "is neither string nor function",
                             "de": "ist weder String noch Function"},
   "Not":                   {"en": "not",
                             "de": "nicht"},
   "ReplacementIn":         {"en": "replacement in",
                             "de": "Ersetzung in"},
   "anchorRepeated":        {"en": "Anchor id= repeated",
                             "de": "Anker id= wiederholt"},
   "badCode":               {"en": "Bad code",
                             "de": "Fehlerhafter Code"},
   "badCodeChar":           {"en": "Bad code: invalid character",
                             "de": "Zeichen unerlaubt in Code"},
   "badCodeCheckdig":       {"en": "Bad code: checkdigit is illegal",
                             "de": "Fehlerhafter Code (Prüfziffer)"},
   "badCodeDigitcount":     {"en": "Bad Code: bad number of digits",
                             "de": "Code falsch (Anzahl der Ziffern)"},
   "badCodeX":              {"en": "Bad code 'X'",
                             "de": "Fehlerhafter Code 'X'"},
   "badISBN13bookland":     {"en": "Bad ISBN-13: bookland (EAN)",
                             "de": "ISBN-13 falsch (Bookland EAN)"},
   "badISBNcheckdigChar":   {"en": "Bad ISBN: checkdigit is illegal",
                             "de": "ISBN falsch (Prüfziffer illegal)"},
   "badISBNcheckdigEmpty":  {"en": "Bad ISBN: checkdigit is empty",
                             "de": "ISBN falsch (Prüfziffer leer)"},
   "badISBNcheckdigLength": {"en": "Bad ISBN: checkdigit of bad length",
                             "de": "ISBN falsch (Prüfzifferlänge)"},
   "badISBNcheckdigWrong":  {"en": "Bad ISBN: wrong checkdigit",
                             "de": "ISBN falsch (falsche Prüfziffer)"},
   "badISBNcountingDigits": {"en": "Bad ISBN: bad number of digits",
                             "de": "ISBN falsch (Anzahl der Ziffern)"},
   "badISBNdigitAfterX":    {"en": "Bad ISBN: digit after 'X'",
                             "de": "ISBN falsch (Ziffer nach 'X')"},
   "badISBNhyphenAfterEnd": {"en": "Bad ISBN: hyphen after last digit",
                             "de": "ISBN: '-' nach letzter Ziffer"},
   "badISBNmultipleX":      {"en": "Bad ISBN: multiple 'X'",
                             "de": "ISBN falsch (mehrfaches 'X')"},
   "badISBNtooManyDigits1": {"en": "Bad ISBN: too many digits [a]",
                             "de": "ISBN falsch (zu viele Ziffern [a])"},
   "badISBNtooManyDigits2": {"en": "Bad ISBN: too many digits [b]",
                             "de": "ISBN falsch (zu viele Ziffern [b])"},
   "badISBNXbadPosition":   {"en": "Bad ISBN: 'X' at bad position",
                             "de": "ISBN falsch (Position von 'X')"},
   "badISSNcheckdig":       {"en": "Bad ISSN: wrong checkdigit",
                             "de": "ISSN falsch (falsche Prüfziffer)"},
   "badISSNstrange":        {"en": "Strange ISSN",
                             "de": "ISSN seltsam"},
   "badPageName":           {"en": "Page name invalid",
                             "de": "Seitenname ungültig"},
   "badURI":                {"en": "URI is probably invalid",
                             "de": "URI"},
   "cssColourHash":         {"en": "Invalid colour code",
                             "de": "Unzulässiger Farbcode"},
   "cssHTMLsymbol":         {"en": "HTML attribute, not CSS property",
                             "de": "HTML-Attribut, keine CSS-Property"},
   "cssIDmissing":          {"en": "CSS property name missing",
                             "de": "CSS Property-Name fehlt"},
   "cssIDinvalid":          {"en": "CSS property name invalid",
                             "de": "CSS Property-Name ungültig"},
   "cssPropertyRepeated":   {"en": "CSS property name repeated",
                             "de": "CSS Property-Name wiederholt"},
   "cssValueInvalid":       {"en": "CSS declaration value invalid",
                             "de": "CSS Zuweisung ungültig"},
   "cssValueMissing":       {"en": "CSS declaration value missing",
                             "de": "CSS Zuweisung fehlt"},
   "cssValueURL":           {"en": "CSS with url() not permitted",
                             "de": "CSS mit url() nicht erlaubt"},
   "defaultsortEmpty":      {"en": "DEFAULTSORT: sort key is empty",
                             "de": "SORTIERUNG Schlüssel ist leer"},
   "defaultsortLineBreak":  {"en": "DEFAULTSORT: line break in sort key",
                             "de": "SORTIERUNG: Zeilenumbruch verboten"},
   "defaultsortRepeated":   {"en": "DEFAULTSORT: repeated definition",
                             "de": "SORTIERUNG: Definition wiederholt"},
   "defaultsortSuperfluous":{"en": "DEFAULTSORT: sort key same as title",
                             "de": "SORTIERUNG: Definition überflüssig"},
   "defaultsortValue":      {"en": "DEFAULTSORT: invalid sort key",
                             "de": "SORTIERUNG: Schlüssel ungültig"},
   "displaytitleDubios":    {"en": "DISPLAYTITLE: title suspicious",
                             "de": "SEITENTITEL: Titel verdächtig"},
   "displaytitleEmpty":     {"en": "DISPLAYTITLE: title is empty",
                             "de": "SEITENTITEL: Titel nicht angegeben"},
   "displaytitleRepeated":  {"en": "DISPLAYTITLE: repeated definition",
                             "de": "SEITENTITEL: Definition wiederholt"},
   "duplicatedCategory":    {"en": "Category duplication",
                             "de": "Kategorie-Wiederholung"},
   "duplicatedInterLang":   {"en": "interlanguage link duplication",
                             "de": "Wiederholung von InterLang-Link"},
   "fileInvalid":           {"en": "Media file title invalid",
                             "de": "Dateititel unzulässig"},
   "fileTypeUnkown":        {"en": "Media format unkown",
                             "de": "Dateiformat unbekannt"},
   "headline1":             {"en": "Headline top level in page",
                             "de": "Oberste Überschriften-Ebene"},
   "headlineEnd":           {"en": "Headline end not expected",
                             "de": "Überschrift-Ende unerwartet"},
   "headlineUnequal":       {"en": "Headline '=' unbalanced",
                             "de": "Überschrift mit ungleichen '='"},
   "imgParContradiction":   {"en": "Image parameter contradiction",
                             "de": "Widerspruch von Bildparametern"},
   "imgParInvalidValue":    {"en": "Image parameter value invalid",
                             "de": "Bildparameterwert fehlerhaft"},
   "imgParLangNoSVG":       {"en": "Image parameter lang= not on SVG",
                             "de": "Bildparameter lang= nur für SVG"},
   "imgParMissingValue":    {"en": "Image parameter value missing",
                             "de": "Bildparameterwert fehlt"},
   "imgParUnrecognized":    {"en": "Image parameter unrecognized",
                             "de": "Bildparameter nicht erkennbar"},
   "imgParValueConflict":   {"en": "Image parameter value conflict",
                             "de": "Konflikt von Bildparameterwerten"},
   "interlanguageTitled":   {"en": "Removed title from interlang link",
                             "de": "Titel von InterLang-Link entfernt"},
   "linkTargetMissing":     {"en": "Link target is missing",
                             "de": "Linkziel fehlt"},
   "meaninglessLinkTarget": {"en": "Meaningless link target '[|]]'",
                             "de": "Sinnlose Verlinkung '[|]]'"},
   "modCommentRequired":    {"en": "Comment enclosure required",
                             "de": "Kommentarformat benötigt"},
   "modArrayRequired":      {"en": "Array required",
                             "de": "Array benötigt"},
   "modStringRequired":     {"en": "String required",
                             "de": "String benötigt"},
   "multiplePipeSymbols":   {"en": "Multiple pipe symbols '|'",
                             "de": "Mehrfache Pipe-Symbole '|'"},
   "referencesRepeated":    {"en": "Repeated &lt;references />",
                             "de": "Wiederholtes &lt;references />"},
   "secondClosingBracket":  {"en": "Second closing bracket appended",
                             "de": "Zweite schließende Klammer gesetzt"},
   "tableAttrInvalid":      {"en": "Bad attribute format within table",
                             "de": "Falsches Attribut-Format (Tabelle)"},
   "tableAttrRepeated":     {"en": "Repeated attribute within table",
                             "de": "Wiederholtes Attribut in Tabelle"},
   "tableAttrValueEmpty":   {"en": "Attribute value empty within table",
                             "de": "Leerer Attributwert bei Tabelle"},
   "tagAttrInvalid":        {"en": "Bad attribute format within tag",
                             "de": "Falsches Attribut-Format im Tag"},
   "tagAttrMissing":        {"en": "Tag requires attribute",
                             "de": "Tag ohne notwendiges Attribut"},
   "tagAttrQuote":          {"en": "Tag with \" and ' in attribute",
                             "de": "Tag mit \" und ' im Attribut"},
   "tagAttrRepeated":       {"en": "Tag with repeated attribute",
                             "de": "Tag mit wiederholtem Attribut"},
   "tagAttrUnexpected":     {"en": "Tag expects no attribute",
                             "de": "Tag mit unerwartetem Attribut"},
   "tagAttrUnknown":        {"en": "Tag attribute not permitted",
                             "de": "Tag mit unbekanntem Attribut"},
   "tagAttrValue":          {"en": "Tag attribute not recognized",
                             "de": "Tag mit unerwartetem Attributwert"},
   "tagAttrValueEmpty":     {"en": "Tag attribute value empty",
                             "de": "Tag mit leerem Attributwert"},
   "tagCommentBegin":       {"en": "Strange begin of comment",
                             "de": "Kommentarbeginn fehlformatiert"},
   "tagCommentNoEnd":       {"en": "Missing comment end",
                             "de": "Ende des Kommentars fehlt"},
   "tagEmptyUndesired":     {"en": "Content expected for this element",
                             "de": "Inhalt erwartet für Element"},
   "tagEndHeading":         {"en": "Tag sequence begins with end tag",
                             "de": "End-Tag steht am Anfang"},
   "tagEndMissing":         {"en": "End tag missing",
                             "de": "End-Tag fehlt"},
   "tagEndMissingFinal":    {"en": "End tag missing at text end",
                             "de": "End-Tag fehlt zum Ende des Textes"},
   "tagEndAttr":            {"en": "End tag with attributes",
                             "de": "End-Tag mit Attributen"},
   "tagForbidden":          {"en": "HTML tag not permitted",
                             "de": "Unerlaubtes HTML-Tag"},
   "tagFormBroken":         {"en": "Empty line within tag",
                             "de": "Leerzeile in einem Tag"},
   "tagFormNoEnd":          {"en": "Missing '&gt;' as tag end",
                             "de": "Fehlendes '&gt;' als Ende des Tag"},
   "tagFormReOpen":         {"en": "End of tag missing, found '&lt;'",
                             "de": "Ende des Tag fehlt / '&lt;'"},
   "tagNesting":            {"en": "Tag nesting wrong",
                             "de": "Tag unerlaubt verschachtelt"},
   "tagNestingSelf":        {"en": "Tag self-nested",
                             "de": "Tag selbst-verschachtelt"},
   "tagUnaryIllegal":       {"en": "Unary tag not permitted",
                             "de": "Element muss Inhalt umfassen"},
   "tagUnaryNoAttr":        {"en": "Unary tag requires attribute",
                             "de": "Element braucht Attribut"},
   "templateParDubious":    {"en": "Template parameter dubious",
                             "de": "Vorlagenparameter zweifelhaft"},
   "templateParDup":        {"en": "Template parameter repeated",
                             "de": "Vorlagenparameter wiederholt"},
   "templateParInvalid":    {"en": "Template parameter invalid",
                             "de": "Vorlagenparameter fehlerhaft"},
   "templateParMissing":    {"en": "Template parameter missing",
                             "de": "Vorlagenparameter fehlt"},
   "templateParStart":      {"en": "Template parameter unterminated",
                             "de": "Vorlagenparameter unbeendet"},
   "templateParStart=":     {"en": "Template parameter starts with '='",
                             "de": "Vorlagenparameter beginnt mit '='"},
   "templateSister":        {"en": "Sister project template invalid",
                             "de": "Schwesterprojekt-Vorlage defekt"},
   "templateRepeated":      {"en": "Recurrence not permitted",
                             "de": "Unerlaubte Wiederholung"},
   "templateStart":         {"en": "Template unterminated",
                             "de": "Vorlage unbeendet"},
   "tooManyLeftBrackets":   {"en": "Too many opening brackets",
                             "de": "Zu viele linke Klammern"},
   "tooManyRightBrackets":  {"en": "Too many closing brackets",
                             "de": "Zu viele rechte Klammern"},
   "tooManySlashes":        {"en": "Too many slashes",
                             "de": "Zu viele Schrägstriche"},
   "weblinkApostrophs":     {"en": "Suspicious '' apostrophs in URL",
                             "de": "Verdächtige Apostrophe '' in URL"},
   "weblinkBracketRight":   {"en": "Closing ']' missing",
                             "de": "Schließende ']' fehlt"},
   "weblinkBrackets":       {"en": "URL containing square brackets",
                             "de": "Weblink mit eckigen Klammern"},
   "weblinkDomain":         {"en": "Bad domain",
                             "de": "Ungültige Domain"},
   "weblinkPipe":           {"en": "Suspicious '|' in URL",
                             "de": "Verdächtiges '|' in URL"},
   "weblinkPunctuation":    {"en": "Suspicious punctuation (end of URL)",
                             "de": "Satzzeichen am URL-Ende verdächtig"},
   "weblinkScheme":         {"en": "Strange URL protocol",
                             "de": "Unbekanntes Protokoll in URL"},
   "weblinkSpecial":        {"en": "Suspicious character within URL",
                             "de": "Sonderzeichen in URL verdächtig"},
   "weblinkStrange":        {"en": "Strange URL path '?'",
                             "de": "Verdächtiger Pfad '?' in URL"},
   "weblinkURLlength":      {"en": "URL too long",
                             "de": "URL zu lang"},
   "weblinkWikilink":       {"en": "URL as wikilink",
                             "de": "URL als Wikilink"},
   "wikilinkAborted":       {"en": "Wikilink aborted, '|' missing",
                             "de": "Wikilink abgebrochen, '|' fehlt"},
   "wikilinkBracketsAhead": {"en": "Wikilink '[[' strange",
                             "de": "Wikilink-'[[' seltsam"},
   "wikilinkInterLangDeep": {"en": "Interlanguage link not on top level",
                             "de": "InterLang nicht auf oberster Ebene"},
   "wikilinkSelf":          {"en": "Wikilink on page itself",
                             "de": "Wikilink auf sich selbst"},
   "wikilinkURL":           {"en": "URL may be turned into wikilink",
                             "de": "URL als Wikilink darstellbar"},
   "UserWarnPlain":         {"en": "User defined warning (plain)",
                             "de": "Benutzerdefinierte Warnung (Text)"},
   "UserWarnURL":           {"en": "User defined warning (URL)",
                             "de": "Benutzerdefinierte Warnung (URL)"},
   "UserWarnWikilink":      {"en": "User defined warning (wikilink)",
                             "de": "Benutzerdefinierte Warnung (Link)"},
   "_ErrorBegin1":          {"en": "A severe error"
                                    + " was detected in wikitext.",
                             "de": "Im Text wurde"
                                    + " ein schwerer Fehler gefunden."},
   "_ErrorBeginN":          {"en": "Severe errors"
                                    + " were detected in wikitext.",
                            "de": "Im Text wurden"
                                    + " schwere Fehler gefunden."},
   "_ErrorBeginAuto1":      {"en": "Please check the following"
                                    + " automatic attempt:",
                             "de": "Bitte überprüfe den folgenden"
                                    + " automatischen"
                                    + " Behebungsversuch."},
   "_ErrorBeginAutoN":      {"en": "Please check the following"
                                    + " automatic attempts:",
                             "de": "Bitte überprüfe die folgenden"
                                    + " automatischen"
                                    + " Behebungsversuche."},
   "_ErrorBeginMan1":       {"en": "Automatic repairing"
                                    + " might be impossible."
                                    + " Please resolve"
                                    + " the following issue manually:",
                             "de": "Nicht alles lässt sich "
                                    + " automatisch beheben."
                                    + " Bitte"
                                    + " kläre das folgende Problem"
                                    + " von Hand:"},
   "_ErrorBeginManN":       {"en": "Automatic repairing"
                                    + " might be impossible."
                                    + " Please resolve"
                                    + " the following issues manually:",
                             "de": "Nicht alles lässt sich "
                                    + " automatisch beheben."
                                    + " Bitte"
                                    + " kläre die folgenden Probleme"
                                    + " von Hand:"},
   "_ErrorEpilog":          {"en": "The corresponding comment has been"
                                    + " removed from this diffpage"
                                    + " automatically.",
                             "de": "Der entsprechende"
                                    + " auf dieser DiffPage sichtbare"
                                    + " Kommentar wurde bereits"
                                    + " automatisch entfernt."},
   "_ErrorLimitMore":       {"en": "More problems detected.",
                             "de": "Weitere Probleme festgestellt."},
   "_PrefsDescription":     {"en": "&#8211; Syntax polishing"
                                   + " and correction;"
                                   + " user defined modifications",
                             "de": "&#8211; Syntaxpolitur"
                                   + " und -korrektur;"
                                   + " benutzerdefinierte Ersetzungen"},
   "_Prefs.diffPage":       {"en": "Suppress control page"
                                   + " of syntax polishig",
                             "de": "Kontrollseite der Syntaxpolitur"
                                   + " unterdrücken"},
   "_Prefs.portlet":        {"en": "Link on portal tool bar",
                             "de": "Link auf der Portalseite"},
   "_WarnUserDefined":      {"en": "User defined warnings triggered:",
                             "de": "Warnung durch Benutzer ausgelöst:"},
   "TextRepository_TEST":   {"en": "en:TextRepository_TEST",
                             "de": "de:TextRepository_TEST"}
};   // .lang.text.trsl



// translatewiki:MediaWiki:Sp-translate-data-MagicWords/**
   WSTM.lang.translate.d  =  {
      // 2021-12-02 PerfektesChaos@de.wikipedia
      "$alt":        // img_alt
         {"de":      [ false,
                       "alternativtext" ],
          "el":      "εναλλ.",
          "en":      [ false ],
          "fr":      [ false ],
          "ja":      [ false,
                       [20195,26367,25991] ],
          "ru":      "альт",
          "sr":      "алт",
          "zh":      [ false,
                       [26367,20195,25991,26412] ]
         },
      "$baseline":   // img_baseline
         {"de":      "grundlinie",
          "el":      "γραμμήβάσης",
          "en":      [ false ],
          "fr":      [ false,
                       "ligne_de_base",
                       "base" ],
          "ja":      [ false,
                       [19979,32218],
                       [12505,12540,12473,12521,12452,12531] ],
          "kk":      [ [1090,1110,1088,1077,1082,1078,1086,1083] ],
          "nl":      [ false,
                       "grondlijn" ],
          "no":      "grunnlinje",
          "pt":      [ false,
                       "linhadebase" ],
          "ru":      "основание",
          "sr":      "основа",
          "sv":      "baslinje"
         },
      "booksources":
         {"dewiki":  "ISBN-Suche",
          "enwiki":  "BookSources",
          "frwiki":  "Ouvrages de référence"
         },
      "$border":     // img_border
         {"de":      "rand",
          "el":      "πλαίσιο",
          "en":      [ false ],
          "es":      "borde",
          "fr":      [ false,
                       "bordure" ],
          "it":      [ false,
                       "bordo" ],
          "ja":      [ false,
                       [22659,30028],
                       [12508,12540,12480,12540] ],
          "kk":      [ [1078,1080,1077,1082,1090,1110] ],
          "nl":      [ false,
                       "rand" ],
          "no":      [ false ],
          "pl":      [ false,
                       "tło" ],
          "pt":      [ false,
                       "borda" ],
          "ru":      "граница",
          "sr":      "ивица",
          "sv":      "kantlinje"
         },
      "$bottom":     // img_bottom
         {"de":      "unten",
          "el":      "κάτω",
          "en":      [ false ],
          "fr":      [ false,
                       "bas" ],
          "ja":      [ false,
                       [19979,31471] ],
          "kk":      [ [1072,1089,1090,1099,1085,1072] ],
          "nl":      [ false,
                       "beneden" ],
          "no":      "bunn",
          "pl":      [ false,
                       "dół" ],
          "pt":      [ false,
                       "abaixo" ],
          "ru":      "снизу",
          "sr":      "дно",
          "sv":      "botten"
         },
      "Category:":   // (14)
         {"af":      "Kategorie",
          "als":     "Kategorie",
          "ar":      [ [1578,1589,1606,1610,1601] ],
          "az":      "Kateqoriya",
          "bg":      "Категория",
          "ca":      "Categoria",
          "cs":      "Kategorie",
          "da":      "Kategori",
          "de":      "Kategorie",
          "dsb":     "Kategorija",
          "el":      "Κατηγορία",
          "eo":      "Kategorio",
          "es":      "Categoría",
          "et":      "Kategooria",
          "eu":      "Kategoria",
          "fa":      [ [1585,1583,1607] ],
          "fi":      "Luokka",
          "fr":      "Catégorie",
          "fy":      "Kategory",
          "gl":      "Categoría",
          "he":      [ [1511,1496,1490,1493,1512,1497,1492] ],
          "hi":      [ [2358,2381,2352,2375,2339,2368],
                       [2358,2381,2352] ],
          "hr":      "Kategorija",
          "hsb":     "Kategorija",
          "hu":      "Kategória",
          "id":      "Kategori",
          "it":      "Categoria",
          "ja":      [ false,
                       [12459,12486,12468,12522] ],// 30AB,30C6,30B4,30EA
          "ka":      [ [4313,4304,4322,4308,4306,4317,4320,4312,4304] ],
          "kk":      [ "Санат",
                       "Sanat",
                       [1587,1575,1606,1575,1578] ],
          "ko":      [ [48516,47448] ],   // BD84,E958
          "ksh":     [ "Saachjrupp",
                       "Katejori",
                       "Kattejori",
                       "Saachjropp",
                       "Sachjrop" ],
          "la":      "Categoria",
          "lb":      "Kategorie",
          "li":      "Categorie",
          "lt":      "Kategorija",
          "mk":      "Категорија",
          "ms":      "Kategori",
          "nds":     "Kategorie",
          "new":     [ [2346,2369,2330,2307] ],
          "nl":      "Categorie",
          "nn":      "Kategori",
          "no":      "Kategori",
          "oc":      "Categoria",
          "pl":      "Kategoria",
          "pt":      "Categoria",
          "ro":      "Categorie",
          "ru":      "Категория",
          "sh":      "Kategorija",
          "sk":      "Kategória",
          "sl":      "Kategorija",
          "sr":      [ "Категорија", "Kategorija" ],
          "stq":     "Kategorie",
          "sv":      "Kategori",
          "th":      [ [3627,3617,3623,3604,3627,3617,3641,3656] ],
          "tr":      "Kategori",
          "uk":      "Категорія",
          "vi":      "Thể loại",   //   [ _]
          "vo":      "Klad",
          "war":     "Kaarangay",
          "zh":      [ false,
                       [20998,31867],
                       [20998,39006] ]
         },   // Category
      "$center":     // img_center
         {"de":      "zentriert",
          "el":      "κέντρο",
          "en":      [ false,
                       "centre" ],
          "es":      [ "centro",
                       "centrado",
                       "centrada",
                       "centrar" ],
          "fr":      [ false,
                       "centré" ],
          "it":      [ false,
                       "centro" ],
          "ja":      [ false,
                       [20013,22830] ],
          "kk":      [ [1086,1088,1090,1072,1171,1072],
                       [1086,1088,1090,1072] ],
          "nl":      [ false,
                       "gecentreerd" ],
          "nn":      "sentrum",
          "no":      [ "sentrer",
                       "senter",
                       "midtstilt" ],
          "pl":      [ false,
                       "centruj" ],
          "pt":      [ false,
                       "centro" ],
          "ru":      "центр",
          "sr":      [ "центар",
                       "ц" ],
          "sv":      "centrerad",
          "vi":      [ false,
                       "giữa" ],
          "zh":      [ false,
                       [23621,20013] ]
         },
      "DEFAULTSORT": // KEY_
         {
          "da":      [ false ],
          "de":      "SORTIERUNG",
          "dewiki":  "SORTIERUNG",
          "el":      [ "ΠΡΟΚΑΘΟΡΙΣΜΕΝΗΤΑΞΙΝΟΜΗΣΗ",
                       "ΚΛΕΙΔΙΠΡΟΚΑΘΟΡΙΣΜΕΝΗΣΤΑΞΙΝΟΜΗΣΗΣ",
                       "ΠΡΟΚΑΘΟΡΙΣΜΕΝΗΤΑΞΙΝΟΜΗΣΗΚΑΤΗΓΟΡΙΑΣ",
                       "ΠΡΟΚΤΑΞ" ],
          "es":      [ "ORDENAR",
                       "CLAVEDEORDENPREDETERMINADO",
                       "ORDENDECATEGORIAPREDETERMINADO",
                       "ORDENDECATEGORÍAPREDETERMINADO" ],
          "fr":      [ "CLEFDETRI",
                       "CLEDETRI" ],
          "hu":      [ "RENDEZÉS",
                       "KULCS" ],
          "it":      [ false ],
          "ja":      [ false,
                       [12487,12501,12457,12523,12488,12477,12540,12488],
                       [12487,12501,12457,12523,12488,12477,12540,12488,
                        12461,12540],
                       [12487,12501,12457,12523,12488,12459,12486,12468,
                        12522,12477,12540,12488] ],
          "nl":      "STANDAARDSORTERING",
          "no":      "STANDARDSORTERING",
          "pl":      "DOMYŚLNIESORTUJ",
          "pt":      [ "ORDENACAOPADRAO",
                       "ORDENAÇÃOPADRÃO",
                       "ORDEMPADRAO",
                       "ORDEMPADRÃO" ],
          "ru":      [ "СОРТИРОВКА_ПО_УМОЛЧАНИЮ",
                       "КЛЮЧ_СОРТИРОВКИ" ],
          "svwiki":  "STANDARDSORTERING",
          "tr":      [ "VARSAYILANSIRALA",
                       "VARSAYILANSIRALAMAANAHTARI",
                       "VARSAYILANKATEGORİSIRALA" ],
          "uk":      [ "СТАНДАРТНЕ_СОРТУВАННЯ",
                       "СОРТУВАННЯ",
                       "СОРТИРОВКА_ПО_УМОЛЧАНИЮ",
                       "КЛЮЧ_СОРТИРОВКИ" ],
          "vi":      "XẾPMẶCĐỊNH",
          "zh":      [ false,
                       [40664,35748,25490,24207],
                       [40664,35748,25490,24207,20851,38190,23383],
                       [40664,35748,20998,31867,25490,24207] ]
         },
      "DISPLAYTITLE":// KEY_
         {"dewiki":  "SEITENTITEL",
          "el":      "ΔΕΙΞΕΤΙΤΛΟ",
          "es":      [ "MOSTRARTÍTULO",
                       "MOSTRARTITULO" ],
          "fr":      "AFFICHERTITRE",
          "hu":     [ "MEGJELENÍTENDŐCÍM",
                      "CÍM" ],
          "it":      [ false ],
          "ja":      [ false,
                       [34920,31034,12479,12452,12488,12523] ],
          "nl":      [ "WEERGEGEVENTITEL",
                       "TOONTITEL" ],
          "nn":      "VISTITTEL",
          "no":      "VISTITTEL",
          "pl":      "WYŚWIETLANYTYTUŁ",
          "pt":      [ "EXIBETITULO",
                       "EXIBETITULO" ],
          "ru":      "ПОКАЗАТЬ_ЗАГОЛОВОК",
          "sv":      "VISATITEL",
          "tr":      "BAŞLIKGÖSTER",
          "uk":      [ "ПОКАЗАТИ_ЗАГОЛОВОК",
                       "ПОКАЗАТЬ_ЗАГОЛОВОК" ],
          "vi":      "TÊNHIỂNTHỊ",
          "zh":      [ false,
                       [26174,31034,26631,39064] ]
         },
      "File:":       // (6)
         {"af":      "Lêer",
          "als":     "Datei",
          "ar":      [ [1605,1604,1601] ],
          "az":      "Şəkil",
          "bg":      "Файл",
          "ca":      "Fitxer",
          "cs":      "Soubor",
          "da":      "Fil",
          "de":      "Datei",
          "dsb":     "Dataja",
          "el":      "Αρχείο",
          "en":      [ false ],
          "eo":      "Dosiero",
          "es":      "Archivo",
          "et":      "Pilt",
          "eu":      "Fitxategi",
          "fa":      [ [1662,1585,1608,1606,1583,1607] ],
          "fi":      "Tiedosto",
          "fr":      "Fichier",
          "fy":      "Ofbyld",
          "gl":      "Ficheiro",
          "he":      [ [1511,1493,1489,1509] ],
          "hi":      [ [2330,2367,2340,2381,2352] ],
          "hr":      "Datoteka",
          "hsb":     "Dataja",
          "hu":      "Fájl",
          "id":      "Berkas",
          "it":      [ false ],
          "ja":      [ [12501,12449,12452,12523] ],
                     // 30D5,30A1,30A4,30EB
          "ka":      [ [4324,4304,4312,4314,4312] ],
          "kk":      [ "Сурет",
                       "Swret",
                       [1587,1739,1585,1749,1578] ],
          "ko":      [ [54028,51068] ],   // D30C,C77C
          "ksh":     "Datei",
          "la":      "Fasciculus",
          "lb":      "Fichier",
          "li":      "Plaetje",
          "lt":      "Vaizdas",
          "mk":      "Податотека",
          "ms":      "Fail",
          "nds":     "Bild",   //   + "Datei"
          "new":     [ [2325,2367,2346,2366] ],
          "nl":      "Bestand",
          "nn":      "Fil",
          "no":      "Fil",
          "oc":      "Fichièr",
          "pl":      "Plik",
          "pt":      "Ficheiro",
          "ro":      "Fi"+String.fromCharCode(537)+"ier",
          "ru":      "Файл",
          "sh":      "Datoteka",
          "sk":      "Súbor",
          "sl":      "Slika",
          "sr":      "Датотека",
          "stq":     "Bielde",
          "sv":      "Fil",
          "sw":      "Picha",
          "th":      [ [3652,3615,3621,3660] ],
          "tr":      "Dosya",
          "uk":      "Файл",
          "vi":      "Tập tin",   //   [ _]
          "vo":      "Ragiv",
          "war":     "Paypay",
          "zh":      [ false,
                       [22270,20687],
                       [22294,20687],
                       [25991,20214],
                       [26723,26696],
                       [27284,26696] ]
         },   // File
      "$framed":     // img_framed
         {"de":      "gerahmt",
          "el":      "με-πλαίσιο",
          "en":      [ false,
                       "frame",
                       "enframed" ],
          "es":      [ "marco",
                       "enmarcado",
                       "enmarcada" ],
          "fr":      [ false,
                       "cadre",
                       "encadré",
                       "encadre" ],
          "ja":      [ false,
                       [12501,12524,12540,12512] ],
          "kk":      [ [1089,1199,1088,1084,1077,1083,1110] ],
          "nl":      [ false,
                       "omkaderd" ],
          "nn":      [ "ramme",
                       "ramma" ],
          "no":      "ramme",
          "pl":      [ false,
                       "ramka" ],
          "pt":      [ "commoldura",
                       "comborda" ],
          "ru":      "обрамить",
          "sr":      [ "оквир",
                       "рам" ],
          "sv":      "inramad",
          "vi":      [ false,
                       "khung" ]
         },
      "$frameless":  // img_frameless
         {"de":      "rahmenlos",
          "el":      "χωρίς-πλαίσιο",
          "en":      [ false ],
          "es":      [ "sinmarco",
                       "sin_enmarcar",
                       "sinenmarcar" ],
          "fr":      [ false,
                       "sans_cadre",
                       "non_encadré",
                       "non_encadre" ],
          "ja":      [ false,
                       [12501,12524,12540,12512,12394,12375] ],
          "kk":      [ [1089,1199,1088,1084,1077,1089,1110,1079] ],
          "nl":      [ false,
                       "kaderloos" ],
          "nn":      "rammelaus",
          "no":      [ "rammeløs",
                       "ingenramme" ],
          "pl":      [ false,
                       "bezramki",
                       "bez_ramki" ],
          "pt":      [ "semmoldura",
                       "semborda" ],
          "ru":      "безрамки",
          "sr":      [ "безоквира",
                       "без_оквира",
                       "безрама",
                       "без_рама" ],
          "sv":      "ramlös"
         },
      "Image:":
         {"af":      "Beeld",
          "ar":      [ [1589,1608,1585,1577] ],
          "als":     "Bild",
          "bg":      "картинка",
          "ca":      "Imatge",
          "da":      "Billede",
          "de":      "Bild",
          "dsb":     "Wobraz",
          "el":      "Εικόνα",
          "en":      "Image",
          "es":      "Imagen",
          "eu":      "Irudi",
          "fa":      [ [1578,1589,1608,1740,1585] ],
          "fi":      "Kuva",
          "fr":      "Image",
          "gl":      "Imaxe",
          "hu":      "Kép",
          "id":      "Gambar",
          "it":      "Immagine",
          "he":      [ [1514,1502,1493,1504,1492] ],
          "ja":      [ [30011,20687] ],   // 753B,50CF
          "ka":      [ [4321,4323,4320,4304,4311,4312] ],
          "ksh":     [ "Beld",
                       "Belld" ],
          "la":      "Imago",
          "lb":      "Bild",
          "li":      "Aafbeilding",
          "mk":      "Слика",
          "ms":      "Imej",
          "nl":      "Afbeelding",
          "no":      "Bilde",
          "oc":      "Imatge",
          "pt":      "Arquivo",
          "ru":      "Изображение",
          "sk":      "Obrázok",
          "sr":      [ "Слика", "Slika" ],
          "stq":     "Bild",
          "sv":      "Bild",
          "th":      [ [3616,3634,3614] ],
          "tr":      "Resim",
          "uk":      "Зображення",
          "vi":      "Hình",
          "vo":      "Magod",
          "war":     "Fayl"
         },   // Image
      "$class":// img_class
         {"de":      [ "klasse",
                       "class" ],
          "en":      [ false ]
         },
      "$left":       // img_left
         {"de":      "links",
          "el":      "αριστερά",
          "en":      [ false ],
          "es":      [ "izquierda",
                       "izda",
                       "izq" ],
          "fr":      [ false,
                       "gauche" ],
          "it":      [ false,
                       "sinistra" ],
          "ja":      [ false,
                       [24038] ],
          "nl":      [ false,
                       "links" ],
          "nn":      "venstre",
          "no":      "venstre",
          "pl":      [ false,
                       "lewo" ],
          "pt":      [ false,
                       "esquerda" ],
          "ru":      "слева",
          "sr":      [ "лево",
                       "л" ],
          "sv":      "vänster",
          "vi":      [ false,
                       "trái" ],
          "zh":      [ false,
                       [24038] ]
         },
      "$link":       // img_link
         {"de":      "verweis",
          "el":      "σύνδεσμος=$1",
          "en":      [ false ],
          "es":      [ "enlace",
                       "vínculo",
                       "vinculo" ],
          "fr":      [ false,
                       "lien" ],
          "ja":      [ false,
                       [12522,12531,12463] ],
          "kk":      [ [1089,1086,1083,1171,1072],
                       [1089,1086,1083] ],
          "nl":      [ false,
                       "verwijzing" ],
          "nn":      [ "lenkje",
                       "lenkja" ],
          "no":      "lenke",
          "pl":      [ false ],
          "pt":      [ false,
                       "ligação" ],
          "ru":      "ссылка",
          "sr":      "веза",
          "sv":      "länk",
          "vi":      [ false,
                       "liên_kết" ],
          "zh":      [ false,
                       [38142,25509] ]
         },
      "$lossy":       // img_lossy
         {            // lossy=$1
          "iu":      [ false ],
          "no":      [ false ],
          "sv":      [ false ]
         },
      "$manualthumb":// img_manualthumb
         {"de":      [ "miniatur",
                       "mini" ],
          "en":      [ false ],
          "es":      [ false,
                       "miniaturadeimagen",
                       "miniatura" ],
          "it":      [ false,
                       "miniatura",
                       "min" ],
          "ja":      [ "thumb",
                       [12469,12512,12493,12452,12523] ],
          "nl":      [ false,
                       "miniatuur" ],
          "nn":      [ "mini",
                       "miniatyr" ],
          "no":      [ "mini",
                       "miniatyr" ],
          "pl":      [ false,
                       "mały" ],
          "pt":      [ false,
                       "miniaturadaimagem",
                       "miniatura" ],
          "ru":      [ "мини",
                       "миниатюра" ]
         },
      "Media:":      // (-2)
         {"als":     "Medium",
          "ar":      [ [1605,1610,1583,1610,1575],
                       [1608,1587,1575,1574,1591] ],
          "bg":      "Медия",
          "cs":      "Média",
          "de":      "Medium",
          "dsb":     "Medija",
          "el":      [ "Μέσο",
                       "Μέσον" ],
          "en":      [ false ],
          "eo":      "Aŭdvidaĵo",
          "es":      "Medio",
          "et":      "Meedia",
          "fa":      [ [1605,1583,1740,1575],
                       [1585,1587,1575,1606,1607],
                       [1585,1587,1575,1606,1607,8204,1575,1740] ],
          "fr":      "Média",
          "he":      [ [1502,1491,1497,1492] ],
          "hi":      [ [2350,2368,2337,2367,2351,2366] ],
          "hr":      "Mediji",
          "hu":      "Média",
          "ja":      [ [12513,12487,12451,12450] ],// 30E1,30C7,30A3,30A2
          "ka":      [ [4315,4308,4307,4312,4304] ],
          "kk":      [ "Таспа",
                       "Taspa",
                       [1578,1575,1587,1662,1575] ],
          "ko":      [ [48120,46356,50612] ],   // BBF8,B514,C5B4
          "ksh":     [ "Medie",
                       "Medium",
                       "Meedije",
                       "Meedijum" ],
          "lt":      "Medija",
          "mk":      [ "Медиум",
                       "Медија" ],
          "new":     [ [2350,2366,2343,2381,2351,2350] ],
          "nn":      "Filpeikar",
          "no":      "Medium",
          "oc":      "Mèdia",
          "pt":      "Multimédia",
          "sh":      "Media",
          "sk":      "Médiá",
          "sl":      "Datoteka",
          "sr":      [ "Медиј",
                       "Medija",
                       "Медија" ],
          "ru":      "Медиа",
          "th":      [ [3626,3639,3656,3629] ],
          "tr":      "Medya",
          "uk":      "Медіа",
          "vi":      "Phương tiện",   //   [ _]
          "vo":      "Nünamakanäd",
          "war":     "Medya",
          "zh":      [ false,
                       [23186,20307],
                       [23186,39636] ]
         },   // Media
      "$middle":     // img_middle
         {"de":      "mitte",
          "el":      "μέσο",
          "en":      [ false ],
          "fr":      [ false,
                       "milieu" ],
          "ja":      [ false,
                       [20013,24515] ],
          "kk":      [ [1072,1088,1072,1083,1099,1171,1099,1085,1072] ],
          "nl":      [ false,
                       "midden" ],
          "no":      "midt",
          "pl":      [ false,
                       "środek" ],
          "pt":      [ false,
                       "meio" ],
          "ru":      "посередине",
          "sr":      "средина",
          "sv":      "mitten"
         },
      "$noicon":
         {"en":      [ false ]
         },
      "$none":       // img_none
         {"de":      "ohne",
          "el":      "καθόλου",
          "en":      [ false ],
          "es":      [ false,
                       "ninguna",
                       "nada",
                       "no",
                       "ninguno" ],
          "fr":      [ false,
                       "néant",
                       "neant" ],
          "it":      [ false,
                       "nessuno" ],
          "ja":      [ false,
                       [12394,12375],
                       [28961,12375] ],
          "kk":      [ [1077,1096,1179,1072,1085,1076,1072,1081],
                       [1078,1086,1179] ],
          "nl":      [ false,
                       "geen" ],
          "nn":      "ingen",
          "no":      "ingen",
          "pl":      [ false,
                       "brak" ],
          "pt":      [ false,
                       "nenhum" ],
          "ru":      "без",
          "sr":      [ "без",
                       "н" ],
          "sv":      "ingen",
          "zh":      [ false,
                       [26080] ]
         },
      "$noplayer":
         {"en":      [ false ]
         },
      "Page:":
         {"de":      "Seite",
          "en":      [ false ]
         },
      "$page":       // img_page
         {"de":      "seite",
          "el":      "σελίδα $1",
          "en":      [ false ],
          "es":      [ false,
                       "pagina",
                       "página" ],
          "it":      [ false,
                       "pagina" ],
          "ja":      [ false,
                       [12506,12540,12472] ],
          "kk":      [ [1073,1077,1090] ],
          "nl":      [ false,
                       "pagina" ],
          "nn":      "side",
          "no":      "side",
          "pl":      "strona",
          "pt":      "página",
          "ru":      "страница",
          "sr":      [ "страница",
                       "страна" ],
          "sv":      "sida",
          "vi":      [ false,
                       "trang" ]
         },
      "Project:":    // (4)
         {"arwiki":     [ [1608,1740,1705,1740,8204,1662,1583,1740,1575],
                          [1608,1662] ],
          "azwiki":     "Vikipediya",
          "cawiki":     "Viquipèdia",
          "commonswiki":"Commons",
          "cswiki":     ["Wikipedie", "WP"],
          "dawiki":     "Wikipedia",
          "dewiki":     ["Wikipedia", "WP"],
          "dewikibooks":"Wikibooks",
          "dewikinews": "Wikinews",
          "dewikiquote":["Wikiquote", "WQ"],
          "dewikisource": ["Wikisource", "WS"],
          "dewikiversity": "Wikiversity",
          "dewiktionary": ["Wiktionary", "Wt"],
          "dsbwiki":    "Wikipedija",
          "elwiki":     "Βικιπαίδεια",
          "elwikisource": "Βικιθήκη",
          "en":         [false],
          "enwiki":     ["Wikipedia", "WP"],
          "enwikibooks":["Wikibooks", "WB"],
          "enwikinews": ["Wikinews", "WN"],
          "enwikiquote":"Wikiquote",
          "enwikisource": "Wikisource",
          "enwikiversity": ["Wikiversity", "WV"],
          "enwiktionary": ["Wiktionary", "Wt"],
          "eowiki":     ["Vikipedio", "VP"],
          "eswiki":     "Wikipedia",
          "fawiki":     [ [1608,1740,1705,1740,8204,1662,1583,1740,1575],
                          [1608,1662] ],
          "fiwiki":     ["Wikipedia", "WP"],
          "frwiki":     ["Wikipédia", "Wikipedia", "WP"], // 102:"Projet"
          "fywiki":     "Wikipedy",
          "glwiki":     "Wikipedia",
          "hewiki":     [ [1493,1497,1511,1497,1508,1491,1497,1492] ],
          "hsbwiki":    "Wikipedija",
          "huwiki":     "Wikipédia",
          "itwiki":     ["Wikipedia", "WP"],
          "jawiki":     "Wikipedia",
          "jawikibooks":"Wikibooks",
          "jawikisource": "Wikisource",
          "jawikiversity": [ [12501,12449,12452,12523] ],
          "kawiki":     [ [4309,4312,4313,4312,4318,4308,4307,4312,4304],
                          [4313,4304,4322,4308,4306,4317,4320,4312,4304]
                        ],
          "kowiki":     [ [50948,53412,48177,44284] ],
          "kshwiki":    "Wikipedia",
          "lawiki":     "Vicipaedia",
          "liwiki":     "Wikipedia",
          "mkwiki":     "Википедија",
          "nlwiki":     ["Wikipedia", "WP"],
          "newwiki":    [ [2357,2367,2325,2367,2346,2367,2337,2367,2351,
                           2366] ],
          "nnwiki":     ["Wikipedia", "WP"],
          "nowiki":     "Wikipedia",
          "ocwiki":     ["Wikipèdia"],
          "plwiki":     ["Wikipedia", "WP"],
          "ptwiki":     ["Wikipedia", "Wikipédia", "WP"],
          "roa_rupwiki":"Wikipedia",
          "rowiki":     "Wikipedia",
          "ruwiki":     ["Википедия", "ВП"],
          "shwiki":     "Wikipedia",
          "simplewiki": ["Wikipedia", "WP"],
          "stqwiki":    "Wikipedia",
          "svwiki":     ["Wikipedia", "WP"],
          "thwiki":     [ [3623,3636,3585,3636,3614,3637,3648,3604,3637,
                           3618] ],
          "trwiki":     "Vikipedi",
          "ukwiki":     ["Вікіпедія", "ВП"],
          "viwiki":     "Wikipedia",
          "zhwiki":     ["Wikipedia",
                         "WP",
                         [32173,22522,30334,31185],
                         [32500,22522,30334,31185] ],
          "zhwikisource": "Wikisource"
         },   // Project
      "$px":         // img_width
         {"el":      "εσ",
          "en":      [ false ],
          "ja":      [ false,
                       [12500,12463,12475,12523] ],
          "kk":      [ [1085,1199,1082,1090,1077] ],
          "nn":      [ false,
                       "pk" ],
          "ru":      "пкс",
          "sr":      [ "пискел",
                       "п" ],
          "zh":      [ false,
                       [20687,32032] ]
         },
      "REDIRECT":    // KEY_
         {"de":      "WEITERLEITUNG",
          "dewiki":  "WEITERLEITUNG",
          "el":      "ΑΝΑΚΑΤΕΥΘΥΝΣΗ",
          "es":      [ "REDIRECCIÓN",
                       "REDIRECCION" ],
          "fr":      "REDIRECTION",
          "hu":      "ÁTIRÁNYÍTÁS",
          "it":      [ "RINVIA",
                       "RINVIO",
                       "RIMANDO" ],
          "ja":      [ false,
                       [36578,36865],
                       [12522,12480,12452,12524,12463,12488],
                       [36578,36865],
                       [12522,12480,12452,12524,12463,12488] ],
          "nl":      "DOORVERWIJZING",
          "nn":      "OMDIRIGER",
          "no":      "OMDIRIGERING",
          "pl":      [ "PATRZ",
                       "PRZEKIERUJ",
                       "TAM" ],
          "pt":      "REDIRECIONAMENTO",
          "svwiki":  "OMDIRIGERING",
          "ru":      [ "ПЕРЕНАПРАВЛЕНИЕ",
                       "ПЕРЕНАПР" ],
          "tr":      [ "YÖNLENDİRME",
                       "YÖNLENDİR" ],
          "uk":      [ "ПЕРЕНАПРАВЛЕННЯ",
                       "ПЕРЕНАПР",
                       "перенапр",
                       "перенаправление" ],
          "vi":      "đổi",
          "zh":      [ false,
                       [37325,23450,21521] ]
         },
      "$right":      // img_right
         {"de":      "rechts",
          "el":      "δεξιά",
          "en":      [ false ],
          "es":      [ "derecha",
                       "dcha",
                       "der" ],
          "fr":      [ false,
                       "droite" ],
          "it":      [ false,
                       "destra" ],
          "ja":      [ false,
                       [21491] ],
          "kk":      [ [1086,1187,1171,1072],
                       [1086,1187] ],
          "nl":      [ false,
                       "rechts" ],
          "nn":      [ "høgre",
                       "høyre" ],
          "no":      "høyre",
          "pl":      [ false,
                       "prawo" ],
          "pt":      [ false,
                       "direita" ],
          "ru":      "справа",
          "sr":      [ "десно",
                       "д" ],
          "sv":      "höger",
          "vi":      [ false,
                       "phải" ],
          "zh":      [ false,
                       [21491] ]
         },
      "Special:":    // (-1)
         {"af":      "Spesiaal",
          "als":     "Spezial",
          "ar":      [ [1582,1575,1589] ],
          "az":      "Xüsusi",
          "bg":      "Специални",
          "ca":      "Especial",
          "cs":      "Speciální",
          "da":      "Speciel",
          "de":      "Spezial",
          "dsb":     "Specialne",
          "el":      "Ειδικό",
          "en":      [ false ],
          "eo":      [ "Specialaĵo",
                       "Speciala" ],
          "et":      "Eri",
          "eu":      [ "Berezi",
                       "Aparteko" ],
          "fa":      [ [1608,1740,1688,1607] ],
          "fi":      "Toiminnot",
          "fr":      "Spécial",
          "fy":      "Wiki",
          "gl":      "Especial",
          "he":      [ [1502,1497,1493,1495,1491] ],
          "hi":      [ [2357,2367,2358,2375,2359] ],
          "hr":      "Posebno",
          "hsb":     "Specialnje",
          "hu":      "Speciális",
          "id":      "Istimewa",
          "it":      "Speciale",
          "ja":      [ [29305,21029] ],   // 7279,5225
          "ka":      [ [4321,4318,4308,4330,4312,4304,4314,4323,4320,
                        4312] ],
          "kk":      [ "Арнайы",
                       "Arnaýı",
                       [1575,1585,1606,1575,1610,1609] ],   //   "ارنايى"
          "ko":      [ [53945,49688,44592,45733] ],// D2B9,C218,AE30,B2A5
          "ksh":     [ "Extra",
                       "Shpezjal",
                       "Spezial" ],
          "la":      "Specialis",
          "lb":      "Spezial",
          "li":      "Speciaal",
          "lt":      "Specialus",
          "mk":      [ "Специјална",
                       "Специјални" ],
          "ms":      [ "Khas",
                       "Istimewa" ],
          "nds":     "Spezial",
          "new":     [ [2357,2367,2358,2375,2359] ],
          "nl":      "Speciaal",
          "nn":      "Spesial",
          "no":      "Spesial",
          "oc":      "Especial",
          "pl":      "Specjalna",
          "pt":      "Especial",
          "ru":      "Служебная",
          "sh":      "Posebno",
          "sk":      "Špeciálne",
          "sl":      "Posebno",
          "sr":      [ "Посебно",
                       "Posebno" ],
          "stq":     "Spezial",
          "th":      [ [3614,3636,3648,3624,3625] ],
          "tr":      "Özel",
          "uk":      "Спеціальна",
          "vi":      "Đặc biệt",   //   [ _]
          "vo":      "Patikos",
          "war":     "Pinaurog",
          "zh":      [ false,
                       [29305,27530] ]
         },   // Special
      "$sub":        // img_sub
         {"de":      [ "tief",
                       "tiefgestellt" ],
          "el":      "δείκτης",
          "en":      [ false ],
          "fr":      [ false,
                       "indice",
                       "ind" ],
          "ja":      [ false,
                       [19979,20184,12365] ],
          "kk":      [ [1072,1089,1090,1099,1083,1099,1171,1099],
                       [1072,1089,1090] ],
          "no":      [ false ],
          "ru":      "под",
          "sr":      "под",
          "sv":      "ned"
         },
      "$sup":        // OBSOLETING
         {"de":      [ "hoch",
                       "hochgestellt" ],
          "en":      [ false,
                       "super" ]
         },
      "$super":      // img_super
         {"de":      [ "hoch",
                       "hochgestellt" ],
          "el":      "εκθέτης",
          "en":      "sup",
          "fr":      [ false,
                       "exposant",
                       "exp" ],
          "ja":      [ false,
                       [19978,20184,12365] ],
          "kk":      [ [1199,1089,1090,1110,1083,1110,1075,1110],
                       [1199,1089,1090] ],
          "no":      [ false ],
          "ru":      "над",
          "sr":      "супер",
          "sv":      "upp"
         },
      "Template:":   // (10)
         {"af":      "Sjabloon",
          "als":     "Vorlage",
          "ar":      [ [1602,1575,1604,1576] ],
          "az":      "Şablon",
          "bg":      "Шаблон",
          "ca":      "Plantilla",
          "cs":      "Šablona",
          "da":      "Skabelon",
          "de":      "Vorlage",
          "dsb":     "Pśedłoga",
          "el":      "Πρότυπο",
          "en":      [ false ],
          "eo":      "Ŝablono",
          "es":      "Plantilla",
          "et":      "Mall",
          "eu":      "Txantiloi",
          "fa":      [ [1575,1604,1711,1608] ],
          "fi":      "Malline",
          "fr":      "Modèle",
          "fy":      "Berjocht",
          "gl":      "Modelo",
          "he":      [ [1514,1489,1504,1497,1514] ],
          "hi":      [ [2360,2366,2305,2330,2366],
                       [2360,2366] ],
          "hr":      "Predložak",
          "hsb":     "Předłoha",
          "hu":      "Sablon",
          "id":      "Templat",
          "it":      [ false ],
          "ja":      [ false,          //   30C6,30F3,30D7,30EC,30FC,30C8
                       [12486,12531,12503,12524,12540,12488] ],
          "ka":      [ [4311,4304,4320,4306,4312] ],
          "kk":      [ "Үлгі",
                       "Ülgi",
                       [1652,1735,1604,1711,1652,1609],
                       [1655,1604,1711,1656] ],
          "ko":      [ [53952] ],   // D2C0
          "ksh":     "Schablon",
          "la":      "Formula",
          "lb":      "Schabloun",
          "li":      "Sjabloon",
          "lt":      "Šablonas",
          "mk":      "Шаблон",
          "ms":      "Templat",
          "nds":     [ "Vörlaag",
                       "Vorlage" ],
          "new":     [ false ],
          "nl":      "Sjabloon",
          "nn":      "Mal",
          "no":      "Mal",
          "oc":      "Modèl",
          "pl":      "Szablon",
          "pt":      "Predefinição",
          "ro":      "Format",
          "ru":      "Шаблон",
          "sh":      "Šablon",
          "sk":      "Súbor",
          "sl":      "Predloga",
          "sr":      [ "Шаблон",
                       "Šablon" ],
          "stq":     "Foarloage",
          "sv":      "Mall",
          "th":      [ [3649,3617,3656,3649,3610,3610] ],
          "tr":      "Şablon",
          "uk":      "Шаблон",
          "vi":      "Thể loại",   //   [ _]
          "vo":      "Samafomot",
          "war":     "Batakan",
          "zh":      [ false,
                       [26679,26495],
                       [27169,26495],
                       [27171,26495] ]
         },   // Template
      "$text-bottom":// img_text_bottom
         {"de":      "text-unten",
          "el":      "κάτω-από-το-κείμενο",
          "en":      [ false ],
          "fr":      [ false,
                       "bas-texte",
                       "bas-txt" ],
          "ja":      [ false,
                       [25991,19979,31471] ],
          "kk":      [ [1084,1241,1090,1110,1085],
                       [1072,1089,1090,1099,1085,1076,1072] ],
          "nl":      [ false,
                       "tekst-beneden" ],
          "no":      "tekst-bunn",
          "ru":      "текст-снизу",
          "sr":      [ "срединатекста",
                       "средина_текста" ],
          "sv":      "text-botten"
         },
      "$text-top":   // img_text_top
         {"de":      "text-oben",
          "el":      "πάνω-από-το-κείμενο",
          "en":      [ false ],
          "fr":      [ false,
                       "haut-texte",
                       "haut-txt" ],
          "ja":      [ false,
                       [25991,19978,31471] ],
          "kk":      [ [1084,1241,1090,1110,1085],
                       [1199,1089,1090,1110,1085,1076,1077] ],
          "nl":      [ false,
                       "tekst-boven" ],
          "no":      "tekst-topp",
          "ru":      "текст-сверху",
          "sr":      [ "врхтекста",
                       "врх_текста" ],
          "sv":      "text-topp"
         },
      "$thumbnail":  // img_thumbnail
         {"de":      [ "mini",
                       "miniatur" ],
          "en":      [ "thumb",
                       "thumbnail" ],
          "el":      [ "μικρογραφία",
                       "μινιατούρα" ],
          "es":      [ "thumb",
                       "miniaturadeimagen",
                       "miniatura",
                       "mini" ],
          "fr":      [ "thumb",
                       "vignette" ],
          "it":      [ "thumb",
                       "miniatura",
                       "min" ],
          "ja":      [ "thumb",
                       [12469,12512,12493,12452,12523] ],
          "kk":      [ [1085,1086,1073,1072,1081] ],
          "nl":      [ "thumb",
                       "miniatuur" ],
          "nn":      [ "mini",
                       "miniatyr" ],
          "no":      [ "mini",
                       "miniatyr" ],
          "pl":      [ "thumb",
                       "mały" ],
          "pt":      [ "miniaturadaimagem",
                       "miniatura" ],
          "ru":      [ "мини",
                       "миниатюра" ],
          "sr":      [ "мини",
                       "умањено" ],
          "sv":      [ "miniatyr",
                       "mini" ],
          "vi":      [ "thumb",
                       "nhỏ" ],
          "zh":      [ "thumb",
                       [32553,30053,22270] ]
         },
      "$thumbtime":
         {"en":      [ false ]
         },
      "$top":        // img_top
         {"de":      "oben",
          "el":      "άνω",
          "en":      [ false ],
          "fr":      [ false,
                       "haut" ],
          "ja":      [ false,
                       [19978,31471] ],
          "kk":      [ [1199,1089,1090,1110,1085,1077] ],
          "nl":      [ false,
                       "boven" ],
          "pl":      [ false,
                       "góra" ],
          "no":      "topp",
          "pt":      [ false,
                       "acima" ],
          "ru":      "сверху",
          "sr":      "врх",
          "sv":      "topp"
         },
      "$upright":    // img_upright
         {"de":      "hochkant",
          "el":      "κατακόρυφα",
          "en":      [ false ],
          "fr":      [ false,
                       "redresse" ],
          "ja":      [ false,
                       [21491,19978] ],
          "kk":      [ [1090,1110,1082,1090,1110],
                       [1090,1110,1082,1090,1110,1082] ],
          "nl":      [ false,
                       "rechtop" ],
          "no":      "portrett",
          "pt":      [ false,
                       "superiordireito" ],
          "ru":      "сверхусправа",
          "sr":      "усправно",
          "sv":      "stående",
          "vi":      [ false,
                       "đứng" ]
         },
      "User:":       // (2)
         {"ar":      [ [1605,1587,1578,1582,1583,1605] ],
          "ca":      [ "Usuari",
                       "Usuari" ],   // ???
          "cs":      [ "Wikipedista",
                       "Wikipedistka",
                       "Uživatel" ],
          "da":      "Bruger",
          "de":      [ "Benutzer",
                       "Benutzerin" ],
          "el":      "Χρήστης",
          "en":      [ false ],
          "eo":      [ "Uzanto",
                       "Vikipediisto",
                       "Uzulo" ],
          "es":      [ "Usuario",
                       "Usuaria" ],
          "fa":      [ [1705,1575,1585,1576,1585] ],
          "fi":      "Käyttäjä",
          "fr":      [ "Utilisateur",
                       "Utilisatrice" ],
          "he":     [ [1502,1513,1514,1502,1513] ],
          "hu":      "Szerkesztő",
          "it":      "Utente",
          "ja":      [ [21033,29992,32773] ],
          "ko":      [ [49324,50857,51088] ],
          "nl":      "Gebruiker",
          "nn":      "Brukar",
          "no":      "Bruker",
          "pl":      "Wikipedysta",
          "pt":      [ "Usuário(a)",
                       "Usuária",
                       "Usuário",
                       "Utilizador" ],
          "ro":      "Utilizator",
          "ru":      [ "Участник",
                       "Участница" ],
          "sv":      "Användare",
          "th":      [ [3612,3641,3657,3651,3594,3657] ],
          "tr":      "Kullanıcı",
          "uk":      "Користувач",
          "vi":      "Thành viên",
          "zh":      [ false,
                       [29992,25143],
                       [29992,25142] ]
         }
   };   // .translate.d



   WSTM.lang.fetch  =  function ( access ) {
      // Functional localization builds
      // Precondition:
      //    attempt  -- string with issue
      //                "TLD.IDN"  -- permitted internationalized TLD
      // Uses:
      // >< .lang.reTLDidn
      // 2016-01-13 PerfektesChaos@de.wikipedia
      var r;
      switch ( access ) {
         case "TLD.IDN":
            if ( typeof WSTM.lang.reTLDidn  !==  "object" ) {
               r  =  String.fromCharCode(
     0x0627, 0x0645, 0x0627, 0x0631, 0x0627, 0x062A, 124,          // .ae
     0x0570, 0x0561, 0x0575, 124,                                  // .am
     0x09AC, 0x09BE, 0x0982, 0x09B2, 0x09BE, 124,                  // .bd
     0x002E, 0x09AC, 0x09BE, 0x0982, 0x09B2, 0x09BE, 124,          // .bd
     0x0431, 0x0433, 124,                                          // .bg
     0x0431, 0x0435, 0x043B, 124,                                  // .by
     0x0627, 0x0644, 0x062C, 0x0632, 0x0627, 0x0626, 0x0631, 124,  // .dz
     0x0645, 0x0635, 0x0631, 124,                                  // .eg
     0x10D2, 0x10D4, 124,                                          // .ge
     0x002E, 0x9999, 0x6E2F, 124,                                  // .hk
     0x09AD, 0x09BE, 0x09F0, 0x09A4, 124,                          // .in
     0x09AD, 0x09BE, 0x09B0, 0x09A4, 124,                          // .in
     0x092D, 0x093E, 0x0930, 0x0924, 124,                          // .in
     0x0C2D, 0x0C3E, 0x0C30, 0x0C24, 0x0C4D, 124,                  // .in
     0x0AAD, 0x0ABE, 0x0AB0, 0x0AA4, 124,                          // .in
     0x0A2D, 0x0A3E, 0x0A30, 0x0A24, 124,                          // .in
     0x0B2D, 0x0B3E, 0x0B30, 0x0B24, 124,                          // .in
     0x0B87, 0x0BA8, 0x0BCD, 0x0BA4, 0x0BBF, 0x0BAF, 0x0BBE, 124,  // .in
     0x0628, 0x06BE, 0x0627, 0x0631, 0x062A, 124,                  // .in
     0x0627, 0x06CC, 0x0631, 0x0627, 124,                          // .ir
     0x0627, 0x06CC, 0x0631, 0x0627, 0x0646, 124,                  // .ir
     0x0627, 0x0644, 0x0627, 0x0631, 0x062F, 0x0646, 124,          // .jo
     0xD55C, 0xAD6D, 124,                                          // .kr
     0x049B, 0x0430, 0x0437, 124,                                  // .kz
     0x002E, 0x0DBD, 0x0D82, 0x0D9A, 0x0DCF, 124,                  // .lk
     0x002E, 0x0B87, 0x0BB2, 0x0B99, 0x0BCD, 0x0B95, 0x0BC8, 124,  // .lk
     0x0627, 0x0644, 0x0645, 0x063A, 0x0631, 0x0628, 124,          // .ma
     0x043C, 0x043A, 0x0434, 124,                                  // .mk
     0x043C, 0x043E, 0x043D, 124,                                  // .mn
     0x041C, 0x041E, 0x041D, 124,                                  // .mn
     0x002E, 0x6FB3, 0x9580, 124,                                  // .mo
     0x002E, 0x6FB3, 0x95E8, 124,                                  // .mo
     0x0645, 0x0644, 0x064A, 0x0633, 0x064A, 0x0627, 124,          // .my
     0x0639, 0x0645, 0x0627, 0x0646, 124,                          // .om
     0x067E, 0x0627, 0x06A9, 0x0633, 0x062A, 0x0627, 0x0646, 124,  // .pk
     0x0641, 0x0644, 0x0633, 0x0637, 0x064A, 0x0646, 124,          // .ps
     0x0642, 0x0637, 0x0631, 124,                                  // .qa
     0x0441, 0x0440, 0x0431, 124,                                  // .rs
     0x0440, 0x0444, 124,                                          // .ru
     0x0420, 0x0424, 124,                                          // .ru
     0x0627, 0x0644, 0x0633, 0x0639, 0x0648, 0x062F, 0x064A,
                                                     0x0629, 124,  // .sa
     0x0633, 0x0648, 0x062F, 0x0627, 0x0646, 124,                  // .sd
     0x002E, 0x65B0, 0x52A0, 0x5761, 124,                          // .sg
     0x002E, 0x0B9A, 0x0BBF, 0x0B99, 0x0BCD, 0x0B95, 0x0BAA,
                     0x0BCD, 0x0BAA, 0x0BC2, 0x0BB0, 0x0BCD, 124,  // .sg
     0x0633, 0x0648, 0x0631, 0x064A, 0x0627, 124,                  // .sy
     0x002E, 0x0E44, 0x0E17, 0x0E22, 124,                          // .th
     0x002E, 0x53F0, 0x7063, 124,                                  // .tw
     0x062A, 0x0648, 0x0646, 0x0633, 124,                          // .tn
     0x002E, 0x53F0, 0x6E7E, 124,                                  // .tw
     0x0443, 0x043A, 0x0440, 124,                                  // .ua
     0x0423, 0x041A, 0x0420, 124,                                  // .ua
     0x0627, 0x0644, 0x064A, 0x0645, 0x0646, 124,                  // .ye
     0x002E, 0x4E2D, 0x56FD, 124,                                  // .zh
     0x002E, 0x4E2D, 0x570B, 124,                                  // .zh
     0x041C, 0x041E, 0x0421, 0x041A, 0x0412, 0x0410, 124, // .moscow
     0x043E, 0x043D, 0x043B, 0x0430, 0x0439, 0x043D, 124, // ru "online"
     0x0441, 0x0430, 0x0439, 0x0442, 124,                 // ru "website"
     0x200F, 0x0634, 0x0628, 0x0643, 0x0629, 0x200E, 124, // ar "Network"
     0x6E38, 0x620F                                       // zh "game"
   );
               WSTM.lang.reTLDidn  =  new RegExp( "^(" + r + ")$" );
            }
            r  =  WSTM.lang.reTLDidn;
            break;
      }   // switch  access
      return  r;
   };   // .lang.fetch()



};   // .bb.langL()
mw.libs.WikiSyntaxTextMod.bb.langL(mw.libs.WikiSyntaxTextMod);
delete mw.libs.WikiSyntaxTextMod.bb.langL;



//-----------------------------------------------------------------------



mw.libs.WikiSyntaxTextMod.bb.linkL  =  function (WSTM) {
   // Analysis of link -- web and wiki
   // Uses:
   //    .util.fiatObjects()
   // 2012-10-08 PerfektesChaos@de.wikipedia
   "use strict";
   WSTM.util.fiatObjects(WSTM,  "w",
                         { link: { protocol: { },
                                   wiki:  { }
                                 }
                         } );



   WSTM.w.link.mediatypes  =   // Regexp string for known file extensions
               "(bmp"     +
               "|djvu"    +
               "|flac"    +
               "|gif"     +
               "|jpe?g"   +
               "|js"      +
               "|mid"     +
               "|mp3"     +
               "|og[agv]" +
               "|opus"    +
               "|pdf"     +
               "|png"     +
               "|svg"     +
               "|stl"     +
               "|tiff?"   +
               "|wav"     +
               "|webm"    +
               "|webp"    +
               "|xcf"     +
               ")";   // 2023-12-13
   WSTM.w.link.doctypes  =   // Regexp string for various file extensions
               "(avi"     +
               "|css"     +
               "|doc"     +
               "|js"      +
               "|mp3"     +
               "|txt"     +
               "|xls"     +
               "|xml"     +
               "|"   +  WSTM.w.link.mediatypes.substr( 1 ); // 2016-07-23
   WSTM.w.link.paged  =   // Regexp string for paged media
               "(djvu"    +
               "|doc"     +
               "|pdf"     +
               "|odt"     +
               "|tiff?"   +
               ")";   // 2011-10-08
   WSTM.w.link.projects3  =  "ace|als|ang|arc|ast|ast|" +
                             "bar|bcl|bjn|bpy|bug|bxr|" +
                             "cdo|ceb|cho|chr|chy|ckb|crh|csb|" +
                             "diq|dsb|" +
                             "eml|epo|ext|" +
                             "frp|frr|fur|" +
                             "gag|gan|glk|got|gsw|" +
                             "hak|haw|hif|hsb|" +
                             "ilo|" +
                             "jbo|" +
                             "kaa|kab|kbd|koi|krc|ksh|" +
                             "lad|lbe|lez|lij|lmo|ltg|lzh|" +
                             "mdf|mhr|mrj|mus|mwl|myv|mzn|" +
                             "nah|nan|nap|nds|new|nov|nrm|nso|" +
                             "pag|pam|pap|pcd|pdc|pfl|pih|pms|pnb|pnt|" +
                             "rmy|rue|" +
                             "scn|scn|sco|sgs|srn|stq|szl|" +
                             "tet|tpi|tum|" +
                             "udm|" +
                             "vec|vep|vls|vro|" +
                             "war|wuu|" +
                             "wuu|" +
                             "xal|xmf|" +
                             "yue|" +
                             "zea";   // 2012-06-20
   WSTM.w.link.protocol.relative  =
         // Regexp for subdomains to be protocol relative URL
         // 2016-05-30
         "|advisory|bits|blog|incubator|nyc|otrs-wiki|outreach|quality"
         + "|spcom|species|strategy|survey|svn|techblog"
         + "|usability|upload|";
   WSTM.w.link.protocol.secure  =
         // Regexp for subdomains to be converted into https URL
         // 2016-05-30
         "|bugzilla|gerrit|labsconsole|lists|phabricator|stats|ticket"
         + "|wikitech|wikidata|";
         // wiki.toolserver.org  jira.toolserver.org
   WSTM.w.link.protocol.plain  =
         // Regexp for subdomains not available via https
         // 2013-03-20
         "|download|dumps|ganglia|mobile|nagios|";
   // DefaultSettings.php   $wgUrlProtocols
   WSTM.w.link.protocol.weblinks  =
         // Regexp for weblink recognition (authority //)
         // 2013-05-18 Gerrit:63406
         "|ftp|ftps|git|http|https|irc|ircs|mms|nntp"
         + "|sftp|ssh|svn|telnet|worldwind|";
   WSTM.w.link.protocol.externals  =
         // Regexp for weblink recognition (no authority)
         // 2013-05-18 Gerrit:63406
         "|bitcoin|geo|magnet|mailto|news|sip|sips|sms|tel|urn|xmpp|";
   WSTM.w.link.wiki.iw639_2  =
         // Global syntax: Known ISO 639-2 interwiki codes
         // 2022-04-23 PerfektesChaos@de.wikipedia
           "|ace|ady|aeb|ain|akz|aln|als|alt|amr|ang|anp"
         + "|arc|arn|aro|arq|ary|arz|ase|ast|atv|awa|azb"
         + "|ban|bar|bat|bbc|bcc|bcl|bfq|bft|bgn|bjn|bla|bpy"
         + "|bqi|brh|bto|bug|bxr"
         + "|cak|cbk|cdo|ceb|chi|chn|cho|chr|chy|ckb|ckt|cnh|crh|csb"
         + "|diq|dng|dsb|dtp|dty|eml|enf|enm|ese|ext"
         + "|fil|fit|fiu|frp|frr|fur"
         + "|gag|gan|glk|gom|got|grc"
         + "|hak|haw|hif|hil|hrx|hsb|hsn"
         + "|ibb|ilo|inh|izh|jam|jbo|jct"
         + "|kaa|kab|kac|kbd|khw|kiu|kjh|kjj|koi|krc|krj|krl|ksh|kum"
         + "|lad|lbe|lez|lhu|lij|liv|lld|lmo|loz|lrc|ltg|lus|luz|lzz"
         + "|mad|mai|map|maz|mdf|mfe|mhr|mic|min|miq|mnc"
         + "|mrj|mus|mwl|mww|myv|mzn"
         + "|nah|nap|nds|new|niu|non|nov|nrm|nso|olo|ota|ote|otk"
         + "|pag|pam|pap|pcd|pdc|pdt|pfl|pih|pis|pko|pms|pnb|pnt|ppl|prs"
         + "|qug|qxn|qya|rar|rif|rmy|roa|rue|ruq|ryu"
         + "|sah|scn|sco|sdc|sdh|sei|shi|sjd|skr|sli|slr"
         + "|sma|srn|stq|swg|szl"
         + "|tcy|tet|tlh|tpi|trp|tum|tyv|tzm|udm|uun"
         + "|vec|vep|vls|vmf|vot|war|wuu|wym|xal|xmf|yua|zea|";
   WSTM.w.link.wiki.iwCorrection  =
         // Global syntax: Correction for some wrong interwiki codes
         //    [[Special:Interwiki]]      [[meta:Interwiki map]]
         // 2015-09-22 PerfektesChaos@de.wikipedia
         { "cmn": "zh",
           "cz":  "cs",
           "dk":  "da",
           "jp":  "ja",
           "epo": "eo" };
   WSTM.w.link.wiki.iwFamily  =
         // Regexp string for some interwiki mapped to sister projects
         //                Terminated by ')'
         // Target keeps wikisyntax (no query)
         // Last known interwiki database update: 13 November 2010
         // 2015-01-17 PerfektesChaos@de.wikipedia
         "|mw|bugzilla|gerrit|phab|rev|svn|download|wg|WP"
         + "|Advisory|betawiki|betawikiversity|dbdump"
         + "|foundation|incubator|Mail|mailarchive|MediaZilla"
         + "|MetaWikiPedia"
         + "|OldWikisource|OTRS|OTRSwiki|Outreach|OutreachWiki"
         + "|Phabricator|pyrev|Quality"
         + "|semantic-mw|spcom|Species|Strategy"
         + "|Tenwiki|testwiki|test2wiki|Ticket"
         + "|tools|toollabs|translatewiki|tswiki"
         + "|usability|voy"
         + "|wikidata|Wikimedia|WikipediaWikipedia|Wikispecies|wikitech"
         + "|Wikivoyage"
         + "|wmar|wmau|wmca|wmch|wmcz|wmdc|wmde|wmfr|wmhk|wmhu|wmid|wmil"
         + "|wmin|wmit|wmno|wmrs|wmru|wmse|wmtw|wmuk"
         + "|Wm2005|Wm2006|Wm2007|Wm2008|Wm2009|Wm2010|Wm2011"
         + "|Wmania|Wmteam"
         + ")";
   WSTM.w.link.wiki.iwPrenatal  =
         // Global syntax: Future interwiki codes, not yet assigned
         // 2015-09-22 PerfektesChaos@de.wikipedia
         "|csi|nd|";
   WSTM.w.link.wiki.iwURL  =
         // Global syntax: Regexp for some interwiki mapped to URL
         //    [[Special:Interwiki]]      [[meta:Interwiki map]]
         // Requires: JavaScript 1.3   fromCharCode()
         // 2020-02-07 PerfektesChaos@de.wikipedia
         "|Aew|BLW|Dcc|doi|hdl|irc|ISSN|RFC|viaf|wmf|Wqy|ZUM"
         + "|AbbeNormal|Acronym|Advogato|Airwarfare|AIWiki"
         + "|AllWiki|Appropedia|AquariumWiki|Arborwiki|arXiv"
         + "|AtmWiki"
         + "|BattlestarWiki|BCNbio|BEMI|BenefitsWiki"
         + "|BibleWiki|BluWiki|Botwiki|Boxrec|BrickWiki"
         + "|bulba|buzztard|Bytesmiths"
         + "|C2|C2find|Cache|CANWiki|CanyonWiki"
         + "|" + String.fromCharCode(264) + "EJ"
         + "|CellWiki|CentralWikia|ChEJ|ChoralWiki|Citizendium"
         + "|CKWiss|CNDbName|CNDbTitle|Comixpedia|CommunityScheme"
         + "|CommunityWiki|comune|CorpKnowPedia|CrazyHacks"
         + "|CreativeCommons|CreativeCommonsWiki"
         + "|CreaturesWiki|CxEJ"
         + "|DCDatabase|DCMA|DejaNews|Delicious|Demokraatia"
         + "|Devmo|Dict|Dictionary|Disinfopedia"
         + "|distributedproofreaders|distributedproofreadersca"
         + "|dmoz|dmozs|DocBook|doom_wiki"
         + "|DRAE|Dreamhost|DrumCorpsWiki|DWJWiki"
         + "|E" + String.fromCharCode(265) + "eI"
         + "|EcheI|EcoReality|EcxeI|ELibre|EmacsWiki"
         + "|Encyc|EnergieWiki|EoKulturCentro"
         + "|Ethnologue|EthnologueFamily|EvoWiki|Exotica"
         + "|FanimutationWiki|FinalEmpire|FinalFantasy|Finnix"
         + "|FlickrPhoto|FlickrUser|FloralWIKI|FlyerWiki-de|Foldoc"
         + "|ForthFreak|FoxWiki|FreeBio|FreeBSDman"
         + "|FreeCultureWiki|Freedomdefined|FreeFeel|FreekiWiki|Freenode"
         + "|ganfyd|Gardenology|GaussWiki|Gentoo-Wiki|GenWiki"
         + "|GlobalVoices|GlossarWiki|GlossaryWiki"
         + "|Golem"   // 2010; ex 2012
         + "|Google|GoogleDefine|GoogleGroups"
         + "|GotAMac|GreatLakesWiki|GuildWarsWiki|Guildwiki"
         + "|gutenberg|gutenbergwiki"
         + "|H2Wiki|HammondWiki|heroeswiki"
         + "|HerzKinderWiki"   // 2010; ex 2012
         + "|HRFWiki|HRWiki|HupWiki"
         + "|IArchive|IMDbCompany|IMDbCharacter|IMDbName|IMDbTitle"
         + "|infoAnarchy|Infosecpedia|Infosphere|ircrc|ISO639-3"
         + "|Iuridictum"
         + "|JamesHoward|JavaNet|Javapedia|JEFO|JiniWiki"
         + "|Jira|JspWiki|JSTOR"
         + "|Kamelo|Karlsruhe|KerimWiki|KinoWiki|KmWiki"
         + "|KontuWiki|KoslarWiki|Kpopwiki"
         + "|LinguistList|LinuxWiki|LinuxWikiDe|LISWiki|LiteratePrograms"
         + "|Livepedia|Lojban|Lostpedia|LQWiki|LugKR|Luxo"
         + "|Mariowiki|MarvelDatabase|MeatBall|MemoryAlpha|MetaWiki"
         + "|Mineralienatlas|MoinMoin|Monstropedia|MosaPedia|MozCom"
         + "|MozillaWiki|MozillaZineKB|MusicBrainz|MWOD|MWOT"
         + "|nara|NKcells|NoSmoke|Nost"
         + "|OEIS|OLPC|OneLook|OpenFacts|Openlibrary"
         + "|Openstreetmap|OpenWetWare|OpenWiki|Opera7Wiki|OrganicDesign"
         + "|OrthodoxWiki|OSI reference model|osmwiki"
         + "|OurMedia"
         + "|Panawiki|PatWIKI|PerlNet|PersonalTelco|PHPWiki|PHWiki"
         + "|PlanetMath|PMEG|psycle|PythonInfo|PythonWiki|PyWiki"
         + "|rcirc|ReutersWiki|ReVo|RheinNeckar|RoboWiki|RoWiki|rtfm"
         + "|S23Wiki|Scholar|SchoolsWP|Scores|Scoutwiki"
         + "|Scramble|SeaPig|SeattleWiki|SeattleWireless"
         + "|SecureWikiDC|SenseisLibrary"
         + "|silcode|Slashdot|SLWiki|SMikipedia|SourceForge|Squeak"
         + "|stable"   // 2010; ex 2012
         + "|stewardry"
         + "|StrategyWiki|SulutilSVGWiki|SwinBrain|SwingWiki|Swtrain"
         + "|TabWiki|Tavi|TclersWiki|Technorati|TESOLTaiwan"
         + "|Thelemapedia|Theopedia|ThinkWiki|TibiaWiki"
         + "|TMBW|TmNet|TMwiki"
         + "|Trash!Italia|Turismo|TVIV|TVtropes|TWiki|TyvaWiki"
         + "|Unreal|Urbandict|USEJ|UseMod"
         + "|ValueWiki"
         + "|Veropedia"   // 2010; ex 2012
         + "|Vinismo|VKoL|VLOS|VoIPinfo"
         + "|Webisodes|Wiki|Wikia|WikiaSite|Wikichat"
         + "|WikiChristian|Wikicities|Wikicity|WikiF1|WikiFur"
         + "|wikiHow|WikiIndex|WikiLemon|Wikilivres|WikiMac-de"
         + "|Wikinfo|Wikinvest|Wikipaltz|Wikischool|WikiSkripta"
         + "|wikisophia|Wikispot|WikiTI|WikiTravel|WikiTree"
         + "|WikiWeet|WikiWikiWeb|Wipipedia|WLUG|Wookieepedia"
         + "|World66|WoWWiki|wqy|WurmPedia"
         + "|ZRHwiki|zum|ZWiki|ZZZ Wiki";
   WSTM.w.link.langs  =  "[a-z][a-z][a-z]?"
                         + "|simple"
                         + "|[a-z][a-z][a-z]?-[a-z][a-z][-a-z]*";



};   // .bb.linkL()
mw.libs.WikiSyntaxTextMod.bb.linkL(mw.libs.WikiSyntaxTextMod);
delete mw.libs.WikiSyntaxTextMod.bb.linkL;



//-----------------------------------------------------------------------



mw.libs.WikiSyntaxTextMod.bb.de  =  function (WSTM) {
   // Localization functions for de language
   // Uses:
   // >  .str.re.yyyy
   //  < .g.re.s.yyyyLink
   //  < .lang.l.de.s.re.*
   //    .util.fiatObjects()
   // 2015-11-25 PerfektesChaos@de.wikipedia
   "use strict";
   var NOWIKI  =  "nowiki";
   if ( typeof WSTM.lang.l.de  !==  "object" ) {
      WSTM.lang.l.de  =  { date:     { },
                           re:       { },
                           s:        { re:     { } },
                           template: { anchor: "Anker" },
                           tms:      { }
                         };
   }
   WSTM.util.fiatObjects(WSTM,  "g",
                         { re:   {  s: { }  }
                         } );
   WSTM.util.fiatObjects(WSTM,  "str",
                         { re:  { }
                         } );
   WSTM.str.re.yyyy  =  "(1[0-9][0-9][0-9]|20[0-9][0-9])";
   WSTM.lang.l.de.date  =  { consider: [ "de-at" ],
                             monFull: {  1: "Januar",
                                         2: "Februar",
                                         3: "März",
                                         4: "April",
                                         5: "Mai",
                                         6: "Juni",
                                         7: "Juli",
                                         8: "August",
                                         9: "September",
                                        10: "Oktober",
                                        11: "November",
                                        12: "Dezember" },
                             monAbbr: {  3: "Mrz",
                                         9: "Sept",
                                         n: 3 } };   // 2015-12-21
   WSTM.lang.l.de.langs  =  { "arabisch":       "ar",
                              "arab.":          "ar",
                              "ar.":            "ar",
                              "bulgarisch":     "bg",
                              "bulg.":          "bg",
                              "tschechisch":    "cs",
                              "tschech.":       "cs",
                              "dänisch":        "da",
                              "dän.":           "da",
                              "deutsch":        "de",
                              "dt":             "de",
                              "dt.":            "de",
                              "german":         "de",
                              "griechisch":     "el",
                              "griech.":        "el",
                              "gr.":            "el",
                              "englisch":       "en",
                              "english":        "en",
                              "engl.":          "en",
                              "eng.":           "en",
                              "spanisch":       "es",
                              "span.":          "es",
                              "finnisch":       "fi",
                              "finn.":          "fi",
                              "französisch":    "fr",
                              "französ.":       "fr",
                              "franz.":         "fr",
                              "french":         "fr",
                              "frz.":           "fr",
                              "kroatisch":      "hr",
                              "kroat.":         "hr",
                              "ungarisch":      "hu",
                              "ungar.":         "hu",
                              "ung.":           "hu",
                              "italienisch":    "it",
                              "ital.":          "it",
                              "it.":            "it",
                              "japanisch":      "ja",
                              "japan.":         "ja",
                              "jap.":           "ja",
                              "latein":         "la",
                              "lat.":           "la",
                              "lateinisch":     "la",
                              "niederländisch": "nl",
                              "holländisch":    "nl",
                              "niederl.":       "nl",
                              "holl.":          "nl",
                              "norwegisch":     "no",
                              "norweg.":        "no",
                              "norw.":          "no",
                              "polnisch":       "pl",
                              "poln.":          "pl",
                              "portugiesisch":  "pt",
                              "port.":          "pt",
                              "serbisch":       "sr",
                              "serb.":          "sr",
                              "schwedisch":     "sv",
                              "schwed.":        "sv",
                              "türkisch":       "tr",
                              "türk.":          "tr",
                              "russisch":       "ru",
                              "russ.":          "ru",
                              "chinesisch":     "zh",
                              "chin.":          "zh"
                            };   // 2021-11-10
   WSTM.lang.l.de.s.re.dom  =   //  _Tagesdatum
      // Sicheres Format für deutschen Tag im Monat
      // Ersetzung:  "$2$3."   (bzw. entsprechend hochgezählt)
      // Entfernt führende Null bei einstelligem Tag nach w:de:WP:DK
      "(0?([1-9])|([12][0-9]|3[01]))\\.";


   WSTM.lang.templates.magic$.de$  =
        "AKTIVE_BENUTZER|"
      + "ARTIKEL(ANZAHL|PFAD)|"
      + "(ADMIN|BEARBEITUNGS|BENUTZER|DATEI|SEITEN)ANZAHL|"
      + "BETRACHTUNGEN|"
      + "(DATUMS|ZAHLEN)FORMAT|"
      + "((DISKUSSIONS|HAUPT)?(NAMENSRAUM|SEITE)"
      +  "|DISK(_NR)?"
      +  "|(KANONISCHE|LOKALE|VOLLSTÄNDIGE)"
      +  "|NAMENSRAUM"
      +  "|(OB|UNT|VORD)ERSEITE"
      +  "|(HAUPT|VOLLER_)?SEITENNAME)"
      +  "(_URL(_C)?)?|"
      + "FÜLLEN(LINK|RECHT)S|"
      + "INHALTSSPRACHE|"
      + "(JETZIG|LOKAL)E(_((KALENDER)?WOCHE|STUNDE|UHRZEIT|VERSION)|"
      +                 "R_((KALENDER)?TAG(_2)?"
      +                   "|MONAT((_[12])|SNAME(_GEN(ITIV)?|_KURZ)?)?"
      +                   "|WOCHENTAG(_ZAHL)?"
      +                   "|ZEITSTEMPEL)|"
      +                 "S_JAHR)|"
      + "LETZTER_BENUTZER|"
      + "PROJEKTNAME|"
      + "(REVISIONS|VERSIONS)"
      +                   "(BENUTZER|ID|JAHR|MONAT1?|TAG2?|ZEITSTEMPEL)|"
      + "SCHUTZSTATUS|"
      + "SEITEN(GRÖSSE|ID|_IN_KATEGORIE|_KAT|KENNUNG|TITEL)|"
      + "(SKRIPT|STIL|STYLE)PFAD|"
      + "STAMMSEITE(NNAME(_URL)?)?|"
      + "TEXTAUSRICHTUNG";   // 2013-07-22
   WSTM.lang.templates.magic$["de:"]  =
         // Regexp for generic variable names terminated by colon ':'
      "sortierung|"
      + "benutzer_in_gruppe|"
      + "seiten(_in_kategorie|grösse|titel)|"
      + "(sprungmarke|url)enkodiert|"
      + "(kanonisch|lokal|vollständig)e_url(_c)?|"
      + "dateipfad|geschlecht|nachricht|schutzstatus|zahlenformat|"
      + "(initial_)?(gross|klein)|"
      + "füllen(link|recht)s|"
      + "schutzstatus|"
      + "versions(benutzer|zeitstempel)";   // 2013-12-07
   WSTM.lang.templates.wikitext  =  {};
   WSTM.lang.templates.wikitext.block    =  { margin:    0,
                                              indent:    1,
                                              lastline:  false,
                                              later:     false,
                                              leap:      false,
                                              leave:     false,
                                              linebreak: true,
                                              lineup:    false };
   WSTM.lang.templates.wikitext.infobox  =  { margin:    0,
                                              indent:    0,
                                              lastline:  true,
                                              later:     true,
                                              leap:      false,
                                              leave:     true,
                                              linebreak: true,
                                              lineup:    true,
                                              lone:      true };
   WSTM.lang.templates.wikitext.inline   =  { indent:    0,
                                              linebreak: false,
                                              lost:      true,
                                              leap:      false,
                                              leave:     false,
                                              later:     false,
                                              lastline:  false };
   WSTM.lang.templates.wikitext.inHalf   =  { indent:    1,
                                              linebreak: false,
                                              lost:      true,
                                              leap:      false,
                                              leave:     false,
                                              later:     false,
                                              lastline:  false };


   WSTM.lang.l.de.tms.Werkzeugleiste  =  [
         ["'''Fetter Text'''",
            ""],
         ["''Kursiver Text''",
            ""],
         ["\\[\\[Link-Text\\]\\]",
            ""],
         ["\\[\\[Verweistext\\]\\]",
            ""],
         ["\\[http://www\\.example\\.com Link-Text\\]",
            ""],
         ["== Überschrift ==",
            ""],
         ["\\[\\[Datei:Beispiel\\.jpg\\]\\]",
            ""],
         ["\\[\\[Media:Beispiel\\.ogg\\]\\]",
            ""],
         ["<ref>Fußnotentext hier einfügen</ref>",
            ""],
         ["<math>Formel hier einfügen</math>",
            ""],
         ["Formel hier einfügen",
            ""],
         ["<nowiki>Unformatierten Text hier einfügen</" + NOWIKI + ">",
            ""],
         ["Unformatierten Text hier einfügen",
            ""],
         ["<ref (((name|group|follow)=\"[^ \"\n>]+\")+) *> *</ref>",
            "<ref $1 />"],
         ["(<ref[^>\n]*>[^>\n]*)<small>([^<\n]*)</small>(.*</ref>)",
          "$1$2$3",
          "gi"],
         ["(<ref[^>\n]*>[^>\n]*)<small>([^<\n]*)</small>(.*</ref>)",
          "$1$2$3",
          "gi"],
         ["(<ref[^>\n]*>[^>\n]*)<small>([^<\n]*)</small>(.*</ref>)",
          "$1$2$3",
          "gi"],
         ["(<su[bp][^>\n]*>)<small>([^<\n]*)</small>(</su[bp]>)",
          "$1$2$3",
          "gi"]
   ];   // .lang.l.de.tms.Werkzeugleiste



   WSTM.lang.l.de.finishing  =  function () {
      // Poliere deutschsprachige Syntaxelemente
      // Postcondition:
      //    Nodes are modified where suitable.
      //    RegExp was used.
      // Uses:
      //    >  .lang.l.de.tms.Werkzeugleiste
      //    >  .text
      //    .util.translate.factory()
      //    .o.WikiTom().replace()
      // 2013-12-23 PerfektesChaos@de.wikipedia
      var tms;
      if ( WSTM.config.Werkzeugleiste &&
           WSTM.lang.l.de.tms.Werkzeugleiste ) {
         tms  =  WSTM.util.translate.factory( this.tms.Werkzeugleiste,
                                              ".lang.l.de.finishing" );
         if (tms) {
            WSTM.text.replace( tms, false );
         }
      }   //
   };   // .lang.l.de.finishing()



   WSTM.lang.l.de.date.words  =  { doweek: [ "Sonntag",
                                             "Montag",
                                             "Dienstag",
                                             "Mittwoch",
                                             "Donnerstag",
                                             "Freitag",
                                             "Sonnabend" ],
                                   dow:    { n:      2 },
                                   mon:    { n:      3,
                                             suffix: "." } };



   WSTM.lang.l.de.date.fetch  =  function (attempt, ahead) {
      // Retrieve date (German)
      // Precondition:
      //    attempt  -- string with presumable date and time
      //    ahead    -- true: future moment permitted
      // Uses:
      //    >  .str.re.yyyy
      //    >< .lang.l.de.date.reTTMMJJJJ
      //    >< .lang.l.de.date.reTMonJJJJ
      //    >< .lang.l.de.date.reMonJJJJ
      //    .str.spaced()
      //    .util.date.find()
      //    .util.date.formal()
      //    .lang.l.en.date.fetch()
      // Postcondition:
      //    Returns object of components, or false if not German
      // 2019-10-28 PerfektesChaos@de.wikipedia
      var r  =  false,
          got, s;
      if ( typeof this.reTTMMJJJJ  !==  "object" ) {
         this.reTTMMJJJJ  =  new RegExp( "^ *([0-3]?[0-9])\\."
                                         + "([01]?[0-9])\\."
                                         + WSTM.str.re.yyyy
                                         + "\\b" );
      }
      got  =  this.reTTMMJJJJ.exec( attempt );
      if ( got ) {
         r  =  { bc:    null,
                 year:  parseInt( got[ 3 ],  10 ),
                 month: parseInt( got[ 2 ],  10 ),
                 dom:   parseInt( got[ 1 ],  10 ) };
      } else {
         if ( typeof this.reTMonJJJJ  !==  "object" ) {
            this.reTMonJJJJ  =  new RegExp( "^ *([0-3]?[0-9])[. ] *"
                                            + "([A-Za-zÄä]+)[. ] *"
                                            + WSTM.str.re.yyyy
                                            + " +("
                                                + "([vn])"
                                              + "\\. *"
                                              + "(?:Chr|u\\. *Z)"
                                              + "\\.)?$"
                                            );
         }
         s    =  WSTM.str.spaced( attempt, true ) + " ";
         got  =  this.reTMonJJJJ.exec( s );
         if ( got ) {
            s  =  WSTM.util.date.find( got[ 2 ],  this );
            if ( s ) {
               r  =  { bc:    null,
                       year:  parseInt( got[ 3 ],  10 ),
                       month: s,
                       dom:   parseInt( got[ 1 ],  10 ) };
               if ( got[ 4 ] ) {
                  r.bc  =  ( got[ 5 ] === "v" );
               }
            }
         } else {
            if ( typeof this.reMonJJJJ  !==  "object" ) {
               this.reMonJJJJ  =  new RegExp( "^ *([A-Za-zÄä]+)[. ] *"
                                              + WSTM.str.re.yyyy
                                              + " *$" );
            }
            got  =  this.reMonJJJJ.exec( attempt );
            if ( got ) {
               s  =  WSTM.util.date.find( got[ 1 ],  this );
               if ( s ) {
                  r  =  { bc:    null,
                          year:  parseInt( got[ 2 ],  10 ),
                          month: s };
                  if ( got[ 4 ] ) {
                     r.bc  =  ( got[ 5 ] === "v" );
                  }
               }
            }
         }
      }
      if ( r ) {
         r  =  WSTM.util.date.formal( r, ahead );
      } else {
         r  =  WSTM.lang.l.en.date.fetch( attempt, ahead );
      }
      return  r;
   };   // .lang.l.de.date.fetch()



   WSTM.lang.l.de.date.format  =  function ( attempt, apply ) {
      // Format date (German)
      //    attempt  -- object of components
      //    apply    -- Array with layout description
      //                Array: [0] country code
      //                       [1] country subtype (lowercase)
      //                       [2] mode
      //                            0  -- T. Monat JJJJ
      //                            1  -- T. Mon. JJJJ
      //                            2  -- T. Mon. JJ
      //                           10  -- T.M.JJJJ
      //                           11  -- TT.MM.JJJJ
      //                           12  -- TT.MM.JJ
      //                           13  -- T.M.JJ
      //                       [3] number of maximum permitted components
      // Uses:
      //    >  .lang.l.de.date.words
      //    >< .lang.l.de.date.words.month
      //    >< .lang.l.de-at.date.words
      //    .util.date.formatPHP()
      // Postcondition:
      //    Returns object of components, or false if not German
      // 2020-01-09 PerfektesChaos@de.wikipedia
      var opts = apply,
          i, max, mode, s, v, words;
      if ( typeof this.words.month  !==  "object" ) {
         this.words.month         =  this.monFull;
         this.words.month.length  =  13;
      }
      if ( typeof opts  !==  "object"   ||   ! opts ) {
         opts  =  [ ];
      }
      mode  =  opts[ 2 ];
      max   =  opts[ 3 ];
      if ( typeof max  ===  "number" ) {
         if ( max >= 2  &&  typeof attempt.month  !==  "number" ) {
            max  =  1;
         }
         if ( max >= 3  &&  typeof attempt.dom  !==  "number" ) {
            max  =  2;
         }
      }
      switch ( mode ) {
         case 10:
         case 11:
         case 12:
         case 13:
            switch ( max ) {
               case 2:
                  s  =  "m.Y";
                  break;
               case 3:
                  s  =  "j.m.Y";
                  break;
               case 5:
                  s  =  "j.m.Y H:i";
                  break;
               default:
                  s  =  "Y";
            }   // switch apply[3]
            if ( mode === 11  ||  mode === 12 ) {
               if ( typeof WSTM.util.date.re.m  !==  "object" ) {
                  WSTM.util.date.re.m  =  new RegExp( "m" );
               }
               if ( typeof WSTM.util.date.re.j  !==  "object" ) {
                  WSTM.util.date.re.j  =  new RegExp( "j" );
               }
               s  =  s.replace( WSTM.util.date.re.m, "n" )
                      .replace( WSTM.util.date.re.j, "d" );
            }
            if ( mode === 12  ||  mode === 13 ) {
               if ( typeof WSTM.util.date.re.Y  !==  "object" ) {
                  WSTM.util.date.re.Y  =  new RegExp( "Y" );
               }
               s  =  s.replace( WSTM.util.date.re.Y, "y" );
            }
            break;
         default:
            switch ( max ) {
               case 2:
                  s  =  "F Y";
                  break;
               case 3:
                  s  =  "j. F Y";
                  break;
               case 5:
                  s  =  "j. F Y H:i";
                  break;
               default:
                  s  =  "Y";
            }   // switch apply[3]
            if ( mode === 1  ||  mode === 2 ) {
               if ( typeof WSTM.util.date.re.F  !==  "object" ) {
                  WSTM.util.date.re.F  =  new RegExp( "F" );
               }
               s  =  s.replace( WSTM.util.date.re.F, "M" );
               if ( mode === 2 ) {
                  if ( typeof WSTM.util.date.re.Y  !==  "object" ) {
                     WSTM.util.date.re.Y  =  new RegExp( "Y" );
                  }
                  s  =  s.replace( WSTM.util.date.re.Y, "y" );
               }
            }
      }   // switch mode
      if ( opts[ 1 ] === "at" ) {
         v  =  WSTM.lang.l[ "de-at" ].date;
         if ( typeof v.words  !==  "object" ) {
            v.words  =  { doweek: this.words.doweek,
                          dow:    this.words.dow,
                          mon:    this.words.mon,
                          month:  [ false ] };
            words    =  v.words;
            words.month[ 1 ]  =  v.monFull[ 1 ];
            for ( i = 2;  i <= 12;  i++ ) {
               words.month.push( this.words.month[ i ] );
            }   // for i
         }
      } else {
         words  =  this.words;
      }
      s  =  WSTM.util.date.formatPHP( attempt, s, words );
      if ( s && attempt.bc ) {
         s  =  s + " v. Chr.";
      }
      return  s;
   };   // .lang.l.de.date.format()



};   // .bb.de()
mw.libs.WikiSyntaxTextMod.bb.de(mw.libs.WikiSyntaxTextMod);
delete mw.libs.WikiSyntaxTextMod.bb.de;



//-----------------------------------------------------------------------



mw.libs.WikiSyntaxTextMod.bb["de-at"]  =  function ( WSTM ) {
   // Localization functions for Austrian language
   // Uses:
   // 2015-11-25 PerfektesChaos@de.wikipedia
   "use strict";
   if ( typeof WSTM.lang.l[ "de-at" ]  !==  "object" ) {
      WSTM.lang.l[ "de-at" ]  =  {  date: { monFull: { 1: "Jänner" },
                                            monAbbr: { 1: "Jän" },
                                            supreme: "de" }  };
   }
};   // .bb.de-at()
mw.libs.WikiSyntaxTextMod.bb["de-at"](mw.libs.WikiSyntaxTextMod);
delete mw.libs.WikiSyntaxTextMod.bb["de-at"];



//-----------------------------------------------------------------------



mw.libs.WikiSyntaxTextMod.bb.en  =  function ( WSTM ) {
   // Localization functions for en language
   // Uses:
   // 2015-11-25 PerfektesChaos@de.wikipedia
   "use strict";
   if ( typeof WSTM.lang.l.en  !==  "object" ) {
      WSTM.lang.l.en  =  { date:     { }
                         };
   }
   if ( typeof WSTM.lang.l.en.date  !==  "object" ) {
      WSTM.lang.l.en.date  =  { monFull: {  1: "January",
                                            2: "February",
                                            3: "March",
                                            4: "April",
                                            5: "May",
                                            6: "June",
                                            7: "July",
                                            8: "August",
                                            9: "September",
                                           10: "Oktober",
                                           11: "November",
                                           12: "December" },
                                monAbbr: { n: 3 }
                              };
   }



   WSTM.lang.l.en.date.fetch  =  function ( attempt, ahead ) {
      // Retrieve date (English)
      // Precondition:
      //    attempt  -- string with presumable date and time
      //    ahead    -- true: future moment permitted
      // Postcondition:
      //    Returns object of components, or false if not English
      // Uses:
      //    >  .str.re.yyyy
      //    >< .lang.l.en.date.reDMonYYYY
      //    .str.spaced()
      //    .util.date.find()
      //    .util.date.formal()
      // 2015-12-23 PerfektesChaos@de.wikipedia
      var r  =  false,
          got, s;
      if ( typeof this.reDMonYYYY  !==  "object" ) {
         this.reDMonYYYY  =  new RegExp( "^ *([0-3]?[0-9])[. ] *"
                                         + "([A-Za-z]+)[. ] *"
                                         + WSTM.str.re.yyyy
                                         + "\\b" );
      }
      s    =  WSTM.str.spaced( attempt, true );
      got  =  this.reDMonYYYY.exec( s );
      if ( got ) {
         s  =  WSTM.util.date.find( got[ 2 ],  this );
         if ( s ) {
            r  =  { year:  parseInt( got[ 3 ],  10 ),
                    month: s,
                    dom:   parseInt( got[ 1 ],  10 ) };
            r  =  WSTM.util.date.formal(r, ahead);
         }
      }
      return  r;
   };   // .lang.l.en.date.fetch()



};   // .bb.en()
mw.libs.WikiSyntaxTextMod.bb.en(mw.libs.WikiSyntaxTextMod);
delete mw.libs.WikiSyntaxTextMod.bb.en;



//-----------------------------------------------------------------------



mw.libs.WikiSyntaxTextMod.bb.policies  =  function (WSTM) {
   // Policy functions for all projects
   // 2019-11-12 PerfektesChaos@de.wikipedia
   "use strict";
   if ( typeof WSTM.lang.p.policies  !== "object" ) {
      WSTM.lang.p.policies  =  { };
   }
   WSTM.lang.p.policies.hline_spc =  {
                       //   1  -- 1 space between == and headline
                       //  -1  -- no space at all between == and headline
                                       "dewiki": 1
                                     };
   WSTM.lang.p.policies.no_pattern  =  {
                                         "dewiki": "^n(?:ein)?$"
   };
   WSTM.lang.p.policies.redirect  =  { "dewiki": { "colon":   false,
                                                   "mode":    false,
                                                   "variant": "C"
                                                 }
                                     };
   WSTM.lang.p.policies.templates_sisterproj  =  {
      "*": { "Commons":     true,
             "Commonscat":  true,
             "Incubator":   true,
             "Mediawiki":   true,
             "Meta":        true,
             "Wikiatlas":   true,
             "Wikibooks":   true,
             "Wikimedia":   true,
             "Wikinews":    true,
             "Wikipedia":   true,
             "Wikiquote":   true,
             "Wikisource":  true,
             "Wikitech":    true,
             "Wikiversity": true,
             "Wikivoyage":  true,
             "Wiktionary":  true
           },
      "dawiki": { "Commons:cat": "Commonskat" },
      "dewiki": { "*":           { "*{{}}": false,
                                   "1":     "page",
                                   "2":     true },
                  "Commons":     true,
                  "Commons:cat": "Commonscat",
                  "Commonscat":  true,
                  "Incubator":   { "1": false },
                  "Mediawiki":   true,
                  "Meta":        true,
                  "Wikiatlas":   true,
                  "Wikibooks":   { "lang": "lang" },
                  "Wikimedia":   true,
                  "Wikinews":    true,
                  "Wikipedia":   { "1": "projLang",
                                   "2": false },
                  "Wikiquote":   { "lang": "lang" },
                  "Wikisource":  { "lang": "lang" },
                  "Wikiversity": { "lang": "lang" },
                  "Wikivoyage":  { "lang": "lang" },
                  "Wiktionary":  { "lang": "lang",
                                   "1":    "pageCase" }
                },
      "enwiki": { "Commons:cat": "Commons category",
                  "Wiktionary":  { "1": "pageCase" } },
      "nlwiki": { "Commons:cat": "Commonscat" },
                  // {{Wikt|naam|taal=es}}
      "svwiki": { "Commons:cat": "Commonscat" },
      "trwiki": { "Commons:cat": "CommonsKat-ufak" }
                  // Şablon:Vikisözlük
   };
   WSTM.lang.p.policies.yes_pattern  =  { "dewiki": "^ja?$"
   };
};   // .bb.policies()
mw.libs.WikiSyntaxTextMod.bb.policies(mw.libs.WikiSyntaxTextMod);
delete mw.libs.WikiSyntaxTextMod.bb.policies;



//-----------------------------------------------------------------------



mw.libs.WikiSyntaxTextMod.bb.dewiki  =  function ( WSTM ) {
   // Localization functions for dewiki project
   // 2012-06-28 PerfektesChaos@de.wikipedia
   "use strict";
   if ( typeof WSTM.lang.p.dewiki  !==  "object" ) {
      WSTM.lang.p.dewiki  =  { got:      {},
                               re:       { s:      {} },
                               template: { anchor: "Anker" }
                             };
   }



   WSTM.lang.p.dewiki.class_discard  =  function () {
      // Handler for deprecated class="" items
      // Postcondition:
      //    Returns string with pipe separated deprecated class names,
      //            or false
      // 2015-11-06 PerfektesChaos@de.wikipedia
      return false;   // "sortbottom"
   };   // .lang.p.dewiki.class_discard()



   WSTM.lang.p.dewiki.comment  =  function (adjust) {
      // Handler for encountered <!-- comment -->
      // Precondition:
      //    adjust  -- comment content, including whitespace around
      // Postcondition:
      //    Returns false, if not adjusted
      //            String with adjusted content including whitespace
      //            true   remove entire content
      // Uses:
      //     < .lang.p.dewiki.got.ch
      //     < .lang.p.dewiki.got.at
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-06-07 PerfektesChaos@de.wikipedia
      var r  =  false;
      if ( adjust.indexOf( "bezogen" ) > 0 ) {
         if (/^[ \n]*schweiz-?bezogen[ !\n]*$/i.test(adjust)) {
            WSTM.lang.p.dewiki.got.ch  =  true;
            if (adjust !== "schweizbezogen") {
               r  =  "schweizbezogen";
            }
         } else if (/^[ \n]*österreichbezogen[ !\n]*$/i.test(adjust)) {
            WSTM.lang.p.dewiki.got.at  =  true;
            if (adjust !== "österreichbezogen") {
               r  =  "österreichbezogen";
            }
         }
      }
      return  r;
   };   // .lang.p.dewiki.comment()



   WSTM.lang.p.dewiki.first  =  function () {
      // Generelle unspezifische Deklarationen
      // Uses:
      //     < .mod.hook
      // 2024-02-20 PerfektesChaos@de.wikipedia
      if ( typeof WSTM.mod  !==  "object"   ||
           !      WSTM.mod ) {
         WSTM.mod  =  { };
      }
      WSTM.mod.hook  =  function ( all ) {
         var r  =  all,
             re, s;
         if ( r.indexOf( "\n{{Findagrave" ) > 0 ) {
            re  =  "([^>=]\n)({{Findagrave)";
            re  =  new RegExp( re, "g" );
            r   =  r.replace( re, "$1* $2" );
         } else if ( r.indexOf( "\n{{findagrave" ) > 0 ) {
            re  =  "([^>=]\n)({{[Ff]indagrave)";
            re  =  new RegExp( re, "g" );
            r   =  r.replace( re, "$1* $2" );
         }
         if ( r.indexOf( "\n{{WestAfricanPlants" ) > 0 ) {
            re  =  "([^>=]\n)({{WestAfricanPlants)";
            re  =  new RegExp( re, "g" );
            r   =  r.replace( re, "$1* $2" );
         }
         if ( r.indexOf( " Coordinates}}\n" ) > 0 ) {
            s  =  " Coordinates}}\n+"
                  +  "({{Navi(?:Block|gationsleiste)|\\[\\[Kategorie:)";
            if ( r.indexOf( "\n{{All Coordinates}}\n" ) > 0 ) {
               re  =  "\n+{{All" + s;
               re  =  new RegExp( re );
               r   =  r.replace( re,
                                 "\n\n{{Hinweis Seiten-Koordinaten}}\n\n"
                                 + "$1" );
            }
         }
         return  r;
      };   // .mod.hook()
   };   // .lang.p.dewiki.first()



   WSTM.lang.p.dewiki.fixSchachRE  =  { };



   WSTM.lang.p.dewiki.fixSchach  =  function () {
      // Existenz einer Schachvorlage registrieren
      // Uses:
      //    this
      //    >< .lang.p.dewiki.schach
      //    .hooks.finalize()
      //    (.lang.p.dewiki.fixSchachHook)
      // 2014-11-03 PerfektesChaos@de.wikipedia
      if ( typeof this.schach  !==  "boolean" ) {
         this.schach  =  true;
         WSTM.hooks.finalize( this.fixSchachHook );
      }
   };   // .lang.p.dewiki.fixSchach()



   WSTM.lang.p.dewiki.fixSchachHook  =  function () {
      // Hook-Funktion für Schachvorlagen
      // Uses:
      //    >< .text
      //     < .mod.lazy
      //    .o.WikiTom()
      // 2018-12-27 PerfektesChaos@de.wikipedia
      var learnt  =  false,
          re      =  "{{(?:Infobox Schacheröffnung|"
                        + "(?:Schachbrett"
                           + "(?:-(?:Chaturanga|klein))?"
                        + "))",
          story   =  WSTM.text.toString(),
          got, i, m, s;
      re  =  new RegExp( re, "g" );
      do {
         got  =  re.exec( story );
         if ( got ) {
            i  =  story.indexOf( "}}", got.index );
            if ( i > 0 ) {
               s  =  story.substring( got.index, i );
               if ( s.indexOf( "{{", 3 ) > 0 ) {
                  m  =  story.indexOf( "}}",  got.index + s.length + 2 );
                  if ( m > 0 ) {
                     i  =  s.length + 2 + m - i;
                     s  =  story.substring(got.index, i);
                  }
               }
               m  =  ( s.substr( 0, 9 )  ===  "{{Infobox"   ?   1
                                                            :   3);
               if ( s.indexOf( "Z1" )  <  0   &&
                    s.indexOf( "Z2" )  <  0   &&
                    s.indexOf( "Z3" )  <  0   &&
                    s.indexOf( "Z4" )  <  0   &&
                    s.indexOf( "Z5" )  <  0   &&
                    s.indexOf( "Z6" )  <  0   &&
                    s.indexOf( "Z7" )  <  0   &&
                    s.indexOf( "Z8" )  <  0 ) {
                  s  =  WSTM.lang.p.dewiki.fixSchachbrett( s, m );
                  if ( s ) {
                     story   =  story.substring( 0, got.index )
                                + s + story.substr( i );
                     learnt  =  true;
                  }
               }
            } else {
               got  =  false;   // do while
            }
            re.lastIndex  +=  2;
         }
      } while ( got );   // do
      if ( learnt ) {
         WSTM.text         =  new WSTM.o.WikiTom( story, null );
         WSTM.text.learnt  =  true;
         WSTM.mod.lazy     =  false;
      }
   };   // .lang.p.dewiki.fixSchachHook()



   WSTM.lang.p.dewiki.fixSchachbrett  =  function (adjust, align) {
      // Berichtige ein Schachbrett
      // Precondition:
      //    adjust  -- Schachbrettvorlage, von {{ bis nächstes }}
      //    align   -- Offset des Brett-Parameters
      // Postcondition:
      //    false   if nothing to do
      //    string  Berichtigtes adjust
      // Uses:
      //    .str.trimL()
      //    .warn.found()
      // 2023-04-02 PerfektesChaos@de.wikipedia
      var ill    =  0,
          reF    =  "\\|(?:\\d+=)?(?:[abcknopqr x_][dl owx_]| )",
          reR    =  " *(",
          rows   =  adjust.split("\n"),
          reObj  =  WSTM.lang.p.dewiki.fixSchachRE,
          got, i, k, lead, r, re, s;
      for ( i = 1;  i <= 8;  i++ ) {
         reR  =  reR + reF;
      }   // for i
      reR  =  reR + "\\|) *_?";

      if ( typeof reObj.abcde  !==  "object" ) {
         reObj.abcde  =  new RegExp( "^a +b +c +d +e +f +g +h$" );
         reObj.empty  =  new RegExp( "^\\|\s*\\|" );
         reObj.eqEnd  =  new RegExp( "\\|=$" );
         reObj.noPeq  =  new RegExp( "^\\|[^|]*=\\s*$" );
         reObj.space  =  new RegExp( "\\|\\s\\|", "g" );
      }
      if ( rows[ 0 ].match( reObj.eqEnd ) ) {
         rows[ 0 ]  =  rows[ 0 ].substr( 0,  rows[ 0 ].length - 2 );
      }
      for ( i = rows.length - 1;  i >= 0;  i-- ) {
         rows[ i ]  =  WSTM.str.trimL( rows[ i ] );
         if ( ! rows[ i ] ) {
            rows.splice( i, 1 );
         }
      }   // for --i
      if ( align > 1 ) {
         k  =  rows[ 0 ].indexOf( "|" );
         if ( k > 0 ) {
            rows.splice( 1,  0,  rows[ 0 ].substr( k ) );
            rows[ 0 ]  =  rows[ 0 ].substr( 0, k );
         }
         if ( rows[ 1 ] === "|=" ) {
            rows.splice( 1, 1 );
         }
         if ( rows[ 2 ]  &&
              rows[ 2 ].match( reObj.empty ) ) {
            rows[ 2 ]  =  rows[ 2 ].substr(1);
            rows.splice( 2, 0, "|" );
         }
      }
      if ( rows[ align ]  &&
           rows[ align ].match( reObj.noPeq ) ) {
         rows[ align ]  =  "| Brett=";
      } else {
         ill  =  align;
      }
      if ( rows[ align + 1 ] !== "" ) {
         rows.splice( align + 1,  0,  "" );
      }
      re    =  "^" + reR + "=\\s*$";
      re    =  new RegExp(re);
      lead  =  ( ! re.test( rows[ align+2 ] ) );
      for ( i = align+2;  i < align+10;  i++ ) {
         k  =  align + 10 - i;
         if ( lead ) {
            re  =  "^ *" + k + reR + k + "?_?=$";
            re  =  new RegExp(re);
         }
         got  =  re.exec( rows[ i ] );
         if ( got ) {
            s        =  got[1].replace( reObj.space, "|  |" )
                              .replace( reObj.space, "|  |" );
            rows[i]  =  " " + k + " " + s + " " + k + "_=";
         } else if ( ! ill) {
            ill  =  i;
         }
      }   // for i
      if ( rows[ align + 10 ] ) {
         if ( rows[ align + 10 ].substr( 0, 1 )  ===  "|" ) {
            rows.splice( align + 10,  0,  "" );
         }
         if (rows[ align + 10 ].match( reObj.abcde )) {
            rows[ align + 10 ]  =  "";
         }
      }
      if ( rows[ align + 10 ] === "" ) {
         rows[ align + 10 ]  =  "    a  b  c  d  e  f  g  h";
      } else if ( ! ill ) {
         ill  =  align + 10;
      }
      if ( rows[align+11] !== "" ) {
         rows.splice(align+11, 0, "");
      }
      s  =  rows.join( "\n" );
      if (s === adjust  ||  ill) {
         r  =  false;
         if (ill) {
            s  =  "Unerwartetes Format: " + rows[0] + "|" + rows[ill];
            WSTM.warn.found("template", s);
         }
      } else {
         r  =  s;
      }
      return  r;
   };   // .lang.p.dewiki.fixSchachbrett()



   WSTM.lang.p.dewiki.fragment  =  function (adjust) {
      // Entferne ggf. veraltete "Anker:"-Vorlage aus wikilink-Fragment
      // Precondition:
      //    adjust  -- fragment (starting after '#')
      // Postcondition:
      //    false   if nothing to do
      //    string  Fragment ohne führendes "Anker:"
      // 2010-05-04 PerfektesChaos@de.wikipedia
      var r  =  false;
      if (adjust.substr(0, 6)  ===  "Anker:"){
         r  =  adjust.substr(6);
      }
      return  r;
   };   // .lang.p.dewiki.fragment()



   WSTM.lang.p.dewiki.https  =  function () {
      // Handling of https projects; turn protocol-relative into https:
      // Postcondition:
      //    Returns true
      // 2015-12-22 PerfektesChaos@de.wikipedia
      return  true;
   };   // .lang.p.dewiki.https()



   WSTM.lang.p.dewiki.kBytes  =  { re: false };



   WSTM.lang.p.dewiki.kBytes.flip  =  function ( amount ) {
      // Reduce string kB to integer
      // Precondition:
      //    amount  -- string, with number and possible suffix
      // Postcondition:
      //    Returns modified integer string, or not
      // Uses:
      //    >< .lang.p.dewiki.kBytes.re
      //     < .lang.p.dewiki.kBytes.re.k
      //     < .lang.p.dewiki.kBytes.re.m
      //     < .lang.p.dewiki.kBytes.re.komma
      // 2022-03-12 PerfektesChaos@de.wikipedia
      var g, r, s;
      if ( ! this.re ) {
         this.re        =  { };
         this.re.k      =  new RegExp( "^([1-9][0-9]*) *ki?b\\.?$",
                                       "i" );
         this.re.m      =  new RegExp( "^([0-9]+[.,]?[0-9]*) *mi?b$",
                                       "i" );
         this.re.komma  =  new RegExp( "," );
      }
      s  =  amount.replace( this.re.k, "$1" );
      g  =  this.re.m.exec( s );
      if ( g ) {
         g  =  g[ 1 ].replace( this.re.komma, "." );
         g  =  parseFloat( g );
         s  =  "" + Math.floor( g * 1000 );
      }
      if ( s !== amount ) {
         r  =  s;
      }
      return  r;
   };   // .lang.p.dewiki.kBytes.flip()



   WSTM.lang.p.dewiki.isPerson  =  function () {
      // Check whether this page is categorized as person
      // Postcondition:
      //    Returns true, if categorized as person
      // Uses:
      //    >  .w.encountered.cats
      //    >< .lang.p.dewiki.rePerson
      // 2012-07-11 PerfektesChaos@de.wikipedia
      var e, i, n,
          r  =  false;
      if ( WSTM.w.encountered ) {
         e  =  WSTM.w.encountered.cats;
         if ( e ) {
            if ( ! this.rePerson ) {
               this.rePerson  =  new RegExp("^(Frau$"
                                            + "|Mann$"
                                            + "|Intersexueller$"
                                            + "|Geschlecht unbekannt$"
                                            + "|Geboren "
//                                          + "|Gestorben "
                                            + ")",
                                            "");
            }
            //  ! isPerson():   Kategorie:Nekrolog && Kategorie:Gestorben
            n  =  e.length;
            for ( i = 0;  i < n;  i++ ) {
               if ( this.rePerson.test( e[ i ] ) ) {
                  r  =  true;
                  break;
               }
            }   // for i
         }
      }
      return  r;
   };   // .lang.p.dewiki.isPerson()



   WSTM.lang.p.dewiki.paramSeqMix  =  function (arglist) {
      // Permit templates with mixed sequence of named and unnamed params
      // Precondition:
      //    arglist  -- String: template name
      // Postcondition:
      //    Returns false, if not known
      //            true   permit unnamed parameter after named
      // 2020-04-03 PerfektesChaos@de.wikipedia
      var r;
      switch (arglist) {
         case "\"" :
         case "'" :
         case "Arimaa Diagramm" :
         case "Chartplatzierungen" :
         case "Galerie" :
         case "Infobox" :
         case "Infobox Schacheröffnung" :
         case "Infobox Schiff" :
         case "Medaillen" :
         case "Medaillen Sommersport" :
         case "Medaillen Wintersport" :
//       case "Mehrspaltige Liste" :
         case "Schachbrett" :
         case "Schachbrett-10x10" :
         case "Schachbrett-6x6" :
         case "Schachbrett-8x10" :
         case "Schachbrett-Chaturanga" :
         case "Schachbrett-klein" :
         case "Sitzverteilung" :
            r  =  true;
            break;
         default:
            r  =  false;
      }   // switch arglist
      return  r;
   };   // .lang.p.dewiki.paramSeqMix()



   WSTM.lang.p.dewiki.prettytable  =  function () {
      // Ersetze triviales prettytable in deutschsprachiger Wikipedia
      // 2015-10-28 PerfektesChaos@de.wikipedia
      var re  =  "\n"
                 + "(:*\\{\\| "
                 +  "(?:.+ )?"
                 +  "class=\""
                 +  "(?:[^\"\n]+ )?"
                 + ")"
                 + "pretty"
                 + "(table[ \"].*\n+)"
                 + "(\\|\\+.+\n+)?"
                 + "(?:\\|-+"
                 +         "( ?class=\"hintergrundfarbe[1-9]\")?"
                 +  " *\n+)?"
                 + "(!|\\|[^-+])";
      re  =  new RegExp(re, "g");
      WSTM.text.replace(re, "\n$1wiki$2$3|-$4\n$5");
      re  =  " class=\""
             + "([^\"\n]+ )?"
             + "wikitable"
             + "( [^\"\n]+)?"
             + " wikitable"
             + "( [^\"\n]+)?"
             + "\"";
      re  =  new RegExp(re, "g");
      WSTM.text.replace(re, " class=\"wikitable $1$2$3\"");
   };   // .lang.p.dewiki.prettytable()



   WSTM.lang.p.dewiki.references  =  function ( arglist ) {
      // Handhabung eines <references>...</references> Blocks
      // Precondition:
      //    arglist  -- WikiTom des <references>...</references>
      // Uses:
      //    >  .w.encountered.internetquelle
      //    >  .w.encountered.literatur
      //    >  .o.WikiTom.Template
      //    .w.template.mod.furnish()
      // 2015-12-22 PerfektesChaos@de.wikipedia
      var e, k, n, q, t;
      if ( typeof WSTM.w.encountered.internetquelle  ===  "boolean"   ||
           typeof WSTM.w.encountered.literatur  ===  "boolean" ) {
         q  =  arglist.children;
         n  =  q.length - 2;
         for ( k = 2;  k < n;  k++ ) {
            t  =  q[ k ];
            if ( t.mode === WSTM.o.WikiTom.Template  &&  t.values ) {
               e  =  t.values[ 0 ];
               if ( e.symbol === "Internetquelle"  ||
                    e.symbol === "Literatur" ) {
                  WSTM.w.template.mod.furnish( t,
                                               { indent:    1,
                                                 linebreak: true,
                                                 leap:      false,
                                                 leave:     false,
                                                 later:     false,
                                                 lastline:  false } );
                  if ( t.learnt ) {
                     WSTM.w.template.mod.format( t );
                  }
               }
            }
         }   // for k
      }
   };   // .lang.p.dewiki.references()



   WSTM.lang.p.dewiki.sistertemplate  =  function ( arglist ) {
      // Schwesterprojektvorlage
      // Precondition:
      //    arglist  -- Array[ 2 ]
      //                [ 0 ]  -- canonical template name
      //                [ 1 ]  -- WikiTom sequence (forked element)
      // Postcondition:
      //    [ 1 ] was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .w.template.par.fiat()
      //    .w.template.mod.flush()
      //    .o.WikiTom().fresh()
      // 2022-12-10 PerfektesChaos@de.wikipedia
      var o = arglist[ 1 ],
          s = arglist[ 0 ],
          e, suffix;
      switch ( s ) {
         case "Commons"    :
         case "Commonscat" :
         case "Wikivoyage" :   // -
            e  =  WSTM.w.template.par.find( o, "3" );
            if ( e   &&
                 typeof e.value  ===  "object"
                 &&     e.value   &&
                 typeof e.value.source  ===  "string" ) {
               WSTM.w.template.par.fiat( o, "suffix", e.value.source );
               WSTM.w.template.mod.flush( o,  [ [ "^3$",  true ] ] );
               e  =  WSTM.w.template.par.find( o, "2" );
               if ( e   &&
                    typeof e.value  ===  "object"
                    &&     e.value   &&
                    typeof e.value.source  ===  "string"   &&
                    ! WSTM.str.trim( e.value.source, true, true ) ) {
                  WSTM.w.template.mod.flush( o,  [ [ "^2$",  true ] ] );
               }
            }
            break;
      }   // switch
      switch ( s ) {
         case "Commons"    :
         case "Commonscat" :
         case "Wikibooks"  :
         case "Wikiquote"  :
         case "Wikisource" :
         case "Wikivoyage" :
         case "Wiktionary" :
            e  =  WSTM.w.template.par.find( o, "suffix" );
            if ( e ) {
               suffix  =  e.flat();
               if ( typeof suffix  ===  "string" ) {
                  suffix  =  WSTM.str.trim( e.value.source, true, true );
                  if ( suffix === ""   ||
                       suffix === "0"  ||
                       suffix === "X"  ||   // -Wikisource
                       suffix === "x" ) {   // -Wikisource
                     e.value.source  =  "-";
                     o.fresh( false );
                  }
                  if ( suffix === "S"  || suffix === "s"   ||
                       ( ( s === "Commons"  &&
                           ( suffix === "Album mit Bildern" )   ||
                             suffix === "Sammlung von Bildern" )    ||
                         ( s === "Commonscat"  &&
                           suffix === "Sammlung von Bildern" ) ) ) {
                     WSTM.w.template.mod.flush( o,
                                                [ [ "^suffix$",
                                                    true ] ] );
                     WSTM.w.template.par.fiat( o, "audio", "0" );
                     WSTM.w.template.par.fiat( o, "video", "0" );
                  }
               }
            }
            break;
      }   // switch
      e  =  WSTM.w.template.par.find( o, "2" );
      if ( e   &&
           typeof e.value  ===  "object"
           &&     e.value   &&
           typeof e.value.source  ===  "string"   &&
           e.value.source  ===  "{{PAGENAME}}" ) {
         //   ||   e.value.source  ===  s1
         if ( WSTM.w.template.par.find( o, "3" ) ) {
            e.value.source  =  "";
         } else {
            WSTM.w.template.mod.flush( o,  [ [ "^2$",  true ] ] );
         }
         o.fresh( false );
      }
      e  =  WSTM.w.template.par.find( o, "1" );
      if ( e   &&
           typeof e.value  ===  "object"
           &&     e.value   &&
           typeof e.value.source  ===  "string"   &&
           e.value.source  ===  "{{PAGENAME}}" ) {
         if ( WSTM.w.template.par.find( o, "2" ) ) {
            e.value.source  =  "";
         } else {
            WSTM.w.template.mod.flush( o,  [ [ "^1$",  true ] ] );
         }
         o.fresh( false );
      }
   };   // .lang.p.dewiki.sistertemplate()



   WSTM.lang.p.dewiki.template  =  { };



   WSTM.lang.p.dewiki.template.iso3166  =  {
      // 2023-11-03 PerfektesChaos@de.wikipedia
      ARU: "ABW",
      ANG: "AGO",
      AHO: "ANT",
      UAE: "ARE",
      VAE: "ARE",
      ASA: "ASM",
      BUR: "BFA",
      BAN: "BGD",
      BUL: "BGR",
//    BRN: "BHR",   BRN is primary Brunei Darussalam
      BAH: "BHS",
      BIZ: "BLZ",
      BER: "BMU",
      BAR: "BRB",
      BRU: "BRN",
      BHU: "BTN",
      BOT: "BWA",
      SUI: "CHE",
      SWI: "CHE",
      CHI: "CHL",
      PRC: "CHN",
      MAC: "CN-MO",
      DRC: "COD",
      CGO: "COG",
      CRC: "CRI",
      CAY: "CYM",
      TCH: "CSK",
      TSH: "CSK",
      GER: "DEU",
      DAN: "DNK",
      DEN: "DNK",
      ALG: "DZA",
      SPA: "ESP",
      FIJ: "FJI",
      GUE: "GGY",
      GUI: "GIN",
      GAM: "GMB",
//    GBS: "GNB",   Google Buch  in  Wikisource
      EQG: "GNQ",
      GEQ: "GNQ",
      GRE: "GRC",
//    "GRE-1970": "GRC-1970",
      GRN: "GRD",
      GUA: "GTM",
      HON: "HND",
      CRO: "HRV",
      HAI: "HTI",
      INA: "IDN",
      IOM: "IMN",
      IRI: "IRN",
      JER: "JEY",
      CAM: "KHM",
      SKN: "KNA",
      KUW: "KWT",
      LIB: "LBN",
      LBA: "LBY",
      SRI: "LKA",
      LES: "LSO",
      LIT: "LTU",
      LAT: "LVA",
      MON: "MCO",
      MLD: "MDA",
      MAD: "MDG",
      MYA: "MMR",
      MGL: "MNG",
      MNT: "MNP",
      MTN: "MRT",
      MRI: "MUS",
      MAW: "MWI",
      MAS: "MYS",
      NIG: "NER",
      NGR: "NGA",
      NCA: "NIC",
      NED: "NLD",
      NEP: "NPL",
      OMA: "OMN",
      PHI: "PHL",
      POR: "PRT",
      PAR: "PRY",
      ROM: "ROU",
      KSA: "SAU",
      SIN: "SGP",
      SOL: "SLB",
      ESA: "SLV",
      SER: "SRB",
      URS: "SUN",
      SLK: "SVK",
      SLO: "SVN",
      SEY: "SYC",
      CHA: "TCD",
      TOG: "TGO",
      TGA: "TON",
      TRI: "TTO",
//    TPE: "TWN",   TPE: Taiwan Sport ./. Taiwan country
      TAN: "TZA",
//    URU: "URY",    ->2020?
      ASM: "US-AS",
      GUM: "US-GU",
      PRI: "US-PR",
      PUR: "US-PR",
      VIR: "US-VI",
      VIN: "VCT",
      IVB: "VGB",
      ISV: "VIR",
      VIE: "VNM",
      VAN: "VUT",
      WLS: "WAL",
      SAM: "WSM",
      RSA: "ZAF",
      ZAM: "ZMB",
      ZAR: "ZRE",   // ??? ->COD
      ZIM: "ZWE"
   };   // .lang.p.dewiki.template.iso3166



   WSTM.lang.p.dewiki.template.parShift = {
     "'":                       { p: "lang", s: "Sprache" },
     "\"":                      { p: "lang", s: "Sprache" },
   /*"DBI":                     { p: "Verfasser", s: "Autor" }, */
     "DeutBiogrEnz":            { p: "Aufl",      s: "Auflage" }, // 20
     "DictNatBiogr":            { p: "Verfasser", s: "Autor" },   // 331
     "EnciclopediaDeiPapi":     { p: "Verfasser", s: "Autor" },
     "Handballtabelle/Ende":    { p: "Stand", isoDate: true },
     "Handbook of Texas":       { p: "Artikel",   s: "Lemma" },   // 17
     "IMSLP":                   { p: "id", lock: true },
     "Infobox Flughafen":       { p: "Website", s: "Webseite" },
     "Infobox Schule":          { p: "Wiki", d: true },
     "Librivox":              [ { p: "1",  s: "ID" },
                                { p: "2",  s: "Autor" } ],
     "MathWorld":             [ { p: "1", s: "id" },
                                { p: "2", s: "title" },
                                { p: "urlname", s: "id" } ],
     "politicalgraveyard.com":[ { p: "1", s: "ID" },
                                { p: "2", s: "Name" },
                                { p: "NAME", s: "Name" } ],
     "Politicalgraveyard.com":[ { p: "1", s: "ID" },
                                { p: "2", s: "Name" },
                                { p: "NAME", s: "Name" } ],
     "RKD":                   [ { p: "1", s: "ID" },
                                { p: "2", s: "Name" } ],
     "Rkd.nl‎":                [ { p: "1", s: "ID" },
                                { p: "2", s: "Name" } ],
     "rkd.nl‎":                [ { p: "1", s: "ID" },
                                { p: "2", s: "Name" } ],
     "Vollmer":               [ { p: "1", s: "Band" },
                                { p: "2", s: "Seite" },
                                { p: "3", s: "SeiteBis" },
                                { p: "4", s: "Lemma" },
                                { p: "5", s: "Autor" } ],
     "Weiterleitungshinweis": [ { p: "mehrzahl", boole: [ ] } ],
     "World Athletics":       [ { p: "1", s: "ID" },
                                { p: "2", s: "NAME" } ],
     "ZDB":                   [ { p: "kurz", boole: [ ] },
                                { p: "lazy", boole: [ ] } ],

     "DFB.de":                  { p: "2",  d: true },
     "Fussballdaten":           { p: "ID", s: "1" },
     "NFTPlayer":               { p: "ID", s: "1" },
     "Soccerway":               { p: "ID", s: "1" },
     "Transfermarkt":           { p: "ID", s: "1" },

     "AlleBurgen":            [ { p: "1",  s: "ID" },
                                { p: "2",  s: "Name" } ],
     "Basketball-reference":    { p: [ "2", "name" ],  s: "Name" },
     "Britannica":            [ { p: "1", s: "id" },
                                { p: "2", s: "titel" },
                                { p: "3", s: "abruf" } ],
     "Catholic-hierarchy":    [ { p: "1", s: "Typ" },
                                { p: "2", s: "ID" },
                                { p: "3", s: "Artikel" } ],
     "Discogs":                 { p: "3", s: "Abruf", isoDate: true },
     "DNB-Portal":            [ { p: "2",             s: "NAME" },
                                { p: [ "3", "TYP" ],  s: "TEXT" } ],
     "documenta Archiv":      [ { p: "1", s: "ID" },
                                { p: "2", s: "Name" },
                                { p: "3", s: "Linktext" } ],
     "Ebidat":                [ { p: "1", s: "ID" },
                                { p: "2", s: "Name" },
                                { p: "3", s: "Autor" } ],
     "EncAlabama":              { p: "accessdate", s: "abruf",
                                  isoDate: true },
     "EnciclopedieOnlineITA":   { p: "Artikel", s: "Lemma" },
     "Flexikon":                { p: "Komplett", boole: [ ] },
     "GCatholic":             [ { p: "1", s: "Typ" },
                                { p: "2", s: "ID" },
                                { p: "3", s: "Artikel" } ],
     "Gesetzestext":            { s: "1", lock: true },
     "Gnis":                    { p: "4", s: "Abruf", isoDate: true },
     "HambBio":               [ { p: "1", s: "Lemma" },
                                { p: "2", s: "Band" },
                                { p: "3", s: "Seite" },
                                { p: "4", s: "SeiteBis" },
                                { p: "5", s: "Autor" } ],
     "Hillbilly-Music.com":   [ { p: "1", s: "id" },
                                { p: "2", s: "label" } ],
     "IMDb":                  [ { p: "3",     s: "typ" },
                                { p: "NAME",  s: "2" } ],
     "Infobox Einspielergebnis":{ p: "Abrufdatum", s: "Abruf",
                                  isoDate: true },
     "Infobox Musikalbum":    [ { p: "Anzahl Titel", s: "AnzahlTitel" },
                                { p: "Aufnahmejahr", s: "Aufnahme" },
                                { p: "Format", s: "Formate" },
                                { p: "Genre", s: "Genres" },
                                { p: "Künstler", s: "Interpret" },
                                { p: "Künstler Chr", s: "InterpretChr" },
                                { p: "Künstler2 Chr",
                                  s: "Interpret2Chr" },
                                { p: "Laufzeit", s: "Länge" },
                                { p: "Jahr", s: "Veröffentlichung" } ],
     "Infobox Song":            { p: "Musiker", s: "Interpret" },
     "laut.de":               [ { p: "1",  s: "ID" },
                                { p: "2",  s: "Linktext" } ],
     "LdiF":                    { p: "Typ", s: "typ" },
     "Lex All Movie Guide":     { p: "4", s: "Abruf", isoDate: true },
     "Peakbagger":            [ { p: "1", s: "ID" },
                                { p: "2", s: "Name" } ],
     "Peakbagger Range":      [ { p: "1", s: "ID" },
                                { p: "2", s: "Name" } ],
     "Philpapers.org":        [ { p: "1", s: "Typ" },
                                { p: "2", s: "ID" },
                                { p: "3", s: "Linktext" } ],
     "Portal":                  { p: "2", s: "suffix" },
     "RöllEnzyklopädie":      [ { p: "1", s: "Band" },
                                { p: "2", s: "Seiten" },
                                { p: "3", s: "Lemma" },
                                { p: "bemerkung", s: "Kommentar" } ],
     "Synchronkartei":          { p: "4", s: "Abruf", isoDate: true },
     "TheCanadianEncyclopedia": { p: "accessdate", s: "abruf",
                                  isoDate: true },
     "Überarbeiten":          { p: "grund", s: "Grund" },
     "WiBiLex":               [ { p: "Zugriffsdatum",
                                  s: "Abruf", isoDate: true },
                                { p: [ "2", "titel" ], s: "Titel" },
                                { p: "autor", s: "Autoren" } ],
     "YouTube":               [ { p: "1",  s: "id" },
                                { p: [ "2", "title" ],  s: "titel" },
                                { p: [ "3", "z" ],
                                  s: "abruf", isoDate: true },
                                { p: "link", boole: [ ] },
                                { p: "sec",  s: "time" },
                                { p: "upl",  s: "uploader" },
                                { p: "d",  s: "upload", isoDate: true },
                                { p: "k",  s: "kommentar" } ],
     "Yvng.yadvashem.org":    [ { p: "1",  s: "ID" },
                                { p: "2",  s: "Name" } ],
     "ZDFmediathek":            { p: "Zugriffsdatum", s: "Abruf",
                                  isoDate: true }
   };   // .lang.p.dewiki.template.parShift 2024-02-18



   WSTM.lang.p.dewiki.template.fresh  =  function ( arglist ) {
      // Prüfe und berichtige Vorlagen in deutschsprachiger Wikipedia
      // Precondition:
      //    arglist  -- [0] template name
      //                [1] node number of template start
      //                [2] node number of template end
      //                [3] WikiTom sequence
      // Postcondition:
      //    Returns false, if not adjusted
      //            or Array   [0] newname
      //                       [1] true: place template on single line(s)
      //                       [2] function callback, or false
      //                           requires forked element as parameter
      //    WikiTom sequence was changed if necessary
      //    RegExp was used.
      // Uses:
      //    >  .lang.p.dewiki.template.abruf.def
      //    >  .lang.p.dewiki.template.fresh.lower1
      //    >  .lang.p.dewiki.template.fresh.upper1
      //    >  .lang.p.dewiki.template.fresh.rename
      //    >  .lang.p.dewiki.template.fresh.block
      //    >  .lang.p.dewiki.template.iso3166
      //    >  .lang.rtl
      //     < .lang.p.dewiki.got.sortPerson0
      //    .str.camelCasing()
      //    .str.deCapitalize()
      //    .lang.p.dewiki.template.hinweisKlickl()
      //    .lang.p.dewiki.template.fresh.inHalf.find()
      //    .lang.p.dewiki.fixSchach()
      //    .lang.p.dewiki.template.navileisteWL.fix()
      //    .lang.p.dewiki.template.abruf.f()
      //    (.lang.p.dewiki.template.lang.fresh)
      //    (.lang.p.dewiki.template.infobox)
      //    (.lang.p.dewiki.template.fresh.inHalf.fiat)
      //    (.lang.p.dewiki.template.allmusic.f)
      //    (.lang.p.dewiki.template.anker)
      //    (.lang.p.dewiki.template.arabischeSchrift)
      //    (.lang.p.dewiki.template.arbeiterztg)
      //    (.lang.p.dewiki.template.archiveOrg)
      //    (.lang.p.dewiki.template.belegeFehlen)
      //    (.lang.p.dewiki.template.bibISBN)
      //    (.lang.p.dewiki.template.britannica1911.f)
      //    (.lang.p.dewiki.template.brockhaus1837)
      //    (.lang.p.dewiki.template.brockhaus1911)
      //    (.lang.p.dewiki.template.celex)
      //    (.lang.p.dewiki.template.datum)
      //    (.lang.p.dewiki.template.datumZelle)
      //    (.lang.p.dewiki.template.attrStd.f)
      //    (.lang.p.dewiki.template.derSpiegel)
      //    (.lang.p.dewiki.template.deutscheBiographie)
      //    (.lang.p.dewiki.template.deutschesWB.f)
      //    (.lang.p.dewiki.template.deutschlandlastig)
      //    (.lang.p.dewiki.template.deutschesWB.DWB)
      //    (.lang.p.dewiki.template.farbe.f)
      //    (.lang.p.dewiki.template.fnBox)
      //    (.lang.p.dewiki.template.gartenlaube)
      //    (.lang.p.dewiki.template.gesprochen.art)
      //    (.lang.p.dewiki.template.gesprochen.f)
      //    (.lang.p.dewiki.template.haan)
      //    (.lang.p.dewiki.template.hdlDOI.fire)
      //    (.lang.p.dewiki.template.heBio)
      //    (.lang.p.dewiki.template.heiligenlex1858)
      //    (.lang.p.dewiki.template.herder1854)
      //    (.lang.p.dewiki.template.hessBib.ppn)
      //    (.lang.p.dewiki.template.hoehe)
      //    (.lang.p.dewiki.template.infoboxPublik)
      //    (.lang.p.dewiki.template.infoboxSchiff)
      //    (.lang.p.dewiki.template.information.fire)
      //    (.lang.p.dewiki.template.internetq.fire)
      //    (.lang.p.dewiki.template.ipa)
      //    (.lang.p.dewiki.template.julgregd.fire)
      //    (.lang.p.dewiki.template.kicker.fire)
      //    (.lang.p.dewiki.template.lang.f)
      //    (.lang.p.dewiki.template.lang.features)
      //    (.lang.p.dewiki.template.lang.flat)
      //    (.lang.p.dewiki.template.literatur.fire)
      //    (.lang.p.dewiki.template.lueger1904)
      //    (.lang.p.dewiki.template.luiseLexBez)
      //    (.lang.p.dewiki.template.mehrspListe.f)
      //    (.lang.p.dewiki.template.meyers1905)
      //    (.lang.p.dewiki.template.musicBrainzK.f)
      //    (.lang.p.dewiki.template.naviBlock)
      //    (.lang.p.dewiki.template.nieuwNederlBioW)
      //    (.lang.p.dewiki.template.nordFamilje.format)
      //    (.lang.p.dewiki.template.normdaten.fire)
      //    (.lang.p.dewiki.template.oxfordDNB.f)
      //    (.lang.p.dewiki.template.pagel1901)
      //    (.lang.p.dewiki.template.personendaten.fire)
      //    (.lang.p.dewiki.template.personZelle.f)
      //    (.lang.p.dewiki.template.pierer1857)
      //    (.lang.p.dewiki.template.pmc)
      //    (.lang.p.dewiki.template.rtl.fire)
      //    (.lang.p.dewiki.template.rtl.lang)
      //    (.lang.p.dewiki.template.sammlungDunckerGrafik)
      //    (.lang.p.dewiki.template.sortDate.f)
      //    (.lang.p.dewiki.template.sortKey.f)
      //    (.lang.p.dewiki.template.thiemeBecker.f)
      //    (.lang.p.dewiki.template.urn)
      //    (.lang.p.dewiki.template.verzDtDrucke.vd)
      //    (.lang.p.dewiki.template.verzDtDrucke.f)
      //    (.lang.p.dewiki.template.zenoWerk)
      //    (.lang.p.dewiki.template.zh)
      //    (.lang.p.dewiki.template.zitat.block)
      //    (.lang.p.dewiki.template.zitat.blockLang)
      //    (.lang.p.dewiki.template.lang.fair)
      //    (.w.template.par.flip)
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2024-01-31 PerfektesChaos@de.wikipedia
      var r        =  false,
          symbol   =  arglist[ 0 ],
          s        =  WSTM.str.camelCasing( symbol ),
          vorlage  =  WSTM.lang.p.dewiki.template,
          f        =  function ( aS, aF, aB ) {
                         if ( ! r ) {
                            r  =  [ symbol, aB, aF ];
                         } else if ( aF ) {
                            if ( r[ 2 ] ) {
                               switch ( typeof r[ 2 ] ) {
                                  case "function" :
                                     r[ 2 ]  =  [ r[ 2 ] ];
                                     // fall through
                                  case "object" :
                                     r[ 2 ].push( aF );
                                     break;
                               }   // switch arglist
                            } else {
                               r[ 2 ]  =  aF;
                            }
                         }
                         if ( aS ) {
                            r[ 0 ]  =  aS;
                            symbol  =  aS;
                         }
                         if ( typeof aB  ===  "boolean" ) {
                            r[ 1 ]  =  aB;
                         }
                      },   // f()
          i, n, slang, shift;
      if ( typeof vorlage.fresh.rename[ s ]  ===  "string" ) {
         s  =  vorlage.fresh.rename[ s ];   // fall through
         if ( s  &&  s !== symbol ) {
            f( s );
         }
      }
      for ( i = 0;  i < vorlage.fresh.lower1.length;  i++ ) {
         if ( vorlage.fresh.lower1[ i ] === symbol ) {
            f( WSTM.str.deCapitalize( symbol ) );
            break;   // for i
         }
      }   // for i
      if ( typeof vorlage.abruf.def[ symbol ]  !==  "boolean" ) {
         if ( typeof vorlage.abruf.def[ s ]  ===  "boolean" ) {
            f( s );
         } else {
            i  =  WSTM.str.deCapitalize( symbol );
            if ( typeof vorlage.abruf.def[ i ]  ===  "boolean" ) {
               f( i );
            }
         }
      }
      if ( symbol.indexOf( "Infobox" )            &&
           symbol.indexOf( "Linkbox " )           &&
           symbol.indexOf( "Navigationsleiste " ) ) {
         shift  =  vorlage.fresh.inHalf.find( symbol );
         if ( shift ) {
            f( shift, vorlage.fresh.inHalf.fiat );
         }
      }
      if ( ! r  &&  s !== symbol ) {
         for ( i = 0;  i < vorlage.fresh.upper1.length;  i++ ) {
            if ( vorlage.fresh.upper1[ i ] === s ) {
               f( s );
               break;   // for i
            }
         }   // for i
      }
      if ( s !== symbol   &&
           ( ! symbol.indexOf( "folgeleiste " )  ||
             ! symbol.indexOf( "hinweis " )      ||
             ! symbol.indexOf( "infobox" )      ||
             ! symbol.indexOf( "linkbox " ) ) ) {
         f( s );
      }
      if ( ! symbol.indexOf( "Folgeleiste " )    ||
           ! symbol.indexOf( "Hinweis " )        ||
           ! symbol.indexOf( "Infobox" )         ||
           ! symbol.indexOf( "Linkbox " )        ||
           vorlage.fresh.block[ s ] ) {
         f( s, false, true );
         if ( ! symbol.indexOf( "Infobox" )  &&
              ( ! symbol.indexOf( "Infobox Schiff" )   ||
                symbol.indexOf( "/" ) < 0 ) ) {
            f( false, vorlage.infobox );
         } else if ( ! symbol.indexOf( "Hinweis Klicklaute" ) ) {
            f( s,
               false,
               vorlage.hinweisKlickl( arglist[ 3 ],  arglist[ 1 ] ) );
         }
      }
      if ( ! symbol.indexOf( "Infobox " )   &&
           symbol.indexOf( "/" ) > 0 ) {
         f( false, false, false );
      }
      switch ( symbol ) {
         case "abS" :
         case "kkS" :
         case "kyS" :
         case "mnS" :
         case "tgS" :
            f( symbol + "-Cyrl" );
            break;
         case "azS" :
         case "crhS" :
         case "tkS" :
         case "uzS" :
            f( symbol + "-Latn" );
            break;
         case "ar" :
         case "arS" :
         case "fa" :
         case "faS" :
         case "arF" :
         case "ArF" :
         case "faF" :
         case "FaF" :
            f( false, vorlage.lang.fresh );
            break;
         case "Ar" :
         case "ArS" :
         case "Fa" :
         case "FaS" :
            f( WSTM.str.deCapitalize( symbol ),
               vorlage.lang.fresh );
            break;
         case "elS" :
         case "grcS" :
         case "hboS" :
         case "heS" :
            f( false, vorlage.lang.features );
            break;
         case "Arab" :
         case "ArabS" :
         case "Hebr" :
         case "HebrS" :
         case "Mani" :
         case "ManiS" :
            f( false, vorlage.rtl.fire );
            break;
         case "tzm" :
         case "Tzm" :
            f( "tzm", vorlage.lang.flat );
            break;
         case "Allmusic" :
         case "allmusic" :
            f( "Allmusic", vorlage.allmusic.f );
            break;
         case "Anker" :
         case "anker" :
         case "Anchor" :
         case "anchor" :
            f( "Anker", vorlage.anker );
            break;
         case "arabische Schrift" :
         case "Arabische Schrift" :
            f( "Arabische Schrift", vorlage.arabischeSchrift );
            break;
         case "AZ" :
         case "Arbeiterzeitung" :
         case "arbeiterzeitung" :
            f( "Arbeiterzeitung", vorlage.arbeiterztg.f );
            break;
         case "archive.org" :
            f( false, vorlage.archiveOrg.f );
            break;
         case "belege fehlen" :
         case "Belege fehlen" :
            f( "Belege fehlen", vorlage.belegeFehlen );
            break;
         case "bibISBN" :
         case "BibISBN" :
            f( "BibISBN", vorlage.bibISBN.f );
            break;
         case "Biolib" :
         case "biolib" :
            f( "Biolib" );   // 1=URL.path
            break;
         case "Britannica 1911" :
         case "britannica 1911" :
            f( "Britannica 1911", vorlage.britannica1911.f );
            break;
         case "Brockhaus-1837" :
         case "brockhaus-1837" :
            f( "Brockhaus-1837", vorlage.brockhaus1837 );
            break;
         case "Brockhaus-1911" :
         case "brockhaus-1911" :
            f( "Brockhaus-1911", vorlage.brockhaus1911 );
            break;
         case "CELEX" :
         case "cELEX" :
            f( "CELEX", vorlage.celex );
            break;
/*
         case "DanskBio" :
         case "danskBio" :
            r  =  ["DanskBio",
                   false,
                   vorlage.danskBio.format];
            break;
*/
         case "DatumZelle" :
         case "datumZelle" :
            f( "DatumZelle", vorlage.datumZelle );
            break;
         case "PersonZelle" :
         case "personZelle" :
            f( false, vorlage.personZelle.f );
         case "ZahlZelle" :
         case "zahlZelle" :
            f( false, vorlage.attrStd.f );
            break;
         case "Der Spiegel" :
         case "der Spiegel" :
            f( "Der Spiegel", vorlage.derSpiegel );
            break;
         case "Deutsche Biographie" :
         case "deutsche Biographie" :
            f( "Deutsche Biographie", vorlage.deutscheBiographie );
            break;
         case "Deutsches Wörterbuch" :
         case "deutsches Wörterbuch" :
            f( "Deutsches Wörterbuch", vorlage.deutschesWB.f );
            break;
         case "DOI" :
            f( "DOI", vorlage.hdlDOI.fire );
            break;
         case "DWB" :
            f( "Deutsches Wörterbuch", vorlage.deutschesWB.DWB );
            break;
         case "EU-Richtlinie" :
         case "eU-Richtlinie" :
            f( "EU-Richtlinie", vorlage.celex );
            break;
         case "Farbe" :
         case "farbe" :
            f( "Farbe", vorlage.farbe.f );
            break;
         case "FNBox" :
         case "fNBox" :
            f( "FNBox", vorlage.fnBox );
            break;
         case "Gartenlaube" :
         case "gartenlaube" :
            f( "Gartenlaube", vorlage.gartenlaube );
            break;
         case "Gesprochener Artikel" :
         case "gesprochener Artikel" :
            f( "Gesprochene Version", vorlage.gesprochen.art );
            break;
         case "Gesprochene Version" :
         case "gesprochene Version" :
f( "Gesprochene Version", vorlage.gesprochen.art );
//          f( "Gesprochene Version", vorlage.gesprochen.f );
            break;
         case "haan" :
         case "Haan" :
            f( "SächsSchriftstLex", vorlage.haan );
            break;
         case "hDL" :
         case "HDL" :
            f( "HDL", vorlage.hdlDOI.fire );
            break;
         case "HeBio" :
         case "heBio" :
            f( "HeBio", vorlage.heBio );
            break;
         case "Heiligenlexikon-1858" :
         case "heiligenlexikon-1858" :
            f( "Heiligenlexikon-1858", vorlage.heiligenlex1858 );
            break;
         case "Herder-1854" :
         case "herder-1854" :
            f( "Herder-1854", vorlage.herder1854 );
            break;
         case "HessBib PPN" :
         case "hessBib PPN" :
            f( "HessBib PPN", vorlage.hessBib.ppn );
            break;
         case "Hinweis Chinesischer Name" :
         case "Hinweis Isländischer Name" :
         case "Hinweis Japanischer Name" :
         case "Hinweis Koreanischer Name" :
         case "Hinweis Vietnamesischer Name" :
            WSTM.lang.p.dewiki.got.sortPerson0  =  true;
            break;
/*
         case "Hinweis Klicklaute" :
            f( false, vorlage.hinweisKlickl );
            break;
*/
         case "Höhe":
         case "höhe":
            f( "Höhe", vorlage.hoehe );
            break;
         case "Infobox Publikation":
            f( false, vorlage.infoboxPublik.f );
            break;
         case "Infobox Schiff":
            f( false, vorlage.infoboxSchiff.f );
            break;
         // Infobox Schiffsklasse/Basis
         case "Infobox Distrikt in Pakistan":
         case "Infobox Ort im Kosovo":
         case "Infobox Ort im Westjordanland":
         case "Infobox Ort in Aserbaidschan":
         case "Infobox Ort in Estland":
         case "Infobox Ort in Israel":
         case "Infobox Ort in Mazedonien":
         case "Infobox Ort in Pakistan":
         case "Infobox Ort in Slowenien":
         case "Infobox Ort in Togo":
         case "Infobox Ort in Ungarn":
         case "Infobox Ort in der Türkei":
            f( false, vorlage.infoboxWEB );
            break;
         case "Information" :
         case "information" :
            f( "Information", vorlage.information.fire, true );
            break;
         case "Internetquelle" :
            f( "Internetquelle", vorlage.internetq.fire );
            break;
         case "iPA" :
         case "IPA" :
            f( "IPA", vorlage.ipa );
            break;
         case "jULGREGDATUM" :
         case "JULGREGDATUM" :
            f( "JULGREGDATUM", vorlage.julgregd.fire );
            break;
         case "lang" :
            f( false, vorlage.lang.f );
            break;
         case "Kicker" :
            f( "Kicker", vorlage.kicker.fire );
            break;
         case "Literatur" :
            f( "Literatur", vorlage.literatur.fire );
            break;
         case "Lueger-1904" :
         case "lueger-1904" :
            f( "Lueger-1904", vorlage.lueger1904 );
            break;
         case "LuiseLexBez" :
         case "luiseLexBez" :
            f( "LuiseLexBez", vorlage.luiseLexBez );
            break;
         case "Mehrspaltige Liste" :
         case "mehrspaltige Liste" :
            f( "Mehrspaltige Liste", vorlage.mehrspListe.f, true );
            break;
         case "Meyers-1905" :
         case "meyers-1905" :
            f( "Meyers-1905", vorlage.meyers1905 );
            break;
         case "MusicBrainz Künstler" :
         case "musicBrainz Künstler" :
            f( "MusicBrainz Künstler", vorlage.musicBrainzK.f );
            break;
         case "NaviBlock" :
         case "naviBlock" :
         case "naviblock" :
         case "Naviblock" :
            f( "NaviBlock", vorlage.naviBlock, true );
            // 1...20=Template names
            break;
         case "NieuwNederlBioWoord" :
         case "nieuwNederlBioWoord" :
            f( "NieuwNederlBioWoord", vorlage.nieuwNederlBioW.f );
            break;
/*
         case "NordFamilje" :
         case "nordFamilje" :
            r  =  ["NordFamilje", false, vorlage.nordFamilje.format];
            break;
*/
//       case "Authority control" :
//       case "authority control" :
         case "Normdaten" :
         case "normdaten" :
            f( "Normdaten", vorlage.normdaten.fire, true );
            break;
         case "nts" :
         case "Nts" :
            f( "nts", vorlage.nts.f );
            break;
         case "OxfordDNB" :
         case "oxfordDNB" :
            f( "OxfordDNB", vorlage.oxfordDNB.f );
            break;
         case "Pagel-1901" :
         case "pagel-1901" :
            f( "Pagel-1901", vorlage.pagel1901 );
            break;
         case "Personendaten" :
         case "personendaten" :
            f( "Personendaten", vorlage.personendaten.fire, true );
            break;
/*
         case "Folgenleiste" :
         case "folgenleiste" :
         case "Folgenleiste multi" :
         case "folgenleiste multi" :
         case "personenleiste" :
            r  =  ["Personenleiste", false, false];
            break;
*/
         case "Pierer-1857" :
         case "pierer-1857" :
            f( "Pierer-1857", vorlage.pierer1857 );
            break;
         case "pipe" :
            f( "Pipe" );   // vorlage.pipe
            // diff=113821088
            // [[BD:He3nry#LA-Entscheidung zur Vorlage:Pipe]]
            break;
         case "PMC" :
         case "pMC" :
            f( "PMC", vorlage.pmc );
            break;
         case "Rtl-lang" :
         case "rtl-lang" :
            f( "rtl-lang", vorlage.rtl.lang );
            break;
/*
         case "Salzburger Nachrichten" :
            f( "Salzburger Nachrichten", vorlage.salzburgerNachr.f );
            break;
*/
         case "Schachbrett" :
         case "schachbrett" :
         case "Schachbrett-klein" :
         case "schachbrett-klein" :
//       case "Infobox Schacheröffnung" :
            f( WSTM.str.camelCasing( symbol ) );
            WSTM.lang.p.dewiki.fixSchach();
            break;
         case "SortDate" :
         case "sortDate" :
            f( "SortDate", vorlage.sortDate.f );
            break;
         case "SortKey" :
         case "sortKey" :
            f( "SortKey", vorlage.sortKey.f );
            break;
         case "deutschlandlastig" :
         case "Deutschlandlastig" :
            f( "Staatslastig", vorlage.deutschlandlastig, true );
            break;
         case "SammlungDunckerGrafik" :
         case "sammlungDunckerGrafik" :
            f( "SammlungDunckerGrafik", vorlage.sammlungDunckerGrafik );
            break;
         case "SUN-1980" :
         case "sUN-1980" :
            r  =  ["SUN", false, false];
            break;
         case "thiemeBecker" :
         case "ThiemeBecker" :
            f( "ThiemeBecker", vorlage.thiemeBecker.f );
            break;
         case "URN" :
         case "Urn" :
         case "urn" :
            f( "URN", vorlage.urn );
            break;
         case "VerzDtDrucke" :
         case "verzDtDrucke" :
            f( "VerzDtDrucke", vorlage.verzDtDrucke.f );
            break;
         case "Webarchiv" :
         case "webarchiv" :
         case "Webarchive" :
         case "webarchive" :
            f( "Webarchiv", vorlage.webarchiv.f );
            break;
         case "Zeno-Werk" :
            f( false, vorlage.zenoWerk );
            break;
         case "zh" :
            f( false, vorlage.zh );
            break;
         case "zitat" :
         case "Zitat" :
         case "zitat-de-CH" :
         case "Zitat-de-CH" :
            f( "Zitat" + symbol.substr( 5 ),  vorlage.zitat.block );
            break;
         case "Zitat-en" :
         case "zitat-en" :
            f( false, vorlage.zitat.blockLang );
            break;
         default:
            n  =  symbol.length;
            if ( ( n === 7  ||  n === 8 )   &&
                 symbol.substr( 1, 4 ) === "ang-"   &&
                 /^[lL]ang-[a-z][a-z][a-z]?$/.test( symbol ) ) {
               symbol  =  symbol.substr( 5 )  +  "S";
               n       =  symbol.length;
               f( symbol );
            } else if ( n >= 7  &&  n <= 9   &&
                        symbol.substr( n - 5,  1 )  ===  "-" ) {
               s = symbol.substr(n - 4);
               if ( s === "Arab"  ||  s === "Hebr" ) {
                  f( symbol, vorlage.rtl.fire );
               }
            } else if ( n >= 8  &&  n <= 9    &&
                        symbol.substr( 1, 5 )  ===  "itat-"    &&
                        /^[zZ]itat-[a-z][a-z][a-z]?$/.test( symbol ) ) {
                  f( symbol, vorlage.zitatb );
            }
            switch ( n ) {
               case 2:   // En Fr
                  if ( symbol.charCodeAt( 1 )  >  96   &&
                       symbol.charCodeAt( 0 )  <  91 ) {
                     s  =  "|Ja|Tn|Tp|";
                     if ( s.indexOf( symbol )  <  0 ) {
                        symbol  =  WSTM.str.deCapitalize( symbol );
                        f( symbol );
                     }
                  }
                  break;
               case 3:   // EnS FrS ArF FaF
                  if ( symbol.charCodeAt( 1 )  >  96   &&
                       symbol.charCodeAt( 0 )  <  91 ) {
                     if ( symbol.charCodeAt( 2 )  ===  83  ||
                          symbol.charCodeAt( 2 )  ===  70 ) {
                        // "S" || "F"
                        symbol  =  symbol.substr( 0, 1 ).toLowerCase()
                                   + symbol.substr(1);
                        f( symbol );
                        if ( symbol.charCodeAt( 2 )  ===  83 ) {
                           r[ 2 ]  =  vorlage.lang.fair;
                        }
                     } else if ( symbol.charCodeAt( 2 )  >  96 ) {
                        slang  =  symbol.toLowerCase();
                        if ( WSTM.lang.rtl.indexOf( "|" + slang + "|" )
                             >  0) {
                           symbol  =  slang;
                           f( symbol );
                        }
                     }
                  } else if (symbol.charCodeAt(0) > 91  &&
                             symbol.charCodeAt(1) > 96  &&
                             symbol.charCodeAt(2) === 83) {
                     f( symbol, vorlage.lang.fair );
                  } else if (symbol.charCodeAt(1) < 91  &&
                             symbol.charCodeAt(2) < 91) {
                     n  =  vorlage.iso3166[ symbol.toUpperCase() ];
                     if ( n ) {
                        f( n );
                     }
                  }
                  break;
               case 4:
                  if (symbol.charCodeAt(3) === 83  &&   // "S"
                      symbol.charCodeAt(1) > 96  &&
                      symbol.charCodeAt(2) > 96) {
                     if (symbol.charCodeAt(0) < 91) {
                        symbol  =  symbol.substr(0, 1).toLowerCase()
                                   + symbol.substr(1);
                     }
                     f( symbol, vorlage.lang.fair );
                  }
                  break;
               case 8:
                  break;
            }   // switch symbol.length
            if ( symbol.length <= 4 ) {
               slang  =  symbol.replace( /^([a-z][a-z][a-z]?)[FS]$/,
                                         "$1" );
               if ( WSTM.lang.rtl.indexOf( "|" + slang + "|" )  >=  0 ) {
                  f( symbol, vorlage.rtl.fire );
               }
            }
            if ( typeof WSTM.lang.p.dewiki.template.parShift[ symbol ]
                                                        ===  "object" ) {
               f( false, WSTM.w.template.par.flip );
            }
            if ( typeof vorlage.abruf.def[ symbol ]  ===  "boolean" ) {
               f( false, vorlage.abruf.f );
            }
            if ( symbol.indexOf( "avigationsleiste " )  ===  1 ) {
               symbol  =  vorlage.navileisteWL.fix( symbol );
               if ( symbol ) {
                  f( symbol, false, true );
               }
            }
      }   // switch symbol
      return  r;
   };   // .lang.p.dewiki.template.fresh()



   WSTM.lang.p.dewiki.template.fresh.block = {
      "Allgemeinverständlichkeit":  true,
      "Archiv-Tabelle":             true,
      "Begriffsklärung":            true,
      "Begriffsklärungshinweis":    true,
      "Belege fehlen":              true,
      "Bild-PD-Schöpfungshöhe":     true,
      "Commonscat":                 true,
      "Dateiüberprüfung":           true,
      "Dieser Artikel":             true,
      "Exzellent":                  true,
      "Falschschreibung":           true,
      "Folgenleiste":               true,
      "Gesundheitshinweis":         true,
      "Gesprochene Version":        true,
      "Hauptartikel":               true,
      "Informativ":                 true,
      "In SVG konvertieren":        true,
      "In TeX konvertieren":        true,
      "Korrekter Titel":            true,
      "Lesenswert":                 true,
      "Lückenhaft":                 true,
      "Mangelhafte Vektorisierung": true,
      "NaviBlock":                  true,
      "Neutralität":                true,
      "Normdaten":                  true,
      "NowCommons":                 true,
      "Nur Liste":                  true,
      "Obsolete Schreibung":        true,
      "Panorama":                   true,
      "Personenleiste":             true,
      "Rechtshinweis":              true,
      "Siehe auch":                 true,
      "Staatslastig":               true,
      "Überarbeiten":               true,
      "Übersetzung":                true,
      "Veraltet":                   true,
      "Weiterleitungshinweis":      true
   };   // 2020-06-20



   WSTM.lang.p.dewiki.template.fresh.lower1 = [
      "AbS",
      "AzS",
      "CrhS",
      "ElS",
      "Esa",
      "Fa",
      "FaS",
      "GrcS",
      "HboS",
      "HeS",
      "KkS",
      "KyS",
      "MnS",
      "OtaS",
      "TgS",
      "TkS",
      "Ur",
      "UrS",
      "UzS",
      "Zh",
      "Acre2ha",
      "Acre2km²",
      "Ft2m",
      "Ft²2m²",
      "Ft³2m³",
      "In2m",
      "In2mm",
      "Kg2lb",
      "Km2mi",
      "Km2sm",
      "Kmh2Bft",
      "Kmh2kn",
      "Kmh2mph",
      "Km²2mi²",
      "Kn2Bft",
      "Kn2kmh",
      "Kn2mps",
      "Kpm2Nm",
      "KW2PS",
      "Lb2kg",
      "M2ft",
      "M2in",
      "M2yd",
      "Mi2km",
      "Mi²2km²",
      "Mm2in",
      "Mph2kmh",
      "Mps2kn",
      "M³2ft³",
      "Sm2km",
      "Yd2m",
      "Archive.org",
      "Ceskyflorbal.cz",
      "Danskefilm.dk",
      "Darts1.de",
      "Dartsn.de",
      "Dwds.de",
      "Fernsehserien.de",
      "Ft.dk",
      "Gbif.org",
      "Hockeyarchives.info",
      "Laut.de",
      "Namenforschung.net",
      "Parlament.ch",
      "Pharmazie.com",
      "Philpapers.org",
      "Photography-now.com",
      "Politicalgraveyard.com",
      "Rcdb.com",
      "Righteous.yadvashem.org",
      "Rkd.nl‎",
      "Santiebeati.it",
      "Smartvote.ch",
      "Smartvote.lu",
   // "snooker.org",        2022-04 TD
      "Sportenote.com",
      "Stolpersteine-berlin.de",
      "Wahlen.ch",
      "Yvng.yadvashem.org",
      "ArXiv",
      "Bibcode",
      "Dmoz",
      "Documenta Archiv",
      "Ff",
      "Lang",
      "Lg",
      "Nowrap"
   ];   // .lang.p.dewiki.template.fresh.lower1  2023-12-25



   WSTM.lang.p.dewiki.template.fresh.upper1 = [
      "Arab",
      "ArabS",
      "Archiv-Tabelle",
      "BDFutbol",
      "Belege fehlen",
      "Bruch",
      "Coordinate",
      "DBI",
      "DeutBiogrEnz",
      "DictNatBiogr",
      "EG-RL",
      "EncAlabama",
      "EnciclopediaDeiPapi",
      "Fussballdaten",
      "Hebr",
      "HebrS",
      "HambBio",
      "Handballtabelle/Ende",
      "Ja",
      "Kicker",
      "LÄ",
      "Lückenhaft",
      "Mackolik",
      "MathWorld",
      "National Jukebox",
      "Nein",
      "Neutralität",
      "NFTPlayer",
      "NowCommons",
      "Nur Liste",
      "Panorama",
      "Portal",
      "Tn",          // WL
      "Toter Link",
      "Tp",          // WL
      "TürkFutbolFedDB",
      "Unsigniert",
      "Vorlage",
      "Waybackarchiv",
      "Weiterleitungshinweis",
      "Weltfussball",
      "ZDB"
   ];   //.lang.p.dewiki.template.fresh.upper1  2022-08-01



   WSTM.lang.p.dewiki.template.fresh.rename = {
      "Unverständlich":               "Allgemeinverständlichkeit",
      "Azw":                          "ArchitekturzentrumWien",
      "Archiv Tabelle":               "Archiv-Tabelle",
      "Arxiv":                        "arXiv",   // geblockt
      "BibDOI/10.2105/AJPH.86.8 Pt 1.1087":  "BibPMID/8712266",
      "Mérimée":                      "Base Mérimée",
      "Palissy":                      "Base Palissy",
      "BayernViewer Denkmal":         "Bayerischer Denkmal-Atlas",
      "Disambiguation":               "Begriffsklärung",
      "Belege":                       "Belege fehlen",
      "Quelle":                       "Belege fehlen",
      "Quellen fehlen":               "Belege fehlen",
      "Quellen":                      "Belege fehlen",
      "Bild-SH":                      "Bild-PD-Schöpfungshöhe",
      "FedCup":                       "BillieJeanKingCup",
      "NCv":                          "Commonsfähig",
      "CVL":                          "Commonsvorlage",
      "Coord":                        "Coordinate",
      "Koordinate":                   "Coordinate",
      "DÜP":                          "Dateiüberprüfung",
      "Quelle Denkmalliste Bayern":   "Denkmäler in Bayern",
      "Disclaimer Baudenkmal in Bayern":  "Disclaimer Denkmalliste Bayern",
      "Doi":                          "DOI",
      "Digitales Wörterbuch der deutschen Sprache":  "dwds.de",
      "EZA:Beginn":                   "Erdzeitalter/Beginn",
      "EZA:Ende":                     "Erdzeitalter/Ende",
      "Eurohockey-com":               "Eurohockey.com",
      "Legend":                       "Farblegende",
      "Fs start":                     "Football squad start",
      "Fs end":                       "Football squad end",
      "Fs mid":                       "Football squad mid",
      "Fs player":                    "Football squad player",
      "GBR-ELS":                      "GB-ELS",
      "UK":                           "GBR",
   // "Steigen":                      "Gestiegen",
      "J":                            "Häkchen",
      "Main":                         "Hauptartikel",
      "Hdl":                          "HDL",
      "Isländischer Name":            "Hinweis Isländischer Name",
      "Suizid":                       "Hinweis Suizid",
      "Hockeyarchives-info":          "hockeyarchives.info",
      "IMDB":                         "IMDb",
      "Präfindex":                    "Index",
      "Infobox DC-Projekt":           "Infobox Distributed-Computing-Projekt",
      "Infobox TV Ermittler":         "Infobox TV-Ermittler",
      "Svg":                          "In SVG konvertieren",
      "IFDB":                         "Interactive Fiction Database",
      "TeX":                          "In TeX konvertieren",
      "Yes":                          "Ja",
      "Jstor":                        "JSTOR",
      "Aktuelles Ereignis":           "Laufendes Ereignis",
      "Laut":                         "laut.de",
      "Griechische Sprache":          "Linkbox Griechische Sprache",
      "Sure":                         "Linkbox Koran-Suren",
      "LSJ":                          "ListeStaatsoberhäupterJahr",
      "TfL":                          "LondonTransport",
      "Unvollständig":                "Lückenhaft",
      "MEK":                          "MagyarEleLex",
      "N/A":                          "N/A-Feld",
      "Naviblock":                    "NaviBlock",
      "Hauptstädte der mexikanischen Staaten":
               "Navigationsleiste Hauptstädte der mexikanischen Staaten",
      "Kettenfahrzeuge der Bundeswehr":
                          "Navigationsleiste Kettenfahrzeuge Bundeswehr",
      "Kreise Herzogtum Magdeburg":   "Navigationsleiste Kreise Herzogtum Magdeburg",
      "Pelzhandelszentren":           "Navigationsleiste Pelzhandelszentren",
      "Präsidenten von Union Berlin": "Navigationsleiste Präsidenten von Union Berlin",
      "No":                           "Nein",
      "NPOV":                         "Neutralität",
      "NC":                           "NowCommons",
      "Zeile":                        "nowrap",
      "NurListe":                     "Nur Liste",   // geblockt 2020
      "Topographisches Verzeichnis Bayern 1867": "Ortsverzeichnis Bayern 1864",
      "Großes Bild":                  "Panorama",
      "MwGit":                        "Phab",
      "Pierer1857 Online":            "Pierer-1857",
      "Photo":                        "photography-now.com",
      "TPGY":                         "politicalgraveyard.com",
      "RKD":                          "rkd.nl‎",
      "Säbi":                         "SächsBio",
      "OlympicPicto":                 "SportPicto",
      "Denkmalliste Bayern Tabellenkopf":  "Tabellenkopf Baudenkmal Bayern",
      "Denkmalliste Bayern Tabellenzeile":  "Tabellenzeile Baudenkmal Bayern",
      "Dead link":                    "Toter Link",
      "Unsigned":                     "Unsigniert",
      "UEFA":                         "UEFA.com",
      "USCensusPop":                  "US Census Population",
      "Tl":                           "Vorlage",
      "IAAF":                         "World Athletics",   // auslaufend
      "WUB":                          "WürttUrkB",
      "Youtube":                      "YouTube",
      "10E":                          "ZahlExp",
      "ZDB-ID":                       "ZDB",
      "ZDYV":                         "yvng.yadvashem.org",
      "Zeicheneingabe":               "Zeichencodierung"
   };   // .lang.p.dewiki.template.fresh.rename  2024-02-18



   WSTM.lang.p.dewiki.template.fresh.inHalf  =  { hash: false };
   WSTM.lang.p.dewiki.template.fresh.inHalf.raw  =  [
"\"",
"\'",
"45cat-artist",
"ARDAudiothek",
"Abrufdatum",
"Acros",
"AlleBurgen",
"AllgKünstLex-MüllerSinger",
"Allmusic",
"Altfrankfurt",
"AmNatBio",
"AppletonsAmBio",
"Arbeiterzeitung",
"archive.org",
"Archivquelle",
"ArkivNordFilologi",
"BLO Ortsdatenbank",
"Bandcamp",
"Bavaria 3. Band 1865",
"Bavarikon",
"BayernPortal Ortsteile",
//"Berliner Adressbuch",
"BerlinerArchitekturwelt",
"BerlinerLeben",
"Boetticher",
"Brandenburgikon",
"Britannica 1911",
"Britannica",
"Brockhaus-1809",
"Brockhaus-1837",
"Brockhaus-1911",
"Brockhaus-Efron",
"Bürgermeisterwahl Kärnten Ref",
"CIA-Factbook",
"CL Inventory",
"Calbiochem",
"Carl Roth",
"ChemBlink",
"ChemID",
"ChemSpider",
"ChemicalBook",
"CoRAP-Status",
"CodexDiplBrandenbgTeilA",
"CodexDiplBrandenbgTeilB",
"ConsumerProductInfoDB",
"Coordinates",
"CoordinatesPage",
"DHM-HdG",
"DanskBio",
"Der Spiegel",
"DeutBiogrEnz",
"Deutsche Biographie",
"Deutsches Exilarchiv",
"Deutsches Wörterbuch",
"DictAfriBio",
"DictAustralasianBio",
"DictGreekRomanBio",
"DictNatBiogr",
"DictSciBiogr",
"Digitalisat",
"DrDukesDB",
"DrugBank",
"DtPatentMarkenA",
"DtRechtswörterbuch",
"dwds.de",
"ECHA-InfoCard",
"EUR-Lex-Rechtsakt",
"Ebidat",
"Eliteprospects",
"EncAlabama",
"EncIslam",
"EnciclopediaDeiPapi",
"EnciclopedieOnlineITA",
"EurKonst",
"eurohockey.com",
"Europeana",
"Farbe",
"Fischer Brandenburg-Ansbach 2. Teil",
"Fisher Scientific",
"Flexikon",
"Fornminne",
"Fürstenthum Brandenburg-Onolzbach 1761",
"Gallica",
"Gartenlaube",
"Gemeindelexikon Preußen 1871",
"Gemeindelexikon Preußen 1885",
"Gemeindelexikon Preußen 1895",
"Gemeindelexikon Preußen 1905",
"Gemeinderatswahl Burgenland Ref",
"Gemeinderatswahl Kärnten Ref",
"Gemeinderatswahl NÖ Ref",
"Gemeinderatswahl Stmk Ref",
"Gemeindeverzeichnis Deutschland 1950",
"Gemeindeverzeichnis Deutschland 1956",
"Georges-1913-Latein",
"Google Buch",
"GroveMedieval",
"Haaretz online",
"HambBio",
"Handbook of Texas",
"HathiTrust Buch",
"Heiligenlexikon-1858",
"Heise online",
"Herder-1854",
"HessAmtsBL",
"HessBib",
"Hinweis Seiten-Koordinaten",
"Historisches Gemeindeverzeichnis 1953",
"Historisches Gemeindeverzeichnis 1991",
"Holleman-Wiberg",
"IOC-Praktikum",
"IllustrZ",
"InvSchweizArch",
"JahrbDtAdel",
"Kantillation",
"Kieler Straßenlexikon",
"Kirchenbücher Provinz Sachsen 1925",
"KulturDB-Trier",
"KunstAltDenk-SHA",
"Kunstaspekte",
"KyotoEncyclGenGenom",
"KürschnerGelehrt",
"laut.de",
"Leonhardi Fürstenthümer Bayreuth und Anspach",
"Librivox Buch",
"ligue1.com",
"Lueger-1904",
"LuiseBMS",
"LuiseLexBez",
"LuiseLexStr",
"MediaWiki-Button",
"Mehrspaltige Liste",
"Merck",
"Meyers-1905",
"Mindat",
"Mineralienatlas",
"Modomics",
"NatHeritListEng",
"National Jukebox",
"NaturBW",
"Natura 2000",
"Natura2000-NRW",
"NavFrame",
"NavPunkt",
"NieuwNederlBioWoord",
"NordFamilje",
"olympic.org",
"OoeGeschichte",
"Operabase",
"Ortsverzeichnis Bayern 1864",
"Ortsverzeichnis Bayern 1867",
"Ortsverzeichnis Bayern 1875",
"Ortsverzeichnis Bayern 1885",
"Ortsverzeichnis Bayern 1900",
"Ortsverzeichnis Bayern 1925",
"Ortsverzeichnis Bayern 1950",
"Ortsverzeichnis Bayern 1961",
"Ortsverzeichnis Bayern 1970",
"Ortsverzeichnis Bayern 1978",
"Ortsverzeichnis Bayern 1987",
"OxEncAncEgypt",
"OxfordDNB",
"Pagel-1901",
"paralympic.org",
"PfarrAlmanachProvinzSachsen1903",
"Pharmawiki",
"Philpapers.org",
"PhysHistNetw",
"Pierer-1857",
"PlanetMath",
"Polytechnisches Journal",
"Prozentbalken",
"RFC-Internet",
"Raketenstart",
"Rateyourmusic",
"RedListOfSouthAfricanPlants",
"Registrierungsdossier",
"RFC-Internet",
"Riemann Musiklexikon",
"RussStaatsLib",
"RöllEnzyklopädie",
"RömppOnline",
"SIKART",
"SUVA-MAK",
"SalmonsenLex",
"Salzburger Nachrichten",
"SammlungDunckerGrafik",
"Schuldatenbank Bayern",
"Schönstatt-Lexikon",
"ScotsPeerage",
"Sherdog",
"Songfacts",
"SoundCloud",
"Spiel des Jahres",
"SportsReference",
"Strem",
"Stumpf Bayern 2. Teil 1853",
"SvenskBioHandbok",
"SvenskEtymOrd",
"SvenskKonst",
"SvensktBioHandlexikon",
"SverigesStatsKal",
"SächsBib",
"SächsSchriftstLex",
"TCI Europe",
"TIBAV-Suche",
"Taktisches Zeichen",
"TheCanadianEncyclopedia",
"Thepeerage",
"ThiemeBecker",
"Topographia Franconiae",
"Toter Link",
"ToxBew",
"transText",
"Tutorial",
"Uebersicht Ortschaften Cöln",
"UNSC-Resolution",
"VennAlumniCa",
"Verstorbenensuche Wien",
"VerzDtDrucke",
"Vetpharm",
"Vollmer",
"Vorlagenfehler-Wartungskat",
"WasmuthsBaukunst",
"Webarchiv",
"WiBiLex",
"WinterthurGlossar",
"Wörterbuch Preußischer Staat",
"YouTube",
"yvng.yadvashem.org",
"ZDFmediathek",
"ZeitschrBauwesen",
"ZentralblBauverw",
"ZNaturforsch",
"Zuflussliste Tabellenkopf",
"Zuflussliste Tabellenzeile"
   ];   // .lang.p.dewiki.template.fresh.inHalf.raw 2024-01-25



   WSTM.lang.p.dewiki.template.fresh.inHalf.fiat  =  function ( adjust ) {
      // Perform "inline half"
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.p.dewiki.template.wikitext.inHalf
      //    .w.template.mod.furnish()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-08-08 PerfektesChaos@de.wikipedia
      WSTM.w.template.mod.furnish( adjust,
                                   WSTM.lang.templates.wikitext.inHalf );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.fresh.inHalf.fiat()



   WSTM.lang.p.dewiki.template.fresh.inHalf.find  =  function ( at ) {
      // Does this template request "inline half"?
      // Precondition:
      //    at  -- template name to be checked
      // Postcondition:
      //    Returns template name spelling if to be applied
      // Uses:
      //    >< .lang.p.dewiki.template.fresh.inHalf.hash
      //    >< .lang.p.dewiki.template.fresh.inHalf.raw
      //    .str.deCapitalize()
      // 2021-08-08 PerfektesChaos@de.wikipedia
      var that  =  WSTM.lang.p.dewiki.template.fresh.inHalf,
          i, r, s;
      if ( ! that.hash ) {
         that.hash  =  { };
         for ( i = 0;  i < that.raw.length;  i++ ) {
            that.hash[ that.raw[ i ] ]  =  true;
         }   // for i
         that.raw  =  false;
      }
      if ( typeof that.hash[ at ]  ===  "boolean" ) {
         r  =  at;
      } else {
         s  =  WSTM.str.deCapitalize( at );
         if ( typeof that.hash[ s ]  ===  "boolean" ) {
            r  =  s;
         }
      }
      return r;
   };   // .lang.p.dewiki.template.inHalf.find()



   WSTM.lang.p.dewiki.template.abruf  =  { };



   WSTM.lang.p.dewiki.template.abruf.def = {
      // false: Abruf   true: abruf
      "11Freunde":                                  false,
      "90minut":                                    false,
      "Acros":                                      false,
      "AIC.football.it":                            false,
      "Alfa":                                       false,
      "AlleBurgen":                                 false,
      "Allmusic":                                   false,
      "Amacad":                                     false,
      "AmNatBio":                                   false,
      "Arcinsys Hessen":                            true,
      "ARDAudiothek":                               false,
      "ASN":                                        false,
      "Astronautix":                                true,
      "AUF.org.uy":                                 false,
      "BarryHugmansFootballers":                    false,
      "Basketball-reference":                       false,
      "Bavarikon":                                  false,
      "BayernPortal Ortsteile":                     true,
      "BDFA.com.ar":                                false,
      "BDFutbol":                                   false,
      "Belgianfootball.be":                         false,
      "BibDOI":                                     false,
      "BibISBN":                                    false,
      "BibNatFrance":                               false,
      "BibOCLC":                                    false,
      "BibPMID":                                    false,
      "BiolFlor":                                   false,
      "BLO Ortsdatenbank":                          true,
      "BoardGameGeek":                              true,
      "BoslBayerBio":                               false,
      "BPDB":                                       false,
      "Brandenburgikon":                            true,
      "Britannica":                                 true,
      "BroadwayDB":                                 true,
      "Bürgermeisterwahl Kärnten Ref":              false,
      "Calbiochem":                                 false,
      "Carl Roth":                                  false,
      "CatalogOfFishes":                            false,
      "Catholic-hierarchy":                         false,
      "CELEX":                                      true,
      "ChemBlink":                                  false,
      "ChemicalBook":                               false,
      "ChemID":                                     false,
      "ChemSpider":                                 false,
      "Cinema":                                     true,
      "CITES":                                      false,
      "CLH-ECHA":                                   false,
      "CL Inventory":                               false,
      "ConsumerProductInfoDB":                      false,
      "CoRAP-Status":                               false,
      "Crew united Name":                           false,
      "Darts1.de":                                  false,
      "DBU.dk":                                     false,
      "Denkmalatlas Niedersachsen":                 false,
      "Denkmaldatenbank des Landes Sachsen":        false,
      "Deutsche Biographie":                        false,
      "DFB.de":                                     false,
      "DictAfriBio":                                false,
      "Discogs":                                    false,
      "DrugBank":                                   false,
      "Dwds.de":                                    false,
      "ECHA-InfoCard":                              false,
      "EDQM":                                       false,
      "Ebidat":                                     false,
      "Einwohner B Diagramm":                       false,
      "EIr":                                        false,
      "Elitefootball":                              false,
      "EncAlabama":                                 true,
      "Enciclopediadelcalcio":                      false,
      "EnciclopedieOnlineITA":                      false,
      "Encyclopedia of Life":                       false,
      "E-Nummer":                                   false,
      "ESPN.com":                                   false,
      "EUFootball":                                 false,
      "EU-LegisSum":                                true,
      "EU-Richtlinie":                              true,
      "EUR-Lex-Rechtsakt":                          true,
      "Europeana":                                  false,
      "EU-Verordnung":                              true,
      "Fallingrain":                                false,
      "FEMA":                                       false,
      "Femexfut":                                   false,
      "Fernsehserien.de":                           false,
      "FFF.fr":                                     false,
      "Fichier Décès":                              true,
      "FIFA.com":                                   false,
      "Filmdienst":                                 true,
      "Filmmakers":                                 false,
      "Filmportal":                                 true,
      "Findagrave":                                 false,
      "Fisher Scientific":                          false,
      "FISDB":                                      false,
      "FIS Event":                                  false,
      "Flexikon":                                   false,
      "Footballdatabase.eu":                        false,
      "ForaDeJogo":                                 false,
      "Fotbal.cz":                                  false,
      "Fotball.no":                                 false,
      "FuPa.net":                                   false,
      "Fussballdaten":                              false,
      "Fussballzz.de":                              false,
      "GCatholic":                                  false,
      "GedenkbuchJudenBundesarchiv":                false,
      "Gemeinderatswahl Burgenland Ref":            false,
      "Gemeinderatswahl Kärnten Ref":               false,
      "Gemeinderatswahl NÖ Ref":                    false,
      "Gemeinderatswahl Stmk Ref":                  false,
      "Gemeinderatswahl Tirol Ref":                 false,
      "GESTIS":                                     false,
      "GLAMOS":                                     false,
      "Global Terrorism Database":                  false,
      "GOV":                                        true,
      "Gnis":                                       false,
      "GRIN":                                       false,
      "GroveMedieval":                              false,
      "Haaretz online":                             true,
      "Handbook of Texas":                          false,
      "HdBG GKZ":                                   true,
      "Heise online":                               false,
      "HistLexBay":                                 false,
      "Historic-scotland":                          true,
      "HLFL":                                       false,
      "HLS":                                        false,
      "HMDB":                                       false,
      "Hns-cff.hr":                                 false,
      "HSDB":                                       false,
      "IATSportlerProfil":                          false,
      "ICSC":                                       false,
      "IDW-online":                                 false,
      "IMDb":                                       true,
      "Inchem":                                     false,
      "INCI":                                       false,
      "Infobox Einspielergebnis":                   false,
      "Infobox Gitarrenmodell":                     false,
      "InfoFlora":                                  false,
      "Internetquelle":                             true,
      "InvSchweizArch":                             false,
      "InvSchweizArch/Literatur":                   false,
      "IOC-Praktikum":                              false,
      "IsraelFootball":                             false,
      "JapNatFootballTeamDB":                       false,
      "J-League.or.jp":                             false,
      "JLeague.jp":                                 false,
      "JMK":                                        false,
      "Kicker":                                     false,
      "Kickersarchiv":                              false,
      "KLeague":                                    false,
      "KSI.is":                                     false,
      "KuLaDig":                                    false,
      "KulturDB-Trier":                             true,
      "KulturdenkmälerRP":                          false,
      "Kulturpool.at":                              true,
      "Kursbuchlink":                               false,
      "KürschnerGelehrt":                           false,
      "LAGIS":                                      true,
      "LamiaceaeKew":                               false,
      "laut.de":                                    false,
      "LdiF":                                       true,
      "Lequipe":                                    false,
      "Lex All Movie Guide":                        false,
      "Ligamx.net":                                 false,
      "Ligue1.com":                                 false,
      "Literatur":                                  false,
   // "London Gazette":
      "Luding":                                     true,
      "Merck":                                      false,
      "Merck Index":                                false,
      "Metacritic":                                 true,
      "Mindat":                                     false,
      "Mineralienatlas":                            false,
      "Miranda":                                    false,
      "MKlink":                                     true,
      "MobyGames":                                  true,
      "Modomics":                                   false,
      "Monumentale Eichen":                         false,
      "Nasabio":                                    true,
      "National Jukebox":                           false,
      "Natura 2000":                                false,
      "Natura2000-NRW":                             false,
      "NaturgefahrenGletscherVAW":                  false,
      "Netflix":                                    false,
      "NFSBIH.ba":                                  false,
      "NFTPlayer":                                  false,
      "NIST":                                       false,
      "NIST-ASD":                                   false,
      "NNDB Name":                                  false,
      "NSG-NRW":                                    false,
      "NSSDCA":                                     true,
      "NZS.si":                                     false,
      "OCC":                                        false,
      "ÖFB":                                        false,
      "OFDb":                                       true,
      "OffBroadwayDB":                              false,
      "Olympedia":                                  false,
      "OlympediaWettbewerb":                        false,
      "OlympicChannel":                             false,
      "OoeGeschichte":                              true,
      "OxEncAncEgypt":                              false,
      "OxfordDNB":                                  false,
      "Palloliitto":                                false,
      "Peakbagger":                                 false,
      "Peakbagger Range":                           false,
      "PFAF":                                       false,
      "Pharmawiki":                                 false,
      "PhysHistNetw":                               false,
   // "Plantsoftheworldonline.org":                 false,
      "PPDB":                                       false,
      "Philpapers.org":                             false,
      "Politicalgraveyard.com":                     false,
      "Premierliga.ru":                             false,
      "Prisma":                                     true,
      "ProfKat Hamburg":                            false,
      "PSM-Verz":                                   false,
      "SLGR.gr":                                    false,
      "REACH":                                      false,
   // "RedListOfSouthAfricanPlants":
      "Registrierungsdossier":                      false,
      "Reprezentacija.rs":                          false,
      "ReptileDatabase":                            true,
      "RFS.ru":                                     false,
      "Righteous.yadvashem.org":                    false,
      "RomanianSoccer":                             false,
      "RömppOnline":                                false,
      "Rotten Tomatoes":                            true,
      "RPPD Vw":                                    false,
      "Rsssf.com":                                  false,
      "Säbi":                                       false,
      "Salzburger Nachrichten":                     true,
      "Sambafoot":                                  false,
      "Santiebeati.it":                             false,
      "Schauspielervideos":                         false,
      "Schönstatt-Lexikon":                         false,
      "Schuldatenbank Bayern":                      true,
      "ScottishFA":                                 false,
      "SDBS":                                       false,
      "Sherdog":                                    false,
      "ShorttrackOnLine":                           false,
      "SIDS":                                       false,
      "Sigma-Aldrich":                              false,
      "SIKART":                                     false,
      "Soccerbase":                                 false,
      "Soccerdonna":                                false,
      "Soccerway":                                  false,
      "SportsReference":                            false,  // OBSOLETING
      "Songfacts":                                  false,
      "SRC":                                        false,
      "StatistikAustria Gemeindeänderungen":        true,
      "stolpersteine-berlin.de":                    false,
      "Strem":                                      false,
      "Superliga.dk":                               false,
      "SUVA-MAK":                                   false,
      "Svenskfotboll.se":                           false,
      "Synchronkartei":                             false,
      "TCI Europe":                                 false,
      "TCM Name":                                   false,
      "TCM Titel":                                  false,
      "Thaileague.co.th":                           false,
      "TheCanadianEncyclopedia":                    true,
      "Themoviedb.org":                             true,
      "Thepeerage":                                 false,
      "The-Sports":                                 false,
      "Tiris Naturdenkmal":                         true,
      "Tiroler Kunstkataster":                      true,
      "Topographia Franconiae":                     false,
      "TorontoResearch":                            false,
      "ToxBew":                                     false,
      "Trackfield":                                 false,
      "Transfermarkt":                              false,
      "Triathlon.org":                              false,
      "Tropicos":                                   false,
      "TürkFutbolFedDB":                            false,
      "TV Spielfilm":                               true,
      "UEFA.com":                                   false,
      "Vetpharm":                                   false,
      "Voetbalstats":                               false,
      "Wahlkreis Sachsen Ergebnis":                 false,
      "WCSP":                                       false,
      "Webelements":                                false,
      "Weltfussball":                               false,
      "WiBiLex":                                    false,
      "Wiener Wohnen":                              true,
      "WinterthurGlossar":                          false,
      "Worldreferee":                               false,
      "YouTube":                                    true,
      "ZDFmediathek":                               false
   };   // .lang.p.dewiki.template.abruf.def  2023-12-25



   WSTM.lang.p.dewiki.template.abruf.f  =  function ( adjust ) {
      // Parameter Abruf= standardisieren
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.p.dewiki.template.abruf.def
      //    .w.template.par.find()
      //    .o.WikiTom().fresh()
      //    .util.date.fetch()
      //    .util.date.format()
      // 2021-03-14 PerfektesChaos@de.wikipedia
      var e  =  WSTM.lang.p.dewiki.template.abruf.def,
          s  =  adjust.values[ 0 ].symbol,
          lift, low;
      if ( typeof e[ s ]  ===  "boolean" ) {
         low  =  e[ s ];
         s    =  ( low ? "abruf" : "Abruf" );
         e    =  WSTM.w.template.par.find( adjust, "Abruf" );
         if ( e ) {
            lift  =  low;
         } else {
            e  =  WSTM.w.template.par.find( adjust, "abruf" );
            if ( e ) {
               lift  =  ! low;
            } else {
               e  =  WSTM.w.template.par.find( adjust, "Zugriff" );
               if ( e ) {
                  lift  =  true;
               } else {
                  e  =  WSTM.w.template.par.find( adjust, "zugriff" );
                  if ( e ) {
                     lift  =  true;
                  }
               }
            }
         }
         if ( e ) {
            if ( lift ) {
               e.symbol  =  s;
               adjust.fresh( false );
            }
            if ( typeof e.value.source  ===  "string" ) {
               s  =  WSTM.util.date.fetch( e.value.source, true, "de" );
               if ( s ) {
                  e.value.source  =  WSTM.util.date.format( s, 3 );
                  adjust.fresh( false );
               }
            }
         }
      }
   };   // .lang.p.dewiki.template.abruf.f()



   WSTM.lang.p.dewiki.template.allmusic  =  { def: false };


   WSTM.lang.p.dewiki.template.allmusic.raw  =  [
      [ "Allmusic",                    "Allmusic" ],
      [ "(?:1|Rubrik)",                "Rubrik",    false ],
      [ "(?:2|ID)",                    "ID",        true ],
      [ "(?:3|Linktext)",              "Linktext",  false ],
      [ "Autor",                       "Autor",     false ],
      [ "(?:Abruf|Download|zugriff)",  "Abruf",     false ]
                                                ];



   WSTM.lang.p.dewiki.template.allmusic.f  =  function ( adjust ) {
      // Vorlage:Allmusic
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.p.dewiki.template.allmusic.raw
      //    >< .lang.p.dewiki.template.allmusic.def
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .w.template.par.find()
      //    .util.date.fetch()
      //    .o.WikiTom().fresh()
      // 2023-05-08 PerfektesChaos@de.wikipedia
      var that  =  WSTM.lang.p.dewiki.template.allmusic,
          e, i, got, s, s2;
      if ( ! that.def ) {
         that.def  =  [ ];
         for ( i = 0;  i < that.raw.length;  i++ ) {
            got       =  that.raw[ i ];
            s         =  "^" + got[ 0 ] + "$";
            got[ 0 ]  =  new RegExp( s, "i" );
            that.def.push( got );
         }   // for i
      }
      WSTM.w.template.par.fix( that.def, adjust );
      WSTM.w.template.par.fixed( that.def, adjust );
      e  =  WSTM.w.template.par.find( adjust, "Rubrik" );
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            s2  =  s.toLowerCase();
            if ( s2 === "albums" ) {
               s2  =  "album";
            }
            if ( s2 === "artists" ) {
               s2  =  "artist";
            }
            if ( s2 !== s ) {
               e.value.source  =  s2;
            }
         }
      }
      e  =  WSTM.w.template.par.find( adjust, "ID" );
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            s2  =  s.toLowerCase();
            if ( typeof that.re  !==  "object" ) {
               that.re  =  new RegExp( "^ *[a-z]+-[a-z]+[-a-z]+[a-z]+-" +
                                        "(m[cntw]000[0-9]+)\\s*$" );
            }
            got  =  that.re.exec( s2 );
            if ( got  &&  got[ 1 ] ) {
               s2  =  got[ 1 ];
            }
            if ( s2 !== s ) {
               e.value.source  =  s2;
            }
         }
      }
      e  =  WSTM.w.template.par.find( adjust, "Abruf" );
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            s2  =  WSTM.util.date.fetch( s, true, WSTM.g.wPageLang );
            if ( s2 ) {
               s2  =  WSTM.util.date.format( s2, 3 );
               if ( s2 !== s ) {
                  e.value.source  =  s2;
               }
            }
         }
      }
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.allmusic.f()



   WSTM.lang.p.dewiki.template.anker  =  function ( adjust ) {
      // Vorlage:Anker
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .str.trim()
      //    .errors.found()
      //    .o.WikiTom().fresh()
      // 2020-01-11 PerfektesChaos@de.wikipedia
      var collect  =  [ false, false, false ],
          launch   =  false,
          lift     =  false,
          loc      =  true,
          noname   =  0,
          values   =  [ ],
          i, k, l, s, v;
      for ( i = 1;  i < adjust.values.length;  i++ ) {
         v  =  adjust.values[ i ];
         s  =  v.symbol.substr( 0, 1 );
         l  =  ( s === "x" );
         if ( s === "-"  ||  l ) {
            k  =  1;
            launch  =  ( launch  ||  l );
         } else {
            k  =  s.charCodeAt( 0 );
            if ( k >= 48  &&  k <= 57 ) {
               k  =  0;
            } else {
               k  =  2;
            }
         }
         if ( typeof v.value  ===  "object"
              &&     v.value   &&
              typeof v.value.source  ===  "string" ) {
            v.value.source  =  WSTM.str.trim( v.value.source,
                                              true,
                                              true );
            if ( ! v.value.source ) {
               v     =  false;
               lift  =  true;
            }
         }
         if ( v ) {
            collect[ k ]  =  collect[ k ]  ||  [ ];
            collect[ k ].push( v );
         }
      }   // for i
      if ( collect[ 2 ] ) {
         WSTM.errors.found( "templateParInvalid", false, "{{Anker}}" );
      } else if ( !   ( collect[ 0 ]  ||  collect[ 1 ] ) ) {
         WSTM.errors.found( "templateParMissing", false, "{{Anker}}" );
      } else if ( launch ) {
         loc     =  true;
         noname  =  0;
         values  =  [ ];
         v       =  adjust.values[ 0 ];
         values.push( v );
         for ( k = 0;  k < 2;  k++ ) {
            if ( collect[ k ] ) {
               for ( i = 0;  i < collect[ k ].length;  i++ ) {
                  v  =  collect[ k ][ i ];
                  switch ( k ) {
                     case 0:
                        s  =  ( i + 1 )  +  "";
                        if ( loc ) {
                           if ( typeof v.value  ===  "object"
                                &&     v.value   &&
                                typeof v.value.source  ===  "string" ) {
                              loc  =  ( v.value.source.indexOf( "=" )
                                                                  <  0 );
                              if ( loc ) {
                                 noname++;
                                 adjust.lazy  =  true;
                              }
                           } else {
                              loc  =  false;
                           }
                        }
                        v.location  =  loc;
                        if ( s !== v.symbol ) {
                           v.symbol     =  s;
                           lift         =  true;
                           adjust.lazy  =  true;
                        }
                        break;
                     case 1:
                        s  =  "-" + ( i + 1 );
                        if ( s !== v.symbol ) {
                           v.symbol  =  s;
                           lift      =  true;
                        }
                        break;
                  }   // switch k
                  values.push( v );
               }   // for i
            }
         }   // for k
         if ( lift ) {
            adjust.values  =  values;
            adjust.noname  =  noname;
            adjust.fresh( false );
         }
      }
   };   // .lang.p.dewiki.template.anker()



   WSTM.lang.p.dewiki.template.arabischeSchrift  =  function ( adjust ) {
      // Vorlage:Arabische Schrift
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.p.dewiki.template.rtl.langs
      //    .w.template.par.find()
      //    .str.trim()
      //    .w.template.mod.flush()
      //    .lang.p.dewiki.template.rtl.fire()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-06-26 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "1" ),
          s, rtl;
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            e  =  WSTM.w.template.par.find( adjust, "2" );
            if ( e ) {
               s  =  e.flat();
               if ( s ) {
                  s  =  WSTM.str.trim( s, true, true );
               }
            } else {
               s  =  "-";
            }
            rtl  =  WSTM.lang.p.dewiki.template.rtl;
            if ( rtl.langs.indexOf( "|" + s + "|" )  >=  0 ) {
               adjust.values[ 0 ].symbol  =  s;
               if ( e ) {
                  WSTM.w.template.mod.flush( adjust,
                                             [ [ "^2$",  true ] ] );
               }
               rtl.fire( adjust );
            }
         }
      }
   };   // .lang.p.dewiki.template.arabischeSchrift()




   WSTM.lang.p.dewiki.template.arbeiterztg  =  { };



   WSTM.lang.p.dewiki.template.arbeiterztg.def  =  [
           [/Arbeiterzeitung/i,  "Arbeiterzeitung"],
           [/^Autor$/i,          "Autor",      false],
           [/^(Titel|1)$/i,      "Titel",      true],
           [/^Datum$/i,          "Datum",      true],
           [/^(Seiten?|5)$/i,    "Seite",      true],
           [/^(Beilage|6)$/i,    "Beilage",    false],
           [/^POS$/i,            "POS",        false],
           [/^2$/,               "Jahr",       false],
           [/^3$/,               "Monat",      false],
           [/^4$/,               "Tag",        false] ];



   WSTM.lang.p.dewiki.template.arbeiterztg.f  =  function ( adjust ) {
      // Vorlage:Arbeiterzeitung
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.p.dewiki.template.arbeiterztg.def
      //    .w.template.par.fix()
      //    .lang.p.dewiki.template.datumJJJJMonTT.fix()
      //    .w.template.par.fixed()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-08-08 PerfektesChaos@de.wikipedia
      var d  =  WSTM.lang.p.dewiki.template.arbeiterztg.def;
      WSTM.w.template.par.fix( d, adjust );
      WSTM.lang.p.dewiki.template.datumJJJJMonTT.fix( adjust );
      WSTM.w.template.par.fixed( d, adjust );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.arbeiterztg.f()



   WSTM.lang.p.dewiki.template.archiveOrg  =  { };



   WSTM.lang.p.dewiki.template.archiveOrg.f  =  function ( adjust ) {
      // Vorlage:archive.org
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .w.template.mod.flush()
      //    .str.trim()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-08-08 PerfektesChaos@de.wikipedia
      var e     =  WSTM.w.template.par.find( adjust, "Fragment" ),
          that  =  WSTM.lang.p.dewiki.template.archiveOrg,
          got, link, s;
      if ( e ) {
         s  =  e.flat();
         if ( s  &&  s.substr( 0, 5 ) === "page/" ) {
            if ( typeof that.rePage  !==  "object" ) {
               that.rePage  =  new RegExp( "^page/(n?[0-9]+)" +
                                            "(?:/mode/[12]up)?$" );
            }
            got  =  that.rePage.exec( s );
            if ( got ) {
               WSTM.w.template.par.fiat( adjust, "Blatt",  got[ 1 ] );
               WSTM.w.template.mod.flush( adjust,
                                          [ [ /^Fragment$/,  true ] ] );
               link  =  true;
            }
         } else if ( s === "mode/2up"  ||
                     s === "mode/1up"  ||
                     WSTM.str.trim( s )  ===  "" ) {
            WSTM.w.template.mod.flush( adjust,
                                       [ [ /^Fragment$/,  true ] ] );
         }
      }
      e  =  WSTM.w.template.par.find( adjust, "Ausgabe" );
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            switch ( WSTM.str.trim( s ) ) {
               case "DS":
                  if ( ! link ) {
                     e  =  WSTM.w.template.par.find( adjust, "Blatt" );
                     if ( e ) {
                        s  =  e.flat();
                        if ( s ) {
                           link  =  WSTM.str.trim( s );
                        }
                     }
                  }
                  s  =  ( link ? "" : "-" );
                  break;
               case "DT":
                  break;
               default:
                  s  =  "";
            }   // switch trim( Ausgabe )
         }
         if ( s === "" ) {
            WSTM.w.template.mod.flush( adjust,
                                       [ [ /^Ausgabe$/,  true ] ] );
         }
      }
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.archiveOrg.f()



   WSTM.lang.p.dewiki.template.attrStd  =  { };



   WSTM.lang.p.dewiki.template.attrStd.f  =  function ( adjust ) {
      // Unquote HTML standard parameter values
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >< .lang.p.dewiki.template.attrStd.reBeg
      //    >< .lang.p.dewiki.template.attrStd.reEnd
      //    .w.template.par.find()
      //    .w.template.par.fiat()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2020-10-02 PerfektesChaos@de.wikipedia
      var props  =  [ "class", "colspan", "dir", "id", "rowspan",
                      "style" ],
          e, i, s, shift, sign, that;
      for ( i = 0;  i < props.length;  i++ ) {
         sign  =  props[ i ];
         e     =  WSTM.w.template.par.find( adjust, sign );
         if ( e ) {
            s  =  e.flat();
            if ( s ) {
               that  =  WSTM.lang.p.dewiki.template.attrStd;
               if ( typeof that.reBeg  !==  "object" ) {
                  that.reBeg  =  new RegExp( "^\\s*[' \"]+\\s*(.+)" );
                  that.reEnd  =  new RegExp( "(.+)\\s*['\"]+(\\s*)$" );
               }
               shift  =  s.replace( that.reBeg, "$1" )
                          .replace( that.reEnd, "$1$2" );
               if ( shift !== s ) {
                  WSTM.w.template.par.fiat( adjust, sign, shift );
                  adjust.fresh( false );
               }
            }
         }
      }   // for i
   };   // .lang.p.dewiki.template.attrStd.f()



   WSTM.lang.p.dewiki.template.belegeFehlen  =  function ( adjust ) {
      // Vorlage:Belege fehlen
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.fix()
      //    .w.template.par.find()
      //    .w.template.par.fiat()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2020-07-26 PerfektesChaos@de.wikipedia
      var d =  [ [ /^3$/,  "Plural",  true] ],
          e, s;
      WSTM.w.template.par.fix( d, adjust );
      e  =  WSTM.w.template.par.find( adjust, "Plural" );
      if ( e ) {
         s  =  e.flat();
         if ( s  &&  s.toUpperCase() === "P" ) {
            WSTM.w.template.par.fiat( adjust, "Plural", "1" );
         }
      }
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.belegeFehlen()



   WSTM.lang.p.dewiki.template.bibISBN  =  { re: false };



   WSTM.lang.p.dewiki.template.bibISBN.redirect  =  {
"3161473951": "3161473957",
"3161483608": "316148360X",
"3406022494": "3406022499",
"3406528675": "3406528678",
"3406530449": "3406530443",
"3412260712": "3412260711",
"3428103836": "3428103831",
"3452246790": "3452246795",
"3540298694": "354029869X",
"3631321614": "3631321619",
"3769400687": "3769400682",
"3769409383": "3769409388",
"3800510023": "3800510022",
"3805909341": "3805907842",
"3811431119": "3811431110",
"3811433021": "3811433024",
"3811451223": "3811451227",
"3828883628": "3828883621",
"3899492323": "3899492315",
"3938616642": "3938616644",
"1405151429": "9781405151429",
"3110190567": "9783110190564",
"3320021306": "9783320021306",
"3406458620": "9783406458620",
"3406661198": "9783406661198",
"3406667381": "9783406667381",
"3406668869": "9783406668869",
"3406670008": "9783406670008",
"3406688157": "9783406688157",
"3406690246": "9783406690242",
"3452280459": "9783452280459",
"3472090007": "9783472090007",
"3770129369": "9783770129362",
"3770143140": "9783770143146",
"377014385X": "9783770143856",
"3800164345": "9783818600648",
"3800637317": "9783800637300",
"3800644940": "9783800644940",
"3800646647": "9783800646647",
"3832966614": "9783832966614",
"3832971298": "9783832971298",
"3848208032": "9783848208036",
"3848702909": "9783848702909",
"3848714414": "9783848714414",
"3937783291": "9783937783291",
"8789430115": "9788789430119",
"9781402005985": "1402005989",
"9783000207037": "3770052242",
"9783110013511": "3110013517",
"9783406531347": "3406531342",
"9783406552069": "3406552064",
"9783440107461": "3440107469",
"9783486579567": "3486579568",
"9783517069777": "3517069779",
"9783613024816": "3613024812",
"9783776623178": "3776623179",
"9783795417628": "3795417627",
"9783799551748": "3799551743",
"9783799551755": "3799551751",
"9783803124500": "3803134506",
"9783804721784": "3804721788",
"9783811360839": "3811360833",
"9783828953338": "3828953336",
"9783835100466": "3835100467",
"9783861348092": "3861348098",
"9783865681157": "3865681158",
"9783877103296": "3877103294",
"9783882941623": "3882941626",
"9783884620816": "3884620819",
"9783884621004": "3884621009",
"9783884621103": "3884621106",
"9783884621196": "388462119X",
"9783895701078": "3895701076",
"9783896241108": "3896241109",
"9783939390008": "3939390003",
"9783406735806": "9783406705373",
"9783446430471": "9783446413252",
"9783452271495": "9783452271358",
"9783811440187": "9783811440180",
"9783811443100": "9783811443105"
   };    // .lang.p.dewiki.template.bibISBN.redirect   2024-01-06
/*
https://de.wikipedia.org/w/api.php?action=query&format=json
   &list=allredirects&arnamespace=10&arprefix=BibISBN/&arlimit=300
*/



   WSTM.lang.p.dewiki.template.bibISBN.f  =  function ( adjust ) {
      // Vorlage:Britannica 1911
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .util.isbn.format()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2022-10-18 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "1" ),
          s, sISBN, that, trial;
      if ( e ) {
         sISBN  =  e.flat();
         if ( sISBN ) {
            that  =  WSTM.lang.p.dewiki.template.bibISBN;
            if ( sISBN.indexOf( "-" ) > 0 ) {
               if ( ! that.re ) {
                  that.re  =  new RegExp( "-", "g" );
               }
               sISBN  =  sISBN.replace( that.re, "" );
            }
            s  =  that.redirect[ sISBN ];
            if ( s ) {
               sISBN  =  s;
            }
            trial  =  WSTM.util.isbn.format( sISBN );
            if ( trial  &&
                 trial[ 0 ]  &&
                 trial[ 1 ] !== e.value.source ) {
               e.value.source  =  trial[ 1 ];
               adjust.fresh( false );
            }
         }
      }
      e  =  WSTM.w.template.par.find( adjust, "format" );
      if ( e ) {
         s  =  e.flat();
         if ( s === "Literatur" ) {
            WSTM.w.template.mod.flush( adjust,
                                       [ [ "^format$",  true ] ] );
            adjust.fresh( false );
         }
      }
   };   // .lang.p.dewiki.template.bibISBN.f()



   WSTM.lang.p.dewiki.template.britannica1911  =  { };



   WSTM.lang.p.dewiki.template.britannica1911.def  =  [
           [/Britannica 1911/i,  "Britannica 1911"],
           [/^Autor$/i,          "Autor",       false],
           [/^(?:Lemma|4)$/i,    "Lemma",       true],
           [/^Klammer$/i,        "Klammer",     false],
           [/^(?:Band|1)$/i,     "Band",        true],
           [/^(?:Seiten?|2)$/i,  "Seite",       true],
           [/^SeiteBis$/i,       "SeiteBis",    false],
           [/^Abschnitt$/i,      "Abschnitt",   false],
           [/^Kommentar$/i,      "Kommentar",   false],
           [/^wikisource$/i,     "wikisource",  false] ];



   WSTM.lang.p.dewiki.template.britannica1911.f  =  function ( adjust ) {
      // Vorlage:Britannica 1911
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.p.dewiki.template.britannica1911.def
      //    .w.template.par.find()
      //    .str.trim()
      //    .w.template.mod.flush()
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .w.template.mod.flush()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-08-08 PerfektesChaos@de.wikipedia
      var d  =  WSTM.lang.p.dewiki.template.britannica1911.def,
          e  =  WSTM.w.template.par.find( adjust, "wikisource" );
      if ( e   &&
           typeof e.value  ===  "object"
           &&     e.value   &&
           typeof e.value.source  ===  "string"   &&
           WSTM.str.trim( e.value.source, true, true )  ===  "1" ) {
         WSTM.w.template.mod.flush( adjust,
                                    [ [ "^wikisource$",  true ] ] );
      }
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      e  =  WSTM.w.template.par.find( adjust, "3" );
      if ( e ) {
         WSTM.w.template.mod.flush( adjust,  [ [ "^3$",  true ] ] );
      }
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.britannica1911.f()



   WSTM.lang.p.dewiki.template.brockhaus1837  =  function ( adjust ) {
      // Vorlage:Brockhaus-1837
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .w.template.mod.flush()
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .lang.p.dewiki.template.seiteBis()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2024-02-01 PerfektesChaos@de.wikipedia
      var d  =  [ [/^Brockhaus-1837$/i,  "Brockhaus-1837"],
                  [/^Lemma|spezialkapitel$/i,  "Lemma",           true],
                  [/^BK-Nummer$/i,             "BK-Nummer",       false],
                  [/^Eintragsnummer$/i,        "Eintragsnummer",  false],
                  [/^(?:1|Band)$/i,            "Band",            true],
                  [/^(?:2|Seiten?)$/i,         "Seite",           true],
                  [/^(?:3|SeiteBis)$/i,        "SeiteBis",        false],
                  [/^Kommentar$/i,             "Kommentar",       false],
                  [/^zenoID$/i,                "zenoID",          true],
                  [/^kapiteltext$/i,           "kapiteltext",     false]
                ];
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      WSTM.lang.p.dewiki.template.seiteBis( adjust );
   };   // .lang.p.dewiki.template.brockhaus1837()



   WSTM.lang.p.dewiki.template.brockhaus1911  =  function ( adjust ) {
      // Vorlage:Brockhaus-1911
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .w.template.mod.flush()
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .lang.p.dewiki.template.seiteBis()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2024-02-01 PerfektesChaos@de.wikipedia
      var d  =  [ [/^Brockhaus-1911$/i,  "Brockhaus-1911"],
                  [/^Lemma|spezialkapitel$/i,  "Lemma",           true],
                  [/^BK-Nummer$/i,             "BK-Nummer",       false],
                  [/^Eintragsnummer$/i,        "Eintragsnummer",  false],
                  [/^(?:1|Band)$/i,            "Band",            true],
                  [/^(?:2|Seiten?)$/i,         "Seite",           true],
                  [/^(?:3|SeiteBis)$/i,        "SeiteBis",        false],
                  [/^Kommentar$/i,             "Kommentar",       false],
                  [/^zenoID$/i,                "zenoID",          true],
                  [/^kapiteltext$/i,           "kapiteltext",     false]
                ],
          e  =  WSTM.w.template.par.find( adjust, "kurz" );
      if ( e ) {
         WSTM.w.template.mod.flush( adjust,   [ [ "^kurz$",  true ] ] );
      }
      e  =  WSTM.w.template.par.find( adjust, "hervorhebung" );
      if ( e ) {
         WSTM.w.template.mod.flush( adjust,   [ [ "^hervorhebung$",
                                                  true ] ] );
      }
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      WSTM.lang.p.dewiki.template.seiteBis( adjust );
   };   // .lang.p.dewiki.template.brockhaus1911()



/*
   WSTM.lang.p.dewiki.template.danskBio  =  { };



   WSTM.lang.p.dewiki.template.danskBio.def  =  [
           [/danskBio/,     "DanskBio"],
           [/^Autor$/i,     "Autor",      false],
           [/^Lemma$/i,     "Lemma",      true],
           [/^Band$/i,      "Band",       true],
           [/^Seite$/i,     "Seite",      true],
           [/^SeiteBis$/i,  "SeiteBis",   false],
  //       [/^Tafel$/i,     "Tafel",      false],
           [/^Kommentar$/i, "Kommentar",  false] ];



   WSTM.lang.p.dewiki.template.danskBio.fetch  =  function ( aVol,
                                                             aPage ) {
      // Retrieve bibliographics from runeberg.org/dbl key values
      // Precondition:
      //    aVol   -- volume number
      //    aPage  -- sheet number
      // Postcondition:
      //    Returns false, or object
      //                      .volume     -- volume number
      //                      .seite      -- page number or false
      //                      .seiteEnd   -- page number or false
      //                      .page       -- sheet number or false
      // Uses:
      //    this
      //    >  .lang.p.dewiki.template.danskBio.pages
      // 2018-02-22 PerfektesChaos@de.wikipedia
      var  r  =  false,
           block, j, m, vol;
      if ( aVol <= 19 ) {
         m    =  aVol - 1;
         vol  =  this.pages[ 0 ][ m ];
         r    =  { volume:   aVol,
                   seite:    false,
                   seiteEnd: false,
                   page:     false };
         block  =  vol[ 0 ];
         j      =  aPage - block[ 2 ];
         if ( j <= block[ 1 ]  &&
              j >= block[ 0 ] ) {
            r.seite  =  j;
         }
         if ( ! r.seite ) {
            r.page  =  aPage;
         }
      }
      return  r;
   };   // .lang.p.dewiki.template.danskBio.fetch()



   WSTM.lang.p.dewiki.template.danskBio.fill  =  function ( access ) {
      // Create {{DanskBio}}
      // Precondition:
      //    access  -- string, runeberg.org/dbl URL
      // Postcondition:
      //    Returns false, or string with transclusion
      // Uses:
      //    .lang.p.dewiki.template.danskBio.foreign()
      // 2018-02-20 PerfektesChaos@de.wikipedia
      var o  =  this.foreign( access ),
          r;
      if ( o ) {
         r  =  "{{DanskBio |Autor= |Lemma= |Band=";
         if ( typeof o.volume  ===  "number" ) {
            r  =  r + o.volume;
         }
         r  =  r + " |Seite=";
         if ( typeof o.seite  ===  "number" ) {
            r  =  r + o.seite;
         }
         r  =  r + " |SeiteBis=}}";
      }
      return  r;
   };   // .lang.p.dewiki.template.danskBio.fill()



   WSTM.lang.p.dewiki.template.danskBio.foreign  =  function (access) {
      // Retrieve bibliographics from runeberg.org/dbl
      // Precondition:
      //    access  -- string, runeberg.org/dbl URL
      // Postcondition:
      //    Returns false, or object
      //                      .volume     -- volume number
      //                      .seite      -- page number or false
      // Uses:
      //    this
      //    .lang.p.dewiki.template.danskBio.fetch()
      // 2018-04-19 PerfektesChaos@de.wikipedia
      var re   =  new RegExp( "//runeberg\\.org/dbl/"
                              + "(1?[0-9])"
                              + "/0*"
                              + "([1-9][0-9]*)"
                              + "\\.html$" ),
          got  =  re.exec( access ),
          i, j, r;
      if ( got ) {
         i  =  parseInt( got [ 1 ], 10 );
         j  =  parseInt( got [ 2 ], 10 );
         r  =  this.fetch( i, j );
      } else {
         // http://runeberg.org/dbl/19/zeuthhig.html
         re   =  new RegExp( "//runeberg\\.org/dbl/"
                              + "(1?[0-9])"
                              + "([a-z]+)"
                              + "\\.html$" );
         got  =  re.exec( access );
         if ( got ) {
            i  =  parseInt( got [ 1 ], 10 );
            r  =  this.fetch( i, 0 );
            r.runeberg  =  got [ 2 ];
         }
      }
      return  r;
   };   // .lang.p.dewiki.template.danskBio.foreign()



   WSTM.lang.p.dewiki.template.danskBio.format  =  function ( adjust ) {
      // Vorlage:DanskBio
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    this
      //    >  .lang.p.dewiki.template.danskBio.def
      //    .w.template.par.fixed()
      //    .w.template.mod.furnish()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-08-08 PerfektesChaos@de.wikipedia
      WSTM.w.template.par.fixed( WSTM.lang.p.dewiki.template.danskBio.def,
                                 adjust );
      adjust.values[0].symbol  =  "DanskBio";
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.danskBio.format()



   WSTM.lang.p.dewiki.template.danskBio.pages  =  [
        [ [ [ 1,  616, 18 ] ],    //  1
          [ [ 1,  644,  2 ] ],    //  2
          [ [ 1,  640,  2 ] ],    //  3
          [ [ 1,  646,  2 ] ],    //  4
          [ [ 1,  628,  2 ] ],    //  5
          [ [ 1,  641,  2 ] ],    //  6
          [ [ 1,  606,  2 ] ],    //  7
          [ [ 1,  642,  2 ] ],    //  8
          [ [ 1,  644,  2 ] ],    //  9
          [ [ 1,  626,  2 ] ],    // 10
          [ [ 1,  644,  2 ] ],    // 11
          [ [ 1,  646,  2 ] ],    // 12
          [ [ 1,  628,  2 ] ],    // 13
          [ [ 1,  636,  2 ] ],    // 14
          [ [ 1,  624,  2 ] ],    // 15
          [ [ 1,  628,  2 ] ],    // 16
          [ [ 1,  636,  2 ] ],    // 17
          [ [ 1,  632,  2 ] ],    // 18
          [ [ 1,  484, 90 ] ] ]   // 19
   ];   // .lang.p.dewiki.template.danskBio.pages
*/



   WSTM.lang.p.dewiki.template.datum  =  function ( adjust ) {
      // Vorlage:Datum
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .str.re.yyyy
      //    >  .lang.l.de.date.monFull
      //    >  .o.WikiTom.TextOnly
      //    >  .lang.templates.wikitext.inline
      //    >< .lang.p.dewiki.template.re
      //    >< .lang.p.dewiki.template.re.yyyy
      //    >< lang.p.dewiki.template.reDig
      //    >< lang.p.dewiki.template.reMonths
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .w.template.par.find()
      //    .str.trim()
      //    .w.template.mod.furnish()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2020-03-07 PerfektesChaos@de.wikipedia
      var d =  [ [ /^(?:tag|day)$/i,      "1",  true],
                 [ /^(?:monat|month)$/i,  "2",  true],
                 [ /^(?:jahr|year)$/i,    "3",  true] ],
          e1, e2, e3, ek, i, o, source, s1, s2, s3, that;
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      e3  =  WSTM.w.template.par.find( adjust, "3" );
      if ( e3 ) {
         s3  =  e3.flat();
         if ( s3 ) {
            s3  =  WSTM.str.trim( s3, true, true );
            if ( typeof WSTM.lang.p.dewiki.template.re  !==  "object" ) {
               WSTM.lang.p.dewiki.template.re  =  { };
            }
            if ( typeof WSTM.lang.p.dewiki.template.re.yyyy
                                                        !==  "object" ) {
               WSTM.lang.p.dewiki.template.re.yyyy
                             =  new RegExp("^" + WSTM.str.re.yyyy + "$");
            }
            if ( s3   &&
                 !  WSTM.lang.p.dewiki.template.re.yyyy.test( s3 ) ) {
               s3  =  false;
            }
         }
         if ( s3 ) {
            e2  =  WSTM.w.template.par.find( adjust, "2" );
            if ( e2 ) {
               that  =  WSTM.lang.p.dewiki.template;
               if ( typeof that.reDig  !==  "object" ) {
                  that.reDig  =  new RegExp( "^[0-3]?[0-9]\\.?$" );
               }
               s2  =  e2.flat();
               if ( s2 ) {
                  s2  =  WSTM.str.trim( s2, true, true );
                  if ( that.reDig.test( s2 ) ) {
                     i  =  parseInt( s2, 10 );
                  } else {
                     if ( typeof that.reMonths  !==  "object" ) {
                        that.reMonths  =  new RegExp( "^[ADFJMNOS]" );
                     }
                     if ( that.reMonths.test( s2 ) ) {
                        i  =  WSTM.util.date.find( s2,
                                                   WSTM.lang.l.de.date );
                        i  =  i || 0;
                     } else {
                        i  =  0;
                     }
                  }
                  if ( i >= 1  &&  i <= 12 ) {
                     e1  =  WSTM.w.template.par.find( adjust, "1" );
                     ek  =  WSTM.w.template.par.find( adjust,
                                                      "kurz" );
                     if ( ek ) {
                        d   =  { year:  parseInt( s3, 10 ),
                                 month: i };
                        o   =  [ "de", false, 1, 2 ];
                        s2  =  WSTM.lang.l.de.date.format( d, o );
                        s2  =  s2.substr( 0, 4 );
                     } else {
                        s2  =  WSTM.lang.l.de.date.monFull[ i ];
                     }
                  } else {
                     s3  =  false;
                  }
                  if ( s3 && e1 ) {
                     s1  =  e1.flat();
                     if ( s1 ) {
                        s1  =  WSTM.str.trim( s1, true, true );
                        if ( that.reDig.test( s1 ) ) {
                           i  =  parseInt( s1, 10 );
                           if ( i >= 1  &&  i <= 31 ) {
                              s1  =  i + ". ";
                           } else {
                              s3  =  false;
                           }
                        } else {
                           s3  =  false;
                        }
                     }
                  }
               }
            }
         }
         if ( s3 ) {
            source  =  s3;
            if ( s2 ) {
               source  =  s2 + " " + source;
               if ( s1 ) {
                  source  =  s1 + source;
               }
            }
         }
      } else {
         e2  =  WSTM.w.template.par.find( adjust, "2" );
         if ( e2 ) {
            s2  =  e2.flat();
            if ( ! s2 ) {
               source  =  "";
            }
         }
      }
      if ( typeof source  ===  "string" ) {
         adjust.children  =  null;
         adjust.symbol    =  null;
         adjust.values    =  null;
         adjust.lookup    =  false;
         adjust.source    =  source;
         adjust.mode      =  WSTM.o.WikiTom.TextOnly;
         adjust.fresh( false );
      } else {
         WSTM.w.template.mod.furnish( adjust,
                                      WSTM.lang.templates.wikitext.inline
                                    );
      }
   };   // .lang.p.dewiki.template.datum()



   WSTM.lang.p.dewiki.template.datumJJJJMonTT  =  { };



   WSTM.lang.p.dewiki.template.datumJJJJMonTT.fix  =  function (adjust) {
      // Parameterzuweisung Jahr= Monat= Tag= migrieren
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    this
      //    >  .lang.l.de.date
      //    >  .lang.l.en.date
      //    >  .str.re.yyyy
      //    >< .lang.p.dewiki.template.re
      //    >< .lang.p.dewiki.template.re.yyyy
      //    .w.template.par.find()
      //    .o.WikiTom().fresh()
      //    .util.date.fetch()
      //    .util.date.format()
      //    .util.date.find()
      //    .str.parseIntNumber()
      //    .w.template.par.fiat()
      //    .w.template.mod.flush()
      // Postcondition:
      //    Returns true if minor change
      // 2019-11-20 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "Datum" ),
          g, i, launch, sD, sJ, sM, sT;
      if ( e ) {
         sD  =  e.flat();
         if ( sD ) {
            g  =  WSTM.util.date.fetch( sD, true, "de" );
            if ( g ) {
               sD  =  WSTM.util.date.format( g, 3 );
               if ( sD !== e.value.source ) {
                  e.value.source  =  sD;
                  adjust.fresh( false );
               }
            }
         }
      }
      if ( ! sD ) {
         e  =  WSTM.w.template.par.find( adjust, "Jahr" );
         if ( e ) {
            sJ  =  e.flat();
            if ( sJ ) {
               sJ  =  WSTM.str.trim( sJ, true, true );
            } else if ( typeof e.value  ===  "object"   &&
                        typeof e.value.children  ===  "object"  &&
                        e.value.children.length === 3  &&
                        e.value.children[ 1 ].mode ===
                                              WSTM.o.WikiTom.LinkWiki  &&
                        typeof e.value.children[ 1 ].source
                                                        ===  "string" ) {
               sJ  =  e.value.children[ 1 ].source;
            }
         }
      }
      if ( sJ ) {
         g  =  WSTM.util.date.fetch( sJ, true, "de" );
         if ( g ) {
            sJ  =  WSTM.util.date.format( g, 3 );
            if ( sJ.length > 4 ) {
               if ( ! WSTM.w.template.par.find( adjust, "Monat" ) ) {
                  sD      =  sJ;
                  launch  =  true;
                  sJ      =  false;
               }
            } else if ( sJ !== e.value.source ) {
               e.value.source  =  sJ;
               adjust.fresh( false );
            }
         }
      }
      if ( sJ ) {
         e  =  WSTM.w.template.par.find( adjust, "Monat" );
         if ( e ) {
            sM  =  e.flat();
            if ( sM ) {
               sM  =  WSTM.str.trim( sM, true, true );
            }
         }
         if ( sM ) {
            if ( sM.length > 2 ) {
               i  =  WSTM.util.date.find( sM, WSTM.lang.l.de.date );
               if (i) {
                  sM  =  "" + i;
               } else {
                  i  =  WSTM.util.date.find( sM, WSTM.lang.l.en.date );
                  if (i) {
                     sM  =  "" + i;
                  }
               }
            }
            if ( typeof this.re  !==  "object" ) {
               this.re  =  { };
            }
            if ( typeof this.re.Dig  !==  "object" ) {
               this.re.Dig  =  new RegExp( "^ *[0-9]+\.? *$" );
            }
            if ( this.re.Dig.test( sM ) ) {
               i  =  WSTM.str.parseIntNumber( sM, 10 );
               if ( i > 0 ) {
                  if ( i < 10 ) {
                     sM  =  "0" + i;
                  } else if ( i <= 12 ) {
                     sM  =  "" + i;
                  }
               }
               if ( sM !== e.value.source ) {
                  e.value.source  =  sM;
                  adjust.fresh( false );
               }
               e  =  WSTM.w.template.par.find( adjust, "Tag" );
               if ( e ) {
                  sT  =  e.flat();
                  if ( sT ) {
                     sT  =  WSTM.str.trim( sT, true, true );
                     if ( this.re.Dig.test( sT ) ) {
                        i  =  WSTM.str.parseIntNumber( sT, 10 );
                        if ( i > 0 ) {
                           if ( i < 10 ) {
                              sT  =  "0" + i;
                           } else if ( i <= 31 ) {
                              sT  =  "" + i;
                           }
                        }
                     }
                  }
               }
            }
         }
      }
      if ( typeof WSTM.lang.p.dewiki.template.re  !==  "object" ) {
         WSTM.lang.p.dewiki.template.re  =  { };
      }
      if ( typeof WSTM.lang.p.dewiki.template.re.yyyy   !==  "object" ) {
         WSTM.lang.p.dewiki.template.re.yyyy
                             =  new RegExp("^" + WSTM.str.re.yyyy + "$");
      }
      if ( ! sD   &&
           sJ   &&
           WSTM.lang.p.dewiki.template.re.yyyy.test( sJ ) ) {
         sD  =  sJ;
         if ( sM ) {
            i  =  parseInt( sM, 10 );
            if ( i  &&  i <= 12  &&  /^[0-9]+$/.test( sM ) ) {
               sD  =  sD + "-" + sM;
               if (sT) {
                  i  =  parseInt( sT, 10 );
                  if (i <= 31  &&  /^[0-9]+$/.test( sT ) ) {
                     sD  =  sD + "-" + sT;
                  } else {
                     sD  =  false;
                  }
               }
            } else {
               sD  =  false;
            }
         }
         if ( sD ) {
            launch  =  true;
         }
      }
      if ( launch ) {
         WSTM.w.template.par.fiat( adjust, "Datum", sD );
         WSTM.w.template.mod.flush( adjust,
                                    [ [ "^Jahr$",  true ],
                                      [ "^Monat$", true ],
                                      [ "^Tag$",   true ] ] );
      }
   };   // .lang.p.dewiki.template.datumJJJJMonTT.fix()



   WSTM.lang.p.dewiki.template.datumZelle  =  function ( adjust ) {
      // Vorlage:DatumZelle
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .util.date.fetch()
      //    .util.date.format()
      //    .o.WikiTom().fresh()
      //    .lang.p.dewiki.template.attrStd.f()
      // 2020-10-02 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "1" ),
          g, s;
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            g  =  WSTM.util.date.fetch( s, true, "de" );
            if ( g ) {
               s  =  WSTM.util.date.format( g, 99 );
               if ( s !== e.value.source ) {
                  e.value.source  =  s;
                  adjust.fresh( false );
               }
            }
         }
      }
      WSTM.lang.p.dewiki.template.attrStd.f( adjust );
   };   // .lang.p.dewiki.template.datumZelle()



   WSTM.lang.p.dewiki.template.derSpiegel  =  function ( adjust ) {
      // Vorlage:Der Spiegel
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.mod.flush()
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-08-08 PerfektesChaos@de.wikipedia
      var d =  [ [/^Der Spiegel$/i,  "Der Spiegel"],
                 [/^ID$/i,           "ID",         true],
                 [/^Auth?or$/i,      "Autor",      false],
                 [/^Titel$/i,        "Titel",      true],
                 [/^Jahr$/i,         "Jahr",       true],
                 [/^N(?:umme)?r$/i,  "Nr",         true],
                 [/^Datum$/i,        "Datum",      false],
                 [/^Seiten$/i,       "Seiten",     false],
                 [/^Kommentar$/i,    "Kommentar",  false],
                 [/^Zitat$/i,        "Zitat",      false] ];
      WSTM.w.template.mod.flush( adjust,  [ [ /^Jg$/i,  true ] ] );
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.derSpiegel()



   WSTM.lang.p.dewiki.template.deutscheBiographie  =  function (adjust) {
      // Vorlage:Deutsche Biographie
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .w.template.par.fiat()
      //    .w.template.par.fixed()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-08-08 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "1" ),
          s, start;
      if ( e   &&
           !   WSTM.w.template.par.find(adjust, "GND")   &&
           typeof e.value  ===  "object"
           &&     e.value  &&
           typeof e.value.source  ===  "string" ) {
         s      =  e.value.source;
         start  =  s.substr( 0, 3 );
         if ( start === "pnd"  ||  start === "gnd" ) {
            WSTM.w.template.par.fiat( adjust,
                                      "GND",
                                      s.substr( 3 ).toUpperCase() );
            WSTM.w.template.mod.flush( adjust,  [ [ "^1$",  true ] ] );
            adjust.fresh( false );
         }
      }
      WSTM.w.template.par.fixed(
         [ [/^Deutsche Biographie$/i, "Deutsche Biographie"],
           [/^1$/,      "1",     false],
           [/^GND$/i,   "GND",   true],
           [/^Name$/i,  "Name",  false],
           [/^Abruf$/i, "Abruf", false] ],
         adjust);
      adjust.fresh(false);
   };   // .lang.p.dewiki.template.deutscheBiographie()



   WSTM.lang.p.dewiki.template.deutschesWB  =  { };



   WSTM.lang.p.dewiki.template.deutschesWB.def  =  [
           [/^Deutsches Wörterbuch$/,  "Deutsches Wörterbuch"],
           [/^(Lemma|Titel)$/i,        "Lemma",      true],
           [/^Wortart$/i,              "Wortart",    false],
           [/^Band$/i,                 "Band",       true],
           [/^Sp(?:alte)$/i,           "Sp",         true],
           [/^lemid$/i,                "lemid",      false],
           [/^Abschnitt$/i,            "Abschnitt",  false],
           [/^Bedeutung$/i,            "Bedeutung",  false],
           [/^Kommentar$/i,            "Kommentar",  false]
                                                   ];   // 2019-08-07



   WSTM.lang.p.dewiki.template.deutschesWB.f =  function ( adjust ) {
      // Vorlage:Deutsches Wörterbuch
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.p.dewiki.template.deutschesWB.def
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-08-08 PerfektesChaos@de.wikipedia
      var d  =  WSTM.lang.p.dewiki.template.deutschesWB.def;
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.deutschesWB.f()



   WSTM.lang.p.dewiki.template.deutschesWB.DWB  =  function ( adjust ) {
      // Vorlage:Deutsches Wörterbuch aus Vorlage:DWB
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .w.template.par.fiat()
      //    .lang.p.dewiki.template.deutschesWB.f()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2019-08-07 PerfektesChaos@de.wikipedia
      var e    =  WSTM.w.template.par.find( adjust, "1" ),
          i, sID, sTitel;
      if ( e ) {
         sID  =  e.flat();
         if ( sID ) {
            e  =  WSTM.w.template.par.find( adjust, "2" );
            if ( e ) {
               sTitel  =  e.flat();
               if ( sTitel    &&
                    ! WSTM.w.template.par.find( adjust, "3" ) ) {
                  i  =  sID.indexOf( "Z1" );
                  if ( i > 0 ) {
                     sID  =  sID.substr( 0,  i - 1 );
                  } else if ( ! i ) {
                     sID  =  "";
                  }
               }
               WSTM.w.template.par.fiat( adjust, "Lemma", sTitel );
               WSTM.w.template.mod.flush( adjust,
                                          [ [ "^[12]$",  true ] ] );
            }
            WSTM.w.template.par.fiat( adjust, "lemid", sID );
            adjust.values[ 0 ].symbol  =  "Deutsches Wörterbuch";
         }
      }
      WSTM.lang.p.dewiki.template.deutschesWB.f( adjust );
   };   // .lang.p.dewiki.template.deutschesWB.DWB()



   WSTM.lang.p.dewiki.template.deutschlandlastig  =  function (adjust) {
      // Vorlage:Deutschlandlastig
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.fiat()
      //    .w.template.par.find()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2016-10-13 PerfektesChaos@de.wikipedia
      var e;
      adjust.values[ 0 ].symbol  =  "Staatslastig";
      switch ( adjust.values.length ) {
         case 1 :
            WSTM.w.template.par.fiat( adjust, false, "DE" );
            break;
         case 2:
            e  =  WSTM.w.template.par.find( adjust, "Betrifft" );
            if ( e ) {
               adjust.values.pop();
               WSTM.w.template.par.fiat( adjust, false, "DE" );
               adjust.values.push( e );
               break;
            }   // fall through
         default:
            WSTM.w.template.par.fiat( adjust, "1", "DE" );
      }   // switch
   };   // .lang.p.dewiki.template.deutschlandlastig()



   WSTM.lang.p.dewiki.template.dts  =  { };



   WSTM.lang.p.dewiki.template.dts.f  =  function ( adjust ) {
      // Vorlage:dts / Vorlage:dtsx
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >< .lang.p.dewiki.template.dts.obsolete
      //    >< .lang.p.dewiki.template.dts.tab
      //    >< .lang.p.dewiki.template.dts.reY
      //    >< .lang.p.dewiki.template.dts.reM
      //    >< .lang.p.dewiki.template.dts.reD
      //    >< .lang.p.dewiki.template.dts.reHHMM
      //    .w.template.par.find()
      //    .w.template.mod.flush()
      //    .str.substrEnd()
      //    .o.WikiTom().fresh()
      //    .w.template.par.fiat()
      //    .w.template.family()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2020-08-20 PerfektesChaos@de.wikipedia
      var that  =  WSTM.lang.p.dewiki.template.dts,
          find  =   WSTM.w.template.par.find,
          less  =  ( adjust.values[ 0 ].symbol === "dts" ),
          e, i, n, s, set, sym;
      if ( less ) {
         if ( typeof that.obsolete  !==  "object" ) {
            that.obsolete = [ "noFormat",
                              "link",
                              "format",
                              "abbr",
                              "norFormat" ];
         }
         for ( i = 0;  i < that.obsolete.length;  i++  ) {
            s  =  that.obsolete[ i ];
            e  =  find( adjust, s );
            if ( e ) {
               s  =  "^" + s + "$";
               WSTM.w.template.mod.flush( adjust,
                                          [ [ s, true ] ] );
               adjust.fresh( false );
            }
         }  //  for i
         n  =  5;
      } else {
         n  =  4;
      }
      for ( i = 1;  i <= n;  i++ ) {
         sym  =  i + "";
         e    =  find( adjust, sym );
         if ( e ) {
            s  =  e.flat();
            if ( typeof s  ===  "string" ) {
               WSTM.w.template.par.fiat( adjust, sym, s );
               adjust.fresh( false );
            }
         }
      }   // for i
      if ( typeof that.tab  !==  "object" ) {
         e         =  new RegExp( "(?:\n *|\\|)\\| *$" );
         that.tab  =  [ ];
         that.tab.push( e );
         e          =  new RegExp( "\" *| *$" );
         that.tabA  =  [ ];
         that.tabA.push( e );
      }
      if ( WSTM.w.template.family( adjust, false, that.tab, false ) ) {
         e  =  find( adjust, "3" );
         if ( e ) {
            s  =  e.flat();
            if ( s ) {
               if ( typeof that.reY  !==  "object" ) {
                  that.reY  =  new RegExp( "^[12][0-9][0-9][0-9]$" );
               }
               if ( ! that.reY.test( s ) ) {
                  s  =  false;
               }
            }
            if ( s ) {
               set  =  s;
               e    =  find( adjust, "2" );
               if ( e ) {
                  s  =  e.flat();
                  if ( s ) {
                     if ( typeof that.reM  !==  "object" ) {
                        that.reM  =  new RegExp(  "^(?:0?[1-9]"
                                                 + "|1[0-2])$" );
                     }
                     if ( that.reM.test( s ) ) {
                        if ( s.length === 1 ) {
                           s  =  "0" + s;
                        }
                     } else if ( less ) {
                        i  =  WSTM.util.date.find( s,
                                                   WSTM.lang.l.de.date );
                        if ( i ) {
                           if ( i < 10 ) {
                              s  =  "0" + i;
                           } else {
                              s  =  "" + i;
                           }
                        } else {
                           s  =  false;
                        }
                     } else {
                        s  =  false;
                     }
                     if ( s ) {
                        set  =  set + "-" + s;
                        e    =  find( adjust, "1" );
                        if ( e ) {
                           s  =  e.flat();
                           if ( s ) {
                              if ( typeof that.reD  !==  "object" ) {
                                 that.reD  =  new RegExp(  "^(?:0?[1-9]"
                                                          + "|[12][0-9]"
                                                          + "|3[01])"
                                                          + "\\.?$" );
                              }
                              if ( that.reD.test( s ) ) {
                                 i = s.length;
                                 if ( i > 1   &&
                                      WSTM.str.substrEnd( s, 1 )
                                                             ===  "." ) {
                                    --i;
                                    s  =  s.substr( 0, i );
                                 }
                                 if ( i === 1 ) {
                                    s  =  "0" + s;
                                 }
                                 set  =  set + "-" + s;
                                 if ( less ) {
                                    e  =  find( adjust, "4" );
                                    if ( e ) {
                                       s  =  e.flat();
                                       if ( s ) {
                                          set  =  false;
/*
                                          if ( typeof that.reHHMM
                                               !==  "object" ) {
                                             that.reHHMM  =
                                                       new RegExp(
                                                          "^(?:0?[0-9]"
                                                             + "|1[0-9]"
                                                             + "|2[0-3])"
                                                         + ":"
                                                         + "(?:[0-5]"
                                                          + "[0-9])$" );
                                          }
                                          if ( that.reHHMM.test( s ) ) {
                                             if ( s.length === 4 ) {
                                                s  =  "0" + s;
                                             }
                                             set  =  set + " " + s;
                                          } else {
                                             set  =  false;
                                          }
                                          */
                                       }
                                    }
                                 }
                              } else {
                                 set  =  false;
                              }
                           }
                        }
                     } else {
                        set  =  false;
                     }
                  }
               }
               if ( set ) {
                  adjust.values  =  [ ];
                  adjust.values.push( { symbol: "DatumZelle" } );
                  e  =  new WSTM.o.WikiTom( set, adjust );
                  adjust.values.push( { symbol:   "1",
                                        lazy:     true,
                                        location: true,
                                        value:    e } );
                  adjust.fresh( false );
               }
            }
         }
      }
   };   // .lang.p.dewiki.template.dts.f()



   WSTM.lang.p.dewiki.template.celex  =  function ( adjust ) {
      // Vorlage:CELEX Vorlage:EU-Richtlinie
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .w.template.par.fiat()
      //    .w.template.mod.flush()
      //    .lang.p.dewiki.kBytes.flip()
      //    .w.template.par.fiat()
      //    .lang.p.dewiki.template.abruf.f()
      //    .o.WikiTom().fresh()
      // 2022-11-05 PerfektesChaos@de.wikipedia
      var ek  =  WSTM.w.template.par.find( adjust, "kbytes" ),
          et  =  WSTM.w.template.par.find( adjust, "text" ),
          e2, s;
      if ( ek ) {
         s  =  ek.flat();
      }
      if ( s ) {
         s  =  WSTM.lang.p.dewiki.kBytes.flip( s );
         if ( s ) {
            WSTM.w.template.par.fiat( adjust, "kbytes", s );
         }
      }
      if ( et ) {
         s  =  et.flat();
         if ( s ) {
            e2  =  WSTM.w.template.par.find( adjust, "2" );
            if ( ! e2  ||  ! e2.flat() ) {
               WSTM.w.template.par.fiat( adjust, "2", s );
               WSTM.w.template.mod.flush( adjust,
                                       [ [ "^text$",  true ] ] );
            }
         }
      }
      WSTM.lang.p.dewiki.template.abruf.f( adjust );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.celex()



   WSTM.lang.p.dewiki.template.farbe  =  { };



   WSTM.lang.p.dewiki.template.farbe.f  =  function ( adjust ) {
      // Vorlage:Farbe
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .w.template.mod.flush()
      //    .str.trim()
      //    .w.template.par.fiat()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2019-10-15 PerfektesChaos@de.wikipedia
      var d  =  [ [/^farbe$/,  "Farbe"],
                  [/^(1|HEX)$/i,    "1",       false],
                  [/^(2|Text)$/i,   "Text",    false],
                  [/^(3|color)$/i,  "color",   false],
                  [/^border$/i,     "border",  false],
                  [/^Kreis$/i,      "Kreis",   false],
                  [/^width$/i,      "width",   false],
                  [/^height$/i,     "height",  false] ],
          e1  =  WSTM.w.template.par.find( adjust, "1" ),
          eh  =  WSTM.w.template.par.find( adjust, "HEX" ),
          s;
      if ( e1 ) {
         s  =  e1.flat();
      }
      if ( eh ) {
         s  =  eh.flat();
         if ( s ) {
            WSTM.w.template.mod.flush( adjust,  [ [ "^HEX$",  true ] ] );
         }
      }
      if ( s ) {
         s  =  WSTM.str.trim( s );
         if ( s ) {
            if ( s.substr( 0, 1 )  ===  "#" ) {
               s  =  s.toUpperCase();
            } else {
               s  =  s.toLowerCase();
            }
            WSTM.w.template.par.fiat( adjust, "1", s );
         } else {
            WSTM.w.template.mod.flush( adjust,  [ [ "^1$",  true ] ] );
         }
      }
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.farbe.f()



   WSTM.lang.p.dewiki.template.fnBox  =  function ( adjust ) {
      // Vorlage:FNBox
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .w.template.mod.furnish()
      //    .w.template.mod.format()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2017-05-22 PerfektesChaos@de.wikipedia
      if ( WSTM.w.template.par.find( adjust, "1" ) ) {
         adjust.lost  =  true;
         WSTM.w.template.mod.furnish( adjust,
                                      { linebreak: true,
                                        lost:      true } );
         WSTM.w.template.mod.format( adjust );
         adjust.fresh( false );
      }
   };   // .lang.p.dewiki.template.fnBox()



   WSTM.lang.p.dewiki.template.formatResource  =  function ( adjust ) {
      // Ressourcendaten umformatieren
      // Precondition:
      //    adjust  -- string, with mixed resource data
      // Postcondition:
      //    Returns string, with cleaned resource data
      // 2019-10-02 PerfektesChaos@de.wikipedia
      var r  =  adjust,
          d, e, i, re, reN;
      if ( typeof this.resource  !==  "object" ) {
         reN  =  "[0-9]";
         d    =  [ [ "\\btext/",                        "",      false ],
                   [ "\\bpdf\\b(?:-Datei|-Dokument)?",  "PDF",   true ],
                   [ "\\[\\[PDF\\]\\]",                 "PDF",   false ],
                   [ "\\[\\[.ortable D.+\\|PDF\\]\\]",  "PDF",   true ],
                   [ "\\bki?B\\b",                      "kB",    true ],
                   [ "\\bMi?B\\b",                      "MB",    true ],
                   [ "\\bHTTPS\\b",                     "",      true ],
                   [ "\\bHTML\\b",                      "",      true ],
                   [ "^[,;]",                           "",      false ],
                   [ "[,;]$",                           "",      false ],
                   [ "\\[\\[\\s*\\]\\]",                "",      false ],
                   [ ", ",                              "; ",    false ],
                   [ "^\\s+$",                          "",      false ],
                   [ "\\(" + reN + "\\)\\.\\(" + reN + reN + reN + "\\)",
                                                        "$1$2",  false ]
                 ];
         this.resource  =  [ ];
         for ( i = 0;  i < d.length;  i++ ) {
            e   =  d[ i ];
            re  =  new RegExp( e[ 0 ],
                               ( e[ 2 ]  ?  "i"  :  "" ) );
            this.resource.push( [ re, e[ 1 ] ] );
         }   // for i
      }
      for ( i = 0;  i < this.resource.length;  i++ ) {
         e  =  this.resource[ i ];
         r  =  r.replace( e[ 0 ], e[ 1 ] );
      }   // for i
      return  r;
   };   // .lang.p.dewiki.template.formatResource()



   WSTM.lang.p.dewiki.template.gartenlaube  =  function ( adjust ) {
      // Vorlage:Gartenlaube -- Update
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-08-08 PerfektesChaos@de.wikipedia
      var d  =  [ [/^Gartenlaube$/i,     "Gartenlaube"],
                  [/^(1|Wikisource)$/i,  "Wikisource",  true],
                  [/^(2|Titel)$/i,       "Titel",       false] ];
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      adjust.fresh(false);
   };   // .lang.p.dewiki.template.gartenlaube()



   WSTM.lang.p.dewiki.template.gesprochen  =  { reMin: false };



   WSTM.lang.p.dewiki.template.gesprochen.art  =  function ( adjust
                                                  //         ,  already
                                                           ) {
      // Vorlage:Gesprochener Artikel  ->  Vorlage:Gesprochene Version
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .str.trim()
      //    .w.template.par.fiat()
      //    .w.template.mod.furnish()
      //    .w.template.mod.format()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-10-30 PerfektesChaos@de.wikipedia
      var t  =  { "datei":   "dateiname",
                  "titel":   "inhalt",
                  "länge":   "dauer",
                  "version": "oldid",
                  "datum":   "artikeldatum" },
          e, i, s, si, v;
      for ( i = 1;  i <= 10;  i++ ) {
         si  =  ( i === 1  ?  ""  :  "" + i );
         for ( s in t ) {
            e  =  WSTM.w.template.par.find( adjust,  t[ s ] + si );
            if ( e ) {
               e.symbol = s + si;
               v  =  e.flat();
               if ( v ) {
                  v  =  WSTM.str.trim( v, true, true );
                  e.value.source  =  v;
               }
            }
         }   // for s in t
      }   // for i
      WSTM.lang.p.dewiki.template.gesprochen.f( adjust );
   };   // .lang.p.dewiki.template.gesprochen.art()



   WSTM.lang.p.dewiki.template.gesprochen.f  =  function ( adjust ) {
      // Vorlage:Gesprochene Version
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .g.wNsNumber
      //    .w.template.par.find()
      //    .str.trim()
      //    .util.date.fetch()
      //    .util.date.format()
      //    .w.template.mod.flush()
      //    .w.template.mod.furnish()
      //    .w.template.mod.format()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-11-11 PerfektesChaos@de.wikipedia
      var p     =  { "länge": true,
                     "datum": true },
          that  =  WSTM.lang.p.dewiki.template.gesprochen,
          e, i, s, si, sx, v;
      for ( i = 1;  i <= 10;  i++ ) {
         si  =  ( i === 1  ?  ""  :  "" + i );
         for ( s in p ) {
            e  =  WSTM.w.template.par.find( adjust,  s + si );
            if ( e ) {
               v  =  e.flat();
               if ( v ) {
                  v  =  WSTM.str.trim( v, true, true );
                  switch ( s ) {
                     case "datum" :
                        sx  =  WSTM.util.date.fetch( v, true, "de" );
                        if ( sx ) {
                           sx  =  WSTM.util.date.format( sx, 3 );
                           if ( sx ) {
                              v  =  sx;
                           }
                        }
                        break;
                     case "länge" :
                        if ( ! that.reMin ) {
                           that.reMin  =  new RegExp( "^[0-5]?[0-9]"
                                                      + ":[0-5][0-9]"
                                                      + " min$" );
                        }
                        if ( that.reMin.test( v ) ) {
                           v  =  v.substr(  0,  v.length - 4 );
                        }
                        break;
                  }   // switch s
                  e.value.source  =  v;
               }
            }
         }   // for s in t
      }   // for i
      WSTM.w.template.mod.flush( adjust,
                                 [ [ "^exzellent$",
                                     true ] ] );
      if ( ! WSTM.wNsNumber ) {
         WSTM.w.template.mod.flush( adjust,
                                    [ [ "^(?:artikel|seite)$",
                                        true ] ] );
      }
      WSTM.w.template.mod.furnish( adjust,
                                   { lastline:  true,
                                     later:     true,
                                     leave:     true,
                                     linebreak: true,
                                     lineup:    true,
                                     lone:      true } );
      WSTM.w.template.mod.format( adjust );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.gesprochen.f()



   WSTM.lang.p.dewiki.template.haan  =  function ( adjust ) {
      // Vorlage:Haan -- Ersatz
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .o.WikiTom().fresh()
      // 2021-08-08 PerfektesChaos@de.wikipedia
      var d  =  [ [/^Haan|SächsSchriftstLex$/i,  "SächsSchriftstLex"],
                  [/1/,  "Titel"    ],
                  [/2/,  "Seite"    ],
                  [/3/,  "SeiteBis" ] ];
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.haan()



   WSTM.lang.p.dewiki.template.hdlDOI  =  { };



   WSTM.lang.p.dewiki.template.hdlDOI.re  =
                "^10\\.[0-9]+/[0-9A-Za-z][-0-9.:A-Z/a-z()]+[0-9A-Za-z]$";



   WSTM.lang.p.dewiki.template.hdlDOI.fire  =  function ( adjust ) {
      // Vorlage:HDL Vorlage:DOI -- Formatierung
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      //               .symbol
      //               .values
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .lang.p.dewiki.template.hdlDOI.format()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2014-12-12 PerfektesChaos@de.wikipedia
      WSTM.lang.p.dewiki.template.hdlDOI.format( adjust );
   };   // .lang.p.dewiki.template.hdlDOI.fire()



   WSTM.lang.p.dewiki.template.hdlDOI.format  =  function ( adjust ) {
      // Vorlage:HDL Vorlage:DOI -- Formatierung
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      //               >< .symbol
      //               >< .values
      //                < .children
      //                < .learnt
      //                < .lookup
      //                < .source
      //                < .mode
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .o.WikiTom.LinkWikiTotal
      //    >< .lang.p.dewiki.template.hdlDOI.re
      //    .str.trim()
      //    .w.template.par.flush()
      //    .o.WikiTom().fresh()
      // 2015-03-11 PerfektesChaos@de.wikipedia
      var n  =  adjust.values.length,
          s  =  "|1|Problem|NoCat|",
          e, i;
      for ( i = n - 1;  i > 0;  i-- ) {
         e  =  adjust.values[ i ];
         if ( s.indexOf("|" + e.symbol + "|")  <  0 ) {
            WSTM.w.template.par.flush( adjust, i, false );
         }
      }   // for i--
      if ( adjust.values.length === 2 ) {
         e  =  adjust.values[ 1 ];
         if ( e.symbol === "1" ) {
            s  =  e.value.toString();
            if ( typeof this.re  ===  "string" ) {
               this.re  =  new RegExp( this.re );
            }
            s  =  WSTM.str.trim( s );
            if ( this.re.test( s ) ) {
               s  =  "[[" + adjust.values[ 0 ].symbol.toLowerCase()
                                                        + ":" + s + "]]";
               adjust.children  =  null;
               adjust.symbol    =  null;
               adjust.values    =  null;
               adjust.lookup    =  false;
               adjust.source    =  s;
               adjust.mode      =  WSTM.o.WikiTom.LinkWikiTotal;
               adjust.fresh( false );
            }
         }
      }
   };   // .lang.p.dewiki.template.hdlDOI.format()



   WSTM.lang.p.dewiki.template.heBio  =  function ( adjust ) {
      // Vorlage:HeBio
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2022-03-18 PerfektesChaos@de.wikipedia
      var eGND  =  WSTM.w.template.par.find( adjust, "GND" ),
          eID   =  WSTM.w.template.par.find( adjust, "ID" ),
          e, sDB, sEx, sV;
      if ( eGND || eID ) {
         if ( eGND  &&  ! eID ) {
            sV   =  eGND.flat();
            sDB  =  "HBN";
            sEx  =  "GND";
         } else if ( eID  &&  ! eGND ) {
            sV   =  eID.flat();
            sDB  =  "HB";
            sEx  =  "ID";
         }
         if ( sV ) {
            WSTM.w.template.par.fiat( adjust, "DB", sDB );
            WSTM.w.template.par.fiat( adjust, "ID", sV );
            e   =  WSTM.w.template.par.find( adjust, "1" );
            if ( e ) {
               WSTM.w.template.par.fiat( adjust, "titel", e.value );
               WSTM.w.template.mod.flush( adjust,
                                          [ [ "^1$",  true ] ] );
            }
            adjust.values[ 0 ].symbol  =  "LAGIS";
            adjust.fresh( false );
         }
      }
   };   // .lang.p.dewiki.template.heBio()



   WSTM.lang.p.dewiki.template.heiligenlex1858  =  function ( adjust ) {
      // Vorlage:Heiligenlexikon-1858
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .w.template.mod.flush()
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2024-01-28 PerfektesChaos@de.wikipedia
      var d  =  [ [/^Heiligenlexikon-1858$/i,  "Heiligenlexikon-1858"],
                  [/^Autor$/i,                 "Autor",       false],
                  [/^Lemma|spezialkapitel$/i,  "Lemma",       true],
                  [/^BK-Nummer$/i,             "BK-Nummer",   false],
                  [/^(?:1|Band)$/i,            "Band",        true],
                  [/^(?:2|Seiten?)$/i,         "Seite",       true],
                  [/^(?:3|SeiteBis)$/i,        "SeiteBis",    false],
                  [/^Anhang$/i,                "Anhang",      false],
                  [/^Kommentar|bemerkung$/i,   "Kommentar",   false],
                  [/^zenoID$/i,                "zenoID",      true],
                  [/^kapiteltext$/i,           "kapiteltext", false] ],
          e  =  WSTM.w.template.par.find( adjust, "kurz" );
      if ( e ) {
         WSTM.w.template.mod.flush( adjust,   [ [ "^kurz$",  true ] ] );
      }
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.heiligenlex1858()



   WSTM.lang.p.dewiki.template.herder1854  =  function ( adjust ) {
      // Vorlage:Herder-1854
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .lang.p.dewiki.template.seiteBis()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2024-01-31 PerfektesChaos@de.wikipedia
      var d  =  [ [/^Herder-1854$/i,   "Herder-1854"],
                  [/^Lemma$/i,      "Lemma",       true],
                  [/^BK-Nummer$/i,  "BK-Nummer",   false],
                  [/^Band$/i,       "Band",        true],
                  [/^Seiten?$/i,    "Seite",       true],
                  [/^SeiteBis$/i,   "SeiteBis",    false],
                  [/^Kommentar$/i,  "Kommentar",   false],
                  [/^zenoID$/i,     "zenoID",      true] ];
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      WSTM.lang.p.dewiki.template.seiteBis( adjust );
   };   // .lang.p.dewiki.template.herder1854()



   WSTM.lang.p.dewiki.template.hessBib  =  { };



   WSTM.lang.p.dewiki.template.hessBib.ppn  =  function ( adjust ) {
      // Vorlage:HessBib PPN
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >< .lang.p.dewiki.template.hessBib.re
      //    >< .lang.p.dewiki.template.hessBib.re.ppn
      //    .w.template.par.find()
      //    .w.template.par.fiat()
      //    .w.template.mod.flush()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-10-26 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "1" ),
          h  =  WSTM.lang.p.dewiki.template.hessBib,
          q, s;
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            q  =  WSTM.w.template.par.find( adjust, "HBP" );
            if ( ! q ) {
               if ( typeof h.re  !==  "object" ) {
                  h.re  =  { };
               }
               if ( typeof h.re.ppn  !==  "object" ) {
                  h.re.ppn  =  new RegExp( "^[1-9][0-9]{7}[0-9xX]$" );
               }
               if ( h.re.ppn.test( s ) ) {
                  if ( s.indexOf( "x" ) === 8 ) {
                     s  =  s.substr( 0, 8 )  +  "X";
                  }
                  WSTM.w.template.par.fiat( adjust, "PPN", s );
                  WSTM.w.template.mod.flush( adjust,
                                             [ [ "^1$",  true ] ] );
                  adjust.values[ 0 ].symbol  =  "HessBib";
                  adjust.fresh( false );
               }
            }
         }
      }
   };   // .lang.p.dewiki.template.hessBib.ppn()



   WSTM.lang.p.dewiki.template.hinweisKlickl  =  function ( all, at ) {
      // Vorlage:Hinweis Klicklaute
      // Precondition:
      //      -- WikiTom sequence (parent)
      //      -- node number
      // Postcondition:
      //    true if to be placed on a single line
      // 2021-07-01 PerfektesChaos@de.wikipedia
      var r  =  false,
          child;
      if ( typeof all.children  ===  "object"
           &&     all.children      &&
           typeof all.children.length  ===  "number"      &&
           typeof all.children[ at ]  ===  "object" ) {
         child  =  all.children[ at ];
         if ( typeof child.source  ===  "string" ) {
               r  =  ( child.source === "{{Hinweis Klicklaute}}" );
         }
      }
      return r;
   };   // .lang.p.dewiki.template.hinweisKlickl()



   WSTM.lang.p.dewiki.template.hoehe  =  function ( adjust ) {
      // Vorlage:Höhe
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.templates.wikitext.inline
      //    .w.template.par.flipper()
      //    .w.template.mod.furnish()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2020-01-05 PerfektesChaos@de.wikipedia
      WSTM.w.template.par.flipper( adjust,  { p:     "link",
                                              boole: [ ] } );
      WSTM.w.template.mod.furnish( adjust,
                                   WSTM.lang.templates.wikitext.inline );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.hoehe()



   WSTM.lang.p.dewiki.template.infobox  =  function ( adjust ) {
      // Vorlage:Infobox ***** -- Formatierung
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.mod.flush()
      //    .w.template.mod.furnish()
      //    .o.WikiTom().fresh()
      // 2020-02-13 PerfektesChaos@de.wikipedia
      WSTM.w.template.mod.flush( adjust,  [ [ /^[1-9]$/,  false ] ] );
      WSTM.w.template.mod.furnish( adjust,  { indent:    0,
                                              margin:    0,
                                              lastline:  true,
                                              later:     true,
                                              linebreak: true,
                                              lost:      false } );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.infobox()



   WSTM.lang.p.dewiki.template.infoboxPublik  =  { };



   WSTM.lang.p.dewiki.template.infoboxPublik.def  =  [
           [/^Infobox Publikation$/i,      "Infobox Publikation"],
           [/^titel$/i,                    "titel",              true],
           [/^title$/i,                    "titel",              false],
           [/^bild$/i,                     "bild",               true],
           [/^beschreibung$/i,             "beschreibung",       true],
           [/^fachgebiet$/i,               "fachgebiet",         false],
           [/^(?:sprache|language)$/i,     "sprache",            true],
           [/^verlag$/i,                   "verlag",             true],
           [/^land$/i,                     "land",               true],
           [/^(?:haupt)?sitz$/i,           "hauptsitz",          true],
           [/^erstausgabe[- _]tag$/i,      "erstausgabe_tag",    true],
           [/^erstausgabe[- _]jahr$/i,     "erstausgabe_jahr",   true],
           [/^einstellung[- _]tag$/i,      "einstellung_tag",    false],
           [/^einstellung[- _]jahr$/i,     "einstellung_jahr",   false],
           [/^gründer$/i,                  "gründer",            true],
           [/^erscheint$/i,                "erscheint",          true],
           [/^auflage[- _]quelle$/i,       "auflage_quelle",     true],
           [/^auflage[- _]zahl$/i,         "auflage_zahl",       true],
           [/^verbreitung[- _]quelle$/i,   "verbreitung_quelle", true],
           [/^verbreitung[- _]zahl$/i,     "verbreitung_zahl",   true],
           [/^reichweite[- _]quelle$/i,    "reichweite_quelle",  true],
           [/^reichweite[- _]zahl$/i,      "reichweite_zahl",    true],
           [/^impactfactor$/i,             "impactfactor",       false],
           [/^impact[- _]jahr$/i,          "impact_jahr",        false],
           [/^impact[- _]quelle$/i,        "impact_quelle",      false],
           [/^chefred(?:akteur|aktor)?$/i, "chefred",            true],
           [/^Schriftleit(?:ung|er)$/i,    "chefred",            false],
           [/^Redaktionsleit(?:ung|er)$/i, "chefred",            false],
           [/^chefred(?:akteur|aktor)?in$/i,
                                           "chefredin",          false],
           [/^chefreds$/i,                 "chefreds",           false],
           [/^Chefredaktion$/i,            "chefreds",           false],
           [/^pl(?:ural)?$/i,              "pl",                 false],
           [/^(?:herausgeber|hrsg)$/i,     "herausgeber",        false],
           [/^herausgeberin$/i,            "herausgeberin",      false],
           [/^geschäftsführer$/i,          "geschäftsführer",    false],
           [/^geschäftsführerin$/i,        "geschäftsführerin",  false],
           [/^(?:weblinks?|online|url)$/i, "weblink",            true],
           [/^archiv$/i,                   "archiv",             true],
           [/^issn$/i,                     "issn",               false],
           [/^issn[- _]print$/i,           "issn-print",         true],
           [/^issn[- _]online$/i,          "issn-online",        true],
           [/^zdb$/i,                      "zdb",                false],
           [/^CODEN$/i,                    "CODEN",              false]
                                                     ];



   WSTM.lang.p.dewiki.template.infoboxPublik.f  =  function ( adjust ) {
      // Vorlage:Infobox Publikation -- Formatierung
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.templates.wikitext.infobox
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .w.template.mod.flush()
      //    .w.template.mod.furnish()
      //    .o.WikiTom().fresh()
      // 2019-11-15 PerfektesChaos@de.wikipedia
      var d  =  WSTM.lang.p.dewiki.template.infoboxPublik.def;
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      WSTM.w.template.mod.flush( adjust,  [ [ /^pl$/i,     false ],
                                            [ /^issn$/i,   false ],
                                            [ /^zdb$/i,    false ],
                                            [ /^CODEN$/i,  false ],
                                            [ /^ISBN$/i,   false ],
                                            [ /^OCLC$/i,   false ],
                                            [ /^[1-9]$/i,  false ] ] );
      WSTM.w.template.mod.furnish( adjust,
                                   WSTM.lang.templates.wikitext.infobox
                                 );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.infoboxPublik.f()



   WSTM.lang.p.dewiki.template.infoboxSchiff  =  { };



   WSTM.lang.p.dewiki.template.infoboxSchiff.f  =  function ( adjust ) {
      // Vorlage:Infobox Schiff -- Formatierung
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      //               >< .values
      //                < .learnt
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.mod.format()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2019-11-24 PerfektesChaos@de.wikipedia
      var n  =  adjust.values.length,
          t  =  WSTM.lang.p.dewiki.template.infoboxSchiff,
          e, i, l;
      if ( typeof t.reDig  !==  "object" ) {
         t.reDig  =  new RegExp( "^[0-9]+$" );
      }
      for ( i = 1;  i < n;  i++ ) {
         e  =  adjust.values[ i ];
         if ( t.reDig.test( e.symbol ) ) {
            e.location  =  true;
            e           =  e.value;
            if ( typeof e  ===  "object"   &&
                 typeof e.mode  ===  "number"
                 &&     e.mode  ===  47   &&
                 typeof e.children  ===  "object" ) {
               e  =  e.children[ 1 ];
               if ( typeof e  ===  "object"   &&
                    typeof e.values  ===  "object"  ) {
                  WSTM.w.template.mod.furnish( e,  { indent: 1 } );
                  WSTM.w.template.mod.format( e );
               }
            }
            l  =  true;
         }
      }   // for i
      if ( l ) {
         WSTM.w.template.mod.format( adjust );
      }
   };   // .lang.p.dewiki.template.infoboxSchiff.f()



   WSTM.lang.p.dewiki.template.infoboxWEB  =  function ( adjust ) {
      // Vorlage:Infobox ... -- Parameterumbenennung
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .o.WikiTom().fresh()
      // 2019-02-07 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "Webpräsenz" );
      if ( e ) {
         e.symbol = "Website";
         adjust.fresh( false );
      }
      if ( adjust.values[ 0 ].symbol === "Infobox Ort in der Türkei" ) {
         e  =  WSTM.w.template.par.find( adjust, "WebpräsenzKaymakam" );
         if ( e ) {
            e.symbol = "WebsiteKaymakam";
            adjust.fresh( false );
         }
      }
   };   // .lang.p.dewiki.template.infoboxWEB()



   WSTM.lang.p.dewiki.template.information  =  { };



   WSTM.lang.p.dewiki.template.information.fire  =  function (adjust) {
      // Vorlage:Information -- Formatierung
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .lang.p.dewiki.template.information.format()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2013-04-29 PerfektesChaos@de.wikipedia
      WSTM.lang.p.dewiki.template.information.format(adjust);
   };   // .lang.p.dewiki.template.information.fire()



   WSTM.lang.p.dewiki.template.information.format  =  function (adjust) {
      // Vorlage:Information -- Formatierung
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      //               >  .symbol
      //               >< .values
      //                < .learnt
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >< .w.encountered.template_information
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .w.template.par.flush()
      //    .w.template.mod.furnish()
      //    .w.template.mod.format()
      //    .errors.found()
      // 2013-07-29 PerfektesChaos@de.wikipedia
      var b  =  [
           [/^Information$/i,                        "Information"],
           ["beschreibung|description",              "Beschreibung"    ],
           ["quelle|source",                         "Quelle"          ],
           ["urheber|auth?or",                       "Urheber"         ],
           ["datum|jahr|date",                       "Datum"           ],
           ["genehmigung|lizenz(ierung)?|license|rights|permission",
                                                     "Genehmigung"     ],
           ["andere[ _]version(en)?|other[_ ]versions?",
                                                     "Andere Versionen"],
           ["(an|be)?merkung(en)?|additional[_ ]information",
                                                     "Anmerkungen"     ]
                ],
          n  =  b.length,
          s  =  "|",
          d, e, i;
      d       =  new Array(n);
      d[ 0 ]  =  b[ 0 ];
      for ( i = 1;  i < n;  i++ ) {
         e     =  b[ i ];
         s     =  s + e[ 1 ] + "|";
         d[i]  =  [ new RegExp( "^(" + e[ 0 ] + "$)",  "i" ),
                    e[ 1 ],
                    true ];
      }   // for i
      WSTM.w.template.par.fix(d, adjust);
      WSTM.w.template.par.fixed(d, adjust);
      n  =  adjust.values.length;
      if ( n + 1  >  b.length ) {
         for ( i = n - 1;  i > 0;  i-- ) {
            e  =  adjust.values[ i ];
            if ( s.indexOf( "|" + e.symbol + "|" )  <  0) {
               WSTM.w.template.par.flush( adjust, i, false );
            }   // for i
         }   // for i--
      }   // more values provided
      WSTM.w.template.mod.furnish( adjust,
                                   { indent:    0,
                                     lastline:  true,
                                     later:     true,
                                     leap:      true,
                                     leave:     true,
                                     linebreak: true,
                                     lineup:    true
                                   } );
      WSTM.w.template.mod.format(adjust);
      if ( WSTM.w.encountered.template_information ) {
         WSTM.errors.found("templateRepeated", false, "{{Information}}");
      }
      WSTM.w.encountered.template_information  =  true;
   };   // .lang.p.dewiki.template.information.format()



   WSTM.lang.p.dewiki.template.internetq  =  { };



   WSTM.lang.p.dewiki.template.internetq.def  =  [
           [/^internetquelle$/i,         "Internetquelle"],
           [/^auth?or$/i,                "autor",            false],
           [/^url|online$/i,             "url",              true],
           [/^tit(?:el|le)/i,            "titel",            true],
           [/^titel-?erg$/i,             "titelerg",         false],
           [/^(?:(?:Sammel)?w[eo]rk|journal)$/i,"werk",      false],
           [/^(?:hrsg|herausgeber|publisher)$/i,
                                         "hrsg",             false],
           [/^(?:datum|date|jahr|year)$/i,
                                         "datum",            false],
           [/^(?:seiten?|pages?)$/i,     "seiten",           false],
           [/^(?:format|type)$/i,        "format",           false],
           [/^(?:sprache|lang|language)$/i,
                                         "sprache",          false],
           ["offline",                   "offline",          false],
           [/^archive?-?url$/i,          "archiv-url",       false],
           [/^archive?-?dat(?:um|e)$/i,  "archiv-datum",     false],
           [/^archive?-?bot$/i,          "archiv-bot",       false],
           [/^(?:abruf|zugriff|abgerufen|access-?date)$/i,
                                         "abruf",            true],
           [/^abruf-?verborgen$/i,       "abruf-verborgen",  false],
           [/^(?:kommentar|anmerkung|bemerkung)$/i,
                                         "kommentar",        false],
           ["zitat",                     "zitat",            false]
                                                      ];


   WSTM.lang.p.dewiki.template.internetq.fire  =  function ( adjust ) {
      // Vorlage:Internetquelle -- Formatierung
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .lang.p.dewiki.template.internetq.format()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2015-01-18 PerfektesChaos@de.wikipedia
      WSTM.lang.p.dewiki.template.internetq.format( adjust );
   };   // .lang.p.dewiki.template.internetq.fire()



   WSTM.lang.p.dewiki.template.internetq.format  =  function ( adjust ) {
      // Vorlage:Internetquelle -- Formatierung
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      //               >  .symbol
      //               >< .values
      //                < .learnt
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.l.de.langs
      //    >  .mod.lazy
      //    ><.lang.p.dewiki.template.internetquelle.re
      //    >< .lang.p.dewiki.template.internetquelle.arr
      //    >< .lang.p.dewiki.template.internetquelle.opt
      //    >< .lang.p.dewiki.template.internetquelle.req
      //     < .w.encountered.internetquelle
      //    .w.template.par.fix()
      //    .w.template.mod.flush()
      //    .w.template.par.fetch()
      //    .str.trim()
      //    .lang.p.dewiki.template.formatResource()
      //    .w.template.par.fiat()
      //    .w.template.par.flipper()
      //    .util.date.fetch()
      //    .util.date.format()
      //    .util.code.lang()
      //    .util.isURL()
      //    .errors.found()
      //    .w.template.par.find()
      //    .w.template.par.fixed()
      //    .lang.p.dewiki.template.zitation()
      // 2020-12-05 PerfektesChaos@de.wikipedia
      var self = "Internetquelle",
          e, i, lineoff, lost, m, n, q, s, strange, sv, sx;
      WSTM.w.encountered.internetquelle  =  true;
      if ( typeof this.opt === "object" ) {
         for ( s in this.opt ) {
            if ( this.opt[ s ] ) {
               this.opt[ s ]  =  false;
            }
         }   // for s in this.opt
      } else {
         n              =  this.def.length;
         this.arr       =  new Array(n);
         this.opt       =  { };
         this.req       =  { };
         this.arr[ 0 ]  =  this.def[ 0 ];
         for ( i = 1;  i < n;  i++ ) {
            e  =  this.def[ i ];
            s  =  e[1];
            if ( typeof e[ 0 ]  ===  "string" ) {
                e[ 0 ]  =  new RegExp( "^(" + e[ 0 ] + ")$",  "i" );
            }
            this.arr[ i ]    =  [ e[ 0 ], s, true ];
            this.opt[ s ]  =  false;
            if ( e[ 2 ] ) {
               this.req[ s ]  =  true;
            }
         }   // for i
      }
      if ( typeof this.re  !==  "object" ) {
         this.re             =  { };
         this.re.ja          =  new RegExp( "^\\s*ja\\s*$",  "i" );
         this.re.notime      =  new RegExp( "^\\s*"
                                            + "("
                                              + "(?:20|1[1-9])"
                                              + "[01][0-9]"
                                              + "(?:-0?[1-9]|-1[012])?)"
                                            + "(?:-00?)?"
                                            + "(?:-00?)?"
                                            + "(?:[T ][0-9:]*)?"
                                            + "\\s*$" );
         this.re.numeric     =  new RegExp( "^[1-9][0-9]*$" );
         this.re.pdf         =  new RegExp( "\\bpdf\\b", "i" );
         this.re.sprachig    =  new RegExp( "sprachig" );
         this.re.sprachname  =  new RegExp( "{{"
                                            + "([a-zA-Z][a-z][a-z]?)"
                                            + "S}}" );
         this.re.zugriff     =  new RegExp( "^zugriff$" );
      }
      WSTM.w.template.par.fix( this.arr, adjust );
      WSTM.w.template.mod.flush( adjust,
                                 [ [ this.re.numeric, false ] ] );
      adjust.fresh( false );
      n  =  adjust.values.length;
      for ( i = 1;  i < n;  i++ ) {
         e  =  adjust.values[ i ];
         if ( e ) {
            s  =  e.symbol;
            switch ( s ) {
               case "archiv-datum" :
               case "datum" :
               case "abruf" :
               case "zugriff" :
                  sv  =  e.value.toString();
                  sx  =  sv.replace( this.re.notime, "$1" );
                  if ( s === "zugriff" ) {
                     for ( m = 1;  m < n;  m++ ) {
                        q  =  adjust.values[ m ];
                        if ( q  &&  q.symbol === "abruf" ) {
                           if ( q.value.toString() !== sv ) {
                              m  =  0;
                           }
                           break;   // for m
                        }
                     }   // for m
                     if ( m ) {
                        s   =  "abruf";
                        // Was wenn abruf= schon definiert?
                        sv  =  "";
                        WSTM.w.template.mod.flush( adjust,
                                                   [ [ this.re.zugriff,
                                                       true ] ] );
                        e.symbol  =  s;
                     }
                  }
                  if ( sx  &&  sv !== sx ) {
                     WSTM.w.template.par.fiat( adjust, s, sx );
                     sv  =  sx;
                  }
                  sx  =  WSTM.util.date.fetch( sv, true, "de" );
                  if ( sx ) {
                     sx  =  WSTM.util.date.format( sx, 3 );
                     if ( sx  &&  sv !== sx ) {
                        WSTM.w.template.par.fiat( adjust, s, sx );
                     }
                  }
                  break;
               case "abruf-verborgen" :
                  WSTM.w.template.par.flipper( adjust,
                                               { p:     s,
                                                 boole: [ "" ] } );
                  break;
               case "archiv-url" :
                  sv    =  WSTM.w.template.par.fetch( e );
                  lost  =  ( sv
                             &&   typeof sv  ===  "string"
                             &&   WSTM.str.trim( sv, true, true ) );
                  break;
               case "format" :
                  sv  =  WSTM.w.template.par.fetch( e );
                  if ( sv   &&   typeof sv  ===  "string" ) {
                     sx  =
                        WSTM.lang.p.dewiki.template.formatResource( sv );
                     if ( sv !== sx ) {
                        WSTM.w.template.par.fiat( adjust, s, sx );
                     }
                  }
                  break;
               case "offline" :
                  WSTM.w.template.par.flipper( adjust,
                                               { p:     "offline",
                                                 boole: [ "" ] } );
                  lineoff  =  ( WSTM.w.template.par.fetch( e )
                                                              ===  "1" );
                  break;
               case "sprache" :
                  sv  =  WSTM.w.template.par.fetch( e );
                  if ( sv ) {
                     sx  =  WSTM.str.trim( sv.toLowerCase()
                                             .replace( this.re.sprachig,
                                                       "" ),
                                           true,
                                           true );
                     if ( typeof WSTM.lang.l.de.langs[ sx ]
                                                         === "string" ) {
                        sx  =  WSTM.lang.l.de.langs[ sx ];
                     } else if ( sv === "" ) {
                        sx  =  "Undetermined";
                     } else {
                        q  =  this.re.sprachname.exec( sv );
                        if ( q ) {
                           sx  =  q[ 1 ];
                        } else {
                           sx  =  WSTM.util.code.lang( sx );
                           if ( typeof sx  !==  "string" ) {
                              sx  =  WSTM.str.trim( sv, true, true )
                                             .toLowerCase();
                           }
                        }
                     }
                     if ( WSTM.str.trim( sv ) !== sx ) {
                        WSTM.w.template.par.fiat( adjust, s, sx );
                     }
                  }
                  break;
               case "url" :
                  m   =  i;
                  sv  =  e.value.toString();
                  if ( sv ) {
                     if ( WSTM.util.isURL( sv, true ) ) {
                        WSTM.errors.found( "templateParInvalid",
                                           false,
                                           "{{" + self +
                                           "|url=" + sv + "}}" );
                     } else {
                        if ( this.re.pdf.test( sv ) ) {
                           e  =  WSTM.w.template.par.find( adjust,
                                                           "format" );
                           if ( e ) {
                              sv  =  e.value.toString();
                              if ( ! this.re.pdf.test( sv ) ) {
                                 sv  =  "PDF " + sv;
                                 WSTM.w.template.par.fiat( adjust,
                                                           "format",
                                                           sv );
                              }
                           } else {
                              WSTM.w.template.par.fiat( adjust,
                                                        "format",
                                                        "PDF" );
                           }
                        }
                     }
                  }
                  break;
               case "titel" :
                  sv  =  e.value.toString();
                  if ( sv ) {
                     sv  =  WSTM.str.trim( sv, true, true );
                  }
                  if ( ! sv ) {
                     sx  =  WSTM.w.template.par.find( adjust, "Titel" );
                     if ( sx ) {
                        WSTM.w.template.par.fiat( adjust,
                                                  "titel",
                                                  sx.value );
                        WSTM.w.template.mod.flush( adjust,
                                                   [ [ "^Titel$",
                                                       true ] ]);
                     }
                  }
                  break;
               case "1" :
                  if ( m   &&   m  ===  i - 1   &&   ! strange ) {
                     strange  =  "Pipes in URL durch %7C escapen!"
                                 + " {{" + self;
                  }   // fall through
               case "2" :
               case "3" :
               case "4" :
               case "5" :
               case "6" :
                  if ( ! strange ) {
                     strange  =  "{{" + self;
                  }
                  strange  =  strange + "|" + s + "="
                              + WSTM.w.template.par.fetch( e );
                  break;
               default:
            }   // switch e.symbol
            if ( typeof this.opt[ s ]  ===  "boolean" ) {
               if ( this.opt[ s ] ) {
                  WSTM.errors.found( "templateParDup",
                                     false,
                                     "{{" + self + "|" + s + "=}}" );
               }
               this.opt[ s ]  =  true;
               if ( this.req[ s ] ) {
                  this.req[ s ]  =  false;
               }
            } else if ( m   &&   m  ===  i - 1   &&   ! strange ) {
               strange  =  "Pipes in URL durch %7C escapen!"
                           + " {{" + self + "|" + s + "=";
               m++;
            } else {
               WSTM.errors.found( "templateParInvalid",
                                  false,
                                  "{{" + self + "|" + s + "=}}" );
            }
         }
      }   // for i
      if ( lost   &&
           ( typeof lineoff  !==  "boolean"   ||   ! lineoff ) ) {
         WSTM.w.template.par.fiat( adjust, "offline", "1" );
      }
      if ( adjust.learnt ) {
/*
         WSTM.errors.found("templateParInvalid",
                           true,
                           "{{" + self + "}}");
*/
         WSTM.mod.lazy  =  false;
      }
      if (strange) {
         WSTM.errors.found("templateParInvalid",
                           false,
                           strange + "}}");
      }
      for ( s in this.req ) {
         if ( this.req[ s ] ) {
            WSTM.errors.found("templateParMissing",
                              false,
                              "{{" + self + "|" + s + "=}}");
            WSTM.w.template.par.fiat( adjust, s, "" );
         } else {
            this.req[ s ]  =  true;
         }
      }   // for s in this.req
      WSTM.w.template.mod.flush( adjust,
                       [ [ "^(sprache|titelerg|seiten|kommentar|zitat)$",
                           false ] ] );
      WSTM.w.template.par.fixed( this.def, adjust );
      WSTM.lang.p.dewiki.template.zitation( adjust );
   };   // .lang.p.dewiki.template.internetq.format()



   WSTM.lang.p.dewiki.template.ipa  =  function ( adjust ) {
      // Vorlage:IPA
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .str.trim()
      //    .w.template.par.fiat()
      //    .w.template.par.fixed()
      //    .w.img.file()
      //    .errors.found()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-06-30 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "1" ),
          s, tondatei;
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            s  =  WSTM.str.trim( s );
            if ( s !== e.value.source ) {
               WSTM.w.template.par.fiat( adjust, "1", s );
            }
         } else {
            WSTM.errors.found( "templateParInvalid",
                               false,
                               "{{IPA|1=}}" );
         }
         tondatei  =  WSTM.w.template.par.find( adjust, "Tondatei" );
         if ( tondatei ) {
            s  =  e.flat();
            if ( s ) {
               s  =  WSTM.str.trim( s );
               if ( s !== e.value.source ) {
                  WSTM.w.template.par.fiat( adjust, "Tondatei", s );
               }
               WSTM.w.template.par.fixed(
                                   [ [ /IPA/,      "IPA"],
                                     [ "1",        "1",        true ],
                                     [ "Tondatei", "Tondatei", false ] ],
                                   adjust );
               // TODO    WSTM.w.img.file(s);
            } else {
               WSTM.errors.found( "templateParInvalid",
                                  false,
                                  "{{IPA|Tondatei=}}" );
            }
         }
      } else {
         WSTM.errors.found( "templateParMissing",
                            false,
                            "{{IPA|1=}}" );
      }
   };   // .lang.p.dewiki.template.ipa()



   WSTM.lang.p.dewiki.template.julgregd  =  { };



   WSTM.lang.p.dewiki.template.julgregd.def  =  [
           [/^JULGREGDATUM$/i,   "JULGREGDATUM"],
           [/^1$/,               "1",              true],
           [/^2$/,               "2",              true],
           [/^3$/,               "3",              true],
           [/^FormatGREG$/i,     "FormatGREG",     false],
           [/^FormatJUL$/i,      "FormatJUL",      false],
           [/^Jahreswechsel$/i,  "Jahreswechsel",  false],
           [/^Kurz$/i,           "Kurz",           false],
           [/^Lang$/i,           "Lang",           false],
           [/^Link$/i,           "Link",           false]
                                                     ];



   WSTM.lang.p.dewiki.template.julgregd.fire  =  function ( adjust ) {
      // Vorlage:JULGREGDATUM
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.templates.wikitext.inline
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .w.template.par.flipper()
      //    .w.template.mod.furnish()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2019-11-29 PerfektesChaos@de.wikipedia
      var d  =  WSTM.lang.p.dewiki.template.julgregd.def;
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      WSTM.w.template.par.flipper( adjust,  { p:     "Kurz",
                                              boole: [ ] } );
      WSTM.w.template.par.flipper( adjust,  { p:     "Lang",
                                              boole: [ ] } );
      WSTM.w.template.par.flipper( adjust,  { p:     "Link",
                                              boole: [ ] } );
      WSTM.w.template.mod.furnish( adjust,
                                   WSTM.lang.templates.wikitext.inline );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.julgregd.fire()



   WSTM.lang.p.dewiki.template.kicker  =  { };



   WSTM.lang.p.dewiki.template.kicker.fire  =  function ( adjust ) {
      // Vorlage:Kicker
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .w.template.mod.flush()
      //    .o.WikiTom().fresh()
      // 2020-10-01 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "ID" ),
          s, that;
      if ( e ) {
         e.symbol    =  "1";
         e.lazy      =  true;
         e.location  =  true;
         adjust.fresh( false );
      } else {
         e  =  WSTM.w.template.par.find( adjust, "1" );
      }
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            that  =  WSTM.lang.p.dewiki.template.kicker;
            if ( typeof that.reDig  !==  "object" ) {
               that.reDig  =  new RegExp( "^[0-9]+$" );
            }
            if ( that.reDig.test( s ) ) {
               s  =  false;
               e  =  WSTM.w.template.par.find( adjust, "Typ" );
               if ( e ) {
                  s  =  e.flat();
                  if ( s  &&
                       s !== "Spieler"  &&
                       s !== "Trainer" ) {
                     s  =  true;
                  }
               }
            }
         }
         if ( ! s ) {
            WSTM.w.template.mod.flush( adjust,  [ [ "^1$",  true ] ] );
            adjust.fresh( false );
         }
      }
   };   // .lang.p.dewiki.template.kicker.fire()



/*
   WSTM.lang.p.dewiki.template.l  =  { };



   WSTM.lang.p.dewiki.template.l.def  =  [
           [/^L(?:iteratur)?$/i, "Literatur"],
           [/^(?:1|A)$/,  "Autor",         false],
           [/^(?:2|T)$/,  "Titel",         true],
           [/^(?:3|V)$/,  "Verlag",        false],
           [/^(?:4|O)$/,  "Ort",           false],
           [/^(?:5|J)$/,  "Datum",         false],
           [/^(?:6|I)$/,  "ISBN",          false],
           [/^B$/,        "Band",          false],
           [/^E$/,        "Auflage",       false],
           [/^K$/,        "Kapitel",       false],
           [/^H$/,        "Herausgeber",   false],
           [/^N$/,        "Nummer",        false],
           [/^R$/,        "Reihe",         false],
           [/^S$/,        "Seiten",        false],
           [/^SP$/,       "Spalten",       false],
           [/^TE$/,       "TitelErg",      false],
           [/^W$/,        "Sammelwerk",    false],
           [/^WE$/,       "WerkErg",       false]
                                         ];


   WSTM.lang.p.dewiki.template.l.fire  =  function (adjust) {
      // Vorlage:L -- Eliminierung
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    > .lang.p.dewiki.template.literatur.def
      //    .w.template.par.fix()
      //    .lang.p.dewiki.template.literatur.format()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2017-08-03 PerfektesChaos@de.wikipedia
      WSTM.w.template.par.fix( WSTM.lang.p.dewiki.template.l.def,
                               adjust );
      WSTM.lang.p.dewiki.template.literatur.format( adjust );
   };   // .lang.p.dewiki.template.l.fire()
*/



   WSTM.lang.p.dewiki.template.lang  =  { reItal: false,
                                          reS:    false };



   WSTM.lang.p.dewiki.template.lang.f  =  function ( adjust ) {
      // Vorlage:lang
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.p.dewiki.template.rtl.langs
      //    >< .lang.p.dewiki.template.lang.reS
      //    .w.template.par.find()
      //    .util.code.lang()
      //    .w.template.par.fiat()
      //    .lang.p.dewiki.template.rtl.lang()
      //    .w.template.mod.flush()
      //    .lang.p.dewiki.template.rtl.fire()
      //    .str.trim()
      //    .errors.found()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-11-01 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "1" ),
          rtl, s, slang, that;
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            that  =  WSTM.lang.p.dewiki.template.lang;
            if ( ! that.reS ) {
               that.reS  =  new RegExp( "^\\*[a-z][a-z][a-z]?S$" );
            }
            if ( that.reS.test( s ) ) {
               WSTM.errors.found( "templateParInvalid",
                                  false,
                                  "{{lang|1=}} xxS" );
            } else {
               s  =  WSTM.util.code.lang( s );
               if ( typeof s  ===  "string" ) {
                  slang  =  s;
                  WSTM.w.template.par.fiat( adjust, "1", slang );
               } else {
                  slang  =  e.value.source;
               }
               rtl  =  WSTM.lang.p.dewiki.template.rtl;
               s    =  "|" + slang + "|";
               if ( rtl.langs.indexOf( s ) >= 0 ) {
                  rtl.lang( adjust );
               } else {
                  e  =  WSTM.w.template.par.find( adjust, "2" );
                  if ( e ) {
                     s  =  e.flat();
                     if ( s ) {
                        s  =  WSTM.str.trim( s, true, true );
                        if ( s !== e.value.source ) {
                           WSTM.w.template.par.fiat( adjust, "2", s );
                        }
                     }
                  } else {
                     WSTM.errors.found( "templateParMissing",
                                        false,
                                        "{{lang|2=}}" );
                  }
               }
            }
         } else {
            WSTM.errors.found( "templateParInvalid",
                               false,
                               "{{lang|1=}}" );
         }
      } else {
         WSTM.errors.found( "templateParMissing",
                            false,
                            "{{lang|1=}}" );
      }
   };   // .lang.p.dewiki.template.lang.f()



   WSTM.lang.p.dewiki.template.lang.fair  =  function ( adjust ) {
      // Vorlage: * Keine Kursivierung
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >< .lang.p.dewiki.template.lang.reItal
      //    .w.template.par.find()
      //    .str.trim()
      //    .w.template.par.fiat()
      //    .str.capitalize()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2019-11-12 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "1" ),
          s, that;
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            s  =  WSTM.str.trim( s, false, true );
            if ( s.indexOf( "''" )  >=  0 ) {
               that  =  WSTM.lang.p.dewiki.template.lang;
               if ( ! that.reItal ) {
                  that.reItal  =  new RegExp( "^''[^'][^']*[^']''$" );
               }
               if ( that.reItal.test( s ) ) {
                  s  =  s.substr( 2,  s.length - 4 );
                  WSTM.w.template.par.fiat( adjust, "1", s );
               }
            }
         }
      }
      e  =  WSTM.w.template.par.find( adjust, "script" );
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            s  = WSTM.str.capitalize( e.value.source );
            if ( s !== e.value.source ) {
               WSTM.w.template.par.fiat( adjust, "script", s );
            }
         }
      }
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.lang.fair()



   WSTM.lang.p.dewiki.template.lang.features  =  function ( adjust ) {
      // Vorlage: * migrate parameters
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .w.template.par.find()
      //    .w.template.par.fiat()
      //    .lang.p.dewiki.template.rtl.fire()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2019-10-15 PerfektesChaos@de.wikipedia
      var symbol  =  adjust.values[ 0 ].symbol,
          d       =  [ [ /^...?S$/,  symbol ],
                       [ /^1$/,  "1",  false ],
                       [ /^2$/,  "2",  false ] ],
          ltr     = true,
          e, s;
      symbol       =  symbol.substr(0, 1).toLowerCase()
                      + symbol.substr(1);
      d[ 0 ][ 1 ]  =  symbol;
      switch ( symbol ) {
         case "heS" :
            ltr  = false;   // fall through
         case "elS" :
            d.push( [ /^neu$/,  "prefix",  false ] );
            break;
         case "hboS" :
            ltr  = false;   // fall through
         case "grcS" :
            d.push( [ /^variant$/,  "variant",  false ] );
            d.push( [ /^alt$/,      "prefix",   false ] );
            break;
      }   // switch symbol
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      e  =  WSTM.w.template.par.find( adjust, "prefix" );
      if ( e ) {
         s  =  e.flat();
         if ( s  &&
              WSTM.str.trim( s, true, true )  ===  "ja" ) {
            WSTM.w.template.par.fiat( adjust, "prefix", "1" );
         }
      }
      if ( ! ltr ) {
         WSTM.lang.p.dewiki.template.rtl.fire( adjust );
      }
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.lang.features()



   WSTM.lang.p.dewiki.template.lang.flat  =  function (adjust) {
      // Vorlage:lang * introduce from superfluous template
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.templates.wikitext.inline
      //    .w.template.par.find()
      //    .w.template.par.fiat()
      //    .w.template.mod.format()
      //    .w.template.mod.furnish()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2019-01-22 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "1" ),
          e2, s, slang;
      if (e  &&
          typeof e.value  ===  "object"
          &&     e.value  &&
          typeof e.value.source  ===  "string") {
         s  =  e.value.source;
         slang  =  adjust.values[0].symbol;
         e2     =  WSTM.w.template.par.find( adjust, "2" );
         if ( e2  &&
              typeof e2.value  ===  "object"
              &&     e2.value  &&
              typeof e2.value.source  ===  "string" ) {
            WSTM.w.template.par.fiat( adjust, "3", e2.value.source );
            e2  =  WSTM.w.template.par.find( adjust, "3" );
            e2.lazy      =  true;
            e2.location  =  true;
         }
         WSTM.w.template.par.fiat(adjust, "2", s);
         e2  =  WSTM.w.template.par.find(adjust, "2");
         e2.lazy      =  true;
         e2.location  =  true;
         WSTM.w.template.par.fiat( adjust, "1", slang.toLowerCase() );
         adjust.values[0].symbol  =  "lang";
         adjust.label             =  true;
         WSTM.w.template.mod.format(adjust);
         WSTM.w.template.mod.furnish( adjust,
                                   WSTM.lang.templates.wikitext.inline );
         adjust.fresh(false);
      }
   };   // .lang.p.dewiki.template.lang.flat()



   WSTM.lang.p.dewiki.template.lang.fresh  =  function ( adjust ) {
      // Vorlage:lang * introduce from superfluous template
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .str.deCapitalize()
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .lang.p.dewiki.template.rtl.fire()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-07-17 PerfektesChaos@de.wikipedia
      var d  =  [  [ /^[af][ar][SF]?$/i, false ]  ],
          e;
      d[ 0 ][ 1 ]  =  WSTM.str.deCapitalize( adjust.values[ 0 ].symbol );
      d.push( [ /^1$/, "1",   false ] );
      d.push( [ /^w$/, "2",   false ] );
      d.push( [ /^d$/, "DMG", false ] );
      d.push( [ /^b$/, "de",  false ] );
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      e  =  WSTM.w.template.par.find( adjust, "1" );
      if ( e ) {
         e.lazy      =  true;
         e.location  =  true;
      }
      e  =  WSTM.w.template.par.find( adjust, "2" );
      if ( e ) {
         e.lazy      =  true;
         e.location  =  true;
      }
      WSTM.lang.p.dewiki.template.rtl.fire( adjust );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.lang.fresh()



   WSTM.lang.p.dewiki.template.literatur  =  { };



   WSTM.lang.p.dewiki.template.literatur.def  =  [
           [/^Literatur/i,            "Literatur"],
           [/^Auth?or(?:[ei]n)?$/i,   "Autor",               false],
           [/^(Herausgeber(?:in)?|Hrsg.?)$/i,
                                      "Hrsg",                false],
           [/^(?:Titel|title)$/i,     "Titel",               true],
           [/^TitelErg$/i,            "TitelErg",            false],
           [/(?:(?:Sammel)?werk|journal)$/i,
                                      "Sammelwerk",          false],
           [/^WerkErg$/i,             "WerkErg",             false],
           [/^Reihe$/i,               "Reihe",               false],
           [/^BandReihe$/i,           "BandReihe",           false],
           [/^HrsgReihe$/i,           "HrsgReihe",           false],
           [/^NummerReihe$/i,         "NummerReihe",         false],
           [/^(?:B(?:an)?d|volume)$/i,
                                      "Band",                false],
           [/^(?:N(ummer|r.?)|issue)$/i,
                                      "Nummer",              false],
           [/^Auflage$/i,             "Auflage",             false],
           [/^(?:Verlag|publisher)$/i,
                                      "Verlag",              false],
           [/^(?:Ort|location)$/i,    "Ort",                 false],
           [/^(?:Datum|date|year)$/i, "Datum",               true],
           [/^Jahr$/i,                "Jahr",                false],
           [/^Monat$/i,               "Monat",               false],
           [/^Tag$/i,                 "Tag",                 false],
           [/^ISBN$/i,                "ISBN",                false],
           [/^ISBNformalFalsch$/i,    "ISBNformalFalsch",    false],
           [/^ISBNdefekt$/i,          "ISBNdefekt",          false],
           [/^ISSN$/i,                "ISSN",                false],
           [/^ISSNformalFalsch$/i,    "ISSNformalFalsch",    false],
           [/^Kapitel$/i,             "Kapitel",             false],
           [/^(?:Seiten?|pages?)$/i,  "Seiten",              false],
           [/^Spalten?$/i,            "Spalten",             false],
           [/^ArtikelNr?$/i,          "ArtikelNr",           false],
           [/^Fundstelle?$/i,         "Fundstelle",          false],
           [/^(?:lang(?:uage)?|Sprache)$/i,
                                      "Sprache",             false],
           [/^Kommentar$/i,           "Kommentar",           false],
           [/^Originaltitel$/i,       "Originaltitel",       false],
           [/^Originalsprache$/i,     "Originalsprache",     false],
           [/^Originaljahr$/i,        "Originaljahr",        false],
           [/^Originalort$/i,         "Originalort",         false],
           [/^Übersetzer$/i,          "Übersetzer",          false],
           [/^VerlagEA$/i,            "VerlagEA",            false],
           [/^OrtEA$/i,               "OrtEA",               false],
           [/^JahrEA$/i,              "JahrEA",              false],
           [/^(?:Online|URL)$/i,      "Online",              false],
           [/^Format$/i,              "Format",              false],
           [/^KBytes$/i,              "KBytes",              false],
           [/^(?:Zugriff|Abruf|access-?date)$/i,
                                      "Abruf",               false],
           [/^arxiv$/i,               "arXiv",               false],
           [/^DOI$/i,                 "DOI",                 false],
           [/^DNB$/i,                 "DNB",                 false],
           [/^JSTOR$/i,               "JSTOR",               false],
           [/^LCCN$/i,                "LCCN",                false],
           [/^OCLC$/i,                "OCLC",                false],
           [/^PMC$/i,                 "PMC",                 false],
           [/^PMID$/i,                "PMID",                false],
           [/^ZDB$/i,                 "ZDB",                 false],
           [/^Umfang$/i,              "Umfang",              false],
           [/^Typ$/i,                 "Typ",                 false]
                                                 ];   // 2022-12-12



   WSTM.lang.p.dewiki.template.literatur.fire  =  function ( adjust ) {
      // Vorlage:Literatur -- Formatierung
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .lang.p.dewiki.template.literatur.format()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2012-11-24 PerfektesChaos@de.wikipedia
      WSTM.lang.p.dewiki.template.literatur.format( adjust );
   };   // .lang.p.dewiki.template.literatur.fire()



   WSTM.lang.p.dewiki.template.literatur.format  =  function (adjust) {
      // Vorlage:Literatur -- Formatierung
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      //               .symbol
      //               .values
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .str.spaces
      //    >  .str.sticks
      //    >  .lang.p.dewiki.kBytes.k
      //    >  .lang.p.dewiki.kBytes.m
      //    >  .lang.p.dewiki.template.literatur.def
      //    >< .lang.p.dewiki.template.literatur.re
      //    >< .lang.p.dewiki.template.literatur.vals
      //     < .w.encountered.literatur
      //    .w.template.mod.fix()
      //    .lang.p.dewiki.template.datumJJJJMonTT.fix()
      //    .lang.p.dewiki.template.literatur.fix()
      //    .lang.p.dewiki.kBytes.flip()
      //    .w.template.par.fiat()
      //    .w.template.mod.flush()
      //    .util.isbn.flip()
      //    .w.template.par.fixed()
      //    .lang.p.dewiki.template.zitation()
      // 2023-04-24 PerfektesChaos@de.wikipedia
      var p  =  " Ort Seiten Typ Online Format KBytes Abruf"
                + " Datum Jahr Monat Tag"
                + " Sammelwerk WerkErg Auflage Nummer Band "
                + " Reihe BandReihe NummerReihe"
                + " Spalten Kommentar Typ"
                + " Titel Autor Hrsg"
                + " Originalsprache Originaltitel Sprache Übersetzer"
                + " ISBN ISBNformalFalsch ISBNistFormalFalsch ISBNdefekt"
                + " ISSN arXiv DNB DOI LCCN OCLC PMC PMID ZDB ",
          d, g, i, n, s, v;
      WSTM.w.encountered.literatur  =  true;
      if (typeof this.re  !==  "object") {
         this.re              =  { };
         n                    =  "([1-9][0-9]*)[.,;]*$";
         d                    =  "(?:&nbsp;|&#8239;| )*" + n;
         this.re.number       =  new RegExp("^" + n);
         this.re.Auflage      =  new RegExp("^[1-9][0-9]*$");
         this.re.Band         =  new RegExp("^B(?:d\\.|and)" + d);
         this.re.BandReihe    =  this.re.Band;
         this.re.Format       =  new RegExp("(?:&nbsp;" +
                                              "|&#8239;" +
                                              "|&#160;" +
                                              "| +)");
         this.re.FormatH      =  new RegExp("\\bHTML\\b",
                                            "i");
         this.re.FormatP      =  new RegExp("\\bPDF\\b" +
                                            "(?:-Datei|-Dokument)?",
                                            "i");
         this.re.Hrsg         =  new RegExp(" *\\(Hr?s?g?g\\.?\\)$");
         this.re.JJJJ         =  new RegExp("^[0-9]{4}(-.+)?$");
         this.re.Klammer0     =  new RegExp("[()]");
         this.re.Nummer       =  new RegExp("^(?:Nr\\.|Nummer)" + d);
         this.re.NummerReihe  =  this.re.Nummer;
         this.re.SeiteSp      =  "^([1-9][0-9]*) *[-"
                                     + WSTM.str.spaces
                                               + "] *([1-9][0-9]*)$";
         this.re.SeiteSp      =  new RegExp(this.re.SeiteSp);
         this.re.SeiteSpff    =  "^([1-9][0-9]*) *(ff?)\\.?$";
         this.re.SeiteSpff    =  new RegExp(this.re.SeiteSpff);
         this.re.sepEnd       =  new RegExp(" *[,;/]+$");
         this.re.Strich       =  new RegExp("[" + WSTM.str.sticks + "]");
      }
      this.vals  =  { };
      g          =  p.split( " " );
      n          =  g.length;
      for ( i = 1;  i < n;  i++ ) {
         this.vals[ g[ i ] ]  =  false;
      }   // for i
      WSTM.w.template.par.fix( this.def, adjust );
      WSTM.lang.p.dewiki.template.datumJJJJMonTT.fix( adjust );
      v  =  adjust.values;   // Array 1...
      n  =  v.length;
      for ( i = 1;  i < n;  i++ ) {
         d  =  v[ i ];
         if ( p.indexOf( " " + d.symbol + " " )  >=  0 ) {
            if ( this.fix( d ) ) {
               adjust.learnt  =  true;
            }
         }
      }   // for i
      g  =  this.vals;
      d  =  [ ];
      if ( g.ISBNistFormalFalsch  &&  g
           .ISBN  &&
           ! g.ISBNformalFalsch ) {
         WSTM.w.template.par.fiat(adjust, "ISBNformalFalsch", g.ISBN);
         d.push( [ "^ISBN$",                true ] );
         d.push( [ "^ISBNistFormalFalsch$", true ] );
      }
      if ( typeof g.Autor  ===  "string"    &&
           this.re.Hrsg.test( g.Autor )   &&
           ! g.Hrsg ) {
         s = g.Autor.replace( this.re.Hrsg, "" );
         if ( ! this.re.Klammer0.test( s ) ) {
            WSTM.w.template.par.fiat( adjust, "Hrsg", s );
            d.push( [ "^Autor$", true ] );
            g.Autor  =  false;
         }
      }
      if ( g.Ort ) {
         WSTM.w.template.par.fiat(adjust, "Ort", g.Ort);
      }
      if ( g.Jahr   &&
           ( ! g.Datum  ||  g.Jahr === g.Datum ) ) {
         g.Datum  =  g.Jahr;
         d.push( [ "^Jahr$", true ] );
         g.Jahr  =  false;
      }
      if ( typeof g.ISBN  ===  "string" ) {
         WSTM.w.template.par.fiat(adjust, "ISBN", g.ISBN);
         if ( g.DNB ) {
            d.push( [ "^DNB$", true ] );
            g.DNB  =  false;
         }
         if ( g.Online  &&
              g.Online.mode === 47   &&
              typeof g.Online.children  ===  "object"   &&
              typeof g.Online.children[ 1 ]  ===  "object" ) {
            v  =  g.Online.children[ 1 ];
            if ( v.mode === 39   &&
                 typeof v.source  ===  "string"   &&
                 v.source.indexOf("://www.worldcat.org/oclc/", 3) > 3 ) {
               d.push( [ "^Online$", true ] );
               g.Online  =  false;
               if ( g.Abruf ) {
                  d.push( [ "^Abruf$", true ] );
                  g.Abruf  =  false;
               }
            }
         }
      }
      if ( ( g.ISBN || g.ISBNformalFalsch || g.ISBNdefekt )   &&
           g.Datum   &&
           this.re.JJJJ.test( g.Datum ) ) {
         if ( g.Datum.length > 4 ) {
            g.Datum  =  g.Datum.substr( 0, 4 );
            WSTM.w.template.par.fiat( adjust, "Datum", g.Datum );
         }
         if ( typeof g.ISBN  ===  "string" ) {
            n  =  parseInt( g.Datum, 10 );
            if ( n ) {
               v  =  false;
               if ( n < 2007  &&
                    g.ISBN.substr( 0, 4 ) === "978-"  &&
                    g.ISBN.length > 14 ) {
                  v  =  WSTM.util.isbn.flip( g.ISBN );
               } else if ( n >= 2007  &&
                           g.ISBN.length <= 13  &&
                           g.ISBN.substr( 0, 2 ) !== "97" ) {
                  v  =  WSTM.util.isbn.flip( g.ISBN );
               }
               if ( v ) {
                  g.ISBN  =  v;
                  WSTM.w.template.par.fiat( adjust, "ISBN", g.ISBN );
               }
            }
         }
      }
      if ( ! g.ISBNistFormalFalsch ) {
         d.push( [ "^ISBNistFormalFalsch$", true ] );
         g.ISBNistFormalFalsch  =  false;
      }
      if ( g.Reihe  &&  ! g.Sammelwerk ) {
         if ( g.Nummer  &&  ! g.NummerReihe ) {
            WSTM.w.template.par.fiat(adjust, "NummerReihe", g.Nummer);
            d.push( [ "^Nummer$", true ] );
            g.Nummer  =  false;
         }
         if ( g.Band  &&  ! g.BandReihe ) {
            WSTM.w.template.par.fiat(adjust, "BandReihe", g.Band);
            d.push( [ "^Band$", true ] );
            g.Band  =  false;
         }
      }
      if ( g.Format ) {
         WSTM.w.template.par.fiat( adjust, "Format", g.Format );
         if ( g.Online  &&  ! g.KBytes ) {
            WSTM.w.template.par.fiat( adjust, "KBytes", "" );
         }
      }
      p  =  " Datum Seiten Typ KBytes Abruf"
            + " Auflage Reihe Band BandReihe Nummer NummerReihe"
            + " Originalsprache Originaltitel Sprache Übersetzer"
            + " ISBNformalFalsch ISBNdefekt"
            + " ISSN DNB DOI LCCN PMC PMID ZDB ";
      p  =  p.split( " " );
      n  =  p.length;
      for ( i = 1;  i < n;  i++ ) {
         s  =  p[ i ];
         v  =  this.vals[ s ];
         if ( typeof v  ===  "string" ) {
            WSTM.w.template.par.fiat( adjust, s, v );
         }
      }   // for i
      if ( g.Online ) {
         WSTM.w.template.par.fiat( adjust, "Online", g.Online );
      } else {
         d.push( [ "^Online$", true ] );
         d.push( [ "^Format$", true ] );
         d.push( [ "^KBytes$", true ] );
         d.push( [ "^Abruf$", true ] );
      }
      if ( g.Originalsprache   &&
          !  ( g.Originaltitel || g["Übersetzer"] || g.Sprache ) ) {
         WSTM.w.template.par.fiat( adjust,
                                   "Sprache",
                                   g.Originalsprache );
         d.push( [ "^Originalsprache$", true ] );
      }
      if ( ! g.Sammelwerk ) {
         d.push( [ "^Sammelwerk$", true ] );
         if ( ! g.WerkErg ) {
            d.push( [ "^WerkErg$", true ] );
         }
         if ( ! g.Nummer ) {
            d.push( [ "^Nummer$", true ] );
         }
         if ( ! g.Band ) {
            d.push( [ "^Band$", true ] );
         }
      }
      if ( ! g.Reihe ) {
         d.push( [ "^Reihe$", true ] );
         if ( ! g.BandReihe ) {
            d.push( [ "^BandReihe$", false ] );
         }
         if ( ! g.NummerReihe ) {
            d.push( [ "^NummerReihe$", false ] );
         }
      }
      if ( ! g.Originalsprache  &&  ! g.Originaltitel ) {
         d.push( [ "^Originalsprache$", true ] );
         d.push( [ "^Originaltitel$", true ] );
         if ( ! g.Originaljahr) {
            d.push( [ "^Originaljahr$", true ] );
         }
         if ( ! g.Originalort) {
            d.push( [ "^Originalort$", true ] );
         }
         if ( ! g[ "Übersetzer" ]) {
            d.push( [ "^Übersetzer$", true ] );
         }
      }
      p  =  " ISBNformalFalsch ISBNdefekt Kommentar Spalten"
            + " ISSN arXiv DNB DOI LCCN OCLC PMC PMID ZDB Typ ";
      p  =  p.split( " " );
      n  =  p.length;
      for ( i = 1;  i < n;  i++ ) {
         s  =  p[ i ];
         if ( s   &&   typeof g[ s ]  !== "undefined"
              &&   g[ s ] === false ) {
            d.push( [ "^" + s + "$", true ] );
         }
      }   // for i
      if ( d.length ) {
         WSTM.w.template.mod.flush( adjust, d );
      }
      WSTM.w.template.par.fixed(this.def, adjust);
      WSTM.lang.p.dewiki.template.zitation(adjust);
   };   // .lang.p.dewiki.template.literatur.format()



   WSTM.lang.p.dewiki.template.literatur.fix  =  function ( assigned ) {
      // Vorlage:Literatur -- Parameterzuweisung prüfen
      // Precondition:
      //    assigned  -- .values element
      //                         .symbol
      //                         .value
      //                         .source
      // Postcondition:
      //    Returns true if minor change
      // Uses:
      //    >  .lang.p.dewiki.template.literatur.repar
      //    >  .lang.p.dewiki.template.literatur.re
      //    >  .lang.l.de.date
      //    >  .lang.l.de.langs
      //    >  .lang.correct
      //    >< .g.re.parUntrimmed
      //    >< .g.re.parLineFeed
      //     < .lang.p.dewiki.template.literatur.vals
      //    .str.parseIntNumber()
      //    .util.code.dnb()
      //    .util.code.doi()
      //    .util.code.isbn()
      //    .util.code.isbn()
      //    .util.code.lccn()
      //    .util.code.pmid()
      //    .util.code.pmc()
      //    .util.code.zdb()
      //    .util.date.fetch()
      //    .util.date.format()
      //    .util.code.lang()
      //    .errors.found()
      // Requires: JavaScript 1.3   fromCharCode()
      // 2023-02-01 PerfektesChaos@de.wikipedia
      var r  =  false,
          v  =  assigned.value,
          e, g, i, j, l, s, symbol;
      if ( v ) {
         switch ( typeof v ) {
            case "object" :
               if ( v.source ) {
                  if ( ! WSTM.g.re.parUntrimmed ) {
                     s                       =  "\f([ \n]*)" +
                                                 "([^ \n]" +
                                                    "(?:.+|\n)*" +
                                                       "[^ \n]" +
                                                             "|[^ \n])" +
                                                 "([ \n]*)\f";
                     WSTM.g.re.parUntrimmed  =  new RegExp(s, "");
                     WSTM.g.re.parLineFeed   =  new RegExp( "\n", "g" );
                  }
                  e  =  WSTM.g.re.parUntrimmed.exec( "\f"
                                                         + v.source
                                                                + "\f" );
                  if (e) {
                     if (e[2]) {
                        v.source  =  e[2].replace( WSTM.g.re.parLineFeed,
                                                   " " );
                     } else {
                        v.source  =  false;
                     }
                  } else {
                     v.source  =  false;
                  }
               }
               if ( ! v.source  &&  ! v.children) {
                  v  =  false;
               }
               break;
            case "string" :
               v  =  false;
               break;
         }   // switch typeof v
         if ( v && v.source && v.lookup ) {
            s  =  v.source;
            if ( s ) {
               l       =  false;
               symbol  =  assigned.symbol;
               switch ( symbol ) {
                  case "Auflage" :
                     if ( this.re.Auflage.test( s ) ) {
                        s  =  s + ".";
                     }
                     break;
                  case "Ort" :
                     this.vals.Ort  =  s.replace( this.re.sepEnd, "" );
                     break;
                  case "Seiten" :
                  case "Spalten" :
                     s  =  s.replace( this.re.Format,  " " );
                     this.vals[ symbol ]  =  s;
                     g  =  this.re.SeiteSp.exec( s );
                     if ( g ) {
                        i  =  WSTM.str.parseIntNumber( g[ 1 ], 10 );
                        j  =  WSTM.str.parseIntNumber( g[ 2 ], 10 );
                        if ( i < j ) {
                           g  =  i  +  String.fromCharCode( 8211 )  +  j;
                           if ( s !== g ) {
                              this.vals[ symbol ]  =  g;
                           }
                        } else {
                           l  =  true;
                        }
                     } else {
                        g  =  this.re.SeiteSpff.exec( s );
                        if ( g ) {
                           g  =  g[ 1 ] + " " + g[ 2 ] + ".";
                           if ( s !== g ) {
                              this.vals[ symbol ]  =  g;
                           }
                        }
                     }
                     break;
                  case "DNB" :
                  case "DOI" :
                  case "ISSN" :
                  case "LCCN" :
                  case "PMC" :
                  case "PMID" :
                  case "ZDB" :
                     g  =  symbol.toLowerCase();
                     s  =  s.replace( this.re.sepEnd, "" )
                            .replace( this.re.Strich, "-" );
                     l  =  WSTM.util.code[ g ](s, true);
                     this.vals[ symbol ]  =  s;
                     if ( l   &&   typeof l  ===  "object" ) {
                        if ( l[ 0 ] ) {
                           r  =  l[ 0 ];
                        }
                        if ( l[ 1 ] ) {
                           s  =  s + " *** " + l[ 1 ];
                        } else {
                           l  =  false;
                        }
                     }
                     break;
                  case "Typ" :
                     l  =  ( s !== "wl" );
                     break;
                  case "Abruf" :
                  case "Datum" :
                  case "Jahr" :
                     g  =  WSTM.util.date.fetch( s, true, "de" );
                     if ( g ) {
                        s  =  WSTM.util.date.format( g, 3 );
                     }
                     this.vals[ symbol ]  =  s;
                     break;
                  case "ISBN" :
                  case "ISBNformalFalsch" :
                  case "ISBNistFormalFalsch" :
                  case "Originaltitel" :
                  case "Übersetzer" :
                  case "Online" :
                     s  =  s.replace( this.re.sepEnd, "" );
                     this.vals[ symbol ]  =  s;
//                   if (symbol === "Online") {
                        // if PDF in Online -> Format
                        // http://example.com/downloads.html PDF-Downloads verfügbar
//                   }
                     break;
                  case "Format" :
                  case "KBytes" :
                     s  =  s.replace( this.re.Format,  " " )
                            .replace( this.re.FormatH, "" )
                            .replace( this.re.FormatP, "PDF" );
                     g  =  WSTM.lang.p.dewiki.kBytes.flip( s );
                     if ( g ) {
                        s  =  g;
                     }
                     this.vals[ symbol ]  =  s;
                     break;
                  case "Fundstelle" :
                  case "Kapitel" :
                     s  =  s.replace( this.re.Format,  " " );
                     this.vals[ symbol ]  =  s;
                     break;
                  case "Band" :
                  case "Nummer" :
                  case "BandReihe" :
                  case "NummerReihe" :
                     s  =  s.replace( this.re[ symbol ], "$1" )
                            .replace( this.re.number, "$1" );
                     this.vals[ symbol ]  =  s;
                     break;
                  case "Sprache" :
                  case "Originalsprache" :
                     if ( typeof WSTM.lang.l.de.langs[ s ]
                                                         === "string" ) {
                        s  =  WSTM.lang.l.de.langs[ s ];
                     } else {
                        g  =  WSTM.util.code.lang(s);
                        if ( typeof g  ===  "string" ) {
                           s  =  g;
                        }
                        if (typeof WSTM.lang.correct[ s ] === "string") {
                           s  =  WSTM.lang.correct[ s ];
                        }
                     }
                     this.vals[ symbol ]  =  s;
                     break;
               }   // switch .symbol
               if ( ! l  &&  s.indexOf( "," ) >= 0 ) {
                  i  =  s.length - 1;
                  g  =  s.substr( i, 1 );
                  if ( g.indexOf( ",/:;_" ) >= 0 ) {
                     s  =  ( i   ?   s.substr( 0,  i - 1 )   :   "")
                           +  "___" + g;
                  }
               }
               this.vals[ symbol ]  =  s;
            }
            if ( l ) {
               WSTM.errors.found( "templateParInvalid",
                                  false,
                                  "{{Literatur|" + assigned.symbol + "="
                                                 + s + "}}" );
            }
            if ( r ) {
               v.source  =  e[ 1 ] + r + e[ 3 ];
               this.vals[ assigned.symbol ]  =  v.source;
            }
         } else if ( v ) {
            this.vals[ assigned.symbol ]  =  v;
         }
      } else {
         this.vals[ assigned.symbol ]  =  false;
      }
      return  r;
   };   // .lang.p.dewiki.template.literatur.fix()



   WSTM.lang.p.dewiki.template.lueger1904  =  function ( adjust ) {
      // Vorlage:Lueger-1904
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .lang.p.dewiki.template.seiteBis()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2024-02-01 PerfektesChaos@de.wikipedia
      var d  =  [ [/^Lueger-1904$/i,  "Lueger-1904"],
                  [/^Autor$/i,      "Autor",       true],
                  [/^Lemma$/i,      "Lemma",       true],
                  [/^BK-Nummer$/i,  "BK-Nummer",   false],
                  [/^Band$/i,       "Band",        true],
                  [/^Seiten?$/i,    "Seite",       true],
                  [/^SeiteBis$/i,   "SeiteBis",    false],
                  [/^Kommentar$/i,  "Kommentar",   false],
                  [/^zenoID$/i,     "zenoID",      true] ];
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      WSTM.lang.p.dewiki.template.seiteBis( adjust );
   };   // .lang.p.dewiki.template.lueger1904()



   WSTM.lang.p.dewiki.template.luiseLexBez  =  function ( adjust ) {
      // Vorlage:LuiseLexBez
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .str.trim()
      //    .w.template.par.fiat()
      //    .o.WikiTom().fresh()
      //    .errors.found()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-08-08 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "Bezirk" ),
          s;
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            switch ( WSTM.str.trim( s ).toLowerCase() ) {
               case "chawi":
               case "1":
                  s  =  "ChaWi";
                  break;
               case "frkr":
               case "2":
                  s  =  "FrKr";
                  break;
               case "mitte":
               case "3":
                  s  =  "Mitte";
                  break;
               default:
                  s  =  false;
            }   // switch trim( Ausgabe )
            if ( s ) {
               if ( s !== e.value.source ) {
                  WSTM.w.template.par.fiat( adjust, "Bezirk", s );
               }
               adjust.fresh( false );
            } else {
               WSTM.errors.found( "templateParInvalid",
                                  false,
                                  "{{LuiseLexBez|Bezirk=?????}}" );
            }
         } else {
            WSTM.errors.found( "templateParInvalid",
                               false,
                               "{{LuiseLexBez|Bezirk=}}" );
         }
      } else {
         WSTM.errors.found( "templateParMissing",
                            false,
                            "{{LuiseLexBez|Bezirk=}}" );
      }
   };   // .lang.p.dewiki.template.luiseLexBez()



   WSTM.lang.p.dewiki.template.mehrspListe  =  { };



   WSTM.lang.p.dewiki.template.mehrspListe.def  =  [
           [/^Mehrspaltige Liste$/i,   "Mehrspaltige Liste"],
           [/^breite$/i,        "breite",        false],
           [/^anzahl$/i,        "anzahl",        false],
           [/^abstand$/i,       "abstand",       false],
           [/^gesamtbreite$/i,  "gesamtbreite",  false],
           [/^(?:1|liste)$/,    "liste",         true]
                                                   ];



   WSTM.lang.p.dewiki.template.mehrspListe.f  =  function ( adjust ) {
      // Vorlage:Mehrspaltige Liste
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.p.dewiki.template.mehrspListe.def
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .w.template.par.find()
      //    .str.trimL()
      //    .w.template.mod.furnish()
      //    .o.WikiTom().fresh()
      // 2019-10-12 PerfektesChaos@de.wikipedia
      var d  =  WSTM.lang.p.dewiki.template.mehrspListe.def,
          c, e;
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      d  =  { indent:    1,
              linebreak: false,
              lost:      false,
              leap:      false,
              leave:     false,
              later:     false,
              lastline:  true };
      WSTM.w.template.mod.furnish( adjust, d );
      e  =  WSTM.w.template.par.find( adjust, "liste" );
      if ( e   &&
           typeof e.value  ===  "object"
           &&     e.value ) {
         if ( typeof e.value.source === "string" ) {
            e.value.source  =  "\n" + WSTM.str.trimL( e.value.source,
                                                      true,
                                                      true );
            e.value.learnt  =  true;
         } else if ( typeof e.value.children  ===  "object" ) {
            c  =  e.value.children[ 0 ];
            if ( typeof c.source === "string" ) {
               c.source  =  "\n"
                            + WSTM.str.trimL( c.source, true, true );
               c.learnt  =  true;
            }
            c  =  e.value.children[ e.value.children.length - 1 ];
            if ( typeof c.source === "string" ) {
               c.source  =  WSTM.str.trimR( c.source, true, true  )
                            + "\n";
               c.learnt  =  true;
            }
         }
      }
      WSTM.w.template.mod.format( adjust );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.mehrspListe.f()



   WSTM.lang.p.dewiki.template.meyers1905  =  function ( adjust ) {
      // Vorlage:Meyers-1905
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .w.template.mod.flush()
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .lang.p.dewiki.template.seiteBis()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2024-02-01 PerfektesChaos@de.wikipedia
      var d  =  [ [/^Meyers-1905$/i,  "Meyers-1905"],
                  [/^Lemma|spezialkapitel$/i,  "Lemma",           true],
                  [/^BK-Nummer$/i,             "BK-Nummer",       false],
                  [/^Eintragsnummer$/i,        "Eintragsnummer",  false],
                  [/^(?:1|Band)$/i,            "Band",            true],
                  [/^(?:2|Seiten?)$/i,         "Seite",           true],
                  [/^(?:3|SeiteBis)$/i,        "SeiteBis",        false],
                  [/^Kommentar|bemerkung$/i,   "Kommentar",       false],
                  [/^zenoID$/i,                "zenoID",          true],
                  [/^kapiteltext$/i,           "kapiteltext",     false]
                ],
          e  =  WSTM.w.template.par.find( adjust, "kurz" );
      if ( e ) {
         WSTM.w.template.mod.flush( adjust,   [ [ "^kurz$",  true ] ] );
      }
      e  =  WSTM.w.template.par.find( adjust, "hervorhebung" );
      if ( e ) {
         WSTM.w.template.mod.flush( adjust,   [ [ "^hervorhebung$",
                                                  true ] ] );
      }
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      WSTM.lang.p.dewiki.template.seiteBis( adjust );
   };   // .lang.p.dewiki.template.meyers1905()



   WSTM.lang.p.dewiki.template.musicBrainzK  =  { };



   WSTM.lang.p.dewiki.template.musicBrainzK.def  =  [
           [/^MusicBrainz Künstler$/i,   "MusicBrainz Künstler"],
           [/^(?:id|1)$/i,               "id",    true],
           [/^(?:name|2)$/i,             "name",  false]
                                                      ];



   WSTM.lang.p.dewiki.template.musicBrainzK.f  =  function ( adjust ) {
      // Vorlage:MusicBrainz Künstler
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.p.dewiki.template.musicBrainzK.def
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      // 2020-08-08 PerfektesChaos@de.wikipedia
      var d  =  WSTM.lang.p.dewiki.template.musicBrainzK.def;
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
   };   // .lang.p.dewiki.template.musicBrainzK.f()



   WSTM.lang.p.dewiki.template.naviBlock  =  function ( adjust ) {
      // Vorlage:NaviBlock
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.p.dewiki.template.navileisteWL.translate
      //    .w.template.mod.furnish()
      //    .w.template.mod.flush()
      //    .str.trimL()
      //    .w.link.wiki.target()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2020-04-05 PerfektesChaos@de.wikipedia
      var d  =  { indent:    0,
                  linebreak: true,
                  lost:      false,
                  leap:      false,
                  lastline:  true },
          i, k, n, s, t, v;
      WSTM.w.template.mod.furnish( adjust, d );
      WSTM.w.template.mod.flush( adjust,
                                 [ [ "^[1-9]$", false ] ] );
      if ( typeof adjust.values  ===  "object" ) {
         v  =  adjust.values;   // Array 1...
         n  =  v.length;
         t  =  WSTM.lang.p.dewiki.template.navileisteWL.translate;
         for ( i = 1;  i < n;  i++ ) {
            d  =  v[ i ];
            k  =  parseInt( d.symbol,  10 );
            if ( k > 0   &&   d.symbol === "" + k ) {
               d  =  d.value;
               s  =  d.source;
               if ( s ) {
                  s  =  WSTM.str.trimL( s, true, true );
                  if ( s.indexOf( ":" )  >  0   &&
                       s.substr( 0, 8 ).toLowerCase() === "vorlage:" ) {
                     s  =  WSTM.str.trimL( s.substr( 8 ),
                                           true,
                                           true );
                  }
                  k  =  WSTM.w.link.wiki.target( s, true );
                  if ( k ) {
                     s  =  k;
                  }
                  if ( s.substr( 0, 18 )  === "Navigationsleiste " ) {
                     k  =  s.substr( 18 );
                     if ( t[ k ] ) {
                        s  =  "Navigationsleiste " + t[ k ];
                     }
                  }
                  if ( s !== d.source ) {
                     d.source       =  s;
                     adjust.learnt  =  true;
                  }
               }
            }
         }   // for i
      }
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.naviBlock()



   WSTM.lang.p.dewiki.template.navileisteWL  =  { };



   WSTM.lang.p.dewiki.template.navileisteWL.translate  =  {
      // 2013-03-09
      // lang.p.dewiki.template.navileisteWL.translate     2024-02-25
"Ämter und Städte im Hochstift Hildesheim (1523 - 1643)":
  "Ämter und Städte im Hochstift Hildesheim (1523–1643)",
"Arp":
  "Atlas of Peculiar Galaxies",
"Badische Staatsministerien bis 1918":
  "Landesregierungen von Baden",
"BAG SPNV":
  "Bundesverband SchienenNahverkehr",
"Chairmen der Ausschüsse des US-amerikanischen Senats":
  "Vorsitzende der Ausschüsse des US-amerikanischen Senats im 117. Kongress",
"Chinese Taipei bei Olympischen Spielen":
  "Chinesisch Taipeh bei Olympischen Spielen",
"DSL-Spielzeiten":
  "DPEL-Spielzeiten",
"EBSA-Snookereuropameisterschaften":
  "EBSA Snookereuropameisterschaften",
"EHF-Pokal":
  "EHF European League",
"Europameister im 4x100-Meter-Staffellauf":
  "Europameister im 4×100-Meter-Staffellauf",
"Europameisterinnen im 4x100-Meter-Staffellauf":
  "Europameisterinnen im 4×100-Meter-Staffellauf",
"Fed Cup":
  "Billie Jean King Cup",
"Football League Championship":
  "EFL Championship",
"Football League One":
  "EFL League One",
"Gewinner von Mailand-Sanremo":
  "Gewinner von Mailand–Sanremo",
"IC":
  "Index-Katalog",
"IBSF-Snookerweltmeisterschaften":
  "IBSF Snookerweltmeisterschaften",
"Japanischer Formel-3-Meister":
  "Japanische Formel-3-Meister",
"Kreuzfahrtschiffe der Royal Caribbean Cruises":
  "Kreuzfahrtschiffe von Royal Caribbean International",
"Ministerpräsidenten von Dänemark":
  "dänische Regierungschefs",
"Naturbahnrodel-Europameisterschaften":
  "Rennrodel-Europameisterschaften",
"Naturdenkmäler im Wetteraukreis":
  "Naturdenkmale im Wetteraukreis",
"Olympiasieger im 4x100-Meter-Staffellauf":
  "Olympiasieger im 4×100-Meter-Staffellauf",
"Olympiasiegerinnen im 4x100-Meter-Staffellauf":
  "Olympiasiegerinnen im 4×100-Meter-Staffellauf",
"Ortschaften im Landkreis Akköy":
  "Ortschaften im Landkreis Pamukkale",
"Ortsteile von Meeder":
  "Gemeindeteile von Meeder",
"Ortsteile von Selb":
  "Gemeindeteile von Selb",
"Ortsteile von Wunsiedel":
  "Gemeindeteile von Wunsiedel",
"OSV":
  "Ostdeutscher Sparkassenverband",
"Saisons EF Education First":
  "Saisons EF Education-EasyPost",
"Schweizer Fussballmeisterschaften":
  "Schweizer Super League",
"Second Ladys der Vereinigten Staaten":
  "Second Ladys und Gentlemen der Vereinigten Staaten",
"Spielzeiten der albanischen Fußballmeisterschaft":
  "Spielzeiten der höchsten albanischen Fußballliga",
"Spielzeiten der Welsh Premier League":
  "Spielzeiten der Cymru Premier",
"Spielzeiten der niederländischen Topklasse":
  "Spielzeiten der Derde Divisie",
"Stadien der Erste Bank Eishockey Liga":
  "Stadien der ICE Hockey League",
"Städte und Gemeinden im Riverside County":
  "Orte im Riverside County",
"Tatort-Folgen mit Hauptkommissar Ernst Roiter und Kommissar Zorrowski":
  "Tatort-Folgen mit Hauptkommissar Roiter und Kommissar Zorrowski",
"Tatort-Folgen mit Kommissar Eisner":
  "Tatort-Folgen mit Eisner",
"Toyota Grand Prix of Long Beach":
  "Acura Grand Prix of Long Beach",
"UCI Women’s Team":
  "UCI Women’s WorldTeam",
"Unihockey-Bundesliga":
  "Floorball-Bundesliga",
"GCX-Unternehmen":
  "Unternehmen im Global Challenges Index",
"UGC":
  "Uppsala General Catalogue",
"SV-Verbindungen":
  "Verbindungen des Sondershäuser Verbandes",
"Vereine der FA Women’s Premier League":
  "Vereine der FA Women’s National League",
"Vereine der Pepsideild":
  "Vereine der Besta deild",
"Vereine der Umaghlessi Liga":
  "Vereine der Erovnuli Liga",
"Vorstandsvorsitzende Daimler AG":
  "Vorstandsvorsitzende Mercedes-Benz Group AG",
"WTA-International-Turniere":
  "WTA-250-Turniere",
"WTA-Premier-Turniere":
  "WTA-500-1000-Turniere"
   };
/*
https://de.wikipedia.org/w/api.php?action=query&format=json
   &list=allredirects&arnamespace=10&arprefix=Navig&arlimit=500
*/



   WSTM.lang.p.dewiki.template.navileisteWL.fix  =  function ( adjust ) {
      // Vorlage:Navigationsleiste ... (Weiterleitung)
      // Precondition:
      //    adjust  -- detected identifier
      //               chars 1...18 === "avigationsleiste "
      // Postcondition:
      //    Returns newname string, if adjusted,  or  false
      // Uses:
      //    this
      //    >  .lang.p.dewiki.template.navileisteWL.translate
      //    .str.camelCasing()
      // Requires: JavaScript 1.3   charCodeAt()
      // 2013-01-21 PerfektesChaos@de.wikipedia
      var seek, shift,
          r       =  false,
          symbol  =  WSTM.str.camelCasing( adjust );
      if ( symbol.charCodeAt( 0 ) === 78 ) {
         seek   =  symbol.substr( 18 );
         shift  =  this.translate[ seek ];
         if ( shift ) {
            symbol  =  "Navigationsleiste " + shift;
         }
         if ( symbol !== adjust ) {
            r  =  symbol;
         }
      }
      return  r;
   };   // .lang.p.dewiki.template.navileisteWL.fix()



   WSTM.lang.p.dewiki.template.nieuwNederlBioW  =  { };



   WSTM.lang.p.dewiki.template.nieuwNederlBioW.def  =  [
           [/NieuwNederlBioWoord/i,  "NieuwNederlBioWoord"],
           [/^(Autor|4)$/i,      "Autor",      true],
           [/^(Band|1)$/i,       "Band",       true],
           [/^(Lemma|5)$/i,      "Lemma",      true],
           [/^(SpAb|2)$/i,       "SpAb",       true],
           [/^(SpBis|3)$/i,      "SpBis",      false],
           [/^dbnl$/i,           "dbnl",       true],
           [/^AutorID$/i,        "AutorID",    false] ];



   WSTM.lang.p.dewiki.template.nieuwNederlBioW.f  =  function (adjust) {
      // Vorlage:NieuwNederlBioWoord
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.p.dewiki.template.nieuwNederlBioW.def
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-08-08 PerfektesChaos@de.wikipedia
      var d  =  WSTM.lang.p.dewiki.template.nieuwNederlBioW.def;
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      adjust.fresh(false);
   };   // .lang.p.dewiki.template.nieuwNederlBioW.f()



/*
   WSTM.lang.p.dewiki.template.nordFamilje  =  { };



   WSTM.lang.p.dewiki.template.nordFamilje.def  =  [
           [/nordFamilje/,   "NordFamilje"],
           [/^Autor$/i,      "Autor",      false],
           [/^Lemma$/i,      "Lemma",      true],
           [/^Auflage$/i,    "Auflage",    true],
           [/^Band$/i,       "Band",       true],
           [/^Spalte$/i,     "Spalte",     true],
           [/^SpalteBis$/i,  "SpalteBis",  false],
           [/^Tafel$/i,      "Tafel",      false],
           [/^Suppl$/i,      "Suppl",      false],
           [/^Kommentar$/i,  "Kommentar",  false] ];



   WSTM.lang.p.dewiki.template.nordFamilje.pages  =  [
[ [ [    1,  256,  8 ],
    [  257, 1580,  0, true ] ],    //  1
  [ [    1, 1584,  8 ] ],          //  2
  [ [    1, 1584,  6 ] ],          //  3
  [ [    1, 1582,  6 ] ],          //  4
  [ [    1, 1584,  6 ] ],          //  5
  [ [    1, 1584,  4 ] ],          //  6
  [ [    1, 1584,  6 ] ],          //  7
  [ [    1, 1582,  4 ] ],          //  8
  [ [    1, 1584,  6 ] ],          //  9
  [ [    1, 1584,  6 ] ],          // 10
  [ [    1, 1584,  6 ] ],          // 11
  [ [    1, 1584,  6 ] ],          // 12
  [ [    1, 1584,  6 ] ],          // 13
  [ [    1, 1584,  6 ] ],          // 14
  [ [    1, 1584,  6 ] ],          // 15
  [ [    1, 1640,  6 ] ],          // 16
  [ [    1, 1600,  4 ] ],          // 17
  [ [    1,  856,  2 ] ],          // 18
  [ [    1,  208,  2 ],
    [  209, 1290,  6 ] ],          // 19
  [ [    1,  696,  4 ],
    [  697, 2340,  8 ],
    [ 2341, 2364, 12 ] ] ],        // 20
[ [ [    1,  248, 12 ],
    [  249,  260, 16 ],
    [  261,  264, 20 ],
    [  265,  268, 24 ],
    [  269,  288, 26 ],
    [  289,  432, 28 ],
    [  433,  524, 30 ],
    [  525,  540, 32 ],
    [  541,  724, 34 ],
    [  725,  780, 38 ],
    [  781,  808, 46 ],
    [  809,  812, 50 ],
    [  813,  816, 56 ],
    [  817,  860, 60 ],
    [  861,  960, 62 ],
    [  961, 1228, 64 ],
    [ 1229, 1288, 66 ],
    [ 1289, 1512, 68 ] ],        //  1
  [ [    1,  152, 12 ],
    [  153,  172, 16 ],
    [  173,  448, 26 ],
    [  449,  456, 30 ],
    [  457,  996, 34 ],
    [  997, 1196, 36 ],
    [ 1197, 1240, 38 ],
    [ 1241, 1512, 42 ] ],        //  2
  [ [    1,  212, 22 ],
    [  213,  368, 24 ],
    [  369,  372, 32 ],
    [  373,  944, 34 ],
    [  945,  964, 38 ],
    [  965, 1168, 40 ],
    [ 1169, 1264, 42 ],
    [ 1265, 1504, 56 ] ],        //  3
  [ [    1,  376, 16 ],
    [  377,  576, 18 ],
    [  737,  736, 22 ],
    [  787,  784, 52 ],
    [  825,  828, 54 ],
    [  849,  844, 56 ],
    [  905,  908, 58 ],
    [  909,  936, 60 ],
    [  937, 1504, 62 ] ],        //  4
  [ [    1,  176, 16 ],
    [  177,  224, 20 ],
    [  225,  364, 22 ],
    [  365,  480, 24 ],
    [  481,  644, 26 ],
    [  645,  736, 30 ],
    [  737,  752, 32 ],
    [  753,  756, 34 ],
    [  757,  832, 36 ],
    [  833,  836, 38 ],
    [  837, 1268, 40 ],
    [ 1269, 1384, 44 ],
    [ 1385, 1436, 46 ],
    [ 1437, 1504, 48 ] ],        //  5
  [ [    1,   72, 16 ],
    [   73,  308, 18 ],
    [  309,  312, 20 ],
    [  313,  568, 22 ],
    [  569,  572, 24 ],
    [  573,  580, 28 ],
    [  581,  844, 30 ],
    [  845,  888, 34 ],
    [  889,  932, 36 ],
    [  933, 1152, 42 ],
    [ 1153, 1180, 44 ],
    [ 1181, 1216, 46 ],
    [ 1217, 1360, 50 ],
    [ 1361, 1468, 52 ],
    [ 1469, 1476, 60 ],
    [ 1477, 1504, 62 ] ],       //  6
  [ [    1,  388, 16 ],
    [  389,  492, 18 ],
    [  493,  696, 20 ],
    [  697,  832, 22 ],
    [  833, 1004, 24 ],
    [ 1005, 1008, 26 ],
    [ 1009, 1068, 28 ],
    [ 1069, 1084, 32 ],
    [ 1085, 1088, 38 ],
    [ 1089, 1092, 42 ],
    [ 1093, 1156, 44 ],
    [ 1157, 1196, 46 ],
    [ 1197, 1420, 48 ],
    [ 1421, 1504, 50 ] ],       //  7
  [ [    1,  176, 16 ],
    [  177,  224, 18 ],
    [  225,  272, 20 ],
    [  273,  528, 24 ],
    [  529,  616, 28 ],
    [  617,  698, 32 ],
    [  699,  744, 34 ],
    [  745,  784, 36 ],
    [  785, 1000, 44 ],
    [ 1001, 1104, 46 ],
    [ 1105, 1504, 54 ] ],       //  8
  [ [    1,  200, 16 ],
    [  201, 1284, 18 ],
    [ 1285, 1504, 28 ] ],       //  9
  [ [    1,  100, 16 ],
    [  101,  240, 18 ],
    [  241,  496, 26 ],
    [  497,  608, 28 ],
    [  609,  832, 32 ],
    [  833,  892, 36 ],
    [  893,  896, 40 ],
    [  897, 1202, 44 ],
    [ 1203, 1312, 48 ],
    [ 1313, 1504, 52 ] ],       // 10
  [ [    1,  356, 16 ],
    [  357,  876, 20 ],
    [  877,  940, 22 ],
    [  941,  964, 24 ],
    [  965, 1312, 28 ],
    [ 1313, 1504, 32 ] ],       // 11
  [ [    1,  100, 16 ],
    [  101,  176, 20 ],
    [  177,  200, 24 ],
    [  201,  260, 26 ],
    [  261,  276, 30 ],
    [  277,  512, 32 ],
    [  513,  924, 36 ],
    [  925,  996, 38 ],
    [  997, 1028, 42 ],
    [ 1029, 1048, 46 ],
    [ 1049, 1264, 50 ],
    [ 1265, 1268, 54 ],
    [ 1269, 1292, 58 ],
    [ 1293, 1368, 60 ],
    [ 1369, 1504, 64 ] ],       // 12
  [ [    1,  432, 16 ],
    [  433,  456, 20 ],
    [  457,  560, 24 ],
    [  561,  780, 26 ],
    [  781, 1168, 28 ],
    [ 1169, 1504, 32 ] ],       // 13
  [ [    1,   32, 16 ],
    [   33,  228, 22 ],
    [  229,  624, 24 ],
    [  625,  840, 26 ],
    [  841, 1504, 32 ] ],       // 14
  [ [    1,  476, 16 ],
    [  477,  616, 18 ],
    [  617,  652, 22 ],
    [  653,  656, 26 ],
    [  657, 1076, 30 ],
    [ 1077, 1256, 34 ],
    [ 1257, 1504, 36 ] ],       // 15
  [ [    1,  100, 16 ],
    [  101,  376, 20 ],
    [  377,  500, 24 ],
    [  501,  728, 28 ],
    [  729,  730, 30 ],
    [  731,  756, 32 ],
    [  757,  792, 34 ],
    [  793, 1044, 36 ],
    [ 1045, 1048, 48 ],
    [ 1049, 1056, 54 ],
    [ 1057, 1364, 58 ],
    [ 1365, 1504, 60 ] ],       // 16
  [ [    1,  420, 18 ],
    [  421,  672, 20 ],
    [  673,  980, 28 ],
    [  991, 1376, 30 ],
    [ 1377, 1502, 34 ] ],       // 17
  [ [    1,  556, 16 ],
    [  557,  616, 20 ],
    [  617,  864, 22 ],
    [  865, 1184, 26 ],
    [ 1185, 1502, 28 ] ],       // 18
  [ [    1,   40, 16 ],
    [   41,  212, 22 ],
    [  213,  256, 24 ],
    [  257,  300, 28 ],
    [  301,  536, 34 ],
    [  537,  652, 36 ],
    [  653,  668, 40 ],
    [  669,  680, 42 ],
    [  681,  900, 46 ],
    [  901,  904, 50 ],
    [  905, 1184, 54 ],
    [ 1185, 1312, 58 ],
    [ 1313, 1376, 60 ],
    [ 1377, 1480, 62 ],
    [ 1481, 1484, 66 ],
    [ 1485, 1504, 68 ] ],       // 19
  [ [    1,    4, 16 ],
    [    5,  380, 18 ],
    [  381,  440, 20 ],
    [  441,  676, 26 ],
    [  677,  808, 30 ],
    [  809,  832, 32 ],
    [  833,  936, 36 ],
    [  937, 1308, 40 ],
    [ 1309, 1504, 44 ] ],       // 20
  [ [    1,   68, 16 ],
    [   69,   72, 24 ],
    [   73,   80, 32 ],
    [   81,  348, 36 ],
    [  349,  468, 38 ],
    [  469,  528, 42 ],
    [  529,  656, 46 ],
    [  657,  660, 50 ],
    [  661, 1188, 52 ],
    [ 1189, 1336, 56 ],
    [ 1337, 1504, 60 ] ],       // 21
  [ [    1,  724, 16 ],
    [  725, 1352, 20 ],
    [ 1353, 1392, 22 ],
    [ 1393, 1436, 26 ],
    [ 1437, 1500, 28 ] ],       // 22
  [ [    1,  652, 16 ],
    [  653,  656, 20 ],
    [  657,  672, 26 ],
    [  673,  684, 40 ],
    [  685,  724, 42 ],
    [  725,  868, 46 ],
    [  869,  936, 48 ],
    [  937, 1064, 50 ],
    [ 1065, 1428, 52 ],
    [ 1429, 1448, 56 ],
    [ 1449, 1514, 60 ] ],       // 23
  [ [    1,   48, 16 ],
    [   49,  176, 18 ],
    [  177,  688, 22 ],
    [  689,  756, 24 ],
    [  757, 1260, 26 ],
    [ 1261, 1504, 30 ] ],       // 24
  [ [    1,  420, 16 ],
    [  421,  436, 18 ],
    [  437,  728, 20 ],
    [  729,  772, 22 ],
    [  773, 1044, 24 ],
    [ 1045, 1084, 28 ],
    [ 1085, 1184, 30 ],
    [ 1185, 1200, 32 ],
    [ 1201, 1208, 34 ],
    [ 1209, 1264, 36 ],
    [ 1265, 1360, 40 ],
    [ 1361, 1504, 42 ] ],       // 25
  [ [    1,   16, 16 ],
    [   17,  120, 20 ],
    [  121,  312, 22 ],
    [  313,  480, 26 ],
    [  481,  628, 30 ],
    [  629,  636, 34 ],
    [  637,  676, 36 ],
    [  677,  680, 38 ],
    [  681, 1040, 40 ],
    [ 1041, 1284, 42 ],
    [ 1285, 1424, 44 ],
    [ 1425, 1456, 50 ],
    [ 1457, 1460, 62 ],
    [ 1461, 1504, 70 ] ],       // 26
  [ [    1,   52, 16 ],
    [   53,   72, 20 ],
    [   73,  136, 24 ],
    [  137,  296, 28 ],
    [  297,  412, 30 ],
    [  413,  508, 32 ],
    [  509,  592, 34 ],
    [  593,  816, 36 ],
    [  817, 1132, 40 ],
    [ 1133, 1136, 42 ],
    [ 1337, 1208, 48 ],
    [ 1209, 1316, 50 ],
    [ 1317, 1404, 52 ],
    [ 1405, 1504, 54 ] ],       // 27
  [ [    1,   68, 16 ],
    [   69,  584, 18 ],
    [  585,  600, 20 ],
    [  601,  704, 22 ],
    [  705,  720, 24 ],
    [  721,  738, 26 ],
    [  739,  744, 28 ],
    [  745, 1188, 30 ],
    [ 1189, 1312, 32 ] ],       // 28
  [ [    1,   16, 16 ],
    [   17,  168, 18 ],
    [  169,  600, 20 ],
    [  601,  652, 24 ],
    [  653,  864, 26 ] ],       // 29
  [ [    1,   96, 16 ],
    [   97,  132, 18 ],
    [  133,  136, 22 ],
    [  137,  348, 26 ],
    [  349,  624, 30 ],
    [  625,  992, 38 ],
    [  993, 1088, 46 ],
    [ 1089, 1216, 56 ],
    [ 1217, 1240, 62 ],
    [ 1241, 1310, 64 ] ],       // 30
  [ [    1,  128, 16 ],
    [  129,  752, 18 ],
    [  753,  860, 20 ],
    [  861, 1132, 26 ],
    [ 1133, 1184, 30 ],
    [ 1185, 1312, 32 ] ],       // 31
  [ [    1,  304, 16 ],
    [  305,  800, 24 ],
    [  801,  808, 30 ],
    [  809, 1308, 32 ] ],       // 32
  [ [    1,  160, 16 ],
    [  161,  192, 20 ],
    [  193,  292, 22 ],
    [  293,  384, 24 ],
    [  385,  388, 26 ],
    [  389,  480, 28 ],
    [  481,  772, 32 ],
    [  773,  856, 34 ],
    [  857,  984, 36 ],
    [  985, 1040, 40 ],
    [ 1041, 1108, 44 ],
    [ 1109, 1278, 46 ] ],       // 33
  [ [    1,   56, 16 ],
    [   57,  128, 18 ],
    [  129,  350, 22 ] ],       // 34
  [ [    1,  400, 16 ],
    [  401,  892, 18 ],
    [  893, 1304, 22 ],
    [ 1305, 1312, 26 ] ],       // 35 Supplement
  [ [    1,  154, 16 ],
    [  165,  240, 18 ],
    [  241,  340, 20 ],
    [  341,  492, 22 ],
    [  493,  508, 24 ],
    [  509,  800, 26 ],
    [  801,  816, 28 ],
    [  817,  844, 30 ],
    [  845,  956, 32 ],
    [  957, 1024, 34 ],
    [ 1025, 1216, 36 ],
    [ 1217, 1304, 38 ],
    [ 1305, 1312, 40 ] ],       // 36 Supplement
  [ [    1,  132, 16 ],
    [  133,  176, 18 ],
    [  177,  188, 20 ],
    [  189,  236, 22 ],
    [  237,  296, 24 ],
    [  297,  300, 26 ],
    [  301,  308, 28 ],
    [  309,  572, 30 ],
    [  573,  616, 32 ],
    [  617,  620, 34 ],
    [  621,  672, 36 ],
    [  673,  696, 38 ],
    [  697,  816, 42 ],
    [  817,  860, 44 ],
    [  861,  876, 46 ],
    [  877, 1088, 48 ],
    [ 1089, 1312, 52 ] ],       // 37 Supplement
  [ [    1,   68, 16 ],
    [   69,   80, 18 ],
    [   81,  268, 22 ],
    [  269,  290, 24 ],
    [  291,  478, 26 ],
    [  479,  508, 28 ],
    [  509,  524, 30 ],
    [  525,  544, 32 ],
    [  545,  740, 36 ],
    [  741,  800, 38 ],
    [  801,  808, 40 ],
    [  809, 1108, 42 ],
    [ 1109, 1136, 44 ],
    [ 1137, 1256, 46 ],
    [ 1257, 1288, 48 ],
    [ 1289, 1336, 50 ],
    [ 1337, 1436, 52 ] ],       // 38 Supplement
  [ [    1,  184, 214 ],
    [  185,  624, 216 ],
    [  625,  892, 220 ],
    [  893,  920, 226 ],
    [  921,  960, 228 ] ] ]    // 39 = 34 Supplement
];   // 2017-10-23



   WSTM.lang.p.dewiki.template.nordFamilje.fetch  =  function ( aEdt,
                                                                aVol,
                                                                aPage ) {
      // Retrieve bibliographics from runeberg.org/nf key values
      // Precondition:
      //    aEdt   -- edition number
      //    aVol   -- volume number
      //    aPage  -- page number
      // Postcondition:
      //    Returns false, or object
      //                      .edition    -- edition number
      //                      .volume     -- volume number
      //                      .column     -- column number or false
      //                      .columnEnd  -- column number or false
      //                      .page       -- page number or false
      //                      .suppl      -- boolean supplement
      // Uses:
      //    this
      //    >  .lang.p.dewiki.template.nordFamilje.pages
      // 2017-10-23 PerfektesChaos@de.wikipedia
      var  m  =  aVol - 1,
           r  =  false,
           block, i, j, l, vol;
      if ( aVol >= 19 ) {
         if ( aEdt === 1 ) {
            l  =  true;
         } else if ( aVol === 34 ) {
            l  =  ( aPage > 197 );
            if ( l ) {
               m  =  38;
            }
         } else if ( aVol > 34 ) {
            l  =  true;
         }
      }
      vol  =  this.pages[ aEdt - 1 ][ m ];
      if ( vol ) {
         r  =  { edition:   aEdt,
                 volume:    aVol,
                 column:    false,
                 columnEnd: false,
                 page:      false,
                 suppl:     l || false };
         for ( i = 0;  i < vol.length;  i++ ) {
            block  =  vol[ i ];
            j      =  aPage - block[ 2 ];
            if ( ! block[ 3 ] ) {
               j  *=  2;
            }
            if ( j <= block[ 1 ] ) {
               if ( j >= block[ 0 ] ) {
                  r.column  =  j;
               }
               break;   // for i
            }
         }   // for i
         if ( ! r.column ) {
            r.page  =  aPage;
         }
      }
      return  r;
   };   // .lang.p.dewiki.template.nordFamilje.fetch()



   WSTM.lang.p.dewiki.template.nordFamilje.fiat  =  function ( adjust,
                                                               assign ) {
      // Vorlage:NordFamilje
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      //    assign  -- object
      //               .edition    -- edition number
      //               .volume     -- volume number
      //               .column     -- column number or false
      //               .columnEnd  -- column number or false
      //               .page       -- page number or false
      //               .suppl      -- boolean supplement
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    this
      //    .w.template.par.fiat()
      //    .lang.p.dewiki.template.nordFamilje.format()
      // 2017-10-23 PerfektesChaos@de.wikipedia
      WSTM.w.template.par.fiat( adjust, "Auflage",
                                        assign.edition + "" );
      WSTM.w.template.par.fiat( adjust, "Band",
                                        assign.volume + "" );
      if ( assign.column ) {
         WSTM.w.template.par.fiat( adjust, "Spalte",
                                           assign.column + "" );
         if ( assign.columnEnd ) {
            WSTM.w.template.par.fiat( adjust, "SpalteBis",
                                      assign.columnEnd + "" );
         }
      } else {
         WSTM.w.template.par.fiat( adjust, "Tafel",
                                           assign.page + "" );
      }
      if ( assign.suppl ) {
         WSTM.w.template.par.fiat( adjust, "Suppl", "1" );
      }
      this.format( adjust );
   };   // .lang.p.dewiki.template.nordFamilje.fiat()



   WSTM.lang.p.dewiki.template.nordFamilje.fill  =  function ( access ) {
      // Create {{NordFamilje}}
      // Precondition:
      //    access  -- string, runeberg.org/nf URL
      // Postcondition:
      //    Returns false, or string with transclusion
      // Uses:
      //    .lang.p.dewiki.template.nordFamilje.foreign()
      // 2018-02-26 PerfektesChaos@de.wikipedia
      var o  =  this.foreign( access ),
          r;
      if ( o ) {
         r  =  "{{NordFamilje |Lemma= |Auflage=";
         if ( typeof o.edition  ===  "number" ) {
            r  =  r + o.edition;
         }
         r  =  r + " |Band=";
         if ( typeof o.volume  ===  "number" ) {
            r  =  r + o.volume;
         }
         r  =  r + " |Spalte=";
         if ( typeof o.column  ===  "number" ) {
            r  =  r + o.column;
         }
         r  =  r + " |SpalteBis=";
         if ( typeof o.suppl  ===  "boolean"
              &&     o.suppl ) {
            r  =  r + " |Suppl=1";
         }
         r  =  r + "}}";
      }
      return  r;
   };   // .lang.p.dewiki.template.nordFamilje.fill()



   WSTM.lang.p.dewiki.template.nordFamilje.foreign  =  function (access) {
      // Retrieve bibliographics from runeberg.org/nf
      // Precondition:
      //    access  -- string, runeberg.org/nf URL
      // Postcondition:
      //    Returns false, or object
      //                      .edition    -- edition number
      //                      .volume     -- volume number
      //                      .column     -- column number or false
      //                      .page       -- page number or false
      //                      .suppl      -- boolean supplement
      // Uses:
      //    this
      //    .lang.p.dewiki.template.nordFamilje.fetch()
      // 2018-09-26 PerfektesChaos@de.wikipedia
      var re   =  new RegExp( "//runeberg\\.org/nf"
                              + "([abc])"
                              + "([a-t])"
                              + "/0*"
                              + "([1-9][0-9]*)"
                              + "\\.html?" ),
          got  =  re.exec( access ),
          r    =  false,
          i, j, k;
      if ( got ) {
         i  =  ( got[ 1 ] === "a"  ?  1  :  2 );
         j  =  got[ 2 ].charCodeAt( 0 )  -  96;
         if ( got[ 1 ] === "c" ) {
            j  +=  20;
         }
         k  =  parseInt( got [ 3 ], 10 );
         r  =  this.fetch( i, j, k );
      } else {
         r  =  false;
      }
      return  r;
   };   // .lang.p.dewiki.template.nordFamilje.foreign()



   WSTM.lang.p.dewiki.template.nordFamilje.format  =  function ( adjust ) {
      // Vorlage:NordFamilje
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    this
      //    >  .lang.p.dewiki.template.nordFamilje.def
      //    .w.template.par.fixed()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-08-08 PerfektesChaos@de.wikipedia
      WSTM.w.template.par.fixed( WSTM.lang.p.dewiki.template.nordFamilje.def,
                                 adjust );
      adjust.values[0].symbol  =  "NordFamilje";
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.nordFamilje.format()
*/



   WSTM.lang.p.dewiki.template.normdaten  =  { };



   WSTM.lang.p.dewiki.template.normdaten.fetch  =  function () {
      // Apply TYP=p if person
      // Uses:
      //    >  .w.encountered.normdaten
      //    .lang.p.dewiki.isPerson()
      //    .w.template.par.fiat()
      // 2012-06-27 PerfektesChaos@de.wikipedia
      if ( WSTM.lang.p.dewiki.isPerson() ) {
         WSTM.w.template.par.fiat( WSTM.w.encountered.normdaten,
                                   "TYP",
                                   "p" );
      }
   };   // .lang.p.dewiki.template.normdaten.fetch()



   WSTM.lang.p.dewiki.template.normdaten.fire  =  function ( adjust ) {
      // Vorlage:Normdaten -- Formatierung
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >< .w.encountered.normdaten
      //    .lang.p.dewiki.template.normdaten.format()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2012-06-22 PerfektesChaos@de.wikipedia
      if ( adjust  &&  ! WSTM.w.encountered.normdaten ) {
         WSTM.w.encountered.normdaten  =  adjust;
      }
      WSTM.lang.p.dewiki.template.normdaten.format();
   };   // .lang.p.dewiki.template.normdaten.fire()



   WSTM.lang.p.dewiki.template.normdaten.format  =  function () {
      // Vorlage:Normdaten -- Formatierung
      // Postcondition:
      //    .w.encountered.normdaten was changed if necessary
      // Uses:
      //    >< .w.encountered.normdaten
      //    .w.template.mod.trim()
      //    .w.template.mod.flush()
      //    .w.template.mod.fix()
      //    .w.template.mod.fixed()
      //    .w.template.par.find()
      //    .w.template.par.fiat()
      //    .hooks.finalize()
      //    .w.template.mod.furnish()
      //    .w.template.mod.format()
      //    (.lang.p.dewiki.template.normdaten.fetch)
      // 2021-05-05 PerfektesChaos@de.wikipedia
      var d  =  [ [/^(GKD|SWD)$/i, false] ],
          t  =  [ [/^Normdaten/i,  "Normdaten"],
                  [/^TYP$/i,       "TYP",       true],
                  [/^GND$/i,       "GND",       true],
                  [/^LCCN$/i,      "LCCN",      false],
                  [/^NDL$/i,       "NDL",       false],
                  [/^VIAF$/i,      "VIAF",      false],
                  [/^GNDName$/i,   "GNDName",   false],
                  [/^GNDfehlt$/i,  "GNDfehlt",  false],
                  [/^GNDCheck$/i,  "GNDCheck",  false],
                  [/^REMARK$/i,    "REMARK",    false],
                  [/^GKD$/i,       "GKD",       false] ],
          o  =  WSTM.w.encountered.normdaten,
          e, got, p, s;
      WSTM.w.template.mod.trim( o );
      WSTM.w.template.mod.flush( o, d );
      WSTM.w.template.par.fix( t, o );
      WSTM.w.template.par.fixed( t, o );
      e  =  WSTM.w.template.par.find( o, "TYP" );
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            p  =  s.toLowerCase();
            if ( p !== s ) {
               WSTM.w.template.par.fiat( o, "TYP", p );
            }
         } else {
            WSTM.hooks.finalize( this.fetch );
         }
      }
      e  =  WSTM.w.template.par.find( o, "LCCN" );
      if ( e ) {
         s  =  e.flat();
         if ( s   &&
              s.indexOf( "/" ) > 0 ) {
            e    =  new RegExp( "^([A-Za-z]+)/"  +
                                 "((?:1[89]|20)?[0-9][0-9])/"  +
                                 "(0*[1-9][0-9]*)$" );
            got  =  e.exec( s );
            if ( got ) {
               s  =  "00000" + got[ 3 ];
               s  =  got[ 1 ].toLowerCase()  +
                     got[ 2 ]  +
                     s.substr( s.length - 6 );
               WSTM.w.template.par.fiat( o, "LCCN", s );
            }
         }
      }
      WSTM.w.template.mod.furnish( o,
                                   { indent:    0,
                                     later:     false,
                                     leap:      false,
                                     leave:     false,
                                     linebreak: false,
                                     lineup:    false
                                   } );
      if ( o.learnt ) {
         WSTM.w.template.mod.format( o );
      }
   };   // .lang.p.dewiki.template.normdaten.format()



   WSTM.lang.p.dewiki.template.nts  =  { };



   WSTM.lang.p.dewiki.template.nts.f  =  function ( adjust ) {
      // Vorlage:nts -- eliminieren
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .o.WikiTom.Template
      //    >  .o.WikiTom.ParserFun
      //    >  .o.WikiTom.TmplParAssign
      //    .w.template.par.find()
      //    .str.trim()
      //    .o.WikiTom().fresh()
      //    .w.template.mod.furnish()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2022-06-04 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "1" ),
          c, cs, got, n, p, s, source, that;
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            s     =  WSTM.str.trim( s, true, true );
            n     =  s.length;
            that  =  WSTM.lang.p.dewiki.template.nts;
            if ( s === "0" ) {
               source  =  "0";
            } else if ( n <= 3 ) {
               if ( typeof that.re3  !==  "object" ) {
                  that.re3  =  new RegExp( "^[1-9][0-9]?[0-9]?$" );
               }
               if ( that.re3.test( s ) ) {
                  source  =  s;
               }
            } else if ( n <= 6 ) {
               if ( typeof that.re6  !==  "object" ) {
                  that.re6  =  new RegExp( "^([1-9][0-9]?[0-9]?)" +
                                            "([0-9][0-9][0-9])$" );
               }
               got  =  that.re6.exec( s );
               if ( got ) {
                  source  =  got[ 1 ] + "." + got[ 2 ];
               }
            } else if ( n <= 9 ) {
               if ( typeof that.re9  !==  "object" ) {
                  that.re9  =  new RegExp( "^([1-9][0-9]?[0-9]?)" +
                                            "([0-9][0-9][0-9])" +
                                            "([0-9][0-9][0-9])$" );
               }
               got  =  that.re9.exec( s );
               if ( got ) {
                  source  =  got[ 1 ] + "." + got[ 2 ] + "." + got[ 3 ];
               }
            }
            if ( ! source ) {
               n  =  s.indexOf( "," );
               if ( n <= 0 ) {
               } else if ( n <= 3 ) {
                  if ( typeof that.reC3  !==  "object" ) {
                     that.reC3  =  new RegExp( "^[0-9][0-9]?[0-9]?" +
                                                ",[0-9]+$" );
                  }
                  if ( that.reC3.test( s ) ) {
                     source  =  s;
                  }
               } else if ( n <= 6 ) {
                  if ( typeof that.reC6  !==  "object" ) {
                     that.reC6  =  new RegExp( "^([0-9][0-9]?[0-9]?)" +
                                                "([0-9][0-9][0-9]" +
                                                 ",[0-9]+)$" );
                  }
                  got  =  that.reC6.exec( s );
                  if ( got ) {
                     source  =  got[ 1 ] + "." + got[ 2 ];
                  }
               }
            }
            if ( ! source ) {
               n  =  s.indexOf( "." );
               if ( n <= 0 ) {
               } else if ( n <= 3 ) {
                  if ( typeof that.reP3  !==  "object" ) {
                     that.reP  =  new RegExp( "^[1-9][0-9]?[0-9]?" +
                                               "(\\.[0-9][0-9][0-9])+" +
                                               "$" );
                  }
                  if ( that.reP.test( s ) ) {
                     source  =  s;
                  }
               }
            }
         } else if ( typeof e.value  ===  "object"   &&
                     typeof e.value.children  ===  "object"   &&
                     e.value.children.length === 2 ) {
            e.value.children[ 0 ].symbol  =  "nts";
            c  =  e.value.children[ 1 ];
            if ( typeof c  ===  "object"
                 &&     c   &&
                 typeof c.children  ===  "object"   &&
                 typeof c.children.length  ===  "number"
                 &&     c.children.length >= 3    &&
                 ( typeof c.mode  ===  "number"    &&
                        ( c.mode === WSTM.o.WikiTom.Template  ||
                          c.mode === WSTM.o.WikiTom.ParserFun )   ||
                   ! c.mode ) ) {
               c   =  adjust.children[ 1 ];
               cs  =  adjust.children[ 2 ];
               if ( typeof c  ===  "object"
                    &&     c   &&
                    typeof c.source  ===  "string"   &&
                    typeof cs  ===  "object"
                    &&     cs   &&
                    typeof cs.mode  ===  "number"
                    &&     cs.mode  ===  WSTM.o.WikiTom.TmplParAssign
                    &&
                    typeof cs.source  ===  "string"
                    &&     cs.source  ===  "|" ) {
                  c.learnt    =  true;
                  c.template  =  false;
                  p           =  adjust.children[ 3 ];
                  if ( typeof p  ===  "object"
                       &&     p   &&
                       typeof p.children  ===  "object"   &&
                       typeof p.children.length  ===  "number"
                       &&     p.children.length >= 2
                        ) {
                     p  =  p.children[ 1 ];
                     if ( typeof p  ===  "object"
                          &&     p   &&
                          typeof p.children  ===  "object"   &&
                          typeof p.children.length  ===  "number"
                          &&     p.children.length >= 1 ) {
                        p  =  p.children[ 0 ];
                        if ( typeof p  ===  "object"
                             &&     p   &&
                             typeof p.source  ===  "string" ) {
                           s  =  p.source;
                           if ( s === "{{formatnum:" ) {
                              p  =  false;
                           }
                        }
                     }
                  }
                  if ( p ) {
                     c.mode        =  WSTM.o.WikiTom.ParserFun;
                     c.scope       =  "magicword";
                     c.source      =  "formatnum";
                     cs.source     =  ":";
                     cs.mode       =  WSTM.o.WikiTom.TmplParAssign;
                                      //             ParserAssign
                     adjust.mode   =  WSTM.o.WikiTom.ParserFun;
                     adjust.scope  =  "magicword";
                     adjust.values[ 0 ].symbol  =  "formatnum";
                  } else {
                     if ( adjust.children.length === 5 ) {
                        for ( n = 0;  n < 5;  n++ ) {
                           if ( n !== 3 ) {
                              c  =  adjust.children[ n ];
                              c.mode      =  WSTM.o.WikiTom.TextOnly;
                              c.scope     =  null;
                              c.source    =  "";
                              c.template  =  false;
                           }
                        }   // for n
                        adjust.scope  =  null;
                        adjust.value  =  null;
                        adjust.mode   =  WSTM.o.WikiTom.TextOnly;
                        source        =  null;
                     }
                  }
                  adjust.fresh( false );
               }
            }
         } else if ( typeof e.value  ===  "object"   &&
                     typeof e.value.children  ===  "object" ) {
            e.value.children[ 0 ].symbol  =  "nts";
            adjust.fresh( false );
         }
      } else {
         source  =  "";
      }
      if ( typeof source  ===  "string" ) {
         adjust.children  =  null;
         adjust.symbol    =  null;
         adjust.values    =  null;
         adjust.lookup    =  false;
         adjust.source    =  source;
         adjust.mode      =  WSTM.o.WikiTom.TextOnly;
         adjust.fresh( false );
      } else if ( adjust.mode === WSTM.o.WikiTom.Template ) {
         WSTM.w.template.mod.furnish( adjust,
                                      WSTM.lang.templates.wikitext.inline
                                    );
      }
   };   // .lang.p.dewiki.template.nts.f()



   WSTM.lang.p.dewiki.template.oxfordDNB  =  { re: false };



   WSTM.lang.p.dewiki.template.oxfordDNB.def  =  [
           [/^OxfordDNB$/i,    "OxfordDNB"],
           [/^Autor|Verfasser$/i,  "Autor",          true],
           [/^Lemma$/i,            "Lemma",          true],
           [/^ID$/i,               "ID",             true],
           [/^Band$/i,             "Band",           true],
           [/^Seite(?:Vo)?n?$/i,   "SeiteVon",       true],
           [/^SeiteBis$/i,         "SeiteBis",       false],
           [/^Stand$/i,            "Stand",          false],
           [/^Kommentar$/i,        "Kommentar",      false],
           [/^Abruf|Zugriff$/i,    "Abruf",          false],
           [/^FreierZugriff$/i,    "FreierZugriff",  false] ];



   WSTM.lang.p.dewiki.template.oxfordDNB.f  =  function ( adjust ) {
      // Vorlage:OxfordDNB
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.p.dewiki.template.oxfordDNB.def
      //    >< .lang.p.dewiki.template.oxfordDNB.re
      //    .w.template.par.find()
      //    .w.template.mod.flush()
      //    .w.template.par.fiat()
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .lang.p.dewiki.template.seiteBis()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2024-02-18 PerfektesChaos@de.wikipedia
      var t  =  WSTM.lang.p.dewiki.template.oxfordDNB,
          d  =  t.def,
          e  =  WSTM.w.template.par.find( adjust, "kurz" ),
          got, i, k, s, shift;
      if ( e ) {
         WSTM.w.template.mod.flush( adjust,   [ [ "^kurz$",  true ] ] );
      }
      e  =  WSTM.w.template.par.find( adjust, "DOI" );
      if ( e ) {
         WSTM.w.template.mod.flush( adjust,   [ [ "^DOI$",  true ] ] );
      }
      e  =  WSTM.w.template.par.find( adjust, "ID" );
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            s  =  WSTM.str.trim( s, true, true );
            if ( s ) {
               if ( ! t.re ) {
                  t.re  =  { slash:  new RegExp( "^([0-9][0-9]?)" +
                                                  "/1010" +
                                                  "([0-9][0-9])" +
                                                  "([0-9][0-9][0-9])$" ),
                             s1010:  new RegExp( "^1010" +
                                                  "([0-9][0-9])" +
                                                  "([0-9][0-9][0-9])$" ),
                             single: new RegExp( "^0*([1-9]" +
                                                     "[0-9]?[0-9]?" +
                                                     "[0-9]?[0-9]?)$" )
                           };
               }
               got  =  t.re.single.exec( s );
               if ( got ) {
                  shift  =  s;
               } else {
                  got  =  t.re.s1010.exec( s );
                  if ( got ) {
                     s      =  got[ 1 ]  +  got[ 2 ];
                     shift  =  s.replace( t.re.single, "$1" );
                  } else {
                     got  =  t.re.slash.exec( s );
                     if ( got ) {
                        i  =  parseInt( got[ 1 ],  10 );
                        k  =  parseInt( got[ 2 ],  10 );
                        if ( i === k ) {
                           k      =  parseInt( got[ 3 ],  10 );
                           i      =  i * 1000  +  k;
                           shift  =  "" + i;
                        }
                     }
                  }
               }
               if ( shift ) {
                  WSTM.w.template.par.fiat( adjust, "ID",  shift );
               }
            }
         }
      }
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      WSTM.lang.p.dewiki.template.seiteBis( adjust );
   };   // .lang.p.dewiki.template.oxfordDNB.f()



   WSTM.lang.p.dewiki.template.pagel1901  =  function ( adjust ) {
      // Vorlage:Pagel-1901
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .w.template.par.fiat()
      //    .w.template.mod.flush()
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2024-01-24 PerfektesChaos@de.wikipedia
      var d  =  [ [/^Pagel-1901$/i,       "Pagel-1901"],
                  [/^Lemma|spezialkapitel$/i,  "Lemma",      true],
                  [/^BK-Nummer$/i,             "BK-Nummer",  false],
                  [/^Spalte|ErsteSp$/i,        "Spalte",     true],
                  [/^SpalteBis|LetzteSp$/i,    "SpalteBis",  false],
                  [/^Kommentar|bemerkung$/i,   "Kommentar",  false],
                  [/^zenoID$/i,                "zenoID",     true] ],
          e  =  WSTM.w.template.par.find( adjust, "pl" );
      if ( e  &&
           typeof e.value  ===  "object"
           &&     e.value  &&
           typeof e.value.source  ===  "string"
           &&     e.value.source.substr( 0, 4 )  ===  "nid/" ) {
         WSTM.w.template.par.fiat( adjust,
                                   "zenoID",
                                   e.value.source.substr( 4 ) );
      }
      e  =  WSTM.w.template.par.find( adjust, "kurz" );
      if ( e ) {
         WSTM.w.template.mod.flush( adjust,   [ [ "^kurz$",  true ] ] );
      }
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.pagel1901()



WSTM.lang.p.dewiki.template.personendaten  =  { };



WSTM.lang.p.dewiki.template.personendaten.fire  =  function ( adjust ) {
   // Vorlage:Personendaten -- Formatierung
   // Precondition:
   //    adjust  -- WikiTom sequence (forked element)
   // Postcondition:
   //    adjust was changed if necessary
   // Uses:
   //    .lang.p.dewiki.template.personendaten.format()
   // Remark: May be used as event handler -- 'this' is not accessed
   // 2012-04-25 PerfektesChaos@de.wikipedia
   WSTM.lang.p.dewiki.template.personendaten.format( adjust );
};   // .lang.p.dewiki.template.personendaten.fire()



WSTM.lang.p.dewiki.template.personendaten.format  =  function (adjust) {
   // Vorlage:Personendaten -- Formatierung
   // Precondition:
   //    adjust  -- WikiTom sequence (forked element)
   // Postcondition:
   //    adjust was changed if necessary
   // Uses:
   //    >  .str.sticks
   //    >< .lang.p.dewiki.template.personendaten.tmap.*
   //     < .w.encountered.personendaten
   //    .w.template.par.fix()
   //    .w.template.par.fixed()
   //    .w.template.mod.trim()
   //    .util.translate.factory()
   //    .w.link.wiki.flush()
   //    .o.WikiTom().replace()
   //    .lang.p.dewiki.template.personendaten.formatDatum()
   //    .w.template.mod.furnish()
   //    .o.WikiTom().fresh()
   // Requires: JavaScript 1.3   fromCharCode()
   // 2017-02-20 PerfektesChaos@de.wikipedia
   var t  =  [ [/^Personendaten$/i,    "Personendaten"],
               [/^NAME$/i,             "NAME",             true],    // 1
               [/^ALTERNATIVNAMEN?$/i, "ALTERNATIVNAMEN",  true],    // 2
               [/^KURZBESCHREIBUNG$/i, "KURZBESCHREIBUNG", true],    // 3
               [/^GEBURTSDATUM$/i,     "GEBURTSDATUM",     true],    // 4
               [/^GEBURTSORT$/i,       "GEBURTSORT",       true],    // 5
               [/^STERBEDATUM$/i,      "STERBEDATUM",      true],    // 6
               [/^STERBEORT$/i,        "STERBEORT",        true],    // 7
               [/^SORTIERUNG$/i,       "SORTIERUNG",       false] ], // 8
       g,
       i;
   WSTM.w.template.par.fix(t, adjust);
   WSTM.w.template.par.fixed( t, adjust );
   WSTM.w.template.mod.flush(adjust,  [ [/^[1-9]$/, false] ]);
   WSTM.w.template.mod.trim(adjust);
   if (! this.tmap) {
      this.tmap  =  { };
      this.tmap.all  =  WSTM.util.translate.factory(   [
                            ["&nbsp;",
                             " ",
                             "g"],
                            ["([^ 0-9\n][^ 0-9\n]),([^ 0-9\n][^ 0-9\n])",
                             "$1, $2",
                             "g"],
                            [" +,",
                             ",",
                             "g"],
                            [",,",
                             ",",
                             "g"],
                            ["  +",
                             " ",
                             "g"],
                            ["^ ",
                             ""]                       ],
                                                       "PD*");
      this.tmap.alt  =  WSTM.util.translate.factory(   [
                       ["(.+[^ \n]) +-+$",
                        "$1",
                        ""],
                       ["\\bPseud\\. *",
                        "Pseudonym ",
                        "gi"],
                       ["(?:(?:bürgerlicher|eigentlicher|richtiger) Name"
                        + "|(?:bürgerlich|eigentlich))\\b",
                        "wirklicher Name",
                        "gi"],
                       ["\\bvoller Name\\b",
                        "vollständiger Name",
                        "gi"]                          ],
                                                       "PD-ALT");
      this.tmap.ank  =  WSTM.util.translate.factory(   [
                          ["^(.+[^ \n]) *[" + WSTM.str.sticks + ",:`]+$",
                           "$1",
                           ""],
                          ["([^&\n]+.[^ \n]) *;([^ \n].+)",
                           "$1; $2",
                           "g"],
                          [" +\\)",
                           ")",
                           "g"]                            ],
                                                           "PD-ALT/KB");
      this.tmap.kub  =  WSTM.util.translate.factory(   [
                               ["(\\b[12]?[0-9]?[0-9][0-9])"
                                + "[" + WSTM.str.sticks + "]"
                                + "([12]?[0-9]?[0-9][0-9])\\b",
                                "$1" + String.fromCharCode(8211) + "$2",
                                ""],
                               ["('''?)(.+)\\1",
                                "$2",
                                ""],
                               ["(.*[^ \n])\\(",
                                "$1 (",
                                ""],
                               ["(.+[^ \n][^ \n][^ \n][^ IVX\n]) *\\.+$",
                                "$1",
                                ""],
                               ["(.+[^ \n]) *-+$",
                                "$1",
                                ""]                             ],
                                                                "PD-KB");
   }
   for (i = 1;  i < 8;  i++) {
      g  =  adjust.values[i].value;
      if (g) {
         g.replace(this.tmap.all, false);
      }
   }   // for i
   g  =  adjust.values[2].value;
   if (g) {
      i  =  new RegExp(" [aA](?:dh?|l|n|r|s|asch|th?|z)-$");
      i  =  i.test(g.source + "");
      g.replace(this.tmap.alt, false);
      g.replace(this.tmap.ank, false);
      if (i) {
         g.source  =  g.source + "-";
      }
   }
   g  =  adjust.values[3].value;
   if (g) {
      g.replace(this.tmap.ank, false);
      g.replace(this.tmap.kub, false);
   }
   for (i = 1;  i < 7;  i++) {
      if (i !== 5) {
         g  =  adjust.values[i].value;
         if (g) {
            if (g.children) {
               if (g.children.length > 2) {
                  WSTM.w.link.wiki.flush(g);
                  adjust.learnt  =  true;
               }
            }
         }
      }
   }   // for i
   this.formatDatum(adjust.values, 4, true);
   this.formatDatum(adjust.values, 6, false);
   WSTM.w.template.mod.furnish( adjust,
                                { indent:    0,
                                  later:     false,
                                  lastline:  true,
                                  leap:      false,
                                  leave:     false,
                                  linebreak: true,
                                  lineup:    false
                                } );
   if ( adjust.learnt ) {
      WSTM.w.template.mod.format( adjust );
   }
   WSTM.w.encountered.personendaten  =  true;
};   // .lang.p.dewiki.template.personendaten.format()



WSTM.lang.p.dewiki.template.personendaten.formatDatum  =
                                     function (assigned, access, ahead) {
   // Vorlage:Personendaten -- Datums-Formatierung
   // Precondition:
   //    assigned  -- Array with assignments
   //                 >  [access].value  -- WikiTom with value string
   //                                       >  .children
   //                                       >< .source
   //    access    -- element number in assigned
   //    ahead     -- true: birth;  false: death
   // Postcondition:
   //    Returns string iff modified
   //                    < assigned.learnt  -- true
   //    RegExp was used.
   // Uses:
   //    >  .lang.l.de.s.re.dom
   //    >< .lang.p.dewiki.template.personendaten.reDatum0
   //    >< .lang.p.dewiki.template.personendaten.reDatum1
   //    >< .lang.p.dewiki.template.personendaten.reDatum2
   //    >< .lang.p.dewiki.template.personendaten.reDatum3
   //    >< .lang.p.dewiki.template.personendaten.reDatumB
   //    >< .lang.p.dewiki.template.personendaten.reDatum
   //    .str.trimR()
   //    .errors.found()
   //    .lang.l.de.date.fetch()
   //    .lang.l.de.date.format()
   // 2018-04-22 PerfektesChaos@de.wikipedia
   var r    =  false,
       v    =  assigned[access].value,
       d,
       got,
       i,
       o,
       s,
       split,
       src,
       u;
   if (! v.children) {
      src  =  WSTM.str.trimR(v.source, true, true);
      if (src) {
         if ( ! this.reDatum0 ) {
            s  =  "([12]?[0-9]?[0-9][0-9])\\b";
            this.reDatum0   =  new RegExp(" *"
                                          + "(vor "
                                          + "|nach "
                                          + "|zwischen "
                                          + "|getauft "
                                          + "|begraben "
                                          + "|unsicher: ?)?"
                                          + " *"
                                          + "([^ \n].*[^ \n]) *\n?",
                                          "i");
            this.reDatum1   =  new RegExp("\\b(?:"
                                            + "(?:"
                                              + "(?:ungefähr"
                                                + "|gegen"
                                                + "|etwa"
                                                + "|circa"
                                                + ") +)"
                                              + "|"
                                              + "(?:"
                                                + "(?:ca.|~)"
                                                + " *))"
                                          + s,
                                          "gi");
            this.reDatum2   =  new RegExp("\\b(?:"
                                              + "(?:später als"
                                                + "|frühestens"
                                                + "|nicht vor) +)"
                                          + s,
                                          "gi");
            this.reDatum3   =  new RegExp("\\b" + s
                                                + " +\\(oder später\\)",
                                          "gi");
            this.reDatumB1  =  new RegExp("^("
                                           + WSTM.lang.l.de.s.re.dom
                                           + ".*)"
                                          + " +\\(Tauf(?:e|datum)\\)",
                                          "gi");
            this.reDatumD1  =  new RegExp("(.*)\\b"
                                          + "(?:verschollen"
                                            + "|vermi(?:ss|ß)t) +"
                                          + s,
                                          "gi");
            this.reDatumD2  =  new RegExp("^("
                                           + WSTM.lang.l.de.s.re.dom
                                           + ".*)"
                                          + " +\\((?:Beerdigung"
                                                + "|Begräbnis)\\)",
                                          "gi");
            this.reDatumD3  =  new RegExp("^beerdigt +"
                                          + "("
                                            + WSTM.lang.l.de.s.re.dom
                                            + ".+)",
                                          "gi");
         }
         got  =  this.reDatum0.exec(v.source);
         if (got) {
            s  =  got[2];
            if (s   &&   s.substr(0, 8)  !==  "unsicher") {
               u  =  WSTM.lang.l.de.date;
               if (got[1] === "zwischen ") {
                  split  =  " und ";
                  o      =  s.split(split);
                  if (o.length !== 2) {
                     WSTM.errors.found("templateParInvalid",
                                       false,
                                       "{{Personendaten"
                                       + "|" + assigned[access].symbol
                                       + "=zwischen ... und ...}}");
                     // .errors.found()
                  }
               } else {
                  split  =  " oder ";
                  o      =  s.split(split);
               }
               for (i = 0;  i < o.length;  i++) {
                  d  =  u.fetch(o[i]);
                  if (d) {
                     o[i]  =  u.format( d,  [ "de", false, 0, 3 ] );
                  }
               }   // for i
               s  =  o.join(split);
            }
            if (got[1]) {
               s  =  WSTM.str.trimR(got[1], false)
                     +  (s  ?  " " + s  :  s)
                     +  "\n";
            }
            s  =  s.replace(this.reDatum1,  "um $1");
            s  =  s.replace(this.reDatum2,  "nach $1");
            s  =  s.replace(this.reDatum3,  "nach $1");
            if (ahead) {
               s  =  s.replace(this.reDatumB1, "getauft $1");
            } else {
               s  =  s.replace(this.reDatumD1,  "$1nach $2");
               s  =  s.replace(this.reDatumD2,  "begraben $1");
               s  =  s.replace(this.reDatumD3,  "begraben $1");
            }
            if (s !== src) {
               v.source         =  s;
               assigned.learnt  =  true;
               r                =  s;
            }
         }   // got
      }
   }
   return  r;
};   // .lang.p.dewiki.template.personendaten.formatDatum()



   WSTM.lang.p.dewiki.template.personZelle  =  { };



   WSTM.lang.p.dewiki.template.personZelle.f  =  function ( adjust ) {
      // Vorlage:PersonZelle
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.templates.wikitext.inline
      //    .w.template.par.find()
      //    .str.trim()
      //    .w.template.par.fiat()
      //    .w.template.par.fixed()
      //    .w.template.mod.furnish()
      //    .o.WikiTom().fresh()
      // 2021-03-21 PerfektesChaos@de.wikipedia
      var that  =  WSTM.lang.p.dewiki.template.personZelle,
          e, i, s, stuff;
      if ( typeof that.def  !==  "object" ) {
         e  =  [ "nl", "fett", "kursiv", "pre", "postfix", "revers",
                 "rowspan", "colspan", "class", "style", "id",
                 "lang", "dir" ];
         that.def  =  [ ];
         that.def.push( [ new RegExp( "[pP]ersonZelle" ),
                          "PersonZelle" ] );
         that.def.push( [ new RegExp( "^1$" ),  "1",  true ] );
         that.def.push( [ new RegExp( "^2$" ),  "2",  true ] );
         that.def.push( [ new RegExp( "^3$" ),  "3",  false ] );
         that.def.push( [ new RegExp( "^k(?:l(?:ammer)?)?$", "i" ),
                                              "k",  false ] );
         for ( i = 0;  i < e.length;  i++ ) {
            s  =  e[ i ];
            that.def.push( [ new RegExp( "^" + s + "$",  "i" ),
                             s,
                             false ] );
         }   // for i
      }
      for ( i = 0;  i < 3;  i++ ) {
         s  =  "" + i;
         e  =  WSTM.w.template.par.find( adjust, s );
         if ( e ) {
            stuff  =  e.flat();
            if ( stuff ) {
               stuff  =  WSTM.str.trim( stuff, true, true );
               if ( stuff !== e.value.source ) {
                  WSTM.w.template.par.fiat( adjust, s, stuff );
               }
            }
         }
      }   // for i
      WSTM.w.template.par.fix( that.def, adjust );
      WSTM.w.template.par.fixed( that.def, adjust );
      WSTM.w.template.mod.furnish( adjust,
                                   WSTM.lang.templates.wikitext.inline );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.personZelle()



   WSTM.lang.p.dewiki.template.pierer1857  =  function ( adjust ) {
      // Vorlage:Pierer-1857
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .w.template.mod.flush()
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .lang.p.dewiki.template.seiteBis()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2024-02-01 PerfektesChaos@de.wikipedia
      var d  =  [ [/^Pierer-1857$/i,       "Pierer-1857"],
                  [/^Lemma|spezialkapitel|Schlagwort$/i,
                                               "Lemma",           true],
                  [/^BK-Nummer$/i,             "BK-Nummer",       false],
                  [/^Eintragsnummer$/i,        "Eintragsnummer",  false],
                  [/^(?:1|Band)$/i,            "Band",            true],
                  [/^(?:2|Seiten?)$/i,         "Seite",           true],
                  [/^(?:3|SeiteBis)$/i,        "SeiteBis",        false],
                  [/^Kommentar$/i,             "Kommentar",       false],
                  [/^zenoID$/i,                "zenoID",          true]
                ],
          e  =  WSTM.w.template.par.find( adjust, "Abruf" );
      if ( e ) {
         WSTM.w.template.mod.flush( adjust,   [ [ "^Abruf$",  true ] ] );
      }
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      WSTM.lang.p.dewiki.template.seiteBis( adjust );
   };   // .lang.p.dewiki.template.pierer1857()



   WSTM.lang.p.dewiki.template.pipe  =  function ( adjust ) {
      // Vorlage:Pipe -- Ersetzung durch &#124;
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .o.WikiTom.TextOnly
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2013-02-02 PerfektesChaos@de.wikipedia
      adjust.lookup    =  true;
      adjust.limited   =  false;
      adjust.mode      =  WSTM.o.WikiTom.TextOnly;
      adjust.scope     =  false;
      adjust.children  =  false;
      adjust.fresh( "&#124;" );
   };   // .lang.p.dewiki.template.pipe()



   WSTM.lang.p.dewiki.template.pmc  =  function ( adjust ) {
      // Vorlage:PMC -- ohne PDF
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .str.trim()
      //    .w.template.par.fiat()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-02-26 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "1" ),
          re, s;
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            s  =  WSTM.str.trim( s, true, true );
            if ( s !== e.value.source ) {
               WSTM.w.template.par.fiat( adjust, "1", s );
            }
         }
         e  =  WSTM.w.template.par.find( adjust, "2" );
         if ( e ) {
            s  =  e.flat();
            if ( s ) {
               s  =  WSTM.str.trim( s, true, true );
               if ( s.toUpperCase() === "PDF" ) {
                  s  =  false;
               }
            }
            if ( ! s ) {
               re  =  new RegExp( "^2$", "g" );
               WSTM.w.template.mod.flush( adjust,  [ [ re, true ] ] );
            } else {
               WSTM.w.template.par.fiat( adjust, "2", s );
            }
         }
      }
   };   // .lang.p.dewiki.template.pmc()



   WSTM.lang.p.dewiki.template.rtl  =  { };



   WSTM.lang.p.dewiki.template.rtl.fire  =  function ( adjust ) {
      // Vorlage: für right-to-left
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >< .lang.p.dewiki.template.rtl.reRLMg
      //    >< .w.encountered.bidichar
      //     < .w.encountered.biditemplate
      //    .w.template.par.find()
      //    .str.trim()
      //    .w.template.par.family()
      //    .str.deCapitalize()
      //    .w.template.par.fixed()
      //    .w.template.par.fiat()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-06-26 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "1" ),
          d, i, s, rtl;
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            rtl  = WSTM.lang.p.dewiki.template.rtl;
            if ( typeof rtl.reRLMg !==  "object"  ) {
               rtl.reRLMg  =  new RegExp( "&rlm;", "g" );
               rtl.reLRMg  =  new RegExp( "&lrm;", "g" );
               rtl.reLRMb  =  new RegExp( "^&lrm;", "g" );
            }
            s  =  WSTM.str.trim( s, true, true )
                          .replace( rtl.reRLMg, "" )
                          .replace( rtl.reLRMg, "" )
                  +  "&lrm;";
            if ( s !== e.value.source ) {
               WSTM.w.template.par.fiat( adjust, "1", s );
               adjust.fresh( false );
            }
            if ( WSTM.w.encountered.bidichar ) {
               WSTM.w.template.family( adjust,
                                       true,
                                       false,
                                       [ rtl.reLRMb, "" ] );
            } else {
               WSTM.w.encountered.bidichar  =  true;
            }
            s  =  adjust.values[ 0 ].symbol;
            d  =  [ [ s,    WSTM.str.deCapitalize( s ) ],
                    [ "1",  "1", true ],
                    [ "2",  "2", false ] ];
            WSTM.w.template.par.fixed( d, adjust );
            for ( i = 1;  i < adjust.values.length;  i++ ) {
               d  =  adjust.values[ i ];
               if ( typeof d.value  ===  "object"
                    &&     d.value    &&
                    typeof d.value.source  ===  "string" ) {
                  s  =  WSTM.str.trim( d.value.source, true, true );
                  if ( i === 1 ) {
                     s  =  s + "&lrm;";
                  }
                  if ( s !== d.value.source ) {
                     WSTM.w.template.par.fiat( adjust, d.symbol, s );
                     adjust.fresh( false );
                  }
               }
            }   // for i
            adjust.fresh( false );
         }
      }
      WSTM.w.encountered.biditemplate  =  true;
   };   // .lang.p.dewiki.template.rtl.fire()



   WSTM.lang.p.dewiki.template.rtl.lang  =  function (adjust) {
      // Vorlage:rtl-lang
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.p.dewiki.template.rtl.langs
      //    >< .lang.p.dewiki.template.rtl.reRLMg
      //    >< .w.encountered.bidichar
      //     < .w.encountered.biditemplate
      //    .w.template.par.find()
      //    .str.trim()
      //    .w.template.par.fiat()
      //    .w.template.mod.flush()
      //    .w.template.mod.format()
      //    .lang.p.dewiki.template.rtl.fire()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-12-18 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "2" ),
          el, rtl, s, slang;
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            rtl  = WSTM.lang.p.dewiki.template.rtl;
            if ( typeof rtl.reRLMg !==  "object"  ) {
               rtl.reRLMg  =  new RegExp( "&rlm;", "g" );
               rtl.reLRMg  =  new RegExp( "&lrm;", "g" );
            }
            s  =  WSTM.str.trim( e.value.source )
                          .replace( rtl.reRLMg, "" )
                          .replace( rtl.reLRMg, "")
                  +  "&lrm;";
            if ( s !== e.value.source ) {
               WSTM.w.template.par.fiat(adjust, "2", s);
            }
            el  =  WSTM.w.template.par.find(adjust, "1");
            if ( el  &&
                 typeof el.value  ===  "object"
                 &&     el.value  &&
                 typeof el.value.source  ===  "string" ) {
               slang  =  el.value.source.toLowerCase();
               if ( rtl.langs.indexOf("|" + slang + "|") >= 0 ) {
                  adjust.values[ 0 ].symbol  =  slang;
                  WSTM.w.template.mod.flush( adjust,
                                             [ [ /^1$/,  true ] ]);
                  e.symbol  =  "1";
                  WSTM.w.template.mod.format(adjust);
                  rtl.fire(adjust);
               }
            }
         }
      }
      WSTM.w.encountered.biditemplate  =  true;
   };   // .lang.p.dewiki.template.rtl.lang()



   WSTM.lang.p.dewiki.template.rtl.langs  =
     "|ar|arc|arc-Hebr|arz|avd|bft|chg|ckb|dv|fa|hbo|he|kk-Arab|ks-Arab|ku|ota|ps|sd|syc|syr|ug|ur|uz-Arab|yi|";
   // 2022-04-23 PerfektesChaos@de.wikipedia



/*
   WSTM.lang.p.dewiki.template.runeberg  =  function ( access ) {
      // runeberg.org
      // Precondition:
      //    access  -- string, runeberg.org URL
      // Postcondition:
      //    Returns false, or string with transclusion
      // Uses:
      //    .lang.p.dewiki.template.nordFamilje.fill()
      //    .lang.p.dewiki.template.salmonsen.fill()
      // 2019-03-03 PerfektesChaos@de.wikipedia
      var r    =  false,
          re   =  new RegExp( "//runeberg\\.org/"
                              + "(nf)" ),
//                            + "(dbl|nf|salmonsen|sbh)" ),
          got  =  re.exec( access );
      if ( got ) {
         switch ( got[1] ) {
            case "dbl":
//             r  =  this.danskBio.fill( access );
               break;
            case "nf":
//             r  =  this.nordFamilje.fill( access );
               break;
            case "salmonsen":
//             r  =  this.salmonsen.fill( access );
               break;
         }   // switch dbl|nf|salmonsen|sbh
      }
      return  r  ||  access;
   };   // .lang.p.dewiki.template.runeberg()
*/



/*
   WSTM.lang.p.dewiki.template.salmonsen  =  { };



   WSTM.lang.p.dewiki.template.salmonsen.def  =  [
           [/salmonsenLex/, "SalmonsenLex"],
           [/^Autor$/i,     "Autor",      true],
           [/^Lemma$/i,     "Lemma",      true],
           [/^Auflage$/i,   "Auflage",    true],
           [/^Band$/i,      "Band",       true],
           [/^Seite$/i,     "Seite",      true],
           [/^SeiteBis$/i,  "SeiteBis",   false],
           [/^Kommentar$/i, "Kommentar",  false] ];



   WSTM.lang.p.dewiki.template.salmonsen.fetch  =  function ( aVol,
                                                              aPage ) {
      // Retrieve bibliographics from runeberg.org/salmonsen key values
      // Precondition:
      //    aVol   -- volume number
      //    aPage  -- sheet number
      // Postcondition:
      //    Returns false, or object
      //                      .volume     -- volume number
      //                      .seite      -- page number or false
      //                      .seiteEnd   -- page number or false
      //                      .page       -- sheet number or false
      // Uses:
      //    this
      //    >  .lang.p.dewiki.template.salmonsen.pages
      // 2018-02-20 PerfektesChaos@de.wikipedia
      var  r  =  false,
           block, i, j, m, vol;
      if ( aVol <= 26 ) {
         m    =  aVol - 1;
         vol  =  this.pages[ 1 ][ m ];
         r    =  { edition:  2,
                   volume:   aVol,
                   seite:    false,
                   seiteEnd: false,
                   page:     false };
         for ( i = 0;  i < vol.length;  i++ ) {
            block  =  vol[ i ];
            j      =  aPage - block[ 2 ];
            if ( j <= block[ 1 ] ) {
               if ( j >= block[ 0 ] ) {
                  r.seite  =  j;
               }
               break;   // for i
            }
         }   // for i
         if ( ! r.seite ) {
            r.page  =  aPage;
         }
      }
      return  r;
   };   // .lang.p.dewiki.template.salmonsen.fetch()



   WSTM.lang.p.dewiki.template.salmonsen.fiat  =  function ( adjust,
                                                            assign ) {
      // Vorlage:SalmonsenLex
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      //    assign  -- object
      //               .edition    -- edition number
      //               .volume     -- volume number
      //               .seite      -- page number or false
      //               .seiteEnd   -- page number or false
      //               .page       -- sheet number or false
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    this
      //    .w.template.par.fiat()
      //    .lang.p.dewiki.template.salmonsen.format()
      // 2018-02-20 PerfektesChaos@de.wikipedia
      WSTM.w.template.par.fiat( adjust, "Auflage",
                                        assign.edition + "" );
      WSTM.w.template.par.fiat( adjust, "Band",
                                        assign.volume + "" );
      if ( assign.seite ) {
         WSTM.w.template.par.fiat( adjust, "Seite",
                                           assign.seite + "" );
         if ( assign.seiteEnd ) {
            WSTM.w.template.par.fiat( adjust, "SeiteBis",
                                      assign.seiteEnd + "" );
         }
      }
      this.format( adjust );
   };   // .lang.p.dewiki.template.salmonsen.fiat()




   WSTM.lang.p.dewiki.template.salmonsen.fill  =  function ( access ) {
      // Create {{SalmonsenLex}}
      // Precondition:
      //    access  -- string, runeberg.org/salmonsen URL
      // Postcondition:
      //    Returns false, or string with transclusion
      // Uses:
      //    .lang.p.dewiki.template.salmonsen.foreign()
      // 2018-02-20 PerfektesChaos@de.wikipedia
      var o  =  this.foreign( access ),
          r;
      if ( o ) {
         r  =  "{{SalmonsenLex |Lemma= |Auflage=";
         if ( typeof o.edition  ===  "number" ) {
            r  =  r + o.edition;
         }
         r  =  r + " |Band=";
         if ( typeof o.volume  ===  "number" ) {
            r  =  r + o.volume;
         }
         r  =  r + " |Seite=";
         if ( typeof o.seite  ===  "number" ) {
            r  =  r + o.seite;
         }
         r  =  r + " |SeiteBis=";
         if ( typeof o.seiteEnd  ===  "number" ) {
            r  =  r + o.seiteEnd;
         }
         r  =  r + "}}";
      }
      return  r;
   };   // .lang.p.dewiki.template.salmonsen.fill()



   WSTM.lang.p.dewiki.template.salmonsen.foreign  =  function (access) {
      // Retrieve bibliographics from runeberg.org/salmonsen
      // Precondition:
      //    access  -- string, runeberg.org/salmonsen URL
      // Postcondition:
      //    Returns false, or object
      //                      .volume     -- volume number
      //                      .seite      -- page number or false
      // Uses:
      //    this
      //    .lang.p.dewiki.template.salmonsen.fetch()
      // 2017-10-23 PerfektesChaos@de.wikipedia
      var re   =  new RegExp( "//runeberg\\.org/salmonsen/2/"
                              + "([12]?[0-9])"
                              + "/0*"
                              + "([1-9][0-9]*)"
                              + "\\.html$" ),
          got  =  re.exec( access ),
          i, j, r;
      if ( got ) {
         i  =  parseInt( got [ 1 ], 10 );
         j  =  parseInt( got [ 2 ], 10 );
         r  =  this.fetch( i, j );
      }
      return  r;
   };   // .lang.p.dewiki.template.salmonsen.foreign()



   WSTM.lang.p.dewiki.template.salmonsen.format  =  function ( adjust ) {
      // Vorlage:SalmonsenLex
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    this
      //    >  .lang.p.dewiki.template.salmonsen.def
      //    .w.template.par.fixed()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-08-08 PerfektesChaos@de.wikipedia
      WSTM.w.template.par.fixed( WSTM.lang.p.dewiki.template.salmonsen.def,
                                 adjust );
      adjust.values[0].symbol  =  "SalmonsenLex";
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.salmonsen.format()



   WSTM.lang.p.dewiki.template.salmonsen.pages  =  [
        false,   //  1. Edition
        [        //  2. Edition
          [ [    3,   14,  8 ],
            [   15,   22, 10 ],
            [   23,   52, 12 ],
            [   53,   80, 14 ],
            [   81,  248, 16 ],
            [  249,  256, 18 ],
            [  257,  260, 22 ],
            [  261,  272, 24 ],
            [  273,  392, 26 ],
            [  393,  456, 28 ],
            [  457,  472, 32 ],
            [  473,  496, 34 ],
            [  497,  568, 36 ],
            [  569,  612, 38 ],
            [  613,  638, 40 ],
            [  639,  664, 42 ],
            [  665,  868, 44 ],
            [  869,  876, 46 ],
            [  877,  961, 48 ] ],    //  1
          [ [    1,  162,  8 ],
            [  163,  224, 10 ],
            [  225,  230, 12 ],
            [  231,  232, 20 ],
            [  233,  248, 22 ],
            [  249,  316, 24 ],
            [  317,  322, 26 ],
            [  323,  388, 28 ],
            [  389,  394, 30 ],
            [  395,  398, 34 ],
            [  399,  452, 36 ],
            [  453,  510, 38 ],
            [  511,  546, 40 ],
            [  547,  562, 42 ],
            [  563,  604, 44 ],
            [  605,  736, 46 ],
            [  737,  770, 48 ],
            [  771,  864, 50 ],
            [  865,  878, 52 ],
            [  879,  953, 54 ] ],    //  2
          [ [    1,   24,  8 ],
            [   25,   48, 10 ],
            [   49,  196, 12 ],
            [  197,  240, 18 ],
            [  241,  244, 42 ],
            [  245,  378, 44 ],
            [  379,  436, 46 ],
            [  437,  538, 50 ],
            [  539,  568, 54 ],
            [  569,  570, 56 ],
            [  571,  572, 60 ],
            [  573,  848, 62 ],
            [  849,  953, 66 ] ],    //  3
          [ [    1,   50,  8 ],
            [   51,   56, 10 ],
            [   57,   80, 14 ],
            [   81,   84, 18 ],
            [   85,  136, 22 ],
            [  137,  170, 24 ],
            [  171,  196, 26 ],
            [  197,  232, 28 ],
            [  233,  320, 30 ],
            [  321,  388, 42 ],
            [  389,  452, 44 ],
            [  453,  840, 46 ],
            [  841,  912, 48 ],
            [  913,  951, 50 ] ],    //  4
          [ [    1,  436,  8 ],
            [  437,  464, 10 ],
            [  465,  474, 12 ],
            [  475,  500, 14 ],
            [  501,  532, 18 ],
            [  533,  538, 20 ],
            [  539,  540, 22 ],
            [  541,  552, 24 ],
            [  553,  620, 26 ],
            [  621,  622, 28 ],
            [  623,  672, 30 ],
            [  673,  766, 62 ],
            [  767,  768, 64 ],
            [  769,  778, 66 ],
            [  779,  820, 68 ],
            [  821,  952, 70 ] ],   //  5
          [ [    1,  108,  8 ],
            [  109,  198, 10 ],
            [  199,  210, 12 ],
            [  211,  280, 14 ],
            [  281,  304, 16 ],
            [  305,  394, 18 ],
            [  395,  416, 20 ],
            [  417,  464, 22 ],
            [  465,  488, 24 ],
            [  489,  570, 26 ],
            [  571,  584, 28 ],
            [  585,  612, 30 ],
            [  613,  626, 32 ],
            [  627,  640, 34 ],
            [  641,  654, 38 ],
            [  655,  718, 40 ],
            [  719,  900, 42 ],
            [  901,  952, 38 ] ],   //  6
          [ [    1,   92,  8 ],
            [   93,  140, 10 ],
            [  141,  216, 12 ],
            [  217,  356, 14 ],
            [  357,  378, 16 ],
            [  379,  440, 18 ],
            [  441,  454, 20 ],
            [  455,  562, 22 ],
            [  563,  576, 24 ],
            [  577,  620, 28 ],
            [  621,  640, 30 ],
            [  641,  688, 32 ],
            [  698,  776, 34 ],
            [  777,  779, 36 ],
            [  780,  951, 38 ] ],      //  7
          [ [    1,    8, 10 ],
            [    9,   68, 14 ],
            [   69,  116, 15 ],
            [  117,  136, 17 ],
            [  137,  152, 19 ],
            [  153,  204, 21 ],
            [  205,  288, 23 ],
            [  289,  296, 25 ],
            [  297,  322, 29 ],
            [  323,  348, 31 ],
            [  349,  462, 33 ],
            [  463,  524, 35 ],
            [  525,  658, 37 ],
            [  659,  820, 39 ],
            [  821,  872, 41 ],
            [  873,  951, 45 ] ],      //  8
          [ [    1,   16, 11 ],
            [   17,   42, 13 ],
            [   43,  577, 15 ],
            [  578,  682, 17 ],
            [  683,  688, 21 ],
            [  689,  768, 23 ],
            [  769,  776, 25 ],
            [  777,  778, 27 ],
            [  779,  842, 29 ],
            [  843,  951, 31 ] ],      //  9
          [ [    1,   72, 10 ],
            [   73,  208, 16 ],
            [  209,  288, 18 ],
            [  289,  416, 20 ],
            [  417,  952, 22 ] ],      // 10
          [ [    1,  752,  8 ],
            [  753,  874, 10 ],
            [  875,  949, 12 ] ],      // 11
          [ [    1,  136,  8 ],
            [  137,  422, 10 ],
            [  423,  544, 12 ],
            [  545,  632, 14 ],
            [  633,  816, 16 ],
            [  817,  952, 18 ] ],      // 12
          [ [    1,  284,  8 ],
            [  285,  374, 10 ],
            [  375,  502, 12 ],
            [  503,  708, 14 ],
            [  709,  856, 16 ],
            [  857,  954, 18 ] ],      // 13
          [ [    1,   48,  8 ],
            [   49,   66, 10 ],
            [   67,   70, 12 ],
            [   71,   78, 14 ],
            [   79,  106, 18 ],
            [  107,  194, 20 ],
            [  195,  378, 24 ],
            [  379,  526, 26 ],
            [  527,  606, 28 ],
            [  607,  698, 30 ],
            [  699,  873, 32 ],
            [  874,  963, 34 ] ],      // 14
          [ [    1,   64,  8 ],
            [   65,  192, 10 ],
            [  193,  324, 12 ],
            [  325,  894, 15 ],
            [  895, 1016, 17 ],
            [ 1017, 1087, 19 ],
            [ 1090, 1120, 17 ] ],      // 15
          [ [    1,  292, 12 ],
            [  293,  312, 14 ],
            [  313,  362, 16 ],
            [  363,  370, 18 ],
            [  371,  826, 20 ],
            [  827, 1118, 24 ] ],      // 16
          [ [    1,   58, 12 ],
            [   59,  270, 14 ],
            [  271,  334, 16 ],
            [  335,  400, 20 ],
            [  401,  528, 24 ],
            [  529,  562, 26 ],
            [  563,  592, 30 ],
            [  593,  610, 32 ],
            [  611,  682, 34 ],
            [  683,  684, 36 ],
            [  685,  686, 38 ],
            [  687,  688, 40 ],
            [  689,  752, 42 ],
            [  753,  888, 44 ],
            [  889, 1024, 46 ],
            [ 1025, 1112, 48 ] ],      // 17
          [ [    1,   16, 10 ],
            [   17,   40, 12 ],
            [   41,   48, 14 ],
            [   49,  152, 18 ],
            [  153,  234, 22 ],
            [  235,  278, 26 ],
            [  279,  392, 28 ],
            [  393,  448, 30 ],
            [  449,  576, 32 ],
            [  577,  610, 36 ],
            [  611,  628, 38 ],
            [  629,  644, 42 ],
            [  645,  832, 44 ],
            [  833,  848, 46 ],
            [  849,  888, 48 ],
            [  889, 1112, 50 ] ],      // 18
          [ [    1,   88, 10 ],
            [   89,  218, 12 ],
            [  219,  312, 14 ],
            [  313,  396, 16 ],
            [  397,  416, 18 ],
            [  417,  504, 20 ],
            [  505,  652, 22 ],
            [  653,  740, 24 ],
            [  741,  848, 26 ],
            [  849,  852, 28 ],
            [  853,  912, 30 ],
            [  913,  988, 32 ],
            [  989, 1114, 34 ] ],      // 19
          [ [    1,   92,  8 ],
            [   93,  202, 10 ],
            [  203,  272, 12 ],
            [  273,  304, 14 ],
            [  305,  344, 16 ],
            [  345,  372, 18 ],
            [  373,  456, 20 ],
            [  457,  458, 24 ],
            [  459,  536, 26 ],
            [  537,  692, 28 ],
            [  693,  918, 30 ],
            [  919, 1107, 32 ] ],      // 20
          [ [    1,  104,  8 ],
            [  105,  188, 10 ],
            [  189,  474, 12 ],
            [  413,  546, 14 ],
            [  547,  568, 16 ],
            [  569,  700, 18 ],
            [  701,  740, 24 ],
            [  741,  788, 26 ],
            [  789,  940, 28 ],
            [  941,  992, 30 ],
            [  993, 1096, 32 ],
            [ 1097, 1110, 34 ] ],      // 21
          [ [    1,   98,  8 ],
            [   99,  256, 10 ],
            [  257,  352, 12 ],
            [  353,  490, 14 ],
            [  491,  688, 16 ],
            [  689,  848, 20 ],
            [  849, 1040, 22 ],
            [ 1041, 1089, 24 ] ],      // 22
          [ [    1, 1015,  8 ] ],      // 23
          [ [    1,    8,  8 ],
            [    9,  574, 10 ],
            [  575,  976, 12 ] ],      // 24
          [ [    1,  104,  8 ],
            [  105,  680, 10 ],
            [  681,  740, 12 ],
            [  741,  760, 16 ],
            [  761,  943, 18 ] ],      // 25
          [ [    1,   24,  8 ],
            [   25,   74, 10 ],
            [   75,   86, 12 ],
            [   87,   96, 14 ],
            [   97,  108, 16 ],
            [  109,  248, 18 ],
            [  249,  360, 20 ],
            [  361,  440, 22 ],
            [  441,  680, 24 ],
            [  681,  840, 26 ],
            [  841, 1000, 28 ],
            [ 1001, 1104, 30 ] ]      // 26
          ]
   ];   // .lang.p.dewiki.template.salmonsen.pages
*/



/*
   WSTM.lang.p.dewiki.template.salzburgerNachr  =  { };



   WSTM.lang.p.dewiki.template.salzburgerNachr.def  =  [
           [/^Salzburger Nachrichten$/i, "Salzburger Nachrichten"],
           [/^1$/,                       "1",           false],
           [/^Autor(?:[ei]n)?$/i,        "Autor",       false],
           [/^Titel$/i,                  "Titel",       true],
           [/^TitelErg$/i,               "TitelErg",    false],
           [/^Datum$/i,                  "Datum",       true],
           [/^Jahr$/i,                   "Jahr",        false],
           [/^Monat$/i,                  "Monat",       false],
           [/^Tag$/i,                    "Tag",         false],
           [/^Seiten?$/i,                "Seiten",      false],
           [/^Kommentar$/i,              "Kommentar",   false],
           [/^kurz$/i,                   "kurz",        false]
                                                       ];   // 2019-02-10



   WSTM.lang.p.dewiki.template.salzburgerNachr.f  =  function ( adjust ) {
      // Vorlage:Salzburger Nachrichten
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.p.dewiki.template.salzburgerNachr.def
      //    .lang.p.dewiki.template.datumJJJJMonTT.fix()
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .w.template.par.find()
      //    .str.trim()
      //    .w.template.par.fiat()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-08-08 PerfektesChaos@de.wikipedia
      var d  =  WSTM.lang.p.dewiki.template.salzburgerNachr.def,
          e, s;
      WSTM.lang.p.dewiki.template.datumJJJJMonTT.fix(adjust);
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      e = WSTM.w.template.par.find( adjust, "kurz" );
      if ( e  &&
           typeof e.value  ===  "object"
           &&     e.value   &&
           typeof e.value.source  ===  "string" ) {
         s  =  WSTM.str.trim(e.value.source);
         if ( s === "ja" ) {
            WSTM.w.template.par.fiat(adjust, "kurz", "1");
         }
      }
      adjust.fresh(false);
   };   // .lang.p.dewiki.template.salzburgerNachr.f()
*/


   WSTM.lang.p.dewiki.template.sammlungDunckerGrafik  =  function ( adjust ) {
      // Vorlage:SammlungDunckerGrafik
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .w.template.mod.flush()
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2024-01-29 PerfektesChaos@de.wikipedia
      var d  =  [ [/^SammlungDunckerGrafik$/i,  "SammlungDunckerGrafik"],
                  [/^Titel$/i,       "Titel",      true],
                  [/^Blatt$/i,       "Blatt",      true],
                  [/^Kommentar$/i,   "Kommentar",  false],
                  [/^zlb(?:ID)?$/i,  "zlb",        true],
                  [/^zlbText$/i,     "zlbText",    false] ],
          e  =  WSTM.w.template.par.find( adjust, "Band" );
      if ( e ) {
         WSTM.w.template.mod.flush( adjust,   [ [ "^Band$",  true ] ] );
      }
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.sammlungDunckerGrafik()



   WSTM.lang.p.dewiki.template.seiteBis  =  function ( adjust ) {
      // Justierung diverser Zitationsvorlagen
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .w.template.mod.flush()
      //    .o.WikiTom().fresh()
      // 2024-02-01 PerfektesChaos@de.wikipedia
      var  eSBis  =  WSTM.w.template.par.find( adjust, "SeiteBis" ),
           e, s;
      if ( eSBis ) {
         s  =  eSBis.flat();
         if ( s ) {
            e  =  WSTM.w.template.par.find( adjust, "Seite" );
            if ( e   &&
                 e.flat() === s ) {
               s  =  false;
            }
         }
         if ( ! s ) {
            WSTM.w.template.mod.flush( adjust,
                                       [ [ "^SeiteBis$",  false ] ] );
         }
      }
      e  =  WSTM.w.template.par.find( adjust, "Autor" );
      if ( e ) {
         s  =  e.flat();
         if ( ! s ) {
            WSTM.w.template.mod.flush( adjust,
                                       [ [ "^Autor$",  false ] ] );
         }
      }
      e  =  WSTM.w.template.par.find( adjust, "Kommentar" );
      if ( e ) {
         s  =  e.flat();
         if ( ! s ) {
            WSTM.w.template.mod.flush( adjust,
                                       [ [ "^Kommentar$",  false ] ] );
         }
      }
      e  =  WSTM.w.template.par.find( adjust, "kurz" );
      if ( e ) {
         WSTM.w.template.mod.flush( adjust,   [ [ "^kurz$",  true ] ] );
      }
      e  =  WSTM.w.template.par.find( adjust, "hervorhebung" );
      if ( e ) {
         WSTM.w.template.mod.flush( adjust,   [ [ "^hervorhebung$",
                                                  true ] ] );
      }
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.seiteBis()



   WSTM.lang.p.dewiki.template.sortDate  =  { };



   WSTM.lang.p.dewiki.template.sortDate.f  =  function ( adjust ) {
      // Vorlage:SortDate
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2020-08-08 PerfektesChaos@de.wikipedia
      var e     =  WSTM.w.template.par.find( adjust, "1" ),
          that  =  WSTM.lang.p.dewiki.template.sortDate,
          got, i, less, s, s2, sRE;
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            if ( ! that.re3 ) {
               sRE  =  "([12]?[0-9]?[0-9][0-9])"
                       + "(?:-([01]?[0-9])"
                          + "(?:-([0-3]?[0-9]))?)?";
               that.re3   =  new RegExp( sRE );
            }
            got  =  that.re3.exec( s );
            if ( got ) {
               i  =  parseInt( got[ 1 ],  10 );
               if ( i >= 100  &&  i < 2100 ) {
                  if ( i < 1000 ) {
                     s  =  "0" + i;
                  } else {
                     s  =  "" + i;
                  }
                  i  =  parseInt( got[ 2 ],  10 );
                  if ( i > 0 ) {
                     if ( i <= 12 ) {
                        if ( i < 10 ) {
                           s  =  s + "-0" + i;
                        } else {
                           s  =  s + "-" + i;
                        }
                        i  =  parseInt( got[ 3 ],  10 );
                        if ( i > 0 ) {
                           if ( i <= 31 ) {
                              if ( i < 10 ) {
                                 s  =  s + "-0" + i;
                              } else {
                                 s  =  s + "-" + i;
                              }
                           } else {
                              s  =  false;
                           }
                        }
                     } else {
                        s  =  false;
                     }
                  }
                  if ( s ) {
                     if ( typeof WSTM.config  ===  "object"
                          &&     WSTM.config   &&
                          typeof WSTM.config.sortDateLess  ===  "boolean"
                        ) {
                        less  =  WSTM.config.sortDateLess;
                     }
                     if ( ! less ) {
                        e  =  WSTM.w.template.par.find( adjust, "2" );
                        if ( e ) {
                           s2  =  e.flat();
                           if ( s2 ) {
                              s2    =  s2.toUpperCase();
                              less  =  ( s2 === "S"  || s2 === "M" );
                           }
                        }
                     }
                  }
               }
            }
         }
      }
      if ( less ) {
         WSTM.w.template.par.fiat( adjust, "1", s );
         less  =  ( ! WSTM.w.template.par.find( adjust, "danach" )   &&
                    ! WSTM.w.template.par.find( adjust, "davor" )   &&
                    ! WSTM.w.template.par.find( adjust, "display" )   &&
                    ! WSTM.w.template.par.find( adjust, "vor" ) );
      }
      if ( less ) {
         if ( typeof that.tab  !==  "object" ) {
            e         =  new RegExp( "(?:\n *|\\|)\\| *$" );
            that.tab  =  [ ];
            that.tab.push( e );
         }
         if ( WSTM.w.template.family( adjust,
                                      false,
                                      that.tab,
                                      false ) ) {
            adjust.values  =  [ ];
            adjust.values.push( { symbol: "DatumZelle" } );
            e  =  new WSTM.o.WikiTom( s, adjust );
            adjust.values.push( { symbol:   "1",
                                  lazy:     true,
                                  location: true,
                                  value:    e } );
         }
         adjust.fresh( false );
      }
   };   // .lang.p.dewiki.template.sortDate.f()



   WSTM.lang.p.dewiki.template.sortKey  =  { };



   WSTM.lang.p.dewiki.template.sortKey.f  =  function ( adjust ) {
      // Vorlage:SortKey
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .o.WikiTom.TextOnly
      //    .w.template.par.find()
      //    .str.sortString()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-04-09 PerfektesChaos@de.wikipedia
      var e1  =  WSTM.w.template.par.find( adjust, "1" ),
          e, e2, e3, legal, s, s1, s2, that;
      if ( e1 ) {
         s1  =  e1.flat();
      }
      if ( e1  &&  s1 ) {
         legal  =  true;
      } else {
         e2  =  WSTM.w.template.par.find( adjust, "2" );
         if ( e2  &&  e2.flat() ) {
            legal  =  true;
         } else {
            e3  =  WSTM.w.template.par.find( adjust, "3" );
            if ( e3  &&  e3.flat() ) {
               legal  =  true;
            }
         }
      }
      if ( ! legal ) {
         e  =  WSTM.w.template.par.find( adjust, "davor" );
         if ( e  &&  e.flat() ) {
            legal  =  true;
         }
      }
      if ( legal && s1 ) {
         e2  =  WSTM.w.template.par.find( adjust, "2" );
         if ( e2 ) {
            s2  =  e2.flat();
            if ( s2 ) {
               that  =  WSTM.lang.p.dewiki.template.sortKey;
               if ( typeof that.reZero  !==  "object" ) {
                  that.reZero  =  new RegExp( "^0+" +
                                              "([1-9][0-9.,]*)$" );
               }
               s1  =  s1.replace( that.reZero, "$1" );
               s1  =  WSTM.str.sortString( s1 )  ||  s1;
               s   =  WSTM.str.sortString( s2 )  ||  s2;
               if ( s1 === s ) {
                  adjust.children  =  null;
                  adjust.symbol    =  null;
                  adjust.values    =  null;
                  adjust.lookup    =  true;
                  adjust.mode      =  WSTM.o.WikiTom.TextOnly;
                  adjust.fresh( s2 );
               }
            }
         }
      } else if ( ! legal ) {
         adjust.children  =  null;
         adjust.symbol    =  null;
         adjust.values    =  null;
         adjust.lookup    =  false;
         adjust.source    =  "";
         adjust.mode      =  WSTM.o.WikiTom.TextOnly;
         adjust.fresh( false );
      }
   };   // .lang.p.dewiki.template.sortKey.f()




/*
   WSTM.lang.p.dewiki.template.svensktbiohandlex  =  { };



   WSTM.lang.p.dewiki.template.svensktbiohandlex.def  =  [
           [/svensktBioHandlexikon/i,  "SvensktBioHandlexikon"],
           [/^1$/,                     "1",         false],
           [/^Autor$/i,                "Autor",     false],
           [/^Lemma$/i,                "Lemma",     true],
           [/^Band$/i,                 "Band",      true],
           [/^Seite$/i,                "Seite",     true],
           [/^SeiteBis$/i,             "SeiteBis",  false],
           [/^runeberg$/i,             "runeberg",  false] ];



   WSTM.lang.p.dewiki.template.svensktbiohandlex.fire  =  function (adjust) {
      // Vorlage:SvensktBioHandlexikon
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.p.dewiki.template.svensktbiohandlex.def
      //    .w.template.par.find()
      //    .w.template.par.fiat()
      //    .w.template.mod.flush()
      //    .w.template.par.fixed()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-08-08 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find(adjust, "1"),
          got, re;
      if ( e  &&
           typeof e.value  ===  "object"
           &&     e.value   &&
           typeof e.value.children  ===  "object"
           &&     e.value.children   &&
           typeof e.value.children[ 1 ]  ===  "object"   &&
           typeof e.value.children[ 1 ].mode  ===  "number"
           &&     e.value.children[ 1 ].mode === 39   &&
           typeof e.value.children[ 1 ].source  ===  "string" ) {
         re   =  new RegExp( "//runeberg\\.org/sbh/"
                             + "([ab])"
                             + "0*"
                             + "([1-9][0-9]*)"
                             + "\\.html" );
         got  =  re.exec( e.value.children[ 1 ].source );
         if ( got ) {
            WSTM.w.template.par.fiat( adjust,
                                      "Band",
                                      ( got[ 1 ] === "a"  ?  "1"
                                                          :  "2" ) );
            WSTM.w.template.par.fiat( adjust,  "Seite",  got[ 2 ] );
            WSTM.w.template.mod.flush( adjust,  [ [ "^1$",  true ] ] );
            WSTM.w.template.par.fixed( WSTM.lang.p.dewiki.template.svensktbiohandlex.def,
                                       adjust );
            adjust.fresh( false );
         }
      }
   };   // .lang.p.dewiki.template.svensktbiohandlex.fire()
*/



   WSTM.lang.p.dewiki.template.thiemeBecker  =  { };



   WSTM.lang.p.dewiki.template.thiemeBecker.def  =  [
           [/thiemeBecker/,                "ThiemeBecker"],
           [/^(?:5|Autor)$/i,              "Autor",      false],
           [/^(?:4|Lemma)$/i,              "Lemma",      true],
           [/^(?:1|Band)$/i,               "Band",       true],
           [/^(?:2|Seiten?)$/i,            "Seite",      true],
           [/^(?:3|Seite(?:Bis|Ende))$/i,  "SeiteBis",  false] ];



   WSTM.lang.p.dewiki.template.thiemeBecker.f  =  function ( adjust ) {
      // Vorlage:ThiemeBecker
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.p.dewiki.template.thiemeBecker.def
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .w.template.mod.furnish()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-08-08 PerfektesChaos@de.wikipedia
      var d  = WSTM.lang.p.dewiki.template.thiemeBecker.def,
          e =  WSTM.w.template.par.find( adjust, "Band" ),
          s;
      WSTM.w.template.par.fix( d, adjust );
      WSTM.w.template.par.fixed( d, adjust );
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            e.value.source  =  WSTM.util.roman2int( s );
         }
      }
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.thiemeBecker.f()



   WSTM.lang.p.dewiki.template.urn  =  function ( adjust ) {
      // Vorlage:URN
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .str.trim()
      //    .w.template.par.fiat()
      //    .w.template.mod.flush()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2020-08-08 PerfektesChaos@de.wikipedia
      var e2  =  WSTM.w.template.par.find( adjust, "2" ),
          e3  =  WSTM.w.template.par.find( adjust, "3" ),
          e1, s;
      if ( e2 && e2.flat() ) {
         e1  =  WSTM.w.template.par.find( adjust, "1" );
         if ( e1 ) {
            s  =  e1.flat();
            if ( s ) {
               s  =  WSTM.str.trim( s ).toLowerCase();
               if ( s === "nbn" ) {
                  s  =  "nbn:"  +  WSTM.str.trim( e2.value.source );
                  WSTM.w.template.par.fiat( adjust, "1", s );
                  WSTM.w.template.mod.flush( adjust,  [ [ /^2/,
                                                          true ] ] );
                  adjust.fresh( false );
               }
            }
         }
      }
      if ( e3 ) {
         WSTM.w.template.par.fix( [ [ /^3$/, "resolver" ] ],  adjust );
      }
   };   // .lang.p.dewiki.template.thiemeBecker.urn()



   WSTM.lang.p.dewiki.template.verzDtDrucke  =  { };



   WSTM.lang.p.dewiki.template.verzDtDrucke.def  =  [
           [/verzDtDrucke/,      "VerzDtDrucke"],
           [/^VD$/i,             "VD",             true],
           [/^ID$/i,             "ID",             false],
           [/^PPN$/i,            "PPN",            false],
           [/^Suche$/i,          "Suche",          false],
           [/^Name$/i,           "Name",           false],
           [/^Linktext$/i,       "Linktext",       false],
           [/^Lexikon$/i,        "Lexikon",        false],
           [/^DatumErfolglos$/i, "DatumErfolglos", false] ];



   WSTM.lang.p.dewiki.template.verzDtDrucke.f  =  function ( adjust ) {
      // Vorlage:VerzDtDrucke
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.p.dewiki.template.verzDtDrucke.def
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .w.template.mod.format()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-08-08 PerfektesChaos@de.wikipedia
      WSTM.w.template.par.fix( WSTM.lang.p.dewiki.template.verzDtDrucke.def,
                               adjust );
      WSTM.w.template.par.fixed( WSTM.lang.p.dewiki.template.verzDtDrucke.def,
                                 adjust );
      WSTM.w.template.mod.format( adjust );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.verzDtDrucke.f()



   WSTM.lang.p.dewiki.template.webarchiv  =  { re: false };



   WSTM.lang.p.dewiki.template.webarchiv.def  =  [
           [/webarchive?/i,      "Webarchiv"],
           [/^url$/i,            "url",         true],
           [/^text$/i,           "text",        true],
           [/^format$/i,         "format",      false],
           [/^wayback$/i,        "wayback",     false],
           [/^archive-is$/i,     "archive-is",  false],
           [/^archive-today$/i,  "archive-is",  false],
           [/^archiv-url$/i,     "archiv-url",  false],
           [/^()$/i,             "()",          false],
           [/^archiv-bot$/i,     "archiv-bot",  false] ];



   WSTM.lang.p.dewiki.template.webarchiv.f  =  function ( adjust ) {
      // Vorlage:Webarchiv
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >< .lang.templates.webarchiv.re
      //    >< .lang.templates.webarchiv.re.host
      //    >< .lang.templates.webarchiv.re.url
      //    >< .lang.templates.webarchiv.re.www
      //    >  .lang.p.dewiki.template.webarchiv.def
      //    .w.template.par.find()
      //    .str.trim()
      //    .w.template.mod.flush()
      //    .w.template.par.fix()
      //    .w.template.par.fixed()
      //    .w.template.mod.format()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-11-01 PerfektesChaos@de.wikipedia
      var e     =  WSTM.w.template.par.find( adjust, "text" ),
          that  =  WSTM.lang.p.dewiki.template.webarchiv,
          u     =  WSTM.w.template.par.find( adjust, "url" ),
          s;
      if ( u     &&
           ( typeof u.value  !==  "object"
             ||   ! u.value   ||
             typeof u.value.source  !==  "string" ) ) {
         u  =  false;
      }
      if ( u ) {
         s  =  WSTM.str.trim( u.value.source );
         if ( s === "" ) {
            u  =  false;
         }
         if ( s.substr( 0, 2 )  ===  "//" ) {
            s  =  "http:" + s;
         }
         if ( s !== u.value.source ) {
            WSTM.w.template.par.fiat( adjust, "url", s );
         }
      }
      if ( u ) {
         if ( ! that.re ) {
            that.re  =  { };
         }
         if ( typeof that.re.host  !==  "object" ) {
            that.re.host  =  new RegExp( "^(?:[a-z%0-9A-Z-]+\\.)+" +
                                          "[a-zA-Z]+/",
                                         "i" );
            that.re.url   =  new RegExp( "^(?:(?:https?|ftp):)?//" +
                                          "([^/]+)/",
                                         "i" );
            that.re.www   =  new RegExp( "^www.?\\.(.+)$",  "i" );
         }
         if ( that.re.host.test( u.value.source ) ) {
            WSTM.w.template.par.fiat( adjust,
                                      "url",
                                      "http://" + u.value.source );
            u  =  WSTM.w.template.par.find( adjust, "url" );
         }
      }
      if ( ! e   ||
           ( e      &&
             typeof e.value  ===  "object"
             &&     e.value   &&
             typeof e.value.source  ===  "string" ) ) {
         if ( e ) {
            s  =  WSTM.str.trim( e.value.source, true, true );
            if ( s === "&mdash;"  ||
                 s === String.fromCharCode( 8212 ) ) {
               s  =  false;
            }
         } else {
            s  =  false;
         }
         if ( ! s  &&  u ) {
            s  =  u.value.source;
            if ( s.indexOf( "//" )  >=  0 ) {
               s  =  s  +  "/";
               e  =  that.re.url.exec( s );
               if ( e ) {
                  s  =  e[ 1 ];
               }
            }
            s  =  s.replace( that.re.www, "$1" );
         }
         if ( s ) {
            WSTM.w.template.par.fiat( adjust, "text", s );
         }
      }
      e  =  WSTM.w.template.par.find( adjust, "format" );
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            if ( ! that.re ) {
               that.re  =  { };
            }
            if ( typeof that.re.kB  !==  "object" ) {
               that.re.kB    =  new RegExp( "\\bKB$" );
               that.re.nbsp  =  new RegExp( "([0-9]) *([kMG]B)$" );
               that.re.pdf   =  new RegExp( "^pdf\\b", "i" );
               that.re.semi  =  new RegExp( "^([A-Z a-z]+), *([0-9])$" );
               that.re.sep   =  new RegExp( "([0-9])\\.([0-9])" );
            }
            s  =  s.replace( that.re.kB,   "kB" )
                   .replace( that.re.nbsp, "$1&nbsp;$2" )
                   .replace( that.re.pdf,  "PDF" )
                   .replace( that.re.semi, "$1; $2" )
                   .replace( that.re.sep,  "$1,$2" );
            WSTM.w.template.par.fiat( adjust, "format", s );
         }
      }
      WSTM.w.template.mod.flush( adjust,
                                 [ [ "^archive-[a-z]+$",  false ],
                                   [ "^wayback$",         false ] ] );
      WSTM.w.template.par.fix( that.def, adjust );
      WSTM.w.template.par.fixed( that.def, adjust );
      WSTM.w.template.mod.format( adjust );
      adjust.fresh( false );
   };   // .lang.p.dewiki.template.webarchiv.f()



   WSTM.lang.p.dewiki.template.zenoWerk   =  function ( adjust ) {
      // Vorlage:Zeno-Werk
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2023-05-09 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "1" ),
          s;
      if ( e ) {
         s  =  e.flat();
         if ( typeof s  ===  "string"   &&
              s.substr( 0, 1 ) === "/" ) {
            e.value.source  =  s.substr( 1 );
            adjust.fresh( false );
         }
      }
   };   // .lang.p.dewiki.template.zenoWerk()



   WSTM.lang.p.dewiki.template.zh  =  function ( adjust ) {
      // Vorlage:zh
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .o.WikiTom().fresh()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2023-05-09 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "kurz" ),
          s;
      if ( e ) {
         s  =  e.flat();
         if ( typeof s  ===  "string"   &&
              ( s === ""  ||  s.toLowerCase() === "ja" ) ) {
            e.value.source  =  s.substr( "1" );
            adjust.fresh( false );
         }
      }
   };   // .lang.p.dewiki.template.zh()



   WSTM.lang.p.dewiki.template.zitat  =  {  };



   WSTM.lang.p.dewiki.template.zitat.block  =  function ( adjust ) {
      // Zitiervorlagen {{Zitat}}   {{Zitat-**}}
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.templates.wikitext.block
      //     < .mod.lazy
      //    .w.template.par.find()
      //    .str.trim()
      //    .w.template.mod.flush()
      //    .o.WikiTom().fresh()
      //    .w.template.par.fix()
      //    .lang.p.dewiki.template.zitat.sprache()
      //    .w.template.par.fixed()
      //    .w.template.mod.furnish()
      //    .lang.p.dewiki.template.zitat.fixed()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-11-10 PerfektesChaos@de.wikipedia
      var b    =  adjust.values[0].symbol,
          e2   =  WSTM.w.template.par.find( adjust, "2" ),
          e3   =  WSTM.w.template.par.find( adjust, "3" ),
          t    =  WSTM.w.template.par.find( adjust, "Text" ),
          ref  =  WSTM.w.template.par.find( adjust, "ref" ),
          qb   =  WSTM.w.template.par.find( adjust, "vor" ),
          qe   =  WSTM.w.template.par.find( adjust, "nach" ),
          d    =   [ [/^[zZ]itat(-[a-z]+)?$/,  "Zitat$1"],
                     [/^(Text|1)$/i,       "Text",         true],
                     [/^(lang|Sprache)$/i, "Sprache",      false],
                     [/^(Auth?or|2)$/i,    "Autor",        false],
                     [/^(Quelle|3)$/i,     "Quelle",       false],
                     [/^vor$/i,            "vor",          false],
                     [/^nach$/i,           "nach",         false],
                     [/^Umschrift$/i,      "Umschrift",    false],
                     [/^Übersetzung$/i,    "Übersetzung",  false],
                     [/^ref$/i,            "ref",          false] ],
          child, children, i, k;
      if ( ( e2  &&
             typeof e2.value  ===  "object" )   ||
           ( e3  &&
             typeof e3.value  ===  "object" ) ) {
         WSTM.mod.lazy  =  false;
      }
      if ( b.substr( 0, 1 )  ===  "z" ) {
         adjust.values[ 0 ].symbol  =  "Z" + b.substr( 1 );
      }
      if ( t ) {
         t  =  t.flat();
         if ( t ) {
            i  =  t.lastIndexOf( "[[" );
            if ( i >= 0  &&
                 t.lastIndexOf( "]]" ) < i ) {
               d  =  false;
            }
         }
      }
      if ( ref   &&
           typeof ref.value  ===  "object" ) {
         if ( typeof ref.value.source === "string" ) {
            ref.value.source  =  WSTM.str.trim( ref.value.source,
                                                true,
                                                true );
            ref.value.learnt  =  true;
         } else if ( typeof ref.value.children  ===  "object" ) {
            children  =  ref.value.children;
            child     =  children[ 0 ];
            if ( typeof child.source === "string" ) {
               child.source  =  WSTM.str.trimL( child.source,
                                                true,
                                                true );
               child.learnt  =  true;
            }
            child  =  children[ children.length - 1 ];
            if ( typeof child.source === "string" ) {
               child.source  =  WSTM.str.trimR( child.source,
                                                true,
                                                true  );
               child.learnt  =  true;
            }
         }
      }
      if ( qb && qe  ) {
         qb  =  qb.flat();
         qe  =  qe.flat();
         if ( ( qb && qe )  &&
              qb.length === 1  &&  qe.length === 1 ) {
            qb  =  qb.charCodeAt( 0 );
            qe  =  qe.charCodeAt( 0 );
            if ( ( qb === 8222  &&  qe === 8220 )   ||
                 ( qb ===   34  &&  qe ===   34 ) ) {
               qb  =  0;
               qe  =  0;
            } else {
               b  =  WSTM.w.template.par.find( adjust, "lang" );
               if ( b   &&
                    typeof b.value  ===  "object"
                    &&     b.value   &&
                    typeof b.value.source  ===  "string" ) {
                  b  =  WSTM.str.trim( b.value.source, true, true );
                  k  =  { de:      [  187,  171 ],
                          "de-ch": [  171,  187 ],
                          en:      [ 8220, 8221 ],
                          "en-us": [ 8220, 8221 ],
                          es:      [  171,  187 ],
                          fr:      [  171,  187 ] };
                  b  =  k[ b.toLowerCase() ];
                  if ( b  &&  qb === b[ 0 ]  &&  qe === b[ 1 ] ) {
                     qb  =  0;
                     qe  =  0;
                  }
               }
            }
         }
         b  =  qb + qe;
         if ( ! b ) {
            WSTM.w.template.mod.flush( adjust,
                                       [ [ "^vor$",  true ],
                                         [ "^nach$", true ] ] );
            adjust.fresh( false );
         }
      }
      children  =  adjust.parent.children;
      for ( i = 0;  i < children.length;  i++ ) {
         if ( children[ i ]  ===  adjust ) {
            k  =  i;
            break;   // for i
         }
      }   // for i = 1, children.length
      if ( k > 0 ) {
         b  =  children[ k - 1 ];
         if ( ! b.mode  &&
              typeof b.source  ===  "string" ) {
            i  =  b.source.length;
            if ( i > 0  &&
                 b.source.substr( i - 1 )  !==  "\n" ) {
               b.source  =  b.source + "\n";
            }
         }
      }
      b  =  children[ k + 1 ];
      if ( b  &&
           ! b.mode  &&
           typeof b.source  ===  "string"  &&
           b.source.length > 0 ) {
         b.source  =  WSTM.str.trimL( b.source );
         if ( b.source.substr( 0, 1 )  !==  "\n" ) {
            b.source  =  "\n" + b.source;
         }
      }
      WSTM.lang.p.dewiki.template.zitat.sprache( adjust );
      if ( d ) {
         WSTM.w.template.par.fix( d, adjust );
         WSTM.w.template.par.fixed( d, adjust );
         WSTM.w.template.mod.furnish( adjust,
                                    WSTM.lang.templates.wikitext.block );
         adjust.fresh( false );
      }
      WSTM.lang.p.dewiki.template.zitat.fixed( adjust );
   };   // .lang.p.dewiki.zitat.block()



   WSTM.lang.p.dewiki.template.zitat.blockLang  =  function ( adjust ) {
      // Vorlage:Zitat-** wandeln
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      //    .w.template.mod.flush()
      //    .w.template.par.fiat()
      //    .lang.p.dewiki.template.zitat.block()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2020-12-14 PerfektesChaos@de.wikipedia
      var e      =  WSTM.w.template.par.find( adjust, "lang" ),
          slang  =  adjust.values[ 0 ].symbol.substr( 6 );
      if ( e ) {
         WSTM.w.template.mod.flush( adjust,  [ [ "^lang$",  true ] ] );
      }
      e  =  WSTM.w.template.par.find( adjust, "sprache" );
      if ( e ) {
         WSTM.w.template.mod.flush( adjust,  [ [ "^sprache$",
                                                 true ] ] );
      }
      WSTM.w.template.par.fiat( adjust, "Sprache", slang );
      adjust.values[ 0 ].symbol  =  "Zitat";
      WSTM.lang.p.dewiki.template.zitat.block( adjust );
   };   // .lang.p.dewiki.zitat.blockLang()



   WSTM.lang.p.dewiki.template.zitat.fixed  =  function ( adjust ) {
      // Zitiervorlagen (Block und inline): Text-Parameter schützen
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    .w.template.par.find()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2019-08-01 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "Text" );
      if ( e   &&   typeof e.value  ===  "object" ) {
         e.value.lookup  =  false;
      }
   };   // .lang.p.dewiki.template.zitat.fixed()



   WSTM.lang.p.dewiki.template.zitat.sprache  =  function ( adjust ) {
      // Zitiervorlagen (Block und inline): Sprache-Parameter
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >  .lang.l.de.langs
      //    >  .lang.correct
      //    .w.template.par.find()
      //    .util.code.lang()
      //    .w.template.mod.flush()
      //    .w.template.par.fiat()
      // Remark: May be used as event handler -- 'this' is not accessed
      // 2021-11-10 PerfektesChaos@de.wikipedia
      var e  =  WSTM.w.template.par.find( adjust, "Sprache" ),
          g, s;
      if ( e ) {
         s  =  e.flat();
         if ( s ) {
            g  =  s.toLowerCase();
            if ( typeof WSTM.lang.l.de.langs[ g ]  === "string" ) {
               s  =  WSTM.lang.l.de.langs[ g ];
            } else {
               g  =  WSTM.util.code.lang( g );
               if ( typeof g  ===  "string" ) {
                  s  =  g;
               }
               if ( typeof WSTM.lang.correct[ s ] === "string" ) {
                  s  =  WSTM.lang.correct[ s ];
               }
            }
            if ( s === "de" ) {
               WSTM.w.template.mod.flush( adjust,  [ [ "^Sprache$",
                                                       true ] ] );
            } else {
               WSTM.w.template.par.fiat( adjust, "Sprache", s );
            }
            adjust.fresh( false );
         }
      }
   };   // .lang.p.dewiki.template.zitat.sprache()



   WSTM.lang.p.dewiki.template.zitation  =  function (adjust) {
      // Zitationsvorlagen -- Layout
      // Precondition:
      //    adjust  -- WikiTom sequence (forked element)
      // Postcondition:
      //    adjust was changed if necessary
      // Uses:
      //    >< .lang.p.dewiki.template.zitation.detectLines
      //    .w.template.family()
      //    .w.template.mod.furnish()
      //    .w.template.mod.format()
      // 2016-06-17 PerfektesChaos@de.wikipedia
      var o = { leap:      false,
                leave:     false,
                later:     false,
                lastline:  false },
          re;
      if ( ! this.detectLines ) {
         re                =  new RegExp( "\n[*#]+ *$" );
         this.detectLines  =  [ re ];
      }
      if ( WSTM.w.template.family( adjust, false, this.detectLines ) ) {
         o.indent     =  3;
         o.linebreak  =  true;
      } else {
         o.indent     =  1;
         o.linebreak  =  false;
      }
      WSTM.w.template.mod.furnish( adjust, o );
      WSTM.w.template.mod.format( adjust );
   };   // .lang.p.dewiki.template.zitation()



   WSTM.lang.p.dewiki.valEqualsign  =  function ( arglist ) {
      // Handler for template with '=' heading value (empty par name)
      // Precondition:
      //    arglist  -- String: template name
      // Postcondition:
      //    Returns false, if not known
      //            true   permit '=' heading value
      // 2014-11-03 PerfektesChaos@de.wikipedia
      var r;
      switch ( arglist ) {
         case "Infobox Schacheröffnung" :
         case "Schachbrett" :
         case "schachbrett" :
         case "Schachbrett-klein" :
         case "schachbrett-klein" :
            r  =  true;
            break;
         default:
            r  =  false;
      }   // switch arglist
      return  r;
   };   // .lang.p.dewiki.valEqualsign()



   WSTM.lang.p.dewiki.wikilink_lower1  =  function (adjust) {
      // Kleinschreibung von Wikilink-Lemma in deutschsprachiger WP
      // Precondition:
      //    adjust  -- array[2]
      //               [0] Wikilink target with lowercase begin
      //                   no sister project, no language, no namespace
      //               [1] Wikilink title, or false
      // Postcondition:
      //    Return false iff capitalized link not appropriate for project
      //    RegExp was used.
      // Uses:
      // 2011-02-05 PerfektesChaos@de.wikipedia
      var re       =  new RegExp("^[a-z][a-z][a-z][a-z]"),
          show,
          start,
          subject  =  adjust[0],
          low2up   =  re.test(subject);
      if (low2up) {
         show  =  adjust[1];
         if (show) {
            start  =  show.substr(0, 1);
            if (start === start.toLowerCase()) {
               start  =  show + " (";
               if (start  ===  subject.substr(0, start.length)) {
                  low2up  =  false;
               }   // kleingeschriebenes Klammerlemma
            }   // lowercase title
         }   // titled
      }   // low2up
      return low2up;
   };   // .lang.p.dewiki.wikilink_lower1()



};   // .bb.dewiki()
mw.libs.WikiSyntaxTextMod.bb.dewiki(mw.libs.WikiSyntaxTextMod);
delete mw.libs.WikiSyntaxTextMod.bb.dewiki;



//-----------------------------------------------------------------------



mw.libs.WikiSyntaxTextMod.bb.hooks  =  function ( WSTM ) {
   // Hook functions
   // 2012-09-12 PerfektesChaos@de.wikipedia
   "use strict";
   if ( typeof WSTM.hooks  !==  "object" ) {
      WSTM.hooks  =  { };
   }



   WSTM.hooks.fire  =  function ( action, arglist ) {
      // Adopt execution to sister projects and content language
      // Precondition:
      //    action   -- activity for current project and language
      //                "*"         initialization
      //                "template"  return false or [newname, relpos]
      //    arglist  -- parameter as appropriate, may be array
      // Postcondition:
      //    Returns appropriate answer of hook
      // Uses:
      //    >  .g.projLang
      //    >  .g.wDBname
      //    .hooks.redirect()
      //    .hooks.booksources()
      //    .hooks.br_slashed()
      //    .hooks.defaultsort_strict()
      //    .hooks.headline_1()
      //    .hooks.headline_spacing()
      //    .hooks.issn()
      //    .hooks.linegap()
      //    .hooks.no_pattern()
      //    .hooks.sortkey_ignorecase()
      //    .hooks.tablehead()
      //    .hooks.thumbnail()
      //    .hooks.yes_pattern()
      //    .o.WikiTom().fresh()
      // 2023-04-26 PerfektesChaos@de.wikipedia
      var r  =  false,
          x;
      switch ( action ) {
         case "*" :
            if ( typeof WSTM.lang.p[ WSTM.g.wDBname ]  !==  "object" ) {
               WSTM.lang.p[ WSTM.g.wDBname ]  =  { };
            }
            if ( typeof WSTM.lang.p[ WSTM.g.wDBname ].first
                                                      ===  "function" ) {
               WSTM.lang.p[ WSTM.g.wDBname ].first();
            }
            break;
         case "redirect.colon" :
         case "redirect.mode" :
         case "redirect.variant" :
            r  =  this.redirect( action.substr( 9 ) );
            break;
         case "booksources" :
         case "br_slashed" :
         case "capitalize1" :
         case "defaultsort_strict" :
         case "displaytitle_localize" :
         case "headline_1" :
         case "headline_spacing" :
         case "issn" :
         case "linegap" :
         case "no_pattern" :
         case "templates_sisterproj" :
         case "sortkey_ignorecase" :
         case "tablehead" :
         case "thumbnail" :
         case "yes_pattern" :
            r  =  this[ action ]( arglist );
            break;
         case "finishing" :
         case "sistertemplate" :
            if ( typeof WSTM.lang.p[ WSTM.g.wDBname ]  ===  "object" ) {
               x  =  WSTM.lang.p[ WSTM.g.wDBname ];
               if ( typeof x  ===  "object"   &&
                    typeof x[ action ]  ===  "function" ) {
                  r  =  x[ action ](arglist);
               }
            }
            if ( typeof WSTM.lang.p[ WSTM.g.projLang ]  === "object" ) {
               x  =  WSTM.lang.l[ WSTM.g.projLang ];
               if ( typeof x  ===  "object"   &&
                    typeof x[ action ]  ===  "function" ) {
                  r  =  x[ action ](arglist);
               }
            }
            break;
         case "class_discard" :
         case "comment" :
         case "fragment" :
         case "paramSeqMix" :
         case "references" :
         case "valEqualsign" :
         case "wikilink_lower1" :
            if ( typeof WSTM.lang.p[ WSTM.g.wDBname ]  ===  "object" ) {
               x  =  WSTM.lang.p[ WSTM.g.wDBname ];
               if ( typeof x[ action ]  === "function" ) {
                  r  =  x[ action ]( arglist );
               }
            }
            break;
         case "https" :
         case "template" :
            if ( typeof WSTM.lang.p[ WSTM.g.wDBname ]  ===  "object" ) {
               x  =  WSTM.lang.p[ WSTM.g.wDBname ];
               if ( typeof x[ action ]  ===  "object" ) {
                  x  =  x[ action ];
                  if ( typeof x.fresh  ===  "function" ) {
                     r  =  x.fresh( arglist );
                  }
               }
            }
            break;
      }   // switch action
      return  r;
   };   // .hooks.fire()



   WSTM.hooks.booksources  =  function (adjust) {
      // Check link for 'BookSources' within Special:
      // Precondition:
      //    adjust  -- keyword
      // Postcondition:
      //    Returns true if adjust is the 'BookSources' within Special:
      // Uses:
      //    >  .lang.translate.d.booksources
      //    >  .g.wDBname
      // 2012-09-05 PerfektesChaos@de.wikipedia
      var s  =  adjust.toLowerCase(),
          r  =  (s === "booksources"),
          w;
      if (! r) {
         w  =  WSTM.lang.translate.d.booksources[ WSTM.g.wDBname ];
         if (w) {
            r  = (s === w.toLowerCase());
         }
      }
      return  r;
   };   // .hooks.booksources()



   WSTM.hooks.br_slashed  =  function () {
      // Define whether project uses <br /> or  <br>
      // Postcondition:
      //    Returns true if <br /> shall be used
      // Uses:
      //    >  .g.wDBname
      // 2015-09-22 PerfektesChaos@de.wikipedia
      var slashed  =  "|dewiki|";
      return  ( slashed.indexOf("|" + WSTM.g.wDBname + "|")  >=  0 );
   };   // WSTM.hooks.br_slashed()



   WSTM.hooks.capitalize1  =  function () {
      // Check whether this project distinguishes first letter of title
      // Postcondition:
      //    Returns true if first character may be capitalized, or false
      // Uses:
      //    >  .g.wDBname
      //    >  .g.wNsNumber
      //    >< .hooks.capitalizeFirst
      // 2016-08-17 PerfektesChaos@de.wikipedia
      if ( typeof this.capitalizeFirst  !==  "boolean" ) {
         this.capitalizeFirst  =  ( WSTM.g.wNsNumber > 1 );
         if ( ! this.capitalizeFirst ) {
            this.capitalizeFirst  =
                            ( WSTM.g.wDBname.indexOf("wiktionary") < 0 );
         }
      }
      return  this.capitalizeFirst;
   };   // WSTM.hooks.capitalize1()



   WSTM.hooks.defaultsort_strict  =  function () {
      // Forbid DEFAULTSORTKEY|DEFAULTCATEGORYSORT instead of DEFAULTSORT
      // Postcondition:
      //    Returns false iff variant is permitted
      // Uses:
      //    >  .g.wDBname
      // 2011-04-24 PerfektesChaos@de.wikipedia
      var r  =  true;
      return  r;
   };   // .hooks.defaultsort_strict()



   WSTM.hooks.displaytitle_localize  =  function () {
      // Force localization of DISPLAYTITLE
      // Postcondition:
      //    Returns false iff variant is permitted
      // Uses:
      //    >  .g.wDBname
      // 2012-04-04 PerfektesChaos@de.wikipedia
      var r  =  false;
      return  r;
   };   // .hooks.displaytitle_localize()



   WSTM.hooks.headline_1  =  function () {
      // Retrieve top headline policy
      // Postcondition:
      //    Returns true if "= H1 =" not permitted, or false
      // Uses:
      //    >  .g.wDBname
      //    >  .g.wNsNumber
      // 2013-01-24 PerfektesChaos@de.wikipedia
      var r  =  false;
      switch ( WSTM.g.wDBname ) {
         case "dewiki" :
            r  =  ( ! WSTM.g.wNsNumber );
            break;
      }   // switch .g.wDBname
      return  r;
   };   // .hooks.headline_1()



   WSTM.hooks.headline_spacing  =  function () {
      // Retrieve headline spacing policy
      // Postcondition:
      //    Returns required policy code, or false
      //             1  -- 1 space between == and headline
      //            -1  -- no space at all between == and headline
      // Uses:
      //    >  .g.wDBname
      //    >  .lang.p.policies.hline_spc
      // 2019-11-12 PerfektesChaos@de.wikipedia
      var r  =  0;
      if ( typeof WSTM.lang.p.policies.hline_spc[ WSTM.g.wDBname ]
                                                        ===  "number" ) {
         r  =  WSTM.lang.p.policies.hline_spc[ WSTM.g.wDBname ];
      }
      return r;
   };   // .hooks.headline_spacing()



   WSTM.hooks.issn  =  function (arglist) {
      // Standardize ISSN encoding
      // Precondition:
      //    arglist  -- Array[2]
      //                [0]  -- string: plain code or longer expression
      //                [1]  -- true: try to make template,  format ID
      // Postcondition:
      //    Returns string with standardized ID (not trimmed)  or
      //                   created template transclusion
      // Uses:
      //    >  .g.projLang
      //    >  .lang.l.*
      //    >< .g.re.issn
      //    .util.code.issn()
      // 2013-09-15 PerfektesChaos@de.wikipedia
      var r  =  arglist[0],
          g,
          i,
          x;
      if (! WSTM.g.re.issn) {
         WSTM.g.re.issn  =  new RegExp("^(.*\\bISSN[:=]?)?" +
                                        "( *)" +
                                        "([0-9].+[0-9])" +
                                        "([ \n]*)$",
                                       "i");
      }
      g  =  WSTM.g.re.issn.exec(r);
      if (g) {
         i  =  g[3];
         x  =  WSTM.util.code.issn(i);
         if (x) {
            i  =  x;
         }
         if (g[1]) {
            r  =  g[1] + " " + i;
         } else if (g[2]) {
            r  =  " " + i;
         } else {
            r  =  i;
         }
         if (arglist[1]) {
            x  =  WSTM.lang.l[ WSTM.g.projLang ];
            if ( typeof x  ===  "object" ) {
               x  =  x.issn;
               if ( typeof x  ===  "function" ) {
                  r  =  x(i);
               }
            }
         } else {
            r  =  r.toUpperCase();
         }
         r  =  r + g[4];
      }
      return  r;
   };   // .hooks.issn()



   WSTM.hooks.linegap  =  function ( arglist ) {
      // Permission to have more than two line breaks between text blocks
      // Precondition:
      //    arglist  -- string with possible folowing line, or false
      // Postcondition:
      //    Returns true if only 1 empty line permitted here, else 2
      // Uses:
      //    >  .g.wDBname
      // 2012-08-25 PerfektesChaos@de.wikipedia
      var r  =  false;
      switch ( WSTM.g.wDBname ) {
         case "dewiki" :
            if ( arglist ) {
               r  =  !  /\n'''.+'''/.test( "\n" + arglist );
            }
            break;
      }   // switch .g.wDBname
      return  r;
   };   // .hooks.linegap()



   WSTM.hooks.yes_pattern  =  function () {
      // Retrieve yes pattern RegExp
      // Postcondition:
      //    Returns RegExp, or false
      // Uses:
      //    >  .g.wDBname
      //    >  .lang.p.policies.yes_pattern
      // 2019-11-12 PerfektesChaos@de.wikipedia
      var r;
      if ( typeof WSTM.lang.p.policies.yes_pattern[ WSTM.g.wDBname ]
                                                        ===  "string" ) {
         r  =  new RegExp( WSTM.lang.p.policies.yes_pattern
                                                    [ WSTM.g.wDBname ] );
      }
      return  r || false;
   };   // .hooks.yes_pattern()



   WSTM.hooks.no_pattern  =  function () {
      // Retrieve no pattern RegExp
      // Postcondition:
      //    Returns RegExp, or false
      // Uses:
      //    >  .g.wDBname
      //    >  .lang.p.policies.no_pattern
      // 2019-11-12 PerfektesChaos@de.wikipedia
      var r;
      if ( typeof WSTM.lang.p.policies.no_pattern[ WSTM.g.wDBname ]
                                                        ===  "string" ) {
         r  =  new RegExp( WSTM.lang.p.policies.no_pattern
                                                    [ WSTM.g.wDBname ] );
      }
      return  r || false;
   };   // .hooks.no_pattern()



   WSTM.hooks.redirect  =  function ( arglist ) {
      // Adaption of REDIRECT statements
      // Precondition:
      //    arglist  -- keyword "colon", "mode", "variant"
      // Postcondition:
      //    Returns false, if no policy
      //            "colon"    -- 1: insert,  -1: ignore,  false: remove
      //            "mode"     -- false:  use localization
      //                          true:   ignore keyword
      //                          string: deviate from localization
      //            "variant"  -- "L", "C", "U" or combined, or false
      // Uses:
      //    >  .lang.p.policies.redirect
      //    >  .g.wDBname
      // 2019-11-12 PerfektesChaos@de.wikipedia
      var r;
      if ( typeof WSTM.lang.p.policies.redirect[ WSTM.g.wDBname ]
                                                        ===  "object" ) {
         r  =  WSTM.lang.p.policies.redirect[ WSTM.g.wDBname ];
         if ( r ) {
            r  =  r[ arglist ];
         }
      }
      return  r || false;
   };   // .hooks.redirect()



   WSTM.hooks.sortkey_ignorecase  =  function () {
      // Project ignores case in sortkey
      // Postcondition:
      //    Returns false, if distinction, or true to ignore
      // Uses:
      //    >  .g.wDBname
      // 2016-01-22 PerfektesChaos@de.wikipedia
      var s  =  " dewiki ",
          r  =  (s.indexOf(" " + WSTM.g.wDBname + " ")  >=  0);
      return  r;
   };   // .hooks.sortkey_ignorecase()



   WSTM.hooks.tablehead  =  function ( arglist ) {
      // Table head encountered
      // Precondition:
      //    arglist  -- detected parameter list
      //                Every element is an Array(3)
      //                    [1] keyword
      //                    [2] value (string content),  or false (sole)
      // Postcondition:
      //    Returns false, if no adaption, or modified arglist
      //            arglist may be modified by Array side effect
      // Uses:
      //    >  .g.wDBname
      //    >< .w.encountered.prettytable
      //    >< .w.encountered.sortable
      //    .hooks.finalize()
      //    (.lang.p.dewiki.prettytable)
      // 2016-02-27 PerfektesChaos@de.wikipedia
      var e, i, j, r, s;
      switch ( WSTM.g.wDBname ) {
         case "dewiki" :
            if ( typeof arglist  ===  "object" ) {
               e  =  WSTM.w.encountered;
               if ( typeof e.prettytable  !==  "boolean" ) {
                  for ( i = 0;  i < arglist.length;  i++ ) {
                     if (arglist[i][1] === "class") {
                        s  =  arglist[i][2];
                        if (s  &&  /\bprettytable\b/.test(s)) {
                           e.prettytable  =  true;
                           this.finalize(WSTM.lang.p.dewiki.prettytable);
                        }
                        break;   // for i
                     }
                  }   // for i
               }
               if ( typeof e.sortable  !==  "boolean" ) {
                  for ( i = 0;  i < arglist.length;  i++ ) {
                     if ( arglist[i][1] === "class" ) {
                        s  =  arglist[i][2];
                        if (s  &&  /\bsortable\b/.test(s)) {
                           e.sortable  =  true;
                        }
                        break;   // for i
                     }
                  }   // for i
               }
               for (i = 0;  i < arglist.length;  i++) {
                  if (arglist[i][1] === "border") {
                     for (j = 0;  j < arglist.length;  j++) {
                        if (arglist[j][1] === "class") {
                           s  =  arglist[j][2];
                           if (s  &&
                               /\b(?:pretty|wiki)table\b/.test(s)) {
                              arglist.splice(i, 1);
                              r  =  arglist;
                           }
                           break;   // for j
                        }
                     }   // for j
                     break;   // for i
                  }
               }   // for i
            }
            break;
      }   // switch .g.wDBname
      return  r;
   };   // .hooks.tablehead()



   WSTM.hooks.templates_sisterproj  =  function ( arglist ) {
      // Adaption of sisterproject template family
      // Precondition:
      //    arglist  -- (optional) string: downcased template ID
      // Postcondition:
      //    Returns object, or boolean if template ID not in detail
      // Uses:
      //    >  .lang.p.policies.templates_sisterproj
      //    >  .g.wDBname
      //    >< .lang.p.templates_sisterproj
      // 2019-08-16 PerfektesChaos@de.wikipedia
      var  p  =  WSTM.lang.p,
           current, defaults, policies, r, s, spec, t;
      if ( typeof p.templates_sisterproj  ===  "object" ) {
         r  =  p.templates_sisterproj;
      } else {
         if ( typeof p.policies.templates_sisterproj  ===  "object" ) {
            policies  =  p.policies.templates_sisterproj;
            if ( typeof policies[ "*" ]  ===  "object" ) {
               defaults  =  policies[ "*" ];
               r         =  { };
               for ( s in defaults ) {
                  t  =  defaults[ s ];
                  if ( t === true ) {
                     t  =  { };
                  }
                  r[ s ]  =  t;
               }  //  for s in defaults
            }
            if ( typeof policies[ WSTM.g.wDBname ]  ===  "object" ) {
               current  =  policies[ WSTM.g.wDBname ];
               if ( typeof current[ "*" ]  ===  "object" ) {
                  defaults  =  current[ "*" ];
                  for ( s in current ) {
                     if ( s !==  "*" ) {
                        t  =  current[ s ];
                        if ( t === true ) {
                           t  =  { };
                        }
                        if ( typeof t  ===  "object"    &&   t ) {
                           for ( spec in defaults ) {
                              if ( typeof t[ spec ]  ===  "undefined" ) {
                                 t[ spec ]  =  defaults[ spec ];
                              }
                           }  //  for spec in defaults
                        }
                        current[ s ]  =  t;
                     }
                  }  //  for s in current
                  delete current[ "*" ];
               }
               if ( r ) {
                  for ( s in current ) {
                     r[ s ]  =  current[ s ];
                  }  //  for s in current
               } else {
                  r  =  current;
               }
            } else {
               r  =  { };
            }
         } else {
            r  =  { };
         }
         p.templates_sisterproj  =  r;
         delete p.policies.templates_sisterproj;
      }
      if ( arglist ) {
         if ( typeof r[ arglist ]  ===  "object" ) {
            r  =  r[ arglist ];
         } else {
            r  =  false;
         }
      }
      return  r;
   };   // .hooks.templates_sisterproj()



   WSTM.hooks.thumbnail  =  function ( /* arglist */ ) {
      // Adaption of 'thumbnail' image parameter
      // Precondition:
      //    arglist  -- detected similar keyword
      // Postcondition:
      //    Returns false, if no adaption, or string to be used
      // Uses:
      //    >  .g.wDBname
      //    >< .w.encountered.mini
      //    >< .w.encountered.miniatur
      //    .hooks.finalize()
      //    (.lang.p.dewiki.miniatur)
      // 2015-11-27 PerfektesChaos@de.wikipedia
      var r  =  false;
      switch ( WSTM.g.wDBname ) {
         case "dewiki" :
            r  =  "mini";
            break;
      }   // switch .g.wDBname
      return  r;
   };   // .hooks.thumbnail()



   WSTM.hooks.yes_pattern  =  function () {
      // Retrieve yes pattern RegExp
      // Postcondition:
      //    Returns RegExp, or false
      // Uses:
      //    >  .g.wDBname
      //    >  .lang.p.policies.yes_pattern
      // 2019-11-12 PerfektesChaos@de.wikipedia
      var r;
      if ( typeof WSTM.lang.p.policies.yes_pattern[ WSTM.g.wDBname ]
                                                        ===  "string" ) {
         r  =  new RegExp( WSTM.lang.p.policies.yes_pattern
                                                    [ WSTM.g.wDBname ] );
      }
      return  r || false;
   };   // .hooks.yes_pattern()



};   // .bb.hooks()
mw.libs.WikiSyntaxTextMod.bb.hooks(mw.libs.WikiSyntaxTextMod);
delete mw.libs.WikiSyntaxTextMod.bb.hooks;



//-----------------------------------------------------------------------



( function ( WSTM ) {
   "use strict";
   var sub      =  "L",
       self     =  WSTM.lang.self,
       version  =  WSTM.lang.vsn,
       rls;
   if ( typeof WSTM.main  ===  "object"
        &&     WSTM.main   &&
        typeof WSTM.main.wait  ===  "function" ) {
      // Start on import: callback to waiting ...
      WSTM.main.wait( sub, version );
   } else if ( typeof mw.loader  ===  "object"   &&
               typeof mw.hook  !==  "undefined" ) {
      rls = { };
      rls[ self ] = "ready";
      mw.loader.state( rls );
      mw.hook( "WikiSyntaxTextMod/" + sub + ".ready" )
        .fire( [ sub, version ] );
   }
} ( mw.libs.WikiSyntaxTextMod ) );



// Emacs
// Local Variables:
// coding: utf-8-unix
// fill-column: 80
// End:

/// EOF </nowiki>   WikiSyntaxTextMod/dL.js