texlive[56143] Master/texmf-dist: biblatex (20aug20)

commits+karl at tug.org commits+karl at tug.org
Thu Aug 20 23:11:52 CEST 2020


Revision: 56143
          http://tug.org/svn/texlive?view=revision&revision=56143
Author:   karl
Date:     2020-08-20 23:11:51 +0200 (Thu, 20 Aug 2020)
Log Message:
-----------
biblatex (20aug20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/bibtex/bib/biblatex/biblatex/biblatex-examples.bib
    trunk/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst
    trunk/Master/texmf-dist/doc/latex/biblatex/CHANGES.md
    trunk/Master/texmf-dist/doc/latex/biblatex/README
    trunk/Master/texmf-dist/doc/latex/biblatex/biblatex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/biblatex.tex
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/01-introduction-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/02-annotations-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/02-annotations-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys.tex
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/04-delimiters-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/04-delimiters-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/10-references-per-section-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/11-references-by-section-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/11-references-by-section-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/12-references-by-segment-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/12-references-by-segment-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/13-references-by-keyword-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/14-references-by-category-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/15-references-by-type-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/18-numeric-hybrid-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/20-indexing-single-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/20-indexing-single-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/22-indexing-subentry-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/30-style-numeric-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp.tex
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/32-style-numeric-verb-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/40-style-alphabetic-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/40-style-alphabetic-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/41-style-alphabetic-verb-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/50-style-authoryear-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/50-style-authoryear-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/51-style-authoryear-ibid-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/52-style-authoryear-comp-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/53-style-authoryear-icomp-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/60-style-authortitle-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/60-style-authortitle-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/61-style-authortitle-ibid-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/62-style-authortitle-comp-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/63-style-authortitle-icomp-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/64-style-authortitle-terse-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/65-style-authortitle-tcomp-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/66-style-authortitle-ticomp-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/70-style-verbose-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/71-style-verbose-ibid-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/72-style-verbose-note-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/73-style-verbose-inote-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/74-style-verbose-trad1-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/75-style-verbose-trad2-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/76-style-verbose-trad3-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/80-style-reading-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/81-style-draft-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/82-style-debug-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/92-bibliographylists-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/96-dates.tex
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/97-annotations-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/biblatex-examples.bib
    trunk/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx
    trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.def
    trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.sty
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-compat.def
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-dm.def
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-mcite.def
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-unicode.def
    trunk/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/brazilian.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/british.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/bulgarian.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/catalan.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/croatian.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/czech.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/danish.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/estonian.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/finnish.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/french.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/galician.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/german.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/greek.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/icelandic.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/italian.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/latvian.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/magyar.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/norsk.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/polish.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/portuguese.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/russian.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/slovak.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/slovene.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/swedish.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/ukrainian.lbx

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-expl3.def
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-latex2e.def
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/lithuanian.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/serbian.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/serbianc.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/turkish.lbx

Modified: trunk/Master/texmf-dist/bibtex/bib/biblatex/biblatex/biblatex-examples.bib
===================================================================
--- trunk/Master/texmf-dist/bibtex/bib/biblatex/biblatex/biblatex-examples.bib	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/bibtex/bib/biblatex/biblatex/biblatex-examples.bib	2020-08-20 21:11:51 UTC (rev 56143)
@@ -25,19 +25,13 @@
 
 @set{set,
   entryset     = {herrmann,aksin,yoon},
-  annotation   = {A \texttt{set} with three members. The \texttt{crossref} field
-                  in the \texttt{@set} entry and the \texttt{entryset} field in
-                  each set member entry is needed only when using BibTeX as the
-                  backend},
+  annotation   = {A \texttt{set} with three members.},
 }
 
 @set{stdmodel,
   entryset     = {glashow,weinberg,salam},
   annotation   = {A \texttt{set} with three members discussing the standard
-                  model of particle physics. The \texttt{crossref} field
-                  in the \texttt{@set} entry and the \texttt{entryset} field in
-                  each set member entry is needed only when using BibTeX as the
-                  backend},
+                  model of particle physics.},
 }
 
 @article{aksin,

Modified: trunk/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst	2020-08-20 21:11:51 UTC (rev 56143)
@@ -16,6 +16,7 @@
 
 ENTRY {
     % special fields
+    fakeset
     entryset
     entrysubtype
     execute
@@ -183,7 +184,7 @@
            last.name last.hash last.year last.extra }
 
 FUNCTION {initialize} {
-  "$Revision: 3.13 $"
+  "$Revision: 3.15 $"
   #12 entry.max$ substring$
   #-3 entry.max$ substring$
   "Biblatex version: " swap$ * top$
@@ -257,16 +258,11 @@
   type$ "set" =
 }
 
-FUNCTION {ctrl:skiplos} {
-  ctrl:control skiplos or
-  ctrl:set not
-  and
-}
 
 FUNCTION {ctrl:skiplab} {
   ctrl:control skiplab or
-  ctrl:set not
-  and
+  ctrl:set %  fakeset empty$ and
+  or
 }
 
 FUNCTION {ctrl:labelalpha} {
@@ -1413,6 +1409,14 @@
 }
 
 FUNCTION {output:specials} {
+  fakeset empty$
+    'skip$
+    { ctrl:set
+        { "\fakeset" fakeset wrap:braces * output:indent:field  }
+        { "fakeset can only be used for @set entries" warning * }
+      if$
+    }
+  if$
   entryset empty$
     'skip$
     { ctrl:set
@@ -1459,23 +1463,27 @@
     'skip$
   if$
   ctrl:labeldate
-  dateyear empty$ not
-  and
-    { "labelyear" dateyear output:write:field
-      dateendyear empty$
-        'skip$
-        { dateyear dateendyear =
+    { dateyear empty$ not
+        { "labelyear" dateyear output:write:field
+          dateendyear empty$
             'skip$
-            { dateendyear open.ended =
+            { dateyear dateendyear =
                 'skip$
-                { "labelendyear" dateendyear output:write:field }
+                { dateendyear open.ended =
+                    'skip$
+                    { "labelendyear" dateendyear output:write:field }
+                  if$
+                }
               if$
             }
           if$
+          "extradate"   extradate       output:write:field
+          "labeldatesource" ""          output:write:field:maybeempty
         }
+        { "extradate"   extradate       output:write:field
+          "labeldatesource" "nodate"    output:write:field
+        }
       if$
-      "extradate"   extradate       output:write:field
-      "labeldatesource" ""          output:write:field:maybeempty
     }
     'skip$
   if$

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/CHANGES.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/CHANGES.md	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/CHANGES.md	2020-08-20 21:11:51 UTC (rev 56143)
@@ -1,12 +1,222 @@
+# RELEASE NOTES FOR VERSION 3.15
+- Fixed a long-standing issue with `\intitlepunct`.
+  The old definition
+  ```
+  \newbibmacro*{in:}{%
+    \printtext{%
+      \bibstring{in}\intitlepunct}}
+  ```
+  would print `\intitlepunct` directly and not via the punctuation
+  buffer. Since the `\add...` punctuation macros guard against
+  undesired double punctuation, this would usually not show as an
+  issue (except in edge cases https://tex.stackexchange.com/q/175730/,
+  https://github.com/plk/biblatex/issues/943).
+  The new definition uses the punctuation tracker to print
+  `\intitlepunct`.
+  ```
+  \newbibmacro*{in:}{%
+    \bibstring{in}%
+    \printunit{\intitlepunct}}
+  ```
+  `\printunit` is needed instead of `\setunit` to stop subsequent
+  `\setunit`s from overriding `\intitlepunct` in case of missing
+  fields.
+- Define `volcitepages` and `multipostnote` as a field alias of `postnote`
+  and `multiprenote` as an alias of `prenote`.
+  That should make it easier to change all post- and prenote formats at once.
+  A change to `postnote` will automatically apply to `multipostnote`
+  and `volcitepages` as well. Similarly for `multiprenote`.
+  In case that is not desired, the original definitions can be restored with
+  ```
+  \DeclareFieldFormat{volcitepages}{\mkpageprefix[pagination][\mknormrange]{#1}}
+  \DeclareFieldFormat{multiprenote}{#1\isdot}
+  \DeclareFieldFormat{multipostnote}{\mkpageprefix[pagination][\mknormrange]{#1}}
+  ```
+- Unified DOI, eprint and URL printing across all entry types.
+  The fields `doi`, `eprint`, `eprintclass`, `eprinttype` and `url`
+  are now valid for all entry types.
+  `@online` and `@unpublished` now also use the bibmacro
+  `doi+eprint+url`.
+  This means `@online` now responds to the `url` option.
+  That does not mean, however, that a global `url=false,`
+  suppresses URLs for `@online` entries,  since `url=true,`
+  is set on a per-type level to ensure backwards compatibility
+  as far as possible.
+  In case eprint information should be suppressed for `@online`
+  and `@unpublished`, add
+  ```
+  \ExecuteBibliographyOptions[online,unpublished]{eprint=false}
+  ```
+- Added `eid` to more entry types.
+  To avoid issues with backwards compatibility of widely used bibmacros,
+  the bibmacro `chapter+pages` was redefined from
+  ```
+  \newbibmacro*{chapter+pages}{%
+    \printfield{chapter}%
+    \setunit{\bibpagespunct}%
+    \printfield{pages}%
+    \newunit}
+  ```
+  to
+  ```
+  \newbibmacro*{chapter+pages}{%
+    \printfield{chapter}%
+    \setunit{\bibeidpunct}%
+    \printfield{eid}%
+    \setunit{\bibpagespunct}%
+    \printfield{pages}%
+    \newunit}
+  ```
+- Added `\bibeidpunct` in analogy to `\bibpagespunct`.
+- Added `issuetitleaddon` and `journaltitleaddon` fields.
+- Added options `backreffloats` and `trackfloats` to enable/disable
+  citation tracking and back references in floats.
+  Note that citation tracking in floats can lead to undesirable
+  results in case the float objects floats too far from its "natural"
+  position.
+- **INCOMPATIBLE CHANGE** `numeric-comp` compresses subentry set
+  references now.
+  This behaviour can be disabled with `subentrycomp=false`.
+- Added `subentrycomp` option to `numeric-comp` citation style.
+  The option is only relevant with `subentry=true`.
+  With `subentrycomp=true` set citations will be compressed
+  to "1a-c" instead of "1a; 1b; 1c".
+  The option is mainly intended for backwards compatibility;
+  the behaviour of previous `biblatex` versions can be restored
+  with `subentrycomp=false`.
+- Added `\multiciterangedelim`, `\multicitesubentrydelim`,
+  `\multicitesubentryrangedelim`, `\superciterangedelim`,
+  `\supercitesubentrydelim`, and `\supercitesubentryrangedelim` for
+  finer control over (compressed) subentry citations in `numeric-comp`.
+- **CRITICAL CHANGE** The structure of the bibmacros in `numeric-comp`
+  has been reworked to make it easier to customise the printed output.
+  Documents that relied on patching internal bibmacros or heavily
+  redefined them may have to adapt.
+- **CRITICAL CHANGE**
+  Implemented better `@set` support for BibTeX, `@set`s should now
+  sort properly.
+  This is achieved with a two-pass structure and (hidden) copies of
+  the set entries.
+  The two-pass structure means that the compilation sequence becomes
+  LaTeX, BibTeX, LaTeX, BibTeX, LaTeX, LaTeX.
+- **CRITICAL CHANGE**
+  The case change functions now make use of the `expl3` module `l3text`
+  if the available `expl3` version is recent enough.
+  If `expl3` is too old the old LaTeX2e implementation is used.
+  If desired the implementation of the case changing functions
+  can be selected at load-time with the `casechanger` option, which
+  accepts the values `expl3`, `latex2e` and `auto` (which selects
+  `expl3` if the `expl3` version not older than 2020-04-06, this
+  is the default).
+
+  The `expl3` implementation of the case changer is slightly more
+  robust than the home-grown `latex2e` code.
+- The option `bibtexcaseprotection` can be used to turn off the
+  case protection via curly braces. This allows for a saner approach
+  to case protection where text is protected solely via a macro
+  like `\NoCaseChange`, e.g.
+  ```
+  title = {The Story of \NoCaseChange{HMS \emph{Erebus}}
+           in \emph{Really} Strong Wind},
+  ```
+  instead of
+  ```
+  title = {The Story of {HMS} \emph{Erebus}
+           in {\emph{Really}} Strong Wind},
+  ```
+- Added `\mautocite` and `\Mautocite`.
+- Added `\NumsCheckSetup` and `\PagesCheckSetup` for finer control
+  of the `\ifnumerals` and `\ifpages` checks.
+- Deprecate the starred `\DeclareDelimAlias*` in favour of
+  `\DeclareDelimAlias` with optional arguments.
+- **INCOMPATIBLE CHANGE**
+  `biblatex` no longer falls back to English for unknown languages.
+  Warnings will be triggered if undefined language strings or extras
+  are used.
+- **INCOMPATIBLE CHANGE**
+  Bibliography strings and bibliography extras can now be written
+  either to `\captions<language>` or to `\extras<language>`
+  (this is controlled with the `langhook` option).
+  Previously, they were written to `\extras<language>`, but upon
+  reflection `\captions<language>` appears to be a more sensible
+  place for these definitions.
+  The new default is to write to `\captions<language>`
+  (i.e. `langhook=captions`).
+  The previous behaviour can be restored with `langhook=extras`.
+- **INCOMPATIBLE CHANGE** Moved `\delimcontext{bib}` to `\AtUsedriver`,
+  this makes it easier to override the delimiter context in `\usedriver`
+  calls. `\AtUsedriver*` calls may have to be amended to include
+  `\delimcontext{bib}`. The new default is
+  ```
+  \AtUsedriver{%
+    \delimcontext{bib}%
+    \let\finentry\blx at finentry@usedrv
+    \let\newblock\relax
+    \let\abx at macro@bibindex\@empty
+    \let\abx at macro@pageref\@empty}
+  ```
+  Note that this definition is backwards compatible
+  and can be used in older versions as well (down to v3.4 2016-05-10).
+- `biblatex` now tests if a requested backend (re)run happened by
+  comparing the MD5 hashes of the new and old `.bbl` files.
+- Added file hooks `\blx at filehook@preload@<filename>`,
+  `\blx at filehook@postload@<filename>`
+  and `\blx at filehook@failure@<filename>`
+  to execute hooks before or after a file is loaded
+  or if the loading fails.
+  `\blx at lbxfilehook@simple at preload@<filename>`,
+  `\blx at lbxfilehook@simple at postload@<filename>`
+  and `\blx at lbxfilehook@simple at failure@<filename>`
+  as well as
+  `\blx at lbxfilehook@once at preload@<filename>`,
+  `\blx at lbxfilehook@once at postload@<filename>`
+  and `\blx at lbxfilehook@once at failure@<filename>`
+  are the equivalents for `.lbx` loading, where
+  files may be loaded several times in some situations.
+- Added limited support for 'nodate' with BibTeX.
+- Improved `babel` and `polyglossia` interfacing (avoids more or less
+  unsupported patches).
+  This should work with `babel` at least v3.9r (2016/04/23)
+  and polyglossia `polyglossia` v1.49 (2020/04/08) or later.
+- **INCOMPATIBLE CHANGE** Removed list and name index wrappers
+  (`\DeclareIndexNameWrapperFormat`, `\DeclareIndexListWrapperFormat`
+  and friends). Those wrappers make no sense, since the indexed
+  names are not printed 'together' in any useful sense of the word
+  and were never working anyway.
+- **CRITICAL CHANGE** Generalised some keyval macros.
+  `biblatex`-related uses of `\define at key` should ideally replaced with
+  `\blx at kv@defkey`.
+  Style authors are advised not to rely too much on the internal
+  implementation of certain keyval interfaces.
+  Users who want to experiment with using a different underlying
+  keyval parser need only provide replacements of the `\blx at kv@...`
+  macros (which are defined via `\provide...` so that they will
+  not overwrite existing definitions; in particular users can define
+  those replacements before loading `biblatex`).
+- Deprecate `\ifkomabibtotoc` and `\ifkomabibtotocnumbered`.
+  With newer versions of KOMA-Script these tests are no longer used
+  and their implementation was always a bit shifty (they would only pick
+  up globally set options).
+
+
 # RELEASE NOTES FOR VERSION 3.14
 - biber from version 2.14 has extended, granular XDATA functionality to
   allow referencing from and to parts of fields. This makes XDATA entries into
   more general data sharing containers.
+- Biber applies Perl's Unicode case folding to normalise the
+  capitalisation of field names and entry types when reading from the
+  `.bib` file. The output in the `.bbl` (what comes out on the
+  `biblatex` side uses the capitalisation from the data model; the only
+  exception are unknown entry types which are passed on *exactly*
+  as they are given in the `.bib` file - of course it is strongly
+  recommended to define all entry types one intends to use in the
+  data model).
 - `biblatex` now interfaces with `polyglossia` much better and can deal
   with language variants.
   Note that `polyglossia` v1.45 (2019/10/27) is required for this
   to work properly, it is strongly recommended to update `polyglossia`
   to this or a later (current) version.
+
 # RELEASE NOTES FOR VERSION 3.13
 - **INCOMPATIBLE CHANGE** Any custom per-entry options in datasources must
   be defined with `\DeclareEntryOption` in order for biber to recognise

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/README	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/README	2020-08-20 21:11:51 UTC (rev 56143)
@@ -108,7 +108,7 @@
 
    or download the file
 
-   https://mirror.ctan.org/macros/latex/contrib/biblatex.zip
+   http://mirror.ctan.org/macros/latex/contrib/biblatex.zip
 
 2. Unpack the archive in a temporary working directory.
 

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/biblatex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/biblatex.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/biblatex.tex	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/biblatex.tex	2020-08-20 21:11:51 UTC (rev 56143)
@@ -55,8 +55,8 @@
 \newcommand*{\biber}{\sty{biber}\xspace}
 \newcommand*{\biblatex}{\sty{biblatex}\xspace}
 \newcommand*{\biblatexml}{\sty{biblatexml}\xspace}
-\newcommand*{\biblatexhome}{http://sourceforge.net/projects/biblatex/}
-\newcommand*{\biblatexctan}{http://ctan.org/pkg/biblatex/}
+\newcommand*{\biblatexhome}{https://sourceforge.net/projects/biblatex/}
+\newcommand*{\biblatexctan}{https://ctan.org/pkg/biblatex/}
 
 \titlepage{%
   title={The \biblatex Package},
@@ -64,7 +64,7 @@
   url={\biblatexhome},
   author={Philip Kime, Moritz Wemheuer, Philipp Lehman},
   email={},
-  revision={3.14},
+  revision={3.15},
   date={\today}}
 
 \hypersetup{%
@@ -173,7 +173,7 @@
 \section{Introduction}
 \label{int}
 
-This document is a systematic reference manual for the \biblatex package. Look at the sample documents which come with \biblatex to get a first impression.\fnurl{\biblatexctan doc/examples}
+This document is a systematic reference manual for the \biblatex package. Look at the sample documents which come with \biblatex to get a first impression.\fnurl{https://ctan.org/tex-archive/macros/latex/contrib/biblatex/doc/examples}
 For a quick start guide, browse \secref{int:abt, bib:typ, bib:fld, bib:use, use:opt, use:xbx, use:bib, use:cit, use:use}.
 
 \subsection[About]{About \biblatex}
@@ -183,12 +183,12 @@
 
 \subsection{License}
 
-Copyright \textcopyright\ 2006--2012 Philipp Lehman, 2012--2017 Philip Kime, Audrey Boruvka, Joseph Wright, 2018-- Philip Kime and Moritz Wemheuer. Permission is granted to copy, distribute and\slash or modify this software under  the terms of the \lppl, version~1.3.\fnurl{http://www.latex-project.org/lppl.txt}
+Copyright \textcopyright\ 2006--2012 Philipp Lehman, 2012--2017 Philip Kime, Audrey Boruvka, Joseph Wright, 2018-- Philip Kime and Moritz Wemheuer. Permission is granted to copy, distribute and\slash or modify this software under  the terms of the \lppl, version~1.3.\fnurl{https://www.latex-project.org/lppl.txt}
 
 \subsection{Feedback}
 \label{int:feb}
 
-Please use the \biblatex project page on GitHub to report bugs and submit feature requests.\fnurl{http://github.com/plk/biblatex} Before making a feature request, please ensure that you have thoroughly studied this manual. If you do not want to report a bug or request a feature but are simply in need of assistance, you might want to consider posting your question on the \texttt{comp.text.tex} newsgroup or \tex-\latex Stack Exchange.\fnurl{http://tex.stackexchange.com/questions/tagged/biblatex}
+Please use the \biblatex project page on GitHub to report bugs and submit feature requests.\fnurl{https://github.com/plk/biblatex} Before making a feature request, please ensure that you have thoroughly studied this manual. If you do not want to report a bug or request a feature but are simply in need of assistance, you might want to consider posting your question on the \texttt{comp.text.tex} newsgroup or \tex-\latex Stack Exchange.\fnurl{https://tex.stackexchange.com/questions/tagged/biblatex}
 
 \subsection{Acknowledgements}
 
@@ -216,14 +216,17 @@
 Baldur Kristinsson (Icelandic);
 Enrico Gregorio, Andrea Marchitelli (Italian);
 Rihards Skuja (Latvian);
+Valdemaras Klumbys (Lithuanian);
 Håkon Malmedal, Hans Fredrik Nordhaug (Norwegian);
 Anastasia Kandulina, Yuriy Chernyshov (Polish);
 José Carlos Santos (Portuguese);
 Oleg Domanov (Russian);
+Andrej Radović (Serbian);
 Martin Vrábel, Dávid Lupták (Slovak);
 Tea Tušar, Bogdan Filipič (Slovene);
 Ignacio Fernández Galván (Spanish);
 Per Starbäck, Carl-Gustav Werner, Filip Åsblom (Swedish);
+Abdulkerim Gok (Turkish);
 Sergiy M. Ponomarenko (Ukrainian).
 
 \subsection{Prerequisites}
@@ -242,20 +245,22 @@
 The \biblatex package requires \etex. \tex distributions have been providing \etex binaries for quite some time, the popular distributions use them by default these days. The \biblatex package checks if it is running under \etex. Simply try compiling your documents as you usually do, the chances are that it just works. If you get an error message, try compiling the document with \bin{elatex} instead of \bin{latex} or \bin{pdfelatex} instead of \bin{pdflatex}, respectively.
 
 \item[\biber]
-\biber is the backend of \biblatex used to transfer data from source files to the \latex code. \biber comes with TeX Live and is also available from SourceForge.\fnurl{http://biblatex-biber.sourceforge.net/}. \biber uses the \texttt{btparse} C library for \bibtex format file parsing which aimed to be compatible with \bibtex's parsing rules but also aimed at correcting some of the common problems. For details, see the manual page for the Perl \texttt{Text::BibTeX} module\fnurl{http://search.cpan.org/~ambs/Text-BibTeX}.
+\biber is the backend of \biblatex used to transfer data from source files to the \latex code. \biber comes with TeX Live and is also available from SourceForge.\fnurl{https://biblatex-biber.sourceforge.net/}. \biber uses the \texttt{btparse} C library for \bibtex format file parsing which aimed to be compatible with \bibtex's parsing rules but also aimed at correcting some of the common problems. For details, see the manual page for the Perl \texttt{Text::BibTeX} module\fnurl{https://metacpan.org/release/Text-BibTeX}.
 
 \item[etoolbox]
-This \latex package, which is loaded automatically, provides generic programming facilities required by \biblatex. It is available from \acr{CTAN}.\fnurl{http://ctan.org/pkg/etoolbox}
+This \latex package, which is loaded automatically, provides generic programming facilities required by \biblatex. It is available from \acr{CTAN}.\fnurl{https://ctan.org/pkg/etoolbox}
 
 \item[kvoptions]
-This \latex package, which is also loaded automatically, is used for internal option handling. It is available with the \sty{oberdiek} package bundle from \acr{CTAN}.\fnurl{http://ctan.org/pkg/kvoptions}
+This \latex package, which is also loaded automatically, is used for internal option handling. It is available from \acr{CTAN}.\fnurl{https://ctan.org/pkg/kvoptions}
 
 \item[logreq]
-This \latex package, which is also loaded automatically, provides a frontend for writing machine-readable messages to an auxiliary log file. It is available from \acr{CTAN}.\fnurl{http://ctan.org/pkg/logreq/}
+This \latex package, which is also loaded automatically, provides a frontend for writing machine-readable messages to an auxiliary log file. It is available from \acr{CTAN}.\fnurl{https://ctan.org/pkg/logreq/}
 
 \item[pdftexcmds]
-This \latex package, which is loaded automatically, implements \pdftex primitives for \luatex, it also offers a unified interface for these primitives across engines. It is available from \acr{CTAN}.\fnurl{http://ctan.org/pkg/pdftexcmds/}
+This \latex package, which is loaded automatically, implements \pdftex primitives for \luatex, it also offers a unified interface for these primitives across engines. It is available from \acr{CTAN}.\fnurl{https://ctan.org/pkg/pdftexcmds/}
 
+\biblatex uses \sty{pdftexcmds} to access the MD5 hash primitives, so version~0.27 (2018/01/30) or above is strongly recommended.
+
 \end{marglist}
 
 Apart from the above resources, \biblatex also requires the standard \latex packages \sty{keyval} and \sty{ifthen} as well as the \sty{url} package. These package are included in all common \tex distributions and will be loaded automatically.
@@ -263,7 +268,7 @@
 \subsubsection{Recommended Packages}
 \label{int:pre:rec}
 
-The packages listed in this section are not required for \biblatex to function, but they provide recommended additional functions or enhance existing features. The package loading order usually does not matter.
+The packages listed in this section are not strictly required for \biblatex to function, but they provide recommended additional functions or enhance existing features.
 
 \begin{marglist}
 
@@ -270,13 +275,24 @@
 \item[babel/polyglossia]
 The \sty{babel} and \sty{polyglossia} packages provides the core architecture for multilingual typesetting. If you are writing in a language other than American English, using one of these packages is strongly recommended. You should load \sty{babel} or \sty{polyglossia} before \biblatex and then \biblatex will detect \sty{babel} or \sty{polyglossia} automatically. (While \sty{babel} may be loaded after \biblatex if so desired, \sty{polyglossia} must always be loaded before \biblatex.)
 
-\biblatex has only limited support for \sty{polyglossia} versions prior to~v1.45. If \sty{polyglossia} is used, it should be updated to version~1.45 (2019/10/27) or above.
+\biblatex has only limited support for \sty{polyglossia} versions prior to~v1.45 (2019/10/27). Additional useful features for \biblatex were added in version~1.49. If \sty{polyglossia} is used, it should be updated to version~1.49 (2020/04/08) or above.
 
+The minimum supported \sty{babel} version is~v3.9r (2016/04/23).
+
 \item[csquotes]
-If this package is available, \biblatex will use its language sensitive quotation facilities to enclose certain titles in quotation marks. If not, \biblatex uses quotes suitable for American English as a fallback. When writing in a language other than American English, loading \sty{csquotes} is strongly recommended.\fnurl{http://ctan.org/pkg/csquotes/}
+If this package is available, \biblatex will use its language sensitive quotation facilities to enclose certain titles in quotation marks. If not, \biblatex uses quotes suitable for American English as a fallback. When writing in a language other than American English, loading \sty{csquotes} is strongly recommended.\fnurl{https://ctan.org/pkg/csquotes/}
 
+\end{marglist}
+
+\subsubsection{Additional Useful Packages}
+\label{int:pre:add}
+
+The packages listed in this section are not required for \biblatex to function, but provide additional specialist functions or enhance existing features. These packages generally only need to be loaded if their functionality is explicitly desired. The package loading order usually does not matter.
+
+\begin{marglist}
+
 \item[xpatch]
-The \sty{xpatch} package extends the patching commands of \sty{etoolbox} to \biblatex bibliography macros, drivers and formatting directives.\fnurl{http://ctan.org/pkg/xpatch/}
+The \sty{xpatch} package extends the patching commands of \sty{etoolbox} to \biblatex bibliography macros, drivers and formatting directives.\fnurl{https://ctan.org/pkg/xpatch/} Its commands are useful to apply surgical-precision changes to bibliography macros, drivers or formatting directives without having to restate the whole definition to change it. The \biblatex core does not need or use these patching commands and styles that make use of them should load the package themselves.
 
 \end{marglist}
 
@@ -299,6 +315,8 @@
 \item[\acr{KOMA}-Script]
 When using any of the \sty{scrartcl}, \sty{scrbook}, or \sty{scrreprt} classes, the default bibliography headings are adapted such that they blend with the default layout of these classes. See \secref{use:cav:scr} for further usage hints.
 
+If available \biblatex makes use of some of the more recent of \acr{KOMA}-Script's \emph{do-hooks}. The relevant hooks are present from version~3.27 (2019/10/12) onwards, which is therefore the minimum version recommendation.
+
 \end{marglist}
 
 \subsubsection{Incompatible Packages}
@@ -354,8 +372,12 @@
 The \sty{titlesec} package redefines user-level document division commands such as \cmd{chapter} or \cmd{section}. This approach is not compatible with internal command changes applied by the \biblatex \opt{refsection}, \opt{refsegment} and \opt{citereset} option settings described in \secref{use:opt:pre:gen}.
 
 \item[ucs]
-The \sty{ucs} package provides support for \utf encoded input. Either use \sty{inputenc}'s standard \file{utf8} module or a Unicode enabled engine such as \xetex or \luatex instead.
+The \sty{ucs} package provides support for \utf encoded input, but it does so in a way incompatible with \biblatex.
 
+If you get an error about \sty{ucs} being loaded, but you don't load it explicitly in your preamble, check that you don't load \sty{inputenc}'s \file{utf8x} module: \verb|\usepackage[utf8x]{inputenc}| will also load \sty{ucs}.
+
+Instead of \sty{ucs}/\file{utf8x} use a Unicode engine such as \xetex or \luatex if you want full Unicode support. If you use \pdftex or \tex, the Unicode characters predefined by the \latex format are usually enough for many use cases (this is true for \latex from April 2018 or later, in older versions load \sty{inputenc} with the \file{utf8} module) and missing characters can be defined using \cmd{DeclareUnicodeCharacter} or \sty{newunicodechar}'s \cmd{newunicodechar}.
+
 \item[etextools]
 The \sty{etextools} package provides enhancements to list macros defined by \sty{etoolbox} and a few other tools for command definitions.
 The package redefines list handling macros in a way incompatible with \biblatex.
@@ -376,6 +398,8 @@
 compatibility matrix for the recent versions.
 
 \begin{table}
+\caption{\biber/\biblatex\ compatibility matrix}
+\label{tab:int:pre:bibercompat}
 \tablesetup\centering
 \begin{tabular}{cc}
 \toprule
@@ -382,6 +406,7 @@
 \sffamily\bfseries\spotcolor Biber version
   & \sffamily\bfseries\spotcolor \biblatex\ version\\
 \midrule
+2.14 & 3.14\\
 2.13 & 3.13\\
 2.12 & 3.12\\
 2.11 & 3.11\\
@@ -418,8 +443,6 @@
 0.9 & 1.4x\\
 \bottomrule
 \end{tabular}
-\caption{\biber/\biblatex\ compatibility matrix}
-\label{tab:int:pre:bibercompat}
 \end{table}
 
 \section{Database Guide}
@@ -448,7 +471,7 @@
 An article in a journal, magazine, newspaper, or other periodical which forms a self"=contained unit with its own title. The title of the periodical is given in the \bibfield{journaltitle} field. If the issue has its own title in addition to the main title of the periodical, it goes in the \bibfield{issuetitle} field. Note that \bibfield{editor} and related fields refer to the journal while \bibfield{translator} and related fields refer to the article.
 
 \reqitem{author, title, journaltitle, year/date}
-\optitem{translator, annotator, commentator, subtitle, titleaddon, editor, editora, editorb, editorc, journalsubtitle, issuetitle, issuesubtitle, language, origlanguage, series, volume, number, eid, issue, month, pages, version, note, issn, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{translator, annotator, commentator, subtitle, titleaddon, editor, editora, editorb, editorc, journalsubtitle, journaltitleaddon, issuetitle, issuesubtitle, issuetitleaddon, language, origlanguage, series, volume, number, eid, issue, month, pages, version, note, issn, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
 
 \typeitem{book}
 
@@ -455,7 +478,7 @@
 A single"=volume book with one or more authors where the authors share credit for the work as a whole. This entry type also covers the function of the \bibtype{inbook} type of traditional \bibtex, see \secref{bib:use:inb} for details.
 
 \reqitem{author, title, year/date}
-\optitem{editor, editora, editorb, editorc, translator, annotator, commentator, introduction, foreword, afterword, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, language, origlanguage, volume, part, edition, volumes, series, number, note, publisher, location, isbn, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{editor, editora, editorb, editorc, translator, annotator, commentator, introduction, foreword, afterword, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, language, origlanguage, volume, part, edition, volumes, series, number, note, publisher, location, isbn, eid, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
 
 \typeitem{mvbook}
 
@@ -469,7 +492,7 @@
 A part of a book which forms a self"=contained unit with its own title. Note that the profile of this entry type is different from standard \bibtex, see \secref{bib:use:inb}.
 
 \reqitem{author, title, booktitle, year/date}
-\optitem{bookauthor, editor, editora, editorb, editorc, translator, annotator, commentator, introduction, foreword, afterword, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, booksubtitle, booktitleaddon, language, origlanguage, volume, part, edition, volumes, series, number, note, publisher, location, isbn, chapter, pages, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{bookauthor, editor, editora, editorb, editorc, translator, annotator, commentator, introduction, foreword, afterword, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, booksubtitle, booktitleaddon, language, origlanguage, volume, part, edition, volumes, series, number, note, publisher, location, isbn, eid, chapter, pages, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
 
 \typeitem{bookinbook}
 
@@ -484,7 +507,7 @@
 A book"=like work without a formal publisher or sponsoring institution. Use the field \bibfield{howpublished} to supply publishing information in free format, if applicable. The field \bibfield{type} may be useful as well.
 
 \reqitem{author/editor, title, year/date}
-\optitem{subtitle, titleaddon, language, howpublished, type, note, location, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{subtitle, titleaddon, language, howpublished, type, note, location, eid, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
 
 \typeitem{collection}
 
@@ -491,7 +514,7 @@
 A single"=volume collection with multiple, self"=contained contributions by distinct authors which have their own title. The work as a whole has no overall author but it will usually have an editor.
 
 \reqitem{editor, title, year/date}
-\optitem{editora, editorb, editorc, translator, annotator, commentator, introduction, foreword, afterword, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, language, origlanguage, volume, part, edition, volumes, series, number, note, publisher, location, isbn, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{editora, editorb, editorc, translator, annotator, commentator, introduction, foreword, afterword, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, language, origlanguage, volume, part, edition, volumes, series, number, note, publisher, location, isbn, eid, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
 
 \typeitem{mvcollection}
 
@@ -505,7 +528,7 @@
 A contribution to a collection which forms a self"=contained unit with a distinct author and title. The \bibfield{author} refers to the \bibfield{title}, the \bibfield{editor} to the \bibfield{booktitle}, \ie the title of the collection.
 
 \reqitem{author, title, booktitle, year/date}
-\optitem{editor, editora, editorb, editorc, translator, annotator, commentator, introduction, foreword, afterword, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, booksubtitle, booktitleaddon, language, origlanguage, volume, part, edition, volumes, series, number, note, publisher, location, isbn, chapter, pages, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{editor, editora, editorb, editorc, translator, annotator, commentator, introduction, foreword, afterword, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, booksubtitle, booktitleaddon, language, origlanguage, volume, part, edition, volumes, series, number, note, publisher, location, isbn, eid, chapter, pages, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
 
 \typeitem{suppcollection}
 
@@ -523,7 +546,7 @@
 Technical or other documentation, not necessarily in printed form. The \bibfield{author} or \bibfield{editor} is omissible in terms of \secref{bib:use:key}.
 
 \reqitem{author/editor, title, year/date}
-\optitem{subtitle, titleaddon, language, edition, type, series, number, version, note, organization, publisher, location, isbn, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{subtitle, titleaddon, language, edition, type, series, number, version, note, organization, publisher, location, isbn, eid, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
 
 \typeitem{misc}
 
@@ -551,7 +574,7 @@
 An complete issue of a periodical, such as a special issue of a journal. The title of the periodical is given in the \bibfield{title} field. If the issue has its own title in addition to the main title of the periodical, it goes in the \bibfield{issuetitle} field. The \bibfield{editor} is omissible in terms of \secref{bib:use:key}.
 
 \reqitem{editor, title, year/date}
-\optitem{editora, editorb, editorc, subtitle, issuetitle, issuesubtitle, language, series, volume, number, issue, month, note, issn, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{editora, editorb, editorc, subtitle, titleaddon, issuetitle, issuesubtitle,  issuetitleaddon, language, series, volume, number, issue, month, note, issn, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
 
 \typeitem{suppperiodical}
 
@@ -562,7 +585,7 @@
 A single"=volume conference proceedings. This type is very similar to \bibtype{collection}. It supports an optional \bibfield{organization} field which holds the sponsoring institution. The \bibfield{editor} is omissible in terms of \secref{bib:use:key}.
 
 \reqitem{title, year/date}
-\optitem{editor, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, eventtitle, eventtitleaddon, eventdate, venue, language, volume, part, volumes, series, number, note, organization, publisher, location, month, isbn, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{editor, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, eventtitle, eventtitleaddon, eventdate, venue, language, volume, part, volumes, series, number, note, organization, publisher, location, month, isbn, eid, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
 
 \typeitem{mvproceedings}
 
@@ -576,7 +599,7 @@
 An article in a conference proceedings. This type is similar to \bibtype{incollection}. It supports an optional \bibfield{organization} field.
 
 \reqitem{author, title, booktitle, year/date}
-\optitem{editor, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, booksubtitle, booktitleaddon, eventtitle, eventtitleaddon, eventdate, venue, language, volume, part, volumes, series, number, note, organization, publisher, location, month, isbn, chapter, pages, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{editor, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, booksubtitle, booktitleaddon, eventtitle, eventtitleaddon, eventdate, venue, language, volume, part, volumes, series, number, note, organization, publisher, location, month, isbn, eid, chapter, pages, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
 
 \typeitem{reference}
 
@@ -595,7 +618,7 @@
 A technical report, research report, or white paper published by a university or some other institution. Use the \bibfield{type} field to specify the type of report. The sponsoring institution goes in the \bibfield{institution} field.
 
 \reqitem{author, title, type, institution, year/date}
-\optitem{subtitle, titleaddon, language, number, version, note, location, month, isrn, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{subtitle, titleaddon, language, number, version, note, location, month, isrn, eid, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
 
 \typeitem{set}
 
@@ -610,7 +633,7 @@
 A thesis written for an educational institution to satisfy the requirements for a degree. Use the \bibfield{type} field to specify the type of thesis.
 
 \reqitem{author, title, type, institution, year/date}
-\optitem{subtitle, titleaddon, language, note, location, month, isbn, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{subtitle, titleaddon, language, note, location, month, isbn, eid, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
 
 \typeitem{unpublished}
 
@@ -617,7 +640,7 @@
 A work with an author and a title which has not been formally published, such as a manuscript or the script of a talk. Use the fields \bibfield{howpublished} and \bibfield{note} to supply additional information in free format, if applicable.
 
 \reqitem{author, title, year/date}
-\optitem{subtitle, titleaddon, type, eventtitle, eventtitleaddon, eventdate, venue, language, howpublished, note, location, isbn, month, addendum, pubstate, url, urldate}
+\optitem{subtitle, titleaddon, type, eventtitle, eventtitleaddon, eventdate, venue, language, howpublished, note, location, isbn, month, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
 
 \typeitem{xdata}
 
@@ -655,7 +678,7 @@
 \subsubsection{Non-standard Types}
 \label{bib:typ:ctm}
 
-The types in this section are similar to the custom types \bibtype{custom[a--f]}, \ie the standard bibliography styles provide no bibliography drivers for these types. When using the standard styles, they will therefore generally be treated as \bibtype{misc} entries---exceptions to this rule are noted in the descriptions below. The types are known to the default data model and will be happily accepted by \biber.
+The types in this section are similar to the custom types \bibtype{custom[a--f]}, \ie the standard bibliography styles provide no bibliography drivers for these types. In the standard styles they will use the bibliography driver for \bibtype{misc} entries---exceptions to this rule are noted in the descriptions below. The types are known to the default data model and will be happily accepted by \biber.
 
 \begin{typelist}
 
@@ -899,7 +922,7 @@
 
 \fielditem{eid}{literal}
 
-The electronic identifier of an \bibtype{article}. This field may replace the \bibfield{pages} field for journals deviating from the classic pagination scheme of printed journals by only enumerating articles or papers and not pages.
+The electronic identifier of an \bibtype{article} or chapter-like section of a larger work. This field may replace the \bibfield{pages} field for journals deviating from the classic pagination scheme of printed journals by only enumerating articles or papers and not pages.
 
 \fielditem{entrysubtype}{literal}
 
@@ -989,6 +1012,10 @@
 
 The title of a specific issue of a journal or other periodical.
 
+\fielditem{issuetitleaddon}{literal}
+
+An annex to the \bibfield{issuetitle}, to be printed in a different font.
+
 \fielditem{iswc}{literal}
 
 The International Standard Work Code of a musical work. Not used by the standard bibliography styles.
@@ -1001,6 +1028,11 @@
 
 The name of a journal, a newspaper, or some other periodical.
 
+\fielditem{journaltitleaddon}{literal}
+
+An annex to the \bibfield{journaltitle}, to be printed in a different font.
+
+
 \fielditem{label}{literal}
 
 A designation to be used by the citation style as a substitute for the regular label if any data required to generate the regular label is missing. For example, when an author"=year citation style is generating a citation for an entry which is missing the author or the year, it may fall back to \bibfield{label}. See \secref{bib:use:key} for details. Note that, in contrast to \bibfield{shorthand}, \bibfield{label} is only used as a fallback. See also \bibfield{shorthand}.
@@ -1210,6 +1242,8 @@
 The gender of the author or the gender of the editor, if there is no author. The following identifiers are supported: \opt{sf} (feminine singular, a single female name), \opt{sm} (masculine singular, a single male name), \opt{sn} (neuter singular, a single neuter name), \opt{pf} (feminine plural, a list of female names), \opt{pm} (masculine plural, a list of male names), \opt{pn} (neuter plural, a list of neuter names), \opt{pp} (plural, a mixed gender list of names). This information is only required by special bibliography and citation styles and only in certain languages. For example, a citation style may replace recurrent author names with a term such as <idem>. If the Latin word is used, as is custom in English and French, there is no need to specify the gender. In German publications, however, such key terms are usually given in German and in this case they are gender"=sensitive.
 
 \begin{table}
+\caption{Supported Languages}
+\label{bib:fld:tab1}
 \tablesetup
 \begin{tabularx}{\textwidth}{@{}p{90pt}@{}p{160pt}@{}X@{}}
 \toprule
@@ -1242,6 +1276,7 @@
 Icelandic    & Iceland        & \opt{icelandic} \\
 Italian      & Italy          & \opt{italian} \\
 Latvian      & Latvia         & \opt{latvian} \\
+Lithuanian   & Lithuania      & \opt{lithuanian} \\
 Norwegian (Bokmål)  & Norway  & \opt{norsk} \\
 Norwegian (Nynorsk) & Norway  & \opt{nynorsk} \\
 Polish       & Poland         & \opt{polish} \\
@@ -1248,15 +1283,16 @@
 Portuguese   & Brazil         & \opt{brazil} \\
              & Portugal       & \opt{portuguese}, \opt{portuges} \\
 Russian      & Russia         & \opt{russian} \\
+Serbian (Latin)    & Serbia   & \opt{serbian} \\
+Serbian (Cyrillic) & Serbia   & \opt{serbianc} \\
 Slovak       & Slovakia       & \opt{slovak} \\
 Slovene      & Slovenia       & \opt{slovene}, \opt{slovenian} \\
 Spanish      & Spain          & \opt{spanish} \\
 Swedish      & Sweden         & \opt{swedish} \\
+Turkish      & Turkey         & \opt{turkish} \\
 Ukrainian    & Ukraine        & \opt{ukrainian} \\
 \bottomrule
 \end{tabularx}
-\caption{Supported Languages}
-\label{bib:fld:tab1}
 \end{table}
 
 \fielditem{langid}{identifier}
@@ -1675,6 +1711,8 @@
 \label{bib:use:dat}
 
 \begin{table}
+\caption{Date Specifications}
+\label{bib:use:tab1}
 \tablesetup
 \begin{tabularx}{\textwidth}{@{}>{\ttfamily}llX@{}}
 \toprule
@@ -1698,8 +1736,6 @@
 2004-04-05T14:34:00 & 05/04/2004 2:34 PM & 5th April 2004 14:34:00\\
 \bottomrule
 \end{tabularx}
-\caption{Date Specifications}
-\label{bib:use:tab1}
 \end{table}
 
 Date fields such as the default data model dates \bibfield{date}, \bibfield{origdate}, \bibfield{eventdate}, and \bibfield{urldate} adhere to \acr{ISO8601-2} Extended Format specification level 1. In addition to the \acr{ISO8601-2} empty date range markers, you may also specify an open ended/start date range by giving the range separator and omitting the end/start date (\eg \texttt{YYYY/}, \texttt{/YYYY}). See \tabref{bib:use:tab1} for some examples of valid date specifications and the formatted dates automatically generated by \biblatex. The formatted date is language specific and will be adapted automatically. If there is no \bibfield{date} field in an entry, \biblatex will also consider the fields \bibfield{year} and \bibfield{month} for backwards compatibility with traditional \bibtex but this is not encouraged as explicit \bibfield{year} and \bibfield{month} are not parsed for date meta-information markers or times and are used as-is. Style authors should note that date fields like \bibfield{date} or \bibfield{origdate} are only available in the \file{bib} file. All dates are parsed and dissected into their components as the \file{bib} file is processed. The date and time components are made available to styles by way of the special fields discussed in \secref{aut:bbx:fld:dat}. See this section and \tabref{aut:bbx:fld:tab1} on page~\pageref{aut:bbx:fld:tab1} for further information.
@@ -1711,6 +1747,8 @@
 \acr{ISO8601-2} supports dates before common era (BCE/BC) by way of a negative date format and supports  <approximate> (circa) and uncertain dates. Such date formats set internal markers which can be tested for so that appropriate localised markers (such as \opt{circa} or \opt{beforecommonera}) can be inserted. Also supported are <unspecified> dates (\acr{ISO8601-2} 4.3) which are automatically expanded into appropriate data ranges accompanied by a field \bibfield{$<$datetype$>$dateunspecified} which details the granularity of the unspecified data. Styles may use this information to format such dates appropriately but the standard styles do not do this. See \tabref{bib:use:tab3} on page~\pageref{bib:use:tab3} for the allowed \acr{ISO8601-2} <unspecified> formats, their range expansions and \bibfield{$<$datetype$>$dateunspecified} values (see \secref{aut:bbx:fld:gen}).
 
 \begin{table}
+\caption{ISO8601-2 4.3 Unspecified Date Parsing}
+\label{bib:use:tab3}
 \tablesetup
 \begin{tabularx}{\textwidth}{@{}>{\ttfamily}llX@{}}
 \toprule
@@ -1725,15 +1763,15 @@
 1999-XX-XX & 1999-01-01/1999-12-31 & dayinyear \\
 \bottomrule
 \end{tabularx}
-\caption{ISO8601-2 4.3 Unspecified Date Parsing}
-\label{bib:use:tab3}
 \end{table}
 
-\tabref{bib:use:tab2} shows formats which use appropriate tests and formatting. See the date meta-information tests in \secref{aut:aux:tst} and the localisation strings in \secref{aut:lng:key:dt}. See also the \file{96-dates.tex} example file for complete examples of the tests and localisation strings use.
+\Tabref{bib:use:tab2} shows formats which use appropriate tests and formatting. See the date meta-information tests in \secref{aut:aux:tst} and the localisation strings in \secref{aut:lng:key:dt}. See also the \file{96-dates.tex} example file for complete examples of the tests and localisation strings use.
 
 The output of <circa>, uncertainty and era information in standard styles (or custom styles not customising the internal \cmd{mkdaterange*} macros) is controlled by the package options \opt{datecirca}, \opt{dateuncertain}, \opt{dateera} and \opt{dateeraauto} (see \secref{use:opt:pre:gen}). See \tabref{bib:use:tab2} on page~\pageref{bib:use:tab2} for examples which assumes these options are all used.
 
 \begin{table}
+\caption{Enhanced Date Specifications}
+\label{bib:use:tab2}
 \tablesetup
 \begin{tabularx}{\textwidth}{@{}>{\ttfamily}llX@{}}
 \toprule
@@ -1758,8 +1796,6 @@
 2004-24 & 2004 & also, \bibfield{season} is set to the localisation string <winter>\\
 \bottomrule
 \end{tabularx}
-\caption{Enhanced Date Specifications}
-\label{bib:use:tab2}
 \end{table}
 
 \subsubsection{Year, Month and Date}
@@ -1846,7 +1882,7 @@
 \subsubsection{Sorting and Encoding Issues}
 \label{bib:cav:enc}
 
-\biber handles Ascii, 8-bit encodings such as Latin\,1, and \utf. It features true Unicode support and is capable of reencoding the \file{bib} data on the fly in a robust way. For sorting, \biber uses a Perl implementation of the Unicode Collation Algorithm (\acr{UCA}), as outlined in Unicode Technical Standard \#10.\fnurl{http://unicode.org/reports/tr10/} Collation tailoring based on the Unicode Common Locale Data Repository (\acr{CLDR}) is also supported.\fnurl{http://cldr.unicode.org/}
+\biber handles Ascii, 8-bit encodings such as Latin\,1, and \utf. It features true Unicode support and is capable of reencoding the \file{bib} data on the fly in a robust way. For sorting, \biber uses a Perl implementation of the Unicode Collation Algorithm (\acr{UCA}), as outlined in Unicode Technical Standard \#10.\fnurl{https://unicode.org/reports/tr10/} Collation tailoring based on the Unicode Common Locale Data Repository (\acr{CLDR}) is also supported.\fnurl{http://cldr.unicode.org/}
 
 Supporting Unicode implies much more than handling \utf input. Unicode is a complex standard covering more than its most well-known parts, the Unicode character encoding and transport encodings such as \utf. It also standardizes aspects such as string collation, which is required for language-sensitive sorting. For example, by using the Unicode Collation Algorithm, \biber can handle the character <ß> without any manual intervention. All you need to do to get localised sorting is specify the locale:
 
@@ -2037,6 +2073,10 @@
 
 Loads a citation module which provides \sty{mcite}\slash\sty{mciteplus}-like citation commands. See \secref{use:cit:mct} for details.
 
+\optitem[auto]{casechanger}{\opt{auto}, \opt{latex2e}, \opt{expl3}}
+
+This option selects the implementation of \biblatex's case changing functions, most prominently \cmd{MakeSentenceCase*}. \opt{expl3} selects the new implementation based on the \latex3 module \sty{l3text}. \opt{latex2e} selects the original implementation, which has tricky brace protection behaviour and some shortcomings when dealing with non-ASCII characters. The default \opt{auto} selects the case changing code based on the available \sty{expl3} version (\opt{expl3} is selected if \sty{expl3} is at least version 2020-04-06).
+
 \end{optionlist}
 
 \subsubsection{Preamble Options}
@@ -2162,7 +2202,7 @@
 Enclose the entry in an \env{otherlanguage} environment. This will load hyphenation patterns for the specified language, enable all extra definitions which \sty{babel}/\sty{polyglossia} and \biblatex provide for the respective language, and translate key terms such as <editor> and <volume>. The extra definitions include localisations of the date format, of ordinals, and similar things.
 
 \item[other*]
-Enclose the entry in an \env{otherlanguage*} environment. Please note that \biblatex treats \env{otherlanguage*} like \env{otherlanguage} but other packages may make a distinction in this case.
+Enclose the entry in an \env{otherlanguage*} environment. Please note that \biblatex treats \env{otherlanguage*} like \env{otherlanguage} if \opt{langhook} is set to \opt{extras}.
 
 \item[langname]
 \sty{polyglossia} only. Enclose the entry in a \env{$<$languagename$>$} environment. The benefit of this option value for \sty{polyglossia} users is that it takes note of the \bibfield{langidopts} field so that you can add per-language options to an entry (like selecting a language variant). When using \sty{babel}, this option does the same as the \opt{other} option value.
@@ -2169,6 +2209,10 @@
 
 \end{valuelist}
 
+\optitem[captions]{langhook}{\opt{captions}, \opt{extras}}
+
+This option controls whether bibliography strings and extras are written to \cmd{captions$<$language$>$} or \cmd{extras$<$language$>$}. The exact effect of this option depend on the language package (\sty{babel}/\sty{polyglossia}). Broadly speaking, the language switching environments provided by those packages (except \env{hyphenrules}) either switch language captions and extras or only language extras. Hence, if this option is set to \opt{extras}, all language switches will affect \biblatex, whereas with \opt{captions} only language switches that also switch other parts of the document language affect \biblatex.
+
 \optitem[none]{block}{\opt{none}, \opt{space}, \opt{par}, \opt{nbpar}, \opt{ragged}}
 
 This option controls the extra spacing between blocks, \ie larger segments of a bibliography entry. The possible choices are:
@@ -2253,6 +2297,11 @@
 
 \end{valuelist}
 
+\boolitem[true]{backreffloats}
+
+Whether to enable back references to citations in floats.
+
+
 \optitem[false]{indexing}{\opt{true}, \opt{false}, \opt{cite}, \opt{bib}}
 
 This option controls indexing in citations and in the bibliography. More precisely, it affects the \cmd{ifciteindex} and \cmd{ifbibindex} commands from \secref{aut:aux:tst}. The option is settable on a global, a per-type, or on a per-entry basis. The possible choices are:
@@ -2341,7 +2390,7 @@
 2010-1-21/2010-1-30
 \end{valuelist}
 %
-Note that \opt{iso} format will enforce \kvopt{dateera}{astronomical}, \kvopt{datezeros}{true}, \kvopt{timezeros}{true}, \kvopt{seconds}{true}, \kvopt{$<$datetype$>$time}{24h} and \kvopt{julian}{false}. \opt{ymd} is an ETFT-like format but which can change the various options which the strict \opt{iso} option does not allow for.
+Note that \opt{iso} format will enforce \kvopt{dateera}{astronomical}, \kvopt{datezeros}{true}, \kvopt{timezeros}{true}, \kvopt{seconds}{true}, \kvopt{$<$datetype$>$time}{24h} and \kvopt{julian}{false}. \opt{ymd} is an EDTF-like format but which can change the various options which the strict \opt{iso} option does not allow for.
 
 As seen in the above examples, the actual date format is language specific. Note that the month name in all long formats is responsive to the \opt{abbreviate} package option. The leading zeros for months and days in all short formats may be controlled separately with the \opt{datezeros} package option. The leading zeros for hours, minutes and seconds in all short formats may be controlled separately with the \opt{timezeros} package option. If outputting times, the printing of seconds and timezones is controlled by the \opt{seconds} and \opt{timezones} options respectively.
 
@@ -2440,7 +2489,7 @@
 
 \boolitem[false]{dateusetime}
 
-Specifies whether to print any time component of a date field after the date component. The separator between the date and time components is \cmd{bibdatetimesep} from \secref{use:fmt:lng}. This option does nothing if a compact date format is being used (see \secref{use:opt:pre:gen}) as this would be very confusing.
+Specifies whether to print any time component of a date field after the date component. The separator between the date and time components is \cmd{bibdatetimesep} from \secref{use:fmt:lng}.
 
 \boolitem[false]{labeldateusetime}
 
@@ -2519,6 +2568,10 @@
 
 As \opt{mincrossrefs} but for \bibfield{xref} fields.
 
+\boolitem[true]{bibtexcaseprotection}
+
+This option only has an effect when the \sty{expl3} implementation of the case changing functions is selected. If the option is set to \opt{true}, \cmd{MakeSentenceCase*} supports brace protection of words from case change as in classical \bibtex. If the option is set to \opt{false}, pairs of braces no longer imply case protection, which can now be enforced by wrapping the relevant word in \cmd{NoCaseChange}---this makes for a less confusing, if more verbose, markup of case protection.
+
 \end{optionlist}
 
 \paragraph{Style-specific}
@@ -2562,6 +2615,20 @@
 
 \end{optionlist}
 
+\subparagraph{\texttt{numeric-comp}} The citation style \texttt{numeric-comp}  supports the \opt{subentrycomp} option in global, per-type and per-entry scope.
+
+\begin{optionlist}
+
+\boolitem[true]{subentrycomp}
+
+This option determines whether or not citations to set members are compressed similar to non-set citations. The option only has an effect if \opt{subentry} is set to \texttt{true}.
+
+Suppose \texttt{key1}, \texttt{key2} and \texttt{key3} are members of the set \texttt{set1}. With \opt{subentrycomp} set to \texttt{true} the three entries will be compressed to <[1a--c]> in citations. With \opt{subentry} set to \texttt{false} the citation will show in the more verbose form <[1a, 1b, 1c]>.
+
+The option is intended mainly for backwards compatibility, because earlier versions of \biblatex did not compress set member citations.
+
+\end{optionlist}
+
 \subparagraph{\texttt{authortitle}/\texttt{authoryear}} All bibliography styles of the \texttt{authoryear} and \texttt{authortitle} family as well as all bibliography styles of the \texttt{verbose} family---whose bibliography styles are based on \texttt{authortitle}---support the option \opt{dashed} in global scope.
 
 \begin{optionlist}
@@ -2592,7 +2659,7 @@
 More in-depth examples of this option can be found in the style examples.
 \end{optionlist}
 
-\subparagraph{<ibid> styles} Citation styles with <ibid.> function, namely \texttt{authortitle-ibid}, \texttt{author\allowbreakhere title-icomp}, \texttt{author\allowbreakhere year-ibid}, \texttt{authoryear-icomp}, \texttt{ver\allowbreakhere bose-ibid}, \texttt{verbose-inote}, \texttt{verbose-trad1}, \texttt{verbose-trad2} and \texttt{verbose-trad3} provide the global \opt{ibidpage} option.
+\subparagraph{<ibid> styles} Citation styles with <ibid.>\ function, namely \texttt{authortitle-ibid}, \texttt{author\allowbreakhere title-icomp}, \texttt{author\allowbreakhere year-ibid}, \texttt{authoryear-icomp}, \texttt{ver\allowbreakhere bose-ibid}, \texttt{verbose-inote}, \texttt{verbose-trad1}, \texttt{verbose-trad2} and \texttt{verbose-trad3} provide the global \opt{ibidpage} option.
 
 \begin{optionlist}
 
@@ -2656,7 +2723,7 @@
 \item[spread] Enable the tracker in spread mode. In this mode, tracking works on a per"=spread (double page) basis.
 \end{valuelist}
 
-Note that this tracker is disabled in all floats, see \secref{aut:cav:flt}.
+Note that this tracker is disabled in all floats unless explicitly requested with \opt{trackfloats}, see \secref{aut:cav:flt}.
 
 \optitem[false]{citecounter}{\opt{true}, \opt{false}, \opt{context}}
 
@@ -2680,7 +2747,7 @@
 \item[constrict] This mode combines the features of \opt{context} and \opt{strict}.
 \end{valuelist}
 
-Note that this tracker is disabled in all floats, see \secref{aut:cav:flt}.
+Note that this tracker is disabled in all floats unless explicitly requested with \opt{trackfloats}, see \secref{aut:cav:flt}.
 This option is also settable on a per-type or per-entry basis.
 
 \optitem[false]{ibidtracker}{\opt{true}, \opt{false}, \opt{context}, \opt{strict}, \opt{constrict}}
@@ -2695,7 +2762,7 @@
 \item[constrict] This mode combines the features of \opt{context} and \opt{strict}. It also keeps track of footnote numbers and detects potentially ambiguous references in footnotes in a stricter way than the \opt{strict} option. In addition to the conditions imposed by the \opt{strict} option, a reference in a footnote will only be considered as unambiguous if the current citation and the previous citation are given in the same footnote or in immediately consecutive footnotes.
 \end{valuelist}
 
-Note that this tracker is disabled in all floats, see \secref{aut:cav:flt}.
+Note that this tracker is disabled in all floats unless explicitly requested with \opt{trackfloats}, see \secref{aut:cav:flt}.
 This option is also settable on a per-type or per-entry basis.
 
 \optitem[false]{opcittracker}{\opt{true}, \opt{false}, \opt{context}, \opt{strict}, \opt{constrict}}
@@ -2710,7 +2777,7 @@
 \item[constrict] This mode combines the features of \opt{context} and \opt{strict}. See the explanation of \kvopt{ibidtracker}{constrict} for details.
 \end{valuelist}
 
-Note that this tracker is disabled in all floats, see \secref{aut:cav:flt}.
+Note that this tracker is disabled in all floats unless explicitly requested with \opt{trackfloats}, see \secref{aut:cav:flt}.
 This option is also settable on a per-type or per-entry basis.
 
 \optitem[false]{loccittracker}{\opt{true}, \opt{false}, \opt{context}, \opt{strict}, \opt{constrict}}
@@ -2725,7 +2792,7 @@
 \item[constrict] This mode combines the features of \opt{context} and \opt{strict}. See the explanation of \kvopt{ibidtracker}{constrict} for details. In addition to that, this mode also checks if the \prm{postnote} argument is numerical (based on \cmd{ifnumerals} from \secref{aut:aux:tst}).
 \end{valuelist}
 
-Note that this tracker is disabled in all floats, see \secref{aut:cav:flt}.
+Note that this tracker is disabled in all floats unless explicitly requested with \opt{trackfloats}, see \secref{aut:cav:flt}.
 This option is also settable on a per-type or per-entry basis.
 
 \optitem[false]{idemtracker}{\opt{true}, \opt{false}, \opt{context}, \opt{strict}, \opt{constrict}}
@@ -2740,9 +2807,13 @@
 \item[constrict] This mode is similar to \opt{context} with one additional condition: a reference in a footnote will only be considered as unambiguous if the current citation and the previous citation are given in the same footnote or in immediately consecutive footnotes.
 \end{valuelist}
 
-Note that this tracker is disabled in all floats, see \secref{aut:cav:flt}.
+Note that this tracker is disabled in all floats unless explicitly requested with \opt{trackfloats}, see \secref{aut:cav:flt}.
 This option is also settable on a per-type or per-entry basis.
 
+\boolitem[false]{trackfloats}
+
+Whether to enable citation tracking in floats. Citation tracking in floats can be tricky, so this option should only be enabled if absolutely necessary and the output should be scrutinised carefully, see also \secref{aut:cav:flt}.
+
 \boolitem[true]{parentracker}
 
 This option controls the parenthesis tracker which keeps track of nested parentheses and brackets. This information is used by \cmd{parentext} and \cmd{brackettext} from \secref{use:cit:txt}, \cmd{mkbibparens} and \cmd{mkbibbrackets} from \secref{aut:fmt:ich} and \cmd{bibopenparen}, \cmd{bibcloseparen}, \cmd{bibopenbracket}, \cmd{bibclosebracket} (also \secref{aut:fmt:ich}).
@@ -2803,6 +2874,8 @@
 This option is also settable on a per-type and per-entry basis. Table \ref{use:opt:tab1} summarises the various \opt{extra*} disambiguation counters and what they track.
 
 \begin{table}
+\caption{Work Uniqueness options}
+\label{use:opt:wu}
 \footnotesize
 \ttfamily
 \tablesetup
@@ -2818,8 +2891,6 @@
 uniquework  & \cmd{ifuniquework}  & labelname+labeltitle\\
 \bottomrule
 \end{tabularx}
-\caption{Work Uniqueness options}
-\label{use:opt:wu}
 \end{table}
 
 \boolitem[false]{singletitle}
@@ -2892,9 +2963,9 @@
 
 \begin{lstlisting}{}
   Jones 1972
-  Jones et al 1972
+  Jones et al. 1972
   Smith 2000
-  Smith et al 2000
+  Smith et al. 2000
 \end{lstlisting}
 %
 Whereas with \kvopt{maxnames}{3}, \kvopt{minnames}{1}, \kvopt{nohashothers}{true}, the result would be:
@@ -2901,19 +2972,14 @@
 
 \begin{lstlisting}{}
   Jones 1972a
-  Jones et al 1972b
+  Jones et al. 1972b
   Smith 2000a
-  Smith et al 2000b
+  Smith et al. 2000b
 \end{lstlisting}
 
-If desired, this could be further simplified with:
+If desired, this could be further simplified by removing the <et al.\@>
+to obtain:
 
-\begin{ltxexample}
-  \DefineBibliographyStrings{english}{andothers={}}
-\end{ltxexample}
-%
-To obtain:
-
 \begin{lstlisting}{}
   Jones 1972a
   Jones 1972b
@@ -2940,6 +3006,8 @@
 \end{optionlist}
 
 \begin{table}
+\caption{Disambiguation counters}
+\label{use:opt:tab1}
 \footnotesize
 \ttfamily
 \tablesetup
@@ -2972,8 +3040,6 @@
 {\rmfamily ---} & {\rmfamily ---}  & extraname      &  labelname\\
 \bottomrule
 \end{tabularx}
-\caption{Disambiguation counters}
-\label{use:opt:tab1}
 \end{table}
 
 \subsubsection{Entry Options}
@@ -3121,7 +3187,7 @@
 This style implements a numeric citation scheme similar to the standard bibliographic facilities of \latex. It should be employed in conjunction with a numeric bibliography style which prints the corresponding labels in the bibliography. It is intended for in-text citations. The style will set the following package options at load time: \kvopt{autocite}{inline}, \kvopt{labelnumber}{true}. This style also provides an additional preamble option called \opt{subentry} which affects the handling of entry sets. If this option is disabled, citations referring to a member of a set will point to the entire set. If it is enabled, the style supports citations like «[5c]» which point to a subentry in a set (the third one in this example). See the style example for details.
 
 \item[numeric-comp]\seestyleexample{31-style-numeric-comp-biber}
-A compact variant of the \texttt{numeric} style which prints a list of more than two consecutive numbers as a range. This style is similar to the \sty{cite} package and the \opt{sort\&compress} option of the \sty{natbib} package in numerical mode. For example, instead of «[8, 3, 1, 7, 2]» this style would print «[1--3, 7, 8]». It is intended for in-text citations. The style will set the following package options at load time: \kvopt{autocite}{inline}, \kvopt{sortcites}{true}, \kvopt{labelnumber}{true}. It also provides the \opt{subentry} option.
+A compact variant of the \texttt{numeric} style which prints a list of more than two consecutive numbers as a range. This style is similar to the \sty{cite} package and the \opt{sort\&compress} option of the \sty{natbib} package in numerical mode. For example, instead of «[8, 3, 1, 7, 2]» this style would print «[1--3, 7, 8]». It is intended for in-text citations. The style will set the following package options at load time: \kvopt{autocite}{inline}, \kvopt{sortcites}{true}, \kvopt{labelnumber}{true}. It also provides the \opt{subentry} and \opt{subentrycomp} options.
 
 \item[numeric-verb]\seestyleexample{32-style-numeric-verb-biber}
 A verbose variant of the \texttt{numeric} style. The difference affects the handling of a list of citations and is only apparent when multiple entry keys are passed to a single citation command. For example, instead of «[2, 5, 6]» this style would print «[2]; [5]; [6]». It is intended for in-text citations. The style will set the following package options at load time: \kvopt{autocite}{inline}, \kvopt{labelnumber}{true}. It also provides the \opt{subentry} option.
@@ -3311,7 +3377,7 @@
 }
 \end{lstlisting}
 %
-Note the the order of the keys in lists of multiple related entries is important. The data from multiple related entries is printed in the order of the keys listed in this field. See \secref{aut:ctm:rel} for a more details on the mechanisms behind this feature. You can turn this feature off using the package option \opt{related} from \secref{use:opt:pre:gen}.
+Note the order of the keys in lists of multiple related entries is important. The data from multiple related entries is printed in the order of the keys listed in this field. See \secref{aut:ctm:rel} for a more details on the mechanisms behind this feature. You can turn this feature off using the package option \opt{related} from \secref{use:opt:pre:gen}.
 
 You can use the \bibfield{relatedoptions} to set options on the related entry data clone. This is useful if you need to override the \opt{dataonly} option which is set by default on all related entry clones. For example, if you will expose some of the names in the related clone in your document, you may want to have them disambiguated from names in other entries but normally this won't happen as related clones have the per"=entry \opt{dataonly} option set and this in turn sets \kvopt{uniquename}{false} and \kvopt{uniquelist}{false}. In such a case, you can set \bibfield{relatedoptions} to just \opt{skiplab, skipbib, skipbiblist}.
 
@@ -3546,9 +3612,9 @@
 \begin{ltxexample}
 \addbibresource{bibfile1.bib}
 \addbibresource{bibfile2.bib}
-\addbibresource{bibfiles/bibfile*.bib}
-\addbibresource{bibfile-num?.bib}
-\addbibresource{bibfile{1,2,3}.bib}
+\addbibresource[glob]{bibfiles/bibfile*.bib}
+\addbibresource[glob]{bibfile-num?.bib}
+\addbibresource[glob]{bibfile{1,2,3}.bib}
 \addbibresource[location=remote]{http://www.citeulike.org/bibtex/group/9517}
 \addbibresource[location=remote,label=lan]{ftp://192.168.1.57/~user/file.bib}
 \end{ltxexample}
@@ -3567,7 +3633,7 @@
 
 \valitem[local]{location}{location}
 
-The location of the resource. The \prm{location} may be either \texttt{local} for local resources or \texttt{remote} for \acr{URL}s. Remote resources require \biber. The protocols \acr{HTTP} and \acr{FTP} are supported. The remote \acr{URL} must be a fully qualified path to a \file{bib} file or a \acr{URL} which returns a \file{bib} file.
+The location of the resource. The \prm{location} may be either \texttt{local} for local resources or \texttt{remote} for \acr{URL}s. Remote resources require \biber. The protocols \acr{HTTP/HTTPS} and \acr{FTP} are supported. The remote \acr{URL} must be a fully qualified path to a \file{bib} file or a \acr{URL} which returns a \file{bib} file.
 
 \valitem[file]{type}{type}
 
@@ -3585,6 +3651,13 @@
 
 \end{valuelist}
 
+\boolitem{glob}
+
+Whether \biber should glob (expand according to pattern) the datasource name. There is
+a global setting for this in \biber (false by default and settable to true
+using the \opt{--glob-datasources} option). This option allows overriding
+the \biber default on a per-resource basis.
+
 \end{optionlist*}
 
 \cmditem{addglobalbib}[options]{resource}
@@ -3622,6 +3695,10 @@
 
 This option overrides the default title provided by the heading selected with the \opt{heading} option, if supported by the heading definition. See \secref{use:bib:hdg} for details.
 
+\optitem[\normalfont\emph{global setting} (\opt{none})]{block}{\opt{none}, \opt{space}, \opt{par}, \opt{nbpar}, \opt{ragged}}
+
+This option overrides the global \opt{block} option (see \secref{use:opt:pre:gen}, the meaning of the settings is explained there as well).
+
 \valitem{prenote}{name}
 
 The prenote is an arbitrary piece of text to be printed after the heading but before the list of references. This option selects the prenote \prm{name}, as defined with \cmd{defbibnote}. By default, no prenote is printed. The note is printed in the standard text font. It is not affected by \cmd{bibsetup} and \cmd{bibfont} but it may contain its own font declarations. See \secref{use:bib:nts} for details.
@@ -3710,7 +3787,7 @@
 
 This command prints a bibliography heading defined with \cmd{defbibheading}. It takes one optional argument, which is a list of options given in \keyval notation. The options are a small subset of those supported by \cmd{printbibliography}. Valid options are \opt{heading} and \opt{title}. By default, this command uses the heading \texttt{bibliography}. See \secref{use:bib:hdg} for details. Also see \secref{use:use:mlt,use:use:div} for usage examples.
 
-\cmditem{DeclarePrintbibliographyDefaults}[key=value, \dots]
+\cmditem{DeclarePrintbibliographyDefaults}{key=value, \dots}
 
 This command can be used to globally set defaults for some options to \cmd{printbibliography}, the \cmd{bibby...} bibliography commands and \cmd{printbibheading}.
 The supported keys are
@@ -3816,15 +3893,17 @@
 
 Bibliography lists are often used to print lists of various kinds of shorthands and this can result in duplicate entries if more than one bibliography entry has the same shorthand. For example, several journal articles in the same journal would result in duplicate entries in a list of journal shorthands. You can use the fact that such lists automatically pick up a \cmd{bibcheck} with the same name as the list to define a check to remove duplicates. If you are defining a list to print all of the journal shorthands using the \bibfield{shortjournal} field, you could define a \cmd{bibcheck} like this:
 
-\begin{ltxexample}
+\begin{ltxexample}[basicstyle=\displayverbfont\footnotesize]
 \defbibcheck{shortjournal}{%
    \iffieldundef{shortjournal}
      {\skipentry}
      {\iffieldundef{journaltitle}
        {\skipentry}
-       {\ifcsdef{\strfield{shortjournal}=\strfield{journaltitle}}
+       {\ifcsdef{sjcheck@\therefsection
+          -\strfield{shortjournal}=\strfield{journaltitle}}
          {\skipentry}
-         {\savefieldcs{journaltitle}{\strfield{shortjournal}=\strfield{journaltitle}}}}}}
+         {\savefieldcs{journaltitle}{sjcheck@\therefsection
+            -\strfield{shortjournal}=\strfield{journaltitle}}}}}}
 \end{ltxexample}
 
 \subsubsection{Bibliography Sections}
@@ -4250,7 +4329,7 @@
 \cmditem{assignrefcontextentries*}[key=value, \dots]{*}
 
 \end{ltxsyntax}
-These commands automate putting citations into refcontexts when the default behaviour is not sufficient. The \prm{key=value} options are as for \cmd{DeclareRefcontext}. The default behaviour is that the data for a citation is drawn from the refcontext of the most recently processed bibliography in which it was printed\footnote{This does not always mean what one might think. In a document containing multiple bibliographies, the last bibliography will be the context for any citations \emph{before} the first bibliography because all bibliographies are processed when the \file{.bbl}is read.}. For citations that are used in some way but not printed in a bibliography or bibliography list, they default to drawing their data from the global refcontext established at the beginning of the document. To override this behaviour, instead of manually wrapping citation commands in \env{refcontext} environments, which might be error-prone and tedious, you can register a comma"=separated list of \prm{keywords}, \prm{categories} or \prm{entrykeys} which, respectively, make the entries with any of the specified keywords, entries in any of the specified categories (see \secref{use:use:div}) or entries with any of the specified citation keys draw their data from a particular refcontext specified by the \prm{refcontext key/values} which are parsed as the per the corresponding \env{refcontext} options. Such refcontext auto-assignments are specific to the current refsection. You may specify the same citation key in any of these commands but be aware that assignment is done in the order \prm{keywords}, \prm{categories}, \prm{entrykeys} with the later specifications overriding the earlier. \cmd{assignrefcontextentries} accepts a single asterisk instead of a list of entrykeys which allows the assignment of all keys in a refsection to a refcontext with having to explicitly list them. An example:
+These commands automate putting citations into refcontexts when the default behaviour is not sufficient. The \prm{key=value} options are as for \cmd{DeclareRefcontext}. The default behaviour is that the data for a citation is drawn from the refcontext of the most recently processed bibliography in which it was printed\footnote{This does not always mean what one might think. In a document containing multiple bibliographies, the last bibliography will be the context for any citations \emph{before} the first bibliography because all bibliographies are processed when the \file{.bbl} is read.}. For citations that are used in some way but not printed in a bibliography or bibliography list, they default to drawing their data from the global refcontext established at the beginning of the document. To override this behaviour, instead of manually wrapping citation commands in \env{refcontext} environments, which might be error-prone and tedious, you can register a comma"=separated list of \prm{keywords}, \prm{categories} or \prm{entrykeys} which, respectively, make the entries with any of the specified keywords, entries in any of the specified categories (see \secref{use:use:div}) or entries with any of the specified citation keys draw their data from a particular refcontext specified by the \prm{refcontext key/values} which are parsed as the per the corresponding \env{refcontext} options. Such refcontext auto-assignments are specific to the current refsection. You may specify the same citation key in any of these commands but be aware that assignment is done in the order \prm{keywords}, \prm{categories}, \prm{entrykeys} with the later specifications overriding the earlier. \cmd{assignrefcontextentries} accepts a single asterisk instead of a list of entrykeys which allows the assignment of all keys in a refsection to a refcontext with having to explicitly list them. An example:
 
 \begin{ltxexample}[style=latex]
 \assignrefcontextentries[labelprefix=A]{key2}
@@ -4701,6 +4780,8 @@
 Note that the \texttt{mcite} module is not a compatibility module. It provides commands which are very similar but not identical in syntax and function to \sty{mcite}'s commands. When migrating from \sty{mcite}\slash\sty{mciteplus} to \biblatex, legacy files must be updated. With \sty{mcite}, the first member of the citation group is also the identifier of the group as a whole. Borrowing an example from the \sty{mcite} manual, this group:
 
 \begin{table}
+\caption{\sty{mcite}-like commands}
+\label{use:cit:mct:tab1}
 \tablesetup
 \begin{tabular}{@{}V{0.5\textwidth}@{}V{0.5\textwidth}@{}}
 \toprule
@@ -4716,10 +4797,10 @@
 |\textcite|	& |\mtextcite| \\
 |\Textcite|	& |\Mtextcite| \\
 |\supercite|	& |\msupercite| \\
+|\autocite|	& |\mautocite| \\
+|\Autocite|	& |\Mautocite| \\
 \bottomrule
 \end{tabular}
-\caption{\sty{mcite}-like commands}
-\label{use:cit:mct:tab1}
 \end{table}
 
 \begin{ltxexample}
@@ -4735,6 +4816,9 @@
 Once defined, an entry set is handled like any regular entry in a \file{bib} file. When using one of the \texttt{numeric} styles which come with \biblatex and activating its \opt{subentry} option, it is even possible to refer to set members. See \tabref{use:cit:mct:tab2} for some examples. Restating the original definition of the set is redundant, but permissible. In contrast to \sty{mciteplus}, however, restating a part of the original definition is invalid. Use the entry key of the set instead.
 
 \begin{table}
+\caption[\sty{mcite}-like syntax]
+{\sty{mcite}-like syntax (sample output with \kvopt{style}{numeric} and \opt{subentry} option)}
+\label{use:cit:mct:tab2}
 \tablesetup
 \begin{tabular}{@{}V{0.6\textwidth}@{}V{0.1\textwidth}@{}p{0.3\textwidth}@{}}
 \toprule
@@ -4750,9 +4834,6 @@
 |\cite{weinberg}|			& [1c]	& Regular |\cite| works as well \\
 \bottomrule
 \end{tabular}
-\caption[\sty{mcite}-like syntax]
-{\sty{mcite}-like syntax (sample output with \kvopt{style}{numeric} and \opt{subentry} option)}
-\label{use:cit:mct:tab2}
 \end{table}
 
 \subsection{Localization Commands}
@@ -4909,7 +4990,11 @@
 The dash to be used as a replacement for recurrent authors or editors in the bibliography. The default is an <em> or an <en> dash, depending on the indentation of the list of references.
 
 \csitem{labelnamepunct}\DeprecatedMark
-A separator to be printed after the name used for alphabetizing in the bibliography (\bibfield{author} or \bibfield{editor}, if the \bibfield{author} field is undefined) instead of \cmd{newunitpunct}. The default is \cmd{newunitpunct}, \ie it is not handled differently from regular unit punctuation but permits convenient reconfiguration. This punctuation command is deprecated and has been superseded by the context-sensitive \cmd{nametitledelim} (see \secref{use:fmt:csd}). For backwards compatibility reasons, however, \cmd{nametitledelim} still defaults to \cmd{labelnamepunct} in the \texttt{bib} and \texttt{biblist} contexts. Style authors may want to consider replacing \cmd{labelnampunct} with \texttt{\textbackslash printdelim\{nametitledelim\}} and users may want to prefer modifying the context-sensitive \texttt{nametitledelim} with \cmd{DeclareDelimFormat} over redefining \cmd{labelnamepunct}.
+A separator to be printed after the name used for alphabetizing in the bibliography (\bibfield{author} or \bibfield{editor}, if the \bibfield{author} field is undefined) instead of \cmd{newunitpunct}. The default is \cmd{newunitpunct}, \ie it is not handled differently from regular unit punctuation but permits convenient reconfiguration. This punctuation command is deprecated and has been superseded by the context-sensitive \cmd{nametitledelim} (see \secref{use:fmt:csd}). For backwards compatibility reasons, however, \cmd{nametitledelim} still defaults to \cmd{labelnamepunct} in the \texttt{bib} and \texttt{biblist} contexts. Style authors may want to consider replacing \cmd{labelnampunct} with \texttt{\textbackslash printdelim\{nametitledelim\}} and users may want to prefer modifying the context-sensitive \texttt{nametitledelim} in the \texttt{bib} context with \cmd{DeclareDelimFormat} over redefining \cmd{labelnamepunct}, e.g.
+\begin{ltxexample}
+\DeclareDelimFormat[bib]{nametitledelim}{%
+  \addcolon\space}
+\end{ltxexample}
 
 \csitem{subtitlepunct}
 The separator printed between the fields \bibfield{title} and \bibfield{subtitle}, \bibfield{booktitle} and \bibfield{booksubtitle}, as well as \bibfield{maintitle} and \bibfield{mainsubtitle}. With the default styles, this separator replaces \cmd{newunitpunct} at this location. The default definition is \cmd{newunitpunct}, \ie it is not handled differently from regular unit punctuation.
@@ -4923,6 +5008,9 @@
 \csitem{bibpagerefpunct}
 The separator printed before the \bibfield{pageref} field. The default is an interword space.
 
+\csitem{bibeidpunct}
+The separator printed before the \bibfield{eid} field (similar to \cmd{bibpagespunct}). The default is a comma plus an interword space.
+
 \csitem{multinamedelim}\CSdelimMark
 The delimiter printed between multiple items in a name list like \bibfield{author} or \bibfield{editor} if there are more than two names in the list. The default is a comma plus an interword space. See \cmd{finalnamedelim} for an example.\footnote{Note that \cmd{multinamedelim} is not used at all if there are only two names in the list. In this case, the default styles use the \cmd{finalnamedelim}.}
 
@@ -4960,9 +5048,27 @@
 \csitem{multicitedelim}
 The delimiter printed between citations if multiple entry keys are passed to a single citation command. The default is a semicolon plus an interword space.
 
+\csitem{multiciterangedelim}
+The delimiter printed between two citations if they are compressed to a range. The default is \cmd{bibrangedash}.
+
+\csitem{multicitesubentrydelim}
+The delimiter printed between subentry citations of the same set. This delimiter is only used in citation styles that reduce citations of the same set to a more compact form (\opt{subentry} of \texttt{numeric-comp}). The default is a comma.
+
+\csitem{multicitesubentryrangedelim}
+The delimiter printed between two citations of the same set if they are compressed to a range. The default is \cmd{multiciterangedelim}.
+
 \csitem{supercitedelim}
 Similar to \cmd{multicitedelim}, but used by the \cmd{supercite} command only. The default is a comma.
 
+\csitem{superciterangedelim}
+Analogue of \cmd{multiciterangedelim} for \cmd{supercite}. The default is \cmd{bibrangedash}.
+
+\csitem{supercitesubentrydelim}
+Analogue of \cmd{multicitesubentrydelim} for \cmd{supercite}. The default is \cmd{supercitedelim}.
+
+\csitem{supercitesubentryrangedelim}
+Analogue of \cmd{multicitesubentryrangedelim} for \cmd{supercite}. The default is \cmd{superciterangedelim}.
+
 \csitem{compcitedelim}
 Similar to \cmd{multicitedelim}, but used by certain citation styles when <compressing> multiple citations. The default definition is a comma plus an interword space.
 
@@ -5043,13 +5149,13 @@
 \mkbibnameaffix
 \end{ltxexample}
 
-\csitem{mkbibcompletenamefamily}{text}
+\cmditem{mkbibcompletenamefamily}{text}
 This command, which takes one argument, is used to format the complete name in \texttt{family} format order.
 
-\csitem{mkbibcompletenamefamilygiven}{text}
+\cmditem{mkbibcompletenamefamilygiven}{text}
 This command, which takes one argument, is used to format the complete name in \texttt{family-given} format order.
 
-\csitem{mkbibcompletenamegivenfamily}{text}
+\cmditem{mkbibcompletenamegivenfamily}{text}
 This command, which takes one argument, is used to format the complete name in \texttt{given-family} format order.
 
 \cmditem{mkbibcompletename}{text}
@@ -5079,7 +5185,7 @@
 \csitem{enddatecircaprintiso}
 Prints \acr{ISO8601-2} format date circa information when the global option \opt{datecirca} is enabled and the \cmd{ifenddatecirca} test is true. Prints \cmd{textasciitilde}.
 
-\csitem{dateeraprint}{yearfield}
+\cmditem{dateeraprint}{yearfield}
 Prints date era information when the global option \opt{dateera} is set to <secular> or <christian>. By default, prints the \opt{dateeradelim} delimiter and the appropriate localised era term (\secref{aut:lng:key:dt}). If the \opt{dateeraauto} option is set, then the passed \prm{yearfield} (which is the name of a year field such as <year>, <origyear>, <endeventyear> etc.) is tested to see if its value is earlier than the \opt{dateeraauto} threshold and if so, then the BCE/CE localisation will be output too. The default setting for \opt{dateeraauto} is 0 and so only BCE/BC localisation strings are candidates for output. Detects whether the start or end year era information is to be printed by looking at the \prm{yearfield} name passed to it.
 
 \csitem{dateeraprintpre}
@@ -5124,26 +5230,31 @@
 \cmditem{DeclareDelimFormat}[context, \dots]{name, \dots}{code}
 \cmditem*{DeclareDelimFormat}*[context, \dots]{name, \dots}{code}
 
-Declares the delimiter macros in the comma"=separated list \prm{names} with the replacement test \prm{code}. If the optional comma"=separated list of \prm{contexts} is given, declare the \prm{names} only for those contexts. \prm{names} defined without any \prm{contexts} behave just like the global delimiter definitions which \cmd{newcommand} gives---just a plain macro with a replacement which can be used as \cmd{name}. However, you can also call delimiter macros defined in this way by using \cmd{printdelim}, which is context-aware. The starred version clears all \prm{context} specific declarations for all \prm{names} first.
+Declares the delimiter macros in the comma"=separated list \prm{names} with the replacement text \prm{code}. If the optional comma"=separated list of \prm{contexts} is given, declare the \prm{names} only for those contexts. \prm{names} defined without any \prm{contexts} behave just like the global delimiter definitions which \cmd{newcommand} gives---just a plain macro with a replacement which can be used as \cmd{name}. However, you can also call delimiter macros defined in this way by using \cmd{printdelim}, which is context-aware. The starred version clears all \prm{context} specific declarations for all \prm{names} first.
 
-\cmditem{DeclareDelimAlias}{alias}{delim}
-\cmditem*{DeclareDelimAlias}*[alias context, \dots]{alias}[delim context]{delim}
+\cmditem{DeclareDelimAlias}[alias context, \dots]{alias}[delim context]{delim}
 
-Declares \prm{alias} to be an alias for the delimiter \prm{delim}. The assigment is performed for all existing contexts of the target \prm{delim}.
-The starred version assigns the alias for specific contexts only. The first optional argument \prm{alias context} holds a list of contexts for which the assignment is going to be performed. If it is empty or missing the global/empty context is assumed. The second optional argument \prm{delim context} specifies the context of the target delimiter. This argument may not be a list, it can only hold one context. If it is missing the \prm{alias context} is assumed (if \prm{alias context} is a list, the assignment is performed separately for each list item), if it is empty the global context is used.
+Declares \prm{alias} to be an alias for the delimiter \prm{delim}. If the optional \prm{alias context, \dots} nor \prm{delim context} are given, the assigment is performed for all existing contexts of the target \prm{delim} separately, so that \prm{alias} becomes an exact copy of \prm{delim} in all contexts. If only the second optional argument \prm{delim context} is given, all existing contexts of \prm{alias} will be cleared and the global/empty context becomes an alias of \prm{delim} in the context \prm{delim context}. The first optional argument \prm{alias context, \dots} may hold a list of contexts for which the alias is assigned. In that case the second optional argument \prm{delim context} specifies the context of the target delimiter. This argument may not be a list, it can only hold one context. If it is missing, the \prm{alias context} is assumed (if \prm{alias context} is a list, the assignment is performed separately for each list item), if it is empty the global context is used.
 
+
 \begin{ltxexample}[style=latex]
-\DeclareDelimAlias*[bib,biblist]{finalnamedelim}[]{multinamedelim}
+\DeclareDelimAlias[bib,biblist]{finalnamedelim}[]{multinamedelim}
 \end{ltxexample}
 %
 Defines the \opt{bib} and \opt{biblist} contexts of \cmd{finalnamedelim} as aliases of \cmd{multinamedelim} in global context.
 On the other hand
 \begin{ltxexample}[style=latex]
-\DeclareDelimAlias*[bib,biblist]{finalnamedelim}{multinamedelim}
+\DeclareDelimAlias[bib,biblist]{finalnamedelim}{multinamedelim}
 \end{ltxexample}
 %
 defines \cmd{finalnamedelim} in the context \opt{bib} to be an alias of \cmd{multinamedelim} in the \opt{bib} context and defines \cmd{finalnamedelim} in \opt{biblist} context to be an alias of \cmd{multinamedelim} in \opt{biblist}.
 
+\cmditem*{DeclareDelimAlias}*[alias context, \dots]{alias}[delim context]{delim}\DeprecatedMark
+
+The starred version of \cmd{DeclareDelimAlias} is deprecated in favour of using unstarred \cmd{DeclareDelimAlias} with optional arguments.
+
+It assigns the delimiter alias for specific contexts only. The first optional argument \prm{alias context} holds a list of contexts for which the assignment is going to be performed. If it is empty or missing the global/empty context is assumed. The second optional argument \prm{delim context} specifies the context of the target delimiter. This argument may not be a list, it can only hold one context. If it is missing the \prm{alias context} is assumed (if \prm{alias context} is a list, the assignment is performed separately for each list item), if it is empty the global context is used.
+
 \cmditem{printdelim}[context]{name}
 
 Prints a delimiter with name \prm{name}, locally establishing a optional \prm{context} first. Without the optional \prm{context}, \cmd{printdelim} uses the currently active delimiter context.
@@ -5479,11 +5590,6 @@
 
 The facilities discussed in this section are specific to certain localisation modules.
 
-\subsubsection{Bulgarian}
-\label{use:loc:bul}
-
-Like the Greek localisation module, the Bulgarian module also requires \utf support. It will not work with any other encoding.
-
 \subsubsection{American}
 \label{use:loc:us}
 
@@ -5499,6 +5605,36 @@
 
 It is highly advisable to always specify \texttt{american}, \texttt{british}, \texttt{australian}, etc. rather than \texttt{english} when loading the \sty{babel}/\sty{polyglossia} packages to avoid any possible confusion. Older versions of the \sty{babel} package used to treat \opt{english} as an alias for \opt{british}; more recent ones treat it as an alias for \opt{american}. The \biblatex package essentially treats \texttt{english} as an alias for \opt{american}, except for the above feature which is only enabled if \texttt{american} is requested explicitly.
 
+\subsubsection{Bulgarian}
+\label{use:loc:bul}
+
+Like the Greek localisation module, the Bulgarian module also requires \utf support. It will not work with any other encoding.
+
+\subsubsection{Greek}
+\label{use:loc:grk}
+
+The Greek localisation module requires \utf support. It will not work with any other encoding. Generally speaking, the \biblatex package is compatible with the \sty{inputenc} package and with the Unicode engines \lualatex and \xelatex. The \sty{ucs} package will not work. Note that you may need to load additional packages which set up Greek fonts. As a rule of thumb, a setup which works for regular Greek documents should also work with \biblatex. However, there is one fundamental limitation. As of this writing, \biblatex has no support for switching scripts. Greek titles in the bibliography should work fine, but English and other titles in the bibliography may be rendered in Greek letters. If you need multi-script bibliographies, using a Unicode engine is the only sensible choice.
+
+\subsubsection{Hungarian}
+\label{use:loc:hun}
+
+The Hungarian localisation module needs to redefine certain field formats to obtain the grammatically correct word order. This means that these field formats are overwritten whenever the Hungarian localisation is active, no matter whether they were defined in the preamble or by a custom style. So please be aware that using the Hungarian localisation module may cause the bibliography output to deviate from the format dictated by the loaded style and preamble definitions. Changes to this behaviour need to be made using \cmd{DefineBibliographyExtras}. In particular \cmd{mkpageprefix} is redefined to output the <page> or <pages> string as a suffix after the page number following Hungarian conventions, and all formats of fields involving pages, chapters and volumes were modified so that numbers are printed as ordinals. The Hungarian localisation module will print a warning to remind you of these changes whenever it is loaded in a document. The warning tells you how to silence it.
+
+\subsubsection{Latvian}
+\label{use:loc:lav}
+
+The Latvian localisation module, like the Hungarian language module, needs to redefine certain field formats to obtain the grammatically correct word order. This means that these field formats are overwritten whenever the Latvian localisation is active, no matter whether they were defined in the preamble or by a custom style. So please be aware that using the Latvian localisation module may cause the bibliography output to deviate from the format dictated by the loaded style and preamble definitions. Changes to this behaviour need to be made using \cmd{DefineBibliographyExtras}. In particular \cmd{mkpageprefix} is redefined to output the <page> or <pages> string as a suffix after the page number following Latvian conventions, and all formats of fields involving pages, chapters and volumes were modified so that numbers are printed as ordinals. The Latvian localisation module will print a warning to remind you of these changes whenever it is loaded in a document. The warning tells you how to silence it.
+
+\subsubsection{Lithuanian}
+\label{use:loc:lit}
+
+The Lithuanian localisation module needs \utf support and will only work with this encoding.
+
+\subsubsection{Russian}
+\label{use:loc:rus}
+
+Like the Greek and Lithuanian localisation module, the Russian module also requires \utf support. It will not work with any other encoding.
+
 \subsubsection{Spanish}
 \label{use:loc:esp}
 
@@ -5527,26 +5663,12 @@
 
 \end{ltxsyntax}
 
-\subsubsection{Greek}
-\label{use:loc:grk}
+\subsubsection{Turkish}
+\label{use:loc:tur}
 
-The Greek localisation module requires \utf support. It will not work with any other encoding. Generally speaking, the \biblatex package is compatible with the \sty{inputenc} package and with \xelatex. The \sty{ucs} package will not work. Since \sty{inputenc}'s standard \file{utf8} module is missing glyph mappings for Greek, this leaves Greek users with \xelatex. Note that you may need to load additional packages which set up Greek fonts. As a rule of thumb, a setup which works for regular Greek documents should also work with \biblatex. However, there is one fundamental limitation. As of this writing, \biblatex has no support for switching scripts. Greek titles in the bibliography should work fine, but English and other titles in the bibliography may be rendered in Greek letters. If you need multi-script bibliographies, using \xelatex is the only sensible choice.
+By default \sty{babel}'s Turkish localisation module makes <\texttt{=}> a <shorthand>, which breaks the \keyval parser uses by \biblatex. This problem can be resolved by telling \sty{babel} not to make <\texttt{=}> a shorthand (for example by loading \sty{babel} with the option \texttt{shorthands=:!}) or by loading a \keyval package that can deal with active characters (\sty{kvsetkeys} and \sty{xkeyval})\fnurl{https://tex.stackexchange.com/a/160428/35864}.
 
-\subsubsection{Russian}
-\label{use:loc:rus}
 
-Like the Greek localisation module, the Russian module also requires \utf support. It will not work with any other encoding.
-
-\subsubsection{Hungarian}
-\label{use:loc:hun}
-
-The Hungarian localisation module needs to redefine certain field formats to obtain the grammatically correct word order. This means that these field formats are overwritten whenever the Hungarian localisation is active, no matter whether they were defined in the preamble or by a custom style. So please be aware that using the Hungarian localisation module may cause the bibliography output to deviate from the format dictated by the loaded style and preamble definitions. Changes to this behaviour need to be made using \cmd{DefineBibliographyExtras}. In particular \cmd{mkpageprefix} is redefined to output the <page> or <pages> string as a suffix after the page number following Hungarian conventions, and all formats of fields involving pages, chapters and volumes were modified so that numbers are printed as ordinals. The Hungarian localisation module will print a warning to remind you of these changes whenever it is loaded in a document. The warning tells you how to silence it.
-
-\subsubsection{Latvian}
-\label{use:loc:lav}
-
-The Latvian localisation module, like the Hungarian language module, needs to redefine certain field formats to obtain the grammatically correct word order. This means that these field formats are overwritten whenever the Latvian localisation is active, no matter whether they were defined in the preamble or by a custom style. So please be aware that using the Latvian localisation module may cause the bibliography output to deviate from the format dictated by the loaded style and preamble definitions. Changes to this behaviour need to be made using \cmd{DefineBibliographyExtras}. In particular \cmd{mkpageprefix} is redefined to output the <page> or <pages> string as a suffix after the page number following Latvian conventions, and all formats of fields involving pages, chapters and volumes were modified so that numbers are printed as ordinals. The Latvian localisation module will print a warning to remind you of these changes whenever it is loaded in a document. The warning tells you how to silence it.
-
 \subsection{Usage Notes}
 \label{use:use}
 
@@ -6023,17 +6145,19 @@
 \subsubsection{Usage with \acr{KOMA}-Script Classes}
 \label{use:cav:scr}
 
-When using \biblatex in conjunction with one of the \sty{scrbook}, \sty{scrreprt}, or \sty{scrartcl} classes, the headings \texttt{bibliography} and \texttt{biblist} from \secref{use:bib:hdg} are responsive to the bibliography"=related options of these classes.\footnote{This applies to the traditional syntax of these options (\opt{bibtotoc} and \opt{bibtotocnumbered}) as well as to the \keyval syntax introduced in \acr{KOMA}-Script 3.x, \ie to \kvopt{bibliography}{nottotoc}, \kvopt{bibliography}{totoc}, and \kvopt{bibliography}{totocnumbered}. The global \kvopt{toc}{bibliography} and \kvopt{toc}{bibliographynumbered} options as well as their aliases are detected as well. In any case, the options must be set globally in the optional argument to \cmd{documentclass}.} You can override the default headings by using the \opt{heading} option of \cmd{printbibliography}, \cmd{printbibheading} and \cmd{printbiblist}. See \secref{use:bib:bib, use:bib:biblist, use:bib:hdg} for details. All default headings are adapted at load-time such that they blend with the behavior of these classes. If one of the above classes is detected, \biblatex will also provide the following additional tests which may be useful in custom heading definitions:
+When used in conjunction with a recent version\footnote{At least \acr{KOMA}-Script 3.25 (2018/03/30).} one of the \sty{scrbook}, \sty{scrreprt}, or \sty{scrartcl} classes, \biblatex passes control over the (default) headings \texttt{bibliography} and \texttt{biblist} from \secref{use:bib:hdg} to the class. Hence, bibliography-heading-related class options can be used as usual. You can override the default headings by using the \opt{heading} option of \cmd{printbibliography}, \cmd{printbibheading} and \cmd{printbiblist}. See \secref{use:bib:bib, use:bib:biblist, use:bib:hdg} for details.
 
+\biblatex also tries to detect bibliography-related class options and settings itself.\footnote{This applies to the traditional syntax of these options (\opt{bibtotoc} and \opt{bibtotocnumbered}) as well as to the \keyval syntax introduced in \acr{KOMA}-Script 3.x, \ie to \kvopt{bibliography}{nottotoc}, \kvopt{bibliography}{totoc}, and \kvopt{bibliography}{totocnumbered}. The global \kvopt{toc}{bibliography} and \kvopt{toc}{bibliographynumbered} options as well as their aliases are detected as well. In any case, the options must be set globally in the optional argument to \cmd{documentclass}.} This was required to be able to adapt the bibliography headings to the class settings in older versions of \acr{KOMA}-Script. If one of the above classes is detected, \biblatex will provide the following additional tests which may be useful in custom heading definitions. Since these tests rely on the error-prone external detection of \acr{KOMA}-Script settings and are no longer used with newer \acr{KOMA}-Script versions, these tests are deprecated and should no longer be used.
+
 \begin{ltxsyntax}
 
-\cmditem{ifkomabibtotoc}{true}{false}
+\cmditem{ifkomabibtotoc}{true}{false}\DeprecatedMark
 
-Expands to \prm{true} if the class would add the bibliography to the table of contents, and to \prm{false} otherwise.
+Expands to \prm{true} if the class would add the bibliography to the table of contents, and to \prm{false} otherwise. This test is deprecated.
 
-\cmditem{ifkomabibtotocnumbered}{true}{false}
+\cmditem{ifkomabibtotocnumbered}{true}{false}\DeprecatedMark
 
-Expands to \prm{true} if the class would add the bibliography to the table of contents as a numbered section, and to \prm{false} otherwise. If this test yields \prm{true}, \cmd{ifkomabibtotoc} will always yield \prm{true} as well, but not vice versa.
+Expands to \prm{true} if the class would add the bibliography to the table of contents as a numbered section, and to \prm{false} otherwise. If this test yields \prm{true}, \cmd{ifkomabibtotoc} will always yield \prm{true} as well, but not vice versa. This test is deprecated.
 
 \end{ltxsyntax}
 
@@ -6067,7 +6191,7 @@
 \cite[vii--x; 5, 7]{key}
 \end{ltxexample}
 %
-In some other cases, however, the tests may get it wrong and you need to resort to the auxiliary commands \cmd{pno}, \cmd{ppno}, and \cmd{nopp} from \secref{use:cit:msc}. For example, suppose a work is cited by a special pagination scheme consisting of numbers and letters. In this scheme, the string <|27a|> would mean <page~27, part~a>. Since this string does not look like a number or a range to \biblatex, you need to force the prefix for a single number manually:
+In some other cases, however, the tests may get it wrong and you need to resort to the auxiliary commands \cmd{pnfmt}, \cmd{pno}, \cmd{ppno}, and \cmd{nopp} from \secref{use:cit:msc}. For example, suppose a work is cited by a special pagination scheme consisting of numbers and letters. In this scheme, the string <|27a|> would mean <page~27, part~a>. Since this string does not look like a number or a range to \biblatex, you need to force the prefix for a single number manually:
 
 \begin{ltxexample}
 \cite[\pno~27a]{key}
@@ -6088,6 +6212,12 @@
 \cite[see][\ppno~37--46, in particular \pno~40]{key}
 \end{ltxexample}
 %
+The command \cmd{pnfmt} can be used for \prm{postnote}s consisting of a page range and some additional text. \cmd{pnfmt} prints its argument in the format specified for the postnote and can be used to format the page range automatically without the need for \cmd{pno} and \cmd{ppno}.
+
+\begin{ltxexample}
+\cite[\pnfmt{37-46}, in particular \pnfmt{40}]{key}
+\end{ltxexample}
+%
 There are also two auxiliary command for suffixes like <the following page(s)>. Instead of inserting such suffixes literally (which would require \cmd{ppno} to force a prefix):
 
 \begin{ltxexample}
@@ -6102,7 +6232,7 @@
 \cite[55\psqq]{key}
 \end{ltxexample}
 %
-Since the postnote is printed without any prefix if it includes any character which is not an Arabic or Roman numeral, you may also type the prefix manually:
+Since the postnote is printed without any prefix if it includes any character which is not an Arabic or Roman numeral, you may also type the prefix manually---though this is discouraged:
 
 \begin{ltxexample}
 \cite[p.~5]{key}
@@ -6184,11 +6314,33 @@
 \item K\delim{.-}{c}H\delim{.}{a} Mustermann
 \end{namesample}
 
-\subsubsection{Bibliography Filters and Citation Labels}
+\subsubsection{Split Bibliographies and Citation Labels}
 \label{use:cav:lab}
 
 The citation labels generated by this package are assigned to the full list of references before it is split up by any bibliography filters. They are guaranteed to be unique across the entire document (or a \env{refsection} environment), no matter how many bibliography filters you are using. When using a numeric citation scheme, however, this will most likely lead to discontinuous numbering in split bibliographies. Use the \opt{defernumbers} package option to avoid this problem. If this option is enabled, numeric labels are assigned the first time an entry is printed in any bibliography.
 
+Compare the output of the following example with \texttt{defernumbers=true} and \texttt{defernumbers=false}.
+%
+\begin{ltxexample}
+\documentclass{article}
+\usepackage[defernumbers=true]{biblatex}
+
+\addbibresource{biblatex-examples.bib}
+
+\begin{document}
+Lorem \autocite{worman} ipsum \autocite{sigfridsson}
+dolor \autocite{nussbaum} sit \autocite{aksin}
+
+\printbibheading[title={Bibliography}]
+\printbibliography[heading=subbibliography,
+  type=book, title={Books}]
+\printbibliography[heading=subbibliography,
+  type=article, title={Articles}]
+\end{document}
+\end{ltxexample}
+
+There are pathological cases where neither \texttt{defernumbers=true} nor \texttt{defernumbers=false} produce fully desirable output. This may be the case when entries can end up in several of the split bibliographies---or if there is an additional global bibliography. But in most cases with non-overlapping split bibliographies \texttt{defernumbers=true} produces better results. \sty{biblatex} will therefore suggest setting \opt{defernumbers} to \opt{true} in a warning when a split bibliography setup is detected. That warning can be suppressed in case setting \opt{defernumbers} to \opt{true} is not desirable.
+
 \subsubsection{Active Characters in Bibliography Headings}
 \label{use:cav:act}
 
@@ -6649,7 +6801,7 @@
 }
 \end{lstlisting}
 %
-but would additionally have the field \bibfield{dateunspecified} set to <yearincentury> and \bibfield{origdateunspecified} set to <yearindecade>. This information could be used to render the \bibfield{date} as perhaps <20th century> and \bibfield{origdate} as <The 1990s>, information which cannot be derived from the date ranges alone. Since such auto-generated ranges have a know values, given the <unspecified> meta-information, it is relatively easy to use the range values to format special cases. While the standard styles not do this, examples are given in the file \file{96-dates.tex}.
+but would additionally have the field \bibfield{dateunspecified} set to <yearincentury> and \bibfield{origdateunspecified} set to <yearindecade>. This information could be used to render the \bibfield{date} as perhaps <20th century> and \bibfield{origdate} as <The 1990s>, information which cannot be derived from the date ranges alone. Since such auto-generated ranges have known values, given the <unspecified> meta-information, it is relatively easy to use the range values to format special cases. While the standard styles do not do this, examples are given in the file \file{96-dates.tex}.
 
 \fielditem{entrykey}{string}
 
@@ -6877,10 +7029,15 @@
 \begingroup
 \tablesetup
 \begin{longtable}[l]{%
-	@{}V{0.15\textwidth}%
-	@{}V{0.4\textwidth}%
-	@{}V{0.3\textwidth}%
-	@{}V{0.2\textwidth}@{}}
+  @{}V{0.15\textwidth}%
+  @{}V{0.4\textwidth}%
+  @{}V{0.3\textwidth}%
+  @{}V{0.2\textwidth}@{}}
+\caption{Date Interface}
+\label{aut:bbx:fld:tab1}
+\endfirsthead
+\caption[]{Date Interface (cont'd)}
+\endhead
 \toprule
 \multicolumn{2}{@{}H}{\file{bib} File} &
 \multicolumn{2}{H}{Data Interface} \\
@@ -7020,11 +7177,8 @@
 		&			& eventendtimezone & undefined \\
 \bottomrule
 %\end{tabularx}
-\caption{Date Interface}
-\label{aut:bbx:fld:tab1}
 \end{longtable}
 \endgroup
-
 \begin{fieldlist}
 
 \fielditem{hour}{datepart}
@@ -7362,7 +7516,7 @@
 \item[l] The punctuation mark is moved to the left of the citation and thus appears before it.
 \item[f] Like \opt{r} in footnotes and like \opt{l} otherwise.
 \item[c] Pass the punctuation on to the internal implementation of the citation commands. It will then be executed within the \prm{wrapper} command if given.
-\item[o] Retain the default set-up of \opt{c} for citation defined commands without \prm{wrapper} command and \opt{l} for citation commands defined with a \prm{wrapper} command.
+\item[o] Retain the default setup of \opt{c} for citation defined commands without \prm{wrapper} command and \opt{l} for citation commands defined with a \prm{wrapper} command.
 \item[d] Drop the explicit punctuation mark. It will only be available as the field \bibfield{postpunct}.
 \end{valuelist}
 %
@@ -7575,12 +7729,12 @@
 \cmditem{DeclareFieldFormat}[entrytype, \dots]{format}{code}
 \cmditem*{DeclareFieldFormat}*{format}{code}
 
-Defines the field format \prm{format}. This formatting directive is arbitrary \prm{code} to be executed by \cmd{printfield}. The value of the field will be passed to the \prm{code} as its first and only argument. The name of the field currently being processed is available to the \prm{code} as \cmd{currentfield}. If an \prm{entrytype} is specified, the format is specific to that type. The \prm{entrytype} argument may be a comma"=separated list of values. The starred variant of this command is similar to the regular version, except that all type-specific formats are cleared. \emph{Do not put any whitespace between the arguments to this macro as the definitions are quite complex and you will get unexpected results}.
+Defines the field format \prm{format}. This formatting directive is arbitrary \prm{code} to be executed by \cmd{printfield}. The value of the field will be passed to the \prm{code} as its first and only argument. The name of the field currently being processed is available to the \prm{code} as \cmd{currentfield}. If an \prm{entrytype} is specified, the format is specific to that type. The \prm{entrytype} argument may be a comma"=separated list of values. The starred variant of this command is similar to the regular version, except that all type-specific formats are cleared.
 
 \cmditem{DeclareListFormat}[entrytype, \dots]{format}{code}
 \cmditem*{DeclareListFormat}*{format}{code}
 
-Defines the literal list format \prm{format}. This formatting directive is arbitrary \prm{code} to be executed for every item in a list processed by \cmd{printlist}. The current item will be passed to the \prm{code} as its first and only argument. The name of the literal list currently being processed is available to the \prm{code} as \cmd{currentlist}. If an \prm{entrytype} is specified, the format is specific to that type. The \prm{entrytype} argument may be a comma"=separated list of values. Note that the formatting directive also handles the punctuation to be inserted between the individual items in the list. You need to check whether you are in the middle of or at the end of the list, \ie whether \cnt{listcount} is smaller than or equal to \cnt{liststop}. The starred variant of this command is similar to the regular version, except that all type-specific formats are cleared. \emph{Do not put any whitespace between the arguments to this macro as the definitions are quite complex and you will get unexpected results}.
+Defines the literal list format \prm{format}. This formatting directive is arbitrary \prm{code} to be executed for every item in a list processed by \cmd{printlist}. The current item will be passed to the \prm{code} as its first and only argument. The name of the literal list currently being processed is available to the \prm{code} as \cmd{currentlist}. If an \prm{entrytype} is specified, the format is specific to that type. The \prm{entrytype} argument may be a comma"=separated list of values. Note that the formatting directive also handles the punctuation to be inserted between the individual items in the list. You need to check whether you are in the middle of or at the end of the list, \ie whether \cnt{listcount} is smaller than or equal to \cnt{liststop}. The starred variant of this command is similar to the regular version, except that all type-specific formats are cleared.
 
 
 \cmditem{DeclareNameFormat}[entrytype, \dots]{format}{code}
@@ -7608,7 +7762,7 @@
 \namepartgiveni
 \end{ltxexample}
 %
-If a certain part of a name is not available, the corresponding macro will be empty, hence you may use, for example, the \sty{etoolbox} tests like \cmd{ifdefvoid} to check for the individual parts of a name. The name of the name list currently being processed is available to the \prm{code} as \cmd{currentname}. Note that the formatting directive also handles the punctuation to be inserted between separate names and between the individual parts of a name. You need to check whether you are in the middle of or at the end of the list, \ie whether \cnt{listcount} is smaller than or equal to \cnt{liststop}. See also \secref{use:cav:nam}. The starred variant of this command is similar to the regular version, except that all type-specific formats are cleared. \emph{Do not put any whitespace between the arguments to this macro as the definitions are quite complex and you will get unexpected results}.
+If a certain part of a name is not available, the corresponding macro will be empty, hence you may use, for example, the \sty{etoolbox} tests like \cmd{ifdefvoid} to check for the individual parts of a name. The name of the name list currently being processed is available to the \prm{code} as \cmd{currentname}. Note that the formatting directive also handles the punctuation to be inserted between separate names and between the individual parts of a name. You need to check whether you are in the middle of or at the end of the list, \ie whether \cnt{listcount} is smaller than or equal to \cnt{liststop}. See also \secref{use:cav:nam}. The starred variant of this command is similar to the regular version, except that all type-specific formats are cleared.
 
 \cmditem{DeclareListWrapperFormat}[entrytype, \dots]{format}{code}
 \cmditem*{DeclareListWrapperFormat}*{format}{code}
@@ -7635,17 +7789,6 @@
 
 Defines the name list format \prm{format}. This formatting directive is arbitrary \prm{code} to be executed for every name in a list processed by \cmd{indexnames}. The name of the name list currently being processed is available to the \prm{code} as \cmd{currentname}. If an \prm{entrytype} is specified, the format is specific to that type. The \prm{entrytype} argument may be a comma"=separated list of values. The parts of the name will be passed to the \prm{code} as separate arguments. This command is very similar to \cmd{DeclareNameFormat} except that the data handled by the \prm{code} is not intended to be printed but written to the index. Note that \cmd{indexnames} will execute the \prm{code} as is, \ie the \prm{code} must include \cmd{index} or a similar command. The starred variant of this command is similar to the regular version, except that all type-specific formats are cleared.
 
-\cmditem{DeclareIndexListWrapperFormat}[entrytype, \dots]{format}{code}
-\cmditem*{DeclareIndexListWrapperFormat}*{format}{code}
-
-Similar to \cmd{DeclareIndexListFormat} but for the list format used for indices.
-
-
-\cmditem{DeclareIndexNameWrapperFormat}[entrytype, \dots]{format}{code}
-\cmditem*{DeclareIndexNameWrapperFormat}*{format}{code}
-
-Similar to \cmd{DeclareIndexNameFormat} but for the name list format used for indices.
-
 \cmditem{DeclareFieldAlias}[entry type]{alias}[format entry type]{format}
 
 Declares \prm{alias} to be an alias for the field format \prm{format}. If an \prm{entrytype} is specified, the alias is specific to that type. The \prm{format entry type} is the entry type of the backend format. This is only required when declaring an alias for a type"=specific formatting directive.
@@ -7678,14 +7821,6 @@
 
 Declares \prm{alias} to be an alias for the name list format \prm{format}. If an \prm{entrytype} is specified, the alias is specific to that type. The \prm{format entry type} is the entry type of the backend format. This is only required when declaring an alias for a type"=specific formatting directive.
 
-\cmditem{DeclareIndexListWrapperAlias}[entrytype, \dots]{format}{code}
-
-Similar to \cmd{DeclareIndexListFormat} but for the list format used for indices.
-
-\cmditem{DeclareIndexNameWrapperAlias}[entrytype, \dots]{format}{code}
-
-Similar to \cmd{DeclareIndexNameFormat} but for the name list format used for indices.
-
 \cmditem{DeprecateFieldFormatWithReplacement}[entry type]{alias}[format entry type]{format}
 
 Declares \prm{alias} to be an alias for the name list format \prm{format} and issue a deprecation warning. If an \prm{entrytype} is specified, the alias is specific to that type. The \prm{format entry type} is the entry type of the backend format. This is only required when declaring an alias for a type"=specific formatting directive.
@@ -7718,14 +7853,6 @@
 
 Similar to \cmd{DeprecateFieldFormatWithReplacement} but for index name formats.
 
-\cmditem{DeprecateIndexListWrapperFormatWithReplacement}[entry type]{alias}[format entry type]{format}
-
-Similar to \cmd{DeprecateFieldFormatWithReplacement} but for index list formats.
-
-\cmditem{DeprecateIndexNameWrapperFormatWithReplacement}[entry type]{alias}[format entry type]{format}
-
-Similar to \cmd{DeprecateFieldFormatWithReplacement} but for index name formats.
-
 \end{ltxsyntax}
 
 \subsection{Customization}
@@ -7743,7 +7870,7 @@
 %
 The special fields are \bibfield{related}, \bibfield{relatedtype}, \bibfield{relatedstring} and \bibfield{relatedoptions}:
 \begin{keymarglist}
-\item[related] A separated list of keys of entries which are related to this entry in some way. Note the the order of the keys is important. The data from multiple related entries is printed in the order of the keys listed in this field.
+\item[related] A separated list of keys of entries which are related to this entry in some way. Note the order of the keys is important. The data from multiple related entries is printed in the order of the keys listed in this field.
 \item[relatedtype] The type of relationship. This serves three purposes. If the value of this field resolves to a localisation string identifier, then the resulting localised string is printed before the data from the related entries. Secondly, if there is a macro called \texttt{related:\prm{relatedtype}}, this is used to format the data from the related entries. If no such macro exists, then the macro \texttt{related:default} is used. Lastly, if there is a format named \texttt{related:\prm{relatedtype}}, then it is used to format both the localised string and related entry data. If there is no related type specific format, the \texttt{related} format is used.
 \item[relatedstring] If an entry contains this field, then if value of the field resolves to a localisation string identifier, the localisation key value specified is printed before data from the related entries. If the field does not specify a localisation key, its value is printed literally. If both \bibfield{relatedtype} and \bibfield{relatedstring} are present in an entry, \bibfield{relatedstring} is used for the pre-data string (but \bibfield{relatedtype} is still used to determine the macro and format to use when printing the data).
 \item[relatedoptions] A list of per"=entry options to set on the related entry (actually on the clone of the related entry which is used as a data source---the actual related entry is not modified because it might be cited directly itself).
@@ -7834,7 +7961,7 @@
 \item Add new fields to an entry
 \item Remove fields from an entry
 \item Modify the contents of a field using standard Perl regular expression
-  match and replace
+  match and replace\footnote{See for example \url{https://perldoc.perl.org/perlretut.html}, \url{https://perldoc.perl.org/perlrequick.html} and \url{https://perldoc.perl.org/perlre.html}. There are many more resources available about regular expessions in Perl.}
 \item Restrict any of the above operations to entries coming from
   particular datasources which you defined in \cmd{addresource} macros
 \item Restrict any of the above operations to entries only of a certain
@@ -7932,6 +8059,7 @@
 \boolitem[false]{nocited}
 \boolitem[false]{citedornocited}
 \boolitem[false]{allnocited}
+\boolitem[false]{starnocited}
 \boolitem[false]{entrynocite}
 \boolitem[false]{entrynull}
 \boolitem[false]{append}
@@ -7946,18 +8074,18 @@
 
 \renewcommand{\labelitemii}{$\circ$}
 
-Note that the options \opt{cited}, \opt{nocited}, \opt{citedornocited} and
-\opt{allnocited} are unique in that they can make the results of a
-sourcemap differ depending on the refsection. This is because a datasource
-to which source mapping applies may be used in several refsections and
-source mappings are applied when fetching the data from the datasources for
-a refsection. Citation commands are local to a refsection and therefore may
-differ for the same entry from refsection to refsection. For example, the same
-entry may be \cmd{cite}d in one refsection but \cmd{nocite}d in another,
-resulting in different source map results and therefore data between the
-refsections. This can be avoided if desired, by limiting source maps to
-specific refsections only (see \opt{refsection} option to the \cmd{map}
-command above).
+Note that the options \opt{cited}, \opt{nocited}, \opt{citedornocited},
+\opt{allnocited} and \opt{starnocited} are unique in that they can make the
+results of a sourcemap differ depending on the refsection. This is because
+a datasource to which source mapping applies may be used in several
+refsections and source mappings are applied when fetching the data from the
+datasources for a refsection. Citation commands are local to a refsection
+and therefore may differ for the same entry from refsection to refsection.
+For example, the same entry may be \cmd{cite}d in one refsection but
+\cmd{nocite}d in another, resulting in different source map results and
+therefore data between the refsections. This can be avoided if desired, by
+limiting source maps to specific refsections only (see \opt{refsection}
+option to the \cmd{map} command above).
 
 \begin{itemize}
 \item If \texttt{entrynew} is set, a new entry is created with the entry key \texttt{entrynewkey} and the entry type given in the option \texttt{entrynewtype}. This
@@ -7990,6 +8118,9 @@
   of an entry was specifically cited via \cmd{cite} or specifically nocited via \cmd{nocite}.
 \item If \texttt{allnocited} is used then only apply the step if the entry key
   of an entry was included via \cmd{nocite\{*\}}.
+\item If \texttt{starnocited} is used then only apply the step if the entry key
+  of an entry was included solely because of \cmd{nocite\{*\}}. This
+  implies that the entry was neither explicitly \cmd{cite}ed nor explicitly \cmd{nocite}ed.
 \item Change the \texttt{typesource} \prm{entrytype} to the
   \texttt{typetarget} \prm{entrytype}, if defined. If
   \texttt{final} is \texttt{true} then if the \prm{entrytype} of the entry is not \texttt{typesource}, processing of the parent \cmd{map} immediately terminates.
@@ -8392,7 +8523,7 @@
 
 The default data model is defined in the core \biblatex file \file{blx-dm.def} using the macros described in this section. The default data model is described in detail in \secref{bib}. The data model is used internally by \biblatex and also by the backend. In practice, changing the data model means that you can define the entrytypes and fields for your datasources and validate your data against the data model. Naturally, this is not much use unless your style supports any new entrytypes or fields and it raises issues of portability between styles (although this can be mitigated by using the dynamic data modification functionality described in \secref{aut:ctm:map}).
 
-Note that while the \biber/\bibtex input site is not case sensitive when it comes to entry types and field names, the \latex side is case sensitive and uses the exact capitalisation from the data model. At the moment custom data fields are only supported in lowercase.
+Note that while the \biber/\bibtex input site is not case sensitive when it comes to entry types and field names (Perl's Unicode case folding is used to normalise field names and entry types), the \latex side is case sensitive and uses the exact capitalisation from the data model.
 
 Validation against the data model means that after mapping your data sources into the data model, \biber (using its \path{--validate_datamodel} option) can check:
 
@@ -9345,6 +9476,8 @@
 \end{ltxsyntax}
 
 \begin{table}
+\caption{Valid transliteration pairs}
+\label{tab:translit}
 \tablesetup\centering
 \begin{tabular}{lll}
 \toprule
@@ -9357,8 +9490,6 @@
 russian & bgn/pcgn-standard & BGN/PCGN:1947 (Standard Variant), Cyrillic to Latin, Russian\\
  \bottomrule
 \end{tabular}
-\caption{Valid transliteration pairs}
-\label{tab:translit}
 \end{table}
 
 \subsubsection[Bibliography List Filters]{Bibliography List Filters}
@@ -10020,10 +10151,18 @@
 
 Expands to \prm{true} if the two dates \prm{datetype1} and \prm{datetype2} have the same year and era. Since the sign of the date is saved in the era field, years should be compared using this command to avoid confusion when the two years have opposite signs
 
+\cmditem{ifdatesequal}{datetype1}{datetype2}{true}{false}
 
+Expands to \prm{true} if the two dates \prm{datetype1} and \prm{datetype2} are the same. Here \prm{datetype2} may be the <end> bit of \prm{datetype1} (or vice versa).
+
+\cmditem{ifdaterangesequal}{datetype1}{datetype2}{true}{false}
+
+Expands to \prm{true} if the two date ranges---that is the start and the end date---\prm{datetype1} and \prm{datetype2} are the same.
+
+
 \cmditem{ifcaselang}[language]{true}{false}
 
-Expands to \prm{true} if the the optional \prm{language} is one of those
+Expands to \prm{true} if the optional \prm{language} is one of those
 declared by \cmd{DeclareCaseLangs} (see \secref{aut:aux:msc}) and to
 \prm{false} otherwise. Without the optional argument, checks the current
 value of \cmd{currentlang}.
@@ -10166,7 +10305,7 @@
 
 \cmditem{ifuniqueprimaryauthor}{true}{false}
 
-Expands to \prm{true} if there is only one work by the the primary (first) author name of \opt{labelname} and to \prm{false} otherwise. Only the base name parts of the author name are considered, as defined by \cmd{DeclareUniquenameTemplate} see \secref{aut:cav:amb}. If \opt{labelname} is not set for an entry, this will always expand to \prm{false}. Note that this feature needs to be enabled explicitly with the package option \opt{uniqueprimaryauthor}.
+Expands to \prm{true} if the primary (first) author name of \opt{labelname} is unique in the bibliography list and to \prm{false} otherwise. This effectively answers the question <is there more than one author with the same base name>. The base name parts are defined by \cmd{DeclareUniquenameTemplate} see \secref{aut:cav:amb}. This is required by some styles (e.g. APA) which mandates primary author disambiguation only and only if there are (different) primary authors with the same family name. If \opt{labelname} is not set for an entry, this will always expand to \prm{false}. Note that this feature needs to be enabled explicitly with the package option \opt{uniqueprimaryauthor}.
 
 \cmditem{ifandothers}{list}{true}{false}
 
@@ -10274,11 +10413,11 @@
 
 \cmditem{ifnumerals}{string}{true}{false}
 
-Executes \prm{true} if the \prm{string} is a range or a list of Arabic or Roman numerals, and \prm{false} otherwise. This command is robust. In contrast to \cmd{ifnumeral}, it will also execute \prm{true} with arguments like «52--58», «14/15», «1,~3,~5», and so on. See also \cmd{DeclareNumChars}, \cmd{DeclareRangeChars}, \cmd{DeclareRangeCommands}, and \cmd{NumCheckSetup} in \secref{aut:aux:msc}.
+Executes \prm{true} if the \prm{string} is a range or a list of Arabic or Roman numerals, and \prm{false} otherwise. This command is robust. In contrast to \cmd{ifnumeral}, it will also execute \prm{true} with arguments like «52--58», «14/15», «1,~3,~5», and so on. See also \cmd{DeclareNumChars}, \cmd{DeclareRangeChars}, \cmd{DeclareRangeCommands}, \cmd{NumCheckSetup}, and \cmd{NumsCheckSetup} in \secref{aut:aux:msc}.
 
 \cmditem{ifpages}{string}{true}{false}
 
-Similar to \cmd{ifnumerals}, but also considers \cmd{DeclarePageCommands} from \secref{aut:aux:msc}.
+Similar to \cmd{ifnumerals}, but also considers \cmd{DeclarePageCommands} and \cmd{PagesCheckSetup} from \secref{aut:aux:msc}.
 
 \cmditem{iffieldint}{field}{true}{false}
 
@@ -10323,7 +10462,7 @@
 \cmditem{ifcitation}{true}{false}
 
 Expands to \prm{true} when located in a citation, and to \prm{false} otherwise. Note that this command is responsive to the outermost context in which it is used. For example, if a citation command defined with \cmd{DeclareCiteCommand} executes a driver defined with \cmd{DeclareBibliographyDriver}, any \cmd{ifcitation} tests in the driver code will yield \prm{true}. See \secref{aut:cav:mif} for a practical example.
- 
+
 \cmditem{ifvolcite}{true}{false}
 
 Expands to \prm{true} when located in \cmd{volcite} or a related citation command (\secref{use:cit:spc}), and to \prm{false} otherwise.
@@ -10529,8 +10668,12 @@
 \cmditem{MakeSentenceCase}{text}
 \cmditem*{MakeSentenceCase*}{text}
 
-Converts its \prm{text} argument to sentence case, \ie the first word is capitalized and the remainder of the string is converted to lowercase. This command is robust. The starred variant differs from the regular version in that it considers the language of the entry, as specified in the \bibfield{langid} field. If the \bibfield{langid} field is defined and holds a language declared with \cmd{DeclareCaseLangs} (see below)\footnote{By default, converting to sentence case is enabled for the following language identifiers: \texttt{american}, \texttt{british}, \texttt{canadian}, \texttt{english}, \texttt{australian}, \texttt{newzealand} as well as the aliases \texttt{USenglish} and \texttt{UKenglish}. Use \cmd{DeclareCaseLangs} to extend or change this list.}, then the sentence case conversion is performed. If the \bibfield{langid} field is undefined, then the language list declared with \cmd{DeclareCaseLangs} is checked for the presence of the main document language derived from the \opt{language} option. If found, sentence case conversion is performed, if not, the \prm{text} is not altered in any way. It is recommended to use \cmd{MakeSentenceCase*} rather than the regular variant in formatting directives. Both variants support the traditional \bibtex convention for \file{bib} files that anything wrapped in a pair of curly braces is not modified when changing the case. For example:
+Converts its \prm{text} argument to sentence case, \ie the first word is capitalized and the remainder of the string is converted to lowercase. This command is robust. The starred variant differs from the regular version in that it considers the language of the entry, as specified in the \bibfield{langid} field. If the \bibfield{langid} field is defined and holds a language declared with \cmd{DeclareCaseLangs} (see below)\footnote{By default, converting to sentence case is enabled for the following language identifiers: \texttt{american}, \texttt{british}, \texttt{canadian}, \texttt{english}, \texttt{australian}, \texttt{newzealand} as well as the aliases \texttt{USenglish} and \texttt{UKenglish}. Use \cmd{DeclareCaseLangs} to extend or change this list.}, then the sentence case conversion is performed. If the \bibfield{langid} field is undefined, then the language list declared with \cmd{DeclareCaseLangs} is checked for the presence of the main document language derived from the \opt{language} option. If found, sentence case conversion is performed, if not, the \prm{text} is not altered in any way. It is recommended to use \cmd{MakeSentenceCase*} rather than the regular variant in formatting directives.
 
+Depending on the option \opt{casechanger} \cmd{MakeCaseChange} and \cmd{MakeCaseChange*} are either implemented using the \sty{expl3} module \sty{l3text} or original \LaTeXe code.
+
+Both variants support the traditional \bibtex convention for \file{bib} files that anything wrapped in a pair of curly braces is not modified when changing the case. For example:
+
 \begin{ltxexample}
 \MakeSentenceCase{an Introduction to LaTeX}
 \MakeSentenceCase{an Introduction to {LaTeX}}
@@ -10554,14 +10697,18 @@
 \begin{lstlisting}[style=bibtex]{}
 title = {The {\TeX book}},
 \end{lstlisting}
+
 %
-Unlike \bibtex's built-in case changing function \texttt{change.case\$} \biblatex's \cmd{MakeSentenceCase} is implemented in \latex, it may therefore behave differently in certain situations and is more fragile.
-Currently \cmd{MakeSentenceCase} behaves as follows.
+The behaviour of \cmd{MakeSentenceCase} differs slightly between the \opt{latex2e} and \opt{expl3} implementation. Generally speaking, the \opt{expl3} code is closer to the \bibtex behaviour of \texttt{change.case\$}. It is also better equipped to deal with non-ASCII input and macros than the \opt{latex2e} implementation. \cmd{MakeSentenceCase} behaves as follows.
 \begin{itemize}\setlength{\labelsep}{1em}
-  \item The first letter of its argument is capitalised with \cmd{MakeUppercase}. This is different from \bibtex's \texttt{change.case\$}, which does not touch the first letter of its argument. Note that a pair of braces that starts with a control sequence will be treated as one character for capitalisation purposes. This means that the entire argument of a command protected with a single pair of braces is capitalised.
-  \item Expandable commands are expanded before the case change, which means that the case change applies to the replacement text. Unexpandable commands are not touched. \bibtex does not interpret macros and therefore passes commands through unchanged (this does not necessarily apply to the \emph{arguments} of those commands).
-  \item Text wrapped in one or more pairs of braces is protected from case change unless it starts with a control sequence. This is the same behaviour as with \bibtex. Note that the braces could either be explicit groups or argument delimiters.
-  \item Text in a single pair of braces that starts with a control sequence is not protected and will be subject to case changes. Note that this need not apply to braces that are argument delimiters, in fact the implementation of \cmd{MakeSentenceCase} may in some cases produce an error or otherwise undesirable output if the argument of a command starts with a control sequence. \bibtex's case change function does not differentiate between argument delimiters and brace groups and always subjects text at brace level~1 to case change if it starts with a control sequence.
+  \item The first letter of its argument is capitalised with \cmd{MakeUppercase}. This is different from \bibtex's \texttt{change.case\$}, which does not touch the first letter of its argument.
+  
+  Note that with the \opt{latex2e} code a pair of braces that starts with a control sequence will be treated as a single character for capitalisation purposes. This means that the entire argument of a command protected with a single pair of braces is capitalised.
+  \item With the \opt{latex2e} code expandable commands are expanded before the case change, which means that the case change applies to the replacement text. Unexpandable commands are not touched.
+  
+  \bibtex does not interpret macros and therefore passes commands through unchanged (this does not necessarily apply to the \emph{arguments} of those commands). The \opt{expl3} implementation also does not expand commands and only applies case change to the arguments.
+  \item Text wrapped in one or more pairs of braces is protected from case change \emph{unless} it starts with a control sequence. This is the same behaviour as with \bibtex. Note that the braces could either be explicit groups or argument delimiters.
+  \item Text in a single pair of braces that starts with a control sequence is not protected and will be subject to case changes. Note that this need not apply to braces that are argument delimiters, in fact the \opt{latex2e} implementation of \cmd{MakeSentenceCase} may in some cases produce an error or otherwise undesirable output if the argument of a command starts with a control sequence. \bibtex's case change function does not differentiate between argument delimiters and brace groups and always subjects text at brace level~1 to case change if it starts with a control sequence.
 \end{itemize}
 
 For most intents and purposes the following rules should give a sensible result.
@@ -10574,10 +10721,10 @@
   \end{itemize}
   \item While it is possible to protect words from case change at the beginning of a field with a pair of braces, it is not possible to undo the case protection that a command automatically implies by wrapping it in braces in that position. In that case work-arounds are necessary.
 \end{itemize}
-
-
+%
 \begin{lstlisting}[style=bibtex]{}
-title   = {The Story of {HMS} \emph{Erebus} in {\emph{Really}} Strong Wind},
+title = {The Story of {HMS} \emph{Erebus}
+         in {\emph{Really}} Strong Wind},
 \end{lstlisting}
 would be converted to sentence case by \cmd{MakeSentenceCase} as
 \begin{quote}
@@ -10584,7 +10731,15 @@
 The story of HMS \emph{Erebus} in {\emph{really}} strong wind
 \end{quote}
 
-Due to its complex implementation this command can not accept arbitrary input, it only safely operates on raw text or field data. In the standard styles the \bibfield{title} and other \bibfield{title}-like field formats do not work together with \cmd{MakeSentenceCase} because of their argument structure, so the standard styles offer a dedicated \texttt{titlecase} field format to apply this command. To enable sentence casing in standard styles for languages that support it you would use:
+If the \sty{expl3} implementation of the case changing functions is selected, the \bibtex case protection behaviour can be exchanged for a slightly simpler version. When \opt{bibtexcaseprotection} set to \opt{false}, braces no longer automatically imply case protection. Instead words can be protected from case change with \cmd{NoCaseChange}. The examples from above would then read
+\begin{lstlisting}[style=bibtex]{}
+title = {An Introduction to \NoCaseChange{LaTeX}},
+title = {The Story of \NoCaseChange{HMS \emph{Erebus}}
+         in \emph{Really} Strong Wind},
+\end{lstlisting}
+Generally, this option should allow for a saner case protection input, because curly braces are no longer overloaded with different levels of meaning, but it is a big departure from the standard case protection input that has been with the \latex world for a long time.
+
+Due to its complex implementation \cmd{MakeSentenceCase} can not accept arbitrary input, it only safely operates on raw text or field data. In the standard styles the \bibfield{title} and other \bibfield{title}-like field formats do not work together with \cmd{MakeSentenceCase} because of their argument structure, so the standard styles offer a dedicated \texttt{titlecase} field format to apply this command. To enable sentence casing in standard styles for languages that support it you would use:
 \begin{ltxexample}
 \DeclareFieldFormat{titlecase}{<<\MakeSentenceCase*{#1}>>}
 \end{ltxexample}
@@ -10617,6 +10772,8 @@
 The pagination strings are taken from \texttt{$<$pagination$>$total} and \texttt{$<$pagination$>$totals}.
 
 \begin{table}
+\caption{\cmd{mkcomprange} setup}
+\label{aut:aux:tab1}
 \tablesetup\lnstyle
 \begin{tabularx}{\textwidth}{@{}>{\ttfamily}X@{}p{0.25\textwidth}@{}p{0.25\textwidth}@{}p{0.25\textwidth}@{}}
 \toprule
@@ -10648,8 +10805,6 @@
 1111--1555	& 1111--555	& 1111--555	& 1111--555	\\
 \bottomrule
 \end{tabularx}
-\caption{\cmd{mkcomprange} setup}
-\label{aut:aux:tab1}
 \end{table}
 
 \cmditem{mkcomprange}[postpro][itempostpro]{text}
@@ -10782,6 +10937,35 @@
 
 Use this command to temporarily redefine any commands which interfere with the tests performed by \cmd{ifnumeral}, \cmd{ifnumerals}, and \cmd{ifpages} from \secref{aut:aux:tst}. The setup will also affect \cmd{iffieldnum}, \cmd{iffieldnums}, \cmd{iffieldpages} as well as \cmd{mkpageprefix} and \cmd{mkpagetotal}. The \prm{code} will be executed in a group by these commands. Since the above mentioned commands will expand the string to be analyzed, it is possible to remove commands to be ignored by the tests by making them expand to an empty string. See also \secref{bib:use:pag, use:cav:pag} for further details.
 
+\cmditem{NumsCheckSetup}{code}
+
+Like \cmd{NumCheckSetup} but only applies to \cmd{ifnumerals} and \cmd{ifpages} from \secref{aut:aux:tst} and their derivative tests.
+
+\cmditem{PagesCheckSetup}{code}
+
+Like \cmd{NumCheckSetup} but only applies to \cmd{ifpages} from \secref{aut:aux:tst} and its derivative tests. The default setting is makes \cmd{pnfmt} transparent to the test:
+
+\begin{ltxexample}
+\PagesCheckSetup{\let\pnfmt\@firstofone}
+\end{ltxexample}
+
+\cmditem{DeclareBabelToExplLanguageMapping}{babel language}{expl language}
+
+This command is only available if the \sty{expl3} case changing code is used.
+
+Use \prm{expl language} as \prm{language} argument for the \sty{l3text} case changing functions when \sty{babel language} is active. This command is only required if \prm{babel language} should correspond to a language for which \sty{l3text} has special rules set up. The default invocations of this command are
+\begin{ltxexample}
+\DeclareBabelToExplLanguageMapping{dutch}{nl}
+\DeclareBabelToExplLanguageMapping{greek}{el}
+\DeclareBabelToExplLanguageMapping{turkish}{tr}
+\end{ltxexample}
+
+\cmditem{UndeclareBabelToExplLanguageMapping}{babel language}
+
+This command is only available if the \sty{expl3} case changing code is used.
+
+Removes the \sty{babel}-to-\sty{expl3} language mapping for \prm{babel language}. If the argument is an asterisk \texttt{*}, all language mappings are removed.
+
 \cmditem{DeclareCaseLangs}{languages}
 \cmditem*{DeclareCaseLangs*}{languages}
 
@@ -11091,7 +11275,7 @@
 
 \csitem*{midsentence*}
 
-The starred variant of \cmd{midsentence} differs from the regular one in that a preceding abbreviation dot is not hidden from the the punctuation tracker, \ie any code after \cmd{midsentence*} will see a preceding abbreviation dot. All other punctuation marks are hidden from the punctuation tracker and capitalization is suppressed.
+The starred variant of \cmd{midsentence} differs from the regular one in that a preceding abbreviation dot is not hidden from the punctuation tracker, \ie any code after \cmd{midsentence*} will see a preceding abbreviation dot. All other punctuation marks are hidden from the punctuation tracker and capitalization is suppressed.
 
 \end{ltxsyntax}
 
@@ -11116,6 +11300,18 @@
 
 Similar to \cmd{bibstring} but always prints the short string, ignoring the \opt{abbreviate} option.
 
+\cmditem{bibncpstring}[wrapper]{key}
+
+Similar to \cmd{bibstring} but the term is never capitalized.
+
+\cmditem{bibncplstring}[wrapper]{key}
+
+Similar to \cmd{biblstring} but the term is never capitalized.
+
+\cmditem{bibncpsstring}[wrapper]{key}
+
+Similar to \cmd{bibsstring} but the term is never capitalized.
+
 \cmditem{bibcpstring}[wrapper]{key}
 
 Similar to \cmd{bibstring} but the term is always capitalized.
@@ -11765,14 +11961,17 @@
 \item[langjapanese] The language <Japanese>.
 \item[langlatin] The language <Latin>.
 \item[langlatvian] The language <Latvian>.
+\item[langlithuanian] The language <Lithuanian>.
 \item[langnorwegian] The language <Norwegian>.
 \item[langpolish] The language <Polish>.
 \item[langportuguese] The language <Portuguese>.
 \item[langrussian] The language <Russian>.
+\item[langserbian] The language <Serbian>.
 \item[langslovak] The language <Slovak>.
 \item[langslovene] The language <Slovene>.
 \item[langspanish] The language <Spanish>.
 \item[langswedish] The language <Swedish>.
+\item[langturkish] The language <Turkish>.
 \item[langukrainian] The language <Ukrainian>.
 \end{keymarglist}
 %
@@ -11798,14 +11997,17 @@
 \item[fromjapanese] The expression <from [the] Japanese>.
 \item[fromlatin] The expression <from [the] Latin>.
 \item[fromlatvian] The expression <from [the] Latvian>.
+\item[fromlithuanian] The language <from [the] Lithuanian>.
 \item[fromnorwegian] The expression <from [the] Norwegian>.
 \item[frompolish] The expression <from [the] Polish>.
 \item[fromportuguese] The expression <from [the] Portuguese>.
 \item[fromrussian] The expression <from [the] Russian>.
+\item[fromserbian] The expression <from [the] Serbian>.
 \item[fromslovak] The expression <from [the] Slovak>.
 \item[fromslovene] The expression <from [the] Slovene>.
 \item[fromspanish] The expression <from [the] Spanish>.
 \item[fromswedish] The expression <from [the] Swedish>.
+\item[fromturkish] The expression <from [the] Turkish>.
 \item[fromukrainian] The expression <from [the] Ukrainian>.
 \end{keymarglist}
 
@@ -11984,6 +12186,9 @@
 \csitem{bibpagerefpunct}
 The separator to be printed before the \bibfield{pageref} field. Use this separator instead of \cmd{newunitpunct} at this location. The default is an interword space.
 
+\csitem{bibeidpunct}
+The separator printed before the \bibfield{eid} field (similar to \cmd{bibpagespunct}). The default is a comma plus an interword space.
+
 \csitem{multinamedelim}\CSdelimMark
 The delimiter to be printed between multiple items in a name list like \bibfield{author} or \bibfield{editor} if there are more than two names in the list. If there are only two names in the list, use the \cmd{finalnamedelim} instead. This command should be incorporated in all formatting directives for name lists. The default is a comma followed by an interword space.
 
@@ -12008,9 +12213,27 @@
 \csitem{multicitedelim}
 The delimiter printed between citations if multiple entry keys are passed to a single citation command. This command should be incorporated in the definition of all citation commands, for example in the \prm{sepcode} argument passed to \cmd{DeclareCiteCommand}. See \secref{aut:cbx:cbx} for details. The default is a semicolon plus an interword space.
 
+\csitem{multiciterangedelim}
+The delimiter printed between two citations if they are compressed to a range. The default is \cmd{bibrangedash}.
+
+\csitem{multicitesubentrydelim}
+The delimiter printed between subentry citations of the same set. This delimiter is only used in citation styles that reduce citations of the same set to a more compact form (\opt{subentry} of \texttt{numeric-comp}). The default is a comma.
+
+\csitem{multicitesubentryrangedelim}
+The delimiter printed between two citations of the same set if they are compressed to a range. The default is \cmd{multiciterangedelim}.
+
 \csitem{supercitedelim}
 Similar to \cmd{multinamedelim}, but intended for the \cmd{supercite} command only. The default is a comma.
 
+\csitem{superciterangedelim}
+Analogue of \cmd{multiciterangedelim} for \cmd{supercite}. The default is \cmd{bibrangedash}.
+
+\csitem{supercitesubentrydelim}
+Analogue of \cmd{multicitesubentrydelim} for \cmd{supercite}. The default is \cmd{supercitedelim}.
+
+\csitem{supercitesubentryrangedelim}
+Analogue of \cmd{multicitesubentryrangedelim} for \cmd{supercite}. The default is \cmd{superciterangedelim}.
+
 \csitem{compcitedelim}
 Similar to \cmd{multicitedelim}, but intended for citation styles that <compress> multiple citations, \ie print the author only once if subsequent citations share the same author etc. The default definition is a comma plus an interword space.
 
@@ -12664,6 +12887,7 @@
 
 \begin{ltxexample}
 \AtUsedriver{%
+  \delimcontext{bib}%
   \let\finentry\blx at finentry@usedrv
   \let\newblock\relax
   \let\abx at macro@bibindex\@empty
@@ -12753,8 +12977,74 @@
 
 Locally un-defines the internal hook specified by \cmd{AtNextCitekey}. This essentially defers the hook to the next entry key in the citation list, when executed in the \prm{precode} argument of \cmd{DeclareCiteCommand} (\secref{aut:cbx:cbx}).
 
+\cmditem{AtEveryEntrykey}{code}{success}{failure}
+
+Appends \prm{code} to an internal hook executed every time an entrykey is processed for a citation command or \cmd{nocite}. The \prm{code} is passed one argument (\lstinline{#1}), which contains the entrykey. If the code can be appended to the hook \prm{success} is executed, otherwise \prm{failure} is executed. Unlike \cmd{AtEveryCitekey} the entry data of the current entrykey is not available when \prm{code} is processed, indeed it is not even known whether or not there is any entry data at all.
+
 \end{ltxsyntax}
 
+\subsubsection{File hooks}
+\label{aut:fmt:hok:fil}
+\biblatex has rudimentary support for injecting arbitrary code before and after a file is loaded via file hooks. For files that are loaded using \biblatex's file interface---that includes all bibliography and citation styles---the following three hooks are available
+
+\begin{ltxsyntax}
+\cmditem{blx at filehook@preload@$<$filename with extension$>$}
+
+If \file{$<$filename with extension$>$} is found, this hook is exected before it is loaded.
+
+\cmditem{blx at filehook@postload@$<$filename with extension$>$}
+
+If \file{$<$filename with extension$>$} is found, this hook is exected after it is loaded.
+
+\cmditem{blx at filehook@failure@$<$filename with extension$>$}
+
+This hook is executed if \file{$<$filename with extension$>$} can not be found.
+\end{ltxsyntax}
+
+\biblatex generally only loads files once even if they were requested multiple times,
+so the hooks will only be executed once.
+Naturally, the file hooks need to be populated before the files are loaded, so the safest would be to populate them before \biblatex is loaded.
+It is advisable to only append code to avoid overwriting previous hook contents.
+Since the name of the file hook include the dot and the file extension they will usually have to be defined with a command like \cmd{csappto} from \sty{etoolbox}.
+
+The \file{.lbx} files are special and may have to be loaded several times in some situations.
+Their file hooks are
+
+\begin{ltxsyntax}
+\cmditem{blx at lbxfilehook@once at preload@$<$filename with extension$>$}
+
+If \file{$<$filename with extension$>$} is found, this hook is exected before it is loaded in a situation where the \file{.lbx} files are loaded only once.
+
+\cmditem{blx at lbxfilehook@once at postload@$<$filename with extension$>$}
+
+If \file{$<$filename with extension$>$} is found, this hook is exected after it is loaded in a situation where the \file{.lbx} files are loaded only once.
+
+\cmditem{blx at lbxfilehook@once at failure@$<$filename with extension$>$}
+
+This hook is executed if \file{$<$filename with extension$>$} can not be found in a situation where the \file{.lbx} files are loaded only once.
+
+\cmditem{blx at lbxfilehook@simple at preload@$<$filename with extension$>$}
+
+If \file{$<$filename with extension$>$} is found, this hook is exected before it is loaded in a situation where the \file{.lbx} files may be loaded multiple times.
+
+\cmditem{blx at lbxfilehook@simple at postload@$<$filename with extension$>$}
+
+If \file{$<$filename with extension$>$} is found, this hook is exected after it is loaded in a situation where the \file{.lbx} files may be loaded multiple times.
+
+\cmditem{blx at lbxfilehook@simple at failure@$<$filename with extension$>$}
+
+This hook is executed if \file{$<$filename with extension$>$} can not be found in a situation where the \file{.lbx} files may be loaded multiple times.
+\end{ltxsyntax}
+
+The following code sets up \sty{beamer} to print the bibliography labels instead of its bibliography icons when \file{numeric.bbx} after is loaded
+\begin{ltxexample}
+\csappto{blx at filehook@postload at numeric.bbx}{%
+  \mode<presentation>{%
+    \setbeamertemplate{bibliography item}{%
+      \insertbiblabel}}}
+\end{ltxexample}
+
+
 \subsection{Hints and Caveats}
 \label{aut:cav}
 
@@ -12860,7 +13150,7 @@
 
 \boolitem[false]{base}
 
-The \prm{namepart} is part of the <base> which is the main piece of namepart(s) information which is being disambiguated by uniqueness information. For example, a family name which may be disambiguated by further given names. <base> \prm{namepart}s must occur before any non-<base> \prm{nameparts}.
+The \prm{namepart} is part of the <base> which is the main piece of namepart(s) information which is being disambiguated by uniqueness information. For example, a family name which may be disambiguated by further given names. <base> \prm{namepart}s must occur before any non-<base> \prm{nameparts}. There \emph{must} be at least one <base> \prm{namepart} and \biber will report an error if this is not the case.
 
 \choitem{disambiguation}{none, init, initorfull, full}
 
@@ -13122,7 +13412,7 @@
 \subsubsection{Trackers in Floats and \acr{TOC}/\acr{LOT}/\acr{LOF}}
 \label{aut:cav:flt}
 
-If a citation is given in a float (typically in the caption of a figure or table), scholarly back references like <ibidem> or back references based on the page tracker get ambiguous because floats are objects which are (physically and logically) placed outside the flow of text, hence the logic of such references applies poorly to them. To avoid any such ambiguities, the citation and page trackers are temporarily disabled in all floats. In addition to that, these trackers plus the back reference tracker (\opt{backref}) are temporarily disabled in the table of contents, the list of figures, and the list of tables.
+If a citation is given in a float (typically in the caption of a figure or table), scholarly back references like <ibidem> or back references based on the page tracker get ambiguous because floats are objects which are (physically and logically) placed outside the flow of text, hence the logic of such references applies poorly to them. To avoid any such ambiguities, the citation and page trackers are temporarily disabled in all floats unless explicitly requested with \opt{trackfloats}. In addition to that, these trackers plus the back reference tracker (\opt{backref}) are temporarily disabled in the table of contents, the list of figures, and the list of tables.
 
 \subsubsection{Mixing Programming Interfaces}
 \label{aut:cav:mif}
@@ -14022,8 +14312,10 @@
 backrefstyle                      &\+&\+&\_&\_&\_&\_&\_\\
 bibencoding                       &\+&\+&\_&\_&\_&\_&\_\\
 bibstyle                          &\+&\_&\_&\_&\_&\_&\_\\
+bibtexcaseprotection              &\+&\+&\_&\+&\+&\_&\_\\
 bibwarn                           &\+&\+&\_&\_&\_&\_&\_\\
 block                             &\+&\+&\_&\_&\_&\_&\_\\
+casechanger                       &\+&\_&\_&\_&\_&\_&\_\\
 citecounter                       &\+&\+&\_&\_&\_&\_&\_\\
 citereset                         &\+&\+&\_&\_&\_&\_&\_\\
 citestyle                         &\+&\_&\_&\_&\_&\_&\_\\
@@ -14135,6 +14427,35 @@
 This revision history is a list of changes relevant to users of this package. Changes of a more technical nature which do not affect the user interface or the behavior of the package are not included in the list. More technical details are to be found in the \file{CHANGES.md} file. The numbers on the right indicate the relevant section of this manual.
 
 \begin{changelog}
+\begin{release}{3.15}{2020-08-16}
+\item Added \opt{starnocited} option to sourcemaps\see{aut:ctm:map}
+\item Added the \opt{glob} option to \cmd{addbibresource}\see{use:bib:res}
+\item Added \bibfield{eid} to more entry types\see{bib:typ:blx}
+\item Added \cmd{bibeidpunct}\see{use:fmt:fmt}
+\item Added \bibfield{issuetitleaddon} and \bibfield{journaltitleaddon}\see{bib:fld:dat}
+\item \texttt{numeric-comp} compresses \opt{subentry} set references now\see{use:opt:pre:bbx}
+\item Added \opt{subentrycomp} to \texttt{numeric-comp} style\see{use:opt:pre:bbx}
+\item Added \cmd{multiciterangedelim}, \cmd{multicitesubentrydelim},
+      \cmd{multicitesubentryrangedelim}, \cmd{superciterangedelim},
+      \cmd{supercitesubentrydelim}, \cmd{supercitesubentryrangedelim}%
+      \see{use:fmt:fmt}
+\item Implemented \opt{expl3} case changing functions\see{aut:aux:msc}
+\item Added \opt{casechanger} option\see{use:opt:ldt}
+\item Added \opt{bibtexcaseprotection} option\see{use:opt:pre:gen}
+\item Added \cmd{mautocite} and \cmd{Mautocite}\see{use:cit:mct}
+\item Added \opt{trackfloats} and \opt{backreffloats}\see{use:opt:pre:gen}
+\item Added \opt{block} option to \cmd{printbibliography} and friends\see{use:bib:bib}
+\item Added \cmd{NumsCheckSetup} and \cmd{PagesCheckSetup}\see{aut:aux:msc}
+\item Added \cmd{AtEveryEntrykey}\see{aut:fmt:hok}
+\item Added \cmd{ifdatesequal} and \cmd{ifdaterangesequal}\see{aut:aux:tst}
+\item Clarified \cmd{ifuniqueprimaryauthor} semantics\see{aut:aux:tst}
+\item Added \cmd{bibncpstring}, \cmd{bibncplstring} and \cmd{bibncpsstring}\see{aut:str}
+\item Added Lithuanian localisation (Valdemaras Klumbys)
+\item Added Serbian localisation (Andrej Radović)
+\item Added Turkish localisation (Abdulkerim Gok)
+\item Added file hooks\see{aut:fmt:hok:fil}
+\item Deprecated \cmd{ifkomabibtotoc} and \cmd{ifkomabibtotocnumbered}\see{use:cav:scr}
+\end{release}
 \begin{release}{3.14}{2019-12-01}
 \item Added new mapping verbs for citation sources\see{aut:ctm:map}
 \item Added documentation for new \biber granular \bibtype{xdata} functionality\see{use:use:xdat}

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/01-introduction-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/02-annotations-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/02-annotations-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys.tex	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys.tex	2020-08-20 21:11:51 UTC (rev 56143)
@@ -23,6 +23,7 @@
 %\usepackage[icelandic]{babel}
 %\usepackage[italian]{babel}
 %\usepackage[latvian]{babel}
+%\usepackage[lithuanian]{babel}
 %\usepackage[magyar]{babel}
 %\usepackage[norsk]{babel}
 %\usepackage[nynorsk]{babel}
@@ -32,6 +33,7 @@
 %\usepackage[slovene]{babel}
 %\usepackage[spanish]{babel}
 %\usepackage[swedish]{babel}
+%\usepackage[turkish, shorthands=:!]{babel}% avoid = becoming active
 % - UTF-8
 % -- Russian
 %\usepackage[T1,T2A]{fontenc}
@@ -452,7 +454,7 @@
 \keyitem{columns} The plural form of \texttt{column}.
 \keyitem{section} The term <section>, referring to a document division (usually abbreviated as \S).
 \keyitem{sections} The plural form of \texttt{section} (usually abbreviated as \S\S).
-\keyitem{paragraph} The term <paragraph> (\ie a block of text, not to be confused with \texttt{section}).
+\keyitem{paragraph} The term <paragraph> (\ie\ a block of text, not to be confused with \texttt{section}).
 \keyitem{paragraphs} The plural form of \texttt{paragraph}.
 \keyitem{verse} The term <verse> as used when referring to a work which is cited by verse numbers.
 \keyitem{verses} The plural form of \texttt{verse}.
@@ -464,7 +466,7 @@
 \keyitem{columntotals} The plural form of \texttt{columntotal}.
 \keyitem{sectiontotal} The term <section>, referring to a document division (usually abbreviated as \S),  as used in \cmd{mkpageprefix}.
 \keyitem{sectiontotals} The plural form of \texttt{sectiontotal} (usually abbreviated as \S\S).
-\keyitem{paragraphtotal} The term <paragraph> (\ie a block of text, not to be confused with \texttt{section}) as used in \cmd{mkpageprefix}.
+\keyitem{paragraphtotal} The term <paragraph> (\ie\ a block of text, not to be confused with \texttt{section}) as used in \cmd{mkpageprefix}.
 \keyitem{paragraphtotals} The plural form of \texttt{paragraphtotal}.
 \keyitem{versetotal} The term <verse> as used when referring to a work which is cited by verse numbers when used in \cmd{mkpageprefix}.
 \keyitem{versetotals} The plural form of \texttt{versetotal}.
@@ -600,14 +602,17 @@
 \keyitem{langjapanese} The language <Japanese>.
 \keyitem{langlatin} The language <Latin>.
 \keyitem{langlatvian} The language <Latvian>.
+\keyitem{langlithuanian} The language <Lithuanian>.
 \keyitem{langnorwegian} The language <Norwegian>.
 \keyitem{langpolish} The language <Polish>.
 \keyitem{langportuguese} The language <Portuguese>.
 \keyitem{langrussian} The language <Russian>.
+\keyitem{langserbian} The language <Serbian>.
 \keyitem{langslovak} The language <Slovak>.
 \keyitem{langslovene} The language <Slovene>.
 \keyitem{langspanish} The language <Spanish>.
 \keyitem{langswedish} The language <Swedish>.
+\keyitem{langturkish} The language <Turkish>.
 \keyitem{langukrainian} The language <Ukrainian>.
 \end{keylist}
 %
@@ -633,14 +638,17 @@
 \keyitem{fromjapanese} The expression <from [the] Japanese>.
 \keyitem{fromlatin} The expression <from [the] Latin>.
 \keyitem{fromlatvian} The expression <from [the] Latvian>.
+\keyitem{fromlithuanian} The expression <from [the] Lithuanian>.
 \keyitem{fromnorwegian} The expression <from [the] Norwegian>.
 \keyitem{frompolish} The expression <from [the] Polish>.
 \keyitem{fromportuguese} The expression <from [the] Portuguese>.
 \keyitem{fromrussian} The expression <from [the] Russian>.
+\keyitem{fromserbian} The expression <from [the] Serbian>.
 \keyitem{fromslovak} The expression <from [the] Slovak>.
 \keyitem{fromslovene} The expression <from [the] Slovene>.
 \keyitem{fromspanish} The expression <from [the] Spanish>.
 \keyitem{fromswedish} The expression <from [the] Swedish>.
+\keyitem{fromturkish} The expression <from [the] Turkish>.
 \keyitem{fromukrainian} The expression <from [the] Ukrainian>.
 \end{keylist}
 

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/04-delimiters-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/04-delimiters-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/10-references-per-section-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/11-references-by-section-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/11-references-by-section-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/12-references-by-segment-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/12-references-by-segment-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/13-references-by-keyword-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/14-references-by-category-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/15-references-by-type-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/18-numeric-hybrid-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/20-indexing-single-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/20-indexing-single-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/22-indexing-subentry-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/30-style-numeric-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp.tex	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp.tex	2020-08-20 21:11:51 UTC (rev 56143)
@@ -36,8 +36,32 @@
 in this example. If disabled, citations referring to a set member
 will point to the entire set, i.e., the above citations would
 come out as
+\begingroup\boolfalse{bbx:subentry}% don't try this at home
 \cite{stdmodel,set,stdmodel,set,companion}.
+\endgroup
 
+\subsection*{The \texttt{subentrycomp} option}
+
+The option \texttt{subentrycomp} controls whether or not citations
+to subentries of the same sets are compressed as well.
+It only becomes relevant if \texttt{subentry} is set to \texttt{true},
+with \texttt{subentry=false} it has no effect.
+If \texttt{subentrycomp} is enabled,
+subentries that belong to the same
+set are shown in a more compact form:
+\cite{glashow,herrmann,aksin,yoon,salam,companion}.
+
+If the option is disabled, subentries of sets are shown as in
+the \texttt{numeric} style:
+\begingroup\togglefalse{cbx:subentrycomp}% don't try this at home
+\cite{glashow,herrmann,aksin,yoon,salam,companion}.
+\endgroup
+
+This option is implemented for backwards compatibility,
+earlier versions of \texttt{biblatex} behaved like
+\texttt{subentrycomp=false}, current versions have
+\texttt{subentrycomp=true} enabled.
+
 \subsection*{Multiple citations}
 
 \cite{bertram,augustine}

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/32-style-numeric-verb-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/40-style-alphabetic-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/40-style-alphabetic-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/41-style-alphabetic-verb-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/50-style-authoryear-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/50-style-authoryear-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/51-style-authoryear-ibid-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/52-style-authoryear-comp-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/53-style-authoryear-icomp-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/60-style-authortitle-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/60-style-authortitle-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/61-style-authortitle-ibid-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/62-style-authortitle-comp-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/63-style-authortitle-icomp-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/64-style-authortitle-terse-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/65-style-authortitle-tcomp-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/66-style-authortitle-ticomp-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/70-style-verbose-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/71-style-verbose-ibid-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/72-style-verbose-note-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/73-style-verbose-inote-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/74-style-verbose-trad1-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/75-style-verbose-trad2-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/76-style-verbose-trad3-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/80-style-reading-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/81-style-draft-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/82-style-debug-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/92-bibliographylists-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/96-dates.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/examples/96-dates.tex	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/examples/96-dates.tex	2020-08-20 21:11:51 UTC (rev 56143)
@@ -19,10 +19,10 @@
 @misc{date2,
   note      = {Dates with circa and uncertain markers},
   author    = {Author2},
-  date      = {1723%},        % year with ETDF approximate (circa) and uncertainty markers
+  date      = {1723%},        % year with EDTF approximate (circa) and uncertainty markers
   origdate  = {1934-02~},      % year and month with circa marker
   eventdate = {1976?},         % year with uncertainty marker
-  urldate   = {1922~},         % year with ETDF approximate (circa) marker
+  urldate   = {1922~},         % year with EDTF approximate (circa) marker
 }
 @misc{date3,
   note      = {Date ranges},

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/97-annotations-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/biblatex-examples.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/examples/biblatex-examples.bib	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/examples/biblatex-examples.bib	2020-08-20 21:11:51 UTC (rev 56143)
@@ -25,19 +25,13 @@
 
 @set{set,
   entryset     = {herrmann,aksin,yoon},
-  annotation   = {A \texttt{set} with three members. The \texttt{crossref} field
-                  in the \texttt{@set} entry and the \texttt{entryset} field in
-                  each set member entry is needed only when using BibTeX as the
-                  backend},
+  annotation   = {A \texttt{set} with three members.},
 }
 
 @set{stdmodel,
   entryset     = {glashow,weinberg,salam},
   annotation   = {A \texttt{set} with three members discussing the standard
-                  model of particle physics. The \texttt{crossref} field
-                  in the \texttt{@set} entry and the \texttt{entryset} field in
-                  each set member entry is needed only when using BibTeX as the
-                  backend},
+                  model of particle physics.},
 }
 
 @article{aksin,

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -19,6 +19,8 @@
   \settoggle{bbx:related}{#1}}
 
 \ExecuteBibliographyOptions{isbn,url,doi,eprint,related}
+% @online url is shown even if url=false, globally
+\ExecuteBibliographyOptions[online]{url=true}
 
 \newbibmacro*{begentry}{}
 \newbibmacro*{finentry}{\finentry}
@@ -485,16 +487,8 @@
   \newunit\newblock
   \usebibmacro{date}%
   \newunit\newblock
-  \iftoggle{bbx:doi}
-    {\printfield{doi}}
-    {}%
+  \usebibmacro{doi+eprint+url}%
   \newunit\newblock
-  \iftoggle{bbx:eprint}
-    {\usebibmacro{eprint}}
-    {}%
-  \newunit\newblock
-  \usebibmacro{url+urldate}%
-  \newunit\newblock
   \usebibmacro{addendum+pubstate}%
   \setunit{\bibpagerefpunct}\newblock
   \usebibmacro{pageref}%
@@ -719,9 +713,7 @@
   \newunit\newblock
   \usebibmacro{location+date}%
   \newunit\newblock
-  \iftoggle{bbx:url}
-    {\usebibmacro{url+urldate}}
-    {}%
+  \usebibmacro{doi+eprint+url}%
   \newunit\newblock
   \usebibmacro{addendum+pubstate}%
   \setunit{\bibpagerefpunct}\newblock
@@ -808,7 +800,7 @@
   \printfield{volume}%
   \setunit*{\adddot}%
   \printfield{number}%
-  \setunit{\addcomma\space}%
+  \setunit{\bibeidpunct}%
   \printfield{eid}}
 
 \newbibmacro*{title+issuetitle}{%
@@ -895,6 +887,8 @@
 \newbibmacro*{chapter+pages}{%
   \printfield{chapter}%
   \setunit{\bibpagespunct}%
+  \printfield{eid}%
+  \setunit{\bibpagespunct}%
   \printfield{pages}%
   \newunit}
 

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.def	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.def	2020-08-20 21:11:51 UTC (rev 56143)
@@ -18,9 +18,9 @@
 % \namepart<namepart>i - e.g. \namepartfamilyi
 \def\do#1{%
   \csdef{mkbibname#1}##1{##1}%
-  \define at key{blx at opt@namepart}{#1}{\csdef{namepart#1}{##1}}%
-  \define at key{blx at opt@namepart}{#1i}{\csdef{namepart#1i}{##1}}%
-  \define at key{blx at opt@namepart}{#1un}{\csdef{namepart#1un}{##1}}}
+  \blx at kv@defkey{blx at opt@namepart}{#1}{\csdef{namepart#1}{##1}}%
+  \blx at kv@defkey{blx at opt@namepart}{#1i}{\csdef{namepart#1i}{##1}}%
+  \blx at kv@defkey{blx at opt@namepart}{#1un}{\csdef{namepart#1un}{##1}}}
 \expandafter\docsvlist\expandafter{\blx at datamodel@constant at nameparts}
 
 % legacy aliases
@@ -95,8 +95,17 @@
 \DeclareDelimFormat{andmoredelim}{\addspace}
 
 \newcommand*{\multicitedelim}{\addsemicolon\space}
+\newcommand*{\multicitesubentrydelim}{\addcomma}
+\newcommand*{\multiciterangedelim}{\bibrangedash}
+\newcommand*{\multicitesubentryrangedelim}{\multiciterangedelim}
+
 \newcommand*{\compcitedelim}{\addcomma\space}
+
 \newcommand*{\supercitedelim}{\addcomma}
+\newcommand*{\supercitesubentrydelim}{\supercitedelim}
+\newcommand*{\superciterangedelim}{\bibrangedash}
+\newcommand*{\supercitesubentryrangedelim}{\superciterangedelim}
+
 \DeclareDelimFormat{prenotedelim}{\addspace}
 \DeclareDelimFormat{postnotedelim}{\addcomma\space}
 \DeclareDelimAlias{multiprenotedelim}{prenotedelim}
@@ -168,6 +177,7 @@
 \newcommand*{\subtitlepunct}{\newunitpunct}
 \newcommand*{\intitlepunct}{\addcolon\space}
 \newcommand*{\bibpagespunct}{\addcomma\space}
+\newcommand*{\bibeidpunct}{\addcomma\space}
 \newcommand*{\bibpagerefpunct}{\addspace}
 \newcommand*{\revsdnamepunct}{\addcomma}
 \newcommand*{\bibnamedash}{%
@@ -238,6 +248,10 @@
 % want more visual separation, try the package option 'block=space'.
 % This will yield better results than \nonfrenchspacing.
 
+% If \frenchspacing is removed here, it may also have to be removed
+% from \blx at beglang@spacefactors, for example with
+% \let\blx at beglang@spacefactors\@empty
+
 % \citesetup is a generic hook for citations.
 
 \newcommand*{\citesetup}{%
@@ -462,7 +476,7 @@
 \DeclareFieldFormat{prenote}{#1\isdot}
 \DeclareFieldFormat{postnote}{\mkpageprefix[pagination][\mknormrange]{#1}}
 \DeclareFieldFormat{volcitevolume}{\bibstring{volume}\ppspace#1}
-\DeclareFieldFormat{volcitepages}{\mkpageprefix[pagination][\mknormrange]{#1}}
+\DeclareFieldAlias{volcitepages}{postnote}
 \DeclareFieldFormat{volcitenote}{\mkvolcitenote#1}
 \newrobustcmd*{\mkvolcitenote}[2]{%
   \printtext[volcitevolume]{#1}%
@@ -469,8 +483,8 @@
   \ifblank{#2}{}{\volcitedelim\printtext[volcitepages]{#2}}}
 
 % multicite commands
-\DeclareFieldFormat{multiprenote}{#1\isdot}
-\DeclareFieldFormat{multipostnote}{\mkpageprefix[pagination][\mknormrange]{#1}}
+\DeclareFieldAlias{multiprenote}{prenote}
+\DeclareFieldAlias{multipostnote}{postnote}
 
 % Used by \citeurl
 
@@ -1163,8 +1177,6 @@
 
 % The fallback used by \indexlist
 
-\DeclareIndexListWrapperFormat{default}{#1}
-
 \DeclareIndexListFormat{default}{\index{#1}}
 
 % ------------------------------------------------------------------
@@ -1176,8 +1188,6 @@
 
 % The fallback used by \indexnames
 
-\DeclareIndexNameWrapperFormat{default}{#1}
-
 \DeclareIndexNameFormat{default}{%
   \usebibmacro{index:name}
     {\index}
@@ -1227,7 +1237,7 @@
 \newbibmacro*{index:name}[5]{%
   \usebibmacro{index:entry}{#1}{\mkbibindexname{#2}{#3}{#4}{#5}}}
 
-% {<family name>}{<given name>}{<given initials>}{<family name prefix>}
+% {<family name>}{<given name>}{<prefix>}{<suffix>}
 \newcommand*{\mkbibindexname}[4]{%
   \ifuseprefix
     {\ifdefvoid{#3}{}{#3 }%
@@ -1715,6 +1725,7 @@
 \DeclareDataInheritance{periodical}{article,suppperiodical}{%
   \inherit{title}{journaltitle}
   \inherit{subtitle}{journalsubtitle}
+  \inherit{titleaddon}{journaltitleaddon}
   \noinherit{shorttitle}
   \noinherit{sorttitle}
   \noinherit{indextitle}
@@ -2344,7 +2355,7 @@
 \newbibmacro*{multipostnote}{%
   \iffieldundef{multipostnote}
     {}
-    {\printdelim{multipostnotedelim}
+    {\printdelim{multipostnotedelim}%
      \printfield{multipostnote}}}
 
 % ------------------------------------------------------------------
@@ -2824,6 +2835,9 @@
      \newunit}%
   \printfield{maintitleaddon}}
 
+% The \iffieldundef{journaltitleaddon} is usually not necessary.
+% We need it to ensure that a \setunit* after this macro does the right thing
+% for backwards compatibility.
 \newbibmacro*{journal}{%
   \ifboolexpr{
     test {\iffieldundef{journaltitle}}
@@ -2834,8 +2848,14 @@
     {\printtext[journaltitle]{%
        \printfield[titlecase]{journaltitle}%
        \setunit{\subtitlepunct}%
-       \printfield[titlecase]{journalsubtitle}}}}
+       \printfield[titlecase]{journalsubtitle}}%
+     \newunit}%
+  \iffieldundef{journaltitleaddon}
+    {}
+    {\printfield{journaltitleaddon}}}
 
+% Re \iffieldundef{titleaddon} see the comment about
+% \iffieldundef{journaltitleaddon} above.
 \newbibmacro*{periodical}{%
   \ifboolexpr{
     test {\iffieldundef{title}}
@@ -2846,7 +2866,11 @@
     {\printtext[title]{%
        \printfield[titlecase]{title}%
        \setunit{\subtitlepunct}%
-       \printfield[titlecase]{subtitle}}}}
+       \printfield[titlecase]{subtitle}}%
+     \newunit}%
+  \iffieldundef{titleaddon}
+    {}
+    {\printfield{titleaddon}}}
 
 \newbibmacro*{issue}{%
   \ifboolexpr{
@@ -2858,11 +2882,13 @@
     {\printtext[issuetitle]{%
        \printfield[titlecase]{issuetitle}%
        \setunit{\subtitlepunct}%
-       \printfield[titlecase]{issuesubtitle}}}}
+       \printfield[titlecase]{issuesubtitle}}%
+     \newunit}%
+  \printfield{issuetitleaddon}}
 
 \newbibmacro*{in:}{%
-  \printtext{%
-    \bibstring{in}\intitlepunct}}
+  \bibstring{in}%
+  \printunit{\intitlepunct}}
 
 \newbibmacro*{date}{\printdate}
 
@@ -2900,9 +2926,12 @@
     {\printfield[eprint:\strfield{eprinttype}]{eprint}}}
 
 \newbibmacro*{annotation}{%
+  \begingroup
+  \togglefalse{blx at bibliography}%
   \iffieldundef{annotation}
     {\printfile[annotation]{\bibannotationprefix\thefield{entrykey}.tex}}
-    {\printfield{annotation}}}
+    {\printfield{annotation}}%
+  \endgroup}
 
 \newbibmacro*{abstract}{%
   \iffieldundef{abstract}
@@ -2926,7 +2955,7 @@
        \ifbibmacroundef{date+extradate}
          {}
          {\renewbibmacro*{date+extradate}{}%
-          \renewbibmacro*{date}{\printdate}}%
+          \renewbibmacro*{bbx:ifmergeddate}{\@secondoftwo}}%
        \renewbibmacro*{pageref}{}}
       {\thefield{entrytype}}}}
 

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.sty	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.sty	2020-08-20 21:11:51 UTC (rev 56143)
@@ -12,8 +12,8 @@
 % particular purpose.
 
 % Set up the version strings here
-\def\abx at date{2019/12/01}
-\def\abx at version{3.14}
+\def\abx at date{2020/08/19}
+\def\abx at version{3.15}
 \def\abx at bbxid{\abx at date\space v\abx at version\space biblatex bibliography style (PK/MW)}
 \def\abx at cbxid{\abx at date\space v\abx at version\space biblatex citation style (PK/MW)}
 \def\abx at lbxid{\abx at date\space v\abx at version\space biblatex localization (PK/MW)}
@@ -53,6 +53,39 @@
    \endinput}
 
 
+% generalised keyval interface
+% define a new key (possibly with a default value)
+% {<family>}{<key>}[<default>]{<code>}
+\providerobustcmd*{\blx at kv@defkey}{\define at key}
+
+% globally define new key (should only be the last resort)
+% {<family>}{<key>}[<default>]{<code>}
+\providerobustcmd*{\blx at kv@gdefkey}[2]{%
+  \@ifnextchar[%
+    {\blx at kv@gdefkey at default{#1}{#2}}
+    {\blx at kv@gdefkey at nodefault{#1}{#2}}}
+
+\ifundef\blx at kv@gdefkey at nodefault
+  {\protected\def\blx at kv@gdefkey at nodefault#1#2{\csgdef{KV@#1@#2}##1}}
+  {}
+\ifundef\blx at kv@gdefkey at default
+  {\protected\def\blx at kv@gdefkey at default#1#2[#3]{%
+     \csgdef{KV@#1@#2 at default}{\csuse{KV@#1@#2}{#3}}%
+     \csgdef{KV@#1@#2}##1}}
+  {}
+
+% test if key is undefined
+% {<family>}{<key>}{<true>}{<false>}
+\providecommand*{\blx at kv@ifkeyundef}[2]{%
+  \ifcsundef{KV@#1@#2}}
+
+% undefine key
+% {<family>}{<key>}
+\providerobustcmd*{\blx at kv@undef}[2]{\csundef{KV@#1@#2}}
+
+% {<family>}{<key-vals>}
+\providerobustcmd*{\blx at kv@setkeys}{\setkeys}
+
 %% Category codes
 
 \def\blx at docatcodes{%
@@ -180,12 +213,12 @@
          {'polyglossia' loaded after biblatex}
          {'polyglossia' must be loaded before biblatex}}
        {}%
-     \@ifpackagelater{polyglossia}{2019/10/27}
+     \@ifpackagelater{polyglossia}{2020/04/08}
        {}
        {\blx at warning@noline
-          {biblatex works best with 'polyglossia' 1.45\MessageBreak
+          {biblatex works best with 'polyglossia' 1.49\MessageBreak
            or above.\MessageBreak
-           Please update 'polyglossia' to v1.45 (2019/10/27)\MessageBreak
+           Please update 'polyglossia' to v1.49 (2020/04/08)\MessageBreak
            or later.\MessageBreak
            Variant detection will not work properly with\MessageBreak
            older versions}}}
@@ -361,11 +394,19 @@
           {}}
        {}}
     {}%
-  \apptocmd\@floatboxreset
-    {\boolfalse{citetracker}%
-     \boolfalse{pagetracker}}
+  \iftoggle{blx at trackfloats}
     {}
-    {\blx at err@patch{floats}}%
+    {\apptocmd\@floatboxreset
+       {\boolfalse{citetracker}%
+        \boolfalse{pagetracker}}
+       {}
+       {\blx at err@patch{floats}}}%
+  \iftoggle{blx at backreffloats}
+    {}
+    {\apptocmd\@floatboxreset
+       {\boolfalse{backtracker}}
+       {}
+       {\blx at err@patch{floats}}}%
   \ifdef\TX at endtabularx % tabularx/memoir
     {\pretocmd\TX at endtabularx
       {\addtocounter{tabx at nest}{1}}% track nested tabularx environments
@@ -501,8 +542,13 @@
   \iftoggle{blx at autolangcite}
     {\let\blx at beglangcite\blx at beglang}
     {}%
+  % babel/polyglossia has loaded the (main document) language already,
+  % so we need to explicitly enable our captions (abx at strings@)
+  % and extras (abx at extras@) now
+  \toggletrue{blx at lang@captions@\blx at languagename}%
   \csuse{abx at extras@\blx at languagename}%
   \csuse{abx at strings@\blx at languagename}%
+  % avoid accidental re-initialization
   \undef\blx at mkautolangbabel
   \undef\blx at mkautolangpoly
   \undef\blx at mknoautolang
@@ -515,26 +561,35 @@
      {}%
 }
 
+% our copy of \addtocontents with \immediate (not @protected,
+% so a bit different, but we are only going to use it for very
+% specific input, so that doesn't matter)
+\def\blx at immediate@addtocontents#1#2{%
+  \blx at auxwrite\@auxout
+    {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble}%
+    {\string\@writefile{#1}{#2}}}
 
-\begingroup
-\@makeother\#
-% \relax: gobble newline -> titletoc.sty
-\AtEndPreamble{%
-  \addtocontents{toc}{%
+\AtBeginDocument{%
+  \blx at immediate@addtocontents{toc}{%
      \boolfalse{citerequest}%
      \boolfalse{citetracker}%
      \boolfalse{pagetracker}%
      \boolfalse{backtracker}\relax}%
-  \addtocontents{lof}{%
+  \blx at immediate@addtocontents{lof}{%
      \boolfalse{citerequest}%
      \boolfalse{citetracker}%
      \boolfalse{pagetracker}%
      \boolfalse{backtracker}\relax}%
-  \addtocontents{lot}{%
+  \blx at immediate@addtocontents{lot}{%
      \boolfalse{citerequest}%
      \boolfalse{citetracker}%
      \boolfalse{pagetracker}%
-     \boolfalse{backtracker}\relax}%
+     \boolfalse{backtracker}\relax}}
+
+\begingroup
+\@makeother\#
+% \relax: gobble newline -> titletoc.sty
+\AtEndPreamble{%
   \patchcmd\addtocontents
     {\string\@writefile}
     {\string\@writefile{#1}{\defcounter{refsection}{\the\c at refsection}\relax}%
@@ -543,6 +598,7 @@
     {\blx at err@patch{\string\addtocontents}}}
 \endgroup
 
+
 % trick hyperref into believing we're natbib
 \let\NAT at parse\@empty
 % trick showkeys into believing we're havard
@@ -576,10 +632,52 @@
 \ifundef\pdf at mdfivesum
   {\let\blx at mdfivesum\@firstofone
    \blx at warning@noline{Command '\string\pdf at mdfivesum' undefined.\MessageBreak
-     'labelprefix' may not be able to accept all input}}
+     'labelprefix' may not be able to accept all input.\MessageBreak
+     The command is available (via 'pdftexcmds')\MessageBreak
+     in recent versions of pdfTeX, LuaTeX and XeTeX}}
   {\let\blx at mdfivesum\pdf at mdfivesum}
 
 
+\ifundef\pdf at filemdfivesum
+  {\blx at warning@noline{Command '\string\pdf at filemdfivesum' undefined.\MessageBreak
+     Biber rerun detection may not work as expected.\MessageBreak
+     The command is available (via 'pdftexcmds')\MessageBreak
+     in recent versions of pdfTeX, LuaTeX and XeTeX}%
+   \let\blx at generate@bbl at mdfivesum@found\relax
+   \let\blx at generate@bbl at mdfivesum@notfound\relax
+   \let\blx at aux@read at bbl@mdfivesum\@gobble
+   \let\blx at aux@write at bbl@mdfivesum\relax
+   \let\blx at check@bbl at rerun@mdfivesum\relax}
+  {\let\blx at filemdfivesum\pdf at filemdfivesum
+
+   \def\blx at generate@bbl at mdfivesum@found{%
+     \xdef\blx at bbl@mdfivesum at new{\blx at filemdfivesum{\jobname.bbl}}}
+
+   \def\blx at generate@bbl at mdfivesum@notfound{%
+     \gdef\blx at bbl@mdfivesum at new{nobblfile}}
+
+   \def\blx at aux@read at bbl@mdfivesum{%
+     \gdef\blx at bbl@mdfivesum at old}
+
+   % If we need Biber to rerun, save the hash of the current .bbl.
+   % That way we can detect if the Biber rerun really happened when
+   % we run LaTeX the next time.
+   \def\blx at aux@write at bbl@mdfivesum{%
+     \iftoggle{blx at runbiber}
+       {\blx at auxwrite\@mainaux{}{%
+          \string\blx at aux@read at bbl@mdfivesum{\blx at bbl@mdfivesum at new}}}
+       {}}
+
+   % There was a Biber rerun request last time (\blx at bbl@mdfivesum at old),
+   % yet the bbl files are the same (as far as md5 hashes are concerned),
+   % that means *no* Biber rerun happened.
+   % So we need to re-request a rerun.
+   \def\blx at check@bbl at rerun@mdfivesum{%
+     \ifdefstrequal\blx at bbl@mdfivesum at old\blx at bbl@mdfivesum at new
+       {\blx at logreq@active{}}
+       {}}}
+
+
 % xstring replacements
 
 % reverse a given string
@@ -712,6 +810,7 @@
 \newcount\blx at parenlevel@foot
 \expandafter\newcount\csname blx at sectionciteorder@0\endcsname
 \newcount\blx at entrysetcounter
+\newcount\blx at biblioinstance
 
 \def\blx at uniquename{false}
 \def\blx at uniquelist{false}
@@ -1087,10 +1186,15 @@
     {\blx at info@noline{Trying to load #2..}%
      \IfFileExists{#1}
        {\blx at info@noline{... file '#1' found}%
-        #3\@@input\@filef at und#4#5%
+        \csuse{blx at filehook@preload@#1}%
+        #3\@@input\@filef at und#4%
+        \csuse{blx at filehook@postload@#1}%
+        #5%
         \listxadd\blx at list@req at stat{#1}%
         \@addtofilelist{#1}}
-       {\blx at info@noline{... file '#1' not found}#6}%
+       {\blx at info@noline{... file '#1' not found}%
+        \csuse{blx at filehook@failure@#1}%
+        #6}%
      \global\cslet{blx at file@#1}\@empty}
     {#5}}
 
@@ -1151,21 +1255,23 @@
   \detokenize{" xmlns:bcf="https://sourceforge.net/projects/biblatex">}}
 
 % {<true>}{<false>}
-\newrobustcmd*{\lbx at ifutfinput}{\ifboolexpr{%
-  test {\ifdefstring\inputencodingname{utf8}}
-  or
-  test {\ifdefstring\inputencodingname{utf8x}}
-  or
-  test {\ifdefstring\inputencodingname{lutf8}}
-  or
-  ( test {\ifundef\inputencodingname}
-    and
-    ( not test {\ifundef\XeTeXrevision}
-      or
-      not test {\ifundef\luatexversion}
+\newrobustcmd*{\lbx at ifutfinput}{%
+  \ifboolexpr{%
+    test {\ifdefstring\inputencodingname{utf8}}
+    or
+    test {\ifdefstring\inputencodingname{utf8x}}
+    or
+    test {\ifdefstring\inputencodingname{lutf8}}
+    or
+    ( test {\ifundef\inputencodingname}
+      and
+      ( not test {\ifundef\XeTeXrevision}
+        or
+        not test {\ifundef\luatexversion}
+      )
     )
-  )
-}}
+  }%
+}
 
 %% More user feedback
 \protected\def\blx at warning@entry#1{%
@@ -1320,7 +1426,7 @@
 
 \protected\def\blx at warn@nostring#1{%
   \blx at warning@entry{Bibliography string '#1'
-                     \ifcsundef{KV at blx@lbx@#1}{undefined}{untranslated}}%
+                     \blx at kv@ifkeyundef{blx at lbx}{#1}{undefined}{untranslated}}%
   \abx at missing{#1}}
 
 \def\blx at warn@conflopt#1{%
@@ -1459,6 +1565,7 @@
   \global\toggletrue{blx at runbiber}%
   \global\let\blx at rerun@biber\relax}
 
+
 \let\blx at checksum@old\@empty
 \let\blx at checksum@new\@empty
 \let\blx at pagesum@old\@empty
@@ -1511,14 +1618,10 @@
   \endgroup}
 
 \def\blx at warn@auxlist{%
-  \begingroup
-  \edef\blx at tempa{%
+  \blx at warning@noline{%
     Please (re)run Biber on the file:\MessageBreak
-    \jobname}%
-  \blx at warning@noline{%
-    \blx at tempa\MessageBreak
-    and rerun LaTeX afterwards}%
-  \endgroup}
+    \jobname\MessageBreak
+    and rerun LaTeX afterwards}}
 
 \AfterEndDocument{%
   \blx at check@rerun
@@ -1603,6 +1706,12 @@
   \sfcode`\?=3002
 }
 
+\def\abx at dosingleaccents{%
+  \do\"\do\'\do\`\do\^\do\~\do\=\do\.%
+  \do\H\do\b\do\c\do\d\do\r\do\u\do\v}
+\def\abx at dodoubleaccents{%
+  \do\t}
+
 % Defining characters that count as prefices in names like d'Argent
 % Code from moewe
 \let\blx at prefchars\@empty
@@ -1909,7 +2018,7 @@
 \newrobustcmd*{\autocap}[1]{#1}
 
 \protected\def\blx at imc@autocap{%
-  \blx at imc@ifcapital\MakeUppercase\@firstofone}
+  \blx at imc@ifcapital\MakeCapital\@firstofone}
 
 \protected\def\blx at imc@nopunct{%
   \leavevmode\spacefactor\blx at sf@nopunct}
@@ -2055,8 +2164,15 @@
 \providerobustcmd*{\nohyphenation}{%
   \language\blx at langwohyphens}
 
-\providerobustcmd*{\textnohyphenation}[1]{%
-  \bgroup\nohyphenation#1\egroup}
+% work around odd XeTeX/babel-french behaviour
+% https://github.com/plk/biblatex/issues/979
+% fix by Ulrike Fischer
+% https://tex.stackexchange.com/a/544914/
+\ifundef\XeTeXrevision
+  {\providerobustcmd*{\textnohyphenation}[1]{%
+     \bgroup\nohyphenation#1\egroup}}
+  {\providerobustcmd*{\textnohyphenation}[1]{%
+     \bgroup\nohyphenation#1\egroup^^^^200b}}
 
 \blx at regimcs{%
   \setpunctfont \resetpunctfont \ifcapital \autocap \ifpunctmark
@@ -2447,17 +2563,26 @@
     {\@secondoftwo}
     {\ifcsundef{abx at name@#2}
        {\@secondoftwo}
-       {\blx at ifnamesequal{#1}{#2}}}}
+       {\blx at ifnamesequalcscs{abx at name@#1}{abx at name@#2}}}}
 
-\def\blx at ifnamesequal#1#2{%
+\def\blx at ifnamesequalcscs#1#2{%
+  \expandafter\expandafter\expandafter\blx at ifnamesequaldefdef
+  \expandafter\expandafter\expandafter{%
+    \expandafter\csname\expandafter #1\expandafter\endcsname
+  \expandafter}%
+  \expandafter{\csname #2\endcsname}}
+
+\def\blx at ifnamesequalcsdef#1#2{%
+  \expandafter\blx at ifnamesequaldefdef\expandafter{%
+    \csname #1\endcsname}{#2}}
+
+\def\blx at ifnamesequaldefdef#1#2{%
   \begingroup
   \let\blx at tempa\@empty
-  \expandafter\expandafter
-  \expandafter\blx at ifnamesequal@i\csname abx at name@#2\endcsname
+  \expandafter\blx at ifnamesequal@i#2%
   \let\blx at tempb\blx at tempa
   \let\blx at tempa\@empty
-  \expandafter\expandafter
-  \expandafter\blx at ifnamesequal@i\csname abx at name@#1\endcsname
+  \expandafter\blx at ifnamesequal@i#1%
   \expandafter\endgroup
   \ifx\blx at tempa\blx at tempb
     \expandafter\@firstoftwo
@@ -2477,47 +2602,39 @@
 % These explicit nameparts are alright as they are for bibtex only
 % biber names will always have a hash generated from all nameparts in datamodel
 \def\blx at ifnamesequal@iii#1#2{%
-  \setkeys{blx at opt@name}{#1}%
-  \setkeys{blx at opt@namepart}{#2}%
+  \blx at kv@setkeys{blx at opt@name}{#1}%
+  \blx at kv@setkeys{blx at opt@namepart}{#2}%
   \ifdef\abx at field@hash
     {\eappto\blx at tempa{{\abx at field@hash}}}
     {\eappto\blx at tempa{{{\namepartfamily}{\namepartgiven}{\namepartprefix}{\namepartsuffix}}}}}
 
-% {<field>}{<macro>}{<true>}{<false>}
-\def\blx at imc@iffieldequals#1#2{%
-  \blx at imc@iffieldundef{#1}
+% {<csname>}{<def>}{<true>}{<false>}
+\newcommand*{\blx at ifcsdefequal}[2]{%
+  \ifcsundef{#1}
     {\@secondoftwo}
     {\ifundef#2%
        {\@secondoftwo}
-       {\expandafter\ifx\csname abx at field@#1\endcsname#2%
+       {\expandafter\ifx\csname#1\endcsname#2%
           \expandafter\@firstoftwo
         \else
           \expandafter\@secondoftwo
         \fi}}}
 
+% {<field>}{<macro>}{<true>}{<false>}
+\def\blx at imc@iffieldequals#1#2{%
+  \blx at ifcsdefequal{abx at field@#1}{#2}}
+
 % {<plainlist>}{<macro>}{<true>}{<false>}
 \def\blx at imc@iflistequals#1#2{%
-  \blx at imc@iflistundef{#1}
-    {\@secondoftwo}
-    {\ifundef#2%
-       {\@secondoftwo}
-       {\expandafter\ifx\csname abx at list@#1\endcsname#2%
-          \expandafter\@firstoftwo
-        \else
-          \expandafter\@secondoftwo
-        \fi}}}
+  \blx at ifcsdefequal{abx at list@#1}{#2}}
 
 % {<namelist>}{<macro>}{<true>}{<false>}
-\def\blx at imc@ifnameequals#1#2{% FIXME
+\def\blx at imc@ifnameequals#1#2{%
   \blx at imc@ifnameundef{#1}
     {\@secondoftwo}
     {\ifundef#2%
        {\@secondoftwo}
-       {\expandafter\ifx\csname abx at name@#1\endcsname#2%
-          \expandafter\@firstoftwo
-        \else
-          \expandafter\@secondoftwo
-        \fi}}}
+       {\blx at ifnamesequalcsdef{abx at name@#1}{#2}}}}
 
 % {<field>}{<csname>}{<true>}{<false>}
 \def\blx at imc@iffieldequalcs#1{%
@@ -2528,8 +2645,12 @@
   \ifcsequal{abx at list@#1}}
 
 % {<namelist>}{<csname>}{<true>}{<false>}
-\def\blx at imc@ifnameequalcs#1{% FIXME
-  \ifcsequal{abx at name@#1}}
+\def\blx at imc@ifnameequalcs#1#2{%
+  \blx at imc@ifnameundef{#1}
+    {\@secondoftwo}
+    {\ifcsundef{#2}
+       {\@secondoftwo}
+       {\blx at ifnamesequalcscs{abx at name@#1}{#2}}}}
 
 % {<field>}{<string>}{<true>}{<false>}
 \protected\long\def\blx at imc@iffieldequalstr#1#2{%
@@ -2671,17 +2792,25 @@
           \expandafter\@secondoftwo
         \fi}}}
 
+
 % {<true>}{<false>}
+%\def\blx at imc@iffirstcitekey{%
+%  \ifboolexpr{ ( test {\ifnumequal\c at multicitetotal\z@}
+%                 and test {\ifnumequal\c at citecount\@ne} )
+%    or ( test {\ifnumgreater\c at multicitetotal\z@}
+%         and test {\ifnumequal\c at multicitecount\@ne}
+%         and test {\ifnumequal\c at citecount\@ne} ) }}
 \def\blx at imc@iffirstcitekey{%
-  \ifboolexpr{ ( test {\ifnumequal\c at multicitetotal\z@}
-                 and test {\ifnumequal\c at citecount\@ne} )
-    or ( test {\ifnumgreater\c at multicitetotal\z@}
-         and test {\ifnumequal\c at multicitecount\@ne}
-         and test {\ifnumequal\c at citecount\@ne} ) }}
+  \ifnumequal\c at citecount\@ne
+    {\ifnumequal\c at multicitetotal\z@
+       {\@firstoftwo}
+       {\ifnumequal\c at multicitecount\@ne}}
+    {\@secondoftwo}}
 
 \def\blx at imc@iflastcitekey{%
-  \ifboolexpr{ test {\ifnumequal\c at citecount\c at citetotal}
-               and test {\ifnumequal\c at multicitecount\c at multicitetotal} }}
+  \ifnumequal\c at citecount\c at citetotal
+    {\ifnumequal\c at multicitecount\c at multicitetotal}
+    {\@secondoftwo}}
 
 % {<category>}{<true>}{<false>}
 \protected\def\blx at imc@ifcategory{%
@@ -2970,7 +3099,7 @@
   \begingroup
   \def\do##1{\uccode`##1=`\%}%
   \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9%
-  \makeatletter
+  \catcode`\@=11
   \catcode`\%=9
   \endlinechar\m at ne
   \uppercase{\scantokens{\def\blx at tempa{#1}}}%
@@ -3007,7 +3136,7 @@
   \ifx\blx at tempa\@empty
     \aftergroup\@secondoftwo
   \else
-    \makeatletter
+    \catcode`\@=11
     \catcode`\%=9
     \endlinechar\m at ne
     \everyeof{\noexpand}#1%
@@ -3157,6 +3286,12 @@
 \newrobustcmd*{\NumCheckSetup}{\appto\blx at hook@ifnum}
 \newcommand*{\NumcheckSetup}{\NumCheckSetup}
 
+\newrobustcmd*{\NumsCheckSetup}{\appto\blx at hook@ifnums}
+
+\newrobustcmd*{\PagesCheckSetup}{\appto\blx at hook@ifpages}
+
+\PagesCheckSetup{\let\pnfmt\@firstofone}
+
 % [<pagination>][<postpro>]{<string>}
 \newrobustcmd*{\blx at imc@mkpageprefix}[1][pagination]{%
   \begingroup
@@ -3180,7 +3315,7 @@
        {\bibstring{#1s}\ppspace}
        {\def\pno{\bibstring{#1}}%
         \def\ppno{\bibstring{#1s}}}}%
-  \blx at mkpageprefix@i[#2]{#3}}
+  \blx at mkpageprefix@i[{#2}]{#3}}
 
 \long\def\blx at mkpageprefix@i[#1]#2{#1{#2}\endgroup}
 
@@ -3243,7 +3378,7 @@
   \@ifnextchar[{\blx at range@aux at i#1}{#1[\@firstofone][\@firstofone]}}
 
 \def\blx at range@aux at i#1[#2]{%
-  \@ifnextchar[{#1[#2]}{#1[#2][\@firstofone]}}
+  \@ifnextchar[{#1[{#2}]}{#1[{#2}][\@firstofone]}}
 
 \def\blx at normrange@i[#1][#2]#3{%
   \let\blx at tempa\@empty
@@ -3301,9 +3436,9 @@
 
 % Unicode en-dashes are supported in blx-unicode.def
 \def\blx at genrange@split#1{%
-  \edef\blx at normrange@abort{%
+  \protected at edef\blx at normrange@abort{%
     \blx at range@out at value{%
-      \expandonce\blx at range@out at item@process{\unexpanded{#1}}}}%
+      \blx at range@out at item@process{\unexpanded{#1}}}}%
   \blx at imc@ifpages{#1}
     {\blx at normrange@range#1\bibrangedash\bibrangedash&}
     {\blx at normrange@abort}}
@@ -3313,17 +3448,17 @@
     {\blx at normrange@hyphen#1--&}
     {\ifblank{#2}
        {\begingroup
-        \edef\blx at tempc{\endgroup
+        \protected at edef\blx at tempc{\endgroup
           \blx at range@out at value{%
-            \expandonce\blx at range@out at item@process{\unexpanded{#1}}%
+            \blx at range@out at item@process{\unexpanded{#1}}%
             \noexpand\bibrangedash}}%
         \blx at tempc}
        {\ifblank{#1}
           {\begingroup
-           \edef\blx at tempc{\endgroup
+           \protected at edef\blx at tempc{\endgroup
              \blx at range@out at value{%
                \noexpand\bibrangedash
-               \expandonce\blx at range@out at item@process{%
+               \blx at range@out at item@process{%
                  \unexpanded{#2}}}}%
            \blx at tempc}
           {\blx at range@process{#1}{#2}}}}}
@@ -3338,10 +3473,10 @@
         \blx at normrange@hyphen at i#3&}
        {\ifblank{#1}
           {\begingroup
-           \edef\blx at tempc{\endgroup
+           \protected at edef\blx at tempc{\endgroup
              \blx at range@out at value{%
                \noexpand\bibrangedash
-               \expandonce\blx at range@out at item@process{%
+               \blx at range@out at item@process{%
                  \unexpanded{#2}}}}%
            \blx at tempc}
           {\blx at range@process{#1}{#2}}}}}
@@ -3349,18 +3484,18 @@
 \def\blx at normrange@hyphen at i#1-#2&{%
   \ifblank{#1#2}
     {\begingroup
-     \edef\blx at tempc{\endgroup
+     \protected at edef\blx at tempc{\endgroup
        \blx at range@out at value{%
-         \expandonce\blx at range@out at item@process{\expandonce\blx at tempb}%
+         \blx at range@out at item@process{\expandonce\blx at tempb}%
          \noexpand\bibrangedash}}%
      \blx at tempc}
     {\notblank{#1}
        {\ifdefempty\blx at tempb
           {\begingroup
-           \edef\blx at tempc{\endgroup
+           \protected at edef\blx at tempc{\endgroup
              \blx at range@out at value{%
                \noexpand\bibrangedash
-               \expandonce\blx at range@out at item@process{%
+               \blx at range@out at item@process{%
                  \unexpanded{#1}}}}%
            \blx at tempc}
           {\expandafter\blx at range@process
@@ -3369,11 +3504,11 @@
 
 \def\blx at normrange@process#1#2{%
   \begingroup
-  \edef\blx at tempc{\endgroup
+  \protected at edef\blx at tempc{\endgroup
     \blx at range@out at value{%
-      \expandonce\blx at range@out at item@process{\unexpanded{#1}}%
+      \blx at range@out at item@process{\unexpanded{#1}}%
       \noexpand\bibrangedash
-      \expandonce\blx at range@out at item@process{\unexpanded{#2}}}}%
+      \blx at range@out at item@process{\unexpanded{#2}}}}%
   \blx at tempc}
 
 % <*>[<postpro>]{<string>}
@@ -3414,11 +3549,11 @@
     {\@secondoftwo}
     {\blx at comprange@comp{#1}{#2}}
     {\begingroup
-     \edef\blx at tempc{\endgroup
+     \protected at edef\blx at tempc{\endgroup
        \blx at range@out at value{%
-         \expandonce\blx at range@out at item@process{\unexpanded{#1}}%
+         \blx at range@out at item@process{\unexpanded{#1}}%
          \noexpand\bibrangedash
-         \expandonce\blx at range@out at item@process{\unexpanded{#2}}}}%
+         \blx at range@out at item@process{\unexpanded{#2}}}}%
      \blx at tempc}}
 
 \def\blx at comprange@comp#1#2{%
@@ -3450,11 +3585,11 @@
     \numdef\blx at tempc\blx at tempd
   \fi
   \begingroup
-  \edef\blx at tempb{\endgroup
+  \protected at edef\blx at tempb{\endgroup
     \blx at range@out at value{%
-      \expandonce\blx at range@out at item@process{\blx at tempb}%
+      \blx at range@out at item@process{\blx at tempb}%
       \noexpand\bibrangedash
-      \expandonce\blx at range@out at item@process{\blx at tempc}}}%
+      \blx at range@out at item@process{\blx at tempc}}}%
   \blx at tempb}
 
 \def\blx at comprange@comp at div{%
@@ -3508,9 +3643,9 @@
 
 % Unicode en-dashes are supported in blx-unicode.def
 \def\blx at firstpage@split#1{%
-  \edef\blx at firstpage@abort{%
+  \protected at edef\blx at firstpage@abort{%
     \blx at range@out at value{%
-      \expandonce\blx at range@out at item@process{\unexpanded{#1}}}}%
+      \blx at range@out at item@process{\unexpanded{#1}}}}%
   \blx at firstpage@range#1\bibrangedash\bibrangedash&}
 
 \def\blx at firstpage@range#1\bibrangedash#2\bibrangedash#3&{%
@@ -3518,15 +3653,15 @@
     {\blx at firstpage@hyphen#1--&}
     {\ifblank{#1}
        {\begingroup
-        \edef\blx at tempc{\endgroup
+        \protected at edef\blx at tempc{\endgroup
           \blx at range@out at value{%
             \noexpand\bibrangedash
-            \expandonce\blx at range@out at item@process{\unexpanded{#2}}}}%
+            \blx at range@out at item@process{\unexpanded{#2}}}}%
         \blx at tempc}
        {\begingroup
-        \edef\blx at tempc{\endgroup
+        \protected at edef\blx at tempc{\endgroup
           \blx at range@out at value{%
-            \expandonce\blx at range@out at item@process{\unexpanded{#1}}}}%
+            \blx at range@out at item@process{\unexpanded{#1}}}}%
         \blx at tempc}}}
 
 \def\blx at firstpage@hyphen#1-#2-#3&{%
@@ -3536,16 +3671,16 @@
        {\ifblank{#2}
           {\blx at firstpage@hyphen at i#3&}
           {\begingroup
-           \edef\blx at tempc{\endgroup
+           \protected at edef\blx at tempc{\endgroup
              \blx at range@out at value{%
                \noexpand\bibrangedash
-               \expandonce\blx at range@out at item@process{%
+               \blx at range@out at item@process{%
                  \unexpanded{#2}}}}%
            \blx at tempc}}
        {\begingroup
-        \edef\blx at tempc{\endgroup
+        \protected at edef\blx at tempc{\endgroup
           \blx at range@out at value{%
-            \expandonce\blx at range@out at item@process{\unexpanded{#1}}}}%
+            \blx at range@out at item@process{\unexpanded{#1}}}}%
         \blx at tempc}}}
 
 \def\blx at firstpage@hyphen at i#1-#2&{%
@@ -3554,10 +3689,10 @@
        {\blx at firstpage@abort}
        {\blx at firstpage@hyphen at i#2&}}
     {\begingroup
-     \edef\blx at tempc{\endgroup
+     \protected at edef\blx at tempc{\endgroup
        \blx at range@out at value{%
          \noexpand\bibrangedash
-         \expandonce\blx at range@out at item@process{%
+         \blx at range@out at item@process{%
            \unexpanded{#1}}}}%
      \blx at tempc}}
 
@@ -3597,7 +3732,7 @@
   \blx at cleardelim{#2}%
   \ifblank{#1}
     {\blx at declaredelim{#2}{#3}}
-    {\blx at declaredelim[#1]{#2}{#3}}}
+    {\blx at declaredelim[{#1}]{#2}{#3}}}
 
 \newrobustcmd*{\blx at declaredelim}[3][]{%
   \ifblank{#1}
@@ -3615,13 +3750,71 @@
     \csdef{#1##1}{#4}}%
   \forcsvlist{\do at i}{#3}}
 
-% *[<alias context, ...>]{<alias>}[<delim context>]{<delim>}
+% [<alias context, ...>]{<alias>}[<delim context>]{<delim>}
+% deprecated: *[<alias context, ...>]{<alias>}[<delim context>]{<delim>}
+% the starred version is only implemented for backwards compatibility
+% the only difference is that a missing first argument
+%  implies the global/empty context
 \newrobustcmd*{\DeclareDelimAlias}{%
   \@ifstar
-    {\blx at declaredelimalias@expl}
-    {\blx at declaredelimalias@auto}}
+    {\blx at declaredelimalias@s}
+    {\blx at declaredelimalias@a}}
 
-\newrobustcmd*{\blx at declaredelimalias@auto}[2]{%
+\def\blx at declaredelimalias@s{%
+  \blx at warning{%
+    The starred command '\string\DeclareDelimAlias*' is\MessageBreak
+    deprecated.%
+    \MessageBreak
+    Use the unstarred version '\string\DeclareDelimAlias'\MessageBreak
+    instead}%
+  \@ifnextchar[%]
+    {\blx at declaredelimalias@om}
+    {\blx at declaredelimalias@om[]}}
+
+\def\blx at declaredelimalias@a{%
+  \@ifnextchar[%]
+    {\blx at declaredelimalias@om}
+    {\blx at declaredelimalias@m}}
+
+\def\blx at declaredelimalias@m#1{%
+  \@ifnextchar[%]
+    {\blx at declaredelimalias@mom{#1}}
+    {\blx at declaredelimalias@mm{#1}}}
+
+\def\blx at declaredelimalias@mm{%
+  \blx at declaredelimalias@auto}
+
+\def\blx at declaredelimalias@mom{%
+  \blx at declaredelimalias@omom[]}
+
+\def\blx at declaredelimalias@om[#1]#2{%
+  \@ifnextchar[%]
+    {\blx at declaredelimalias@omom[{#1}]{#2}}
+    {\blx at declaredelimalias@omm[{#1}]{#2}}}
+
+% hrmpf ... remember that \docsvlist doesn't do anthing for empty
+% lists/list items
+\def\blx at declaredelimalias@omom[#1]#2[#3]#4{%
+  \ifstrequal{#1}{*}
+    {\ifstrequal{#3}{*}
+       {\blx at declaredelimalias@auto{#2}{#4}}
+       {\blx at cleardelim{#1}%
+        \blx at declaredelimalias@manual{}{#2}{#3}{#4}}}
+    {\def\do##1{\blx at declaredelimalias@manual{##1}{#2}{#3}{#4}}%
+     \ifblank{#1}
+       {\do{}}
+       {\docsvlist{#1}}}}
+
+\def\blx at declaredelimalias@omm[#1]#2#3{%
+  \ifstrequal{#1}{*}
+    {\blx at declaredelimalias@auto{#2}{#3}}
+    {\def\do##1{\blx at declaredelimalias@manual{##1}{#2}{##1}{#3}}%
+     \ifblank{#1}
+       {\do{}}
+       {\docsvlist{#1}}}}
+
+% {<alias>}{<source>}
+\def\blx at declaredelimalias@auto#1#2{%
   \blx at cleardelim{#1}%
   \blx at declaredelimalias@def{}{#1}{}{#2}%
   \ifcsvoid{blx at declaredelimcontexts@#2}
@@ -3631,37 +3824,15 @@
          {blx at printdelim@##1@}{#1}{blx at printdelim@##1@}{#2}}%
      \dolistcsloop{blx at declaredelimcontexts@#2}}}
 
-\def\blx at declaredelimalias@expl{%
-  \@ifnextchar[%]
-    {\blx at declaredelimalias@expl at i}
-    {\blx at declaredelimalias@expl at i[]}}
-
-\def\blx at declaredelimalias@expl at i[#1]#2{%
-  \@ifnextchar[%]
-    {\blx at declaredelimalias@expl at iii{#1}{#2}}
-    {\blx at declaredelimalias@expl at ii{#1}{#2}}}
-
-\def\blx at declaredelimalias@expl at ii#1#2#3{%
+% {<alias context>}{<alias>}{<source context>}{<source>}
+\def\blx at declaredelimalias@manual#1#2#3#4{%
   \ifblank{#1}
-    {\blx at declaredelimalias@def{}{#2}{}{#3}}
-    {\def\do##1{%
-       \blx at declaredelimalias@def
-         {blx at printdelim@##1@}{#2}{blx at printdelim@##1@}{#3}}%
-     \docsvlist{#1}}}
-
-\def\blx at declaredelimalias@expl at iii#1#2[#3]#4{%
-  \ifblank{#1}
     {\ifblank{#3}
        {\blx at declaredelimalias@def{}{#2}{}{#4}}
        {\blx at declaredelimalias@def{}{#2}{blx at printdelim@#3@}{#4}}}
     {\ifblank{#3}
-       {\def\do##1{%
-          \blx at declaredelimalias@def
-            {blx at printdelim@##1@}{#2}{}{#4}}}
-       {\def\do##1{%
-          \blx at declaredelimalias@def
-            {blx at printdelim@##1@}{#2}{blx at printdelim@#3@}{#4}}}%
-     \docsvlist{#1}}}
+       {\blx at declaredelimalias@def{blx at printdelim@#1@}{#2}{}{#4}}}
+       {\blx at declaredelimalias@def{blx at printdelim@#1@}{#2}{blx at printdelim@#3@}{#4}}}
 
 \def\blx at declaredelimalias@def#1#2#3#4{%
   \ifcsdef{#1#2}
@@ -3707,6 +3878,7 @@
 \blx at regimcs{\UseUsedriverHook}
 
 \AtUsedriver{%
+  \delimcontext{bib}%
   \let\finentry\blx at finentry@usedrv
   \let\newblock\relax
   \let\abx at macro@bibindex\@empty
@@ -3715,7 +3887,6 @@
 % {<init>}{<entrytype>}
 \protected\def\blx at imc@usedriver#1#2{%
   \begingroup
-  \delimcontext{bib}%
   \csuse{blx at hook@usedriver}%
   \csuse{blx at hook@bbxinit}#1%
   \blx at beglangbib
@@ -3830,38 +4001,76 @@
 \def\ifentrycategory{\blx at imc@ifentrycategory}
 \def\ifentrykeyword{\blx at imc@ifentrykeyword}
 
+
 \def\blx at imc@iflabeldateisdate{%
-  \ifboolexpr{%
-    togl {blx at labeldateparts}
-    and not test {\iffieldundef{labeldatesource}}
-    and
-    (test {\iffieldequalstr{labeldatesource}{}}
-     or test {\iffieldequalstr{labeldatesource}{year}})}}
+  \iftoggle{blx at labeldateparts}
+    {\iffieldundef{labeldatesource}
+       {\@secondoftwo}
+       {\iffieldequalstr{labeldatesource}{}
+          {\@firstoftwo}
+          {\iffieldequalstr{labeldatesource}{year}}}}
+    {\@secondoftwo}}
 
+
 \def\blx at imc@ifdatehasyearonlyprecision#1{%
-  \ifboolexpr{not test {\iffieldundef{#1year}}
-              and (test {\ifcsstring{blx at dateformat@#1date}{year}}
-                   or (test {\iffieldundef{#1month}}
-                       and test {\iffieldundef{#1season}}))}}
+  \iffieldundef{#1year}
+    {\@secondoftwo}
+    {\ifcsstring{blx at dateformat@#1date}{year}
+       {\@firstoftwo}
+       {\iffieldundef{#1month}
+          {\iffieldundef{#1season}}
+          {\@secondoftwo}}}}
 
 \def\blx at imc@ifdatehastime#1{%
-  \ifboolexpr{togl {blx@#1dateusetime}
-                 and not test {\iffieldundef{#1hour}}}}
+  \iftoggle{blx@#1dateusetime}
+    {\iffieldundef{#1hour}
+       {\@secondoftwo}
+       {\@firstoftwo}}
+    {\@secondoftwo}}
 
 \def\blx at imc@ifdateshavedifferentprecision#1#2{%
-  \ifboolexpr{   (test {\ifdatehasyearonlyprecision{#1}}
+  \ifboolexpr{   (        test {\ifdatehasyearonlyprecision{#1}}
                   and not test {\ifdatehasyearonlyprecision{#2}})
-              or (not test {\ifdatehasyearonlyprecision{#1}}
-                  and test {\ifdatehasyearonlyprecision{#2}})
-              or (test {\ifdatehastime{#1}}
+              or (    not test {\ifdatehasyearonlyprecision{#1}}
+                  and     test {\ifdatehasyearonlyprecision{#2}})
+              or (        test {\ifdatehastime{#1}}
                   and not test {\ifdatehastime{#2}})
-              or (not test {\ifdatehastime{#1}}
-                  and test {\ifdatehastime{#2}})}}
+              or (    not test {\ifdatehastime{#1}}
+                  and     test {\ifdatehastime{#2}})}}
 
 \def\blx at imc@ifdateyearsequal#1#2{%
-  \ifboolexpr{ test {\iffieldsequal{#1year}{#2year}}
-               and test {\iffieldsequal{#1dateera}{#2dateera}}}}
+  \iffieldsequal{#1year}{#2year}
+    {\iffieldundef{#1dateera}
+       {\iffieldundef{#2dateera}}
+       {\iffieldsequal{#1dateera}{#2dateera}}}
+    {\@secondoftwo}}
 
+\def\blx at reconstruct@comparabledate#1{%
+  \thefield{#1year}-\thefield{#1month}(\thefield{#1season})-%
+    \thefield{#1day}T%
+  \thefield{#1hour}:\thefield{#1minute}:\thefield{#1second}Z%
+    \thefield{#1timezone}//%
+  e\thefield{#1dateera}E%
+  c\csuse{if#1datecirca}{T}{F}%
+  j\csuse{if#1datejulian}{T}{F}%
+  r\csuse{if#1dateuncertain}{T}{F}%
+  k\csuse{if#1dateunknown}{T}{F}%
+}
+
+\def\blx at imc@ifdatesequal#1#2{%
+  \begingroup
+    \edef\blx at tempa{\blx at reconstruct@comparabledate{#1}}%
+    \edef\blx at tempb{\blx at reconstruct@comparabledate{#2}}%
+    \edef\blx at tempc{\endgroup
+      \ifstrequal{\blx at tempa}{\blx at tempb}}%
+  \blx at tempc
+}
+
+\def\blx at imc@ifdaterangesequal#1#2{%
+  \blx at imc@ifdatesequal{#1}{#2}
+    {\blx at imc@ifdatesequal{#1end}{#2end}}
+    {\@secondoftwo}}
+
 \blx at regimcs{%
   \ifdriver \thefield \strfield \csfield \usefield \thelist \strlist
   \thefirstlistitem \usefirstlistitem \strfirstlistitem
@@ -3881,7 +4090,7 @@
   \iffieldint \iffieldnum \iffieldnums \iffieldpages
   \iflabeldateisdate \ifdatehasyearonlyprecision \ifdatehastime
   \ifdateshavedifferentprecision
-  \ifdateyearsequal
+  \ifdateyearsequal \ifdatesequal \ifdaterangesequal
   \mkpageprefix \mkpagetotal
   \newblock \newunit \setunit \printunit \finentry}
 
@@ -3927,279 +4136,6 @@
 
 %% Global formatting hooks
 
-% capitalization
-
-% {<text>}
-\newrobustcmd{\MakeCapital}[1]{%
-  \begingroup
-  \blx at mkcp@init
-  \protected at edef\blx at tempa{#1}%
-  \expandafter\blx at mkcp@parse\blx at tempa\@empty\blx at mkcp@end}
-
-\def\blx at mkcp@init{%
-  \def\blx at mkcp@iec{\noexpand\blx at mkcp@iec\noexpand}%
-  \def\blx at mkcp@bbl{\noexpand\blx at mkcp@bbl\noexpand}%
-  \def\blx at mkcp@sgl{\noexpand\blx at mkcp@sgl\noexpand}%
-  \def\blx at mkcp@dbl{\noexpand\blx at mkcp@dbl\noexpand}%
-  \def\do##1{\def##1{\blx at mkcp@sgl##1}}\abx at dosingleaccents
-  \def\do##1{\def##1{\blx at mkcp@dbl##1}}\abx at dodoubleaccents
-  \def\IeC##1{\blx at mkcp@iec\IeC{##1}}%
-  \def\@tabacckludge##1{%
-    \expandafter\blx at mkcp@sgl\csname\string##1\endcsname}}
-
-\begingroup
-\catcode`\"=\active
-\gappto\blx at mkcp@init{%
-  \ifnum\catcode`\"=\active
-    \def"#1{\blx at mkcp@bbl"\noexpand#1}%
-  \fi}
-\endgroup
-
-\def\blx at mkcp@parse{%
-  \futurelet\@let at token\blx at mkcp@eval}
-
-\long\def\blx at mkcp@eval{%
-  \ifx\@let at token\blx at mkcp@iec
-    \expandafter\blx at mkcp@getiec
-  \fi
-  \ifx\@let at token\blx at mkcp@bbl
-    \expandafter\blx at mkcp@gettwo
-  \fi
-  \ifx\@let at token\blx at mkcp@sgl
-    \expandafter\blx at mkcp@gettwo
-  \fi
-  \ifx\@let at token\blx at mkcp@dbl
-    \expandafter\blx at mkcp@getthree
-  \fi
-  \blx at mkcp@case}
-
-\def\blx at mkcp@getiec#1\blx at mkcp@case#2#3#4{%
-  \blx at mkcp@case{#2#3{#4}}}
-
-\def\blx at mkcp@gettwo#1\blx at mkcp@case#2#3#4{%
-  \blx at mkcp@case{#2#3#4}}
-
-\def\blx at mkcp@getthree#1\blx at mkcp@case#2#3#4#5{%
-  \blx at mkcp@case{#2#3#4#5}}
-
-\long\def\blx at mkcp@case#1{%
-  \begingroup
-  \def\i{I}\def\j{J}%
-  \def\do##1##2{\let##1##2\do}%
-  \expandafter\do\@uclclist\relax{\relax\@gobble}%
-  \uppercase{\protected at edef\blx at tempa{\endgroup\blx at mkcp@end#1}}%
-  \blx at tempa}
-
-\protected\long\def\blx at mkcp@end#1\blx at mkcp@end{%
-  \let\blx at mkcp@iec\noexpand
-  \let\blx at mkcp@bbl\noexpand
-  \let\blx at mkcp@sgl\noexpand
-  \let\blx at mkcp@dbl\noexpand
-  \protected at edef\blx at tempa{\endgroup#1}%
-  \blx at tempa}
-
-\def\abx at dosingleaccents{%
-  \do\"\do\'\do\`\do\^\do\~\do\=\do\.%
-  \do\H\do\b\do\c\do\d\do\r\do\u\do\v}
-\def\abx at dodoubleaccents{%
-  \do\t}
-
-% {<text>}
-\newrobustcmd*{\MakeSentenceCase}{%
-  \@ifstar\blx at mksc@i\blx at mksc@ii}
-
-% Check, in order:
-% * explicit option language=<lang>, which overrides everything
-% * langid field of entry
-% * babel/polyglossia lang
-% * main document lang
-\def\blx at mksc@i{%
-  \ifdef\blx at forcelanguagename
-    {\xifinlist\blx at forcelanguagename\blx at cmksc@lang
-       {\blx at mksc@ii}
-       {\@firstofone}}
-    {\ifdef\abx at field@langid
-      {\xifinlist\abx at field@langid\blx at cmksc@lang
-         {\blx at mksc@ii}
-         {\@firstofone}}
-      {\ifdef\blx at main@language
-        {\xifinlist\blx at main@language\blx at cmksc@lang
-          {\blx at mksc@ii}
-          {\@firstofone}}
-        {\xifinlist\blx at languagename\blx at cmksc@lang
-          {\blx at mksc@ii}
-          {\@firstofone}}}}}
-
-\long\def\blx at mksc@ii#1{%
-  \begingroup
-  \let\blx at tempa\@empty
-  \let\blx at tempb\@empty
-  \blx at mksc@init
-  \protected at edef\@tempa{#1}%
-  \expandafter\blx at mksc@parse\@tempa\blx at mksc@end}
-
-\def\blx at mksc@init{%
-  \blx at mkcp@init
-  \def\blx at mkcp@nil{\noexpand\blx at mkcp@nil\noexpand}%
-  \def\i{\blx at mkcp@nil\i}\def\j{\blx at mkcp@nil\j}%
-  \def\do##1{%
-    \ifx##1\relax
-    \else
-      \def##1{\blx at mkcp@nil##1}%
-      \expandafter\do
-    \fi}%
-  \expandafter\do\@uclclist\relax}
-
-\def\blx at mksc@parse{%
-  \futurelet\@let at token\blx at mksc@eval}
-
-\def\blx at mksc@eval{%
-  \ifx\@let at token\blx at mksc@end
-    \expandafter\blx at mksc@end
-  \fi
-  \ifx\@let at token\bgroup
-    \expandafter\blx at mksc@group
-  \fi
-  \ifx\@let at token\@sptoken
-    \expandafter\blx at mksc@space
-  \fi
-  \ifx\@let at token\blx at mkcp@nil
-    \expandafter\blx at mksc@getone
-  \fi
-  \ifx\@let at token\blx at mkcp@iec
-    \expandafter\blx at mksc@getiec
-  \fi
-  \ifx\@let at token\blx at mkcp@bbl
-    \expandafter\blx at mksc@gettwo
-  \fi
-  \ifx\@let at token\blx at mkcp@sgl
-    \expandafter\blx at mksc@gettwo
-  \fi
-  \ifx\@let at token\blx at mkcp@dbl
-    \expandafter\blx at mksc@getthree
-  \fi
-  \if\noexpand\@let at token\relax
-    \expandafter\blx at mksc@cs
-  \fi
-  \blx at mksc@other}
-
-\def\blx at mksc@end#1\blx at mksc@end{%
-  \blx at mksc@eject
-  \let\blx at mkcp@nil\noexpand
-  \let\blx at mkcp@iec\noexpand
-  \let\blx at mkcp@bbl\noexpand
-  \let\blx at mkcp@sgl\noexpand
-  \let\blx at mkcp@dbl\noexpand
-  \let\MakeUppercase\relax
-  \let\MakeLowercase\relax
-  \protected at edef\blx at tempa{\endgroup\blx at tempa}%
-  \blx at tempa}
-
-\long\def\blx at mksc@group#1\blx at mksc@other#2{%
-  \futurelet\@let at token\blx at mksc@ingroup#2&{#2}%
-  \blx at mksc@endhead
-  \blx at mksc@parse}
-
-\long\def\blx at mksc@ingroup#1&#2{%
-  \if\noexpand\@let at token\relax
-    \ifx\@let at token\blx at mkcp@sgl
-      \blx at mksc@nocase{{#2}}%
-    \else
-      \ifx\@let at token\blx at mkcp@dbl
-        \blx at mksc@nocase{{#2}}%
-      \else
-        \blx at mksc@locase{{#2}}%
-      \fi
-    \fi
-  \else
-    \blx at mksc@nocase{{#2}}%
-  \fi}
-
-\def\blx at mksc@space{\def\blx at mksc@space##1\blx at mksc@other}
-\csuse{blx at mksc@space} {%
-  \blx at mksc@anycase{ }%
-  \blx at mksc@endhead
-  \blx at mksc@parse}
-
-\long\def\blx at mksc@cs#1\blx at mksc@other#2{%
-  \ifcat\noexpand~\noexpand#2%
-    \blx at mksc@locase{#2}%
-  \else
-    \blx at mksc@nocase{#2}%
-  \fi
-  \blx at mksc@endhead
-  \blx at mksc@parse}
-
-\def\blx at mksc@getiec#1\blx at mksc@other#2#3#4{%
-  \blx at mksc@other{#2#3{#4}}}
-
-\def\blx at mksc@getone#1\blx at mksc@other#2#3{%
-  \blx at mksc@other{#2#3}}
-
-\def\blx at mksc@gettwo#1\blx at mksc@other#2#3#4{%
-  \blx at mksc@other{#2#3#4}}
-
-\def\blx at mksc@getthree#1\blx at mksc@other#2#3#4#5{%
-  \blx at mksc@other{#2#3#4#5}}
-
-\long\def\blx at mksc@other#1{%
-  \blx at mksc@locase{#1}%
-  \blx at mksc@endhead
-  \blx at mksc@parse}
-
-\def\blx at mksc@locase{%
-  \appto\blx at tempb}
-
-\def\blx at mksc@nocase{%
-  \blx at mksc@eject
-  \appto\blx at tempa}
-
-\def\blx at mksc@anycase{%
-  \ifx\blx at tempb\@empty
-    \expandafter\appto
-    \expandafter\blx at tempa
-  \else
-    \expandafter\appto
-    \expandafter\blx at tempb
-  \fi}
-
-\def\blx at mksc@eject{%
-  \ifx\blx at tempb\@empty
-  \else
-    \eappto\blx at tempa{\noexpand\MakeLowercase{\expandonce\blx at tempb}}%
-    \let\blx at tempb\@empty
-  \fi}
-
-\def\blx at mksc@endhead{%
-  \ifx\blx at tempb\@empty
-  \else
-    \eappto\blx at tempa{\noexpand\MakeCapital{\expandonce\blx at tempb}}%
-    \let\blx at tempb\@empty
-  \fi
-  \let\blx at mksc@endhead\relax}
-
-% {<language,language,...>}
-\newrobustcmd*{\DeclareCaseLangs}{%
-  \@ifstar
-    {\blx at defcaselangs}
-    {\global\let\blx at cmksc@lang\@empty
-     \blx at defcaselangs}}
-
-\def\blx at defcaselangs#1{%
-  \ifblank{#1}
-    {}
-    {\forcsvlist{\listgadd\blx at cmksc@lang}{#1}}}
-
-\DeclareCaseLangs{%
-  american,british,canadian,
-  english,USenglish,UKenglish,
-  australian,newzealand}
-
-\newrobustcmd*{\ifcaselang}[1][]{%
-  \ifblank{#1}
-    {\xifinlist\blx at languagename\blx at cmksc@lang}
-    {\xifinlist{#1}\blx at cmksc@lang}}
-
 %% Main formatting commands
 % They work by creating a \let alias:
 % \abx@<class>@<entrytype>@<formatname> -> \blx at defformat@d
@@ -4240,19 +4176,11 @@
   \@ifstar
     {\blx at defformat\blx at defnameformat{nwd}*}
     {\blx at defformat\blx at defnameformat{nwd}{}}}
-\newrobustcmd*{\DeclareIndexNameWrapperFormat}{%
-  \@ifstar
-    {\blx at defformat\blx at defnameformat{nxd}*}
-    {\blx at defformat\blx at defnameformat{nxd}{}}}
 
 \newrobustcmd*{\DeclareListWrapperFormat}{%
   \@ifstar
     {\blx at defformat\blx at defplainformat{lwd}*}
     {\blx at defformat\blx at defplainformat{lwd}{}}}
-\newrobustcmd*{\DeclareIndexListWrapperFormat}{%
-  \@ifstar
-    {\blx at defformat\blx at defplainformat{lxd}*}
-    {\blx at defformat\blx at defplainformat{lxd}{}}}
 
 % {<macro>}{<class>}{<*>}
 \def\blx at defformat#1#2#3{%
@@ -4260,8 +4188,8 @@
     {\blx at defformat@i{#1}{#2}{#3}}
     {\blx at defformat@i{#1}{#2}{#3}[*]}}
 
-% {<macro>}{<class>}{<*>}[<entrytype>]{<name>}
-\def\blx at defformat@i#1#2#3[#4]#5{%
+% {<macro>}{<class>}{<*>}[<entrytype>]{<name>}{<code>}
+\def\blx at defformat@i#1#2#3[#4]#5#6{%
   \notblank{#3}
     {\blx at resetformat{#2}{#5}}
     {}%
@@ -4269,7 +4197,7 @@
   \def\blx at defformat@b{#4}%
   \blx at xsanitizeafter{\def\blx at defformat@c}{#5}%
   \afterassignment\blx at defformat@ii
-  #1}
+  #1{#6}}
 
 \def\blx at defformat@ii{%
   \expandafter\forcsvlist
@@ -4366,10 +4294,8 @@
 \newrobustcmd*{\DeclareIndexFieldAlias}{\blx at defalias{fid}}
 
 \newrobustcmd*{\DeclareNameWrapperAlias}{\blx at defalias{nwd}}
-\newrobustcmd*{\DeclareIndexNameWrapperAlias}{\blx at defalias{nxd}}
 
 \newrobustcmd*{\DeclareListWrapperAlias}{\blx at defalias{lwd}}
-\newrobustcmd*{\DeclareIndexListWrapperAlias}{\blx at defalias{lxd}}
 
 % #1: internal type signature, #2: type text for warning
 %      #3         #4         #5          #6
@@ -4413,13 +4339,9 @@
 
 \newrobustcmd*{\DeprecateNameWrapperFormatWithReplacement}{%
   \blx at deprecateformat{nwd}{Name wrapper format}}
-\newrobustcmd*{\DeprecateIndexNameWrapperFormatWithReplacement}{%
-  \blx at deprecateformat{nxd}{Index name wrapper format}}
 
 \newrobustcmd*{\DeprecateListWrapperFormatWithReplacement}{%
   \blx at deprecateformat{lwd}{List wrapper format}}
-\newrobustcmd*{\DeprecateIndexListWrapperFormatWithReplacement}{%
-  \blx at deprecateformat{lxd}{Index list wrapper format}}
 
 % [<format>]{<text>}
 \newrobustcmd{\blx at imc@printtext}[2][]{%
@@ -4467,7 +4389,7 @@
   \iftoggle{blx at loadfiles}
     {\IfFileExists{#2}
        {\listxadd\blx at list@req at edit{#2}%
-        \blx at imc@printtext[#1]{\input{#2}\unspace}}
+        \blx at imc@printtext[{#1}]{\input{#2}\unspace}}
        {\blx at nounit}}
     {\blx at nounit}}
 
@@ -4547,17 +4469,17 @@
   \c at uniquelist\z@
   \ifblank{#1}
     {}
-    {\setkeys{blx at opt@namelist}{#1}}%
+    {\blx at kv@setkeys{blx at opt@namelist}{#1}}%
   \def\blx at thedata{#2}}
 
 % Biber-calculated info passed back to biblatex as an option in the .bbl
 % unlike stuff defined with \DeclareBiblatexOption and
 % \blx at DeclareBackendOption these are not 'real' options
-\define at key{blx at opt@namelist}{ul}{\c at uniquelist#1\relax}
+\blx at kv@defkey{blx at opt@namelist}{ul}{\c at uniquelist#1\relax}
 
-\define at key{blx at opt@name}{un}{\c at uniquename#1\relax}
-\define at key{blx at opt@name}{uniquepart}{\def\abx at field@uniquepart{#1}}
-\define at key{blx at opt@name}{hash}{\edef\abx at field@hash{\detokenize{#1}}}
+\blx at kv@defkey{blx at opt@name}{un}{\c at uniquename#1\relax}
+\blx at kv@defkey{blx at opt@name}{uniquepart}{\def\abx at field@uniquepart{#1}}
+\blx at kv@defkey{blx at opt@name}{hash}{\edef\abx at field@hash{\detokenize{#1}}}
 
 
 \newrobustcmd*{\bibinitperiod}{\adddot}
@@ -4577,18 +4499,16 @@
 \def\blx at indexnames#1#2#3#4{%
   \blx at imc@ifnameundef{#4}
     {}
-    {\blx at getformat\blx at thewrapperformat{nxd}{#1}{#4}%
-     \ifdefvoid\blx at thewrapperformat
+    {\blx at getformat\blx at theformat{nid}{#1}{#4}%
+     \ifdefvoid\blx at theformat
        {}
-       {\blx at getformat\blx at theformat{nid}{#1}{#4}%
-        \ifdefvoid\blx at theformat
-          {}
-          {\begingroup
-           \blx at namesetup{#2}{#3}{#4}%
-           \blx at indexnamesetup
-           \expandafter\blx at nameparser\blx at thedata{}&%
-           \endgroup}}}}
+       {\begingroup
+        \blx at namesetup{#2}{#3}{#4}%
+        \blx at indexnamesetup
+        \expandafter\blx at nameparser\blx at thedata{}&%
+        \endgroup}}}
 
+
 \def\blx at indexnamesetup{%
   \let\bibinitperiod\bibindexinitperiod
   \let\bibinitdelim\bibindexinitdelim
@@ -4618,13 +4538,13 @@
   \begingroup
   \ifblank{#1}
     {}
-    {\setkeys{blx at opt@name}{#1}}%
+    {\blx at kv@setkeys{blx at opt@name}{#1}}%
   % reset all the nameparts to empty between names
   \def\do##1{%
     \cslet{namepart##1}\@empty
     \cslet{namepart##1i}\@empty}%
   \expandafter\docsvlist\expandafter{\blx at datamodel@constant at nameparts}%
-  \setkeys{blx at opt@namepart}{#2}% Extract nameparts information
+  \blx at kv@setkeys{blx at opt@namepart}{#2}% Extract nameparts information
   % Still pass the nameparts forward for backwards compat
   % When \nameparts is finally removed, remove the "{2}" and remove the
   % arg to \blx at defformat@d in def of \blx at defnameformat
@@ -4687,16 +4607,13 @@
 \def\blx at indexlist#1#2#3#4{%
   \blx at imc@iflistundef{#4}
     {}
-    {\blx at getformat\blx at thewrapperformat{lxd}{#1}{#4}%
-     \ifdefvoid\blx at thewrapperformat
+    {\blx at getformat\blx at theformat{lid}{#1}{#4}%
+     \ifdefvoid\blx at theformat
        {}
-       {\blx at getformat\blx at theformat{lid}{#1}{#4}%
-        \ifdefvoid\blx at theformat
-          {}
-          {\begingroup
-           \blx at listsetup{#2}{#3}{#4}%
-           \expandafter\blx at listparser\blx at thedata{}&%
-           \endgroup}}}}
+       {\begingroup
+        \blx at listsetup{#2}{#3}{#4}%
+        \expandafter\blx at listparser\blx at thedata{}&%
+        \endgroup}}}
 
 % {<item1>}{<item2>}{...}
 \long\def\blx at listparser#1{%
@@ -4797,6 +4714,20 @@
 
 %% Localization
 
+% {<wrapper>}{<long/short>}{<string>}{<print code>}
+% <print code> is executed when the bibstring is defined
+% it differs between the \bib...string versions
+% in <print code> \blx at tempa should be used as <string>
+\protected\def\blx at met@bibstring#1#2#3#4{%
+  \blx at begunit
+  \blx at hyphenreset
+  \blx at bibstringsimple
+  \lowercase{\edef\blx at tempa{#3}}%
+  \ifcsundef{#2@\blx at tempa}
+    {\blx at warn@nostring\blx at tempa
+     \blx at endnounit}
+    {#4}}
+
 % [<wrapper>]{<string>}
 \newrobustcmd*{\blx at imc@bibstring}[2][\@firstofone]{%
   \blx at bibstring{#1}{\abx at str}{#2}}
@@ -4818,13 +4749,7 @@
   \let\bibsstring\blx at imc@bibsstring}
 
 \protected\def\blx at bibstring#1#2#3{%
-  \blx at begunit
-  \blx at hyphenreset
-  \blx at bibstringsimple
-  \lowercase{\edef\blx at tempa{#3}}%
-  \ifcsundef{#2@\blx at tempa}
-    {\blx at warn@nostring\blx at tempa
-     \blx at endnounit}
+  \blx at met@bibstring{#1}{#2}{#3}
     {\blx at imc@ifcapital
        {#1{\MakeCapital{\csuse{#2@\blx at tempa}}}}
        {#1{\csuse{#2@\blx at tempa}}}%
@@ -4831,6 +4756,21 @@
      \blx at endunit}}
 
 % [<wrapper>]{<string>}
+\newrobustcmd*{\blx at imc@bibncpstring}[2][\@firstofone]{%
+  \blx at bibncpstring{#1}{\abx at str}{#2}}
+
+\newrobustcmd*{\blx at imc@bibncplstring}[2][\@firstofone]{%
+  \blx at bibncpstring{#1}{abx at lstr}{#2}}
+
+\newrobustcmd*{\blx at imc@bibncpsstring}[2][\@firstofone]{%
+  \blx at bibncpstring{#1}{abx at sstr}{#2}}
+
+\protected\def\blx at bibncpstring#1#2#3{%
+  \blx at met@bibstring{#1}{#2}{#3}
+    {#1{\csuse{#2@\blx at tempa}}%
+     \blx at endunit}}
+
+% [<wrapper>]{<string>}
 \newrobustcmd*{\blx at imc@bibcpstring}[2][\@firstofone]{%
   \blx at bibcpstring{#1}{\abx at str}{#2}}
 
@@ -4841,13 +4781,7 @@
   \blx at bibcpstring{#1}{abx at sstr}{#2}}
 
 \protected\def\blx at bibcpstring#1#2#3{%
-  \blx at begunit
-  \blx at hyphenreset
-  \blx at bibstringsimple
-  \lowercase{\edef\blx at tempa{#3}}%
-  \ifcsundef{#2@\blx at tempa}
-    {\blx at warn@nostring\blx at tempa
-     \blx at endnounit}
+  \blx at met@bibstring{#1}{#2}{#3}
     {#1{\MakeCapital{\csuse{#2@\blx at tempa}}}%
      \blx at endunit}}
 
@@ -4862,14 +4796,8 @@
   \blx at biblcstring{#1}{abx at sstr}{#2}}
 
 \protected\def\blx at biblcstring#1#2#3{%
-  \blx at begunit
-  \blx at hyphenreset
-  \blx at bibstringsimple
-  \lowercase{\edef\blx at tempa{#3}}%
-  \ifcsundef{#2@\blx at tempa}
-    {\blx at warn@nostring\blx at tempa
-     \blx at endnounit}
-    {#1{\MakeLowercase{\csuse{#2@\blx at tempa}}}%
+  \blx at met@bibstring{#1}{#2}{#3}
+    {#1{\blx at maketext@lowercase{\csuse{#2@\blx at tempa}}}%
      \blx at endunit}}
 
 % [<wrapper>]{<string>}
@@ -4883,14 +4811,8 @@
   \blx at bibucstring{#1}{abx at sstr}{#2}}
 
 \protected\def\blx at bibucstring#1#2#3{%
-  \blx at begunit
-  \blx at hyphenreset
-  \blx at bibstringsimple
-  \lowercase{\edef\blx at tempa{#3}}%
-  \ifcsundef{#2@\blx at tempa}
-    {\blx at warn@nostring\blx at tempa
-     \blx at endnounit}
-    {#1{\MakeUppercase{\csuse{#2@\blx at tempa}}}%
+  \blx at met@bibstring{#1}{#2}{#3}
+    {#1{\blx at maketext@uppercase{\csuse{#2@\blx at tempa}}}%
      \blx at endunit}}
 
 % {<string>}
@@ -4942,6 +4864,7 @@
 \blx at regimcs{%
   \bibstring   \biblstring   \bibsstring
   \bibxstring  \bibxlstring  \bibxsstring
+  \bibncpstring \bibncplstring \bibncpsstring
   \bibcpstring \bibcplstring \bibcpsstring
   \biblcstring \biblclstring \biblcsstring
   \bibucstring \bibuclstring \bibucsstring
@@ -5296,14 +5219,17 @@
   \do{langjapanese}%
   \do{langlatin}%
   \do{langlatvian}%
+  \do{langlithuanian}%
   \do{langnorwegian}%
   \do{langpolish}%
   \do{langportuguese}%
+  \do{langserbian}%
   \do{langrussian}%
   \do{langslovak}%
   \do{langslovene}%
   \do{langspanish}%
   \do{langswedish}%
+  \do{langturkish}%
   \do{langukrainian}%
   \do{fromamerican}%
   \do{frombrazilian}%
@@ -5324,15 +5250,18 @@
   \do{fromitalian}%
   \do{fromjapanese}%
   \do{fromlatin}%
+  \do{fromlithuanian}%
   \do{fromlatvian}%
   \do{fromnorwegian}%
   \do{frompolish}%
   \do{fromportuguese}%
   \do{fromrussian}%
+  \do{fromserbian}%
   \do{fromslovak}%
   \do{fromslovene}%
   \do{fromspanish}%
   \do{fromswedish}%
+  \do{fromturkish}%
   \do{fromukrainian}%
   \do{countryde}%
   \do{countryep}%
@@ -5369,19 +5298,19 @@
   \forcsvlist\blx at newstring{#1}}
 
 \def\blx at newstring#1{%
-  \ifcsundef{KV at blx@lbx@#1}
+  \blx at kv@ifkeyundef{blx at lbx}{#1}
     {\gappto\abx at dostrings{\do{#1}}%
-     \csgdef{KV at blx@lbx@#1}##1{\blx at defstring{#1}{##1}}}
+     \blx at kv@gdefkey{blx at lbx}{#1}{\blx at defstring{#1}{##1}}}
     {}}
 
 % in *.cbx/bbx/tex: <key> = {<string>},
 % in *.lbx:         <key> = {{<longstring>}{<abbrevstring>}},
-\def\do#1{\define at key{blx at lbx}{#1}{\blx at defstring{#1}{##1}}}
+\def\do#1{\blx at kv@defkey{blx at lbx}{#1}{\blx at defstring{#1}{##1}}}
 \abx at dostrings
 
 % in *.cbx/bbx/tex: (implicit)
 % in *.lbx:         inherit = {<language>},
-\define at key{blx at lbx}{inherit}{%
+\blx at kv@defkey{blx at lbx}{inherit}{%
   \blx at lbxinput@strings{#1}{}{\blx at err@nolang{#1}}%
   \csuse{abx at strings@#1}}
 
@@ -5443,7 +5372,7 @@
   \def\do##1{\csundef{abx at lstr@##1}\csundef{abx at sstr@##1}}%
   \abx at dostrings
   \csuse{abx at strings@#1}%
-  \setkeys{blx at lbx}{#2}%
+  \blx at kv@setkeys{blx at lbx}{#2}%
   \let\do\blx at defbibstrings@i
   \csxdef{abx at strings@#1}{\abx at dostrings}%
   \csgappto{abx at strings@#1}{%
@@ -5457,6 +5386,10 @@
       {\letcs\biblistname{\abx at str @shorthands}}
       {\let\biblistname\@empty}}}
 
+% this one is special, it's basically ours and probably not defined
+% by anyone else, so we had better make sure it exists
+\providecommand*{\biblistname}{\blx at warn@nostring{shorthands}}
+
 \def\blx at defbibstrings@i#1{%
   \ifcsdef{abx at lstr@#1}
     {\def\expandafter\noexpand\csname abx at lstr@#1\endcsname{%
@@ -5562,13 +5495,18 @@
   \blx at info@noline{Trying to load #2..}%
   \IfFileExists{#1}
     {\blx at info@noline{... file '#1' found}%
-     #3\@@input\@filef at und#4#5%
+     \csuse{blx at lbxfilehook@simple at preload@#1}%
+     #3\@@input\@filef at und#4%
+     \csuse{blx at lbxfilehook@simple at postload@#1}%
+     #5%
      \ifcsundef{blx at file@lbx at simple@#1}
        {\listxadd\blx at list@req at stat{#1}%
         \@addtofilelist{#1}%
         \global\cslet{blx at file@lbx at simple@#1}\@empty}
        {}}
-    {\blx at info@noline{... file '#1' not found}#6}}
+    {\blx at info@noline{... file '#1' not found}%
+     \csuse{blx at lbxfilehook@simple at failure@#1}%
+     #6}}
 
 % {<file>}{<message>}{<preload>}{<postload>}{<success>}{<failure>}
 \protected\long\def\blx at lbx@input at handler@once#1#2#3#4#5#6{%
@@ -5576,12 +5514,17 @@
     {\blx at info@noline{Trying to load #2..}%
      \IfFileExists{#1}
        {\blx at info@noline{... file '#1' found}%
-        #3\@@input\@filef at und#4#5%
+        \csuse{blx at lbxfilehook@once at preload@#1}%
+        #3\@@input\@filef at und#4%
+        \csuse{blx at lbxfilehook@once at postload@#1}%
+        #5%
         \ifcsundef{blx at file@lbx at simple@#1}
           {\listxadd\blx at list@req at stat{#1}%
            \@addtofilelist{#1}}
           {}}
-       {\blx at info@noline{... file '#1' not found}#6}%
+       {\blx at info@noline{... file '#1' not found}%
+        \csuse{blx at lbxfilehook@once at failure@#1}%
+        #6}%
      \global\cslet{blx at file@lbx at once@#1}\@empty
      \global\cslet{blx at file@lbx at simple@#1}\@empty}
     {#5}}
@@ -5647,10 +5590,7 @@
     {\edef\blx at languagename{#1}}
     {\blx at warning
        {Language '#1' not supported.\MessageBreak
-        Using fallback language '\blx at languagename'}%
-     \blx at lbxinput{\blx at languagename}
-       {\blx at maplang{#1}{\blx at languagename}}
-       {\blx at err@nolang{\blx at languagename}}}}
+        Using dummy definitions}}}
 
 % auxiliary macros
 
@@ -5710,13 +5650,13 @@
           {\iffieldsequal{#1minute}{#1endminute}
              % 14:13:xx 14:13:xx
              {\toggletrue{blx at seconds}%
-              \printtext[#1time]{%
+              \printtext[{#1time}]{%
                 \csuse{mkbibtime24h}{#1hour}{#1minute}{#1second}{}%
               \bibtimerangesep
               \csuse{mkbibtime24h}{}{}{#1endsecond}{}}}
              % 14:13:xx 14:14:xx
              {\toggletrue{blx at seconds}%
-              \printtext[#1time]{\csuse{mkbibtime24h}{#1hour}{#1minute}{}{}%
+              \printtext[{#1time}]{\csuse{mkbibtime24h}{#1hour}{#1minute}{}{}%
               \bibtimerangesep
               \csuse{mkbibtime24h}{}{#1endminute}{}{}}}}
           % 14:xx:xx 15:xx:xx
@@ -5724,17 +5664,20 @@
 
 % {<24h|24hcomp|12h>}{<datetype>}
 \newrobustcmd*{\mktimerange}[2]{%
-  \iffieldundef{#2hour}
-    {\blx at nounit}
-    {\blx at timepre{#2}{}%
-     \printtext[#2time]{\csuse{mkbibtime#1}{#2hour}{#2minute}{#2second}{#2timezone}%
-     \iffieldundef{#2endhour}
-       {}
-       {\blx at timepre{#2}{end}%
-        \iffieldequalstr{#2endhour}{}
-          {\mbox{\bibtimerangesep}}
-          {\bibtimerangesep
-           \csuse{mkbibtime#1}{#2endhour}{#2endminute}{#2endsecond}{#2endtimezone}}}}}}
+  \begingroup
+    \iffieldundef{#2hour}
+      {\blx at nounit}
+      {\blx at timepre{#2}{}%
+       \printtext[{#2time}]{%
+         \csuse{mkbibtime#1}{#2hour}{#2minute}{#2second}{#2timezone}%
+         \iffieldundef{#2endhour}
+           {}
+           {\blx at timepre{#2}{end}%
+            \iffieldequalstr{#2endhour}{}
+              {\mbox{\bibtimerangesep}}
+              {\bibtimerangesep
+               \csuse{mkbibtime#1}{#2endhour}{#2endminute}{#2endsecond}{#2endtimezone}}}}}%
+  \endgroup}
 
 % {<datetype>}{''|end}
 \newrobustcmd*{\blx at timepre}[2]{%
@@ -5744,24 +5687,27 @@
     {\blx at imc@clearfield{#1#2second}}}
 
 \newcommand*{\blx at if@printtime}[2]{%
-  \ifboolexpr{%
-    togl {blx@#1dateusetime}
-    and
-    not test {\iffieldundef{#1#2hour}}}}
+  \iftoggle{blx@#1dateusetime}
+    {\iffieldundef{#1#2hour}
+       {\@secondoftwo}
+       {\@firstoftwo}}
+    {\@secondoftwo}}
 
 \newcommand*{\blx at if@printanytimes}[1]{%
-  \ifboolexpr{
-       togl {blx@#1dateusetime}
-    and
-    (   not test {\iffieldundef{#1hour}}
-     or not test {\iffieldundef{#1endhour}})}}
+  \iftoggle{blx@#1dateusetime}
+    {\iffieldundef{#1hour}
+       {\iffieldundef{#1endhour}
+          {\@secondoftwo}
+          {\@firstoftwo}}
+       {\@firstoftwo}}
+    {\@secondoftwo}}
 
 % {<datetype>}{'' | end}
 \newrobustcmd*{\blx at printtime}[2]{%
   \blx at if@printtime{#1}{#2}
     {\blx at timepre{#1}{#2}%
-     \printtext{\bibdatetimesep}%
-     \printtext[#1time]{%
+     \bibdatetimesep%
+     \printtext[{#1time}]{%
        \csuse{mkbibtime\csuse{blx at timeformat@#1time}}
          {#1#2hour}{#1#2minute}{#1#2second}{#1#2timezone}}}
     {}}
@@ -5772,7 +5718,7 @@
     \blx at metadateinfo{#2}%
     \iffieldundef{#2year}
       {\blx at nounit}
-      {\printtext[#2date]{%
+      {\printtext[{#2date}]{%
          \datecircaprint
          % Such a season component can only come from an ISO8601 season which replaces
          % a normal month so if it exists, we know that a normal date print is ruled out
@@ -5803,7 +5749,7 @@
     \blx at metadateinfo{#2}%
     \iffieldundef{#2year}
       {\blx at nounit}
-      {\printtext[#2date]{%
+      {\printtext[{#2date}]{%
          \datecircaprint
          % Such a season component can only come from an ISO8601 season which replaces
          % a normal month so if it exists, we know that a normal date print is ruled out
@@ -5818,18 +5764,17 @@
            {\printfield{extradate}}
            {\iffieldequalstr{#2endyear}{}
               {\printfield{extradate}%
-               \printtext{\mbox{\bibdaterangesep}}}
-              {\printtext{%
-                 \bibdaterangesep
-                 \enddatecircaprint
-                 \iffieldundef{#2endseason}
-                   {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}%
-                    % Optionally print the time after the date
-                    \blx at printtime{#2}{end}}
-                   {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}%
-                 \printfield{extradate}%
-                 \enddateuncertainprint
-                 \dateeraprint{#2endyear}}}}}%
+               \mbox{\bibdaterangesep}}
+              {\bibdaterangesep
+               \enddatecircaprint
+               \iffieldundef{#2endseason}
+                 {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}%
+                  % Optionally print the time after the date
+                  \blx at printtime{#2}{end}}
+                 {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}%
+               \printfield{extradate}%
+               \enddateuncertainprint
+               \dateeraprint{#2endyear}}}}%
   \endgroup}
 
 \newrobustcmd*{\mkdaterangetrunc}[2]{%
@@ -5842,7 +5787,7 @@
     \blx at metadateinfo{#2}%
     \iffieldundef{#2year}
       {\blx at nounit}
-      {\printtext[#2date]{%
+      {\printtext[{#2date}]{%
          \datecircaprint
          % Such a season component can only come from an ISO8601 season which replaces
          % a normal month so if it exists, we know that a normal date print is ruled out
@@ -5883,7 +5828,7 @@
     \blx at metadateinfo{#2}%
     \iffieldundef{#2year}
       {\blx at nounit}
-      {\printtext[#2date]{%
+      {\printtext[{#2date}]{%
          \datecircaprint
          % Such a season component can only come from an ISO8601 season which replaces
          % a normal month so if it exists, we know that a normal date print is ruled out
@@ -5905,37 +5850,38 @@
            {\printfield{extradate}}
            {\iffieldequalstr{#2endyear}{}
               {\printfield{extradate}%
-               \printtext{\mbox{\bibdaterangesep}}}
-              {\printtext{%
-                 \bibdaterangesep
-                 \enddatecircaprint
-                 \iffieldundef{#2endseason}
-                   {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}
-                   {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}%
-                 \printfield{extradate}%
-                 \enddateuncertainprint
-                 \dateeraprint{#2endyear}}}}}%
+               \mbox{\bibdaterangesep}}
+              {\bibdaterangesep
+               \enddatecircaprint
+               \iffieldundef{#2endseason}
+                 {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}
+                 {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}%
+               \printfield{extradate}%
+               \enddateuncertainprint
+               \dateeraprint{#2endyear}}}}%
   \endgroup}
 
 \newrobustcmd*{\mkdaterangeyear}[1]{%
-  \blx at imc@clearfield{#1season}%
-  \blx at imc@clearfield{#1month}%
-  \blx at imc@clearfield{#1day}%
-  \blx at imc@clearfield{#1hour}%
-  \blx at imc@clearfield{#1minute}%
-  \blx at imc@clearfield{#1second}%
-  \blx at imc@clearfield{#1timezone}%
-  \blx at imc@clearfield{#1endseason}%
-  \blx at imc@clearfield{#1endmonth}%
-  \blx at imc@clearfield{#1endday}%
-  \blx at imc@clearfield{#1endhour}%
-  \blx at imc@clearfield{#1endminute}%
-  \blx at imc@clearfield{#1endsecond}%
-  \blx at imc@clearfield{#1endtimezone}%
-  \ifdateyearsequal{#1}{#1end}
-    {\blx at imc@clearfield{#1endyear}}
-    {}%
-  \mkdaterangefull{short}{#1}}
+  \begingroup
+    \blx at imc@clearfield{#1season}%
+    \blx at imc@clearfield{#1month}%
+    \blx at imc@clearfield{#1day}%
+    \blx at imc@clearfield{#1hour}%
+    \blx at imc@clearfield{#1minute}%
+    \blx at imc@clearfield{#1second}%
+    \blx at imc@clearfield{#1timezone}%
+    \blx at imc@clearfield{#1endseason}%
+    \blx at imc@clearfield{#1endmonth}%
+    \blx at imc@clearfield{#1endday}%
+    \blx at imc@clearfield{#1endhour}%
+    \blx at imc@clearfield{#1endminute}%
+    \blx at imc@clearfield{#1endsecond}%
+    \blx at imc@clearfield{#1endtimezone}%
+    \ifdateyearsequal{#1}{#1end}
+      {\blx at imc@clearfield{#1endyear}}
+      {}%
+    \mkdaterangefull{short}{#1}%
+  \endgroup}
 
 % {<datetype>}
 \newrobustcmd*{\mkdaterangeymd}[1]{%
@@ -5943,7 +5889,7 @@
     \blx at metadateinfo{#1}%
     \iffieldundef{#1year}
       {\blx at nounit}
-      {\printtext[#1date]{%
+      {\printtext[{#1date}]{%
          \datecircaprint
          % Such a season component can only come from an  ISO8601 season which replaces
          % a normal month so if it exists, we know that a normal date print is ruled out
@@ -5975,7 +5921,7 @@
     \blx at metadateinfo{#1}%
     \iffieldundef{#1year}
       {\blx at nounit}
-      {\printtext[#1date]{%
+      {\printtext[{#1date}]{%
          \datecircaprint
          % Such a season component can only come from an ISO8601 season which replaces
          % a normal month so if it exists, we know that a normal date print is ruled out
@@ -5990,16 +5936,15 @@
            {}
            {\iffieldequalstr{#1endyear}{}
               {\mbox{\bibdaterangesep}}
-              {\printtext{%
-                 \bibdaterangesep
-                 \enddatecircaprint
-                 \iffieldundef{#1season}
-                   {\blx at ymddate{#1}{end}%
-                    % Optionally print the time after the date
-                    \blx at printtime{#1}{end}}
-                   {\csuse{mkbibseasondateshort}{#1endyear}{#1endseason}}}%
+              {\bibdaterangesep
+               \enddatecircaprint
+               \iffieldundef{#1season}
+                 {\blx at ymddate{#1}{end}%
+                  % Optionally print the time after the date
+                  \blx at printtime{#1}{end}}
+                 {\csuse{mkbibseasondateshort}{#1endyear}{#1endseason}}}%
                \enddateuncertainprint
-               \dateeraprint{#1endyear}}}}}%
+               \dateeraprint{#1endyear}}}}%
   \endgroup}
 
 % [extradate]{<datetype>}{''|end}
@@ -6010,24 +5955,26 @@
   \iffieldundef{#2#3day}{}{\bibdatesep\mkdayzeros{\thefield{#2#3day}}}}
 
 \newrobustcmd*{\mkdaterangeyearextra}[1]{%
-  \blx at imc@clearfield{#1season}%
-  \blx at imc@clearfield{#1month}%
-  \blx at imc@clearfield{#1day}%
-  \blx at imc@clearfield{#1hour}%
-  \blx at imc@clearfield{#1minute}%
-  \blx at imc@clearfield{#1second}%
-  \blx at imc@clearfield{#1timezone}%
-  \blx at imc@clearfield{#1endseason}%
-  \blx at imc@clearfield{#1endmonth}%
-  \blx at imc@clearfield{#1endday}%
-  \blx at imc@clearfield{#1endhour}%
-  \blx at imc@clearfield{#1endminute}%
-  \blx at imc@clearfield{#1endsecond}%
-  \blx at imc@clearfield{#1endtimezone}%
-  \ifdateyearsequal{#1}{#1end}
-    {\blx at imc@clearfield{#1endyear}}
-    {}%
-  \mkdaterangefullextra{short}{#1}}
+  \begingroup
+    \blx at imc@clearfield{#1season}%
+    \blx at imc@clearfield{#1month}%
+    \blx at imc@clearfield{#1day}%
+    \blx at imc@clearfield{#1hour}%
+    \blx at imc@clearfield{#1minute}%
+    \blx at imc@clearfield{#1second}%
+    \blx at imc@clearfield{#1timezone}%
+    \blx at imc@clearfield{#1endseason}%
+    \blx at imc@clearfield{#1endmonth}%
+    \blx at imc@clearfield{#1endday}%
+    \blx at imc@clearfield{#1endhour}%
+    \blx at imc@clearfield{#1endminute}%
+    \blx at imc@clearfield{#1endsecond}%
+    \blx at imc@clearfield{#1endtimezone}%
+    \ifdateyearsequal{#1}{#1end}
+      {\blx at imc@clearfield{#1endyear}}
+      {}%
+    \mkdaterangefullextra{short}{#1}%
+  \endgroup}
 
 \newrobustcmd*{\mkdaterangeiso}[1]{%
   \begingroup
@@ -6035,13 +5982,13 @@
     \def\bibdatetimesep{T}%
     \iffieldundef{#1year}
       {\blx at nounit}
-      {\printtext[#1date]{%
+      {\printtext[{#1date}]{%
          \blx at isodate{#1}{}%
          \ifboolexpr{%
            togl {blx@#1dateusetime}
            and
            not test {\iffieldundef{#1hour}}}
-           {\printtext{\bibdatetimesep}%
+           {\bibdatetimesep%
             \blx at isotime{#1}{}}
            {}%
          \dateuncertainprint
@@ -6054,7 +6001,7 @@
               togl {blx@#1dateusetime}
               and
               not test {\iffieldundef{#1endhour}}}
-              {\printtext{\bibdatetimesep}%
+              {\bibdatetimesep%
                \blx at isotime{#1}{end}}
               {}%
            \enddateuncertainprint
@@ -6067,13 +6014,13 @@
     \def\bibdatetimesep{T}%
     \iffieldundef{#1year}
       {\blx at nounit}
-      {\printtext[#1date]{%
+      {\printtext[{#1date}]{%
          \blx at isodate[extradate]{#1}{}%
          \ifboolexpr{%
            togl {blx@#1dateusetime}
            and
            not test {\iffieldundef{#1hour}}}
-           {\printtext{\bibdatetimesep}%
+           {\bibdatetimesep%
             \blx at isotime{#1}{}}
            {}%
          \dateuncertainprint
@@ -6086,7 +6033,7 @@
               togl {blx@#1dateusetime}
               and
               not test {\iffieldundef{#1endhour}}}
-              {\printtext{\bibdatetimesep}%
+              {\bibdatetimesep%
                \blx at isotime{#1}{end}}
               {}%
             \enddateuncertainprint
@@ -6194,13 +6141,17 @@
     loaded, is faulty or does not contain a definition\MessageBreak
     for \expandafter\string\csname mkbibtime24h\endcsname
   }%
-    \iffieldundef{#1}{}
-      {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-    \iffieldundef{#2}{}
-      {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-    \iffieldundef{#3}{}
-      {\printtext{\mktimezeros{\thefield{#3}}}}%
-    \setunit{}%
+    \iffieldundef{#1}
+      {}
+      {\mktimezeros{\thefield{#1}}%
+       \iffieldundef{#2}{}{\bibtimesep}}%
+    \iffieldundef{#2}
+      {}
+      {\mktimezeros{\thefield{#2}}%
+       \iffieldundef{#3}{}{\bibtimesep}}%
+    \iffieldundef{#3}
+      {}
+      {\mktimezeros{\thefield{#3}}}%
     \iffieldundef{#4}{}
       {\bibtimezonesep
        \mkbibtimezone{\thefield{#4}}}}
@@ -6226,7 +6177,7 @@
        {\bibstring{pm}}%
     \iffieldundef{#4}{}
      {\space\bibtimezonesep
-      \parentext{\mkbibtimezone{\thefield{#4}}}}}
+      \mkbibparens{\mkbibtimezone{\thefield{#4}}}}}
 
 \newrobustcmd*{\mkbibseasondateshort}[2]{%
   \blx at warning@noline{%
@@ -6353,28 +6304,65 @@
 % User macro for retrieving currrent language
 \def\currentlang{\blx at languagename}
 
+% We need to be able to prefix \providetoggle with \global,
+% plus we don't need the testing from \providetoggle anway.
+% This uses internal implementation details of etoolbox's
+% toggles, so is a bit meh, but it's better than rolling our own
+% version of toggles just for that.
+\newcommand*{\blx at etb@inittoggle}[1]{\cslet{etb at tgl@#1}\@secondoftwo}
+
+% There is no \nocaptions..., so if we send everything to \captions...
+% we need to find a way to call our noextras only in situations where
+% \noextras... is called to clean up \extras... AND \captions...
+% and not just \extras...
+% We detect this by setting a toggle in the \captions...
+
 % {<language>}{<strings>}
 \def\blx at maplang@babel#1#2{%
-  \csgappto{extras#1}{%
-    \blx at resetpunct
-    \csuse{abx at extras@#2}%
-    \csuse{abx at strings@#2}}%
-  \csgappto{noextras#1}{%
-    \blx at resetpunct
-    \csuse{abx at noextras@#2}}}
+  \global\blx at etb@inittoggle{blx at lang@captions@#2}%
+  \ifdefstring{\blx at langhook}{captions}
+    {\csgappto{captions#1}{%
+       \toggletrue{blx at lang@captions@#2}%
+       \blx at resetpunct
+       \csuse{abx at extras@#2}%
+       \csuse{abx at strings@#2}}%
+     \csgappto{noextras#1}{%
+       \iftoggle{blx at lang@captions@#2}
+         {\blx at resetpunct
+          \csuse{abx at noextras@#2}}
+         {}}}
+    {\csgappto{extras#1}{%
+       \blx at resetpunct
+       \csuse{abx at extras@#2}%
+       \csuse{abx at strings@#2}}%
+     \csgappto{noextras#1}{%
+       \blx at resetpunct
+       \csuse{abx at noextras@#2}}}}
 
 \def\blx at maplang@polyglossia#1#2{%
-  \csgappto{blockextras at bbl@#1}{%
-    \blx at resetpunct
-    \csuse{abx at extras@#2}%
-    \csuse{abx at strings@#2}}%
-  \csgappto{inlinextras at bbl@#1}{%
-    \blx at resetpunct
-    \csuse{abx at extras@#2}%
-    \csuse{abx at strings@#2}}%
-  \csgappto{noextras at bbl@#1}{%
-    \blx at resetpunct
-    \csuse{abx at noextras@#2}}}
+  \global\blx at etb@inittoggle{blx at lang@captions@#2}%
+  \ifdefstring{\blx at langhook}{captions}
+    {\csgappto{captions at bbl@#1}{%
+       \toggletrue{blx at lang@captions@#2}%
+       \blx at resetpunct
+       \csuse{abx at extras@#2}%
+       \csuse{abx at strings@#2}}%
+     \csgappto{noextras at bbl@#1}{%
+       \iftoggle{blx at lang@captions@#2}
+         {\blx at resetpunct
+          \csuse{abx at noextras@#2}}
+         {}}}
+    {\csgappto{blockextras at bbl@#1}{%
+       \blx at resetpunct
+       \csuse{abx at extras@#2}%
+       \csuse{abx at strings@#2}}%
+     \csgappto{inlineextras at bbl@#1}{%
+       \blx at resetpunct
+       \csuse{abx at extras@#2}%
+       \csuse{abx at strings@#2}}%
+     \csgappto{noextras at bbl@#1}{%
+       \blx at resetpunct
+       \csuse{abx at noextras@#2}}}}
 
 %% babel/polyglossia interface
 \def\blx at beglang{\blx at clearlang\begingroup}
@@ -6398,53 +6386,61 @@
   \lefthyphenmin#1\relax
   \righthyphenmin#2\relax}
 
-\begingroup
-\@makeother\#
-\gdef\blx at mkautolangbabel{%
+
+
+\def\blx at mkautolangbabel{%
   \ifundef\bbl at main@language
     {\blx at error
       {No default 'babel' language defined}
       {You must define a default language for 'babel'}}
     {\let\blx at main@language\bbl at main@language}%
-  \pretocmd\select at language{\blx at langsetup{#1}}
-    {\ifdef\blx at thelangenv
-       {\def\blx at beglang{%
-          \blx at clearlang
-          \begingroup
-         % Need to override all entries, regardless of if there is a langid
-         % if language=<language> option is given
+  % use afterreset to get in a bit earlier
+  % we want to be there before \captions... is issued
+  % beforeextras is before extras, but captions come before extras
+  % afterreset was added in 3.9i (~2014-03-16)
+  % way before 3.9r (2016-04-23), which we require
+  \AddBabelHook{biblatex at langsetup}{afterreset}{%
+    \expandafter\blx at langsetup\expandafter{\languagename}}%
+  \ifdef\blx at thelangenv
+    {\def\blx at beglang{%
+       \blx at clearlang
+       \begingroup
+         % Need to override all entries, regardless of if there is a
+         % langid if language=<language> option is given
          \ifboolexpr { test {\ifdef\abx at field@langid }
                        or
                        test {\ifdef\blx at forcelanguagename} }
-            % override local langid if we forced it with
-            % language=<language> option
-            {\ifdef\blx at forcelanguagename
-               {\let\abx at field@langid\blx at forcelanguagename}
-               {}%
-             \let\blx at languagename\abx at field@langid% track global language
-             \blx at ifhyphenationundef{\abx at field@langid}
-               {\blx at warn@nohyph{\abx at field@langid}}
-               {\blx at hook@initlang
-                \def\blx at endlang{%
-                  \blx at hook@endlang
-                  \csname end\blx at thelangenv\endcsname
-                  \endgroup}%
-                \iftoggle{blx at autolangbib}
-                  {\let\blx at endlangbib\blx at endlang}
-                  {}%
-                \iftoggle{blx at autolangcite}
-                  {\let\blx at endlangcite\blx at endlang}
-                  {}%
-                \csname\blx at thelangenv\expandafter\endcsname
-                \expandafter{\abx at field@langid}}}
-            {}}}
-       {}%
-     \def\blx at imc@mainlang{\select at language{\blx at main@language}}%
-     \blx at langsetup\blx at main@language}
-    {\blx at err@patch{'babel' package}%
-     \blx at mknoautolang}}
+           % override local langid if we forced it with
+           % language=<language> option
+           {\ifdef\blx at forcelanguagename
+              {\let\abx at field@langid\blx at forcelanguagename}
+              {}%
+            \let\blx at languagename\abx at field@langid% track global language
+            \blx at ifhyphenationundef{\abx at field@langid}
+              {\blx at warn@nohyph{\abx at field@langid}}
+              {\blx at hook@initlang
+               \def\blx at endlang{%
+                 \blx at hook@endlang
+                 \csname end\blx at thelangenv\endcsname
+                 \endgroup}%
+               \iftoggle{blx at autolangbib}
+                 {\let\blx at endlangbib\blx at endlang}
+                 {}%
+               \iftoggle{blx at autolangcite}
+                 {\let\blx at endlangcite\blx at endlang}
+                 {}%
+               \csname\blx at thelangenv\expandafter\endcsname
+               \expandafter{\abx at field@langid}}}
+           {}}}
+    {}%
+  \def\blx at imc@mainlang{%
+    \expandafter\selectlanguage\expandafter{\blx at main@language}}%
+  \expandafter\blx at langsetup\expandafter{\blx at main@language}%
+}
 
-\gdef\blx at mkautolangpoly{%
+\def\blx at beglang@spacefactors{\frenchspacing}
+
+\def\blx at mkautolangpoly{%
   \ifundef\mainbabelname
     {\ifundef\bbl at main@language
        {\blx at error
@@ -6452,59 +6448,57 @@
           {You must define a default language for 'polyglossia'}}
        {\let\blx at main@language\bbl at main@language}}
     {\let\blx at main@language\mainbabelname}%
-  \edef\blx at saved@underscore at catcode{\the\catcode`\_}%
-  \catcode`\_=11% polyglossia uses "_" as a letter
-  \pretocmd\select at language{\blx at langsetup{\babelname}}
-    {\ifdef\blx at thelangenv
-       {\def\blx at beglang{%
-          \blx at clearlang
-          \begingroup
-          % Need to override all entries, regardless of if there is a
-          % langid if language=<language> option is given
-          \ifboolexpr { test {\ifdef\abx at field@langid }
-                        or
-                        test {\ifdef\blx at forcelanguagename} }
-            % override local langid if we forced it with
-            % language=<language> option
-            {\ifdef\blx at forcelanguagename
-               {\let\abx at field@langid\blx at forcelanguagename}
-               {}%
-             \let\blx at languagename\abx at field@langid% track global language
-             \blx at ifhyphenationundef{\abx at field@langid}
-               {\blx at warn@nohyph{\abx at field@langid}}
-               {\blx at hook@initlang
-                \def\blx at endlang{%
-                  \blx at hook@endlang
-                  % Polyglossia language envs are \<lang>[]
-                  \ifcsstring{blx at thelangenv}{langname}
-                    {\csname end\abx at field@langid\endcsname}
-                    {\csname end\blx at thelangenv\endcsname}%
-                  \endgroup}%
-                \iftoggle{blx at autolangbib}
-                  {\let\blx at endlangbib\blx at endlang}
-                  {}%
-                \iftoggle{blx at autolangcite}
-                  {\let\blx at endlangcite\blx at endlang}
-                  {}%
+  \ifundef\polyglossia at language@switched
+    {\apptocmd\select at language
+       {\expandafter\blx at langsetup\expandafter{\babelname}}
+       {}
+       {\blx at err@patch{'polyglossia' package}%
+        \blx at mknoautolang}}
+    {\appto\polyglossia at language@switched{%
+       \expandafter\blx at langsetup\expandafter{\babelname}}}%
+  \ifdef\blx at thelangenv
+     {\def\blx at beglang{%
+        \blx at clearlang
+        \begingroup
+        % Need to override all entries, regardless of if there is a
+        % langid if language=<language> option is given
+        \ifboolexpr { test {\ifdef\abx at field@langid }
+                      or
+                      test {\ifdef\blx at forcelanguagename} }
+          % override local langid if we forced it with
+          % language=<language> option
+          {\ifdef\blx at forcelanguagename
+             {\let\abx at field@langid\blx at forcelanguagename}
+             {}%
+           \let\blx at languagename\abx at field@langid% track global language
+           \blx at ifhyphenationundef{\abx at field@langid}
+             {\blx at warn@nohyph{\abx at field@langid}}
+             {\blx at hook@initlang
+              \def\blx at endlang{%
+                \blx at hook@endlang
+                % Polyglossia language envs are \<lang>[]
                 \ifcsstring{blx at thelangenv}{langname}
-                  {\ifdef\abx at field@langidopts
-                     {\csname\abx at field@langid\expandafter\endcsname\expandafter[\abx at field@langidopts]}
-                     {\csname\abx at field@langid\endcsname}}
-                  {\csname\blx at thelangenv\expandafter\endcsname\expandafter{\abx at field@langid}}%
-                % These lines are equal to \blx at maplang
-                \ifcsstring{blx at thelangenv}{hyphenrules}
-                  {}
-                  {\blx at resetpunct
-                   \csuse{abx at extras@\abx at field@langid}%
-                   \csuse{abx at strings@\abx at field@langid}}}}
-            {}}}
+                  {\csname end\abx at field@langid\endcsname}
+                  {\csname end\blx at thelangenv\endcsname}%
+                \endgroup}%
+              \iftoggle{blx at autolangbib}
+                {\let\blx at endlangbib\blx at endlang}
+                {}%
+              \iftoggle{blx at autolangcite}
+                {\let\blx at endlangcite\blx at endlang}
+                {}%
+              \ifcsstring{blx at thelangenv}{langname}
+                {\ifdef\abx at field@langidopts
+                   {\csname\abx at field@langid\expandafter\endcsname
+                      \expandafter[\abx at field@langidopts]}
+                   {\csname\abx at field@langid\endcsname}}
+                {\csname\blx at thelangenv\expandafter\endcsname
+                   \expandafter{\abx at field@langid}}%
+              \blx at beglang@spacefactors}}
+          {}}}
        {}%
-     \def\blx at imc@mainlang{\select at language{\blx at main@language}}%
-     \blx at langsetup\blx at main@language}
-    {\blx at err@patch{'polyglossia' package}%
-     \blx at mknoautolang}%
-  \catcode`\_=\blx at saved@underscore at catcode\relax}
-\endgroup
+  \def\blx at imc@mainlang{\select at language{\blx at main@language}}%
+  \expandafter\blx at langsetup\expandafter{\blx at main@language}}
 
 \def\blx at mknoautolang{%
   \blx at lbxinput{\blx at languagename}
@@ -6553,6 +6547,10 @@
 
 % fields which can be used as labels - we auto-create some macros for these
 \def\abx at dolabelfields{\dolistloop\blx at datamodel@labelfields}
+\def\abx at dolabelwidths{%
+  \do{labelnumber}%
+  \do{labelalpha}%
+  \abx at dolabelfields}
 
 \def\abx at donames{\dolistloop\blx at datamodel@names}
 \def\abx at donameparts{\expandafter\docsvlist\expandafter{\blx at datamodel@constant at nameparts}}
@@ -6682,19 +6680,19 @@
     {\csuse{blx at defblxopt@#1opt}{#3}[]}}
 
 \long\def\blx at defblxopt@globalopt#1[#2]#3{%
-  \ifcsundef{KV at blx@opt at ldt@#1}
-    {\ifcsundef{KV at blx@opt at pre@#1}
+  \blx at kv@ifkeyundef{blx at opt@ldt}{#1}
+    {\blx at kv@ifkeyundef{blx at opt@pre}{#1}
        {\ifblank{#2}
-          {\define at key{blx at opt@pre}{#1}{#3}}
-          {\define at key{blx at opt@pre}{#1}[#2]{#3}}}
+          {\blx at kv@defkey{blx at opt@pre}{#1}{#3}}
+          {\blx at kv@defkey{blx at opt@pre}{#1}[{#2}]{#3}}}
        {\blx at err@optdef{#1}{pre/global}}}
     {\blx at err@optdef{#1}{ldt/global}}}
 
 \long\def\blx at defblxopt@typeentryopt#1#2[#3]#4{%
-  \ifcsundef{KV at blx@opt@#1@#2}
+  \blx at kv@ifkeyundef{blx at opt@#1}{#2}
     {\ifblank{#3}
-       {\define at key{blx at opt@#1}{#2}{#4}}
-       {\define at key{blx at opt@#1}{#2}[#3]{#4}}}
+       {\blx at kv@defkey{blx at opt@#1}{#2}{#4}}
+       {\blx at kv@defkey{blx at opt@#1}{#2}[{#3}]{#4}}}
     {\blx at err@optdef{#2}{#1}}}
 
 \def\blx at defblxopt@typeopt{\blx at defblxopt@typeentryopt{typ}}
@@ -6715,10 +6713,10 @@
 \forcsvlist{\listadd\blx at optscopes}{global,type,entry}
 
 \long\def\blx at defblxopt@loopscopes at i#1[#2]#3#4{%
-  \csuse{blx at defblxopt@#4opt}{#1}[#2]{#3}}
+  \csuse{blx at defblxopt@#4opt}{#1}[{#2}]{#3}}
 
 \long\def\blx at defblxopt@loopscopes#1[#2]#3{%
-  \forlistloop{\blx at defblxopt@loopscopes at i{#1}[#2]{#3}}{\blx at optscopes}}
+  \forlistloop{\blx at defblxopt@loopscopes at i{#1}[{#2}]{#3}}{\blx at optscopes}}
 
 % {<option scopes>}[<datatype>]{<key>}[<default value>]{<code>}
 \newrobustcmd*{\DeclareBiblatexOption}[1]{%
@@ -6792,6 +6790,8 @@
 \gdef\blx at bcf@backendin at name@nametemplates{sortingnamekeytemplatename,%
   uniquenametemplatename,labelalphanametemplatename}%
 
+
+
 % Misc globalopts
 \blx at DeclareBackendOption{global}[xml]{datamodel}
 \blx at collectopts{string}{blx at globalopts}{controlversion}
@@ -7004,7 +7004,7 @@
              {\blx at stripfromendinto{#1}{year}\blx at datetype}%
            \csuse{if\blx at datetype\blx at tempa dateera}{bce}
              {\ifnumless{0-\thefield{#1}}{0}
-               {\printtext{\csuse{bibdateera\blx at tempa prefix}}}
+               {\csuse{bibdateera\blx at tempa prefix}}
                {}}
              {}%
            \endgroup}
@@ -7020,10 +7020,10 @@
            \csuse{if\blx at datetype\blx at tempa dateera}{bce}
              {\ifnum\numexpr0-\thefield{#1}\relax<\blx at dateeraauto
                 % \midsentence is to suppress automatic capitalisation
-                \printtext{\printdelim{dateeradelim}\midsentence\bibstring{\blx at dateera@bce}}\relax
+                \printdelim{dateeradelim}\midsentence\bibstring{\blx at dateera@bce}\relax
               \fi}
              {\ifnumless{\thefield{#1}}\blx at dateeraauto
-               {\printtext{\printdelim{dateeradelim}\midsentence\bibstring{\blx at dateera@ce}}}
+               {\printdelim{dateeradelim}\midsentence\bibstring{\blx at dateera@ce}}
                {}}%
            \endgroup}
           {}}}%
@@ -7160,10 +7160,8 @@
 \def\do#1{\expandafter\newlength\expandafter{\csname #1width\endcsname}}
 \abx at dolabelfields
 
-\newlength{\locallabelnumberwidth}
-\newlength{\locallabelalphawidth}
 \def\do#1{\expandafter\newlength\expandafter{\csname local#1width\endcsname}}
-\abx at dolabelfields
+\abx at dolabelwidths
 
 \protected\def\blx at resetdata{%
   \let\blx at saved@do\do
@@ -7304,13 +7302,12 @@
   \begingroup
   \def\item{\MessageBreak-\space}%
   \def\break{\MessageBreak\space\space}%
-  \edef\blx at tempa{%
+  \blx at warning@noline{%
     Biber reported the following issues%
     \ifdef\abx at field@entrykey
       {\MessageBreak with '\abx at field@entrykey'}
       {}%
     :#1}%
-  \blx at warning@noline{\blx at tempa}%
   \endgroup}
 
 % {<field>}{<code>}
@@ -7860,6 +7857,7 @@
 
 % {<entrykey>}
 \protected\def\blx at bbl@xref#1{}% No-op to avoid an error with BibTeX .bbl
+\protected\def\blx at bbl@fakeset#1{}% No-op to avoid an error with BibTeX .bbl
 
 % {<keyword>,...}
 \protected\def\blx at bbl@keyw#1{%
@@ -7869,13 +7867,35 @@
 \def\blx at addkeyword#1#2{%
   \listcsxadd{blx at keyw@\the\c at refsection @\detokenize{#2}}{#1}}
 
+\newcommand*{\blx at ifcatcode@other}[1]{%
+  \ifnumequal{\catcode\number`#1}{12}}
+
 % {<options>}
 \protected\long\def\blx at bbl@options#1{%
-  \begingroup
+  \ifblank{#1}
+    {}
+    {\begingroup
+     \blx at ifcatcode@other{,}
+       {\blx at ifcatcode@other{=}}
+       {\@secondoftwo}
+     {\blx at bbl@options at check{#1}}
+     {\ifundef\blx at bbl@options at warncatcode
+        {\blx at warning@noline{%
+           Irregular catcode regime detected.\MessageBreak
+           Attempting to work around this with \string\scantokens}%
+         \global\let\blx at bbl@options at warncatcode\@empty}
+        {}%
+      \makeatletter
+      \@makeother\=
+      \@makeother\'
+      \endlinechar\m at ne
+      \scantokens\expandafter{\blx at bbl@options at check{#1}}}}}
+
+\long\def\blx at bbl@options at check#1{%
   \let\blx at tempa\@empty
-  \forcsvlist\blx at bbl@options at i{#1}%
+  \forcsvlist\blx at bbl@options at checkopt{#1}%
   \edef\blx at tempa{%
-    \endgroup
+    \endgroup % this group was opened in \blx at bbl@options
     \ifx\blx at tempa\@empty
     \else
       \def\noexpand\abx at field@options{\expandonce\blx at tempa}%
@@ -7882,10 +7902,11 @@
     \fi}%
   \blx at tempa}
 
-\long\def\blx at bbl@options at i#1{\blx at bbl@options at ii#1==&}
 
-\long\def\blx at bbl@options at ii#1=#2=#3&{%
-  \ifcsundef{KV at blx@opt at ent@#1}
+\long\def\blx at bbl@options at checkopt#1{\blx at bbl@options at checkopt@i#1==&}
+
+\long\def\blx at bbl@options at checkopt@i#1=#2=#3&{%
+  \blx at kv@ifkeyundef{blx at opt@ent}{#1}
     {\blx at warning@noline{%
        Ignoring undefined option '#1'\MessageBreak
        at entry '\abx at field@entrykey'}}
@@ -7971,107 +7992,43 @@
        % in which case we only set labelyear.
        {\ifcsundef{abx at field@\abx at field@labeldatesource}
          % \DeclareLabeldate resolved to a literal/localisation string
-         {\edef\abx at field@labelyear{\abx at field@labeldatesource}}
+         {\let\abx at field@labelyear\abx at field@labeldatesource}
          % \DeclareLabeldate resolved to a non-date field.  Not safe to \edef because
-         % such contents could contain arbitrary macros, unlike ETDF sourced labeldatesource values
+         % such contents could contain arbitrary macros, unlike EDTF sourced labeldatesource values
          {\letcs\abx at field@labelyear{abx at field@\abx at field@labeldatesource}}}
        % \DeclareLabeldate resolved to a date field name prefix like '', 'event', 'url'
        % or 'orig'
        {% labeldateera/labelenddateera
-        \ifcsdef{abx at field@\abx at field@labeldatesource dateera}
-          {\edef\abx at field@labeldateera{\csuse{abx at field@\abx at field@labeldatesource dateera}}}
-          {}%
-        \ifcsdef{abx at field@\abx at field@labeldatesource enddateera}
-          {\edef\abx at field@labelenddateera{\csuse{abx at field@\abx at field@labeldatesource enddateera}}}
-          {}%
-        % labelyear/labelendyear
-        \ifcsdef{abx at field@\abx at field@labeldatesource year}
-          {\edef\abx at field@labelyear{\csuse{abx at field@\abx at field@labeldatesource year}}}
-          {}%
-        \ifcsdef{abx at field@\abx at field@labeldatesource endyear}
-          {\edef\abx at field@labelendyear{\csuse{abx at field@\abx at field@labeldatesource endyear}}}
-          {}%
-        % labelmonth
-        \ifcsdef{abx at field@\abx at field@labeldatesource month}
-          {\edef\abx at field@labelmonth{\csuse{abx at field@\abx at field@labeldatesource month}}}
-          {}%
-        \ifcsdef{abx at field@\abx at field@labeldatesource endmonth}
-          {\edef\abx at field@labelendmonth{\csuse{abx at field@\abx at field@labeldatesource endmonth}}}
-          {}%
-        % labelday/labelendday
-        \ifcsdef{abx at field@\abx at field@labeldatesource day}
-          {\edef\abx at field@labelday{\csuse{abx at field@\abx at field@labeldatesource day}}}
-          {}%
-        \ifcsdef{abx at field@\abx at field@labeldatesource endday}
-          {\edef\abx at field@labelendday{\csuse{abx at field@\abx at field@labeldatesource endday}}}
-          {}%
-        % labelhour/labelendhour
-        \ifcsdef{abx at field@\abx at field@labeldatesource hour}
-          {\edef\abx at field@labelhour{\csuse{abx at field@\abx at field@labeldatesource hour}}}
-          {}%
-        \ifcsdef{abx at field@\abx at field@labeldatesource endhour}
-          {\edef\abx at field@labelendhour{\csuse{abx at field@\abx at field@labeldatesource endhour}}}
-          {}%
-        % labelminute/labelendminute
-        \ifcsdef{abx at field@\abx at field@labeldatesource minute}
-          {\edef\abx at field@labelminute{\csuse{abx at field@\abx at field@labeldatesource minute}}}
-          {}%
-        \ifcsdef{abx at field@\abx at field@labeldatesource endminute}
-          {\edef\abx at field@labelendminute{\csuse{abx at field@\abx at field@labeldatesource endminute}}}
-          {}%
-        % labelsecond/labelendsecond
-        \ifcsdef{abx at field@\abx at field@labeldatesource second}
-          {\edef\abx at field@labelsecond{\csuse{abx at field@\abx at field@labeldatesource second}}}
-          {}%
-        \ifcsdef{abx at field@\abx at field@labeldatesource endsecond}
-          {\edef\abx at field@labelendsecond{\csuse{abx at field@\abx at field@labeldatesource endsecond}}}
-          {}%
-        % labeltimezone/labelendtimezone
-        \ifcsdef{abx at field@\abx at field@labeldatesource timezone}
-          {\edef\abx at field@labeltimezone{\csuse{abx at field@\abx at field@labeldatesource timezone}}}
-          {}%
-        \ifcsdef{abx at field@\abx at field@labeldatesource endtimezone}
-          {\edef\abx at field@labelendtimezone{\csuse{abx at field@\abx at field@labeldatesource endtimezone}}}
-          {}%
-        % labelseason/labelendseason
-        \ifcsdef{abx at field@\abx at field@labeldatesource season}
-          {\edef\abx at field@labelseason{\csuse{abx at field@\abx at field@labeldatesource season}}}
-          {}%
-        \ifcsdef{abx at field@\abx at field@labeldatesource endseason}
-          {\edef\abx at field@labelendseason{\csuse{abx at field@\abx at field@labeldatesource endseason}}}
-          {}%
-        % labeldateunspecified
-        \ifcsdef{abx at field@\abx at field@labeldatesource dateunspecified}
-          {\csletcs{abx at field@labeldateunspecified}{abx at field@\abx at field@labeldatesource dateunspecified}}
-          {}%
-        % labeldatecirca/labelenddatecirca
-        \ifcsdef{etb at tgl@abx at bool@\abx at field@labeldatesource datecirca}
-          {\csletcs{etb at tgl@abx at bool@labeldatecirca}{etb at tgl@abx at bool@\abx at field@labeldatesource datecirca}}
-          {}%
-        \ifcsdef{etb at tgl@abx at bool@\abx at field@labeldatesource enddatecirca}
-          {\csletcs{etb at tgl@abx at bool@labelenddatecirca}{etb at tgl@abx at bool@\abx at field@labeldatesource enddatecirca}}
-          {}%
-        % labeldatejulian/labelenddatejulian
-        \ifcsdef{etb at tgl@abx at bool@\abx at field@labeldatesource datejulian}
-          {\csletcs{etb at tgl@abx at bool@labeldatejulian}{etb at tgl@abx at bool@\abx at field@labeldatesource datejulian}}
-          {}%
-        \ifcsdef{etb at tgl@abx at bool@\abx at field@labeldatesource enddatejulian}
-          {\csletcs{etb at tgl@abx at bool@labelenddatejulian}{etb at tgl@abx at bool@\abx at field@labeldatesource enddatejulian}}
-          {}%
-        % labeldateuncertain/labelenddateuncertain
-        \ifcsdef{etb at tgl@abx at bool@\abx at field@labeldatesource dateuncertain}
-          {\csletcs{etb at tgl@abx at bool@labeldateuncertain}{etb at tgl@abx at bool@\abx at field@labeldatesource dateuncertain}}
-          {}%
-        \ifcsdef{etb at tgl@abx at bool@\abx at field@labeldatesource enddateuncertain}
-          {\csletcs{etb at tgl@abx at bool@labelenddateuncertain}{etb at tgl@abx at bool@\abx at field@labeldatesource enddateuncertain}}
-          {}%
-        % labeldateunknown/labelenddateunknown
-        \ifcsdef{etb at tgl@abx at bool@\abx at field@labeldatesource dateunknown}
-          {\csletcs{etb at tgl@abx at bool@labeldateunknown}{etb at tgl@abx at bool@\abx at field@labeldatesource dateunknown}}
-          {}%
-        \ifcsdef{etb at tgl@abx at bool@\abx at field@labeldatesource enddateunknown}
-          {\csletcs{etb at tgl@abx at bool@labelenddateunknown}{etb at tgl@abx at bool@\abx at field@labeldatesource enddateunknown}}
-          {}}}}
+        \letcs\abx at field@labeldateera{abx at field@\abx at field@labeldatesource dateera}%
+        \letcs\abx at field@labelenddateera{abx at field@\abx at field@labeldatesource enddateera}%
+        \letcs\abx at field@labelyear{abx at field@\abx at field@labeldatesource year}%
+        \letcs\abx at field@labelendyear{abx at field@\abx at field@labeldatesource endyear}%
+        \letcs\abx at field@labelmonth{abx at field@\abx at field@labeldatesource month}%
+        \letcs\abx at field@labelendmonth{abx at field@\abx at field@labeldatesource endmonth}%
+        \letcs\abx at field@labelday{abx at field@\abx at field@labeldatesource day}%
+        \letcs\abx at field@labelendday{abx at field@\abx at field@labeldatesource endday}%
+        \letcs\abx at field@labelhour{abx at field@\abx at field@labeldatesource hour}%
+        \letcs\abx at field@labelendhour{abx at field@\abx at field@labeldatesource endhour}%
+        \letcs\abx at field@labelminute{abx at field@\abx at field@labeldatesource minute}%
+        \letcs\abx at field@labelendminute{abx at field@\abx at field@labeldatesource endminute}%
+        \letcs\abx at field@labelsecond{abx at field@\abx at field@labeldatesource second}%
+        \letcs\abx at field@labelendsecond{abx at field@\abx at field@labeldatesource endsecond}%
+        \letcs\abx at field@labeltimezone{abx at field@\abx at field@labeldatesource timezone}%
+        \letcs\abx at field@labelendtimezone{abx at field@\abx at field@labeldatesource endtimezone}%
+        \letcs\abx at field@labelseason{abx at field@\abx at field@labeldatesource season}%
+        \letcs\abx at field@labelendseason{abx at field@\abx at field@labeldatesource endseason}%
+        \letcs\abx at field@labeldateunspecified{abx at field@\abx at field@labeldatesource dateunspecified}%
+        \letcs\etb at tgl@abx at bool@labeldatecirca{etb at tgl@abx at bool@\abx at field@labeldatesource datecirca}%
+        \letcs\etb at tgl@abx at bool@labelenddatecirca{etb at tgl@abx at bool@\abx at field@labeldatesource enddatecirca}%
+        \letcs\etb at tgl@abx at bool@labeldatejulian{etb at tgl@abx at bool@\abx at field@labeldatesource datejulian}%
+        \letcs\etb at tgl@abx at bool@labelenddatejulian{etb at tgl@abx at bool@\abx at field@labeldatesource enddatejulian}%
+        \letcs\etb at tgl@abx at bool@labeldateuncertain{etb at tgl@abx at bool@\abx at field@labeldatesource dateuncertain}%
+        \letcs\etb at tgl@abx at bool@labelenddateuncertain{etb at tgl@abx at bool@\abx at field@labeldatesource enddateuncertain}%
+        \letcs\etb at tgl@abx at bool@labeldateunknown{etb at tgl@abx at bool@\abx at field@labeldatesource dateunknown}%
+        \letcs\etb at tgl@abx at bool@labelenddateunknown{etb at tgl@abx at bool@\abx at field@labeldatesource enddateunknown}%
+       }%
+    }%
+}
 
 % This gets the entry data for a citation
 \def\blx at getdata@cite#1{%
@@ -8080,26 +8037,35 @@
   \ifcsdef{blx at setc@\the\c at refsection @#1}
     {\blx at ifdata{#1}
        {\def\abx at field@childentrykey{#1}%LEGACY(<3.8)
-        \edef\abx at field@childentrytype{\abx at field@entrytype}%LEGACY(<3.8)
+        \let\abx at field@childentrytype\abx at field@entrytype %LEGACY(<3.8)
         \begingroup
-        \expandafter\expandafter\expandafter\blx at getdata\expandafter\expandafter\expandafter{%
-          \csname blx at setc@\the\c at refsection @#1\endcsname}%
+        \expandafter\expandafter\expandafter\blx at getdata
+          \expandafter\expandafter\expandafter{%
+            \csname blx at setc@\the\c at refsection @#1\endcsname}%
         \let\blx at tempa\@empty
         % Inject labelnumber if it exists
         \ifdef\abx at field@labelnumber
-          {\appto\blx at tempa{\def\noexpand\abx at field@labelnumber{\abx at field@labelnumber}}}
+          {\appto\blx at tempa{%
+             \def\noexpand\abx at field@labelnumber{%
+               \expandonce\abx at field@labelnumber}}}
           {}%
         % Inject labelprefix if it exists
         \ifdef\abx at field@labelprefix
-          {\appto\blx at tempa{\def\noexpand\abx at field@labelprefix{\abx at field@labelprefix}}}
+          {\appto\blx at tempa{%
+             \def\noexpand\abx at field@labelprefix{%
+               \expandonce\abx at field@labelprefix}}}
           {}%
         % Inject labelalpha if it exists
         \ifdef\abx at field@labelalpha
-          {\appto\blx at tempa{\def\noexpand\abx at field@labelalpha{\abx at field@labelalpha}}}
+          {\appto\blx at tempa{%
+             \def\noexpand\abx at field@labelalpha{%
+               \expandonce\abx at field@labelalpha}}}
           {}%
         % Inject extraalpha if it exists
         \ifdef\abx at field@extraalpha
-          {\appto\blx at tempa{\def\noexpand\abx at field@extraalpha{\abx at field@extraalpha}}}
+          {\appto\blx at tempa{%
+              \def\noexpand\abx at field@extraalpha{%
+                \expandonce\abx at field@extraalpha}}}
           {}%
         % Perform the injection
         \edef\blx at tempb{\endgroup\blx at tempa}%
@@ -8118,7 +8084,7 @@
     {}
     {\begingroup
      \edef\blx at tempa{\endgroup
-       \noexpand\setkeys{blx at opt@ent}{\abx at field@options}}%
+       \noexpand\blx at kv@setkeys{blx at opt@ent}{\abx at field@options}}%
      \blx at tempa
      \blx at checkoptions@entry}}
 
@@ -8126,7 +8092,7 @@
   \ifcsdef{blx at opts@type@#1}
     {\begingroup
      \edef\blx at tempa{\endgroup
-       \noexpand\setkeys{blx at opt@typ}{\csuse{blx at opts@type@#1}}}%
+       \noexpand\blx at kv@setkeys{blx at opt@typ}{\csuse{blx at opts@type@#1}}}%
      \blx at tempa}
     {}}
 
@@ -8172,7 +8138,7 @@
 % for internal use but we always want the aliases themselves in the .bcf
 % so that biber can correctly use and resolve them too.
 \protected\def\blx at bbl@keyalias#1#2{%
-  \csgdef{blx at keyalias@\the\c at refsection @#1}{\detokenize{#2}}%
+  \csxdef{blx at keyalias@\the\c at refsection @#1}{\detokenize{#2}}%
   \listcsgadd{blx at keyaliases@\the\c at refsection}{#1}}
 
 % blx at dlist@list@<section>@<refcontext> - a list of list items in a refcontext in a
@@ -8284,27 +8250,50 @@
   \blx at getformat\abx at tmp@theformat{ffd}{#2}{#3}%
   \csletcs{#1}{abx at tmp@theformat}}
 
+
+% {<instance (int)>}{<field>}{<length>}
+\def\abx at aux@locallabelwidth#1#2#3{%
+  \csgdef{blx at locallabelwidth@#1@#2}{#3}}
+
+\def\blx at locallabelwidth@write at length#1{%
+  \ifdimequal{\csname local#1width\endcsname}{0pt}
+    {}
+    {\blx at auxwrite\@mainaux{}
+       {\string\abx at aux@locallabelwidth
+         {\the\blx at biblioinstance}%
+         {#1}%
+         {\the\csname local#1width\endcsname}}}}
+
+\def\blx at locallabelwidth@write{%
+  \let\do\blx at locallabelwidth@write at length
+  \abx at dolabelwidths}
+
+\let\blx at locallabelwidth@finish\relax
+
 \def\blx at labelwidth@resetlocal{%
-  \locallabelnumberwidth\z@
-  \locallabelalphawidth\z@
   \def\do##1{%
     \csname local##1width\endcsname\z@}%
-  \abx at dolabelfields}
+  \abx at dolabelwidths}
 
+\def\blx at labelwidth@settolocal at length#1{%
+  \ifcsundef{blx at locallabelwidth@\the\blx at biblioinstance @#1}
+    {}
+    {\csname #1width\endcsname
+     \csname blx at locallabelwidth@\the\blx at biblioinstance @#1\endcsname
+     \space}}
+
 \def\blx at labelwidth@settolocal{%
-  \labelnumberwidth\locallabelnumberwidth
-  \labelalphawidth\locallabelalphawidth
-  \def\do##1{%
-    \csname ##1width\endcsname\csname local##1width\endcsname}%
-  \abx at dolabelfields}
+  \let\do\blx at labelwidth@settolocal at length
+  \abx at dolabelwidths}
 
-\def\blx at locallabelwidth#1{%
+\def\blx at locallabelwidth@setlengths{%
+  \global\advance\blx at biblioinstance\@ne
   \blx at labelwidth@resetlocal
-  \let\blx at do\blx at lengthitem
-  \let\blx at done\relax
-  \blx at listloop{#1}%
   \blx at labelwidth@settolocal}
 
+\let\blx at locallabelwidth@init\relax
+
+
 % {<prefix for labelwidth fields>}
 \def\blx at bbl@labelnumberwidth at numeric#1{%
   \abx at flfw@getfieldformat{abx at flfw@labelnumberwidth}{labelnumberwidth}{}%
@@ -8491,6 +8480,7 @@
   \let\enddatalist\blx at bbl@enddlist
   \let\set\blx at bbl@set
   \let\inset\blx at bbl@inset
+  \let\fakeset\blx at bbl@fakeset % A No-op for Biber
   \let\xref\blx at bbl@xref % A No-op for Biber
   \let\keyw\blx at bbl@keyw
   \let\name\blx at bbl@namedef
@@ -8565,15 +8555,22 @@
   \begingroup
   \def\do#1{\ifinlist{#1}\blx at cites{}{\blx at logreq@active{}}\relax}%
   \dolistloop\blx at lastcites
-  % Special case - if we are using sortingtemplate "none" anywhere, then changes
-  % in citation order matter and we need to re-run biber. So a special test
-  % to see if the cites from last run are identical in order. We have
-  % already tested for more or less cites between runs by now, we are
+  % Special case - if we are using sortingtemplate with \citeorder anywhere,
+  % then changes in citation order matter and we need to re-run biber.
+  % So a special test to see if the cites from last run are identical in order.
+  % We have already tested for more or less cites between runs by now, we are
   % testing here for exactly the same cites by treating the cite and
   % lastcite lists as strings and comparing them. This doesn't apply
   % to biblist sortingtemplates as nobody wants to sort biblists with
   % "none", since it makes no sense
-  \ifinlist{none}\blx at sortingtemplatenames
+  \togglefalse{blx at tempa}%
+  \def\do#1{%
+    \ifcsundef{blx at sortingtemplate@citeorder at relevant@#1}
+      {}
+      {\toggletrue{blx at tempa}%
+       \listbreak}}%
+  \dolistloop\blx at sortingtemplatenames
+  \iftoggle{blx at tempa}
     {\ifdefstrequal{\blx at cites}{\blx at lastcites}
       {}
       {\blx at logreq@active{}}}
@@ -8603,6 +8600,11 @@
       {\def\do#1{\blx at auxwrite\@mainaux{}{#1}}
        \dolistloop\blx at localnumaux}}
     {}%
+  % Wite md5 hash of .bbl to .aux if we need a Biber rerun.
+  % This needs to happen here and not in \blx at check@rerun together with
+  % the other rerun stuff, because \AfterEndBibliography would be too
+  % late for .aux file writing.
+  \blx at aux@write at bbl@mdfivesum
   \endgroup}
 
 % {<instcount>}{<entrykey>}{<refsection>}{<refcontext>}{<labelnumber>}
@@ -8682,8 +8684,8 @@
     \appto\blx at tempa{{##1}}%
     \advance\blx at tempcnta\@ne}%
   \dolistcsloop{blx at pref@\the\c at refsection @#1}%
-  \edef\blx at tempa{\endgroup\noexpand\blx at bbl@listdef
-    {pageref}{\the\blx at tempcnta}{\expandonce{\blx at tempa}}}%
+  \edef\blx at tempa{\endgroup
+    \noexpand\blx at bbl@listdef{pageref}{\the\blx at tempcnta}{\expandonce{\blx at tempa}}}%
   \blx at tempa}
 
 %% Data input
@@ -8701,12 +8703,18 @@
   \blx at ifsigned{\jobname}{bbl}
     {\InputIfFileExists{\jobname.bbl}
        {\blx at info@noline{... file '\jobname.bbl' found}%
-        \global\toggletrue{blx at bbldone}}
+        \global\toggletrue{blx at bbldone}%
+        \blx at generate@bbl at mdfivesum@found}
        {\blx at info@noline{... file '\jobname.bbl' not found}%
-        \typeout{No file \jobname.bbl.}}}
-    {}%
+        \typeout{No file \jobname.bbl.}%
+        % 'nobblfile' can never be equal to any mdfivehash
+        \blx at generate@bbl at mdfivesum@notfound}}
+    {\blx at generate@bbl at mdfivesum@notfound}%
   \blx at bblend
   \endgroup
+  % Check if Biber rerun was not carried out.
+  % If so, ask for it again.
+  \blx at check@bbl at rerun@mdfivesum
   % global sorting as this is called at BeginDocument
   \csnumgdef{blx at labelnumber@\the\c at refsection}{0}}
 
@@ -8749,7 +8757,7 @@
 
 \def\blx at defbibheading#1[#2]{%
   \csundef{#1}%
-  \expandafter\newcommand\csname#1\endcsname[1][#2]}
+  \expandafter\newcommand\csname#1\endcsname[1][{#2}]}
 
 % {<name>}{<text>}
 \newrobustcmd*{\defbibnote}[1]{%
@@ -8823,76 +8831,76 @@
 % We need a 2-pass structure for options in \printbibliography and
 % \printbiblist because the section has to be set before any
 % other options and this partly determines which list to use for later filtering
-\define at key{blx at bib1}{segment}{}
-\define at key{blx at bib1}{type}{}
-\define at key{blx at bib1}{nottype}{}
-\define at key{blx at bib1}{subtype}{}
-\define at key{blx at bib1}{notsubtype}{}
-\define at key{blx at bib1}{keyword}{}
-\define at key{blx at bib1}{notkeyword}{}
-\define at key{blx at bib1}{category}{}
-\define at key{blx at bib1}{notcategory}{}
-\define at key{blx at bib1}{filter}{}
-\define at key{blx at bib1}{check}{}
-\define at key{blx at bib1}{heading}{}
-\define at key{blx at bib1}{env}{}
-\define at key{blx at bib1}{title}{}
-\define at key{blx at bib1}{prenote}{}
-\define at key{blx at bib1}{postnote}{}
-\define at key{blx at bib1}{omitnumbers}[]{}
+\blx at kv@defkey{blx at bib1}{segment}{}
+\blx at kv@defkey{blx at bib1}{type}{}
+\blx at kv@defkey{blx at bib1}{nottype}{}
+\blx at kv@defkey{blx at bib1}{subtype}{}
+\blx at kv@defkey{blx at bib1}{notsubtype}{}
+\blx at kv@defkey{blx at bib1}{keyword}{}
+\blx at kv@defkey{blx at bib1}{notkeyword}{}
+\blx at kv@defkey{blx at bib1}{category}{}
+\blx at kv@defkey{blx at bib1}{notcategory}{}
+\blx at kv@defkey{blx at bib1}{filter}{}
+\blx at kv@defkey{blx at bib1}{check}{}
+\blx at kv@defkey{blx at bib1}{heading}{}
+\blx at kv@defkey{blx at bib1}{env}{}
+\blx at kv@defkey{blx at bib1}{title}{}
+\blx at kv@defkey{blx at bib1}{prenote}{}
+\blx at kv@defkey{blx at bib1}{postnote}{}
+\blx at kv@defkey{blx at bib1}{omitnumbers}[]{}
 % Here we are using the first pass to see if there is an explicit setting for resetnumbers
 % If there isn't we will use the default behaviour where if there is a labelprefix,
 % resetnumbers will default to "true"
-\define at key{blx at bib1}{resetnumbers}[true]{%
+\blx at kv@defkey{blx at bib1}{resetnumbers}[true]{%
   \toggletrue{blx at resetnumsexplicit}}
 
-\define at key{blx at bib2}{section}{}
-\define at key{blx at bib2}{sorting}{}
+\blx at kv@defkey{blx at bib2}{section}{}
+\blx at kv@defkey{blx at bib2}{sorting}{}
 
-\define at key{blx at biblist1}{segment}{}
-\define at key{blx at biblist1}{type}{}
-\define at key{blx at biblist1}{nottype}{}
-\define at key{blx at biblist1}{subtype}{}
-\define at key{blx at biblist1}{notsubtype}{}
-\define at key{blx at biblist1}{keyword}{}
-\define at key{blx at biblist1}{notkeyword}{}
-\define at key{blx at biblist1}{category}{}
-\define at key{blx at biblist1}{notcategory}{}
-\define at key{blx at biblist1}{filter}{}
-\define at key{blx at biblist1}{check}{}
-\define at key{blx at biblist1}{heading}{}
-\define at key{blx at biblist1}{env}{}
-\define at key{blx at biblist1}{title}{}
-\define at key{blx at biblist1}{prenote}{}
-\define at key{blx at biblist1}{postnote}{}
+\blx at kv@defkey{blx at biblist1}{segment}{}
+\blx at kv@defkey{blx at biblist1}{type}{}
+\blx at kv@defkey{blx at biblist1}{nottype}{}
+\blx at kv@defkey{blx at biblist1}{subtype}{}
+\blx at kv@defkey{blx at biblist1}{notsubtype}{}
+\blx at kv@defkey{blx at biblist1}{keyword}{}
+\blx at kv@defkey{blx at biblist1}{notkeyword}{}
+\blx at kv@defkey{blx at biblist1}{category}{}
+\blx at kv@defkey{blx at biblist1}{notcategory}{}
+\blx at kv@defkey{blx at biblist1}{filter}{}
+\blx at kv@defkey{blx at biblist1}{check}{}
+\blx at kv@defkey{blx at biblist1}{heading}{}
+\blx at kv@defkey{blx at biblist1}{env}{}
+\blx at kv@defkey{blx at biblist1}{title}{}
+\blx at kv@defkey{blx at biblist1}{prenote}{}
+\blx at kv@defkey{blx at biblist1}{postnote}{}
 
-\define at key{blx at biblist2}{section}{}
-\define at key{blx at biblist2}{sorting}{}
+\blx at kv@defkey{blx at biblist2}{section}{}
+\blx at kv@defkey{blx at biblist2}{sorting}{}
 
-\define at key{blx at bib1}{section}{%
+\blx at kv@defkey{blx at bib1}{section}{%
   \ifcsundef{blx at sections@#1}
     {\blx at err@nosec{#1}}
     {\c at refsection#1\relax
      \def\blx at tempe{#1}}}
 
-\define at key{blx at biblist1}{section}{%
+\blx at kv@defkey{blx at biblist1}{section}{%
   \ifcsundef{blx at sections@#1}
     {\blx at err@nosec{#1}}
     {\c at refsection#1\relax
      \def\blx at tempe{#1}}}
 
-\define at key{blx at bbg}{section}{%
+\blx at kv@defkey{blx at bbg}{section}{%
   \ifcsundef{blx at sections@#1}
     {\blx at err@nosec{#1}}
     {\c at refsection#1\relax}}
 
-\define at key{blx at bbc}{section}{%
+\blx at kv@defkey{blx at bbc}{section}{%
   \ifcsundef{blx at sections@#1}
     {\blx at err@nosec{#1}}
     {\c at refsection#1\relax}}
 
-\define at key{blx at bib2}{segment}{\blx at key@segment{#1}}
-\define at key{blx at biblist2}{segment}{\blx at key@segment{#1}}
+\blx at kv@defkey{blx at bib2}{segment}{\blx at key@segment{#1}}
+\blx at kv@defkey{blx at biblist2}{segment}{\blx at key@segment{#1}}
 
 \def\blx at key@segment#1{%
   \ifcsundef{blx at segm@\the\c at refsection @#1}
@@ -8901,8 +8909,8 @@
      \blx at printbibchecks
      \blx at filter\blx at tempa{blx at segm@\the\c at refsection @#1}}}
 
-\define at key{blx at bib2}{type}{\blx at key@type{#1}}
-\define at key{blx at biblist2}{type}{\blx at key@type{#1}}
+\blx at kv@defkey{blx at bib2}{type}{\blx at key@type{#1}}
+\blx at kv@defkey{blx at biblist2}{type}{\blx at key@type{#1}}
 
 \def\blx at key@type#1{%
   \ifcsundef{blx at type@\the\c at refsection @#1}
@@ -8920,8 +8928,8 @@
            hence some options may not be used twice.\MessageBreak
            Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}}
 
-\define at key{blx at bib2}{nottype}{\blx at key@nottype{#1}}
-\define at key{blx at biblist2}{nottype}{\blx at key@nottype{#1}}
+\blx at kv@defkey{blx at bib2}{nottype}{\blx at key@nottype{#1}}
+\blx at kv@defkey{blx at biblist2}{nottype}{\blx at key@nottype{#1}}
 
 \def\blx at key@nottype#1{%
   \ifcsundef{blx at type@\the\c at refsection @#1}
@@ -8929,8 +8937,8 @@
     {\blx at printbibchecks
      \blx at notfilter\blx at tempa{blx at type@\the\c at refsection @#1}}}
 
-\define at key{blx at bib2}{subtype}{\blx at key@subtype{#1}}
-\define at key{blx at biblist2}{subtype}{\blx at key@subtype{#1}}
+\blx at kv@defkey{blx at bib2}{subtype}{\blx at key@subtype{#1}}
+\blx at kv@defkey{blx at biblist2}{subtype}{\blx at key@subtype{#1}}
 
 \def\blx at key@subtype#1{%
   \ifcsundef{blx at subt@\the\c at refsection @#1}
@@ -8948,8 +8956,8 @@
            hence some options may not be used twice.\MessageBreak
            Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}}
 
-\define at key{blx at bib2}{notsubtype}{\blx at key@notsubtype{#1}}
-\define at key{blx at biblist2}{notsubtype}{\blx at key@notsubtype{#1}}
+\blx at kv@defkey{blx at bib2}{notsubtype}{\blx at key@notsubtype{#1}}
+\blx at kv@defkey{blx at biblist2}{notsubtype}{\blx at key@notsubtype{#1}}
 
 \def\blx at key@notsubtype#1{%
   \ifcsundef{blx at subt@\the\c at refsection @#1}
@@ -8957,8 +8965,8 @@
     {\blx at printbibchecks
      \blx at notfilter\blx at tempa{blx at subt@\the\c at refsection @#1}}}
 
-\define at key{blx at bib2}{keyword}{\blx at key@keyword{#1}}
-\define at key{blx at biblist2}{keyword}{\blx at key@keyword{#1}}
+\blx at kv@defkey{blx at bib2}{keyword}{\blx at key@keyword{#1}}
+\blx at kv@defkey{blx at biblist2}{keyword}{\blx at key@keyword{#1}}
 
 \def\blx at key@keyword#1{%
   \ifcsundef{blx at keyw@\the\c at refsection @\detokenize{#1}}
@@ -8967,8 +8975,8 @@
     {\blx at printbibchecks
      \blx at filter\blx at tempa{blx at keyw@\the\c at refsection @\detokenize{#1}}}}
 
-\define at key{blx at bib2}{notkeyword}{\blx at key@notkeyword{#1}}
-\define at key{blx at biblist2}{notkeyword}{\blx at key@notkeyword{#1}}
+\blx at kv@defkey{blx at bib2}{notkeyword}{\blx at key@notkeyword{#1}}
+\blx at kv@defkey{blx at biblist2}{notkeyword}{\blx at key@notkeyword{#1}}
 
 \def\blx at key@notkeyword#1{%
   \ifcsundef{blx at keyw@\the\c at refsection @\detokenize{#1}}
@@ -8976,8 +8984,8 @@
     {\blx at printbibchecks
      \blx at notfilter\blx at tempa{blx at keyw@\the\c at refsection @\detokenize{#1}}}}
 
-\define at key{blx at bib2}{category}{\blx at key@category{#1}}
-\define at key{blx at biblist2}{category}{\blx at key@category{#1}}
+\blx at kv@defkey{blx at bib2}{category}{\blx at key@category{#1}}
+\blx at kv@defkey{blx at biblist2}{category}{\blx at key@category{#1}}
 
 \def\blx at key@category#1{%
   \ifcsundef{blx at catg@\detokenize{#1}}
@@ -8986,8 +8994,8 @@
     {\blx at printbibchecks
      \blx at filter\blx at tempa{blx at catg@\detokenize{#1}}}}
 
-\define at key{blx at bib2}{notcategory}{\blx at key@notcategory{#1}}
-\define at key{blx at biblist2}{notcategory}{\blx at key@notcategory{#1}}
+\blx at kv@defkey{blx at bib2}{notcategory}{\blx at key@notcategory{#1}}
+\blx at kv@defkey{blx at biblist2}{notcategory}{\blx at key@notcategory{#1}}
 
 \def\blx at key@notcategory#1{%
   \ifcsundef{blx at catg@#1}
@@ -8995,8 +9003,8 @@
     {\blx at printbibchecks
      \blx at notfilter\blx at tempa{blx at catg@#1}}}
 
-\define at key{blx at bib2}{filter}{\blx at key@filter{#1}}
-\define at key{blx at biblist2}{filter}{\blx at key@filter{#1}}
+\blx at kv@defkey{blx at bib2}{filter}{\blx at key@filter{#1}}
+\blx at kv@defkey{blx at biblist2}{filter}{\blx at key@filter{#1}}
 
 \def\blx at key@filter#1{%
   \ifcsdef{blx at filter@#1}
@@ -9008,8 +9016,8 @@
        {The filter '#1' could not be found.\MessageBreak
         Use \string\defbibfilter\space to define it}}}
 
-\define at key{blx at bib2}{check}{\blx at key@bibcheck{#1}}
-\define at key{blx at biblist2}{check}{\blx at key@bibcheck{#1}}
+\blx at kv@defkey{blx at bib2}{check}{\blx at key@bibcheck{#1}}
+\blx at kv@defkey{blx at biblist2}{check}{\blx at key@bibcheck{#1}}
 
 % empty bibcheck does nothing
 \cslet{blx at bibcheck@}\relax
@@ -9023,17 +9031,17 @@
         Use \string\defbibcheck\space to define it}}}
 
 \def\blx at default@theheading{bibliography}
-\define at key{blx at bibdefaults}{heading}{%
+\blx at kv@defkey{blx at bibdefaults}{heading}{%
   \blx at key@heading{\blx at default@theheading}{#1}}
-\define at key{blx at bhd}{heading}{%
+\blx at kv@defkey{blx at bhd}{heading}{%
   \blx at key@heading{\blx at theheading}{#1}}
-\define at key{blx at bib2}{heading}{%
+\blx at kv@defkey{blx at bib2}{heading}{%
   \blx at key@heading{\blx at theheading}{#1}}
-\define at key{blx at biblist2}{heading}{%
+\blx at kv@defkey{blx at biblist2}{heading}{%
   \blx at key@heading{\blx at theheading}{#1}}
-\define at key{blx at bbs}{heading}{%
+\blx at kv@defkey{blx at bbs}{heading}{%
   \blx at key@heading{\blx at theheading}{#1}}
-\define at key{blx at bbg}{heading}{%
+\blx at kv@defkey{blx at bbg}{heading}{%
   \blx at key@heading{\blx at theheading}{#1}}
 
 \def\blx at key@heading#1#2{%
@@ -9045,13 +9053,13 @@
      {\def#1{#2}}}
 
 \def\blx at default@theenv{bibliography}
-\define at key{blx at bibdefaults}{env}{%
+\blx at kv@defkey{blx at bibdefaults}{env}{%
   \blx at key@env{\blx at default@theenv}{#1}}
-\define at key{blx at bib2}{env}{\blx at key@env{\blx at theenv}{#1}}
-\define at key{blx at biblist2}{env}{\blx at key@env{\blx at theenv}{#1}}
-\define at key{blx at bbs}{env}{\blx at key@env{\blx at theenv}{#1}}
-\define at key{blx at bbg}{env}{\blx at key@env{\blx at theenv}{#1}}
-\define at key{blx at bbc}{env}{\blx at key@env{\blx at theenv}{#1}}
+\blx at kv@defkey{blx at bib2}{env}{\blx at key@env{\blx at theenv}{#1}}
+\blx at kv@defkey{blx at biblist2}{env}{\blx at key@env{\blx at theenv}{#1}}
+\blx at kv@defkey{blx at bbs}{env}{\blx at key@env{\blx at theenv}{#1}}
+\blx at kv@defkey{blx at bbg}{env}{\blx at key@env{\blx at theenv}{#1}}
+\blx at kv@defkey{blx at bbc}{env}{\blx at key@env{\blx at theenv}{#1}}
 
 \def\blx at key@env#1#2{%
   \ifcsundef{blx at env@#2}
@@ -9062,11 +9070,11 @@
      {\def#1{#2}}}
 
 \let\blx at default@thetitle\@empty
-\define at key{blx at bibdefaults}{title}{%
+\blx at kv@defkey{blx at bibdefaults}{title}{%
   \def\blx at default@thetitle{#1}}
-\define at key{blx at bhd}{title}{\def\blx at thetitle{#1}}
-\define at key{blx at bib2}{title}{\def\blx at thetitle{#1}}
-\define at key{blx at biblist2}{title}{\def\blx at thetitle{#1}}
+\blx at kv@defkey{blx at bhd}{title}{\def\blx at thetitle{#1}}
+\blx at kv@defkey{blx at bib2}{title}{\def\blx at thetitle{#1}}
+\blx at kv@defkey{blx at biblist2}{title}{\def\blx at thetitle{#1}}
 
 \cslet{blx at note@}\@empty
 \def\blx at key@bibnote#1#2{%
@@ -9078,49 +9086,51 @@
     {\def#1{#2}}}
 
 \let\blx at default@theprenote\@empty
-\define at key{blx at bibdefaults}{prenote}{%
+\blx at kv@defkey{blx at bibdefaults}{prenote}{%
   \blx at key@bibnote{\blx at default@theprenote}{#1}}
-\define at key{blx at bib2}{prenote}{%
+\blx at kv@defkey{blx at bib2}{prenote}{%
   \blx at key@bibnote{\blx at theprenote}{#1}}
-\define at key{blx at biblist2}{prenote}{%
+\blx at kv@defkey{blx at biblist2}{prenote}{%
   \blx at key@bibnote{\blx at theprenote}{#1}}
-\define at key{blx at bbs}{prenote}{%
+\blx at kv@defkey{blx at bbs}{prenote}{%
   \blx at key@bibnote{\blx at theprenote}{#1}}
-\define at key{blx at bbg}{prenote}{%
+\blx at kv@defkey{blx at bbg}{prenote}{%
   \blx at key@bibnote{\blx at theprenote}{#1}}
-\define at key{blx at bbc}{prenote}{%
+\blx at kv@defkey{blx at bbc}{prenote}{%
   \blx at key@bibnote{\blx at theprenote}{#1}}
 
 \let\blx at default@thepostnote\@empty
-\define at key{blx at bibdefaults}{postnote}{%
+\blx at kv@defkey{blx at bibdefaults}{postnote}{%
   \blx at key@bibnote{\blx at default@thepostnote}{#1}}
-\define at key{blx at bib2}{postnote}{%
+\blx at kv@defkey{blx at bib2}{postnote}{%
   \blx at key@bibnote{\blx at thepostnote}{#1}}
-\define at key{blx at biblist2}{postnote}{%
+\blx at kv@defkey{blx at biblist2}{postnote}{%
   \blx at key@bibnote{\blx at thepostnote}{#1}}
-\define at key{blx at bbs}{postnote}{%
+\blx at kv@defkey{blx at bbs}{postnote}{%
   \blx at key@bibnote{\blx at thepostnote}{#1}}
-\define at key{blx at bbg}{postnote}{%
+\blx at kv@defkey{blx at bbg}{postnote}{%
   \blx at key@bibnote{\blx at thepostnote}{#1}}
-\define at key{blx at bbc}{postnote}{%
+\blx at kv@defkey{blx at bbc}{postnote}{%
   \blx at key@bibnote{\blx at thepostnote}{#1}}
 
-\let\abx at default@locallabelwidth\@gobble
-\define at key{blx at bibdefaults}{locallabelwidth}{%
-  \blx at key@locallabelwidth{\abx at default@locallabelwidth}{#1}}
-\define at key{blx at bib1}{locallabelwidth}[]{}
-\define at key{blx at biblist1}{locallabelwidth}[]{}
-\define at key{blx at bib2}{locallabelwidth}[true]{%
-  \blx at key@locallabelwidth{\abx at locallabelwidth}{#1}}
-\define at key{blx at biblist2}{locallabelwidth}[true]{%
-  \blx at key@locallabelwidth{\abx at locallabelwidth}{#1}}
 
-\def\blx at key@locallabelwidth#1#2{%
-  \ifstrequal{#2}{true}
-    {\def#1{\blx at locallabelwidth}}
-    {\let#1\@gobble}}
+\blx at kv@defkey{blx at bibdefaults}{locallabelwidth}{%
+  \blx at key@locallabelwidth{#1}}
+\blx at kv@defkey{blx at bib1}{locallabelwidth}[]{}
+\blx at kv@defkey{blx at biblist1}{locallabelwidth}[]{}
+\blx at kv@defkey{blx at bib2}{locallabelwidth}[true]{%
+  \blx at key@locallabelwidth{#1}}
+\blx at kv@defkey{blx at biblist2}{locallabelwidth}[true]{%
+  \blx at key@locallabelwidth{#1}}
 
-\define at key{blx at bib2}{resetnumbers}[true]{%
+\def\blx at key@locallabelwidth#1{%
+  \ifstrequal{#1}{true}
+    {\let\blx at locallabelwidth@init\blx at locallabelwidth@setlengths
+     \let\blx at locallabelwidth@finish\blx at locallabelwidth@write}
+    {\let\blx at locallabelwidth@init\relax
+     \let\blx at locallabelwidth@finish\relax}}
+
+\blx at kv@defkey{blx at bib2}{resetnumbers}[true]{%
   \iftoggle{blx at defernumbers}
     {\ifstrequal{#1}{true}
        {\csnumdef{blx at labelnumber@\the\c at refsection}{0}}
@@ -9131,7 +9141,7 @@
        Option 'resetnumbers' requires 'defernumbers=true'.\MessageBreak
        Ignoring 'resetnumbers=true'}}}
 
-\define at key{blx at bib2}{omitnumbers}[true]{%
+\blx at kv@defkey{blx at bib2}{omitnumbers}[true]{%
   \ifstrequal{#1}{true}
     {\iftoggle{blx at defernumbers}
        {\toggletrue{blx at omitnumbers}}
@@ -9142,7 +9152,7 @@
 
 
 \newrobustcmd*{\DeclarePrintbibliographyDefaults}{%
-  \setkeys{blx at bibdefaults}}
+  \blx at kv@setkeys{blx at bibdefaults}}
 
 % [<options>]
 \newrobustcmd*{\printbibheading}{%
@@ -9156,7 +9166,7 @@
   \let\blx at theheading\blx at default@theheading
   \let\blx at thetitle\blx at default@thetitle
   \blx at safe@actives
-  \setkeys{blx at bhd}{#1}%
+  \blx at kv@setkeys{blx at bhd}{#1}%
   \blx at rest@actives
   \blx at bibheading\blx at theheading\blx at thetitle
   \endgroup}
@@ -9188,7 +9198,7 @@
   \edef\blx at tempe{\the\c at refsection}% default refsection is current
   \blx at safe@actives
   \togglefalse{blx at resetnumsexplicit}%
-  \setkeys{blx at bib1}{#1}% First pass options keys - section and resetnumbers
+  \blx at kv@setkeys{blx at bib1}{#1}% First pass options keys - section and resetnumbers
   % Is there a user-specified option for resetnumbers? If so, this overrides the default
   % "labelprefix implies resetnumbers" behaviour
   \iftoggle{blx at resetnumsexplicit}
@@ -9197,7 +9207,7 @@
       {\ifdefempty\blx at refcontext@labelprefix at real}
       {\@secondoftwo}
       {}
-      {\setkeys{blx at bib2}{resetnumbers}}}%
+      {\blx at kv@setkeys{blx at bib2}{resetnumbers}}}%
   \blx at rest@actives
   \ifcsvoid{blx at dlist@entry@\blx at tempe @\blx at refcontext@context}
     {}
@@ -9207,7 +9217,7 @@
   % \printbibliography following one with this set will inherit any
   % previous "true" value
   \togglefalse{blx at omitnumbers}%
-  \setkeys{blx at bib2}{#1}% ... now we have correct \blx at tempa, set rest of options
+  \blx at kv@setkeys{blx at bib2}{#1}% ... now we have correct \blx at tempa, set rest of options
   \blx at rest@actives
   % Add datalist to list of seen datalists to prevent duplicates
   \xifinlist{\blx at refcontext@context @\blx at tempe @entry}\blx at dlistnames
@@ -9239,7 +9249,7 @@
   \let\blx at thetitle\blx at default@thetitle
   \c at refsection\z@
   \blx at safe@actives
-  \setkeys{blx at bbs}{#1}%
+  \blx at kv@setkeys{blx at bbs}{#1}%
   \blx at rest@actives
   \togglefalse{blx at tempa}%
   \blx at refsections}
@@ -9278,7 +9288,7 @@
   \let\blx at thetitle\blx at default@thetitle
   \c at refsegment\@ne
   \blx at safe@actives
-  \setkeys{blx at bbg}{#1}%
+  \blx at kv@setkeys{blx at bbg}{#1}%
   \blx at rest@actives
   \togglefalse{blx at tempa}%
   \blx at refsegments}
@@ -9322,7 +9332,7 @@
   \let\blx at thetitle\blx at default@thetitle
   \c at refsection\z@
   \blx at safe@actives
-  \setkeys{blx at bbc}{#1}%
+  \blx at kv@setkeys{blx at bbc}{#1}%
   \blx at rest@actives
   \togglefalse{blx at tempa}%
   \forlistloop\blx at bibcategory\blx at categories
@@ -9346,7 +9356,7 @@
   \endgroup}
 
 % {<entrykey>,...}
-\def\blx at bibliography#1{%
+\def\blx at bibliography{%
   \blx at bibheading\blx at theheading\blx at thetitle
   \blx at bibnote\blx at theprenote
   \begingroup
@@ -9359,17 +9369,18 @@
   \ifnum\bibnamesep=\z@
     \let\blx at namesep\relax
   \fi
-  \abx at locallabelwidth{#1}%
+  \blx at locallabelwidth@init
   \csuse{blx at env@\blx at theenv}%
   \csuse{blx at hook@bibinit}%
   \csuse{blx at hook@bibinit at next}%
   \let\blx at do\blx at bibitem
   \let\blx at done\blx at endbibliography
-  \blx at listloop{#1}}
+  \blx at listloop}
 
 \def\blx at endbibliography{%
   \csuse{blx at endenv@\blx at theenv}%
   \blx at noitem
+  \blx at locallabelwidth@finish
   \endgroup
   \blx at bibnote\blx at thepostnote
   \endgroup}
@@ -9385,7 +9396,7 @@
   \let\newrefsegment\relax
   \ifblank{#2}
     {\csuse{blx at head@#1}}
-    {\csuse{blx at head@#1}[#2]}%
+    {\csuse{blx at head@#1}[{#2}]}%
   \let\newrefsection\blx at newrefsection
   \let\newrefsegment\blx at newrefsegment}
 
@@ -9411,25 +9422,6 @@
   \csuse{blx at bibsetup}}
 
 % {<entrykey>}
-\def\blx at lengthitem#1{%
-  \blx at ifdata{#1}
-    {\begingroup
-     \blx at getdata{#1}%
-     \blx at bibcheck
-     \iftoggle{blx at skipentry}{}{%
-       \iftoggle{blx at labelnumber}
-         {\blx at bbl@locallabelnumberwidth}
-         {}%
-       \iftoggle{blx at labelalpha}
-         {\blx at bbl@locallabelalphawidth}
-         {}%
-       \nottoggle{blx at skipbiblist}
-         {\blx at bbl@locallabelfields}
-         {}}%
-     \endgroup}
-    {}}
-
-% {<entrykey>}
 % output a bib item, this is why \blx at thelabelnumber is here so that
 % labelnumber is deferred if defernumbers=true
 \def\blx at bibitem#1{%
@@ -9444,6 +9436,15 @@
        \blx at setoptions@entry
        \blx at thelabelnumber
        \addtocounter{instcount}\@ne
+       \iftoggle{blx at labelnumber}
+         {\blx at bbl@locallabelnumberwidth}
+         {}%
+       \iftoggle{blx at labelalpha}
+         {\blx at bbl@locallabelalphawidth}
+         {}%
+       \nottoggle{blx at skipbiblist}
+         {\blx at bbl@locallabelfields}
+         {}%
        \csuse{blx at item@\blx at theenv}\relax
        \blx at initsep
        \blx at namesep
@@ -9605,14 +9606,14 @@
 
 \appto\blx at mknohyperref{\let\blx at anchor\relax}
 
-\define at key{blx at biblist2}{driver}{\blx at key@driver{#1}}
-\define at key{blx at biblist1}{driver}{}
+\blx at kv@defkey{blx at biblist2}{driver}{\blx at key@driver{#1}}
+\blx at kv@defkey{blx at biblist1}{driver}{}
 
 \def\blx at key@driver#1{%
   \def\blx at thebiblistdriver{#1}}
 
 % Custom bibliography list
-% [<otions>]{biblistname}
+% [<options>]{biblistname}
 \newrobustcmd*{\printbiblist}[2][]{%
   \begingroup
   \delimcontext{biblist}%
@@ -9635,12 +9636,15 @@
     \ifcsdef{blx at sortingtemplate@#2}
       {#2}
       {\blx at refcontext@sortingtemplatename}}%
-    % locally define this since we want to fetch data from the datalist named
-    % after the list we are printing rather than the data in refcontext list
-    % Note that the name must be unique so we prepend "#2:" because the combination of
-    % options might not generate a unique name since sortschemename has a fallback to the
-    % refcontext scheme if there is no sortscheme named after the list
-    \blx at edef@refcontext{#2:\blx at tempc/%
+    % locally define this since we want to fetch data from the datalist
+    % name after the list we are printing rather than the data in
+    % refcontext list.
+    % Note that the name must be unique so we prepend any filter name
+    % because the combination of options might not generate a unique name
+    % since sortschemename has a fallback to the refcontext scheme if there
+    % is no sortscheme named after the list
+    \blx at kv@setkeys{blx at biblist1}{#1}% Set section and biblistfilter only, if present ...
+    \blx at edef@refcontext{\blx at thebiblistfilter :\blx at tempc/%
       \blx at refcontext@sortingnamekeytemplatename/%
       \blx at refcontext@labelprefix/%
       \blx at refcontext@uniquenametemplatename/%
@@ -9658,13 +9662,12 @@
     {}
     {\listxadd\blx at biblists\blx at tempc}%
   \blx at auxwrite\@mainaux{}{\string\abx at aux@biblist{\blx at tempc}}%
-  \setkeys{blx at biblist1}{#1}% Set section only, if present ...
   \blx at rest@actives
   \ifcsvoid{blx at dlist@list@\blx at tempe @\blx at refcontext@context}
     {}
     {\letcs\blx at tempa{blx at dlist@list@\blx at tempe @\blx at refcontext@context}}%
   \blx at safe@actives
-  \setkeys{blx at biblist2}{#1}% ... now we have correct \blx at tempa, set rest of options
+  \blx at kv@setkeys{blx at biblist2}{#1}% ... now we have correct \blx at tempa, set rest of options
   \ifundef\blx at bibcheck
     {\ifcsdef{blx at bibcheck@#2}
       {\letcs\blx at bibcheck{blx at bibcheck@#2}}
@@ -9686,11 +9689,21 @@
   \iftoggle{blx at defernumbers}
     {\global\let\blx at printbibchecks\relax}
     {\iftoggle{blx at labelnumber}
-       {}
+       {\ifundef\blx at printbibchecks@suppresswarn
+          {\blx at warning@noline{%
+             Split bibliography detected.\MessageBreak
+             Many simple split bibliography setups with\MessageBreak
+             non-overlapping bibliographies benefit from%
+             \MessageBreak
+             setting 'defernumbers=true'.\MessageBreak
+             See the documentation for details.\MessageBreak
+             This warning can be suppressed with\MessageBreak
+             '\string\BiblatexSplitbibDefernumbersWarningOff'}}
+          {}}
        {\global\let\blx at printbibchecks\relax}}}
 
 % {<entrykey>,...}
-\def\blx at biblist#1{%
+\def\blx at biblist{%
   \if at twocolumn
     \@restonecoltrue\onecolumn
   \else
@@ -9702,16 +9715,17 @@
   \blx at bibinit
   \let\@noitemerr\@empty
   \def\blx at noitem{\blx at warn@biblistempty{\blx at thebiblist}}%
-  \abx at locallabelwidth{#1}%
+  \blx at locallabelwidth@init
   \csuse{blx at env@\blx at theenv}%
   \csuse{blx at hook@biblistinit@\blx at thebiblist}%
   \let\blx at do\blx at biblistitem
   \let\blx at done\blx at endbiblist
-  \blx at listloop{#1}}
+  \blx at listloop}
 
 \def\blx at endbiblist{%
   \csuse{blx at endenv@\blx at theenv}%
   \blx at noitem
+  \blx at locallabelwidth@finish
   \endgroup
   \blx at bibnote\blx at thepostnote
   \endgroup
@@ -9735,6 +9749,15 @@
        \blx at setoptions@type\abx at field@entrytype
        \blx at setoptions@entry
        \addtocounter{instcount}\@ne
+       \iftoggle{blx at labelnumber}
+         {\blx at bbl@locallabelnumberwidth}
+         {}%
+       \iftoggle{blx at labelalpha}
+         {\blx at bbl@locallabelalphawidth}
+         {}%
+       \nottoggle{blx at skipbiblist}
+         {\blx at bbl@locallabelfields}
+         {}%
        \csuse{blx at item@\blx at theenv}\relax
        \csuse{blx at hook@biblistitem@\blx at thebiblist}%
        \blx at execute
@@ -9772,8 +9795,8 @@
 
 \def\refcontext at i[#1]{%
   \@ifnextchar\bgroup
-    {\refcontext at ii[#1]}
-    {\refcontext at ii[#1]{}}}
+    {\refcontext at ii[{#1}]}
+    {\refcontext at ii[{#1}]{}}}
 
 \newcommand*{\refcontext at ii}[2][]{%
   \iftoggle{blx at refcontext}
@@ -9783,11 +9806,12 @@
      % Set refcontext from named refcontext, if given
      \ifblank{#2}
        {}
-       {\edef\z{%
-          \noexpand\setkeys{blx at refcontext}{\csuse{blx at refcontext@name@#2}}}%
-        \z}%
+       {\begingroup
+        \edef\blx at tempa{\endgroup%
+          \noexpand\blx at kv@setkeys{blx at refcontext}{\csuse{blx at refcontext@name@#2}}}%
+        \blx at tempa}%
      % Override with explicit refcontext keyvals, if given
-     \setkeys{blx at refcontext}{#1}%
+     \blx at kv@setkeys{blx at refcontext}{#1}%
      % Add the sortingtemplate to the list of sortingtemplates so we can track
      % special cases like sorting=none which need cite order change detection
      \xifinlist\blx at refcontext@sortingtemplatename\blx at sortingtemplatenames
@@ -9834,15 +9858,15 @@
     \blx at refcontext@labelalphanametemplatename}}
 
 % Meta option to set all name template options
-\define at key{blx at refcontext}{nametemplates}{%
+\blx at kv@defkey{blx at refcontext}{nametemplates}{%
   \gdef\blx at refcontext@sortingnamekeytemplatename{#1}%
   \gdef\blx at refcontext@uniquenametemplatename{#1}%
   \gdef\blx at refcontext@labelalphanametemplatename{#1}}
 
-\define at key{blx at refcontext}{sorting}{\gdef\blx at refcontext@sortingtemplatename{#1}}
-\define at key{blx at refcontext}{sortingnamekeytemplatename}{\gdef\blx at refcontext@sortingnamekeytemplatename{#1}}
-\define at key{blx at refcontext}{uniquenametemplatename}{\gdef\blx at refcontext@uniquenametemplatename{#1}}
-\define at key{blx at refcontext}{labelalphanametemplatename}{\gdef\blx at refcontext@labelalphanametemplatename{#1}}
+\blx at kv@defkey{blx at refcontext}{sorting}{\gdef\blx at refcontext@sortingtemplatename{#1}}
+\blx at kv@defkey{blx at refcontext}{sortingnamekeytemplatename}{\gdef\blx at refcontext@sortingnamekeytemplatename{#1}}
+\blx at kv@defkey{blx at refcontext}{uniquenametemplatename}{\gdef\blx at refcontext@uniquenametemplatename{#1}}
+\blx at kv@defkey{blx at refcontext}{labelalphanametemplatename}{\gdef\blx at refcontext@labelalphanametemplatename{#1}}
 
 % labelprefix cannot be used as is because it is used to construct the internal
 % refcontext name which is referenced/expanded a lot all over the place. So,
@@ -9850,7 +9874,7 @@
 % But that is not enough since the MD5 hash function expands the argument all
 % the way and so unexpandable content like \dag breaks.
 % Unexpandable content should be protected with \detokenize.
-\define at key{blx at refcontext}{labelprefix}{%
+\blx at kv@defkey{blx at refcontext}{labelprefix}{%
   \xdef\blx at refcontext@labelprefix{\blx at mdfivesum{#1}}%
   \gdef\blx at refcontext@labelprefix at real{#1}%
   \iftoggle{blx at defernumbers}
@@ -9873,7 +9897,7 @@
   \let\blx at tempc\@empty%
   \def\blx at tempd{global}%
   \def\blx at tempe{global}%
-  \setkeys{blx at assignrefcontext}{#2}%
+  \blx at kv@setkeys{blx at assignrefcontext}{#2}%
   \def\do##1{%
     \listxadd\blx at assignedrefcontextkeywlist{##1}%
     \csxdef{blx at assignedrefcontextkeyws#1@\the\c at refsection @##1}%
@@ -9892,7 +9916,7 @@
   \let\blx at tempc\@empty%
   \def\blx at tempd{global}%
   \def\blx at tempe{global}%
-  \setkeys{blx at assignrefcontext}{#2}%
+  \blx at kv@setkeys{blx at assignrefcontext}{#2}%
   \def\do##1{%
     \listxadd\blx at assignedrefcontextcatlist{##1}%
     \csxdef{blx at assignedrefcontextcats#1@\the\c at refsection @##1}%
@@ -9911,7 +9935,7 @@
   \let\blx at tempc\@empty%
   \def\blx at tempd{global}%
   \def\blx at tempe{global}%
-  \setkeys{blx at assignrefcontext}{#2}%
+  \blx at kv@setkeys{blx at assignrefcontext}{#2}%
   \def\do##1{%
     \csxdef{blx at assignedrefcontextkeys#1@\the\c at refsection @##1}%
       {\blx at tempa/\blx at tempb/\blx at tempc/\blx at tempd/\blx at tempe}}%
@@ -9918,17 +9942,17 @@
   \docsvlist{#3}}
 
 % Meta option to set all name template options
-\define at key{blx at assignrefcontext}{nametemplates}{%
+\blx at kv@defkey{blx at assignrefcontext}{nametemplates}{%
   \def\blx at tempb{#1}%
   \def\blx at tempd{#1}%
   \def\blx at tempe{#1}}
 
-\define at key{blx at assignrefcontext}{sorting}{\def\blx at tempa{#1}}
-\define at key{blx at assignrefcontext}{sortingnamekeytemplatename}{\def\blx at tempb{#1}}
-\define at key{blx at assignrefcontext}{labelprefix}{%
+\blx at kv@defkey{blx at assignrefcontext}{sorting}{\def\blx at tempa{#1}}
+\blx at kv@defkey{blx at assignrefcontext}{sortingnamekeytemplatename}{\def\blx at tempb{#1}}
+\blx at kv@defkey{blx at assignrefcontext}{labelprefix}{%
   \edef\blx at tempc{\blx at mdfivesum{#1}}}
-\define at key{blx at assignrefcontext}{uniquenametemplatename}{\def\blx at tempd{#1}}
-\define at key{blx at assignrefcontext}{labelalphanametemplatename}{\def\blx at tempe{#1}}
+\blx at kv@defkey{blx at assignrefcontext}{uniquenametemplatename}{\def\blx at tempd{#1}}
+\blx at kv@defkey{blx at assignrefcontext}{labelalphanametemplatename}{\def\blx at tempe{#1}}
 
 % Reference sections
 \newrobustcmd*{\newrefsection}{%
@@ -10043,6 +10067,11 @@
 
 \AtEndDocument{%
   \endrefcontext
+  % close non-0 refsection if active
+  \ifnum\c at refsection>\z@
+    \blx at endrefsection
+  \fi
+  % close refsection 0
   \blx at endrefsection
   \def\abx at aux@refsection#1#2{\blx at addchecksum{#1}{#2}}}
 
@@ -10144,20 +10173,27 @@
 %% that we can use for that purpose as well.
 %% This is fairly new, so we need to have a fallback for older versions.
 
-%% The standard classes are tricky. They have no good hooks and just
-%% for sections at least \pretocmd-ing executes the code before
-%% counters are increased, so the labels attach to the wrong thing.
+%% The standard classes are tricky.
+%% We insert something in \@startsection to get the level number
+%% and then patch \@sect and \@ssect so the label attaches to the
+%% right thing.
 
 %% Test for correct KOMA patch method
 % KOMA 3.27 has \AddtoDoHook
 \newcommand*{\blx at ifkoma@AddtoDoHook}{%
-  \ifboolexpr{not test {\ifcsundef{KOMAClassName}}
-              and not test {\ifcsundef{AddtoDoHook}}}}
+  \ifcsundef{KOMAClassName}
+    {\@secondoftwo}
+    {\ifcsundef{AddtoDoHook}
+       {\@secondoftwo}
+       {\@firstoftwo}}}
 
 % KOMA 3.26 has \startsection at secnumdepth for some testing
 \newcommand*{\blx at ifkoma@startsection}{%
-  \ifboolexpr{not test {\ifcsundef{KOMAClassName}}
-              and not test {\ifcsundef{startsection at secnumdepth}}}}
+  \ifcsundef{KOMAClassName}
+    {\@secondoftwo}
+    {\ifcsundef{startsection at secnumdepth}
+       {\@secondoftwo}
+       {\@firstoftwo}}}
 
 \newcommand*{\blx at ifmemoir}{\@ifclassloaded{memoir}}
 
@@ -10202,7 +10238,12 @@
   \apptocmd\memchapinfo{#1}
     {}{\blx at err@patch{\string\memchapinfo}}%
   \apptocmd\memchapstarinfo{#1}
-    {}{\blx at err@patch{\string\memchapstarinfo}}}
+    {}{\blx at err@patch{\string\memchapstarinfo}}%
+  \apptocmd\memappchapinfo{#1}
+    {}{\blx at err@patch{\string\memappchapinfo}}%
+  \apptocmd\memappchapstarinfo{#1}
+    {}{\blx at err@patch{\string\memappchapstarinfo}}%
+}
 
 \def\blx at refpatch@chapter at std#1{%
   \pretocmd\@makechapterhead{#1}
@@ -10222,7 +10263,7 @@
           {\blx at refpatch@chapter at std{#1}}}}}
 
 % \section, \subsection
-% {<section csname>}{<precode>}{<section level number>}
+% {<section csname>}{<patch code>}{<section level number>}
 \def\blx at refpatch@sect#1#2#3{%
   \ifcsundef{#1}
     {\blx at err@nodocdiv{#1}\@gobbletwo}
@@ -10241,6 +10282,8 @@
 \def\blx at refpatch@sect at koma@startsection#1#2{%
   \At at startsection{\ifnumequal{\startsection at secnumdepth}{#2}{#1}{}}}
 
+% The memoir classes have a nice hook we can use
+% {<section csname>}{<patch code>}
 \edef\blx at refpatch@sect at memoir#1#2{%
   \apptocmd\noexpand\memsecinfo
     {\noexpand\blx at refpatch@sect at memoir@i{\string#1}{#1}{#2}}
@@ -10252,32 +10295,95 @@
 \def\blx at refpatch@sect at memoir@i#1#2#3{%
   \ifstrequal{#1}{#2}{#3}{}}
 
-\edef\blx at refpatch@sect at std#1#2{%
-  \def\noexpand\do##1{%
-    \pretocmd##1%
-      {\noexpand\blx at refpatch@sect at std@i{#1}{#2}{\string#2}}
-      {\togglefalse{blx at tempa}\noexpand\listbreak}
-      {}}%
-  \noexpand\blx at refpatch@sect at std@ii}
+% The standard classes have \@startsection, \@sect and \@ssect.
+% \@startsection is used by unstarred and starred sections alike
+% but it comes in too early if we set labels.
+% The counter is only stepped in \@sect, so we need to patch
+% that if we want \labels to attach to the right thing.
+% But then we also need to patch \@ssect for starred/un-numbered
+% sections. Unfortunately, \@ssect doesn't know the level number
+% so we patch \@startsection to remember the level number
+% in blx at refpatch@current at sectlevel
+% and then patch \@sect and \@ssect with the actual code
+% testing against blx at refpatch@current at sectlevel.
 
-\def\blx at refpatch@sect at std@i#1#2#3{%
-  \ifnumequal{#2}{#3}{#1}{}}
-
-\def\blx at refpatch@sect at std@ii{%
+% {<do initialization>}{<csv list to do>}{<error>}
+\def\blx at refpatch@docsvlist#1#2#3{%
   \toggletrue{blx at tempa}%
-  \docsvlist{%       order does matter:
-    \H at old@sectm at m,% memoir+hyperref (what a mess...)
-    \M at sect,%        memoir
-    \H at old@sect,%    hyperref
-    \NR at sect,%       nameref
-    \scr at sect,%      koma-script 3.x
-    \scr at startsection,%  bad hack for koma 3.15 <= v <= 3.25
-    \@startsection}%         latex
+  #1%
+  \docsvlist{#2}%
   \iftoggle{blx at tempa}
-    {\blx at err@patch{\string\@sect}}
+    {#3}
     {}%
   \let\do\noexpand}
 
+\newtoggle{blx at refpatch@sect at std@pre at done}
+
+\def\blx at refpatch@sect at std@pre{%
+  \iftoggle{blx at refpatch@sect at std@pre at done}
+    {}
+    {\blx at refpatch@docsvlist
+       {\blx at refpatch@sect at std@pre at defdo}
+       {\scr at startsection,
+        \@startsection}
+       {\blx at err@patch{\string\@startsection}}
+     \global\toggletrue{blx at refpatch@sect at std@pre at done}}}
+
+\edef\blx at refpatch@sect at std@pre at defdo{%
+  \def\noexpand\do##1{%
+    \pretocmd##1
+      {\csnumdef{blx at refpatch@current at sectlevel}{\string#2}}
+      {\togglefalse{blx at tempa}\noexpand\listbreak}
+      {}}}
+
+\edef\blx at refpatch@sect at std@defdo at sect#1#2{%
+  \def\noexpand\do##1{%
+    \patchcmd##1%
+      {\noexpand\@tempskipa \string#5\noexpand\relax}
+      {\noexpand\blx at refpatch@sect at std@testandruncode{#1}{#2}%
+       \noexpand\@tempskipa \string#5\noexpand\relax}
+      {\togglefalse{blx at tempa}\noexpand\listbreak}
+      {}}}
+
+\edef\blx at refpatch@sect at std@defdo at ssect#1#2{%
+  \def\noexpand\do##1{%
+    \patchcmd##1%
+      {\noexpand\@tempskipa \string#3\noexpand\relax}
+      {\noexpand\blx at refpatch@sect at std@testandruncode{#1}{#2}%
+       \noexpand\@tempskipa \string#3\noexpand\relax}
+      {\togglefalse{blx at tempa}\noexpand\listbreak}
+      {}}}
+
+% {<patch code>}{<section level number>}
+\def\blx at refpatch@sect at std#1#2{%
+  \blx at refpatch@sect at std@pre
+  % \@sect for numbered (unstarred) sections
+  \blx at refpatch@docsvlist
+    {\blx at refpatch@sect at std@defdo at sect{#1}{#2}}
+    {\H at old@sectm at m,% memoir+hyperref (what a mess...)
+     \M at sect,%        memoir
+     \H at old@sect,%    hyperref
+     \NR at sect,%       nameref
+     \scr at sect,%      koma-script 3.x
+     \scr at startsection,%  bad hack for koma 3.15 <= v <= 3.25
+     \@sect}
+    {\blx at err@patch{\string\@sect}}
+  % \@ssect for un-numbered (starred) sections
+  \blx at refpatch@docsvlist
+    {\blx at refpatch@sect at std@defdo at ssect{#1}{#2}}
+    {\H at old@ssectm at m,% memoir+hyperref (what a mess...)
+     \M at ssect,%        memoir
+     \H at old@ssect,%    hyperref
+     \NR at ssect,%       nameref
+     \scr at ssect,%      koma-script 3.x
+     \@ssect}
+    {\blx at err@patch{\string\@ssect}}}
+
+\def\blx at refpatch@sect at std@testandruncode#1#2{%
+  \ifnumequal{#2}{0\csuse{blx at refpatch@current at sectlevel}}
+    {#1}
+    {}}
+
 % Bibliography categories
 
 \let\blx at categories\@empty
@@ -10366,10 +10472,13 @@
     {\blx at addbib@i{#1}}
     {\blx at addbib@i{#1}[]}}
 
+% kill all spaces and %
+% see https://github.com/plk/biblatex/issues/1026
 \def\blx at addbib@i#1[#2]{%
   \begingroup
-  \blx at hook@fileverb
-  \blx at addbib@ii{#1}{#2}}
+  \@ifnextchar\bgroup
+    {\blx at hook@fileverb\blx at addbib@ii{#1}{#2}}%
+    {\blx at hook@fileverb\blx at addbib@ii{#1}{#2}}}
 
 \def\blx at addbib@ii#1#2#3{%
   \endgroup
@@ -10379,7 +10488,8 @@
   \def\blx at tempc{local}%
   \undef\blx at tempd
   \let\blx at tempe\@empty
-  \setkeys{blx at addbib}{#2}%
+  \def\blx at tempf{false}%
+  \blx at kv@setkeys{blx at addbib}{#2}%
   \blx at xsanitizeafter{#1}{#3}%
   \endgroup}
 
@@ -10390,16 +10500,18 @@
   \catcode`\{=\@ne
   \catcode`\}=\tw@}
 
-\define at key{blx at addbib}{type}{\def\blx at tempa{#1}}
-\define at key{blx at addbib}{datatype}{\def\blx at tempb{#1}}
-\define at key{blx at addbib}{location}{\def\blx at tempc{#1}}
-\define at key{blx at addbib}{label}{\edef\blx at tempd{\detokenize{#1}}}
-\define at key{blx at addbib}{bibencoding}{\def\blx at tempe{#1}}
+\blx at kv@defkey{blx at addbib}{type}{\def\blx at tempa{#1}}
+\blx at kv@defkey{blx at addbib}{datatype}{\def\blx at tempb{#1}}
+\blx at kv@defkey{blx at addbib}{location}{\def\blx at tempc{#1}}
+\blx at kv@defkey{blx at addbib}{label}{\edef\blx at tempd{\detokenize{#1}}}
+\blx at kv@defkey{blx at addbib}{bibencoding}{\def\blx at tempe{#1}}
+\blx at kv@defkey{blx at addbib}{glob}[true]{\def\blx at tempf{#1}}
 
 % \blx at res@type@<resource>      resource -> type
 % \blx at res@data@<resource>      resource -> datatype
 % \blx at res@loca@<resource>      resource -> datatype
 % \blx at res@labl@<resource>      label    -> resource
+% \blx at res@glob@<resource>      glob     -> true|false
 
 \def\blx at addbib@register#1{%
   \csxdef{blx at res@type@#1}{\blx at tempa}%
@@ -10406,6 +10518,9 @@
   \csxdef{blx at res@data@#1}{\blx at tempb}%
   \csxdef{blx at res@loca@#1}{\blx at tempc}%
   \csxdef{blx at res@bibencoding@#1}{\blx at tempe}%
+  \ifdef\blx at tempf
+    {\csxdef{blx at res@glob@#1}{\blx at tempf}}
+    {}%
   \ifdef\blx at tempd
     {\csxdef{blx at res@labl@\blx at tempd}{#1}}
     {}}
@@ -10438,6 +10553,9 @@
       {\ifcsvoid{blx at res@bibencoding@#2}
         {}
         { encoding="\csuse{blx at res@bibencoding@#2}"}}
+      {\ifcsvoid{blx at res@glob@#2}
+        {}
+        { glob="\csuse{blx at res@glob@#2}"}}
       {#3}}}
 
 %% Citations
@@ -10452,6 +10570,12 @@
 \newrobustcmd*{\AtEachCitekey}{%
   \iftoggle{blx at citation}{\appto\blx at hook@citekey}{\@gobble}}
 
+\let\blx at hook@entrykey\@gobble
+\newrobustcmd*{\AtEveryEntrykey}{%
+  \apptocmd{\blx at hook@entrykey}}
+\@onlypreamble\AtEveryEntrykey
+
+
 \def\blx at imc@UseEveryCiteHook{\csuse{blx at hook@cite}}
 \def\blx at imc@UseEveryCitekeyHook{\csuse{blx at hook@citekey}}
 \def\blx at imc@UseEveryMultiCiteHook{\csuse{blx at hook@mcite}}
@@ -10550,7 +10674,8 @@
        {\ifinlistcs{#1}{blx at miss@\the\c at refsection}
           {}
           {\blx at logreq@active{#2{#1}}}}
-       {\blx at logreq@active{#2{#1}}}}}
+       {\blx at logreq@active{#2{#1}}}}%
+  \blx at hook@entrykey{#1}}
 
 \protected\def\abx at aux@segm#1#2#3{%
   \xifinlistcs{\detokenize{#3}}{blx at segm@#1@#2}
@@ -10695,7 +10820,7 @@
 % {<entrykey>}
 \def\blx at citeadd#1{%
   \ifcsdef{blx at keyalias@\the\c at refsection @#1}
-    {\edef\blx at realkey{\csuse{blx at keyalias@\the\c at refsection @#1}}}
+    {\letcs\blx at realkey{blx at keyalias@\the\c at refsection @#1}}
     {\def\blx at realkey{#1}}%
   \expandafter\blx at getrefcontext\expandafter{\blx at realkey}% needed for \ifdata
   \expandafter\blx at citation\expandafter{\blx at realkey}\blx at msg@cundefon
@@ -11397,7 +11522,7 @@
 \long\def\blx at citexpunct@i#1#2#3#4{%
   \@ifnextchar[%]
     {\blx at citexpunct@ii{#1}{{#2}{#3}{#4}}}
-    {\blx at citexpunct@ii{#1}{{#2}{#3}{#4}}[#1]}}
+    {\blx at citexpunct@ii{#1}{{#2}{#3}{#4}}[{#1}]}}
 \long\def\blx at citexpunct@ii#1#2[#3]#4{%
   \blx at thecheckpunct{\blxcitecmd{#1}#2{#3}{#4}}}
 
@@ -11825,7 +11950,7 @@
     \ifnameundef{#5}
       {\blx at warning@entry{'#5' undefined or not a name list}%
        \abx at missing{#5}}
-      {\printnames[#4]{#5}}}%
+      {\printnames[{#4}]{#5}}}%
   \def\blx at dlimcode{\multicitedelim}%
   \def\blx at postpunct@saved{#6}%
   \ifblank{#2}
@@ -11853,7 +11978,7 @@
     \iflistundef{#5}
       {\blx at warning@entry{'#5' undefined or not a literal list}%
        \abx at missing{#5}}
-      {\printlist[#4]{#5}}}%
+      {\printlist[{#4}]{#5}}}%
   \def\blx at dlimcode{\multicitedelim}%
   \def\blx at postpunct@saved{#6}%
   \ifblank{#2}
@@ -11882,7 +12007,7 @@
     \iffieldundef{#5}
       {\blx at warning@entry{'#5' undefined or not a field}%
        \abx at missing{#5}}
-      {\printfield[#4]{#5}}}%
+      {\printfield[{#4}]{#5}}}%
   \def\blx at dlimcode{\multicitedelim}%
   \def\blx at postpunct@saved{#6}%
   \ifblank{#2}
@@ -11947,6 +12072,9 @@
     \def\iffieldequals#1#2{\blx at TE{\blx at imc@iffieldequals{#1}{#2}}}%
     \def\iffieldequalstr#1#2{\blx at TE{\blx at imc@iffieldequalstr{#1}{#2}}}%
     \def\iffieldsequal#1#2{\blx at TE{\blx at imc@iffieldsequal{#1}{#2}}}%
+    \def\iflistequalcs#1#2{\blx at TE{\blx at imc@iflistequalcs{#1}{#2}}}%
+    \def\iflistequals#1#2{\blx at TE{\blx at imc@iflistequals{#1}{#2}}}%
+    \def\iflistsequal#1#2{\blx at TE{\blx at imc@iflistsequal{#1}{#2}}}%
     \def\ifbibmacroundef#1{\blx at TE{\blx at imc@ifbibmacroundef{#1}}}%
     \def\iffieldundef#1{\blx at TE{\blx at imc@iffieldundef{#1}}}%
     \def\ifnameequalcs#1#2{\blx at TE{\blx at imc@ifnameequalcs{#1}{#2}}}%
@@ -12586,8 +12714,8 @@
   ~~<bcf:bibdata section="#1">\blx at nl
   #2%
   ~~</bcf:bibdata>\blx at nl}
-\xdef\blx at xml@datasource#1#2#3#4{%
-  ~~~~<bcf:datasource type="#1" datatype="#2"#3>#4</bcf:datasource>\blx at nl}
+\xdef\blx at xml@datasource#1#2#3#4#5{%
+  ~~~~<bcf:datasource type="#1" datatype="#2"#3#4>#5</bcf:datasource>\blx at nl}
 \xdef\blx at xml@citekey#1#2#3{%
   ~~~~<bcf:citekey order="#3"#2>#1</bcf:citekey>}
 \xdef\blx at xml@citeset#1#2{%
@@ -12713,8 +12841,8 @@
   \blx at safe@actives
   \let\protect\string
   % options
-  \edef\labelalphaothers{\labelalphaothers}%
-  \edef\sortalphaothers{\sortalphaothers}%
+  \protected at edef\labelalphaothers{\labelalphaothers}%
+  \protected at edef\sortalphaothers{\sortalphaothers}%
   \blx at xmlsanitizeafter{\def\labelalphaothers}{\labelalphaothers}%
   \blx at xmlsanitizeafter{\def\sortalphaothers}{\sortalphaothers}%
   % Expand the global use* name toggles
@@ -13026,7 +13154,7 @@
   \let\blx at dm@datatype\@empty
   \let\blx at member@field\@empty
   \let\blx at tempb\@empty
-  \setkeys{blx at datafieldsets@member}{#1}%
+  \blx at kv@setkeys{blx at datafieldsets@member}{#1}%
   \eappto\blx at tempa{%
     \blx at xml@datafieldsets at member{\blx at tempb}}%
   \ifdefempty\blx at member@field
@@ -13051,13 +13179,13 @@
            \listcsxadd{blx at datafieldset@\blx at setname}{##1}}
           \dolistcsloop{blx at datamodelfields@datatypes@\blx at dm@datatype}}}}
 
-\define at key{blx at datafieldsets@member}{datatype}{% characters
+\blx at kv@defkey{blx at datafieldsets@member}{datatype}{% characters
   \appto\blx at tempb{ datatype="#1"}%
   \def\blx at dm@datatype{#1}}
-\define at key{blx at datafieldsets@member}{fieldtype}{% characters
+\blx at kv@defkey{blx at datafieldsets@member}{fieldtype}{% characters
   \appto\blx at tempb{ fieldtype="#1"}%
   \def\blx at dm@fieldtype{#1}}
-\define at key{blx at datafieldsets@member}{field}{% characters
+\blx at kv@defkey{blx at datafieldsets@member}{field}{% characters
   \appto\blx at tempb{ field="#1"}%
   \def\blx at member@field{#1}}
 
@@ -13093,8 +13221,8 @@
   \let\map\blx at sourcemap@map
   #2%
   \ifblank{#1}
-    {\setkeys{blx at sourcemap@maps}{datatype=bibtex, level=driver}}
-    {\setkeys{blx at sourcemap@maps}{#1, level=driver}}%
+    {\blx at kv@setkeys{blx at sourcemap@maps}{datatype=bibtex, level=driver}}
+    {\blx at kv@setkeys{blx at sourcemap@maps}{#1, level=driver}}%
   \eappto\blx at tempa{%
     \blx at xml@sourcemap at maps{\blx at tempb}{\blx at tempc}}%
   \csxdef{blx at sourcemap@defaults@\blx at tempd}{\blx at tempa}%
@@ -13106,8 +13234,8 @@
   \let\blx at tempc\@empty
   \let\map\blx at sourcemap@map
   \ifblank{#1}
-    {\setkeys{blx at sourcemap@maps}{datatype=bibtex, level=user}}
-    {\setkeys{blx at sourcemap@maps}{#1, level=user}}%
+    {\blx at kv@setkeys{blx at sourcemap@maps}{datatype=bibtex, level=user}}
+    {\blx at kv@setkeys{blx at sourcemap@maps}{#1, level=user}}%
   #2%
   \eappto\blx at tempa{%
     \blx at xml@sourcemap at maps{\blx at tempb}{\blx at tempc}}}
@@ -13117,20 +13245,20 @@
   \let\blx at tempc\@empty
   \let\map\blx at sourcemap@map
   \ifblank{#1}
-    {\setkeys{blx at sourcemap@maps}{datatype=bibtex, level=style}}
-    {\setkeys{blx at sourcemap@maps}{#1, level=style}}%
+    {\blx at kv@setkeys{blx at sourcemap@maps}{datatype=bibtex, level=style}}
+    {\blx at kv@setkeys{blx at sourcemap@maps}{#1, level=style}}%
   #2%
   \eappto\blx at tempa{%
     \blx at xml@sourcemap at maps{\blx at tempb}{\blx at tempc}}}
 
-\define at key{blx at sourcemap@maps}{datatype}{% characters
+\blx at kv@defkey{blx at sourcemap@maps}{datatype}{% characters
   \eappto\blx at tempb{ datatype="#1"}%
   \eappto\blx at tempd{#1}}
-\define at key{blx at sourcemap@maps}{overwrite}[true]{% true|false
+\blx at kv@defkey{blx at sourcemap@maps}{overwrite}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempb{ map\string_overwrite="1"}}
     {}}
-\define at key{blx at sourcemap@maps}{level}{% user|style|driver
+\blx at kv@defkey{blx at sourcemap@maps}{level}{% user|style|driver
     \appto\blx at tempb{ level="#1"}}
 
 \newcommand*{\blx at sourcemap@map}[2][]{%
@@ -13142,18 +13270,18 @@
   \let\step\blx at sourcemap@step
   \ifblank{#1}
     {}
-    {\setkeys{blx at sourcemap@map}{#1}}%
+    {\blx at kv@setkeys{blx at sourcemap@map}{#1}}%
   #2%
   \eappto\blx at tempc{%
     \blx at xml@sourcemap at map{\blx at tempm}{\blx at tempe}}}
 
-\define at key{blx at sourcemap@map}{overwrite}[true]{% true|false
+\blx at kv@defkey{blx at sourcemap@map}{overwrite}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempm{ map\string_overwrite="1"}}
     {}}
-\define at key{blx at sourcemap@map}{foreach}{% characters
+\blx at kv@defkey{blx at sourcemap@map}{foreach}{% characters
   \eappto\blx at tempm{ map\string_foreach="#1"}}
-\define at key{blx at sourcemap@map}{refsection}{% integer
+\blx at kv@defkey{blx at sourcemap@map}{refsection}{% integer
   \eappto\blx at tempm{ refsection="#1"}}
 
 \newcommand*{\blx at sourcemap@perdatasource}[1]{%
@@ -13170,96 +13298,100 @@
 
 \newcommand*{\blx at sourcemap@step}[1][2]{%
   \let\blx at tempf\@empty
-  \setkeys{blx at sourcemap@step}{#1}%
+  \blx at kv@setkeys{blx at sourcemap@step}{#1}%
   \eappto\blx at tempe{%
     \blx at xml@sourcemap at step{\blx at tempf}}}
 
-\define at key{blx at sourcemap@step}{typesource}{% characters
+\blx at kv@defkey{blx at sourcemap@step}{typesource}{% characters
   \eappto\blx at tempf{ map\string_type\string_source="#1"}}
-\define at key{blx at sourcemap@step}{typetarget}{% characters
+\blx at kv@defkey{blx at sourcemap@step}{typetarget}{% characters
   \eappto\blx at tempf{ map\string_type\string_target="#1"}}
-\define at key{blx at sourcemap@step}{final}[true]{% true|false
+\blx at kv@defkey{blx at sourcemap@step}{final}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempf{ map\string_final="1"}}
     {}}
-\define at key{blx at sourcemap@step}{cited}[true]{% true|false
+\blx at kv@defkey{blx at sourcemap@step}{cited}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempf{ map\string_entrykey\string_cited="1"}}
     {}}
-\define at key{blx at sourcemap@step}{nocited}[true]{% true|false
+\blx at kv@defkey{blx at sourcemap@step}{nocited}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempf{ map\string_entrykey\string_nocited="1"}}
     {}}
-\define at key{blx at sourcemap@step}{citedornocited}[true]{% true|false
+\blx at kv@defkey{blx at sourcemap@step}{citedornocited}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempf{ map\string_entrykey\string_citedornocited="1"}}
     {}}
-\define at key{blx at sourcemap@step}{allnocited}[true]{% true|false
+\blx at kv@defkey{blx at sourcemap@step}{allnocited}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempf{ map\string_entrykey\string_allnocited="1"}}
     {}}
-\define at key{blx at sourcemap@step}{fieldsource}{% characters
+\blx at kv@defkey{blx at sourcemap@step}{starnocited}[true]{% true|false
+  \ifstrequal{#1}{true}
+    {\appto\blx at tempf{ map\string_entrykey\string_starnocited="1"}}
+    {}}
+\blx at kv@defkey{blx at sourcemap@step}{fieldsource}{% characters
   \eappto\blx at tempf{ map\string_field\string_source="#1"}}
-\define at key{blx at sourcemap@step}{notfield}{% characters
+\blx at kv@defkey{blx at sourcemap@step}{notfield}{% characters
   \eappto\blx at tempf{ map\string_notfield="#1"}}
-\define at key{blx at sourcemap@step}{fieldtarget}{% characters
+\blx at kv@defkey{blx at sourcemap@step}{fieldtarget}{% characters
   \eappto\blx at tempf{ map\string_field\string_target="#1"}}
-\define at key{blx at sourcemap@step}{fieldset}{% characters
+\blx at kv@defkey{blx at sourcemap@step}{fieldset}{% characters
   \eappto\blx at tempf{ map\string_field\string_set="#1"}}
 % We are sanitising the XML here as it's the value of an attribute which
 % might contain quotes or ampersands (URLs, for example)
-\define at key{blx at sourcemap@step}{fieldvalue}{% characters
+\blx at kv@defkey{blx at sourcemap@step}{fieldvalue}{% characters
   \blx at xmlsanitizeafter{\def\blx at temps}{#1}%
   \eappto\blx at tempf{ map\string_field\string_value="\blx at temps"}}
-\define at key{blx at sourcemap@step}{append}[true]{% true|false
+\blx at kv@defkey{blx at sourcemap@step}{append}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempf{ map\string_append="1"}}
     {}}
-\define at key{blx at sourcemap@step}{appendstrict}[true]{% true|false
+\blx at kv@defkey{blx at sourcemap@step}{appendstrict}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempf{ map\string_appendstrict="1"}}
     {}}
-\define at key{blx at sourcemap@step}{null}[true]{% true|false
+\blx at kv@defkey{blx at sourcemap@step}{null}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempf{ map\string_null="1"}}
     {}}
-\define at key{blx at sourcemap@step}{entrynull}[true]{% true|false
+\blx at kv@defkey{blx at sourcemap@step}{entrynull}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempf{ map\string_entry\string_null="1"}}
     {}}
-\define at key{blx at sourcemap@step}{entrynocite}[true]{% true|false
+\blx at kv@defkey{blx at sourcemap@step}{entrynocite}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempf{ map\string_entry\string_nocite="1"}}
     {}}
-\define at key{blx at sourcemap@step}{entrynew}{% characters
+\blx at kv@defkey{blx at sourcemap@step}{entrynew}{% characters
   \appto\blx at tempf{ map\string_entry\string_new="#1"}}
-\define at key{blx at sourcemap@step}{entrynewtype}{% characters
+\blx at kv@defkey{blx at sourcemap@step}{entrynewtype}{% characters
   \appto\blx at tempf{ map\string_entry\string_newtype="#1"}}
-\define at key{blx at sourcemap@step}{entrytarget}{% characters
+\blx at kv@defkey{blx at sourcemap@step}{entrytarget}{% characters
   \appto\blx at tempf{ map\string_entrytarget="#1"}}
-\define at key{blx at sourcemap@step}{entryclone}{% characters
+\blx at kv@defkey{blx at sourcemap@step}{entryclone}{% characters
   \appto\blx at tempf{ map\string_entry\string_clone="#1"}}
-\define at key{blx at sourcemap@step}{origfield}[true]{% true|false
+\blx at kv@defkey{blx at sourcemap@step}{origfield}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempf{ map\string_origfield="1"}}
     {}}
-\define at key{blx at sourcemap@step}{origfieldval}[true]{% true|false
+\blx at kv@defkey{blx at sourcemap@step}{origfieldval}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempf{ map\string_origfieldval="1"}}
     {}}
-\define at key{blx at sourcemap@step}{origentrytype}[true]{% true|false
+\blx at kv@defkey{blx at sourcemap@step}{origentrytype}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempf{ map\string_origentrytype="1"}}
     {}}
-\define at key{blx at sourcemap@step}{match}{% characters
+\blx at kv@defkey{blx at sourcemap@step}{match}{% characters
   \appto\blx at tempf{ map\string_match="#1"}}
-\define at key{blx at sourcemap@step}{matchi}{% characters
+\blx at kv@defkey{blx at sourcemap@step}{matchi}{% characters
   \appto\blx at tempf{ map\string_matchi="#1"}}
-\define at key{blx at sourcemap@step}{notmatch}{% characters
+\blx at kv@defkey{blx at sourcemap@step}{notmatch}{% characters
   \appto\blx at tempf{ map\string_notmatch="#1"}}
-\define at key{blx at sourcemap@step}{notmatchi}{% characters
+\blx at kv@defkey{blx at sourcemap@step}{notmatchi}{% characters
   \appto\blx at tempf{ map\string_notmatchi="#1"}}
-\define at key{blx at sourcemap@step}{replace}{% characters
+\blx at kv@defkey{blx at sourcemap@step}{replace}{% characters
   \eappto\blx at tempf{ map\string_replace="#1"}}
 
 % [<specname>]{<spec>}
@@ -13288,29 +13420,29 @@
   \let\blx at tempc\@empty
   \ifblank{#1}
     {}
-    {\setkeys{blx at lantem@namepart}{#1}}%
+    {\blx at kv@setkeys{blx at lantem@namepart}{#1}}%
   \eappto\blx at tempa{%
     \blx at xml@labelalphanametemplatenamepart{\blx at tempe}{\blx at tempc}{#2}}}
 
-\define at key{blx at lantem@namepart}{use}[true]{% use* option for namepart true|false
+\blx at kv@defkey{blx at lantem@namepart}{use}[true]{% use* option for namepart true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempc{ use="1"}}
     {}}
 
-\define at key{blx at lantem@namepart}{pre}[true]{% pre option for namepart true|false
+\blx at kv@defkey{blx at lantem@namepart}{pre}[true]{% pre option for namepart true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempc{ pre="1"}}
     {}}
 
-\define at key{blx at lantem@namepart}{compound}[true]{% base option for namepart true|false
+\blx at kv@defkey{blx at lantem@namepart}{compound}[true]{% base option for namepart true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempc{ substring\string_compound="1"}}
     {}}
 
-\define at key{blx at lantem@namepart}{strwidth}{% integer
+\blx at kv@defkey{blx at lantem@namepart}{strwidth}{% integer
   \eappto\blx at tempc{ substring\string_width="#1"}}
 
-\define at key{blx at lantem@field}{strside}{% left|right
+\blx at kv@defkey{blx at lantem@field}{strside}{% left|right
   \ifstrequal{#1}{right}
     {\eappto\blx at tempc{ substring\string_side="right"}}
     {\eappto\blx at tempc{ substring\string_side="left"}}}
@@ -13356,56 +13488,56 @@
   \let\blx at tempc\@empty
   \ifblank{#1}
     {}
-    {\setkeys{blx at latem@field}{#1}}%
+    {\blx at kv@setkeys{blx at latem@field}{#1}}%
   \eappto\blx at tempb{%
     \blx at xml@labelalpha at part{\blx at tempc}{#2}}}
 
-\define at key{blx at latem@field}{uppercase}[true]{% true|false
+\blx at kv@defkey{blx at latem@field}{uppercase}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempc{ uppercase="1"}}
     {}}
-\define at key{blx at latem@field}{lowercase}[true]{% true|false
+\blx at kv@defkey{blx at latem@field}{lowercase}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempc{ lowercase="1"}}
     {}}
-\define at key{blx at latem@field}{final}[true]{% true|false
+\blx at kv@defkey{blx at latem@field}{final}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempc{ final="1"}}
     {}}
-\define at key{blx at latem@field}{strwidth}{% integer
+\blx at kv@defkey{blx at latem@field}{strwidth}{% integer
     \eappto\blx at tempc{ substring\string_width="#1"}}
-\define at key{blx at latem@field}{varwidth}[true]{% "v"
+\blx at kv@defkey{blx at latem@field}{varwidth}[true]{% "v"
   \ifstrequal{#1}{true}
     {\appto\blx at tempc{ substring\string_width="v"}}
     {}}
-\define at key{blx at latem@field}{varwidthnorm}[true]{% "vf"
+\blx at kv@defkey{blx at latem@field}{varwidthnorm}[true]{% "vf"
   \ifstrequal{#1}{true}
     {\appto\blx at tempc{ substring\string_width="vf"}}
     {}}
-\define at key{blx at latem@field}{varwidthlist}[true]{% "l"
+\blx at kv@defkey{blx at latem@field}{varwidthlist}[true]{% "l"
   \ifstrequal{#1}{true}
     {\appto\blx at tempc{ substring\string_width="l"}}
     {}}
-\define at key{blx at latem@field}{strfixedcount}{%
+\blx at kv@defkey{blx at latem@field}{strfixedcount}{%
     \eappto\blx at tempc{ substring\string_fixed\string_threshold="#1"}}
-\define at key{blx at latem@field}{strwidthmax}{%
+\blx at kv@defkey{blx at latem@field}{strwidthmax}{%
     \eappto\blx at tempc{ substring\string_width\string_max="#1"}}
-\define at key{blx at latem@field}{strside}{% left|right
+\blx at kv@defkey{blx at latem@field}{strside}{% left|right
   \ifstrequal{#1}{right}
     {\eappto\blx at tempc{ substring\string_side="right"}}
     {\eappto\blx at tempc{ substring\string_side="left"}}}
-\define at key{blx at latem@field}{namessep}{%
+\blx at kv@defkey{blx at latem@field}{namessep}{%
     \eappto\blx at tempc{ namessep="#1"}}
-\define at key{blx at latem@field}{ifnames}{%
+\blx at kv@defkey{blx at latem@field}{ifnames}{%
     \eappto\blx at tempc{ ifnames="#1"}}
-\define at key{blx at latem@field}{names}{%
+\blx at kv@defkey{blx at latem@field}{names}{%
     \eappto\blx at tempc{ names="#1"}}
-\define at key{blx at latem@field}{noalphaothers}[true]{%
+\blx at kv@defkey{blx at latem@field}{noalphaothers}[true]{%
     \eappto\blx at tempc{ noalphaothers="1"}}
-\define at key{blx at latem@field}{padchar}{%
+\blx at kv@defkey{blx at latem@field}{padchar}{%
   \blx at xmlsanitizeafter{\def\blx at temps}{#1}%
   \eappto\blx at tempc{ pad\string_char="\expandafter\regexp\expandafter{\blx at temps}"}}
-\define at key{blx at latem@field}{padside}{% left|right
+\blx at kv@defkey{blx at latem@field}{padside}{% left|right
   \ifstrequal{#1}{left}
     {\eappto\blx at tempc{ pad\string_side="left"}}
     {\eappto\blx at tempc{ pad\string_side="right"}}}
@@ -13416,7 +13548,7 @@
   \let\blx at tempf\@empty
   \ifblank{#2}
     {}
-    {\setkeys{blx at inherit@default}{#2}}%
+    {\blx at kv@setkeys{blx at inherit@default}{#2}}%
   \edef\blx at tempa{\space
     inherit\string_all="\iftoggle{blx at inherit@all}{true}{false}"\space
     override\string_target="\iftoggle{blx at inherit@override}{true}{false}"%
@@ -13432,11 +13564,11 @@
 \newtoggle{blx at inherit@all}
 \newtoggle{blx at inherit@override}
 
-\define at key{blx at inherit@default}{all}[true]{% true|false
+\blx at kv@defkey{blx at inherit@default}{all}[true]{% true|false
   \settoggle{blx at inherit@all}{#1}}
-\define at key{blx at inherit@default}{override}[true]{% true|false
+\blx at kv@defkey{blx at inherit@default}{override}[true]{% true|false
   \settoggle{blx at inherit@override}{#1}}
-\define at key{blx at inherit@default}{ignore}{% csv list
+\blx at kv@defkey{blx at inherit@default}{ignore}{% csv list
   \edef\blx at tempf{ ignore="#1"}}
 
 % {<source>}{<target>}{<options>}
@@ -13444,15 +13576,15 @@
   \let\blx at tempc\@empty
   \ifblank{#3}
     {}
-    {\setkeys{blx at inherit@except}{#3}}%
+    {\blx at kv@setkeys{blx at inherit@except}{#3}}%
   \eappto\blx at tempb{%
     \blx at xml@inherit at type{#1}{#2}{\blx at tempc}}}
 
-\define at key{blx at inherit@except}{all}[true]{% true|false
+\blx at kv@defkey{blx at inherit@except}{all}[true]{% true|false
   \eappto\blx at tempc{ inherit\string_all="#1"}}
-\define at key{blx at inherit@except}{override}[true]{% true|false
+\blx at kv@defkey{blx at inherit@except}{override}[true]{% true|false
   \eappto\blx at tempc{ override\string_target="#1"}}
-\define at key{blx at inherit@except}{ignore}{% csv list
+\blx at kv@defkey{blx at inherit@except}{ignore}{% csv list
   \eappto\blx at tempc{ ignore="#1"}}
 
 % {<type,type,...>}{<type,type,...>}{<spec>}
@@ -13462,7 +13594,7 @@
   \let\blx at tempf\@empty
   \ifblank{#1}
     {}
-    {\setkeys{blx at inherit}{#1}}%
+    {\blx at kv@setkeys{blx at inherit}{#1}}%
   \forcsvlist{\blx at inherit@i{#3}}{#2}%
   \let\blx at tempb\@empty
   \let\inherit\blx at inherit@field
@@ -13488,7 +13620,7 @@
   \let\blx at tempc\@empty
   \ifblank{#1}
     {}
-    {\setkeys{blx at inherit@field}{#1}}%
+    {\blx at kv@setkeys{blx at inherit@field}{#1}}%
   \eappto\blx at tempb{%
     \blx at xml@inherit at field{#2}{#3}{\blx at tempc}}}
 
@@ -13495,10 +13627,10 @@
 \newcommand*{\blx at inherit@block}[1]{%
   \eappto\blx at tempb{\blx at xml@inherit at block{#1}}}
 
-\define at key{blx at inherit}{ignore}{% csv list
+\blx at kv@defkey{blx at inherit}{ignore}{% csv list
   \edef\blx at tempf{ ignore="#1"}}
 
-\define at key{blx at inherit@field}{override}[true]{% true|false
+\blx at kv@defkey{blx at inherit@field}{override}[true]{% true|false
   \ifstrequal{#1}{true}
     {\edef\blx at tempc{ override\string_target="true"}}
     {\edef\blx at tempc{ override\string_target="false"}}}
@@ -13526,13 +13658,13 @@
 \newcommand*{\blx at biblistfilter}[1][2]{%
   \let\blx at tempc\@empty
   \let\blx at tempd\@empty
-  \setkeys{blx at biblistfilter@filter}{#1}%
+  \blx at kv@setkeys{blx at biblistfilter@filter}{#1}%
   \eappto\blx at tempa{%
     \blx at xml@dlistfilter{\blx at tempc}{\blx at tempd}}}
 
-\define at key{blx at biblistfilter@filter}{type}{%
+\blx at kv@defkey{blx at biblistfilter@filter}{type}{%
   \def\blx at tempc{#1}}
-\define at key{blx at biblistfilter@filter}{filter}{%
+\blx at kv@defkey{blx at biblistfilter@filter}{filter}{%
   \def\blx at tempd{#1}}
 
 % Predefine filters for label fields
@@ -13539,8 +13671,8 @@
 \def\do#1{\DeclareBiblistFilter{#1}{\filter[type=field,filter=#1]}}
 \abx at dolabelfields
 
-\define at key{blx at biblist2}{biblistfilter}{\blx at key@biblistfilter{#1}}
-\define at key{blx at biblist1}{biblistfilter}{}
+\blx at kv@defkey{blx at biblist1}{biblistfilter}{\blx at key@biblistfilter{#1}}
+\blx at kv@defkey{blx at biblist2}{biblistfilter}{}
 
 \def\blx at key@biblistfilter#1{%
   \ifcsundef{blx at biblistfilters@#1}
@@ -13599,21 +13731,21 @@
   \let\blx at tempc\@empty
   \ifblank{#1}
     {}
-    {\setkeys{blx at untemp@namepart}{#1}}%
+    {\blx at kv@setkeys{blx at untemp@namepart}{#1}}%
   \eappto\blx at tempa{%
     \blx at xml@uniquenametemplatenamepart{\blx at tempe}{\blx at tempc}{#2}}}
 
-\define at key{blx at untemp@namepart}{use}[true]{% use* option for namepart true|false
+\blx at kv@defkey{blx at untemp@namepart}{use}[true]{% use* option for namepart true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempc{ use="1"}}
     {}}
 
-\define at key{blx at untemp@namepart}{base}[true]{% base option for namepart true|false
+\blx at kv@defkey{blx at untemp@namepart}{base}[true]{% base option for namepart true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempc{ base="1"}}
     {}}
 
-\define at key{blx at untemp@namepart}{disambiguation}{% disambiguation option for namepart none|inits|full|fullonly
+\blx at kv@defkey{blx at untemp@namepart}{disambiguation}{% disambiguation option for namepart none|inits|full|fullonly
   \appto\blx at tempc{ disambiguation="#1"}}
 
 % [<templatename>]{<template>}
@@ -13668,16 +13800,16 @@
   \let\blx at tempc\@empty
   \ifblank{#1}
     {}
-    {\setkeys{blx at sortnk@namepart}{#1}}%
+    {\blx at kv@setkeys{blx at sortnk@namepart}{#1}}%
   \eappto\blx at tempb{%
     \blx at xml@sortingnamekeynamepart{\blx at tempe}{\blx at tempc}{#2}}}
 
-\define at key{blx at sortnk@namepart}{use}[true]{% use* option for namepart true|false
+\blx at kv@defkey{blx at sortnk@namepart}{use}[true]{% use* option for namepart true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempc{ use="1"}}
     {\appto\blx at tempc{ use="0"}}}
 
-\define at key{blx at sortnk@namepart}{inits}[true]{% initials only option for namepart true|false
+\blx at kv@defkey{blx at sortnk@namepart}{inits}[true]{% initials only option for namepart true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempc{ inits="1"}}
     {\appto\blx at tempc{ inits="0"}}}
@@ -13686,7 +13818,7 @@
 \newrobustcmd*{\DeclareSortingTemplate}[3][]{%
   \ifblank{#1}
     {}
-    {\setkeys{blx at sortdef@sorting}{#1}%
+    {\blx at kv@setkeys{blx at sortdef@sorting}{#1}%
      \csxdef{blx at sortdef@locale@#2}{\blx at templ}}%
   \begingroup
   \def\name{%LEGACY(<2.0)
@@ -13700,7 +13832,10 @@
   \let\sort\blx at sortdef@sort
   \let\field\blx at sortdef@field
   \let\literal\blx at sortdef@literal
-  \def\citeorder{\blx at sortdef@field{citeorder}}%
+  \global\csundef{blx at sortingtemplate@citeorder at relevant@#2}%
+  \def\citeorder{%
+    \global\cslet{blx at sortingtemplate@citeorder at relevant@#2}\@empty
+    \blx at sortdef@field{citeorder}}%
   \blx at tempcnta\z@
   \let\blx at tempa\@empty
   #3%
@@ -13709,7 +13844,7 @@
 \@onlypreamble\DeclareSortingTemplate
 \blx at DeclareBackendOption{global}[xml]{sortingtemplate}
 
-\define at key{blx at sortdef@sorting}{locale}{% locale name
+\blx at kv@defkey{blx at sortdef@sorting}{locale}{% locale name
   \def\blx at templ{#1}}
 
 \newcommand*{\blx at sortdef@sort}[2][]{%
@@ -13719,27 +13854,27 @@
   \edef\blx at tempc{order="\the\blx at tempcnta"}%
   \ifblank{#1}
     {}
-    {\setkeys{blx at sortdef@sort}{#1}}%
+    {\blx at kv@setkeys{blx at sortdef@sort}{#1}}%
   \let\do\@firstofone
   #2%
   \eappto\blx at tempa{%
     \blx at xml@sort{\blx at tempc}{\blx at tempb}}}
 
-\define at key{blx at sortdef@sort}{locale}{% locale name
+\blx at kv@defkey{blx at sortdef@sort}{locale}{% locale name
   \eappto\blx at tempc{ locale="#1"}}
-\define at key{blx at sortdef@sort}{direction}{% ascending|descending
+\blx at kv@defkey{blx at sortdef@sort}{direction}{% ascending|descending
   \ifstrequal{#1}{ascending}
     {\eappto\blx at tempc{ sort\string_direction="ascending"}}
     {\eappto\blx at tempc{ sort\string_direction="descending"}}}
-\define at key{blx at sortdef@sort}{final}[true]{% true|false
+\blx at kv@defkey{blx at sortdef@sort}{final}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempc{ final="1"}}
     {}}
-\define at key{blx at sortdef@sort}{sortcase}[true]{% true|false
+\blx at kv@defkey{blx at sortdef@sort}{sortcase}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempc{ sortcase="1"}}
     {\appto\blx at tempc{ sortcase="0"}}}
-\define at key{blx at sortdef@sort}{sortupper}[true]{% true|false
+\blx at kv@defkey{blx at sortdef@sort}{sortupper}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempc{ sortupper="1"}}
     {\appto\blx at tempc{ sortupper="0"}}}
@@ -13749,24 +13884,24 @@
   \edef\blx at tempd{order="\the\blx at tempcntb"}%
   \ifblank{#1}
     {}
-    {\setkeys{blx at sortdef@field}{#1}}%
+    {\blx at kv@setkeys{blx at sortdef@field}{#1}}%
   \eappto\blx at tempb{%
     \blx at xml@sortitem{\blx at tempd}{#2}}}
 
-\define at key{blx at sortdef@field}{padside}{% left|right
+\blx at kv@defkey{blx at sortdef@field}{padside}{% left|right
   \ifstrequal{#1}{right}
     {\eappto\blx at tempd{ pad\string_side="right"}}
     {\eappto\blx at tempd{ pad\string_side="left"}}}
-\define at key{blx at sortdef@field}{padwidth}{% integer
+\blx at kv@defkey{blx at sortdef@field}{padwidth}{% integer
   \eappto\blx at tempd{ pad\string_width="#1"}}
-\define at key{blx at sortdef@field}{padchar}{% character
+\blx at kv@defkey{blx at sortdef@field}{padchar}{% character
   \blx at xmlsanitizeafter{\def\blx at tempe}{#1}%
   \eappto\blx at tempd{ pad\string_char="\blx at tempe"}}
-\define at key{blx at sortdef@field}{strside}{% left|right
+\blx at kv@defkey{blx at sortdef@field}{strside}{% left|right
   \ifstrequal{#1}{right}
     {\eappto\blx at tempd{ substring\string_side="right"}}
     {\eappto\blx at tempd{ substring\string_side="left"}}}
-\define at key{blx at sortdef@field}{strwidth}{% integer
+\blx at kv@defkey{blx at sortdef@field}{strwidth}{% integer
   \eappto\blx at tempd{ substring\string_width="#1"}}
 
 \def\blx at sortdef@literal#1{%
@@ -13905,7 +14040,7 @@
   \let\blx at tempc\@empty
   \ifblank{#1}
     {}
-    {\setkeys{blx at ordered@field}{#1}}%
+    {\blx at kv@setkeys{blx at ordered@field}{#1}}%
   \advance\blx at tempcnta\@ne
   \ifdefempty{\blx at tempa}
     {\csxappto{blx at bcf@\blx at tempb}{%
@@ -13920,7 +14055,7 @@
   \let\blx at tempc\@empty
   \ifblank{#1}
     {}
-    {\setkeys{blx at ordered@field}{#1}}%
+    {\blx at kv@setkeys{blx at ordered@field}{#1}}%
   \advance\blx at tempcnta\@ne
   \ifdefempty{\blx at tempa}
     {\csxappto{blx at bcf@\blx at tempb}{%
@@ -13948,7 +14083,7 @@
 
 \newrobustcmd*{\ExecuteBibliographyOptions}[2][]{%
   \ifblank{#1}
-    {\setkeys{blx at opt@pre}{#2}}
+    {\blx at kv@setkeys{blx at opt@pre}{#2}}
     {\forcsvlist{\blx at typeoptions{#2}}{#1}}}
 \@onlypreamble\ExecuteBibliographyOptions
 
@@ -13969,9 +14104,9 @@
 
 % Have to have a dummy for this as it's set much earlier but is passed
 % through to here where we just ignore it
-\define at key{blx at opt@ldt}{datamodel}{}
+\blx at kv@defkey{blx at opt@ldt}{datamodel}{}
 
-\define at key{blx at opt@ldt}{backend}{%
+\blx at kv@defkey{blx at opt@ldt}{backend}{%
   \ifstrequal{#1}{biber}
     {}
     {\ifboolexpr{
@@ -13985,23 +14120,23 @@
           {}}%
        {\blx at err@invopt{backend=#1}{}}}}
 
-\define at key{blx at opt@ldt}{style}{%
+\blx at kv@defkey{blx at opt@ldt}{style}{%
   \def\blx at cbxfile{#1}%
   \def\blx at bbxfile{#1}}
 
-\define at key{blx at opt@ldt}{bibstyle}{%
+\blx at kv@defkey{blx at opt@ldt}{bibstyle}{%
   \def\blx at bbxfile{#1}}
 
-\define at key{blx at opt@ldt}{citestyle}{%
+\blx at kv@defkey{blx at opt@ldt}{citestyle}{%
   \def\blx at cbxfile{#1}}
 
-\define at key{blx at opt@ldt}{natbib}[true]{%
+\blx at kv@defkey{blx at opt@ldt}{natbib}[true]{%
   \settoggle{blx at natbib}{#1}}
 
-\define at key{blx at opt@ldt}{mcite}[true]{%
+\blx at kv@defkey{blx at opt@ldt}{mcite}[true]{%
   \settoggle{blx at mcite}{#1}}
 
-\define at key{blx at opt@ldt}{noerroretextools}[true]{%
+\blx at kv@defkey{blx at opt@ldt}{noerroretextools}[true]{%
   \blx at warning@noline{%
     The option 'noerroretextools' is deprecated.\MessageBreak
     Define the control sequence '\string\blx at noerroretextools'\MessageBreak
@@ -14008,7 +14143,7 @@
     before loading biblatex instead}%
   \ifstrequal{#1}{true}
     {\global\cslet{blx at noerroretextools}\@empty}
-    {\csgundef{blx at noerroretextools}}}
+    {\global\csundef{blx at noerroretextools}}}
 
 % load-time and preamble
 
@@ -14061,7 +14196,7 @@
 % unlikely to be corrected as "sorting" is an obvious name for biblatex users
 % "sorting" is used in the .bcf for the actual sorting template definitions and is
 % an XML format option
-\define at key{blx at opt@pre}{sorting}{%
+\blx at kv@defkey{blx at opt@pre}{sorting}{%
   \def\blx at sorting{#1}%
   \def\blx at refcontext@sortingtemplatename{#1}}
 \blx at DeclareBackendOption{global}[string]{sortingtemplatename}
@@ -14295,6 +14430,14 @@
   \def\blx at hook@initlang{\@quotereset\@ne}%
   \def\blx at hook@endlang{\blx at postpunct}}
 
+\DeclareBibliographyOption[string]{langhook}{%
+  \ifstrequal{#1}{captions}
+    {\@firstoftwo}
+    {\ifstrequal{#1}{extras}}
+    {\def\blx at langhook{#1}}
+    {\blx at err@invopt{langhook=#1}{}}}
+
+
 \DeclareBiblatexOption{global,type,entry}[string]{indexing}[true]{%
   \blx at opt@index{#1}}
 \def\blx at opt@index#1{%
@@ -14382,6 +14525,10 @@
 \def\blx at opt@backrefsetstyle at memandset{4}
 \def\blx at opt@backrefsetstyle at setplusmem{5}
 
+\newtoggle{blx at backreffloats}
+\DeclareBibliographyOption[boolean]{backreffloats}[true]{%
+  \settoggle{blx at backreffloats}{#1}}
+
 \appto\blx at mkhyperref{%
   \ifHy at plainpages
     \blx at warning@noline{%
@@ -14396,10 +14543,22 @@
       references. 'pageanchor=true' is required}%
   \fi}
 
-\DeclareBibliographyOption[string]{block}{%
+\def\blx at optprocess@block#1{%
   \ifcsdef{blx at opt@block@#1}
     {\csuse{blx at opt@block@#1}}
     {\blx at err@invopt{block=#1}{}}}
+
+\DeclareBibliographyOption[string]{block}{%
+  \blx at optprocess@block{#1}}
+
+\blx at kv@defkey{blx at bib1}{block}{}
+\blx at kv@defkey{blx at bib2}{block}{\blx at optprocess@block{#1}}
+\blx at kv@defkey{blx at biblist1}{block}{}
+\blx at kv@defkey{blx at biblist2}{block}{\blx at optprocess@block{#1}}
+
+\blx at kv@defkey{blx at bbs}{block}{\blx at optprocess@block{#1}}
+\blx at kv@defkey{blx at bbg}{block}{\blx at optprocess@block{#1}}
+
 \def\blx at opt@block at none{%
   \let\blx at bibsetup\@empty
   \let\newblockpunct\@empty}
@@ -14623,6 +14782,11 @@
   \let\blx at loccitreset\blx at loccitreset@context
   \booltrue{citetracker}}
 
+\newtoggle{blx at trackfloats}
+\DeclareBibliographyOption[boolean]{trackfloats}[true]{%
+  \settoggle{blx at trackfloats}{#1}}
+
+
 \DeclareBibliographyOption[boolean]{parentracker}[true]{%
   \ifstrequal{#1}{true}
     {\let\bibopenparen\blx at bibopenparen
@@ -14783,7 +14947,7 @@
         {\blx at err@invopt{#1date=##1}{}}}}%
     % Default for new date fields is "comp" but this is overridden below by
     % biblatex defaults
-    \setkeys{blx at opt@pre}{#1date=comp}%
+    \blx at kv@setkeys{blx at opt@pre}{#1date=comp}%
     % Time format options
     \DeclareBibliographyOption[string]{#1time}{%
       \csdef{blx at timeformat@#1time}{##1}%
@@ -14791,7 +14955,7 @@
         {\protected\csedef{blx at imc@print#1time}{\csuse{mktimerange##1}{#1}}}
         {\blx at err@invopt{#1time=##1}{}}}%
     % Default for new time fields is "24h"
-    \setkeys{blx at opt@pre}{#1time=24h}%
+    \blx at kv@setkeys{blx at opt@pre}{#1time=24h}%
     % Boolean to determine if times are printed with dates
     \newtoggle{blx@#1dateusetime}%
     \DeclareBibliographyOption[boolean]{#1dateusetime}{%
@@ -14889,7 +15053,7 @@
   \settoggle{blx at labelnumber}{#1}%
   \iftoggle{blx at labelnumber}
     {}
-    {\setkeys{blx at opt@pre}{defernumbers=false}}}
+    {\blx at kv@setkeys{blx at opt@pre}{defernumbers=false}}}
 \DeclareBiblatexOption{type,entry}[boolean]{labelnumber}[true]{%
   \settoggle{blx at labelnumber}{#1}}
 
@@ -14966,7 +15130,7 @@
 \DeclareBibliographyOption[boolean]{defernumbers}[true]{%
   \settoggle{blx at defernumbers}{#1}%
   \iftoggle{blx at defernumbers}
-    {\setkeys{blx at opt@pre}{labelnumber}%
+    {\blx at kv@setkeys{blx at opt@pre}{labelnumber}%
      \let\blx at thelabelnumber\blx at addlabelnumber
      \let\abx at aux@number\blx at aux@number}
     {\let\blx at thelabelnumber\relax
@@ -14973,7 +15137,7 @@
      \let\abx at aux@number\@gobblefive}}
 
 \DeclareBibliographyOption[boolean]{locallabelwidth}[true]{%
-  \blx at key@locallabelwidth{\abx at locallabelwidth}{#1}}
+  \blx at key@locallabelwidth{#1}}
 
 
 \DeclareBibliographyOption[string]{refsection}{%
@@ -15078,11 +15242,11 @@
   \def\blx at tempa#1=#2&{#1}%
   \edef\blx at tempa{%
     \expandafter\blx at tempa\CurrentOption=&}%
-  \ifcsundef{KV at blx@opt at ldt@\blx at tempa}
+  \blx at kv@ifkeyundef{blx at opt@ldt}{\blx at tempa}
     {\endgroup
      \eappto\blx at theoptions{\CurrentOption,}}
     {\edef\blx at tempa{\endgroup
-       \noexpand\setkeys{blx at opt@ldt}{\CurrentOption}}%
+       \noexpand\blx at kv@setkeys{blx at opt@ldt}{\CurrentOption}}%
      \blx at tempa}}
 
 \def\blx at processoptions{%
@@ -15090,21 +15254,64 @@
     {}
     {\begingroup
      \edef\blx at tempa{\endgroup
-       \noexpand\setkeys{blx at opt@pre}{\blx at theoptions}}%
+       \noexpand\blx at kv@setkeys{blx at opt@pre}{\blx at theoptions}}%
      \blx at tempa}}
 
 %% Initial setup
 
+\define at key{blx at opt@ldt}{casechanger}[auto]{%
+  \ifcsundef{blx at opt@casechanger@#1}
+    {\blx at err@invopt
+       {casechanger=#1}
+       {Valid options for 'casechanger' are 'auto', 'expl3' and
+        'latex2e'}}
+    {\csletcs{blx at deferoption@casechanger}{blx at opt@casechanger@#1}}}
+
+
+\csdef{blx at opt@casechanger at auto}{%
+  \RequirePackage{expl3}[2020/04/06]%
+  \@ifpackagelater{expl3}{2020/04/06}
+    {\blx at info{expl3\MessageBreak\csuse{ver at expl3.sty}\MessageBreak
+       is new enough (at least 2020/04/06),\MessageBreak
+       setting 'casechanger=expl3'}%
+     \csuse{blx at opt@casechanger at expl3}}
+    {\blx at info{expl3\MessageBreak\csuse{ver at expl3.sty}\MessageBreak
+       is too old (older than 2020/04/06),\MessageBreak
+       setting 'casechanger=latex2e'}%
+     \csuse{blx at opt@casechanger at latex2e}}}
+
+\csdef{blx at opt@casechanger at latex2e}{%
+  \blx at inputonce{blx-case-latex2e.def}
+    {LaTeX2e (legacy) case changing code}
+    {}{}{}{}}
+\csletcs{blx at opt@casechanger at 2e}{blx at opt@casechanger at latex2e}
+
+% Apparently neither \input nor \blx at inputonce ever pops the
+% \ExplSyntaxOff from \ProvidesExplFile, so we do that ourselves.
+\csdef{blx at opt@casechanger at expl3}{%
+  \blx at inputonce{blx-case-expl3.def}
+    {expl3 case changing code}
+    {}{\ExplSyntaxOff}{}{}}
+\csletcs{blx at opt@casechanger at 3}{blx at opt@casechanger at expl3}
+
+% default to auto
+\csletcs{blx at deferoption@casechanger}{blx at opt@casechanger at auto}
+
 % Set defaults
-\setkeys{blx at opt@ldt}{style=numeric}
-\setkeys{blx at opt@pre}{%
+\blx at kv@setkeys{blx at opt@ldt}{style=numeric}
+\blx at kv@setkeys{blx at opt@pre}{%
   sorting=nty,sortlocale=auto,sortcase,sortupper,sortcites=false,
   maxnames=3,minnames=1,maxalphanames=3,minalphanames=1,
-  maxitems=3,minitems=1,mincrossrefs=2,minxrefs=2,useauthor=true,useeditor=true,
-  usetranslator=false,indexing=false,abbreviate=true,dateabbrev=true,dateera=astronomical,
-  backref=false,backrefsetstyle=setonly,pagetracker=false,ibidtracker=false,
-  idemtracker=false,opcittracker=false,loccittracker=false,citetracker=false,
-  citecounter=false,block=none,language=autobib,clearlang=true,autolang=none,
+  maxitems=3,minitems=1,mincrossrefs=2,minxrefs=2,
+  useauthor=true,useeditor=true,usetranslator=false,
+  indexing=false,abbreviate=true,dateabbrev=true,dateera=astronomical,
+  backref=false,backrefsetstyle=setonly,backreffloats=true,
+  pagetracker=false,
+  ibidtracker=false,idemtracker=false,opcittracker=false,loccittracker=false,
+  citetracker=false,trackfloats=false,
+  citecounter=false,
+  block=none,
+  language=autobib,clearlang=true,autolang=none,langhook=captions,
   date=comp,labeldate=year,origdate=comp,eventdate=comp,urldate=short,
   autopunct=true,punctfont=false,defernumbers=false,timezeros=true,
   refsection=none,refsegment=none,citereset=none,hyperref=auto,
@@ -15122,6 +15329,7 @@
 % Load compatibility code
 \blx at inputonce{blx-compat.def}{compatibility code}{}{}{}{}
 
+
 % Restore catcodes
 \blx at catcodes
 \undef\blx at catcodes
@@ -15129,6 +15337,44 @@
 % Process load-time options
 \ProcessOptions*
 
+% this ultimately loads either
+% blx-case-expl3.def or blx-case-latex2e.def
+\blx at deferoption@casechanger
+
+% This is a bit unfortunate, but we need some more definitions here.
+
+% Language fallback, in order:
+% * explicit option language=<lang>, which overrides everything
+% * langid field of entry
+% * babel/polyglossia lang
+% * main document lang (we should never reach this)
+% * <empty> (we should *definitely* never reach this)
+% Everything here is expandable so that
+% \blx at mksc@lang expands to the language name.
+\def\blx at mksc@lang{%
+  \ifundef\blx at forcelanguagename
+    {\ifundef\abx at field@langid
+      {\ifundef\blx at languagename
+        {\ifundef\blx at main@language
+           {}
+           {\blx at main@language}}
+        {\blx at languagename}}
+      {\abx at field@langid}}
+    {\blx at forcelanguagename}}
+
+\DeclareCaseLangs{%
+  american,british,canadian,
+  english,USenglish,UKenglish,
+  australian,newzealand}
+
+
+% Textcase defines \NoCaseChange as \let\NoCaseChange\@firstofone
+\ifundef\NoCaseChange
+  {\let\NoCaseChange\@firstofone}
+  {}
+
+% That's it for the case change code
+
 % Switch to BibTeX support if requested
 \iftoggle{blx at bibtex}
   {\blx at inputonce{blx-bibtex.def}{BibTeX backend compatibility}{}{}{}{}}
@@ -15166,19 +15412,19 @@
        {\blx at warn@conflopt{%
           '<namepart>inits' conflicts with 'uniquename=full'.\MessageBreak
           Setting 'uniquename=init'}%
-        \setkeys{blx at opt@pre}{uniquename=init}}
+        \blx at kv@setkeys{blx at opt@pre}{uniquename=init}}
        {}%
      \ifdefstrequal\blx at uniquename\blx at opt@uniquename at allfull
        {\blx at warn@conflopt{%
           '<namepart>inits' conflicts with 'uniquename=allfull'.\MessageBreak
           Setting 'uniquename=allinit}%
-        \setkeys{blx at opt@pre}{uniquename=allinit}}
+        \blx at kv@setkeys{blx at opt@pre}{uniquename=allinit}}
        {}%
      \ifdefstrequal\blx at uniquename\blx at opt@uniquename at minfull
        {\blx at warn@conflopt{%
           '<namepart>inits' conflicts with 'uniquename=minfull'.\MessageBreak
           Setting 'uniquename=mininit}%
-        \setkeys{blx at opt@pre}{uniquename=mininit}}
+        \blx at kv@setkeys{blx at opt@pre}{uniquename=mininit}}
        {}}
     {}%
   \nottoggle{blx at labeldateparts}
@@ -15186,7 +15432,7 @@
        {\blx at warn@conflopt{%
           'uniquelist=minyear' requires 'labeldateparts'.\MessageBreak
           Setting 'uniquelist=true'}%
-        \setkeys{blx at opt@pre}{uniquelist}}
+        \blx at kv@setkeys{blx at opt@pre}{uniquelist}}
        {}}
     {}%
     \def\do#1{%
@@ -15195,37 +15441,37 @@
          \ifdefstring\blx at dateera{astronomical}{}
            {\blx at warn@conflopt{%
               '#1=iso' requires 'dateera=astronomical'.\MessageBreak
-              Setting 'dateera=astrononmical'}%
-            \setkeys{blx at opt@pre}{dateera=astronomical}}%
+              Setting 'dateera=astronomical'}%
+            \blx at kv@setkeys{blx at opt@pre}{dateera=astronomical}}%
           \ifcsstring{blx at timeformat@\blx at datetype time}{24h}%
            {}
            {\blx at warn@conflopt{%
               '#1=iso' requires '\blx at datetype time=24h'.\MessageBreak
               Setting '\blx at datetype time=24h'}%
-            \setkeys{blx at opt@pre}{\blx at datetype time=24h}}%
+            \blx at kv@setkeys{blx at opt@pre}{\blx at datetype time=24h}}%
          \iftoggle{blx at julian}
            {\blx at warn@conflopt{%
               '#1=iso' requires 'julian=false'.\MessageBreak
               Setting 'julian=false'}%
-            \setkeys{blx at opt@pre}{julian=false}}
+            \blx at kv@setkeys{blx at opt@pre}{julian=false}}
            {}%
          \nottoggle{blx at datezeros}
            {\blx at warn@conflopt{%
               '#1=iso' requires 'datezeros=true'.\MessageBreak
               Setting 'datezeros=true'}%
-            \setkeys{blx at opt@pre}{datezeros=true}}
+            \blx at kv@setkeys{blx at opt@pre}{datezeros=true}}
            {}%
          \nottoggle{blx at timezeros}
            {\blx at warn@conflopt{%
               '#1=iso' requires 'timezeros=true'.\MessageBreak
               Setting 'timezeros=true'}%
-            \setkeys{blx at opt@pre}{timezeros=true}}
+            \blx at kv@setkeys{blx at opt@pre}{timezeros=true}}
            {}%
          \nottoggle{blx at seconds}
            {\blx at warn@conflopt{%
               '#1=iso' requires 'seconds=true'.\MessageBreak
               Setting 'seconds=true'}%
-            \setkeys{blx at opt@pre}{seconds=true}}
+            \blx at kv@setkeys{blx at opt@pre}{seconds=true}}
            {}}
         {}}%
     \abx at dodates
@@ -15322,5 +15568,7 @@
 
 \def\BiblatexHungarianWarningOff{\global\let\lbx at hu@loadinfo\@empty}
 \def\BiblatexLatvianWarningOff{\global\let\lbx at lv@loadinfo\@empty}
+\def\BiblatexSplitbibDefernumbersWarningOff{%
+  \global\let\blx at printbibchecks@suppresswarn\@empty}
 
 \endinput

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def	2020-08-20 21:11:51 UTC (rev 56143)
@@ -207,53 +207,7 @@
   \let\iflabeldateuncertain\@secondoftwo
   \let\iflabelenddateuncertain\@secondoftwo}
 
-% {<string>}
-% This mustn't be robust as it's likely to be used mainly in tests and so
-% needs to be expandable
-\renewcommand*\rangelen[1]{%
-  \ifblank{#1}
-    {0}%
-    {\expandafter\blx at rangelen@range\romannumeral-`\q%
-      #1\bibrangedash\bibrangedash&%
-    }}
 
-\def\blx at rangelen@range#1\bibrangedash#2\bibrangedash#3&{%
-  \ifblank{#3}
-    {\blx at rangelen@hyphen#1--&}
-    {\blx at rangelen@check{#1}{#2}}%
-}
-\def\blx at rangelen@hyphen#1-#2-#3&{%
-  \ifblank{#3}
-    {1}% No range at all: assume one page
-    {\blx at rangelen@check{#1}{#2}}%
-}
-\def\blx at rangelen@check#1#2{%
-  \expandafter\blx at rangelen@check at aux
-    \number\numexpr
-      \blx at rangelen@check at int{#2}
-      -
-      \blx at rangelen@check at int{#1}
-      + 1
-    \relax
-    &\stop
-}
-\def\blx at rangelen@check at aux#1&#2\stop{%
-  \ifblank{#2}
-    {#1}
-    {-1}%
-}
-\def\blx at rangelen@check at int#1{%
-  \ifblank{#1}
-    {0&}
-    {%
-      \if\number\numexpr0#1-0#1\relax0
-        #1
-      \else
-        0&
-      \fi
-    }%
-}
-
 % Alter message text
 \patchcmd{\blx at bbl@warn}{Biber}{BibTeX}{}{}
 
@@ -330,6 +284,26 @@
     {}%
   \global\csundef{blx at refp@\the\c at refsection @#1}}
 
+\def\blx at citation@xref#1{%
+  \begingroup
+  \edef\blx at tempa{blx at refp@\the\c at refsection @%
+          \csname blx at refc@\the\c at refsection @#1\endcsname}%
+  \ifcsdef\blx at tempa
+    {\ifinlistcs{#1}\blx at tempa
+       {}
+       {\listcsxadd\blx at tempa{#1}}%
+     \blx at tempcnta\z@
+     \def\do##1{\advance\blx at tempcnta\@ne}%
+     \dolistcsloop\blx at tempa}
+    {\listcsxadd\blx at tempa{#1}%
+     \blx at tempcnta\@ne}%
+  \expandafter\endgroup\ifnum\blx at tempcnta<\blx at minxrefs\relax
+  \else
+    \expandafter\expandafter\expandafter\blx at citation@entry
+    \expandafter\expandafter\expandafter{%
+      \csname blx at refc@\the\c at refsection @#1\endcsname}\blx at msg@cundef
+  \fi}
+
 \def\blx at bblend{%
   \ifcsdef{blx at refs@\the\c at refsection}%
     {\begingroup
@@ -343,20 +317,122 @@
      \global\togglefalse{blx at addset}}
     {}}
 
-\def\blx at citation#1#2{%
-  \ifbool{citerequest}
-    {\ifcsdef{blx at setp@\the\c at refsection @#1}
-       {\blx at citation@set{#1}{#2}}
-       {\ifcsdef{blx at setc@\the\c at refsection @#1}
-         {\blx at citation@inset{#1}{#2}}
-         {\blx at citation@entry{#1}{#2}}}%
-     \ifcsdef{blx at refc@\the\c at refsection @#1}%
-       {\blx at citation@xref{#1}}
-       {}}
-    {}}
 
+% set support
+
+% We'll generate 'fake sets' for sorting.
+% A fake set will be the copy of a normal set but with a crossref
+% to the first set member, that way it inherits sorting info.
+
+\def\blx at grabfirstcsvitem#1,#2\blx at grabfirstcsvitem@end{#1}
+
+\def\blx at btx@fakesetentry#1#2#3#4{%
+  \blx at nl
+  @set{#1,\blx at nl
+  \space\space fakeset  = {#2},\blx at nl
+  \space\space entryset = {#3},\blx at nl
+  \space\space crossref = {#4},\blx at nl
+  }%
+}
+
+\def\blx at fakeset@prefix{blx at fakeset-}
+
+\protected\def\blx at writefakeset@oo#1#2{%
+  \begingroup
+  \edef\blx at tempa{\endgroup
+    \noexpand\blx at writefakeset
+      {\expandonce{#1}}
+      {\expandonce{#2}}}%
+  \blx at tempa
+}
+
+\protected\def\blx at writefakeset#1#2{%
+  \blx at auxwrite\blx at bcfout{}{%
+    \blx at btx@fakesetentry
+      {\blx at fakeset@prefix#1}
+      {#1}
+      {#2}
+      {\blx at grabfirstcsvitem#2,\blx at grabfirstcsvitem@end}}}
+
+\protected\def\blx at bbl@fakeset#1{%
+  \csxdef{blx at isfakeset@\the\c at refsection @\abx at field@entrykey}{%
+    \detokenize{#1}}%
+  \global\cslet{blx at getfakeset@\the\c at refsection @#1}\abx at field@entrykey
+}
+
+% we can't rely on \inset in the .bbl (which should be in the child
+% entry), so we produce setc manually from the @set parent
+% but the bibliography may not be in a nice order to grab setc
+% properly, so we need to save setc data in the .aux file
+\appto\blx at secinit{%
+  \cslet{blx at setclist@\the\c at refsection}\@empty
+  \cslet{blx at fakesetplist@\the\c at refsection}\@empty}
+
+\apptocmd{\blx at bbl@set at i}
+  {\ifcsundef{blx at isfakeset@\the\c at refsection @\abx at field@entrykey}
+     {\csxdef{blx at setc@\the\c at refsection @#1}{\abx at field@entrykey}%
+      \listcsxadd{blx at setclist@\the\c at refsection}{\detokenize{#1}}}
+     {}}
+  {}
+  {\blx at error
+     {Failed to patch '\string\blx at bbl@set at i'}
+     {Patching '\string\blx at bbl@set at i' failed for some reason.
+      \MessageBreak
+      Please report this bug}}
+
+% {<section>}{<set child>}{<set parent>}
+\protected\def\blx at aux@set at setc#1#2#3{%
+  \csxdef{blx at setc@#1@#2}{#3}}
+
+\protected\def\blx at aux@write at setc#1#2#3{%
+  \blx at auxwrite\blx at aux{}{\string\blx at aux@set at setc{#1}{#2}{#3}}}
+
+\def\blx at write@setc#1{%
+  \ifcsundef{blx at setc@\the\c at refsection @#1}
+    {}
+    {\blx at aux@write at setc{\the\c at refsection}{#1}
+       {\csuse{blx at setc@\the\c at refsection @#1}}}}
+
+\appto\blx at bblend{%
+  \forlistcsloop{\blx at write@setc}{blx at setclist@\the\c at refsection}}
+
+% blx at setonly doesn't exist here, since it is defined in \inset,
+% rely on the existence of setc instead.
+% We also make sure to skip the actual @set entries and display
+% the fake ones.
+\patchcmd{\blx at bbl@endentry}
+  {\nottoggle{blx at setonly}}
+  {\ifentrytype{set}
+    {\ifcsundef{blx at isfakeset@\the\c at refsection @\abx at field@entrykey}
+       {\blx at writefakeset@oo{\abx at field@entrykey}{\abx at field@entryset}%
+        \settoggle{blx at skipbib}{true}%
+        \settoggle{blx at skipbiblist}{true}%
+        \settoggle{blx at skiplab}{true}}
+       {\listcsxadd{blx at fakesetplist@\the\c at refsection}{%
+          \abx at field@entrykey}}}
+    {}%
+   \ifcsundef{blx at setc@\the\c at refsection @\abx at field@entrykey}}
+  {}
+  {\blx at error
+     {Failed to patch '\string\blx at bbl@endentry'}
+     {Patching '\string\blx at bbl@endentry' failed for some reason.
+      \MessageBreak
+      Please report this bug}}
+
+% cite the fake set for our current set
+% the \expandafter party essentially does
+% \blx at citation@entry{\blx at fakeset@prefix#1}{\blx at msg@cundef}
+% (just correctly \detokenize'd and all)
 \def\blx at citation@set#1#2{%
   \blx at citation@entry{#1}{#2}%
+  \ifcsundef{blx at isfakeset@\the\c at refsection @#1}
+    {\begingroup
+     \expandafter\def\expandafter\blx at tempa\expandafter{%
+       \expandafter\detokenize\expandafter{\blx at fakeset@prefix#1}}%
+     \expandafter\expandafter\expandafter\blx at citation@entry
+     \expandafter\expandafter\expandafter{\blx at tempa}{\blx at msg@cundef}%
+     \endgroup}
+    {}%
   \begingroup
   \def\do##1{\blx at citation@entry{##1}\blx at msg@cundef}%
   \expandafter\expandafter\expandafter\docsvlist
@@ -375,26 +451,142 @@
     {\blx at citation@set{#1}}
     {\blx at citation@entry{#1}}}
 
-\def\blx at citation@xref#1{%
+\def\blx at appentrydatato#1#2{%
+  \ifdef#2
+    {\appto#1{%
+       \def\noexpand#2{\expandonce#2}}}
+    {}}
+
+% if we have a fakeset, load the real @set to get the right entrykey
+% if we have a real @set, load the fakeset for all entry data
+% but make sure that the entrykey fits
+% in any case copy over some label data from its first child
+\def\blx at getdata#1{%
+  \csuse{blx at data@\the\c at refsection @\blx at refcontext@context @#1}%
+  \ifcsundef{blx at isfakeset@\the\c at refsection @#1}
+    {}
+    {\csuse{blx at data@\the\c at refsection @\blx at refcontext@context
+             @\csuse{blx at isfakeset@\the\c at refsection @#1}}}%
+  \ifcsundef{blx at getfakeset@\the\c at refsection @#1}
+    {}
+    {\let\blx at real@abx at field@entrykey\abx at field@entrykey
+     \csuse{blx at data@\the\c at refsection @\blx at refcontext@context
+            @\csuse{blx at getfakeset@\the\c at refsection @#1}}%
+     \let\abx at field@entrykey\blx at real@abx at field@entrykey}%
+  \ifcsundef{blx at setp@\the\c at refsection @\abx at field@entrykey}
+    {}
+    {\begingroup
+     \expandafter\expandafter\expandafter\expandafter
+     \expandafter\expandafter\expandafter\def
+     \expandafter\expandafter\expandafter\expandafter
+     \expandafter\expandafter\expandafter\blx at tempa
+     \expandafter\expandafter\expandafter\expandafter
+     \expandafter\expandafter\expandafter{%
+       \expandafter\expandafter\expandafter\blx at grabfirstcsvitem
+         \csname blx at setp@\the\c at refsection
+           @\abx at field@entrykey\endcsname,\blx at grabfirstcsvitem@end}%
+     \let\blx at tempb\@empty
+     \blx at ifdata{\blx at tempa}
+       {\blx at getdata{\blx at tempa}%
+        \blx at appentrydatato\blx at tempb\abx at field@labelyear
+        \blx at appentrydatato\blx at tempb\abx at field@labelendyear
+        \blx at appentrydatato\blx at tempb\abx at field@labelmonth
+        \blx at appentrydatato\blx at tempb\abx at field@labelendmonth
+        \blx at appentrydatato\blx at tempb\abx at field@labelday
+        \blx at appentrydatato\blx at tempb\abx at field@labelendday
+        \blx at appentrydatato\blx at tempb\abx at field@labelprefix
+        \blx at appentrydatato\blx at tempb\abx at field@labelalpha
+        \blx at appentrydatato\blx at tempb\abx at field@extraalpha
+        \blx at appentrydatato\blx at tempb\abx at field@extradate}
+       {}%
+     \edef\blx at tempb{\endgroup\blx at tempb}%
+     \blx at tempb}%
+  \blx at adjustyears
+  \blx at getlabeldata
+  \blx at aliasfields
+  \blx at setcitecounter}
+
+
+\def\blx at bblend@redosetlabelwidth at i#1{%
   \begingroup
-  \edef\blx at tempa{blx at refp@\the\c at refsection @%
-          \csname blx at refc@\the\c at refsection @#1\endcsname}%
-  \ifcsdef\blx at tempa
-    {\ifinlistcs{#1}\blx at tempa
-       {}
-       {\listcsxadd\blx at tempa{#1}}%
-     \blx at tempcnta\z@
-     \def\do##1{\advance\blx at tempcnta\@ne}%
-     \dolistcsloop\blx at tempa}
-    {\listcsxadd\blx at tempa{#1}%
-     \blx at tempcnta\@ne}%
-  \expandafter\endgroup\ifnum\blx at tempcnta<\blx at minxrefs\relax
-  \else
-    \expandafter\expandafter\expandafter\blx at citation@entry
-    \expandafter\expandafter\expandafter{%
-      \csname blx at refc@\the\c at refsection @#1\endcsname}\blx at msg@cundef
-  \fi}
+  \blx at ifdata{#1}
+    {\blx at getdata{#1}%
+     \nottoggle{blx at skiplab}
+       {\iftoggle{blx at labelnumber}
+          {\ifdefempty\abx at field@localnumber
+             {}
+             {\ifundef\abx at field@shorthand
+                {\blx at bbl@labelnumberwidth at numeric{}}
+                {\blx at bbl@labelnumberwidth at shorthand{}}}}
+          {}%
+        \iftoggle{blx at labelalpha}
+          {\blx at bbl@labelalpha}
+          {}%
+        \iftoggle{blx at labeltitle}
+          {\blx at bbl@labeltitle}
+          {}%
+        \iftoggle{blx at labeltitleyear}
+          {\blx at bbl@labeltitleyear}
+          {}%
+        \iftoggle{blx at labeldateparts}
+          {\blx at bbl@labeldate}
+          {}%
+        \blx at bbl@labelname}
+       {}}
+    {}%
+  \endgroup
+}
 
+\def\blx at bblend@redosetlabelwidth{%
+  \forlistcsloop{\blx at bblend@redosetlabelwidth at i}
+    {blx at fakesetplist@\the\c at refsection}}
+
+\appto\blx at bblend{\blx at bblend@redosetlabelwidth}
+
+% categories need the correct entry key for fake sets
+\def\blx at addtocategory#1#2{%
+  % If we are adding a set member to a category, make sure we also add the
+  % set parent if it is cited. If it is cited, we should be using the set
+  % parent in the category, not the set child member. blx at setc@... will
+  % only exist if the set parent is also cited as it is only defined when a
+  % member contains \inset which only happens when the set parent is cited.
+  \ifcsdef{blx at setc@\the\c at refsection @#2}
+    {\blx at auxwrite\@mainaux{}{\string\abx at aux@category{#1}{\csuse{blx at setc@\the\c at refsection @#2}}}%
+     \abx at aux@category{#1}{\csuse{blx at setc@\the\c at refsection @#2}}}
+    {}%
+  \ifcsundef{blx at getfakeset@\the\c at refsection @#2}
+    {}
+    {\blx at auxwrite\@mainaux{}{\string\abx at aux@category{#1}{\csuse{blx at getfakeset@\the\c at refsection @#2}}}%
+     \abx at aux@category{#1}{\csuse{blx at getfakeset@\the\c at refsection @#2}}}%
+  \blx at auxwrite\@mainaux{}{\string\abx at aux@category{#1}{#2}}%
+  \abx at aux@category{#1}{#2}}
+
+% dynamic entry sets
+
+\def\blx at btx@citeset#1#2{%
+  \blx at nl
+  @set{#1,\blx at nl
+  \space\space entryset = {#2},\blx at nl
+  }%
+}
+
+\protected\def\blx at setreq#1#2{%
+  \blx at auxwrite\blx at bcfout{}{\blx at btx@citeset{#1}{#2}}%
+  \blx at nocite@do{#1}}
+
+% xref and @set
+\def\blx at citation@i#1#2{%
+  \ifbool{citerequest}
+    {\ifcsdef{blx at setp@\the\c at refsection @#1}
+       {\blx at citation@set{#1}{#2}}
+       {\ifcsdef{blx at setc@\the\c at refsection @#1}
+         {\blx at citation@inset{#1}{#2}}
+         {\blx at citation@entry{#1}{#2}}}%
+     \ifcsdef{blx at refc@\the\c at refsection @#1}%
+       {\blx at citation@xref{#1}}
+       {}}
+    {}}
+
 % refcontexts are out, but we can try to save labelprefix
 
 % Luckily all refcontext names use \blx at refcontext@labelprefix, so if we
@@ -406,7 +598,7 @@
 % in \blx at refcontext@labelprefix at real and pass it to the aux file.
 % There are differences to the result obtained with Biber,
 % but it should be good enough for very simple applications.
-\define at key{blx at refcontext}{labelprefix}{%
+\blx at kv@defkey{blx at refcontext}{labelprefix}{%
   \xdef\blx at refcontext@labelprefix at real{#1}%
   \iftoggle{blx at defernumbers}
     {}%
@@ -432,7 +624,7 @@
     The option will be ignored}}
 
 \def\blx at bibtexrefcontext@disable#1{%
-  \define at key{blx at refcontext}{#1}{%
+  \blx at kv@defkey{blx at refcontext}{#1}{%
     \blx at warn@bibtexrefcontext{#1}}}
 
 \forcsvlist{\blx at bibtexrefcontext@disable}{%
@@ -539,13 +731,64 @@
 }
 
 \def\blx at ctrlwrite{%
-  % \sortalphaothers should only contain safe characters,
-  % so we should be able to \edef it
+  \begingroup
+  \blx at safe@actives
+  \let\protect\string
   \edef\blx at sortalphaothers{\sortalphaothers}%
   \immediate\openout\blx at write\blx at ctrlfile\blxauxsuffix.bib\relax
   \blx at auxwrite\blx at write{}{\blx at ctrl}%
-  \immediate\closeout\blx at write}
+  \endgroup
+  \AfterEndDocument{\immediate\closeout\blx at write}}
 
+
+% {<string>}
+% This mustn't be robust as it's likely to be used mainly in tests and so
+% needs to be expandable
+\renewcommand*\rangelen[1]{%
+  \ifblank{#1}
+    {0}%
+    {\expandafter\blx at rangelen@range\romannumeral-`\q%
+      #1\bibrangedash\bibrangedash&%
+    }}
+
+\def\blx at rangelen@range#1\bibrangedash#2\bibrangedash#3&{%
+  \ifblank{#3}
+    {\blx at rangelen@hyphen#1--&}
+    {\blx at rangelen@check{#1}{#2}}%
+}
+\def\blx at rangelen@hyphen#1-#2-#3&{%
+  \ifblank{#3}
+    {1}% No range at all: assume one page
+    {\blx at rangelen@check{#1}{#2}}%
+}
+\def\blx at rangelen@check#1#2{%
+  \expandafter\blx at rangelen@check at aux
+    \number\numexpr
+      \blx at rangelen@check at int{#2}
+      -
+      \blx at rangelen@check at int{#1}
+      + 1
+    \relax
+    &\stop
+}
+\def\blx at rangelen@check at aux#1&#2\stop{%
+  \ifblank{#2}
+    {#1}
+    {-1}%
+}
+\def\blx at rangelen@check at int#1{%
+  \ifblank{#1}
+    {0&}
+    {%
+      \if\number\numexpr0#1-0#1\relax0
+        #1
+      \else
+        0&
+      \fi
+    }%
+}
+
+
 % Disable some interfaces
 
 \renewrobustcmd*{\DeclareSortingScheme}[3][]{}

Added: trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-expl3.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-expl3.def	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-expl3.def	2020-08-20 21:11:51 UTC (rev 56143)
@@ -0,0 +1,271 @@
+\RequirePackage{expl3}[2020/04/06]
+\RequirePackage{xparse}
+\ProvidesExplFile {blx-case-expl3} {\abx at date} {\abx at version}
+  {expl3 case changing code for biblatex}
+
+% Map for babel/polyglossia names
+% to BCP-47-like l3text names.
+% We only need maps for l3text names that do something
+% as of 2020/04/06 those names are
+% az, de-alt, el, lt, nl, tr.
+% biblatex currently only supports dutch, greek and turkish
+% so we only map those.
+% de-alt is optional and still unusual, so *we* don't map it,
+% but a user could map it themselves.
+
+\prop_new:N \l__biblatex_babel_to_pseudobcp_prop
+
+\cs_generate_variant:Nn \msg_info:nnnnn  { nnnxn }
+
+\cs_new_protected:Npn \biblatex_maplang_babel_to_pseudobcp:nn #1 #2
+  {
+    \prop_if_in:NnT \l__biblatex_babel_to_pseudobcp_prop {#1}
+      {
+        \msg_info:nnnxn { biblatex }
+          { overwrite-babel-to-pseudobcp-map }
+          {#1}
+          {\prop_item:Nn \l__biblatex_babel_to_pseudobcp_prop {#1}}
+          {#2}
+      }
+    \prop_put:Nnn \l__biblatex_babel_to_pseudobcp_prop {#1} {#2}
+  }
+
+\NewDocumentCommand \DeclareBabelToExplLanguageMapping {mm}
+  {
+    \biblatex_maplang_babel_to_pseudobcp:nn {#1} {#2}
+  }
+
+\cs_generate_variant:Nn \msg_info:nnnn  { nnnx }
+
+\cs_new_protected:Npn \biblatex_unmaplang_babel_to_pseudobcp:n #1
+  {
+    \prop_if_in:NnT \l__biblatex_babel_to_pseudobcp_prop {#1}
+      {
+        \msg_info:nnnx { biblatex }
+          { remove-babel-to-pseudobcp-map }
+          {#1}
+          { \prop_item:Nn \l__biblatex_babel_to_pseudobcp_prop {#1} }
+      }
+    \prop_remove:Nn \l__biblatex_babel_to_pseudobcp_prop {#1}
+  }
+
+\NewDocumentCommand \UndeclareBabelToExplLanguageMapping {m}
+  {
+    \str_if_eq:nnTF {#1} {*}
+      { \prop_clear:N  \l__biblatex_babel_to_pseudobcp_prop }
+      { \biblatex_unmaplang_babel_to_pseudobcp:n {#1} }
+  }
+
+% Don't put this into biblatex.sty, since
+% \DeclareBabelToExplLanguageMapping has no equivalent in the LaTeX2e
+% code.
+\DeclareBabelToExplLanguageMapping{dutch}{nl}
+\DeclareBabelToExplLanguageMapping{greek}{el}
+\DeclareBabelToExplLanguageMapping{turkish}{tr}
+
+% Our copy of \l_text_titlecase_check_letter_bool
+\bool_new:N \l_biblatex_titlecase_check_letter_bool
+% Just to be clear: unlike l3text our default is "false"
+\bool_set_false:N \l_biblatex_titlecase_check_letter_bool
+
+% Helper macro to avoid unnecessary repetition of the same structure
+% {<case [lowercase|uppercase|titlecase|titlecase_first]>}
+% {<babel language>}{<text>}
+% We use that \prop_item:Nn is empty if the item is not present
+% and that \text_...:nn becomes \text_...:n if the first argument
+% is empty.
+\cs_new_protected:Npn \__biblatex_text_makeconverter:nnn #1 #2 #3
+  {
+    \group_begin:
+      \bool_if_exist:NTF \l_text_titlecase_check_letter_bool
+        {
+          \bool_set_eq:NN \l_text_titlecase_check_letter_bool
+                          \l_biblatex_titlecase_check_letter_bool
+        }
+        {
+          % should we raise an error or at least issue a warning here?
+        }
+      \use:c { text_#1:nn }
+        { \prop_item:Nn \l__biblatex_babel_to_pseudobcp_prop {#2} } {#3}
+    \group_end:
+  }
+
+
+\cs_new:Npn \biblatex_text_lowercase:nn #1 #2
+  {
+    \__biblatex_text_makeconverter:nnn {lowercase} {#1} {#2}
+  }
+
+\cs_generate_variant:Nn \biblatex_text_lowercase:nn { Vn }
+
+\cs_new:Npn \biblatex_text_lowercase:n #1
+  {
+    \biblatex_text_lowercase:Vn \blx at languagename {#1}
+  }
+
+\cs_set_eq:NN \blx at maketext@lowercase \biblatex_text_lowercase:n
+
+
+\cs_new:Npn \biblatex_text_uppercase:nn #1 #2
+  {
+    \__biblatex_text_makeconverter:nnn {uppercase} {#1} {#2}
+  }
+
+\cs_generate_variant:Nn \biblatex_text_uppercase:nn { Vn }
+
+\cs_new:Npn \biblatex_text_uppercase:n #1
+  {
+    \biblatex_text_uppercase:Vn \blx at languagename {#1}
+  }
+
+\cs_set_eq:NN \blx at maketext@uppercase \biblatex_text_uppercase:n
+
+
+\cs_new:Npn \biblatex_text_makecapital:nn #1 #2
+  {
+    \__biblatex_text_makeconverter:nnn {titlecase_first} {#1} {#2}
+  }
+
+\cs_generate_variant:Nn \biblatex_text_makecapital:nn { Vn }
+
+\cs_new:Npn \biblatex_text_makecapital:n #1
+  {
+    \biblatex_text_makecapital:Vn \blx at languagename {#1}
+  }
+
+\cs_set_eq:NN \blx at maketext@makecapital \biblatex_text_makecapital:n
+
+\NewDocumentCommand \MakeCapital {m}
+  {
+    \biblatex_text_makecapital:n {#1}
+  }
+
+
+
+% BibTeX to expl3 case protection code by Joseph Wright
+% https://github.com/plk/biblatex/issues/960#issuecomment-578435859
+% and Bruno Le Floch
+% https://github.com/moewew/biblatex/commit/c485f1b8079d56497b17343d7883b8fcd42f961a#r39225533
+\tl_put_right:Nn \l_text_expand_exclude_tl { \NoCaseChange }
+
+\tl_put_right:Nn \l_text_case_exclude_arg_tl { \NoCaseChange }
+
+\cs_new:Npn \biblatex_text_bibtex_to_expl:n #1
+  {
+    \__biblatex_text_bibtex_loop:w #1
+    { \q_recursion_tail } \q_recursion_stop
+  }
+
+\cs_new:Npn \__biblatex_text_bibtex_loop:w #1 #
+  {
+    \exp_not:n {#1}
+    \__biblatex_text_bibtex_group:n
+  }
+
+\cs_new:Npn \__biblatex_text_bibtex_group:n #1
+  {
+    \quark_if_recursion_tail_stop:n {#1}
+    {
+      \bool_lazy_and:nnTF
+        { \tl_if_head_is_N_type_p:n {#1} }
+        { \exp_after:wN \token_if_cs_p:N \tl_head:w #1 \q_stop }
+        { \exp_not:n {#1} }
+        { \exp_not:n { \NoCaseChange {#1} } }
+      }
+    \__biblatex_text_bibtex_loop:w
+  }
+
+\cs_new_eq:NN \biblatex_text_sentencecase_preprocess:n
+              \biblatex_text_bibtex_to_expl:n
+
+
+% By default we emulate BibTeX's brace case protection rules
+% but the user can turn that off for a more sane behaviour
+% that only relies on \NoCaseChange.
+\DeclareBiblatexOption{global,type,entry}[boolean]{bibtexcaseprotection}[true]{%
+  \str_case:nnF {#1}
+    {
+      { true }
+      {
+        \cs_set_eq:NN \biblatex_text_sentencecase_preprocess:n
+                      \biblatex_text_bibtex_to_expl:n
+      }
+      { false }
+      {
+        \cs_set_eq:NN \biblatex_text_sentencecase_preprocess:n
+                      \use:n
+      }
+    }
+    {
+      \msg_error:nnn { biblatex } { invalid-value-bibtexcaseprotection }
+                     {#1}
+    }
+}
+
+
+\cs_new:Npn \biblatex_text_sentencecase:nn #1 #2
+  {
+    \__biblatex_text_makeconverter:nnn {titlecase} {#1} {#2}
+  }
+
+
+\cs_generate_variant:Nn \clist_if_in:NnTF { NxTF }
+
+\cs_generate_variant:Nn \biblatex_text_sentencecase:nn { Vo, xo }
+
+% If \DeclareCaseLangs says we should apply sentence casing,
+% we go for it and pass the language along to the sentence casing macro.
+% Preprocess is either the BibTeX-to-expl3 brace translator
+% or \@firstofone (do nothing),
+% we need to expand once to get rid of the latter.
+\NewDocumentCommand \MakeSentenceCase {sm}
+  {
+    \IfBooleanTF {#1}
+      {
+        \clist_if_in:NxTF
+          \l__biblatex_caselangs_clist { \blx at mksc@lang }
+          {
+            \biblatex_text_sentencecase:xo { \blx at mksc@lang }
+              { \biblatex_text_sentencecase_preprocess:n {#2} }
+          }
+          {#2}
+      }
+      {
+        \biblatex_text_sentencecase:Vo \blx at languagename
+          { \biblatex_text_sentencecase_preprocess:n {#2} }
+      }
+  }
+
+
+\clist_new:N \l__biblatex_caselangs_clist
+
+% {<language,language,...>}
+\NewDocumentCommand \DeclareCaseLangs {sm}
+  {
+    \IfBooleanF {#1}
+      { \clist_clear:N \l__biblatex_caselangs_clist }
+    \clist_put_left:Nn \l__biblatex_caselangs_clist {#2}
+  }
+
+% \DeclareCaseLangs invocation is in biblatex.sty
+
+
+\NewDocumentCommand \ifcaselang {O{\blx at languagename}}
+  {
+    \clist_if_in:NxTF \l__biblatex_caselangs_clist {#1}
+  }
+
+
+
+\msg_new:nnnn { biblatex } { invalid-value-bibtexcaseprotection }
+  { Invalid~value~'#1'~for~option~'bibtexcaseprotection'. }
+  { Valid~values~for~'bibtexcaseprotection'~are~'true'~and~'false'. }
+
+\msg_new:nnn { biblatex } { remove-babel-to-pseudobcp-map }
+  { Removing~babel->l3text~language~mapping~for~'#1'~to~'#2'. }
+
+\msg_new:nnn { biblatex } { overwrite-babel-to-pseudobcp-map }
+  { Overwriting~babel->l3text~language~mapping~for~'#1'~from~
+    '#2'~to~'#3'. }
+
+\endinput


Property changes on: trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-expl3.def
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-latex2e.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-latex2e.def	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-latex2e.def	2020-08-20 21:11:51 UTC (rev 56143)
@@ -0,0 +1,290 @@
+\ProvidesFile{blx-case-latex2e.def}
+[\abx at cptid]
+
+% we don't have l3text's (pseudo)BCP47 language codes here
+\newrobustcmd*{\DeclareBabelToExplLanguageMapping}[2]{%
+  \blx at warning{The command '\string\DeclareBabelToExplLanguageMapping'%
+    \MessageBreak
+    is only available with the expl3 case changing\MessageBreak
+    implementation ('casechanger=expl3').\MessageBreak
+    Ignoring}}
+
+\newrobustcmd*{\UndeclareBabelToExplLanguageMapping}[1]{%
+  \blx at warning{The command '\string\UndeclareBabelToExplLanguageMapping'%
+    \MessageBreak
+    is only available with the expl3 case changing\MessageBreak
+    implementation ('casechanger=expl3').\MessageBreak
+    Ignoring}}
+
+\def\blx at maketext@lowercase{\MakeLowercase}
+
+\def\blx at maketext@uppercase{\MakeUppercase}
+
+\def\blx at maketext@makecapital{\MakeCapital}
+
+% {<text>}
+\newrobustcmd{\MakeCapital}[1]{%
+  \begingroup
+  \blx at mkcp@init
+  \protected at edef\blx at tempa{#1}%
+  \expandafter\blx at mkcp@parse\blx at tempa\@empty\blx at mkcp@end}
+
+\def\blx at mkcp@init{%
+  \def\blx at mkcp@iec{\noexpand\blx at mkcp@iec\noexpand}%
+  \def\blx at mkcp@bbl{\noexpand\blx at mkcp@bbl\noexpand}%
+  \def\blx at mkcp@sgl{\noexpand\blx at mkcp@sgl\noexpand}%
+  \def\blx at mkcp@dbl{\noexpand\blx at mkcp@dbl\noexpand}%
+  \def\do##1{\def##1{\blx at mkcp@sgl##1}}\abx at dosingleaccents
+  \def\do##1{\def##1{\blx at mkcp@dbl##1}}\abx at dodoubleaccents
+  \def\IeC##1{\blx at mkcp@iec\IeC{##1}}%
+  \def\@tabacckludge##1{%
+    \expandafter\blx at mkcp@sgl\csname\string##1\endcsname}}
+
+\begingroup
+\catcode`\"=\active
+\gappto\blx at mkcp@init{%
+  \ifnum\catcode`\"=\active
+    \def"#1{\blx at mkcp@bbl"\noexpand#1}%
+  \fi}
+\endgroup
+
+\def\blx at mkcp@parse{%
+  \futurelet\@let at token\blx at mkcp@eval}
+
+\long\def\blx at mkcp@eval{%
+  \ifx\@let at token\blx at mkcp@iec
+    \expandafter\blx at mkcp@getiec
+  \fi
+  \ifx\@let at token\blx at mkcp@bbl
+    \expandafter\blx at mkcp@gettwo
+  \fi
+  \ifx\@let at token\blx at mkcp@sgl
+    \expandafter\blx at mkcp@gettwo
+  \fi
+  \ifx\@let at token\blx at mkcp@dbl
+    \expandafter\blx at mkcp@getthree
+  \fi
+  \blx at mkcp@case}
+
+\def\blx at mkcp@getiec#1\blx at mkcp@case#2#3#4{%
+  \blx at mkcp@case{#2#3{#4}}}
+
+\def\blx at mkcp@gettwo#1\blx at mkcp@case#2#3#4{%
+  \blx at mkcp@case{#2#3#4}}
+
+\def\blx at mkcp@getthree#1\blx at mkcp@case#2#3#4#5{%
+  \blx at mkcp@case{#2#3#4#5}}
+
+\long\def\blx at mkcp@case#1{%
+  \begingroup
+  \def\i{I}\def\j{J}%
+  \def\do##1##2{\let##1##2\do}%
+  \expandafter\do\@uclclist\relax{\relax\@gobble}%
+  \uppercase{\protected at edef\blx at tempa{\endgroup\blx at mkcp@end#1}}%
+  \blx at tempa}
+
+\protected\long\def\blx at mkcp@end#1\blx at mkcp@end{%
+  \let\blx at mkcp@iec\noexpand
+  \let\blx at mkcp@bbl\noexpand
+  \let\blx at mkcp@sgl\noexpand
+  \let\blx at mkcp@dbl\noexpand
+  \protected at edef\blx at tempa{\endgroup#1}%
+  \blx at tempa}
+
+
+\DeclareBiblatexOption{global,type,entry}[boolean]{bibtexcaseprotection}[true]{%
+  \ifstrequal{#1}{true}
+    {}
+    {\ifstrequal{#1}{false}
+       {\blx at warning
+          {The option 'bibtexcaseprotection=false' is only\MessageBreak
+           available with expl3}}
+       {\blx at err@invopt{bibtexcaseprotection=#1}
+          {Valid values for 'bibtexcaseprotection' are 'true' and
+           'false'\MessageBreak
+           (but 'false' only works with expl3 code)}}}}
+
+% {<text>}
+\newrobustcmd*{\MakeSentenceCase}{%
+  \@ifstar\blx at mksc@i\blx at mksc@ii}
+
+% \blx at cmksc@lang is defined in biblatex.sty
+% it expands to the applicable language for the title field
+\def\blx at mksc@i{%
+  \xifinlist\blx at mksc@lang\blx at cmksc@lang
+    {\blx at mksc@ii}
+    {\@firstofone}}
+
+\long\def\blx at mksc@ii#1{%
+  \begingroup
+  \let\blx at tempa\@empty
+  \let\blx at tempb\@empty
+  \blx at mksc@init
+  \protected at edef\@tempa{#1}%
+  \expandafter\blx at mksc@parse\@tempa\blx at mksc@end}
+
+\def\blx at mksc@init{%
+  \blx at mkcp@init
+  \def\blx at mkcp@nil{\noexpand\blx at mkcp@nil\noexpand}%
+  \def\i{\blx at mkcp@nil\i}\def\j{\blx at mkcp@nil\j}%
+  \def\do##1{%
+    \ifx##1\relax
+    \else
+      \def##1{\blx at mkcp@nil##1}%
+      \expandafter\do
+    \fi}%
+  \expandafter\do\@uclclist\relax}
+
+\def\blx at mksc@parse{%
+  \futurelet\@let at token\blx at mksc@eval}
+
+\let\blx at asttoken=*
+
+\def\blx at mksc@eval{%
+  \ifx\@let at token\blx at mksc@end
+    \expandafter\blx at mksc@end
+  \fi
+  \ifx\@let at token\bgroup
+    \expandafter\blx at mksc@group
+  \fi
+  \ifx\@let at token\@sptoken
+    \expandafter\blx at mksc@space
+  \fi
+  \ifx\@let at token\blx at mkcp@nil
+    \expandafter\blx at mksc@getone
+  \fi
+  \ifx\@let at token\blx at mkcp@iec
+    \expandafter\blx at mksc@getiec
+  \fi
+  \ifx\@let at token\blx at mkcp@bbl
+    \expandafter\blx at mksc@gettwo
+  \fi
+  \ifx\@let at token\blx at mkcp@sgl
+    \expandafter\blx at mksc@gettwo
+  \fi
+  \ifx\@let at token\blx at mkcp@dbl
+    \expandafter\blx at mksc@getthree
+  \fi
+  \ifx\@let at token\blx at asttoken
+    \expandafter\blx at mksc@cs
+  \fi
+  \if\noexpand\@let at token\relax
+    \expandafter\blx at mksc@cs
+  \fi
+  \blx at mksc@other}
+
+\def\blx at mksc@end#1\blx at mksc@end{%
+  \blx at mksc@eject
+  \let\blx at mkcp@nil\noexpand
+  \let\blx at mkcp@iec\noexpand
+  \let\blx at mkcp@bbl\noexpand
+  \let\blx at mkcp@sgl\noexpand
+  \let\blx at mkcp@dbl\noexpand
+  \let\MakeUppercase\relax
+  \let\MakeLowercase\relax
+  \protected at edef\blx at tempa{\endgroup\blx at tempa}%
+  \blx at tempa}
+
+\long\def\blx at mksc@group#1\blx at mksc@other#2{%
+  \futurelet\@let at token\blx at mksc@ingroup#2&{#2}%
+  \blx at mksc@endhead
+  \blx at mksc@parse}
+
+\long\def\blx at mksc@ingroup#1&#2{%
+  \if\noexpand\@let at token\relax
+    \ifx\@let at token\blx at mkcp@sgl
+      \blx at mksc@nocase{{#2}}%
+    \else
+      \ifx\@let at token\blx at mkcp@dbl
+        \blx at mksc@nocase{{#2}}%
+      \else
+        \blx at mksc@locase{{#2}}%
+      \fi
+    \fi
+  \else
+    \blx at mksc@nocase{{#2}}%
+  \fi}
+
+\def\blx at mksc@space{\def\blx at mksc@space##1\blx at mksc@other}
+\csuse{blx at mksc@space} {%
+  \blx at mksc@anycase{ }%
+  \blx at mksc@endhead
+  \blx at mksc@parse}
+
+\long\def\blx at mksc@cs#1\blx at mksc@other#2{%
+  \ifcat\noexpand~\noexpand#2%
+    \blx at mksc@locase{#2}%
+  \else
+    \blx at mksc@nocase{#2}%
+  \fi
+  \blx at mksc@endhead
+  \blx at mksc@parse}
+
+\def\blx at mksc@getiec#1\blx at mksc@other#2#3#4{%
+  \blx at mksc@other{#2#3{#4}}}
+
+\def\blx at mksc@getone#1\blx at mksc@other#2#3{%
+  \blx at mksc@other{#2#3}}
+
+\def\blx at mksc@gettwo#1\blx at mksc@other#2#3#4{%
+  \blx at mksc@other{#2#3#4}}
+
+\def\blx at mksc@getthree#1\blx at mksc@other#2#3#4#5{%
+  \blx at mksc@other{#2#3#4#5}}
+
+\long\def\blx at mksc@other#1{%
+  \blx at mksc@locase{#1}%
+  \blx at mksc@endhead
+  \blx at mksc@parse}
+
+\def\blx at mksc@locase{%
+  \appto\blx at tempb}
+
+\def\blx at mksc@nocase{%
+  \blx at mksc@eject
+  \appto\blx at tempa}
+
+\def\blx at mksc@anycase{%
+  \ifx\blx at tempb\@empty
+    \expandafter\appto
+    \expandafter\blx at tempa
+  \else
+    \expandafter\appto
+    \expandafter\blx at tempb
+  \fi}
+
+\def\blx at mksc@eject{%
+  \ifx\blx at tempb\@empty
+  \else
+    \eappto\blx at tempa{\noexpand\MakeLowercase{\expandonce\blx at tempb}}%
+    \let\blx at tempb\@empty
+  \fi}
+
+\def\blx at mksc@endhead{%
+  \ifx\blx at tempb\@empty
+  \else
+    \eappto\blx at tempa{\noexpand\MakeCapital{\expandonce\blx at tempb}}%
+    \let\blx at tempb\@empty
+  \fi
+  \let\blx at mksc@endhead\relax}
+
+
+
+% {<language,language,...>}
+\newrobustcmd*{\DeclareCaseLangs}{%
+  \@ifstar
+    {\blx at defcaselangs}
+    {\global\let\blx at cmksc@lang\@empty
+     \blx at defcaselangs}}
+
+\def\blx at defcaselangs#1{%
+  \ifblank{#1}
+    {}
+    {\forcsvlist{\listgadd\blx at cmksc@lang}{#1}}}
+
+% \DeclareCaseLangs invocation is in biblatex.sty
+
+\newrobustcmd*{\ifcaselang}[1][\blx at languagename]{%
+  \xifinlist{#1}\blx at cmksc@lang}
+
+\endinput


Property changes on: trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-latex2e.def
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/biblatex/blx-compat.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-compat.def	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-compat.def	2020-08-20 21:11:51 UTC (rev 56143)
@@ -119,29 +119,29 @@
 
 % biblatex <1.6
 
-\define at key{blx at bib}{maxnames}{\blx at warn@depropt{maxnames}}
-\define at key{blx at los}{maxnames}{\blx at warn@depropt{maxnames}}
-\define at key{blx at bbs}{maxnames}{\blx at warn@depropt{maxnames}}
-\define at key{blx at bbg}{maxnames}{\blx at warn@depropt{maxnames}}
-\define at key{blx at bbc}{maxnames}{\blx at warn@depropt{maxnames}}
+\blx at kv@defkey{blx at bib}{maxnames}{\blx at warn@depropt{maxnames}}
+\blx at kv@defkey{blx at los}{maxnames}{\blx at warn@depropt{maxnames}}
+\blx at kv@defkey{blx at bbs}{maxnames}{\blx at warn@depropt{maxnames}}
+\blx at kv@defkey{blx at bbg}{maxnames}{\blx at warn@depropt{maxnames}}
+\blx at kv@defkey{blx at bbc}{maxnames}{\blx at warn@depropt{maxnames}}
 
-\define at key{blx at bib}{minnames}{\blx at warn@depropt{minnames}}
-\define at key{blx at los}{minnames}{\blx at warn@depropt{minnames}}
-\define at key{blx at bbs}{minnames}{\blx at warn@depropt{minnames}}
-\define at key{blx at bbg}{minnames}{\blx at warn@depropt{minnames}}
-\define at key{blx at bbc}{minnames}{\blx at warn@depropt{minnames}}
+\blx at kv@defkey{blx at bib}{minnames}{\blx at warn@depropt{minnames}}
+\blx at kv@defkey{blx at los}{minnames}{\blx at warn@depropt{minnames}}
+\blx at kv@defkey{blx at bbs}{minnames}{\blx at warn@depropt{minnames}}
+\blx at kv@defkey{blx at bbg}{minnames}{\blx at warn@depropt{minnames}}
+\blx at kv@defkey{blx at bbc}{minnames}{\blx at warn@depropt{minnames}}
 
-\define at key{blx at bib}{maxitems}{\blx at warn@depropt{maxitems}}
-\define at key{blx at los}{maxitems}{\blx at warn@depropt{maxitems}}
-\define at key{blx at bbs}{maxitems}{\blx at warn@depropt{maxitems}}
-\define at key{blx at bbg}{maxitems}{\blx at warn@depropt{maxitems}}
-\define at key{blx at bbc}{maxitems}{\blx at warn@depropt{maxitems}}
+\blx at kv@defkey{blx at bib}{maxitems}{\blx at warn@depropt{maxitems}}
+\blx at kv@defkey{blx at los}{maxitems}{\blx at warn@depropt{maxitems}}
+\blx at kv@defkey{blx at bbs}{maxitems}{\blx at warn@depropt{maxitems}}
+\blx at kv@defkey{blx at bbg}{maxitems}{\blx at warn@depropt{maxitems}}
+\blx at kv@defkey{blx at bbc}{maxitems}{\blx at warn@depropt{maxitems}}
 
-\define at key{blx at bib}{minitems}{\blx at warn@depropt{minitems}}
-\define at key{blx at los}{minitems}{\blx at warn@depropt{minitems}}
-\define at key{blx at bbs}{minitems}{\blx at warn@depropt{minitems}}
-\define at key{blx at bbg}{minitems}{\blx at warn@depropt{minitems}}
-\define at key{blx at bbc}{minitems}{\blx at warn@depropt{minitems}}
+\blx at kv@defkey{blx at bib}{minitems}{\blx at warn@depropt{minitems}}
+\blx at kv@defkey{blx at los}{minitems}{\blx at warn@depropt{minitems}}
+\blx at kv@defkey{blx at bbs}{minitems}{\blx at warn@depropt{minitems}}
+\blx at kv@defkey{blx at bbg}{minitems}{\blx at warn@depropt{minitems}}
+\blx at kv@defkey{blx at bbc}{minitems}{\blx at warn@depropt{minitems}}
 
 % Legacy alias for \printshorthands
 \def\printshorthands{%
@@ -149,7 +149,7 @@
     {\blx at printshorthands}
     {\blx at printshorthands[]}}
 
-\def\blx at printshorthands[#1]{\printbiblist[#1]{shorthand}}
+\def\blx at printshorthands[#1]{\printbiblist[{#1}]{shorthand}}
 
 % Legacy aliases
 \def\AtBeginShorthands{\AtBeginBiblist{shorthand}}
@@ -164,17 +164,17 @@
     'sortlos' option is deprecated.\MessageBreak
     Please use 'sorting' option to '\string\printbiblist'}}
 
-\define at key{blx at bib1}{sorting}{%
+\blx at kv@defkey{blx at bib1}{sorting}{%
   \blx at warning@noline{%
     'sorting' option to '\string\printbibliography' is no longer supported.\MessageBreak
     Please use 'sorting' option to '\string\newrefcontext'}}
 
-\define at key{blx at biblist1}{sorting}{%
+\blx at kv@defkey{blx at biblist1}{sorting}{%
   \blx at warning@noline{%
     'sorting' option to '\string\printbiblist' is no longer supported.\MessageBreak
     Please use 'sorting' option to '\string\newrefcontext'}}
 
-\define at key{blx at bib2}{prefixnumbers}{%
+\blx at kv@defkey{blx at bib2}{prefixnumbers}{%
   \blx at warning@noline{%
     'prefixnumbers' option to '\string\printbibliography' is no longer supported.\MessageBreak
     Please use 'labelprefix' option to '\string\newrefcontext'}}
@@ -198,17 +198,17 @@
   \settoggle{blx at skipbiblist}{#1}}
 
 % Legacy options moved to \namepart in \DeclareLabelalphaNameTemplate
-\define at key{blx at latem@field}{compound}{% deprecated
+\blx at kv@defkey{blx at latem@field}{compound}{% deprecated
   \blx at warning@noline{%
     Ignored 'compound' option to '\string\field' in '\string\DeclareLabelalphaNameTemplate'\MessageBreak
     This is now the 'compound' option of '\string\namepart\space' in\MessageBreak
     '\string\DeclareLabelalphaNameTemplate'}}
-\define at key{blx at latem@field}{pcompound}{% deprecated
+\blx at kv@defkey{blx at latem@field}{pcompound}{% deprecated
   \blx at warning@noline{%
     Ignored 'pcompound' option to '\string\field' in '\string\DeclareLabelalphaNameTemplate'\MessageBreak
     This is now the 'compound' option of '\string\namepart' in\MessageBreak
     '\string\DeclareLabelalphaNameTemplate'}}
-\define at key{blx at latem@field}{pstrwidth}{% deprecated
+\blx at kv@defkey{blx at latem@field}{pstrwidth}{% deprecated
   \blx at warning@noline{%
     Ignored 'pstrwidth' option to '\string\field' in '\string\DeclareLabelalphaNameTemplate'\MessageBreak
     This is now the 'strwidth' option of '\string\namepart' in\MessageBreak
@@ -240,14 +240,14 @@
     Please use 'inits' option to '\string\namepart'\MessageBreak
     in '\string\DeclareSortingNamekeyTemplate' instead}}
 
-\define at key{blx at refcontext}{prefixnumbers}{%LEGACY(<3.3)
+\blx at kv@defkey{blx at refcontext}{prefixnumbers}{%LEGACY(<3.3)
   \blx at warning@noline{%
     prefixnumbers option to '\string\newrefcontext' has been renamed.\MessageBreak
     Please use 'labelprefix' option instead}%
-  \setkeys{blx at refcontext}{labelprefix=#1}}
+  \blx at kv@setkeys{blx at refcontext}{labelprefix=#1}}
 
 % biblatex < 3.4
-\define at key{blx at bib1}{prefixnumbers}{}%LEGACY(<3.4) legacy name for labelprefix
+\blx at kv@defkey{blx at bib1}{prefixnumbers}{}%LEGACY(<3.4) legacy name for labelprefix
 \DeprecateFieldWithReplacement{prefixnumber}{labelprefix}
 \DeclareFieldAlias{prefixnumber}{labelprefix}
 
@@ -256,7 +256,7 @@
   \blx at warning@noline{%
     'datelabel' option is deprecated.\MessageBreak
     Please use 'labeldate' instead}%
-  \setkeys{blx at opt@pre}{labeldate=#1}}
+  \blx at kv@setkeys{blx at opt@pre}{labeldate=#1}}
 
 \DeclareBibliographyOption[boolean]{labelyear}[true]{%
   \blx at warning@noline{%
@@ -307,12 +307,12 @@
   \mkdaterangeisoextra}
 
 % biblatex < 3.8
-\define at key{blx at refcontext}{sortingnamekeyscheme}{%
+\blx at kv@defkey{blx at refcontext}{sortingnamekeyscheme}{%
   \blx at warning@noline{'sortingnamekeyscheme' is deprecated.\MessageBreak
     Please use 'sortingnamekeytemplatename' instead}%
   \gdef\blx at refcontext@sortingnamekeytemplatename{#1}}
 
-\define at key{blx at assignrefcontext}{sortingnamekeyscheme}{%
+\blx at kv@defkey{blx at assignrefcontext}{sortingnamekeyscheme}{%
   \blx at warning@noline{'sortingnamekeyscheme' is deprecated.\MessageBreak
     Please use 'sortingnamekeytemplatename' instead}%
   \def\blx at tempb{#1}}
@@ -351,4 +351,5 @@
     Please use '\string\mkdaterangeisoextra'}%
   \mkdaterangeisoextra}
 
+
 \endinput

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/blx-dm.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-dm.def	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-dm.def	2020-08-20 21:11:51 UTC (rev 56143)
@@ -106,11 +106,11 @@
       \blx at xml@datamodel at entrytype{\blx at tempa}{##1}}}%
   \ifblank{#1}
     {\docsvlist{#2}}
-    {\setkeys{blx at datamodel@entrytypes}{#1}
+    {\blx at kv@setkeys{blx at datamodel@entrytypes}{#1}
      \docsvlist{#2}}%
   \endgroup}
 
-\define at key{blx at datamodel@entrytypes}{skipout}[true]{% true|false
+\blx at kv@defkey{blx at datamodel@entrytypes}{skipout}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempa{ skip\string_output="true"}}
     {}}
@@ -128,7 +128,7 @@
   \boolfalse{dmskipout}%
   \boolfalse{dmlabelfield}%
   \let\blx at tempa\@empty
-  \setkeys{blx at datamodel@field}{#1}%
+  \blx at kv@setkeys{blx at datamodel@field}{#1}%
   \def\do##1{%
     % Generic lists of field/datatypes for testing bib fields
     \ifinlistcs{##1}{blx at datamodelfields@fieldtypes@\blx at dm@fieldtype}
@@ -240,7 +240,7 @@
          \xifinlistcs{\blx at datetype ####1}{blx at datamodel@fields}
            {}
            {\listcsxadd{blx at datamodel@fields}{\blx at datetype ####1}}%
-         \setkeys{blx at datamodel@field}{type=field,datatype=datepart,nullok}%
+         \blx at kv@setkeys{blx at datamodel@field}{type=field,datatype=datepart,nullok}%
          \xappto\blx at bcf@datamodel at fields{%
            \blx at xml@datamodel at field{\blx at tempa}{\blx at datetype ####1}}}%
        \expandafter\docsvlist\expandafter{\blx at nullokdateparts}%
@@ -252,7 +252,7 @@
          \xifinlistcs{\blx at datetype ####1}{blx at datamodel@fields}
            {}
            {\listcsxadd{blx at datamodel@fields}{\blx at datetype ####1}}%
-         \setkeys{blx at datamodel@field}{type=field,datatype=datepart}%
+         \blx at kv@setkeys{blx at datamodel@field}{type=field,datatype=datepart}%
          \xappto\blx at bcf@datamodel at fields{%
            \blx at xml@datamodel at field{\blx at tempa}{\blx at datetype ####1}}}%
        \expandafter\docsvlist\expandafter{\blx at notnulldateparts}%
@@ -261,25 +261,25 @@
    \docsvlist{#2}
    \endgroup}
 
-\define at key{blx at datamodel@field}{type}{% characters
+\blx at kv@defkey{blx at datamodel@field}{type}{% characters
   \eappto\blx at tempa{ fieldtype="#1"}%
   \def\blx at dm@fieldtype{#1}}
-\define at key{blx at datamodel@field}{datatype}{% characters
+\blx at kv@defkey{blx at datamodel@field}{datatype}{% characters
   \eappto\blx at tempa{ datatype="#1"}%
   \def\blx at dm@datatype{#1}}
-\define at key{blx at datamodel@field}{format}{% characters
+\blx at kv@defkey{blx at datamodel@field}{format}{% characters
   \eappto\blx at tempa{ format="#1"}%
   \def\blx at dm@format{#1}}
-\define at key{blx at datamodel@field}{nullok}[true]{% true|false
+\blx at kv@defkey{blx at datamodel@field}{nullok}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempa{ nullok="true"}}
     {}}
-\define at key{blx at datamodel@field}{skipout}[true]{% true|false
+\blx at kv@defkey{blx at datamodel@field}{skipout}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempa{ skip\string_output="true"}%
      \booltrue{dmskipout}}
     {}}
-\define at key{blx at datamodel@field}{label}[true]{% true|false
+\blx at kv@defkey{blx at datamodel@field}{label}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempa{ label="true"}%
      \booltrue{dmlabelfield}}
@@ -290,13 +290,13 @@
   \let\blx at tempa\@empty
   \ifblank{#1}
     {\def\blx at tempa{string}}
-    {\setkeys{blx at datamodel@constant}{#1}}%
+    {\blx at kv@setkeys{blx at datamodel@constant}{#1}}%
   \xappto\blx at bcf@datamodel at constants{\blx at xml@datamodel at constant{\blx at tempa}{#2}{#3}}%
   \csxdef{blx at datamodel@constant@#2}{#3}%
   \csxdef{blx at datamodel@constanttype@#2}{\blx at tempa}%
   \endgroup}
 
-\define at key{blx at datamodel@constant}{type}{%
+\blx at kv@defkey{blx at datamodel@constant}{type}{%
   \def\blx at tempa{#1}}
 
 \newrobustcmd*{\DeclareDatamodelMultiscriptEntryfields}[1]{%
@@ -340,7 +340,7 @@
 \newcommand*{\blx at datamodel@constraint}[2][]{%
   \let\blx at tempc\@empty
   \let\blx at tempd\@empty
-  \setkeys{blx at datamodel@constraint}{#1}%
+  \blx at kv@setkeys{blx at datamodel@constraint}{#1}%
   \let\constraintfieldsxor\blx at datamodel@constraintfieldsxor
   \let\constraintfieldsor\blx at datamodel@constraintfieldsor
   \let\constraintfield\blx at datamodel@constraintfield
@@ -349,15 +349,15 @@
   #2%
   \eappto\blx at tempb{\blx at xml@datamodel at constraint{\blx at tempc}{\blx at tempd}}}
 
-\define at key{blx at datamodel@constraint}{type}{% characters
+\blx at kv@defkey{blx at datamodel@constraint}{type}{% characters
   \eappto\blx at tempc{ type="#1"}}
-\define at key{blx at datamodel@constraint}{datatype}{% characters
+\blx at kv@defkey{blx at datamodel@constraint}{datatype}{% characters
   \eappto\blx at tempc{ datatype="#1"}}
-\define at key{blx at datamodel@constraint}{rangemin}{% integer
+\blx at kv@defkey{blx at datamodel@constraint}{rangemin}{% integer
   \eappto\blx at tempc{ rangemin="#1"}}
-\define at key{blx at datamodel@constraint}{rangemax}{% integer
+\blx at kv@defkey{blx at datamodel@constraint}{rangemax}{% integer
   \eappto\blx at tempc{ rangemax="#1"}}
-\define at key{blx at datamodel@constraint}{pattern}{% regexp
+\blx at kv@defkey{blx at datamodel@constraint}{pattern}{% regexp
   \eappto\blx at tempc{ pattern="#1"}}
 
 \newcommand*{\blx at datamodel@constraint at antecedent}[2][]{%
@@ -364,7 +364,7 @@
   \let\blx at tempe\@empty
   \let\blx at temph\@empty
   \let\constraintfield\blx at datamodel@constraintfieldsub
-  \setkeys{blx at datamodel@constraint at quant}{#1}%
+  \blx at kv@setkeys{blx at datamodel@constraint at quant}{#1}%
   #2%
   \let\constraintfield\blx at datamodel@constraintfield% back to default
   \eappto\blx at tempd{\blx at xml@datamodel at constraint@antecedent{\blx at tempe}{\blx at temph}}}
@@ -373,12 +373,12 @@
   \let\blx at tempe\@empty
   \let\blx at temph\@empty
   \let\constraintfield\blx at datamodel@constraintfieldsub
-  \setkeys{blx at datamodel@constraint at quant}{#1}%
+  \blx at kv@setkeys{blx at datamodel@constraint at quant}{#1}%
   #2%
   \let\constraintfield\blx at datamodel@constraintfield% back to default
   \eappto\blx at tempd{\blx at xml@datamodel at constraint@consequent{\blx at tempe}{\blx at temph}}}
 
-\define at key{blx at datamodel@constraint at quant}{quantifier}{% characters
+\blx at kv@defkey{blx at datamodel@constraint at quant}{quantifier}{% characters
   \eappto\blx at tempe{ quant="#1"}}
 
 \newcommand*{\blx at datamodel@constraintfieldsxor}[1]{%
@@ -496,9 +496,11 @@
   issue,
   issuesubtitle,
   issuetitle,
+  issuetitleaddon,
   iswc,
   journalsubtitle,
   journaltitle,
+  journaltitleaddon,
   label,
   langid,
   langidopts,
@@ -625,6 +627,7 @@
 
 \DeclareDatamodelFields[type=field, datatype=code]{execute}
 
+% fields for all entry types
 \DeclareDatamodelEntryfields{
   abstract,
   annotation,
@@ -632,6 +635,10 @@
   bookpagination,
   crossref,
   day,
+  doi,
+  eprint,
+  eprintclass,
+  eprinttype,
   endday,
   endhour,
   endminute,
@@ -665,6 +672,12 @@
   listf,
   minute,
   month,
+  namea,
+  nameb,
+  namec,
+  nameatype,
+  namebtype,
+  namectype,
   nameaddon,
   options,
   origday,
@@ -743,7 +756,6 @@
   annotator,
   author,
   commentator,
-  doi,
   editor,
   editora,
   editorb,
@@ -753,15 +765,14 @@
   editorbtype,
   editorctype,
   eid,
-  eprint,
-  eprintclass,
-  eprinttype,
   issn,
   issue,
   issuetitle,
   issuesubtitle,
+  issuetitleaddon,
   journalsubtitle,
   journaltitle,
+  journaltitleaddon,
   language,
   note,
   number,
@@ -785,7 +796,6 @@
   annotator,
   chapter,
   commentator,
-  doi,
   edition,
   editor,
   editora,
@@ -795,9 +805,7 @@
   editoratype,
   editorbtype,
   editorctype,
-  eprint,
-  eprintclass,
-  eprinttype,
+  eid,
   foreword,
   introduction,
   isbn,
@@ -828,7 +836,6 @@
   annotator,
   author,
   commentator,
-  doi,
   edition,
   editor,
   editora,
@@ -838,9 +845,6 @@
   editoratype,
   editorbtype,
   editorctype,
-  eprint,
-  eprintclass,
-  eprinttype,
   foreword,
   introduction,
   isbn,
@@ -871,7 +875,6 @@
   booktitleaddon,
   chapter,
   commentator,
-  doi,
   edition,
   editor,
   editora,
@@ -881,9 +884,7 @@
   editoratype,
   editorbtype,
   editorctype,
-  eprint,
-  eprintclass,
-  eprinttype,
+  eid,
   foreword,
   introduction,
   isbn,
@@ -911,12 +912,9 @@
   addendum,
   author,
   chapter,
-  doi,
   editor,
   editortype,
-  eprint,
-  eprintclass,
-  eprinttype,
+  eid,
   howpublished,
   language,
   location,
@@ -935,7 +933,6 @@
   annotator,
   chapter,
   commentator,
-  doi,
   edition,
   editor,
   editora,
@@ -945,9 +942,7 @@
   editoratype,
   editorbtype,
   editorctype,
-  eprint,
-  eprintclass,
-  eprinttype,
+  eid,
   foreword,
   introduction,
   isbn,
@@ -978,7 +973,6 @@
   annotator,
   author,
   commentator,
-  doi,
   edition,
   editor,
   editora,
@@ -988,9 +982,6 @@
   editoratype,
   editorbtype,
   editorctype,
-  eprint,
-  eprintclass,
-  eprinttype,
   foreword,
   introduction,
   isbn,
@@ -1018,7 +1009,6 @@
   booktitleaddon,
   chapter,
   commentator,
-  doi,
   edition,
   editor,
   editora,
@@ -1028,9 +1018,7 @@
   editoratype,
   editorbtype,
   editorctype,
-  eprint,
-  eprintclass,
-  eprinttype,
+  eid,
   foreword,
   introduction,
   isbn,
@@ -1057,13 +1045,9 @@
 \DeclareDatamodelEntryfields[dataset]{
   addendum,
   author,
-  doi,
   edition,
   editor,
   editortype,
-  eprint,
-  eprintclass,
-  eprinttype,
   language,
   location,
   note,
@@ -1082,13 +1066,10 @@
   addendum,
   author,
   chapter,
-  doi,
   edition,
   editor,
   editortype,
-  eprint,
-  eprintclass,
-  eprinttype,
+  eid,
   isbn,
   language,
   location,
@@ -1109,12 +1090,8 @@
 \DeclareDatamodelEntryfields[misc,software]{
   addendum,
   author,
-  doi,
   editor,
   editortype,
-  eprint,
-  eprintclass,
-  eprinttype,
   howpublished,
   language,
   location,
@@ -1130,12 +1107,8 @@
 \DeclareDatamodelEntryfields[online]{
   addendum,
   author,
-  doi,
   editor,
   editortype,
-  eprint,
-  eprintclass,
-  eprinttype,
   language,
   note,
   organization,
@@ -1148,10 +1121,6 @@
 \DeclareDatamodelEntryfields[patent]{
   addendum,
   author,
-  doi,
-  eprint,
-  eprintclass,
-  eprinttype,
   holder,
   location,
   note,
@@ -1165,7 +1134,6 @@
 
 \DeclareDatamodelEntryfields[periodical]{
   addendum,
-  doi,
   editor,
   editora,
   editorb,
@@ -1174,13 +1142,11 @@
   editoratype,
   editorbtype,
   editorctype,
-  eprint,
-  eprintclass,
-  eprinttype,
   issn,
   issue,
   issuesubtitle,
   issuetitle,
+  issuetitleaddon,
   language,
   note,
   number,
@@ -1189,16 +1155,13 @@
   series,
   subtitle,
   title,
+  titleaddon,
   volume}
 
 \DeclareDatamodelEntryfields[mvproceedings]{
   addendum,
-  doi,
   editor,
   editortype,
-  eprint,
-  eprintclass,
-  eprinttype,
   eventday,
   eventendday,
   eventendhour,
@@ -1236,12 +1199,9 @@
 \DeclareDatamodelEntryfields[proceedings]{
   addendum,
   chapter,
-  doi,
   editor,
   editortype,
-  eprint,
-  eprintclass,
-  eprinttype,
+  eid,
   eventday,
   eventendday,
   eventendhour,
@@ -1289,12 +1249,9 @@
   booktitle,
   booktitleaddon,
   chapter,
-  doi,
   editor,
   editortype,
-  eprint,
-  eprintclass,
-  eprinttype,
+  eid,
   eventday,
   eventendday,
   eventendhour,
@@ -1338,10 +1295,7 @@
   addendum,
   author,
   chapter,
-  doi,
-  eprint,
-  eprintclass,
-  eprinttype,
+  eid,
   institution,
   isrn,
   language,
@@ -1361,10 +1315,7 @@
   addendum,
   author,
   chapter,
-  doi,
-  eprint,
-  eprintclass,
-  eprinttype,
+  eid,
   institution,
   language,
   location,
@@ -1431,8 +1382,10 @@
   introduction,
   issuesubtitle,
   issuetitle,
+  issuetitleaddon,
   journalsubtitle,
   journaltitle,
+  journaltitleaddon,
   location,
   mainsubtitle,
   maintitle,
@@ -1598,7 +1551,6 @@
 
 \DeclareDatamodelConstraints[proceedings,mvproceedings]{
   \constraint[type=mandatory]{
-    \constraintfield{editor}
     \constraintfield{title}
   }
 }

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/blx-mcite.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-mcite.def	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-mcite.def	2020-08-20 21:11:51 UTC (rev 56143)
@@ -11,6 +11,9 @@
 \newrobustcmd*{\Mtextcite}{\mcitelike\Textcite}
 \newrobustcmd*{\msupercite}{\mcitelike\supercite}
 
+\newrobustcmd*{\mautocite}{\mcitelike\autocite}
+\newrobustcmd*{\Mautocite}{\mcitelike\Autocite}
+
 %    \mcite{key1,setA,*keyA1,*keyA2,*keyA3,key2,setB,*keyB1,*keyB2,*keyB3}
 % => \mcitelike\cite{key1,setA,*keyA1,*keyA2,*keyA3,key2,setB,*keyB1,*keyB2,*keyB3}
 % => \defbibentryset{setA}{keyA1,keyA2,keyA3}
@@ -28,7 +31,7 @@
   \let\blx at mclike@tempb\@empty
   \let\blx at mclike@tempc\@empty
   \blx at xsanitizeafter\blx at mclike@i{#4}%
-  \edef\blx at mclike@tempa{\endgroup\unexpanded{#1[#2][#3]}{\blx at mclike@tempa}}%
+  \edef\blx at mclike@tempa{\endgroup\unexpanded{#1[{#2}][{#3}]}{\blx at mclike@tempa}}%
   \blx at mclike@tempa}
 
 \def\blx at mclike@i#1{%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/blx-unicode.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-unicode.def	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-unicode.def	2020-08-20 21:11:51 UTC (rev 56143)
@@ -46,17 +46,17 @@
     {\blx at normrange@endash#1––&}
     {\ifblank{#2}
        {\begingroup
-        \edef\blx at tempc{\endgroup
+        \protected at edef\blx at tempc{\endgroup
           \blx at range@out at value{%
-            \expandonce\blx at range@out at item@process{\unexpanded{#1}}%
+            \blx at range@out at item@process{\unexpanded{#1}}%
             \noexpand\bibrangedash}}%
         \blx at tempc}
        {\ifblank{#1}
           {\begingroup
-           \edef\blx at tempc{\endgroup
+           \protected at edef\blx at tempc{\endgroup
              \blx at range@out at value{%
                \noexpand\bibrangedash
-               \expandonce\blx at range@out at item@process{%
+               \blx at range@out at item@process{%
                  \unexpanded{#2}}}}%
            \blx at tempc}
           {\blx at range@process{#1}{#2}}}}}
@@ -66,17 +66,17 @@
     {\blx at normrange@hyphen#1--&}
     {\ifblank{#2}
        {\begingroup
-        \edef\blx at tempc{\endgroup
+        \protected at edef\blx at tempc{\endgroup
           \blx at range@out at value{%
-            \expandonce\blx at range@out at item@process{\unexpanded{#1}}%
+            \blx at range@out at item@process{\unexpanded{#1}}%
             \noexpand\bibrangedash}}%
         \blx at tempc}
        {\ifblank{#1}
           {\begingroup
-           \edef\blx at tempc{\endgroup
+           \protected at edef\blx at tempc{\endgroup
              \blx at range@out at value{%
                \noexpand\bibrangedash
-               \expandonce\blx at range@out at item@process{\unexpanded{#2}}}}%
+               \blx at range@out at item@process{\unexpanded{#2}}}}%
            \blx at tempc}
           {\blx at range@process{#1}{#2}}}}}
 
@@ -85,15 +85,15 @@
     {\blx at firstpage@endash#1––&}
     {\ifblank{#1}
        {\begingroup
-        \edef\blx at tempc{\endgroup
+        \protected at edef\blx at tempc{\endgroup
           \blx at range@out at value{%
             \noexpand\bibrangedash
-            \expandonce\blx at range@out at item@process{\unexpanded{#2}}}}%
+            \blx at range@out at item@process{\unexpanded{#2}}}}%
         \blx at tempc}
        {\begingroup
-        \edef\blx at tempc{\endgroup
+        \protected at edef\blx at tempc{\endgroup
           \blx at range@out at value{%
-            \expandonce\blx at range@out at item@process{\unexpanded{#1}}}}%
+            \blx at range@out at item@process{\unexpanded{#1}}}}%
         \blx at tempc}}}
 
 \def\blx at firstpage@endash#1–#2–#3&{%
@@ -101,15 +101,15 @@
     {\blx at firstpage@hyphen#1--&}
     {\ifblank{#1}
        {\begingroup
-        \edef\blx at tempc{\endgroup
+        \protected at edef\blx at tempc{\endgroup
           \blx at range@out at value{%
             \noexpand\bibrangedash
-            \expandonce\blx at range@out at item@process{\unexpanded{#2}}}}%
+            \blx at range@out at item@process{\unexpanded{#2}}}}%
         \blx at tempc}
        {\begingroup
-        \edef\blx at tempc{\endgroup
+        \protected at edef\blx at tempc{\endgroup
           \blx at range@out at value{%
-            \expandonce\blx at range@out at item@process{\unexpanded{#1}}}}%
+            \blx at range@out at item@process{\unexpanded{#1}}}}%
         \blx at tempc}}}
 
 \endinput

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -1,8 +1,13 @@
 \ProvidesFile{numeric-comp.cbx}
 [\abx at cbxid]
 
-\ExecuteBibliographyOptions{labelnumber,sortcites,autocite=inline}
+\newtoggle{cbx:subentrycomp}
+\DeclareBiblatexOption{global,type,entry}[boolean]{subentrycomp}[true]{%
+  \settoggle{cbx:subentrycomp}{#1}}
 
+\ExecuteBibliographyOptions{labelnumber,sortcites,autocite=inline,
+  subentrycomp=true}
+
 \renewcommand*{\multicitedelim}{\addcomma\space}
 \renewcommand*{\iffinalcitedelim}{%
   \ifnumequal{\value{textcitecount}}{\value{textcitetotal}-1}}
@@ -10,21 +15,44 @@
 \providebool{bbx:subentry}
 \newbool{cbx:parens}
 
-\newcounter{cbx at tempcnta}
-\newcounter{cbx at tempcntb}
+\newcounter{cbx at tempcnta}% no. of labelnumbers skipped
+\newcounter{cbx at tempcntb}% 'predicted' labelnumber for current cite
+\newcounter{cbx at tempcntc}% no. of entrysetcounts we skipped
+\newcounter{cbx at tempcntd}% 'predicted' entrysetcount
 
 \DeclareFieldFormat{entrysetcount}{\mknumalph{#1}}
 
+\newcommand*{\cbx at iflabelnumberequalslast}{%
+  \iffieldequals{labelnumber}{\cbx at lastnumber}}
+
+% \iffieldequals is false even if both are empty/undef
+% so we need a special test for that case
+% this test is optimised for performance and laziness
+% rather than prettiness, not that it would matter a lot...
+\newcommand*{\cbx at iflabelprefixequalslast}{%
+  \ifundef\cbx at lastprefix
+    {\iffieldundef{labelprefix}}
+    {\iffieldequals{labelprefix}{\cbx at lastprefix}}}
+
+% \cbx at iflabelnumberequalslast and \cbx at iflabelprefixequalslast
+\newcommand*{\cbx at iflabelnumberandprefixequallast}{%
+  \cbx at iflabelnumberequalslast
+    {\cbx at iflabelprefixequalslast}
+    {\@secondoftwo}}
+
 \newbibmacro*{cite:init}{%
   \global\boolfalse{cbx:parens}%
   \global\undef\cbx at lasthash
   \global\undef\cbx at lastnumber
   \global\undef\cbx at lastprefix
+  \global\undef\cbx at lastentrysetcount
   \setcounter{cbx at tempcnta}{0}%
-  \setcounter{cbx at tempcntb}{-2}}
+  \setcounter{cbx at tempcntb}{-2}%
+  \setcounter{cbx at tempcntc}{0}%
+  \setcounter{cbx at tempcntd}{-1}}
 
 \newbibmacro*{cite:comp}{%
-  \addtocounter{cbx at tempcntb}{1}%
+  \stepcounter{cbx at tempcntb}%
   \iffieldundef{shorthand}
     {\ifbool{bbx:subentry}
        {\iffieldundef{entrysetcount}
@@ -33,25 +61,22 @@
        {\usebibmacro{cite:comp:comp}}}
     {\usebibmacro{cite:comp:shand}}}
 
+% we externalise printing the citations to
+% cite:print:... macros for easier customisation
+
 \newbibmacro*{cite:comp:comp}{%
-  \ifboolexpr{
-    ( test {\iffieldundef{labelprefix}} and test {\ifundef\cbx at lastprefix} )
-    or
-    test {\iffieldequals{labelprefix}{\cbx at lastprefix}}
-  }
+  \cbx at iflabelprefixequalslast
     {\ifnumequal{\thefield{labelnumber}}{\value{cbx at tempcntb}}
        {\savefield{entrykey}{\cbx at lastkey}%
         \savefield{labelnumber}{\cbx at lastnumber}%
-        \addtocounter{cbx at tempcnta}{1}}
+        \stepcounter{cbx at tempcnta}}
        {\ifnumequal{\thefield{labelnumber}}{\value{cbx at tempcntb}-1}
-          {}
-          {\usebibmacro{cite:dump}%
-           \ifnumgreater{\value{cbx at tempcntb}}{-1}
-             {\multicitedelim}
-             {}%
-           \printtext[bibhyperref]{%
-             \printfield{labelprefix}%
-             \printfield{labelnumber}}}}}
+          {% current cite is *exactly* the same a previous source
+           % this can only happen if the same source is cited twice
+           % and sortcites is turned off
+           % print nothing
+          }
+          {\usebibmacro{cite:comp:end}}}}
     {\usebibmacro{cite:comp:end}}%
   \setcounter{cbx at tempcntb}{\thefield{labelnumber}}%
   \savefield{labelprefix}{\cbx at lastprefix}}
@@ -59,45 +84,105 @@
 \newbibmacro*{cite:comp:end}{%
   \usebibmacro{cite:dump}%
   \ifnumgreater{\value{cbx at tempcntb}}{-1}
-    {\multicitedelim}
+    {\setunit{\multicitedelim}}
     {}%
-  \printtext[bibhyperref]{%
-    \printfield{labelprefix}%
-    \printfield{labelnumber}}}
+  \usebibmacro{cite:print:labelnumber}}
 
 \newbibmacro*{cite:comp:inset}{%
-  \usebibmacro{cite:dump}%
-  \ifnumgreater{\value{cbx at tempcntb}}{-1}
-    {\multicitedelim}
-    {}%
-  \printtext[bibhyperref]{%
-    \printfield{labelprefix}%
-    \printfield{labelnumber}%
-    \printfield{entrysetcount}}%
-  \setcounter{cbx at tempcntb}{-1}}
+  \stepcounter{cbx at tempcntd}%
+  \ifboolexpr{    togl {cbx:subentrycomp}
+              and test {\cbx at iflabelnumberandprefixequallast}}
+    {\ifnumequal{\thefield{entrysetcount}}{\value{cbx at tempcntd}}
+       {\savefield{entrykey}{\cbx at lastkey}%
+        \savefield{entrysetcount}{\cbx at lastentrysetcount}%
+        \stepcounter{cbx at tempcntc}}
+       {\ifnumequal{\thefield{entrysetcount}}{\value{cbx at tempcntd}-1}
+          {% current cite is *exactly* the same a previous source
+           % this can only happen if the same source is cited twice
+           % and sortcites is turned off
+           % print nothing
+          }
+          {\usebibmacro{cite:dump:inset}%
+           \ifnumgreater{\value{cbx at tempcntd}}{-1}
+             {\setunit{\multicitesubentrydelim}}
+             {}%
+           \usebibmacro{cite:print:subentry:comp}}}}
+    {\usebibmacro{cite:dump}%
+     \ifnumgreater{\value{cbx at tempcntb}}{-1}
+       {\multicitedelim}
+       {}%
+     \setcounter{cbx at tempcntd}{-1}%
+     \usebibmacro{cite:print:subentry:full}%
+     \savefield{labelprefix}{\cbx at lastprefix}%
+     \savefield{labelnumber}{\cbx at lastnumber}}%
+    \setcounter{cbx at tempcntd}{\thefield{entrysetcount}}%
+    \setcounter{cbx at tempcntb}{-1}}
 
 \newbibmacro*{cite:comp:shand}{%
   \usebibmacro{cite:dump}%
   \ifnumgreater{\value{cbx at tempcntb}}{-1}
-    {\multicitedelim}
+    {\setunit{\multicitedelim}}
     {}%
-  \printtext[bibhyperref]{\printfield{shorthand}}%
+  \usebibmacro{cite:print:shorthand}%
   \setcounter{cbx at tempcntb}{-1}}
 
+\newbibmacro{cite:dump:inset}{%
+  % dump subentry
+  \ifnumgreater{\value{cbx at tempcntc}}{0}
+    {\ifnumgreater{\value{cbx at tempcntc}}{1}
+       {\setunit{\multicitesubentryrangedelim}}
+       {\setunit{\multicitesubentrydelim}}%
+     \usebibmacro{cite:print:last:subentry:comp}%
+     \global\undef\cbx at lastentrysetcount}
+    {}%
+  \setcounter{cbx at tempcntc}{0}%
+}
+
 \newbibmacro*{cite:dump}{%
+  \usebibmacro{cite:dump:inset}%
+  % dump labelnumber (+labelprefix)
   \ifnumgreater{\value{cbx at tempcnta}}{0}
     {\ifnumgreater{\value{cbx at tempcnta}}{1}
-       {\bibrangedash}
-       {\multicitedelim}%
-     \bibhyperref[\cbx at lastkey]{%
-       \ifdef\cbx at lastprefix
-         {\printtext[labelprefix]{\cbx at lastprefix}}
-         {}%
-       \printtext[labelnumber]{\cbx at lastnumber}}}
+       {\setunit{\multiciterangedelim}}
+       {\setunit{\multicitedelim}}%
+     \usebibmacro{cite:print:last:labelnumber}%
+     \global\undef\cbx at lastprefix}
     {}%
   \setcounter{cbx at tempcnta}{0}%
-  \global\undef\cbx at lastprefix}
+}
 
+% these macros do the actual printing
+
+\newbibmacro*{cite:print:shorthand}{%
+  \printtext[bibhyperref]{\printfield{shorthand}}}
+
+\newbibmacro*{cite:print:labelnumber}{%
+  \printtext[bibhyperref]{%
+    \printfield{labelprefix}%
+    \printfield{labelnumber}}}
+
+\newbibmacro*{cite:print:subentry:comp}{%
+  \printtext[bibhyperref]{\printfield{entrysetcount}}}
+
+\newbibmacro*{cite:print:subentry:full}{%
+  \printtext[bibhyperref]{%
+    \printfield{labelprefix}%
+    \printfield{labelnumber}%
+    \printfield{entrysetcount}}}
+
+\DeclareFieldFormat{bibhyperref:lastkey}{\bibhyperref[\cbx at lastkey]{#1}}
+
+\newbibmacro*{cite:print:last:subentry:comp}{%
+  \printtext[bibhyperref:lastkey]{%
+    \printtext[entrysetcount]{\cbx at lastentrysetcount}}}
+
+\newbibmacro*{cite:print:last:labelnumber}{%
+  \printtext[bibhyperref:lastkey]{%
+    \ifdef\cbx at lastprefix
+      {\printtext[labelprefix]{\cbx at lastprefix}}
+      {}%
+    \printtext[labelnumber]{\cbx at lastnumber}}}
+
 \newbibmacro*{textcite}{%
   \iffieldequals{namehash}{\cbx at lasthash}
     {\usebibmacro{cite:comp}}
@@ -107,7 +192,7 @@
        {}%
      \iffirstcitekey
        {}
-       {\textcitedelim}%
+       {\setunit{\textcitedelim}}%
      \usebibmacro{cite:init}%
      \ifnameundef{labelname}
        {\printfield[citetitle]{labeltitle}}
@@ -169,6 +254,9 @@
 \DeclareCiteCommand{\supercite}[\mkbibsuperscript]
   {\usebibmacro{cite:init}%
    \let\multicitedelim=\supercitedelim
+   \let\multicitesubentrydelim=\supercitesubentrydelim
+   \let\multiciterangedelim=\superciterangedelim
+   \let\multicitesubentryrangedelim=\supercitesubentryrangedelim
    \iffieldundef{prenote}
      {}
      {\BibliographyWarning{Ignoring prenote argument}}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/brazilian.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/brazilian.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/brazilian.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -43,13 +43,17 @@
   \def\mkbibordedition{\mkbibfemord}%
   \def\mkbibordseries{\mkbibfemord}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%
@@ -463,14 +467,17 @@
   langjapanese     = {{japon\^es}{japon\^es}},
   langlatin        = {{latim}{latim}},
   langlatvian      = {{let\~ao}{let\~ao}},
+  langlithuanian   = {{lituano}{lituano}},
   langnorwegian    = {{noruegu\^es}{noruegu\^es}},
   langpolish       = {{polon\^es}{polon\^es}},
   langportuguese   = {{portugu{\^e}s}{portugu{\^e}s}},
   langrussian      = {{russo}{russo}},
+  langserbian      = {{s\'ervio}{s\'ervio}},
   langslovak       = {{eslovaco}{eslovaco}},
   langslovene      = {{esloveno}{esloveno}},
   langspanish      = {{espanhol}{espanhol}},
   langswedish      = {{sueco}{sueco}},
+  langturkish      = {{turco}{turco}},
   langukrainian    = {{ucraniano}{ucraniano}},
   fromamerican     = {{do ingl\^es}{do ingl\^es}},
   frombrazilian    = {{do portugu{\^e}s}{do portugu{\^e}s}},
@@ -492,14 +499,17 @@
   fromjapanese     = {{do japon\^es}{do japon\^es}},
   fromlatin        = {{do latim}{do latim}},
   fromlatvian      = {{do let\~ao}{do let\~ao}},
+  fromlithuanian   = {{do lituano}{do lituano}},
   fromnorwegian    = {{do noruegu\^es}{do noruegu\^es}},
   frompolish       = {{do polon\^es}{do polon\^es}},
   fromportuguese   = {{do portugu{\^e}s}{do portugu{\^e}s}},
   fromrussian      = {{do russo}{do russo}},
+  fromserbian      = {{do s\'ervio}{do s\'ervio}},
   fromslovak       = {{do eslovaco}{do eslovaco}},
   fromslovene      = {{do esloveno}{do esloveno}},
   fromspanish      = {{do espanhol}{do espanhol}},
   fromswedish      = {{do sueco}{do sueco}},
+  fromturkish      = {{do turco}{do turco}},
   fromukrainian    = {{do ucraniano}{do ucraniano}},
   countryde        = {{Alemanha}{DE}},
   countryeu        = {{Uni\~ao Europeia}{EU}},

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/british.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/british.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/british.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -42,13 +42,17 @@
       {\bibstring{\thefield{#1}}}
       {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/bulgarian.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/bulgarian.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/bulgarian.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -70,13 +70,17 @@
   \def\mkbibordedition{\mkbibneutord}%
   \def\mkbibordseries{\mkbibfemord}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/catalan.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/catalan.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/catalan.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -66,13 +66,17 @@
   \def\mkbibordedition{\mkbibfemord}%
   \def\mkbibordseries{\mkbibfemord}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%
@@ -243,9 +247,9 @@
   translatorsaf    = {{traductors i autors de l'ep\'{\i}leg}
                       {trad\adddotspace i aut\adddotspace de l'ep\adddot}},
   translatorcoin   = {{traductor, comentarista i autor de la introducci\'o}
-                      {trad.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddotspace}},
+                      {trad.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddot}},
   translatorscoin  = {{traductors, comentaristes i autors de la introducci\'o}
-                      {trad.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddotspace}},
+                      {trad.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddot}},
   translatorcofo   = {{traductor, comentarista i autor del pr\`oleg}
                       {trad.,\addabbrvspace com\adddotspace i aut\adddotspace del pr\`ol\adddot}},
   translatorscofo  = {{traductors, comentaristes i autors del pr\`oleg}
@@ -422,7 +426,7 @@
   version          = {{versi\'o}{vers\adddot}},
   url              = {{adre\c{c}a}{adr\adddot}},
   urlfrom          = {{disponible a}{disp\adddotspace a}},
-  urlseen          = {{consultat}{cons\adddotspace}}, % Possibly better «consultat \smartel», but \smartel unavailable
+  urlseen          = {{consultat}{cons\adddot}}, % Possibly better «consultat \smartel», but \smartel unavailable
   inpreparation    = {{en preparaci\'o}{en prep\adddot}},
   inpress          = {{a impremta}{a impr\adddot}},% Per revisar
   prepublished     = {{pre-publicat}{pre-publicat}},

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/croatian.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/croatian.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/croatian.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -45,13 +45,17 @@
   \def\mkbibordedition{\mkbibordinal}%
   \def\mkbibordseries{\mkbibfemord}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/czech.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/czech.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/czech.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -38,13 +38,17 @@
             {\bibstring{\thefield{#1}}}
             {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%
@@ -81,12 +85,14 @@
   compilers        = {{sestavili}{sest\adddot}},
   redactor         = {{redaktor}{red\adddot}},
   redactors        = {{redakto\v{r}i}{red\adddot}},
+  reviser          = {{korektor}{kor\adddot}},
+  revisers         = {{korekto\v{r}i}{kor\adddot}},
   founder          = {{zakladatel}{zakl\adddot}},
   founders         = {{zakladatel\'{e}}{zakl\adddot}},
   continuator      = {{pokra\v{c}ovatel}{pokr\adddot}},% FIXME: unsure
   continuators     = {{pokra\v{c}ovatel\'{e}}{pokr\adddot}},% FIXME: unsure
-  collaborator     = {{spolupracovn\'{i}k}{spoluprac\adddot}},% FIXME: unsure
-  collaborators    = {{spolupracovn\'{i}ci}{spoluprac\adddot}},% FIXME: unsure
+  collaborator     = {{spolupracovn\'{\i}k}{spoluprac\adddot}},% FIXME: unsure
+  collaborators    = {{spolupracovn\'{\i}ci}{spoluprac\adddot}},% FIXME: unsure
   translator       = {{p\v{r}ekladatel}{p\v{r}ekl\adddot}},
   translators      = {{p\v{r}ekladatel\'{e}}{p\v{r}ekl\adddot}},
   commentator      = {{koment\'{a}tor}{kom\adddot}},
@@ -93,23 +99,35 @@
   commentators     = {{koment\'{a}to\v{r}i}{kom\adddot}},
   annotator        = {{anot\'{a}tor}{anot\adddot}},
   annotators       = {{anot\'{a}to\v{r}i}{anot\adddot}},
-  commentary       = {{koment\'{a}tor}{komm\adddot}},% FIXME: unsure
-  annotations      = {{anotatace}{anot\adddot}},
+  commentary       = {{koment\'{a}\v{r}}{kom\adddot}},
+  annotations      = {{anotace}{anot\adddot}},
   introduction     = {{\'{u}vod}{\'{u}v\adddot}},
   foreword         = {{p\v{r}edmluva}{p\v{r}edml\adddot}},
   afterword        = {{doslov}{dosl\adddot}},
-  editortr         = {{editor a p\v{r}ekladatel}{ed\adddotspace a p\v{r}ekl\adddot}},
-  editorstr        = {{edito\v{r}i a p\v{r}ekladatel\'{e}}{ed\adddotspace a p\v{r}ekl\adddot}},
-  editorco         = {{editor a koment\'{a}tor}{ed\adddotspace a kom\adddot}},
-  editorsco        = {{editor a koment\'{a}to\v{r}i}{ed\adddotspace a kom\adddot}},
-  editoran         = {{editor a anot\'{a}tor}{ed\adddotspace a anot\adddot}},
-  editorsan        = {{editor a anot\'{a}to\v{r}i}{ed\adddotspace a anot\adddot}},
-  editorin         = {{editor a \'{u}vod}{ed\adddotspace \'{u}v\adddot}},
-  editorsin        = {{edito\v{r}i a \'{u}vod}{ed\adddotspace a \'{u}v\adddot}},
-  editorfo         = {{editor a p\v{r}edmluva}{ed\adddotspace a p\v{r}edml\adddot}},
-  editorsfo        = {{edito\v{r}i a p\v{r}edmluva}{ed\adddotspace a p\v{r}edml\adddot}},
-  editoraf         = {{editor a doslov}{ed\adddotspace a dosl\adddot}},
-  editorsaf        = {{edito\v{r}i a  doslov}{ed\adddotspace a dosl\adddot}},
+  editortr         = {{editor a p\v{r}ekladatel}%
+                      {ed\adddotspace a p\v{r}ekl\adddot}},
+  editorstr        = {{edito\v{r}i a p\v{r}ekladatel\'{e}}%
+                      {ed\adddotspace a p\v{r}ekl\adddot}},
+  editorco         = {{editor a koment\'{a}tor}%
+                      {ed\adddotspace a kom\adddot}},
+  editorsco        = {{editor a koment\'{a}to\v{r}i}%
+                      {ed\adddotspace a kom\adddot}},
+  editoran         = {{editor a anot\'{a}tor}%
+                      {ed\adddotspace a anot\adddot}},
+  editorsan        = {{editor a anot\'{a}to\v{r}i}%
+                      {ed\adddotspace a anot\adddot}},
+  editorin         = {{editor a \'{u}vod}%
+                      {ed\adddotspace a \'{u}v\adddot}},
+  editorsin        = {{edito\v{r}i a \'{u}vod}%
+                      {ed\adddotspace a \'{u}v\adddot}},
+  editorfo         = {{editor a p\v{r}edmluva}%
+                      {ed\adddotspace a p\v{r}edml\adddot}},
+  editorsfo        = {{edito\v{r}i a p\v{r}edmluva}%
+                      {ed\adddotspace a p\v{r}edml\adddot}},
+  editoraf         = {{editor a doslov}%
+                      {ed\adddotspace a dosl\adddot}},
+  editorsaf        = {{edito\v{r}i a doslov}%
+                      {ed\adddotspace a dosl\adddot}},
   editortrco       = {{editor, p\v{r}eklad\ a koment\'{a}tor}%
                       {ed.,\addabbrvspace p\v{r}ekl\adddot\ a kom\adddot}},% FIXME: hruznost
   editorstrco      = {{edito\v{r}i, p\v{r}ekladatel\'{e}\ a koment\'{a}to\v{r}i}%
@@ -119,161 +137,197 @@
   editorstran      = {{edito\v{r}i, p\v{r}ekladatel\'{e}\ a anot\'{a}to\v{r}i}%
                       {ed.,\addabbrvspace p\v{r}ekl\adddot\ a anot\adddot}},
   editortrin       = {{editor, p\v{r}ekladatel\ a \'{u}vod}%
-                      {ed.,\addabbrvspace p\v{r}ekl\adddot\ a \'{u}vod\adddot}},
+                      {ed.,\addabbrvspace p\v{r}ekl\adddot\ a \'{u}v\adddot}},
   editorstrin      = {{edito\v{r}i, p\v{r}ekladatel\'{e}\ a \'{u}vod}%
-                      {ed.,\addabbrvspace p\v{r}ekl\adddot\ a \'{u}vod\adddot}},
+                      {ed.,\addabbrvspace p\v{r}ekl\adddot\ a \'{u}v\adddot}},
   editortrfo       = {{editor, p\v{r}ekladatel\ a p\v{r}edmluva}%
                       {ed.,\addabbrvspace p\v{r}ekl\adddot\ a p\v{r}edml\adddot}},
   editorstrfo      = {{edito\v{r}i, p\v{r}ekladatel\'{e}\ a p\v{r}edmluva}%
                       {ed.,\addabbrvspace p\v{r}ekl\adddot\ a p\v{r}edml\adddot}},
-  editortraf       = {{editor, p\v{r}ekladatel\ a  doslov}%
-                      {ed.,\addabbrvspace p\v{r}ekl\adddot\ a afterw\adddot}},
-  editorstraf      = {{edito\v{r}i, p\v{r}ekladatel\'{e}\ a  doslov}%
-                      {ed.,\addabbrvspace p\v{r}ekl\adddot\ a afterw\adddot}},
+  editortraf       = {{editor, p\v{r}ekladatel\ a doslov}%
+                      {ed.,\addabbrvspace p\v{r}ekl\adddot\ a dosl\adddot}},
+  editorstraf      = {{edito\v{r}i, p\v{r}ekladatel\'{e}\ a doslov}%
+                      {ed.,\addabbrvspace p\v{r}ekl\adddot\ a dosl\adddot}},
   editorcoin       = {{editor, koment\'{a}tor\ a \'{u}vod}%
-                      {ed.,\addabbrvspace kom\adddot\ a \'{u}vod\adddot}},
+                      {ed.,\addabbrvspace kom\adddot\ a \'{u}v\adddot}},
   editorscoin      = {{edito\v{r}i, koment\'{a}to\v{r}i\ a \'{u}vod}%
-                      {ed.,\addabbrvspace kom\adddot\ a \'{u}vod\adddot}},
+                      {ed.,\addabbrvspace kom\adddot\ a \'{u}v\adddot}},
   editorcofo       = {{editor, koment\'{a}tor\ a p\v{r}edmluva}%
                       {ed.,\addabbrvspace kom\adddot\ a p\v{r}edml\adddot}},
   editorscofo      = {{edito\v{r}i, koment\'{a}to\v{r}i\ a p\v{r}edmluva}%
                       {ed.,\addabbrvspace kom\adddot\ a p\v{r}edml\adddot}},
-  editorcoaf       = {{editor, koment\'{a}tor\ a  doslov}%
+  editorcoaf       = {{editor, koment\'{a}tor\ a doslov}%
                       {ed.,\addabbrvspace kom\adddot\ a dosl\adddot}},
-  editorscoaf      = {{edito\v{r}i, koment\'{a}to\v{r}i\ a  doslov}%
+  editorscoaf      = {{edito\v{r}i, koment\'{a}to\v{r}i\ a doslov}%
                       {ed.,\addabbrvspace kom\adddot\ a dosl\adddot}},
   editoranin       = {{editor, anot\'{a}tor\ a \'{u}vod}%
-                      {ed.,\addabbrvspace anot\adddot\ a \'{u}vod\adddot}},
+                      {ed.,\addabbrvspace anot\adddot\ a \'{u}v\adddot}},
   editorsanin      = {{edito\v{r}i, anot\'{a}to\v{r}i\ a \'{u}vod}%
-                      {ed.,\addabbrvspace anot\adddot\ a \'{u}vod\adddot}},
+                      {ed.,\addabbrvspace anot\adddot\ a \'{u}v\adddot}},
   editoranfo       = {{editor, anot\'{a}tor\ a p\v{r}edmluva}%
                       {ed.,\addabbrvspace anot\adddot\ a p\v{r}edml\adddot}},
   editorsanfo      = {{edito\v{r}i, anot\'{a}to\v{r}i\ a p\v{r}edmluva}%
                       {ed.,\addabbrvspace anot\adddot\ a p\v{r}edml\adddot}},
-  editoranaf       = {{editor, anot\'{a}tor\ a  doslov}{ed.,\addabbrvspace anot\adddot\ a dosl\adddot}},
-  editorsanaf      = {{edito\v{r}i, anot\'{a}to\v{r}i\ a  doslov}%
+  editoranaf       = {{editor, anot\'{a}tor\ a doslov}%
                       {ed.,\addabbrvspace anot\adddot\ a dosl\adddot}},
+  editorsanaf      = {{edito\v{r}i, anot\'{a}to\v{r}i\ a doslov}%
+                      {ed.,\addabbrvspace anot\adddot\ a dosl\adddot}},
   editortrcoin     = {{editor, p\v{r}ekladatel, koment\'{a}tor\ a \'{u}vod}%
-                      {ed.,\addabbrvspace p\v{r}ekl., kom\adddot\ a \'{u}vod\adddot}},
+                      {ed.,\addabbrvspace p\v{r}ekl., kom\adddot\ a \'{u}v\adddot}},
   editorstrcoin    = {{edito\v{r}i, p\v{r}ekladatel\'{e}, koment\'{a}to\v{r}i\ a \'{u}vod}%
-                      {ed.,\addabbrvspace p\v{r}ekl., kom\adddot\ a \'{u}vod\adddot}},
+                      {ed.,\addabbrvspace p\v{r}ekl., kom\adddot\ a \'{u}v\adddot}},
   editortrcofo     = {{editor, p\v{r}ekladatel, koment\'{a}tor\ a p\v{r}edmluva}%
                       {ed.,\addabbrvspace p\v{r}ekl., kom\adddot\ a p\v{r}edml\adddot}},
   editorstrcofo    = {{edito\v{r}i, p\v{r}ekladatel\'{e}, koment\'{a}to\v{r}i\ a p\v{r}edmluva}%
                       {ed.,\addabbrvspace p\v{r}ekl., kom\adddot\ a p\v{r}edml\adddot}},
-  editortrcoaf     = {{editor, p\v{r}ekladatel, koment\'{a}tor\ a  doslov}%
+  editortrcoaf     = {{editor, p\v{r}ekladatel, koment\'{a}tor\ a doslov}%
                       {ed.,\addabbrvspace p\v{r}ekl., kom\adddot\ a dosl\adddot}},
-  editorstrcoaf    = {{edito\v{r}i, p\v{r}ekladatel\'{e}, koment\'{a}to\v{r}i\ a  doslov}%
+  editorstrcoaf    = {{edito\v{r}i, p\v{r}ekladatel\'{e}, koment\'{a}to\v{r}i\ a doslov}%
                       {ed.,\addabbrvspace p\v{r}ekl., kom\adddot\ a dosl\adddot}},
   editortranin     = {{editor, p\v{r}ekladatel, anot\'{a}tor\ a \'{u}vod}%
-                      {ed.,\addabbrvspace p\v{r}ekl., anot\adddot\ a \'{u}vod\adddot}},
+                      {ed.,\addabbrvspace p\v{r}ekl., anot\adddot\ a \'{u}v\adddot}},
   editorstranin    = {{edito\v{r}i, p\v{r}ekladatel\'{e}, anot\'{a}to\v{r}i\ a \'{u}vod}%
-                      {ed.,\addabbrvspace p\v{r}ekl., anot\adddot\ a \'{u}vod\adddot}},
+                      {ed.,\addabbrvspace p\v{r}ekl., anot\adddot\ a \'{u}v\adddot}},
   editortranfo     = {{editor, p\v{r}ekladatel, anot\'{a}tor\ a p\v{r}edmluva}%
                       {ed.,\addabbrvspace p\v{r}ekl., anot\adddot\ a p\v{r}edml\adddot}},
   editorstranfo    = {{edito\v{r}i, p\v{r}ekladatel\'{e}, anot\'{a}to\v{r}i\ a p\v{r}edmluva}%
                       {ed.,\addabbrvspace p\v{r}ekl., anot\adddot\ a p\v{r}edml\adddot}},
-  editortranaf     = {{editor, p\v{r}ekladatel, anot\'{a}tor\ a  doslov}%
+  editortranaf     = {{editor, p\v{r}ekladatel, anot\'{a}tor\ a doslov}%
                       {ed.,\addabbrvspace p\v{r}ekl., anot\adddot\ a dosl\adddot}},
-  editorstranaf    = {{edito\v{r}i, p\v{r}ekladatel\'{e}, anot\'{a}to\v{r}i\ a  doslov}%
+  editorstranaf    = {{edito\v{r}i, p\v{r}ekladatel\'{e}, anot\'{a}to\v{r}i\ a doslov}%
                       {ed.,\addabbrvspace p\v{r}ekl., anot\adddot\ a dosl\adddot}},
-  translatorco     = {{p\v{r}ekladatel a koment\'{a}tor}{p\v{r}ekl\adddot\ a kom\adddot}},
-  translatorsco    = {{p\v{r}ekladatel\'{e} a koment\'{a}to\v{r}i}{p\v{r}ekl\adddot\ a kom\adddot}},
-  translatoran     = {{p\v{r}ekladatel a anot\'{a}tor}{p\v{r}ekl\adddot\ a anot\adddot}},
-  translatorsan    = {{p\v{r}ekladatel\'{e} a anot\'{a}to\v{r}i}{p\v{r}ekl\adddot\ a anot\adddot}},
-  translatorin     = {{p\v{r}eklad a \'{u}vod}{p\v{r}ekl\adddot\ a \'{u}vod\adddot}},
-  translatorsin    = {{p\v{r}eklad a \'{u}vod}{p\v{r}ekl\adddot\ a \'{u}vod\adddot}},
-  translatorfo     = {{p\v{r}eklad a p\v{r}edmluva}{p\v{r}ekl\adddot\ a p\v{r}edml\adddot}},
-  translatorsfo    = {{p\v{r}eklad a p\v{r}edmluva}{p\v{r}ekl\adddot\ a p\v{r}edml\adddot}},
-  translatoraf     = {{p\v{r}eklad a  doslov}{p\v{r}ekl\adddot\ a dosl\adddot}},
-  translatorsaf    = {{p\v{r}eklad a  doslov}{p\v{r}ekl\adddot\ a dosl\adddot}},
-  translatorcoin   = {{p\v{r}eklad, koment\'{a}\v{r}\ a \'{u}vod}{p\v{r}ekl., kom\adddot\ a \'{u}vod\adddot}},
-  translatorscoin  = {{p\v{r}eklad, koment\'{a}\v{r}\ a \'{u}vod}{p\v{r}ekl., kom\adddot\ a \'{u}vod\adddot}},
-  translatorcofo   = {{p\v{r}eklad, koment\'{a}\v{r}\ a p\v{r}edmluva}{p\v{r}ekl., kom\adddot\ a p\v{r}edml\adddot}},
-  translatorscofo  = {{p\v{r}eklad, koment\'{a}\v{r}\ a p\v{r}edmluva}{p\v{r}ekl., kom\adddot\ a p\v{r}edml\adddot}},
-  translatorcoaf   = {{p\v{r}eklad, koment\'{a}\v{r}\ a  doslov}{p\v{r}ekl., kom\adddot\ a dosl\adddot}},
-  translatorscoaf  = {{p\v{r}eklad, koment\'{a}\v{r}\ a  doslov}{p\v{r}ekl., kom\adddot\ a dosl\adddot}},
-  translatoranin   = {{p\v{r}eklad, anotace,\ a \'{u}vod}{p\v{r}ekl., anot\adddot\ a \'{u}vod\adddot}},
-  translatorsanin  = {{p\v{r}eklad, anotace,\ a \'{u}vod}{p\v{r}ekl., anot\adddot\ a \'{u}vod\adddot}},
-  translatoranfo   = {{p\v{r}eklad, anotace,\ a p\v{r}edmluva}{p\v{r}ekl., anot\adddot\ a p\v{r}edml\adddot}},
-  translatorsanfo  = {{p\v{r}eklad, anotace,\ a p\v{r}edmluva}{p\v{r}ekl., anot\adddot\ a p\v{r}edml\adddot}},
-  translatoranaf   = {{p\v{r}eklad, anotace,\ a  doslov}{p\v{r}ekl., anot\adddot\ a dosl\adddot}},
-  translatorsanaf  = {{p\v{r}eklad, anotace,\ a  doslov}{p\v{r}ekl., anot\adddot\ a dosl\adddot}},
-% organizer        = {{}{}},% FIXME: missing
-% organizers       = {{}{}},% FIXME: missing
-% byorganizer      = {{}{}},% FIXME: missing
-  byauthor         = {{by}{by}},
-  byeditor         = {{editov\'{a}no}{ed\adddotspace}},
-  bycompiler       = {{sestaveno}{comp\adddotspace}},
-  byredactor       = {{redigov\'{a}no}{red\adddotspace}},
-  byfounder        = {{zalo\v{z}eno}{found\adddotspace}},
-  bycontinuator    = {{pokra\v{c}ov\'{a}no}{cont\adddotspace}},
-  bycollaborator   = {{ve spolupr\'{a}ci s}{ve spol\adddotspace s}},% FIXME: unsure
+  translatorco     = {{p\v{r}ekladatel a koment\'{a}tor}%
+                      {p\v{r}ekl\adddot\ a kom\adddot}},
+  translatorsco    = {{p\v{r}ekladatel\'{e} a koment\'{a}to\v{r}i}%
+                      {p\v{r}ekl\adddot\ a kom\adddot}},
+  translatoran     = {{p\v{r}ekladatel a anot\'{a}tor}%
+                      {p\v{r}ekl\adddot\ a anot\adddot}},
+  translatorsan    = {{p\v{r}ekladatel\'{e} a anot\'{a}to\v{r}i}%
+                      {p\v{r}ekl\adddot\ a anot\adddot}},
+  translatorin     = {{p\v{r}eklad a \'{u}vod}%
+                      {p\v{r}ekl\adddot\ a \'{u}v\adddot}},
+  translatorsin    = {{p\v{r}eklad a \'{u}vod}%
+                      {p\v{r}ekl\adddot\ a \'{u}v\adddot}},
+  translatorfo     = {{p\v{r}eklad a p\v{r}edmluva}%
+                      {p\v{r}ekl\adddot\ a p\v{r}edml\adddot}},
+  translatorsfo    = {{p\v{r}eklad a p\v{r}edmluva}%
+                      {p\v{r}ekl\adddot\ a p\v{r}edml\adddot}},
+  translatoraf     = {{p\v{r}eklad a doslov}%
+                      {p\v{r}ekl\adddot\ a dosl\adddot}},
+  translatorsaf    = {{p\v{r}eklad a doslov}%
+                      {p\v{r}ekl\adddot\ a dosl\adddot}},
+  translatorcoin   = {{p\v{r}eklad, koment\'{a}\v{r}\ a \'{u}vod}%
+                      {p\v{r}ekl., kom\adddot\ a \'{u}v\adddot}},
+  translatorscoin  = {{p\v{r}eklad, koment\'{a}\v{r}\ a \'{u}vod}%
+                      {p\v{r}ekl., kom\adddot\ a \'{u}v\adddot}},
+  translatorcofo   = {{p\v{r}eklad, koment\'{a}\v{r}\ a p\v{r}edmluva}%
+                      {p\v{r}ekl., kom\adddot\ a p\v{r}edml\adddot}},
+  translatorscofo  = {{p\v{r}eklad, koment\'{a}\v{r}\ a p\v{r}edmluva}%
+                      {p\v{r}ekl., kom\adddot\ a p\v{r}edml\adddot}},
+  translatorcoaf   = {{p\v{r}eklad, koment\'{a}\v{r}\ a doslov}%
+                      {p\v{r}ekl., kom\adddot\ a dosl\adddot}},
+  translatorscoaf  = {{p\v{r}eklad, koment\'{a}\v{r}\ a doslov}%
+                      {p\v{r}ekl., kom\adddot\ a dosl\adddot}},
+  translatoranin   = {{p\v{r}eklad, anotace,\ a \'{u}vod}%
+                      {p\v{r}ekl., anot\adddot\ a \'{u}v\adddot}},
+  translatorsanin  = {{p\v{r}eklad, anotace,\ a \'{u}vod}%
+                      {p\v{r}ekl., anot\adddot\ a \'{u}v\adddot}},
+  translatoranfo   = {{p\v{r}eklad, anotace,\ a p\v{r}edmluva}%
+                      {p\v{r}ekl., anot\adddot\ a p\v{r}edml\adddot}},
+  translatorsanfo  = {{p\v{r}eklad, anotace,\ a p\v{r}edmluva}%
+                      {p\v{r}ekl., anot\adddot\ a p\v{r}edml\adddot}},
+  translatoranaf   = {{p\v{r}eklad, anotace,\ a doslov}%
+                      {p\v{r}ekl., anot\adddot\ a dosl\adddot}},
+  translatorsanaf  = {{p\v{r}eklad, anotace,\ a doslov}%
+                      {p\v{r}ekl., anot\adddot\ a dosl\adddot}},
+  organizer        = {{organiz\'{a}tor}{org\adddot}},% FIXME: unsure
+  organizers       = {{organiz\'{a}to\v{r}i}{org\adddot}},% FIXME: unsure
+  byorganizer      = {{organizov\'{a}no}{org\adddot}},% FIXME: unsure
+  byauthor         = {{}{}},
+  byeditor         = {{editov\'{a}no}{ed\adddot}},
+  bycompiler       = {{sestaveno}{sest\adddot}},
+  byredactor       = {{redigov\'{a}no}{red\adddot}},
+  byreviser        = {{korigov\'{a}no}{kor\adddot}},
+  byreviewer       = {{recenzov\'{a}no}{recenz\adddot}},
+  byfounder        = {{zalo\v{z}eno}{zal\adddot}},
+  bycontinuator    = {{pokra\v{c}ov\'{a}no}{pokr\adddot}},
+  bycollaborator   = {{ve spolupr\'{a}ci s\addnbspace}{ve spol\adddotspace s\addnbspace}},
   bytranslator     = {{p\v{r}elo\v{z}eno \lbx at lfromlang}{p\v{r}el\adddot\ \lbx at sfromlang}},
-  bycommentator    = {{komentov\'{a}no}{kom\adddotspace}},
-  byannotator      = {{anotov\'{a}no}{anot\adddotspace}},
-  withcommentator  = {{s koment\'{a}\v{r}em}{s kom\adddotspace}},%mozna: s komentarem od?
-  withannotator    = {{s anotacemi od}{s anot\adddot\ od}},
-  withintroduction = {{s \'{u}vodem od}{u \'{u}v\adddot\ od}},
-  withforeword     = {{s p\v{r}edmluvou od}{s p\v{r}edml\adddot\ od}},
-  withafterword    = {{s doslovem}{s dosl\adddot\ }},
-  byeditortr       = {{editov\'{a}no a p\v{r}elo\v{z}eno \lbx at lfromlang\ }%
-                      {ed\adddotspace a p\v{r}el\adddot\ \lbx at sfromlang\ }},
-  byeditorco       = {{editov\'{a}no a komentov\'{a}no}{ed\adddotspace a kom\adddot\ }},
-  byeditoran       = {{editov\'{a}no a anotov\'{a}no}{ed\adddotspace a anot\adddot\ }},
-  byeditorin       = {{editov\'{a}no, s \'{u}vodem}{ed.,\addabbrvspace s \'{u}vodem}},
-  byeditorfo       = {{editov\'{a}no, s p\v{r}edmluvou}{ed.,\addabbrvspace s p\v{r}edml., }},
-  byeditoraf       = {{editov\'{a}no, s doslovem}{ed.,\addabbrvspace s dosl.,}},
+  bycommentator    = {{komentov\'{a}no}{kom\adddot}},
+  byannotator      = {{anotov\'{a}no}{anot\adddot}},
+  withcommentator  = {{s\addnbspace koment\'{a}\v{r}em od}{s\addnbspace kom\adddot\ od}},
+  withannotator    = {{s\addnbspace anotacemi od}{s\addnbspace anot\adddot\ od}},
+  withintroduction = {{s\addnbspace \'{u}vodem od}{s\addnbspace \'{u}v\adddot\ od}},
+  withforeword     = {{s\addnbspace p\v{r}edmluvou od}{s\addnbspace p\v{r}edml\adddot\ od}},
+  withafterword    = {{s\addnbspace doslovem od}{s\addnbspace dosl\adddot\ od}},
+  byeditortr       = {{editov\'{a}no a p\v{r}elo\v{z}eno \lbx at lfromlang}%
+                      {ed\adddotspace a p\v{r}el\adddot\ \lbx at sfromlang}},
+  byeditorco       = {{editov\'{a}no a komentov\'{a}no}%
+                      {ed\adddotspace a kom\adddot}},
+  byeditoran       = {{editov\'{a}no a anotov\'{a}no}%
+                      {ed\adddotspace a anot\adddot}},
+  byeditorin       = {{editov\'{a}no, s\addnbspace \'{u}vodem}%
+                      {ed.,\addabbrvspace s\addnbspace \'{u}v\adddot}},
+  byeditorfo       = {{editov\'{a}no, s\addnbspace p\v{r}edmluvou}%
+                      {ed.,\addabbrvspace s\addnbspace p\v{r}edml\adddot}},
+  byeditoraf       = {{editov\'{a}no, s\addnbspace doslovem}%
+                      {ed.,\addabbrvspace s\addnbspace dosl\adddot}},
   byeditortrco     = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx at lfromlang\ a komentov\'{a}no}%
-                      {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx at sfromlang\ a kom\adddot\ }},
+                      {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx at sfromlang\ a kom\adddot}},
   byeditortran     = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx at lfromlang\ a anotov\'{a}no}%
-                      {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx at sfromlang\ a anot\adddot\ }},
-  byeditortrin     = {{editov\'{a}no a p\v{r}elo\v{z}eno \lbx at lfromlang, s  \'{u}vodem}%
-                      {ed\adddotspace a p\v{r}el\adddot\ \lbx at sfromlang, s \'{u}vodem}},
-  byeditortrfo     = {{editov\'{a}no a p\v{r}elo\v{z}eno \lbx at lfromlang, s p\v{r}edmluvou}%
-                      {ed\adddotspace a p\v{r}el\adddot\ \lbx at sfromlang, s p\v{r}edmluvou}},
-  byeditortraf     = {{editov\'{a}no a p\v{r}elo\v{z}eno \lbx at lfromlang, s doslovem}%
-                      {ed\adddotspace a p\v{r}ekl\adddot\ \lbx at sfromlang, s doslovem}},
-  byeditorcoin     = {{editov\'{a}no a komentov\'{a}no, s \'{u}vodem}{ed\adddotspace a kom., s \'{u}vodem}},
-  byeditorcofo     = {{editov\'{a}no a komentov\'{a}no, s p\v{r}edmluvou}{ed\adddotspace a kom., s p\v{r}edml\adddot}},
-  byeditorcoaf     = {{editov\'{a}no a komentov\'{a}no, s doslovem}{ed\adddotspace a kom., s dosl.}},
-  byeditoranin     = {{editov\'{a}no a anotov\'{a}no, s \'{u}vodem}{ed\adddotspace a anot., s \'{u}vodem}},
-  byeditoranfo     = {{editov\'{a}no a anotov\'{a}no, s p\v{r}edmluvou}{ed\adddotspace a anot., s p\v{r}edml\adddot}},
-  byeditoranaf     = {{editov\'{a}no a anotov\'{a}no, s doslovem}{ed\adddotspace a anot., s dosl\adddot}},
-  byeditortrcoin   = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx at lfromlang\ a komentov\'{a}no, s \'{u}vodem}%
-                      {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx at sfromlang\ a kom., s \'{u}vodem}},
-  byeditortrcofo   = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx at lfromlang\ a komentov\'{a}no, s p\v{r}edmluvou }%
-                      {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx at sfromlang\ a kom., s p\v{r}edml\adddot}},
-  byeditortrcoaf   = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx at lfromlang\ a komentov\'{a}no, s doslovem}%
-                      {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx at sfromlang\ a kom., s dosl\adddot}},
-  byeditortranin   = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx at lfromlang\ a anotov\'{a}no, s \'{u}vodem}%
-                      {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx at sfromlang\ a anot\adddot, s \'{u}vodem}},
-  byeditortranfo   = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx at lfromlang\ a anotov\'{a}no, s p\v{r}edmluvou}%
-                      {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx at sfromlang\ a anot, s p\v{r}edml\adddot}},
-  byeditortranaf   = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx at lfromlang\ a anotov\'{a}no, s doslovem}%
-                      {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx at sfromlang\ a anot, s dosl\adddot}},
+                      {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx at sfromlang\ a anot\adddot}},
+  byeditortrin     = {{editov\'{a}no a p\v{r}elo\v{z}eno \lbx at lfromlang, s\addnbspace \'{u}vodem}%
+                      {ed\adddotspace a p\v{r}el\adddot\ \lbx at sfromlang, s\addnbspace \'{u}v\adddot}},
+  byeditortrfo     = {{editov\'{a}no a p\v{r}elo\v{z}eno \lbx at lfromlang, s\addnbspace p\v{r}edmluvou}%
+                      {ed\adddotspace a p\v{r}el\adddot\ \lbx at sfromlang, s\addnbspace p\v{r}edml\adddot}},
+  byeditortraf     = {{editov\'{a}no a p\v{r}elo\v{z}eno \lbx at lfromlang, s\addnbspace doslovem}%
+                      {ed\adddotspace a p\v{r}el\adddot\ \lbx at sfromlang, s\addnbspace dosl\adddot}},
+  byeditorcoin     = {{editov\'{a}no a komentov\'{a}no, s\addnbspace \'{u}vodem}%
+                      {ed\adddotspace a kom., s\addnbspace \'{u}v\adddot}},
+  byeditorcofo     = {{editov\'{a}no a komentov\'{a}no, s\addnbspace p\v{r}edmluvou}%
+                      {ed\adddotspace a kom., s\addnbspace p\v{r}edml\adddot}},
+  byeditorcoaf     = {{editov\'{a}no a komentov\'{a}no, s\addnbspace doslovem}%
+                      {ed\adddotspace a kom., s\addnbspace dosl\adddot}},
+  byeditoranin     = {{editov\'{a}no a anotov\'{a}no, s\addnbspace \'{u}vodem}%
+                      {ed\adddotspace a anot., s\addnbspace \'{u}v\adddot}},
+  byeditoranfo     = {{editov\'{a}no a anotov\'{a}no, s\addnbspace p\v{r}edmluvou}%
+                      {ed\adddotspace a anot., s\addnbspace p\v{r}edml\adddot}},
+  byeditoranaf     = {{editov\'{a}no a anotov\'{a}no, s\addnbspace doslovem}%
+                      {ed\adddotspace a anot., s\addnbspace dosl\adddot}},
+  byeditortrcoin   = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx at lfromlang\ a komentov\'{a}no, s\addnbspace \'{u}vodem}%
+                      {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx at sfromlang\ a kom., s\addnbspace \'{u}v\adddot}},
+  byeditortrcofo   = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx at lfromlang\ a komentov\'{a}no, s\addnbspace p\v{r}edmluvou }%
+                      {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx at sfromlang\ a kom., s\addnbspace p\v{r}edml\adddot}},
+  byeditortrcoaf   = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx at lfromlang\ a komentov\'{a}no, s\addnbspace doslovem}%
+                      {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx at sfromlang\ a kom., s\addnbspace dosl\adddot}},
+  byeditortranin   = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx at lfromlang\ a anotov\'{a}no, s\addnbspace \'{u}vodem}%
+                      {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx at sfromlang\ a anot\adddot, s\addnbspace \'{u}v\adddot}},
+  byeditortranfo   = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx at lfromlang\ a anotov\'{a}no, s\addnbspace p\v{r}edmluvou}%
+                      {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx at sfromlang\ a anot., s\addnbspace p\v{r}edml\adddot}},
+  byeditortranaf   = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx at lfromlang\ a anotov\'{a}no, s\addnbspace doslovem}%
+                      {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx at sfromlang\ a anot., s\addnbspace dosl\adddot}},
   bytranslatorco   = {{p\v{r}elo\v{z}eno \lbx at lfromlang\ a komentov\'{a}no}%
-                      {p\v{r}el\adddot\ \lbx at sfromlang\ a kom\adddot\ }},
+                      {p\v{r}el\adddot\ \lbx at sfromlang\ a kom\adddot}},
   bytranslatoran   = {{p\v{r}elo\v{z}eno \lbx at lfromlang\ a anotov\'{a}no}%
-                      {p\v{r}el\adddot\ \lbx at sfromlang\ a anot\adddot\ }},
-  bytranslatorin   = {{p\v{r}elo\v{z}eno \lbx at lfromlang, s \'{u}vodem}%
-                      {p\v{r}el\adddot\ \lbx at sfromlang, s \'{u}vodem}},
-  bytranslatorfo   = {{p\v{r}elo\v{z}eno \lbx at lfromlang, s p\v{r}edmluvou}%
-                      {p\v{r}el\adddot\ \lbx at sfromlang, s p\v{r}edml\adddot}},
-  bytranslatoraf   = {{p\v{r}elo\v{z}eno \lbx at lfromlang, s doslovem}%
-                      {p\v{r}el\adddot\ \lbx at sfromlang, s dosl\adddot}},
-  bytranslatorcoin = {{p\v{r}elo\v{z}eno \lbx at lfromlang\ a komentov\'{a}no, s \'{u}vodem}%
-                      {p\v{r}el\adddot\ \lbx at sfromlang\ a kom., s \'{u}vodem}},
-  bytranslatorcofo = {{p\v{r}elo\v{z}eno \lbx at lfromlang\ a komentov\'{a}no, s p\v{r}edmluvou}%
-                      {p\v{r}el\adddot\ \lbx at sfromlang\ a kom., s p\v{r}edml\adddot}},
-  bytranslatorcoaf = {{p\v{r}elo\v{z}eno \lbx at lfromlang\ a komentov\'{a}ns doslovem}%
-                      {p\v{r}el\adddot\ \lbx at sfromlang\ a kom., s dosl\adddot}},
-  bytranslatoranin = {{p\v{r}elo\v{z}eno \lbx at lfromlang\ a anotov\'{a}no, s \'{u}vodem}%
-                      {p\v{r}el\adddot\ \lbx at sfromlang\ a anot., s \'{u}vodem}},
-  bytranslatoranfo = {{p\v{r}elo\v{z}eno \lbx at lfromlang\ a anotov\'{a}no, s p\v{r}edmluvou}%
-                      {p\v{r}el\adddot\ \lbx at sfromlang\ a anot., s p\v{r}edml\adddot}},
-  bytranslatoranaf = {{p\v{r}elo\v{z}eno \lbx at lfromlang\ a anotov\'{a}no, s doslovem}%
-                      {p\v{r}el\adddot\ \lbx at sfromlang\ a anot., s dosl\adddot}},
+                      {p\v{r}el\adddot\ \lbx at sfromlang\ a anot\adddot}},
+  bytranslatorin   = {{p\v{r}elo\v{z}eno \lbx at lfromlang, s\addnbspace \'{u}vodem}%
+                      {p\v{r}el\adddot\ \lbx at sfromlang, s\addnbspace \'{u}v\adddot}},
+  bytranslatorfo   = {{p\v{r}elo\v{z}eno \lbx at lfromlang, s\addnbspace p\v{r}edmluvou}%
+                      {p\v{r}el\adddot\ \lbx at sfromlang, s\addnbspace p\v{r}edml\adddot}},
+  bytranslatoraf   = {{p\v{r}elo\v{z}eno \lbx at lfromlang, s\addnbspace doslovem}%
+                      {p\v{r}el\adddot\ \lbx at sfromlang, s\addnbspace dosl\adddot}},
+  bytranslatorcoin = {{p\v{r}elo\v{z}eno \lbx at lfromlang\ a komentov\'{a}no, s\addnbspace \'{u}vodem}%
+                      {p\v{r}el\adddot\ \lbx at sfromlang\ a kom., s\addnbspace \'{u}v\adddot}},
+  bytranslatorcofo = {{p\v{r}elo\v{z}eno \lbx at lfromlang\ a komentov\'{a}no, s\addnbspace p\v{r}edmluvou}%
+                      {p\v{r}el\adddot\ \lbx at sfromlang\ a kom., s\addnbspace p\v{r}edml\adddot}},
+  bytranslatorcoaf = {{p\v{r}elo\v{z}eno \lbx at lfromlang\ a komentov\'{a}no, s\addnbspace doslovem}%
+                      {p\v{r}el\adddot\ \lbx at sfromlang\ a kom., s\addnbspace dosl\adddot}},
+  bytranslatoranin = {{p\v{r}elo\v{z}eno \lbx at lfromlang\ a anotov\'{a}no, s\addnbspace \'{u}vodem}%
+                      {p\v{r}el\adddot\ \lbx at sfromlang\ a anot., s\addnbspace \'{u}v\adddot}},
+  bytranslatoranfo = {{p\v{r}elo\v{z}eno \lbx at lfromlang\ a anotov\'{a}no, s\addnbspace p\v{r}edmluvou}%
+                      {p\v{r}el\adddot\ \lbx at sfromlang\ a anot., s\addnbspace p\v{r}edml\adddot}},
+  bytranslatoranaf = {{p\v{r}elo\v{z}eno \lbx at lfromlang\ a anotov\'{a}no, s\addnbspace doslovem}%
+                      {p\v{r}el\adddot\ \lbx at sfromlang\ a anot., s\addnbspace dosl\adddot}},
   and              = {{a}{a}},
   andothers        = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}},
   andmore          = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}},
@@ -280,30 +334,30 @@
   volume           = {{svazek}{sv\adddot}},
   volumes          = {{svazky}{sv\adddot}},
   involumes        = {{in}{in}},
-  jourvol          = {{ro\v{c}n\'ik}{ro\v{c}\adddot}},
-  jourser          = {{\v{r}ada}{\v{r}\adddot}},% m\r{u}\v{z}e b\'{a}t t\'{e}\v{z} s\'{e}rie, ale \v{r}ada zn\'{i} l\'{e}pe
+  jourvol          = {{ro\v{c}n\'{\i}k}{ro\v{c}\adddot}},
+  jourser          = {{\v{r}ada}{\v{r}\adddot}},% FIXME: s\'{e}rie ?
   book             = {{kniha}{kniha}},
   part             = {{\v{c}\'{a}st}{\v{c}\'{a}st}},
-  issue            = {{\v{c}\'{i}slo}{\v{c}\'{i}slo}},
-  newseries        = {{nov\'{a} \v{r}ada}{n. \v{r}ada\adddot}},% FIXME: unsure
-  oldseries        = {{star\'{a} \v{r}ada}{st. \v{r}ada\adddot}},
-  edition          = {{vyd\'{a}n\'{i}}{vyd\adddot}},
-  reprint          = {{reprint}{repr\adddot}},
-  reprintof        = {{reprint}{repr\adddotspace}},
-  reprintas        = {{reprintov\'{a}no jako}{repr\adddotspace jako}},
-  reprintfrom      = {{reprintov\'{a}no z}{repr\adddotspace z}},
-  reviewof         = {{review of}{rev\adddotspace of}},
-  translationof    = {{p\v{r}eklad}{p\v{r}ekl\adddotspace}},
+  issue            = {{\v{c}\'{\i}slo}{\v{c}\'{\i}slo}},
+  newseries        = {{nov\'{a} \v{r}ada}{n\adddotspace \v{r}ada\adddot}},% FIXME: unsure
+  oldseries        = {{star\'{a} \v{r}ada}{st\adddotspace \v{r}ada\adddot}},
+  edition          = {{vyd\'{a}n\'{\i}}{vyd\adddot}},
+  reprint          = {{dotisk}{dotisk}},
+  reprintof        = {{dotisk}{dotisk}},
+  reprintas        = {{dotisknuto jako}{dotisknuto jako}},
+  reprintfrom      = {{dotisknuto z\addnbspace}{dotisknuto z\addnbspace}},
+  reviewof         = {{recenze}{recenz\adddot}},
+  translationof    = {{p\v{r}eklad}{p\v{r}ekl\adddot}},
   translationas    = {{p\v{r}elo\v{z}eno jako}{p\v{r}el\adddotspace jako}},
-  translationfrom  = {{p\v{r}elo\v{z}eno z}{p\v{r}el\adddotspace}},
+  translationfrom  = {{p\v{r}elo\v{z}eno z\addnbspace}{p\v{r}el\adddotspace z\addnbspace}},
   origpubas        = {{p\r{u}vodn\v{e} vyd\'{a}no jako}{p\r{u}v\adddotspace vyd\adddotspace jako}},
-  origpubin        = {{p\r{u}vodn\v{e} vyd\'{a}no v}{p\r{u}v\adddotspace vyd\adddotspace v}},
-  astitle          = {{jako}{as}},
-  bypublisher      = {{od}{od}},% nejist\'{e}
-  nodate           = {{n\adddot d\adddot}{n\adddot d\adddot}},%FIXME
+  origpubin        = {{p\r{u}vodn\v{e} vyd\'{a}no v\addnbspace roce}{p\r{u}v\adddotspace vyd\adddotspace v\addnbspace r\adddot}},
+  astitle          = {{jako}{jako}},
+  bypublisher      = {{}{}},
+  nodate           = {{nedatov\'{a}no}{b\adddot r\adddot}},% bez roku
   page             = {{strana}{s\adddot}},
   pages            = {{strany}{s\adddot}},
-  column           = {{sloupek}{sl\adddot}},% nebo sloupec?
+  column           = {{sloupec}{sl\adddot}},
   columns          = {{sloupce}{sl\adddot}},
   line             = {{\v{r}\'{a}dek}{\v{r}\adddot}},
   lines            = {{\v{r}\'{a}dky}{\v{r}\adddot}},
@@ -313,46 +367,45 @@
   sections         = {{sekce}{\S\S}},
   paragraph        = {{odstavec}{ods\adddot}},
   paragraphs       = {{odstavce}{ods\adddot}},
-% pagetotal        = {{}{}},% FIXME: missing
-% pagetotals       = {{}{}},% FIXME: missing
-% columntotal      = {{}{}},% FIXME: missing
-% columntotals     = {{}{}},% FIXME: missing
-% linetotal        = {{}{}},% FIXME: missing
-% linetotals       = {{}{}},% FIXME: missing
-% versetotal       = {{}{}},% FIXME: missing
-% versetotals      = {{}{}},% FIXME: missing
-% sectiontotal     = {{}{}},% FIXME: missing
-% sectiontotals    = {{}{}},% FIXME: missing
-% paragraphtotal   = {{}{}},% FIXME: missing
-% paragraphtotals  = {{}{}},% FIXME: missing
-  in               = {{in}{in}},% Pouziti napriklad u sborniku nebo
-  inseries         = {{in}{in}},% casopisu, zni to lip new "v".
-  % V pripade potreby pouzit lokalni lbx soubor
-  ofseries         = {{z}{z}},% taky prostor pro lokalni lbx
-  number           = {{\v{c}\'{i}slo}{\v{c}\adddot}},
+  pagetotal        = {{strana}{s\adddot}},
+  pagetotals       = {{strany}{s\adddot}},
+  columntotal      = {{sloupec}{sl\adddot}},
+  columntotals     = {{sloupce}{sl\adddot}},
+  linetotal        = {{\v{r}\'{a}dek}{\v{r}\adddot}},
+  linetotals       = {{\v{r}\'{a}dky}{\v{r}\adddot}},
+  versetotal       = {{ver\v{s}}{v\adddot}},
+  versetotals      = {{ver\v{s}e}{v\adddot}},
+  sectiontotal     = {{sekce}{\S}},
+  sectiontotals    = {{sekce}{\S\S}},
+  paragraphtotal   = {{odstavec}{ods\adddot}},
+  paragraphtotals  = {{odstavce}{ods\adddot}},
+  in               = {{in}{in}},
+  inseries         = {{in}{in}},
+  ofseries         = {{z}{z}},
+  number           = {{\v{c}\'{\i}slo}{\v{c}\adddot}},
   chapter          = {{kapitola}{kap\adddot}},
-% bathesis         = {{}{}},% FIXME: missing
-  mathesis         = {{diplomov\'{a} pr\'{a}ce}{dipl\addabbrvspace}},
-  phdthesis        = {{diserta\v{c}n\'{i}\addabbrvspace pr\'{a}ce}{dis\addabbrvspace}},
-  candthesis       = {{kandid\'{a}tsk\'{a} pr\'{a}ce}{kand\adddotspace pr\adddotspace}},% mozna,
+  bathesis         = {{bakal\'{a}\v{r}sk\'{a} pr\'{a}ce}{bak\adddotspace pr\adddot}},
+  mathesis         = {{diplomov\'{a} pr\'{a}ce}{dipl\adddotspace pr\adddot}},
+  phdthesis        = {{diserta\v{c}n\'{\i} pr\'{a}ce}{dis\adddotspace pr\adddot}},
+  candthesis       = {{kandid\'{a}tsk\'{a} pr\'{a}ce}{kand\adddotspace pr\adddot}},% FIXME: unsure
   resreport        = {{v\'{y}zkumn\'{a} zpr\'{a}va}{v\'{y}zk\adddot\ zpr\adddot}},
   techreport       = {{technick\'{a} zpr\'{a}va}{tech\adddotspace zpr\adddot}},
-  software         = {{po\v{c}\'{i}ta\v{c}ov\'{y} software}{soft\adddot}},
+  software         = {{po\v{c}\'{\i}ta\v{c}ov\'{y} software}{soft\adddot}},
   datacd           = {{CD-ROM}{CD-ROM}},
   audiocd          = {{audio CD}{audio CD}},
-  version          = {{verze}{ver\adddotspace}},
-  url              = {{dostupn\'y z WWW}{WWW}},
-% urlfrom          = {{}{}},% FIXME: missing
-  urlseen          = {{citov\'ano}{cit\adddot}},
-  inpreparation    = {{v p\v{r}\'{i}prav\v{e}}{v p\v{r}\'{i}prav\v{e}}},
-  submitted        = {{odesl\'{a}no}{odes\adddotspace}},
-  forthcoming      = {{budouc\'{i}}{bud\adddotspace}},
-  inpress          = {{v tisku}{v tisku}},
-  prepublished     = {{p\v{r}ed publikov\'{a}n\'{i}m}{p\v{r}ed \adddotspace}},
-  citedas          = {{d\'{a}le citov\'{a}no jako}{d\'{a}le citov\'{a}no jako}},
+  version          = {{verze}{ver\adddot}},
+  url              = {{URL}{URL}},
+  urlfrom          = {{dostupn\'{e} z\addnbspace}{dostupn\'{e} z\addnbspace}},
+  urlseen          = {{citov\'{a}no}{cit\adddot}},
+  inpreparation    = {{v\addnbspace p\v{r}\'{\i}prav\v{e}}{v\addnbspace p\v{r}\'{\i}prav\v{e}}},
+  submitted        = {{odesl\'{a}no}{odesl\adddot}},
+  forthcoming      = {{budouc\'{\i}}{bud\adddot}},
+  inpress          = {{v\addnbspace tisku}{v\addnbspace tisku}},
+  prepublished     = {{p\v{r}ed publikov\'{a}n\'{\i}m}{p\v{r}ed publ\adddot}},
+  citedas          = {{d\'{a}le citov\'{a}no jako}{d\'{a}le cit\adddotspace jako}},
   thiscite         = {{zvl\'{a}\v{s}t\v{e}}{zvl\adddot}},
-  seenote          = {{viz pozn\'{a}mka}{viz poz\adddot}},
-  quotedin         = {{citov\'{a}no v}{cit\adddotspace v}},
+  seenote          = {{viz pozn\'{a}mka}{viz pozn\adddot}},
+  quotedin         = {{citov\'{a}no v\addnbspace}{cit\adddotspace v\addnbspace}},
   idem             = {{idem}{idem}},
   idemsm           = {{idem}{idem}},
   idemsf           = {{eadem}{eadem}},
@@ -370,105 +423,113 @@
   passim           = {{passim}{pass\adddot}},
   see              = {{viz}{viz}},
   seealso          = {{viz t\'{e}\v{z}}{viz t\'{e}\v{z}}},
-  backrefpage      = {{citov\'{a}no na stran\v{e}}{cit\adddotspace na s\adddot}},
+  backrefpage      = {{citov\'{a}no na stran\v{e}}{cit\adddotspace na str\adddot}},
   backrefpages     = {{citov\'{a}no na stran\'{a}ch}{cit\adddotspace na s\adddot}},
-  january          = {{ledna}{led\adddot}},
-  february         = {{\'{u}nora}{\'{u}n\adddot}},
-  march            = {{b\v{r}ezna}{b\v{r}ez\adddot}},
-  april            = {{dubna}{dub\adddot}},
-  may              = {{kvetna}{kv\v{e}t\adddot}},
-  june             = {{\v{c}ervna}{\v{c}erv\adddot}},
-  july             = {{\v{c}ervence}{\v{c}vc}},
-  august           = {{srpna}{srp\adddot}},
-  september        = {{z\'{a}\v{r}\'{i}}{z\'{a}\v{r}\adddot}},
-  october          = {{\v{r}\'{i}jna}{\v{r}\'{i}j\adddot}},
-  november         = {{listopadu}{lis\adddot}},
-  december         = {{prosince}{pros\adddot}},
-  langamerican     = {{americk\'{a} angli\v{c}tina}{am\adddot angl\adddot}},
-  langbrazilian    = {{brazilsk\'{a} portugal\v{s}tina}{braz\adddot portugal\adddot}},
-% langbulgarian    = {{}{}},% FIXME: missing
-% langcatalan      = {{}{}},% FIXME: missing
+  january          = {{leden}{led\adddot}},
+  february         = {{\'{u}nor}{\'{u}n\adddot}},
+  march            = {{b\v{r}ezen}{b\v{r}ez\adddot}},
+  april            = {{duben}{dub\adddot}},
+  may              = {{kv\v{e}ten}{kv\v{e}t\adddot}},
+  june             = {{\v{c}erven}{\v{c}vn\adddot}},
+  july             = {{\v{c}ervenec}{\v{c}vc\adddot}},
+  august           = {{srpen}{srp\adddot}},
+  september        = {{z\'{a}\v{r}\'{\i}}{z\'{a}\v{r}\adddot}},
+  october          = {{\v{r}\'{\i}jen}{\v{r}\'{\i}j\adddot}},
+  november         = {{listopad}{lis\adddot}},
+  december         = {{prosinec}{pros\adddot}},
+  langamerican     = {{americk\'{a} angli\v{c}tina}{am\adddot\ angl\adddot}},
+  langbrazilian    = {{brazilsk\'{a} portugal\v{s}tina}{braz\adddot\ portugal\adddot}},
+  langbulgarian    = {{bulhar\v{s}tina}{bulh\adddot}},
+  langcatalan      = {{katal\'{a}n\v{s}tina}{katal\adddot}},
   langcroatian     = {{chorvat\v{s}tina}{chorv\adddot}},
-% langczech        = {{}{}},% FIXME: missing
+  langczech        = {{\v{c}e\v{s}tina}{\v{c}e\v{s}tina}},
   langdanish       = {{d\'{a}n\v{s}tina}{d\'{a}n\adddot}},
-  langdutch        = {{holand\v{s}tina}{hol.\adddot}},
+  langdutch        = {{holand\v{s}tina}{hol\adddot}},
   langenglish      = {{angli\v{c}tina}{angl\adddot}},
-% langestonian     = {{}{}},% FIXME: missing
+  langestonian     = {{eston\v{s}tina}{est\adddot}},
   langfinnish      = {{fin\v{s}tina}{fin\adddot}},
   langfrench       = {{francouz\v{s}tina}{franc\adddot}},
   langgalician     = {{galicij\v{s}tina}{gal\adddot}},
   langgerman       = {{n\v{e}m\v{c}ina}{n\v{e}m\adddot}},
   langgreek        = {{\v{r}e\v{c}tina}{\v{r}e\v{c}\adddot}},
-% langhungarian    = {{}{}}, % FIXME: missing
+  langhungarian    = {{ma\v{d}ar\v{s}tina}{ma\v{d}\adddot}},
   langitalian      = {{ital\v{s}tina}{ital\adddot}},
+  langjapanese     = {{japon\v{s}tina}{jap\adddot}},
   langlatin        = {{latina}{lat\adddot}},
-% langlatvian      = {{}{}},% FIXME: missing
-  langnorwegian    = {{nor\v{s}tina}{nor\v{s}\adddot}},
-% langpolish       = {{}{}},% FIXME: missing
-  langportuguese   = {{portugal\v{s}tina}{port\adddot}},
-% langslovak       = {{}{}},% FIXME: missing
-% langslovene      = {{}{}},% FIXME: missing
+  langlatvian      = {{loty\v{s}tina}{lot\adddot}},
+  langnorwegian    = {{nor\v{s}tina}{nor\adddot}},
+  langpolish       = {{pol\v{s}tina}{pol\adddot}},
+  langportuguese   = {{portugal\v{s}tina}{portugal\adddot}},
+  langrussian      = {{ru\v{s}tina}{ru\v{s}tina}},
+  langserbian      = {{srb\v{s}tina}{srb\adddot}},
+  langslovak       = {{sloven\v{s}tina}{sloven\v{s}tina}},
+  langslovene      = {{slovin\v{s}tina}{slovin\v{s}tina}},
   langspanish      = {{\v{s}pan\v{e}l\v{s}tina}{\v{s}pa\v{n}\adddot}},
   langswedish      = {{\v{s}v\'{e}d\v{s}tina}{\v{s}v\'{e}d\adddot}},
-  fromamerican     = {{z americk\'{e} angli\v{c}tiny}{z amer\adddot angl\adddot}},
-  frombrazilian    = {{z brazilsk\'{e} portugal\v{s}tiny}{z braz\adddotspace port\adddot}},
-% frombulgarian    = {{}{}},% FIXME: missing
-% fromcatalan      = {{}{}},% FIXME: missing
-  fromcroatian     = {{z chorvat\v{s}tiny}{z chorv.}},
-% fromczech        = {{}{}},% FIXME: missing
-  fromdanish       = {{z d\'{a}n\v{s}tiny}{z d\'{a}n\adddot}},
-  fromdutch        = {{z holand\v{s}tiny}{z hol\adddot}},
-  fromenglish      = {{z angli\v{c}tiny}{z angl\adddot}},
-% fromestonian     = {{}{}},% FIXME: missing
-  fromfinnish      = {{z fin\v{s}tiny}{z fin.}},
-  fromfrench       = {{z francouz\v{s}tiny}{z franc\adddot}},
-  fromgalician     = {{z galicij\v{s}tiny}{z gal\adddot}},
-  fromgerman       = {{z n\v{e}m\v{c}iny}{z n\v{e}m\adddot}},
-  fromgreek        = {{z \v{r}e\v{c}tiny}{z \v{r}e\v{c}\adddot}},
-% fromhungarian    = {{}{}}, % FIXME: missing
-  fromitalian      = {{z ital\v{s}tiny}{z ital\adddot}},
-  fromlatin        = {{z latiny}{z lat\adddot}},
-% fromlatvian      = {{}{}},% FIXME: missing
-  fromnorwegian    = {{z nor\v{s}tiny}{z nor\adddot}},
-% frompolish       = {{}{}},% FIXME: missing
-  fromportuguese   = {{z portugal\v{s}tiny}{z portugal\v{s}tiny}},
-% fromslovak       = {{}{}},% FIXME: missing
-% fromslovene      = {{}{}},% FIXME: missing
+  langukrainian    = {{ukrajin\v{s}tina}{ukr\adddot}},
+  fromamerican     = {{z\addnbspace americk\'{e} angli\v{c}tiny}{z\addnbspace amer\adddot\ angl\adddot}},
+  frombrazilian    = {{z\addnbspace brazilsk\'{e} portugal\v{s}tiny}{z\addnbspace braz\adddotspace portugal\adddot}},
+  frombulgarian    = {{z\addnbspace bulhar\v{s}tiny}{z\addnbspace bulh\adddot}},
+  fromcatalan      = {{z\addnbspace katal\'{a}n\v{s}tiny}{z\addnbspace katal\adddot}},
+  fromcroatian     = {{z\addnbspace chorvat\v{s}tiny}{z\addnbspace chorv\adddot}},
+  fromczech        = {{z\addnbspace \v{c}e\v{s}tiny}{z\addnbspace \v{c}e\v{s}tiny}},
+  fromdanish       = {{z\addnbspace d\'{a}n\v{s}tiny}{z\addnbspace d\'{a}n\adddot}},
+  fromdutch        = {{z\addnbspace holand\v{s}tiny}{z\addnbspace hol\adddot}},
+  fromenglish      = {{z\addnbspace angli\v{c}tiny}{z\addnbspace angl\adddot}},
+  fromestonian     = {{z\addnbspace eston\v{s}tiny}{z\addnbspace est\adddot}},
+  fromfinnish      = {{z\addnbspace fin\v{s}tiny}{z\addnbspace fin\adddot}},
+  fromfrench       = {{z\addnbspace francouz\v{s}tiny}{z\addnbspace franc\adddot}},
+  fromgalician     = {{z\addnbspace galicij\v{s}tiny}{z\addnbspace gal\adddot}},
+  fromgerman       = {{z\addnbspace n\v{e}m\v{c}iny}{z\addnbspace n\v{e}m\adddot}},
+  fromgreek        = {{z\addnbspace \v{r}e\v{c}tiny}{z\addnbspace \v{r}e\v{c}\adddot}},
+  fromhungarian    = {{z\addnbspace ma\v{d}ar\v{s}tiny}{z\addnbspace ma\v{d}\adddot}},
+  fromitalian      = {{z\addnbspace ital\v{s}tiny}{z\addnbspace ital\adddot}},
+  fromjapanese     = {{z\addnbspace japon\v{s}tiny}{z\addnbspace jap\adddot}},
+  fromlatin        = {{z\addnbspace latiny}{z\addnbspace lat\adddot}},
+  fromlatvian      = {{z\addnbspace loty\v{s}tiny}{z\addnbspace lot\adddot}},
+  fromnorwegian    = {{z\addnbspace nor\v{s}tiny}{z\addnbspace nor\adddot}},
+  frompolish       = {{z\addnbspace pol\v{s}tiny}{z\addnbspace pol\adddot}},
+  fromportuguese   = {{z\addnbspace portugal\v{s}tiny}{z\addnbspace portugal\adddot}},
+  fromrussian      = {{z\addnbspace ru\v{s}tiny}{z\addnbspace ru\v{s}tiny}},
+  fromserbian      = {{zo srb\v{s}tiny}{zo srb\adddot}},
+  fromslovak       = {{ze sloven\v{s}tiny}{ze sloven\v{s}tiny}},
+  fromslovene      = {{ze slovin\v{s}tiny}{ze slovin\v{s}tiny}},
   fromspanish      = {{ze \v{s}pan\v{e}l\v{s}tiny}{ze \v{s}pa\v{n}\adddot}},
   fromswedish      = {{ze \v{s}v\'{e}d\v{s}tiny}{ze \v{s}v\'{e}d\adddot}},
+  fromukrainian    = {{z\addnbspace ukrajin\v{s}tiny}{z\addnbspace ukr\adddot}},
   countryde        = {{N\v{e}mecko}{DE}},
   countryeu        = {{Evropsk\'{a} unie}{EU}},
   countryep        = {{Evropsk\'{a} unie}{EP}},
   countryfr        = {{Francie}{FR}},
   countryuk        = {{Velk\'{a} Brit\'{a}nie}{GB}},
-  countryus        = {{Spojen\'{e} St\'{a}ty Americk\'{e}}{US}},
+  countryus        = {{Spojen\'{e} st\'{a}ty americk\'{e}}{US}},
   patent           = {{patent}{pat\adddot}},
   patentde         = {{n\v{e}meck\'{y} patent}{n\v{e}m\adddot\ pat\adddot}},
   patenteu         = {{evropsk\'{y} patent}{evr\adddot\ pat\adddot}},
   patentfr         = {{francouzsk\'{y} patent}{franc\adddot\ pat\adddot}},
-  patentuk         = {{britsk\'{y} patent}{britsk\'{y} pat\adddot}},
-  patentus         = {{americk\'{y} patent}{US\adddotspace pat\adddot}},
+  patentuk         = {{britsk\'{y} patent}{brit\adddot\ pat\adddot}},
+  patentus         = {{US patent}{US pat\adddot}},
   patreq           = {{patentov\'{a} \v{z}\'{a}dost}{pat\adddot\ \v{z}\'{a}d\adddot}},
   patreqde         = {{n\v{e}meck\'{a} patentov\'{a} \v{z}\'{a}dost}{n\v{e}meck\'{a} pat\adddot\ \v{z}\'{a}d\adddot}},
-  patreqeu         = {{evropsk\'{a} patentov\'{a} \v{z}\'{a}dost}{ev\adddot\ pat\adddot\ \v{z}\'{a}d\adddot}},
+  patreqeu         = {{evropsk\'{a} patentov\'{a} \v{z}\'{a}dost}{evr\adddot\ pat\adddot\ \v{z}\'{a}d\adddot}},
   patreqfr         = {{francouzsk\'{a} patentov\'{a} \v{z}\'{a}dost}{franc\adddot\ pat\adddot\ \v{z}\'{a}d\adddot}},
   patrequk         = {{britsk\'{a} patentov\'{a} \v{z}\'{a}dost}{brit\adddot\ pat\adddot\ \v{z}\'{a}d\adddot}},
-  patrequs         = {{US\adddotspace patentov\'{a} \v{z}\'{a}dost}{US\adddotspace pat\adddot\ \v{z}\'{a}d\adddot}},
+  patrequs         = {{US patentov\'{a} \v{z}\'{a}dost}{US pat\adddot\ \v{z}\'{a}d\adddot}},
   file             = {{soubor}{soub\adddot}},
   library          = {{knihovna}{knih\adddot}},
   abstract         = {{abstrakt}{abst\adddot}},
   annotation       = {{anotace}{anot\adddot}},
-% commonera        = {{}{}},
-%  beforecommonera  = {{}{}},
-  annodomini       = {{n\adddotspace l\adddot}{n\adddotspace l\adddot}},
-  beforechrist     = {{p\v{r}\adddotspace n\adddotspace l\adddot}{p\v{r}\adddotspace n\adddotspace l\adddot}},
-% circa            = {{}{}},% FIXME: missing
-% spring           = {{}{}},% FIXME: missing
-% summer           = {{}{}},% FIXME: missing
-% autumn           = {{}{}},% FIXME: missing
-% winter           = {{}{}},% FIXME: missing
-  am               = {{dop\adddot}{dop\adddot}},
-  pm               = {{odp\adddot}{odp\adddot}},
+  commonera        = {{n\'{a}\v{s} letopo\v{c}et}{n\adddotspace l\adddot}},
+  beforecommonera  = {{p\v{r}ed na\v{s}\'{\i}m letopo\v{c}tem}{p\v{r}\adddotspace n\adddotspace l\adddot}},
+  annodomini       = {{po Kristu}{po Kr\adddot}},
+  beforechrist     = {{p\v{r}ed Kristem}{p\v{r}\adddotspace Kr\adddot}},
+  circa            = {{cirka}{ca\adddot}},
+  spring           = {{jaro}{jaro}},
+  summer           = {{l\'{e}to}{l\'{e}to}},
+  autumn           = {{podzim}{podzim}},
+  winter           = {{zima}{zima}},
+  am               = {{AM}{AM}},
+  pm               = {{PM}{PM}},
 }
 
 \endinput

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/danish.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/danish.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/danish.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -36,13 +36,17 @@
       {\bibstring{\thefield{#1}}}
       {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%
@@ -245,7 +249,7 @@
   byreviewer       = {{bed\o mt af}{bed\adddotspace af}},
   byfounder        = {{stiftet af}{stiftet af}},
   bycontinuator    = {{videref\o rt af}{videref\adddotspace af}},
-  bycollaborator   = {{i samarbejde med}{i samarb\adddotspace m\adddotspace}},
+  bycollaborator   = {{i samarbejde med}{i samarb\adddotspace m\adddot}},
   bytranslator     = {{oversat \lbx at lfromlang\ af}%
   		      {overs\adddot \lbx at sfromlang\ af}},
   bycommentator    = {{kommenteret af}{komm\adddot\ af}},

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -57,13 +57,17 @@
       {\bibstring{\thefield{#1}}}
       {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%
@@ -474,14 +478,17 @@
   langjapanese     = {{Japaans}{Japaans}},
   langlatin        = {{Latijn}{Latijn}},
   langlatvian      = {{Lets}{Lets}},
+  langlithuanian   = {{Litouws}{Litouws}},
   langnorwegian    = {{Noors}{Noors}},
   langpolish       = {{Pools}{Pools}},
   langportuguese   = {{Portugees}{Portugees}},
   langrussian      = {{Russisch}{Russisch}},
+  langserbian      = {{Servisch}{Servisch}},
   langslovak       = {{Slowaaks}{Slowaaks}},% FIXME: or Slovaaks
   langslovene      = {{Sloveens}{Sloveens}},
   langspanish      = {{Spaans}{Spaans}},
   langswedish      = {{Zweeds}{Zweeds}},
+  langturkish      = {{Turks}{Turks}},
   langukrainian    = {{Oekra\"iens}{Oekra\"iens}},
   fromamerican     = {{uit het Amerikaans Engels}{uit het Amerikaans Engels}},
   frombrazilian    = {{uit het Braziliaans Portugees}{uit het Braziliaans Portugees}},
@@ -503,14 +510,17 @@
   fromjapanese     = {{uit het Japaans}{uit het Japaans}},
   fromlatin        = {{uit het Latijn}{uit het Latijn}},
   fromlatvian      = {{uit het Lets}{uit het Lets}},
+  fromlithuanian   = {{uit het Litouws}{uit het Litouws}},
   fromnorwegian    = {{uit het Noors}{uit het Noors}},
   frompolish       = {{uit het Pools}{uit het Pools}},
   fromportuguese   = {{uit het Portugees}{uit het Portugees}},
   fromrussian      = {{uit het Russisch}{uit het Russisch}},
+  fromserbian      = {{uit het Servisch}{uit het Servisch}},
   fromslovak       = {{uit het Slowaaks}{uit het Slowaaks}},% FIXME: or Slovaaks
   fromslovene      = {{uit het Sloveens}{uit het Sloveens}},
   fromspanish      = {{uit het Spaans}{uit het Spaans}},
   fromswedish      = {{uit het Zweeds}{uit het Zweeds}},
+  fromturkish      = {{uit het Turks}{uit het Turks}},
   fromukrainian    = {{uit het Oekra\"iens}{uit het Oekra\"iens}},
   countryde        = {{Duitsland}{DE}},
   countryeu        = {{Europese Unie}{EU}},

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -50,13 +50,17 @@
        {\bibstring{\thefield{#1}}}
        {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%
@@ -329,11 +333,11 @@
   byeditortrcoaf   = {{edited, translated \lbx at lfromlang\finalandcomma\ and commented, with an afterword, by}%
                       {ed.,\addabbrvspace trans\adddot\ \lbx at sfromlang\finalandcomma\ and comm., with an afterw., by}},
   byeditortranin   = {{edited, translated \lbx at lfromlang\finalandcomma\ and annotated, with an introduction, by}%
-                      {ed.,\addabbrvspace trans\adddot\ \lbx at sfromlang\finalandcomma\ and annot, with an introd., by}},
+                      {ed.,\addabbrvspace trans\adddot\ \lbx at sfromlang\finalandcomma\ and annot., with an introd., by}},
   byeditortranfo   = {{edited, translated \lbx at lfromlang\finalandcomma\ and annotated, with a foreword, by}%
-                      {ed.,\addabbrvspace trans\adddot\ \lbx at sfromlang\finalandcomma\ and annot, with a forew., by}},
+                      {ed.,\addabbrvspace trans\adddot\ \lbx at sfromlang\finalandcomma\ and annot., with a forew., by}},
   byeditortranaf   = {{edited, translated \lbx at lfromlang\finalandcomma\ and annotated, with an afterword, by}%
-                      {ed.,\addabbrvspace trans\adddot\ \lbx at sfromlang\finalandcomma\ and annot, with an afterw., by}},
+                      {ed.,\addabbrvspace trans\adddot\ \lbx at sfromlang\finalandcomma\ and annot., with an afterw., by}},
   bytranslatorco   = {{translated \lbx at lfromlang\ and commented by}%
                       {trans\adddot\ \lbx at sfromlang\ and comm\adddot\ by}},
   bytranslatoran   = {{translated \lbx at lfromlang\ and annotated by}%
@@ -485,14 +489,17 @@
   langjapanese     = {{Japanese}{Japanese}},
   langlatin        = {{Latin}{Latin}},
   langlatvian      = {{Latvian}{Latvian}},
+  langlithuanian   = {{Lithuanian}{Lithuanian}},
   langnorwegian    = {{Norwegian}{Norwegian}},
   langpolish       = {{Polish}{Polish}},
   langportuguese   = {{Portuguese}{Portuguese}},
   langrussian      = {{Russian}{Russian}},
+  langserbian      = {{Serbian}{Serbian}},
   langslovak       = {{Slovak}{Slovak}},
   langslovene      = {{Slovene}{Slovene}},
   langspanish      = {{Spanish}{Spanish}},
   langswedish      = {{Swedish}{Swedish}},
+  langturkish      = {{Turkish}{Turkish}},
   langukrainian    = {{Ukrainian}{Ukrainian}},
   fromamerican     = {{from the American}{from the American}},
   frombrazilian    = {{from the Brazilian}{from the Brazilian}},
@@ -514,14 +521,17 @@
   fromjapanese     = {{from the Japanese}{from the Japanese}},
   fromlatin        = {{from the Latin}{from the Latin}},
   fromlatvian      = {{from the Latvian}{from the Latvian}},
+  fromlithuanian   = {{from the Lithuanian}{from the Lithuanian}},
   fromnorwegian    = {{from the Norwegian}{from the Norwegian}},
   frompolish       = {{from the Polish}{from the Polish}},
   fromportuguese   = {{from the Portuguese}{from the Portuguese}},
   fromrussian      = {{from the Russian}{from the Russian}},
+  fromserbian      = {{from the Serbian}{from the Serbian}},
   fromslovak       = {{from the Slovak}{from the Slovak}},
   fromslovene      = {{from the Slovene}{from the Slovene}},
   fromspanish      = {{from the Spanish}{from the Spanish}},
   fromswedish      = {{from the Swedish}{from the Swedish}},
+  fromturkish      = {{from the Turkish}{from the Turkish}},
   fromukrainian    = {{from the Ukrainian}{from the Ukrainian}},
   countryde        = {{Germany}{DE}},
   countryeu        = {{European Union}{EU}},
@@ -568,7 +578,7 @@
     \blx at metadateinfo{#2}%
     \iffieldundef{#2year}
       {\blx at nounit}
-      {\printtext[#2date]{%
+      {\printtext[{#2date}]{%
          \datecircaprint
          \iffieldundef{#2season}
            {\ifdateyearsequal{#2}{#2end}
@@ -607,7 +617,7 @@
     \blx at metadateinfo{#2}%
     \iffieldundef{#2year}
       {\blx at nounit}
-      {\printtext[#2date]{%
+      {\printtext[{#2date}]{%
          \datecircaprint
          \iffieldundef{#2season}
            {\ifdateyearsequal{#2}{#2end}
@@ -637,12 +647,12 @@
     {\mkdaterangefullextra{#1}{#2}}
     {\lbx at us@mkdaterangetruncextra at long@i{#1}{#2}}}
 
-\protected\gdef\lbx at us@mkdaterangetruncextra at long#1#2{%
+\protected\gdef\lbx at us@mkdaterangetruncextra at long@i#1#2{%
   \begingroup
     \blx at metadateinfo{#2}%
     \iffieldundef{#2year}
       {\blx at nounit}
-      {\printtext[#2date]{%
+      {\printtext[{#2date}]{%
          \datecircaprint
          \iffieldundef{#2season}
            {\ifdateyearsequal{#2}{#2end}
@@ -678,12 +688,12 @@
     {\mkdaterangefullextra{#1}{#2}}
     {\lbx at us@mkdaterangetruncextra at short@i{#1}{#2}}}
 
-\protected\gdef\lbx at us@mkdaterangetruncextra at short#1#2{%
+\protected\gdef\lbx at us@mkdaterangetruncextra at short@i#1#2{%
   \begingroup
     \blx at metadateinfo{#2}%
     \iffieldundef{#2year}
       {\blx at nounit}
-      {\printtext[#2date]{%
+      {\printtext[{#2date}]{%
          \datecircaprint
          \iffieldundef{#2season}
            {\ifdateyearsequal{#2}{#2end}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/estonian.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/estonian.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/estonian.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -56,17 +56,22 @@
       {\printlist[sfromoriglanguage]{origlanguage}\space}}%
   \savebibmacro{in:}%
   \renewbibmacro{in:}{%
-    \iffieldequalstr{entrytype}{article}
+    \ifentrytype{article}
       {}
-      {\printtext{\bibstring{in}\intitlepunct}}}%
+      {\bibstring{in}%
+       \printunit{\intitlepunct}}}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%
@@ -276,7 +281,7 @@
   byfounder        = {{asutanud}{asutanud}},
   bycontinuator    = {{j\"{a}tkanud}{j\"{a}tkanud}},
   bycollaborator   = {{koost\"{o}\"{o}s}{koost\"{o}\"{o}s}},
-  bytranslator     = {{\lbx at lfromlang t\~{o}lkinud}{\lbx at sfromlang t\~{o}lk\adddotspace}},
+  bytranslator     = {{\lbx at lfromlang t\~{o}lkinud}{\lbx at sfromlang t\~{o}lk\adddot}},
   bycommentator    = {{kommenteerinud}{kommenteerinud}},
   byannotator      = {{kommenteerinud}{kommenteerinud}},% FIXME: unsure
   withcommentator  = {{koos kommentaaridega}{koos kommentaaridega}},% FIXME: commentator name should be in the middle

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/finnish.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/finnish.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/finnish.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -75,17 +75,22 @@
       {\printlist[sfromoriglanguage]{origlanguage}\space}}%
   \savebibmacro{in:}%
   \renewbibmacro{in:}{%
-    \iffieldequalstr{entrytype}{article}
+    \ifentrytype{article}
       {}
-      {\printtext{\bibstring{in}\intitlepunct}}}%
+      {\bibstring{in}%
+       \printunit{\intitlepunct}}}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/french.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/french.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/french.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -1,8 +1,6 @@
 \ProvidesFile{french.lbx}
 [\abx at lbxid]
 
-% Translations by non-native speaker: this file needs an overhaul!
-
 \DeclareRedundantLanguages{french}{french}
 
 \DeclareBibliographyExtras{%
@@ -66,13 +64,17 @@
   \def\mkbibordedition{\mkbibfemord}%
   \def\mkbibordseries{\mkbibfemord}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%
@@ -110,7 +112,7 @@
 \DeclareBibliographyStrings{%
   bibliography     = {{Bibliographie}{Bibliographie}},
   references       = {{R\'ef\'erences}{R\'ef\'erences}},
-  shorthands       = {{Liste des sigles}{Sigles}},
+  shorthands       = {{Liste des abr\'eviations}{Abr\'eviations}},
   editor           = {{\'editeur}{\'ed\adddot}},
   editors          = {{\'editeurs}{\'ed\adddot}},
   compiler         = {{compilateur}{comp\adddot}},
@@ -150,13 +152,13 @@
                       {\'ed\adddotspace et introd\adddot}},
   editorsin        = {{\'editeurs et introduction}%
                       {\'ed\adddotspace et introd\adddot}},
-  editorfo         = {{\'editeur et pr\'efacier}%
+  editorfo         = {{\'editeur et pr\'eface}%
                       {\'ed\adddotspace et pr\'ef\adddot}},
-  editorsfo        = {{\'editeurs et pr\'efaciers}%
+  editorsfo        = {{\'editeurs et pr\'eface}%
                       {\'ed\adddotspace et pr\'ef\adddot}},
-  editoraf         = {{\'editeur et postfacier}%
+  editoraf         = {{\'editeur et postface}%
                       {\'ed\adddotspace et postf\adddot}},
-  editorsaf        = {{\'editeurs et postfaciers}%
+  editorsaf        = {{\'editeurs et postface}%
                       {\'ed\adddotspace et postf\adddot}},
   editortrco       = {{\'editeur, traducteur et commentateur}%
                       {\'ed.,\addabbrvspace trad\adddotspace et comm\adddot}},
@@ -170,61 +172,61 @@
                       {\'ed.,\addabbrvspace trad\adddotspace et introd\adddot}},
   editorstrin      = {{\'editeurs, traducteurs et introduction}%
                       {\'ed.,\addabbrvspace trad\adddotspace et introd\adddot}},
-  editortrfo       = {{\'editeur, traducteur et pr\'efacier}%
+  editortrfo       = {{\'editeur, traducteur et pr\'eface}%
                       {\'ed.,\addabbrvspace trad\adddotspace et pr\'ef\adddot}},
-  editorstrfo      = {{\'editeurs, traducteurs et pr\'efaciers}%
+  editorstrfo      = {{\'editeurs, traducteurs et pr\'eface}%
                       {\'ed.,\addabbrvspace trad\adddotspace et pr\'ef\adddot}},
-  editortraf       = {{\'editeur, traducteur et postfacier}%
+  editortraf       = {{\'editeur, traducteur et postface}%
                       {\'ed.,\addabbrvspace trad\adddotspace et postf\adddot}},
-  editorstraf      = {{\'editeurs, traducteurs et postfaciers}%
+  editorstraf      = {{\'editeurs, traducteurs et postface}%
                       {\'ed.,\addabbrvspace trad\adddot et postf\adddot}},
   editorcoin       = {{\'editeur, commentateur et introduction}%
                       {\'ed.,\addabbrvspace comm\adddotspace et introd\adddot}},
   editorscoin      = {{\'editeurs, commentateurs et introduction}%
                       {\'ed.,\addabbrvspace comm\adddotspace et introd\adddot}},
-  editorcofo       = {{\'editeur, commentateur et pr\'efacier}%
+  editorcofo       = {{\'editeur, commentateur et pr\'eface}%
                       {\'ed.,\addabbrvspace comm\adddotspace et pr\'ef\adddot}},
-  editorscofo      = {{\'editeurs, commentateurs et pr\'efaciers}%
+  editorscofo      = {{\'editeurs, commentateurs et pr\'eface}%
                       {\'ed.,\addabbrvspace comm\adddotspace et pr\'ef\adddot}},
-  editorcoaf       = {{\'editeur, commentateur et postfacier}%
+  editorcoaf       = {{\'editeur, commentateur et postface}%
                       {\'ed.,\addabbrvspace comm\adddotspace et postf\adddot}},
-  editorscoaf      = {{\'editeurs, commentateurs et postfaciers}%
+  editorscoaf      = {{\'editeurs, commentateurs et postface}%
                       {\'ed.,\addabbrvspace comm\adddotspace et postf\adddot}},
   editoranin       = {{\'editeur, annotateur et introduction}%
                       {\'ed.,\addabbrvspace annot\adddotspace et introd\adddot}},
   editorsanin      = {{\'editeurs, annotateurs et introduction}%
                       {\'ed.,\addabbrvspace annot\adddotspace et introd\adddot}},
-  editoranfo       = {{\'editeur, annotateur et pr\'efacier}%
+  editoranfo       = {{\'editeur, annotateur et pr\'eface}%
                       {\'ed.,\addabbrvspace annot\adddotspace et pr\'ef\adddot}},
-  editorsanfo      = {{\'editeurs, annotateurs et pr\'efaciers}%
+  editorsanfo      = {{\'editeurs, annotateurs et pr\'eface}%
                       {\'ed.,\addabbrvspace annot\adddotspace et pr\'ef\adddot}},
-  editoranaf       = {{\'editeur, annotateur et postfacier}%
+  editoranaf       = {{\'editeur, annotateur et postface}%
                       {\'ed.,\addabbrvspace annot\adddotspace et postf\adddot}},
-  editorsanaf      = {{\'editeurs, annotateurs et postfaciers}%
+  editorsanaf      = {{\'editeurs, annotateurs et postface}%
                       {\'ed.,\addabbrvspace annot\adddotspace et postf\adddot}},
   editortrcoin     = {{\'editeur, traducteur, commentateur et introduction}%
                       {\'ed.,\addabbrvspace trad., comm\adddotspace et introd\adddot}},
   editorstrcoin    = {{\'editeurs, traducteurs, commentateurs et introduction}%
                       {\'ed.,\addabbrvspace trad., comm\adddotspace et introd\adddot}},
-  editortrcofo     = {{\'editeur, traducteur, commentateur et pr\'efacier}%
+  editortrcofo     = {{\'editeur, traducteur, commentateur et pr\'eface}%
                       {\'ed.,\addabbrvspace trad., comm\adddotspace et pr\'ef\adddot}},
-  editorstrcofo    = {{\'editeurs, traducteurs, commentateurs et pr\'efaciers}%
+  editorstrcofo    = {{\'editeurs, traducteurs, commentateurs et pr\'eface}%
                       {\'ed.,\addabbrvspace trad., comm\adddotspace et pr\'ef\adddot}},
-  editortrcoaf     = {{\'editeur, traducteur, commentateur et postfacier}%
+  editortrcoaf     = {{\'editeur, traducteur, commentateur et postface}%
                       {\'ed.,\addabbrvspace trad., comm\adddotspace et postf\adddot}},
-  editorstrcoaf    = {{\'editeurs, traducteurs, commentateurs et postfaciers}%
+  editorstrcoaf    = {{\'editeurs, traducteurs, commentateurs et postface}%
                       {\'ed.,\addabbrvspace trad., comm\adddotspace et postf\adddot}},
   editortranin     = {{\'editeur, traducteur, annotateur et introduction}%
                       {\'ed.,\addabbrvspace trad., annot\adddotspace et introd\adddot}},
   editorstranin    = {{\'editeurs, traducteurs, annotateurs et introduction}%
                       {\'ed.,\addabbrvspace trad., annot\adddotspace et introd\adddot}},
-  editortranfo     = {{\'editeur, traducteur, annotateur et pr\'efacier}%
+  editortranfo     = {{\'editeur, traducteur, annotateur et pr\'eface}%
                       {\'ed.,\addabbrvspace trad., annot\adddotspace et pr\'ef\adddot}},
-  editorstranfo    = {{\'editeurs, traducteurs, annotateurs et pr\'efaciers}%
+  editorstranfo    = {{\'editeurs, traducteurs, annotateurs et pr\'eface}%
                       {\'ed.,\addabbrvspace trad., annot\adddotspace et pr\'ef\adddot}},
-  editortranaf     = {{\'editeur, traducteur, annotateur et postfacier}%
+  editortranaf     = {{\'editeur, traducteur, annotateur et postface}%
                       {\'ed.,\addabbrvspace trad., annot\adddotspace et postf\adddot}},
-  editorstranaf    = {{\'editeurs, traducteurs, annotateurs et postfaciers}%
+  editorstranaf    = {{\'editeurs, traducteurs, annotateurs et postface}%
                       {\'ed.,\addabbrvspace trad., annot\adddotspace et postf\adddot}},
   translatorco     = {{traducteur et commentateur}%
                       {trad\adddotspace et comm\adddot}},
@@ -385,7 +387,7 @@
   origpubin        = {{publi\'e \`a l'origine en}{pub\adddotspace \`a l'orig\adddotspace en}},
   astitle          = {{sous le titre}{sous le titre}},
   bypublisher      = {{par}{par}},
-  nodate           = {{pas\space de\space date}{{}p\adddotspace d\adddot}},
+  nodate           = {{sans\space date}{{}s\adddotspace d\adddot}},
   page             = {{page}{p\adddot}},
   pages            = {{pages}{p\adddot}},
   column           = {{colonne}{col\adddot}},
@@ -394,10 +396,10 @@
   lines            = {{lignes}{l\adddot}},
   verse            = {{vers}{v\adddot}},
   verses           = {{vers}{v\adddot}},
-  section          = {{section}{\S}},
-  sections         = {{sections}{\S}},
-  paragraph        = {{paragraphe}{par\adddot}},
-  paragraphs       = {{paragraphes}{par\adddot}},
+  section          = {{section}{sect\adddot}},
+  sections         = {{sections}{sect\adddot}},
+  paragraph        = {{paragraphe}{\S}},
+  paragraphs       = {{paragraphes}{\S}},
   pagetotal        = {{page}{p\adddot}},
   pagetotals       = {{pages}{p\adddot}},
   columntotal      = {{colonne}{col\adddot}},
@@ -406,10 +408,10 @@
   linetotals       = {{lignes}{l\adddot}},
   versetotal       = {{vers}{v\adddot}},
   versetotals      = {{vers}{v\adddot}},
-  sectiontotal     = {{section}{\S}},
-  sectiontotals    = {{sections}{\S}},
-  paragraphtotal   = {{paragraphe}{par\adddot}},
-  paragraphtotals  = {{paragraphes}{par\adddot}},
+  sectiontotal     = {{section}{sect\adddot}},
+  sectiontotals    = {{sections}{sect\adddot}},
+  paragraphtotal   = {{paragraphe}{\S}},
+  paragraphtotals  = {{paragraphes}{\S}},
   in               = {{in}{in}},
   inseries         = {{in}{in}},
   ofseries         = {{de}{de}},
@@ -458,11 +460,11 @@
   backrefpages     = {{cf\adddotspace pages}{cf\adddotspace p\adddot}},
   january          = {{janvier}{jan\adddot}},
   february         = {{f\'evrier}{f\'ev\adddot}},
-  march            = {{mars}{mar\adddot}},
+  march            = {{mars}{mars}},
   april            = {{avril}{avr\adddot}},
   may              = {{mai}{mai}},
   june             = {{juin}{juin}},
-  july             = {{juillet}{juil\adddot}},
+  july             = {{juillet}{juill\adddot}},
   august           = {{ao\^ut}{ao\^ut}},
   september        = {{septembre}{sept\adddot}},
   october          = {{octobre}{oct\adddot}},
@@ -492,6 +494,7 @@
   langpolish       = {{polonais}{polonais}},
   langportuguese   = {{portugais}{portugais}},
   langrussian      = {{russe}{russe}},
+  langserbian      = {{serbe}{serbe}},
   langslovak       = {{slovaque}{slovaque}},
   langslovene      = {{slov\`ene}{slov\`ene}},
   langspanish      = {{espagnol}{espagnol}},
@@ -521,6 +524,7 @@
   frompolish       = {{du polonais}{du polonais}},
   fromportuguese   = {{du portugais}{du portugais}},
   fromrussian      = {{du russe}{du russe}},
+  fromserbian      = {{du serbe}{du serbe}},
   fromslovak       = {{du slovaque}{du slovaque}},
   fromslovene      = {{du slov\`ene}{du slov\`ene}},
   fromspanish      = {{de l'espagnol}{de l'espagnol}},

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/galician.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/galician.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/galician.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -43,13 +43,17 @@
   \def\mkbibordedition{\mkbibfemord}%
   \def\mkbibordseries{\mkbibfemord}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%
@@ -426,7 +430,7 @@
   sequens          = {{sq\adddot}{sq\adddot}},
   sequentes        = {{sqq\adddot}{sqq\adddot}},
   passim           = {{p\'assim}{p\'ass\adddot}},
-  see              = {{v\'exase}{vid\adddotspace}},
+  see              = {{v\'exase}{vid\adddot}},
   seealso          = {{v\'exase tam\'en}{vid\adddotspace tam\'en}},
   backrefpage      = {{v\'exase p\'axina}{vid\adddotspace p\adddot}},
   backrefpages     = {{v\'exanse p\'axinas}{vid\adddotspace pp\adddot}},

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/german.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/german.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/german.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -50,13 +50,17 @@
       {}
       {\printlist[sfromoriglanguage]{origlanguage}\space}}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%
@@ -118,141 +122,141 @@
   foreword         = {{Vorwort}{Vorw\adddot}},
   afterword        = {{Nachwort}{Nachw\adddot}},
   editortr         = {{Herausgeber und \"Ubersetzer}%
-                      {Hrsg\adddot\ und \"Ubers\adddot}},
+                      {Hrsg\adddotspace und \"Ubers\adddot}},
   editorstr        = {{Herausgeber und \"Ubersetzer}%
-                      {Hrsg\adddot\ und \"Ubers\adddot}},
+                      {Hrsg\adddotspace und \"Ubers\adddot}},
   editorco         = {{Herausgeber und Kommentator}%
-                      {Hrsg\adddot\ und Komm\adddot}},
+                      {Hrsg\adddotspace und Komm\adddot}},
   editorsco        = {{Herausgeber und Kommentatoren}%
-                      {Hrsg\adddot\ und Komm\adddot}},
+                      {Hrsg\adddotspace und Komm\adddot}},
   editoran         = {{Herausgeber und Kommentator}%
-                      {Hrsg\adddot\ und Komm\adddot}},
+                      {Hrsg\adddotspace und Komm\adddot}},
   editorsan        = {{Herausgeber und Kommentatoren}%
-                      {Hrsg\adddot\ und Komm\adddot}},
+                      {Hrsg\adddotspace und Komm\adddot}},
   editorin         = {{Herausgabe und Einleitung}%
-                      {Hrsg\adddot\ und Einl\adddot}},
+                      {Hrsg\adddotspace und Einl\adddot}},
   editorsin        = {{Herausgeber und Einleitung}%
-                      {Hrsg\adddot\ und Einl\adddot}},
+                      {Hrsg\adddotspace und Einl\adddot}},
   editorfo         = {{Herausgeber und Vorwort}%
-                      {Hrsg\adddot\ und Vorw\adddot}},
+                      {Hrsg\adddotspace und Vorw\adddot}},
   editorsfo        = {{Herausgabe und Vorwort}%
-                      {Hrsg\adddot\ und Vorw\adddot}},
+                      {Hrsg\adddotspace und Vorw\adddot}},
   editoraf         = {{Herausgabe und Nachwort}%
-                      {Hrsg\adddot\ und Nachw\adddot}},
+                      {Hrsg\adddotspace und Nachw\adddot}},
   editorsaf        = {{Herausgabe und Nachwort}%
-                      {Hrsg\adddot\ und Nachw\adddot}},
+                      {Hrsg\adddotspace und Nachw\adddot}},
   editortrco       = {{Herausgeber, \"Ubersetzer und Kommentator}%
-                      {Hrsg., \"Ubers\adddot\ und Komm\adddot}},
+                      {Hrsg., \"Ubers\adddotspace und Komm\adddot}},
   editorstrco      = {{Herausgeber, \"Ubersetzer und Kommentatoren}%
-                      {Hrsg., \"Ubers\adddot\ und Komm\adddot}},
+                      {Hrsg., \"Ubers\adddotspace und Komm\adddot}},
   editortran       = {{Herausgeber, \"Ubersetzer und Kommentator}%
-                      {Hrsg., \"Ubers\adddot\ und Komm\adddot}},
+                      {Hrsg., \"Ubers\adddotspace und Komm\adddot}},
   editorstran      = {{Herausgeber, \"Ubersetzer und Kommentatoren}%
-                      {Hrsg., \"Ubers\adddot\ und Komm\adddot}},
+                      {Hrsg., \"Ubers\adddotspace und Komm\adddot}},
   editortrin       = {{Herausgabe, \"Ubersetzung und Einleitung}%
-                      {Hrsg., \"Ubers\adddot\ und Einl\adddot}},
+                      {Hrsg., \"Ubers\adddotspace und Einl\adddot}},
   editorstrin      = {{Herausgabe, \"Ubersetzung und Einleitung}%
-                      {Hrsg., \"Ubers\adddot\ und Einl\adddot}},
+                      {Hrsg., \"Ubers\adddotspace und Einl\adddot}},
   editortrfo       = {{Herausgabe, \"Ubersetzung und Vorwort}%
-                      {Hrsg., \"Ubers\adddot\ und Vorw\adddot}},
+                      {Hrsg., \"Ubers\adddotspace und Vorw\adddot}},
   editorstrfo      = {{Herausgabe, \"Ubersetzung und Vorwort}%
-                      {Hrsg., \"Ubers\adddot\ und Vorw\adddot}},
+                      {Hrsg., \"Ubers\adddotspace und Vorw\adddot}},
   editortraf       = {{Herausgabe, \"Ubersetzung und Nachwort}%
-                      {Hrsg., \"Ubers\adddot\ und Nachw\adddot}},
+                      {Hrsg., \"Ubers\adddotspace und Nachw\adddot}},
   editorstraf      = {{Herausgabe, \"Ubersetzung und Nachwort}%
-                      {Hrsg., \"Ubers\adddot\ und Nachw\adddot}},
+                      {Hrsg., \"Ubers\adddotspace und Nachw\adddot}},
   editorcoin       = {{Herausgabe, Kommentar und Einleitung}%
-                      {Hrsg., Komm\adddot\ und Einl\adddot}},
+                      {Hrsg., Komm\adddotspace und Einl\adddot}},
   editorscoin      = {{Herausgabe, Kommentar und Einleitung}%
-                      {Hrsg., Komm\adddot\ und Einl\adddot}},
+                      {Hrsg., Komm\adddotspace und Einl\adddot}},
   editorcofo       = {{Herausgabe, Kommentar und Vorwort}%
-                      {Hrsg., Komm\adddot\ und Vorw\adddot}},
+                      {Hrsg., Komm\adddotspace und Vorw\adddot}},
   editorscofo      = {{Herausgabe, Kommentar und Vorwort}%
-                      {Hrsg., Komm\adddot\ und Vorw\adddot}},
+                      {Hrsg., Komm\adddotspace und Vorw\adddot}},
   editorcoaf       = {{Herausgabe, Kommentar und Nachwort}%
-                      {Hrsg., Komm\adddot\ und Nachw\adddot}},
+                      {Hrsg., Komm\adddotspace und Nachw\adddot}},
   editorscoaf      = {{Herausgabe, Kommentar und Nachwort}%
-                      {Hrsg., Komm\adddot\ und Nachw\adddot}},
+                      {Hrsg., Komm\adddotspace und Nachw\adddot}},
   editoranin       = {{Herausgabe, Erl\"auterungen und Einleitung}%
-                      {Hrsg., Erl\"aut\adddot\ und Einl\adddot}},
+                      {Hrsg., Erl\"aut\adddotspace und Einl\adddot}},
   editorsanin      = {{Herausgabe, Erl\"auterungen und Einleitung}%
-                      {Hrsg., Erl\"aut\adddot\ und Einl\adddot}},
+                      {Hrsg., Erl\"aut\adddotspace und Einl\adddot}},
   editoranfo       = {{Herausgabe, Erl\"auterungen und Vorwort}%
-                      {Hrsg., Erl\"aut\adddot\ und Vorw\adddot}},
+                      {Hrsg., Erl\"aut\adddotspace und Vorw\adddot}},
   editorsanfo      = {{Herausgabe, Erl\"auterungen und Vorwort}%
-                      {Hrsg., Erl\"aut\adddot\ und Vorw\adddot}},
+                      {Hrsg., Erl\"aut\adddotspace und Vorw\adddot}},
   editoranaf       = {{Herausgabe, Erl\"auterungen und Nachwort}%
-                      {Hrsg., Erl\"aut\adddot\ und Nachw\adddot}},
+                      {Hrsg., Erl\"aut\adddotspace und Nachw\adddot}},
   editorsanaf      = {{Herausgabe, Erl\"auterungen und Nachwort}%
-                      {Hrsg., Erl\"aut\adddot\ und Nachw\adddot}},
+                      {Hrsg., Erl\"aut\adddotspace und Nachw\adddot}},
   editortrcoin     = {{Herausgabe, \"Ubersetzung, Kommentar und Einleitung}%
-                      {Hrsg., \"Ubers., Komm\adddot\ und Einl\adddot}},
+                      {Hrsg., \"Ubers., Komm\adddotspace und Einl\adddot}},
   editorstrcoin    = {{Herausgabe, \"Ubersetzung, Kommentar und Einleitung}%
-                      {Hrsg., \"Ubers., Komm\adddot\ und Einl\adddot}},
+                      {Hrsg., \"Ubers., Komm\adddotspace und Einl\adddot}},
   editortrcofo     = {{Herausgabe, \"Ubersetzung, Kommentar und Vorwort}%
-                      {Hrsg., \"Ubers., Komm\adddot\ und Vorw\adddot}},
+                      {Hrsg., \"Ubers., Komm\adddotspace und Vorw\adddot}},
   editorstrcofo    = {{Herausgabe, \"Ubersetzung, Kommentar und Vorwort}%
-                      {Hrsg., \"Ubers., Komm\adddot\ und Vorw\adddot}},
+                      {Hrsg., \"Ubers., Komm\adddotspace und Vorw\adddot}},
   editortrcoaf     = {{Herausgabe, \"Ubersetzung, Kommentar und Nachwort}%
-                      {Hrsg., \"Ubers., Komm\adddot\ und Nachw\adddot}},
+                      {Hrsg., \"Ubers., Komm\adddotspace und Nachw\adddot}},
   editorstrcoaf    = {{Herausgabe, \"Ubersetzung, Kommentar und Nachwort}%
-                      {Hrsg., \"Ubers., Komm\adddot\ und Nachw\adddot}},
+                      {Hrsg., \"Ubers., Komm\adddotspace und Nachw\adddot}},
   editortranin     = {{Herausgabe, \"Ubersetzung, Erl\"auterungen und Einleitung}%
-                      {Hrsg., \"Ubers., Erl\"aut\adddot\ und Einl\adddot}},
+                      {Hrsg., \"Ubers., Erl\"aut\adddotspace und Einl\adddot}},
   editorstranin    = {{Herausgabe, \"Ubersetzung, Erl\"auterungen und Einleitung}%
-                      {Hrsg., \"Ubers., Erl\"aut\adddot\ und Einl\adddot}},
+                      {Hrsg., \"Ubers., Erl\"aut\adddotspace und Einl\adddot}},
   editortranfo     = {{Herausgabe, \"Ubersetzung, Erl\"auterungen und Vorwort}%
-                      {Hrsg., \"Ubers., Erl\"aut\adddot\ und Vorw\adddot}},
+                      {Hrsg., \"Ubers., Erl\"aut\adddotspace und Vorw\adddot}},
   editorstranfo    = {{Herausgabe, \"Ubersetzung, Erl\"auterungen und Vorwort}%
-                      {Hrsg., \"Ubers., Erl\"aut\adddot\ und Vorw\adddot}},
+                      {Hrsg., \"Ubers., Erl\"aut\adddotspace und Vorw\adddot}},
   editortranaf     = {{Herausgabe, \"Ubersetzung, Erl\"auterungen und Nachwort}%
-                      {Hrsg., \"Ubers., Erl\"aut\adddot\ und Nachw\adddot}},
+                      {Hrsg., \"Ubers., Erl\"aut\adddotspace und Nachw\adddot}},
   editorstranaf    = {{Herausgabe, \"Ubersetzung, Erl\"auterungen und Nachwort}%
-                      {Hrsg., \"Ubers., Erl\"aut\adddot\ und Nachw\adddot}},
+                      {Hrsg., \"Ubers., Erl\"aut\adddotspace und Nachw\adddot}},
   translatorco     = {{\"Ubersetzung und Kommentar}%
-                      {\"Ubers\adddot\ und Komm\adddot}},
+                      {\"Ubers\adddotspace und Komm\adddot}},
   translatorsco    = {{\"Ubersetzung und Kommentar}%
-                      {\"Ubers\adddot\ und Komm\adddot}},
+                      {\"Ubers\adddotspace und Komm\adddot}},
   translatoran     = {{\"Ubersetzung und Erl\"auterungen}%
-                      {\"Ubers\adddot\ und Erl\"aut\adddot}},
+                      {\"Ubers\adddotspace und Erl\"aut\adddot}},
   translatorsan    = {{\"Ubersetzung und Erl\"auterungen}%
-                      {\"Ubers\adddot\ und Erl\"aut\adddot}},
+                      {\"Ubers\adddotspace und Erl\"aut\adddot}},
   translatorin     = {{\"Ubersetzung und Einleitung}%
-                      {\"Ubers\adddot\ und Einl\adddot}},
+                      {\"Ubers\adddotspace und Einl\adddot}},
   translatorsin    = {{\"Ubersetzung und Einleitung}%
-                      {\"Ubers\adddot\ und Einl\adddot}},
+                      {\"Ubers\adddotspace und Einl\adddot}},
   translatorfo     = {{\"Ubersetzung und Vorwort}%
-                      {\"Ubers\adddot\ und Vorw\adddot}},
+                      {\"Ubers\adddotspace und Vorw\adddot}},
   translatorsfo    = {{\"Ubersetzung und Vorwort}%
-                      {\"Ubers\adddot\ und Vorw\adddot}},
+                      {\"Ubers\adddotspace und Vorw\adddot}},
   translatoraf     = {{\"Ubersetzung und Nachwort}%
-                      {\"Ubers\adddot\ und Nachw\adddot}},
+                      {\"Ubers\adddotspace und Nachw\adddot}},
   translatorsaf    = {{\"Ubersetzung und Nachwort}%
-                      {\"Ubers\adddot\ und Nachw\adddot}},
+                      {\"Ubers\adddotspace und Nachw\adddot}},
   translatorcoin   = {{\"Ubersetzung, Kommentar und Einleitung}%
-                      {\"Ubers., Komm\adddot\ und Einl\adddot}},
+                      {\"Ubers., Komm\adddotspace und Einl\adddot}},
   translatorscoin  = {{\"Ubersetzung, Kommentar und Einleitung}%
-                      {\"Ubers., Komm\adddot\ und Einl\adddot}},
+                      {\"Ubers., Komm\adddotspace und Einl\adddot}},
   translatorcofo   = {{\"Ubersetzung, Kommentar und Vorwort}%
-                      {\"Ubers., Komm\adddot\ und Vorw\adddot}},
+                      {\"Ubers., Komm\adddotspace und Vorw\adddot}},
   translatorscofo  = {{\"Ubersetzung, Kommentar und Vorwort}%
-                      {\"Ubers., Komm\adddot\ und Vorw\adddot}},
+                      {\"Ubers., Komm\adddotspace und Vorw\adddot}},
   translatorcoaf   = {{\"Ubersetzung, Kommentar und Nachwort}%
-                      {\"Ubers., Komm\adddot\ und Nachw\adddot}},
+                      {\"Ubers., Komm\adddotspace und Nachw\adddot}},
   translatorscoaf  = {{\"Ubersetzung, Kommentar und Nachwort}%
-                      {\"Ubers., Komm\adddot\ und Nachw\adddot}},
+                      {\"Ubers., Komm\adddotspace und Nachw\adddot}},
   translatoranin   = {{\"Ubersetzung, Erl\"auterungen und Einleitung}%
-                      {\"Ubers., Erl\"aut\adddot\ und Einl\adddot}},
+                      {\"Ubers., Erl\"aut\adddotspace und Einl\adddot}},
   translatorsanin  = {{\"Ubersetzung, Erl\"auterungen und Einleitung}%
-                      {\"Ubers., Erl\"aut\adddot\ und Einl\adddot}},
+                      {\"Ubers., Erl\"aut\adddotspace und Einl\adddot}},
   translatoranfo   = {{\"Ubersetzung, Erl\"auterungen und Vorwort}%
-                      {\"Ubers., Erl\"aut\adddot\ und Vorw\adddot}},
+                      {\"Ubers., Erl\"aut\adddotspace und Vorw\adddot}},
   translatorsanfo  = {{\"Ubersetzung, Erl\"auterungen und Vorwort}%
-                      {\"Ubers., Erl\"aut\adddot\ und Vorw\adddot}},
+                      {\"Ubers., Erl\"aut\adddotspace und Vorw\adddot}},
   translatoranaf   = {{\"Ubersetzung, Erl\"auterungen und Nachwort}%
-                      {\"Ubers., Erl\"aut\adddot\ und Nachw\adddot}},
+                      {\"Ubers., Erl\"aut\adddotspace und Nachw\adddot}},
   translatorsanaf  = {{\"Ubersetzung, Erl\"auterungen und Nachwort}%
-                      {\"Ubers., Erl\"aut\adddot\ und Nachw\adddot}},
+                      {\"Ubers., Erl\"aut\adddotspace und Nachw\adddot}},
 % organizer        = {{}{}},% FIXME: missing
 % organizers       = {{}{}},% FIXME: missing
 % byorganizer      = {{}{}},% FIXME: missing
@@ -263,84 +267,84 @@
   byreviser        = {{\"uberarbeitet von}{\"uberarb\adddotspace von}},
   byreviewer       = {{rezensiert von}{rez\adddotspace von}},
   byfounder        = {{begr\"undet von}{begr\adddotspace von}},
-  bycontinuator    = {{fortgef\"urt von}{fortgef\adddotspace von}},
+  bycontinuator    = {{fortgef\"uhrt von}{fortgef\adddotspace von}},
   bycollaborator   = {{unter Mitarbeit von}{unter Mitarb\adddotspace von}},
-  bytranslator     = {{\lbx at lfromlang \"ubersetzt von}{\lbx at sfromlang \"ubers\adddot\ von}},
-  bycommentator    = {{kommentiert von}{komm\adddot\ von}},
-  byannotator      = {{erl\"autert von}{erl\"aut\adddot\ von}},
-  withcommentator  = {{mit einem Kommentar von}{mit einem Komm\adddot\ von}},
-  withannotator    = {{mit Erl\"auterungen von}{mit Erl\"aut\adddot\ von}},
-  withintroduction = {{mit einer Einleitung von}{mit einer Einl\adddot\ von}},
-  withforeword     = {{mit einem Vorwort von}{mit einem Vorw\adddot\ von}},
-  withafterword    = {{mit einem Nachwort von}{mit einem Nachw\adddot\ von}},
+  bytranslator     = {{\lbx at lfromlang \"ubersetzt von}{\lbx at sfromlang \"ubers\adddotspace von}},
+  bycommentator    = {{kommentiert von}{komm\adddotspace von}},
+  byannotator      = {{erl\"autert von}{erl\"aut\adddotspace von}},
+  withcommentator  = {{mit einem Kommentar von}{mit einem Komm\adddotspace von}},
+  withannotator    = {{mit Erl\"auterungen von}{mit Erl\"aut\adddotspace von}},
+  withintroduction = {{mit einer Einleitung von}{mit einer Einl\adddotspace von}},
+  withforeword     = {{mit einem Vorwort von}{mit einem Vorw\adddotspace von}},
+  withafterword    = {{mit einem Nachwort von}{mit einem Nachw\adddotspace von}},
   byeditortr       = {{herausgegeben und \lbx at lfromlang \"ubersetzt von}%
-                      {hrsg\adddotspace und \lbx at sfromlang \"ubers\adddot\ von}},
+                      {hrsg\adddotspace und \lbx at sfromlang \"ubers\adddotspace von}},
   byeditorco       = {{herausgegeben und kommentiert von}%
-                      {hrsg\adddotspace und komm\adddot\ von}},
+                      {hrsg\adddotspace und komm\adddotspace von}},
   byeditoran       = {{herausgegeben und erl\"autert von}%
-                      {hrsg\adddotspace und erl\"aut\adddot\ von}},
+                      {hrsg\adddotspace und erl\"aut\adddotspace von}},
   byeditorin       = {{herausgegeben und mit einer Einleitung versehen von}%
-                      {hrsg\adddotspace und mit einer Einl\adddot\ vers\adddot\ von}},
+                      {hrsg\adddotspace und mit einer Einl\adddotspace vers\adddotspace von}},
   byeditorfo       = {{herausgegeben und mit einem Vorwort versehen von}%
-                      {hrsg\adddotspace und mit einem Vorw\adddot\ vers\adddot\ von}},
+                      {hrsg\adddotspace und mit einem Vorw\adddotspace vers\adddotspace von}},
   byeditoraf       = {{herausgegeben und mit einem Nachwort versehen von}%
-                      {hrsg\adddotspace und mit einem Nachw\adddot\ vers\adddot\ von}},
+                      {hrsg\adddotspace und mit einem Nachw\adddotspace vers\adddotspace von}},
   byeditortrco     = {{herausgegeben, \lbx at lfromlang \"ubersetzt und kommentiert von}%
-                      {hrsg., \lbx at sfromlang \"ubers\adddot\ und komm\adddot\ von}},
+                      {hrsg., \lbx at sfromlang \"ubers\adddotspace und komm\adddotspace von}},
   byeditortran     = {{herausgegeben, \lbx at lfromlang \"ubersetzt und erl\"autert von}%
-                      {hrsg., \lbx at sfromlang \"ubers\adddot\ und erl\"aut\adddot\ von}},
+                      {hrsg., \lbx at sfromlang \"ubers\adddotspace und erl\"aut\adddotspace von}},
   byeditortrin     = {{herausgegeben, \lbx at lfromlang \"ubersetzt und mit einer Einleitung versehen von}%
-                      {hrsg., \lbx at sfromlang \"ubers\adddot\ und mit einer Einl\adddot\ vers\adddot\ von}},
+                      {hrsg., \lbx at sfromlang \"ubers\adddotspace und mit einer Einl\adddotspace vers\adddotspace von}},
   byeditortrfo     = {{herausgegeben, \lbx at lfromlang \"ubersetzt und mit einem Vorwort versehen von}%
-                      {hrsg., \lbx at sfromlang \"ubers\adddot\ und mit einem Vorw\adddot\ vers\adddot\ von}},
+                      {hrsg., \lbx at sfromlang \"ubers\adddotspace und mit einem Vorw\adddotspace vers\adddotspace von}},
   byeditortraf     = {{herausgegeben, \lbx at lfromlang \"ubersetzt und mit einem Nachwort versehen von}%
-                      {hrsg., \lbx at sfromlang \"ubers\adddot\ und mit einem Nachw\adddot\ vers\adddot\ von}},
+                      {hrsg., \lbx at sfromlang \"ubers\adddotspace und mit einem Nachw\adddotspace vers\adddotspace von}},
   byeditorcoin     = {{herausgegeben, kommentiert und mit einer Einleitung versehen von}%
-                      {hrsg., komm\adddot\ und mit einer Einl\adddot\ vers\adddot\ von}},
+                      {hrsg., komm\adddotspace und mit einer Einl\adddotspace vers\adddotspace von}},
   byeditorcofo     = {{herausgegeben, kommentiert und mit einem Vorwort versehen von}%
-                      {hrsg., komm\adddot\ und mit einem Vorw\adddot\ vers\adddot\ von}},
+                      {hrsg., komm\adddotspace und mit einem Vorw\adddotspace vers\adddotspace von}},
   byeditorcoaf     = {{herausgegeben, kommentiert und mit einem Nachwort versehen von}%
-                      {hrsg., komm\adddot\ und mit einem Nachw\adddot\ vers\adddot\ von}},
+                      {hrsg., komm\adddotspace und mit einem Nachw\adddotspace vers\adddotspace von}},
   byeditoranin     = {{herausgegeben, erl\"autert und mit einer Einleitung versehen von}%
-                      {hrsg., erl\"aut\adddot\ und mit einer Einl\adddot\ vers\adddot\ von}},
+                      {hrsg., erl\"aut\adddotspace und mit einer Einl\adddotspace vers\adddotspace von}},
   byeditoranfo     = {{herausgegeben, erl\"autert und mit einem Vorwort versehen von}%
-                      {hrsg., erl\"aut\adddot\ und mit einem Vorw\adddot\ vers\adddot\ von}},
+                      {hrsg., erl\"aut\adddotspace und mit einem Vorw\adddotspace vers\adddotspace von}},
   byeditoranaf     = {{herausgegeben, erl\"autert und mit einem Nachwort versehen von}%
-                      {hrsg., erl\"aut\adddot\ und mit einem Nachw\adddot\ vers\adddot\ von}},
+                      {hrsg., erl\"aut\adddotspace und mit einem Nachw\adddotspace vers\adddotspace von}},
   byeditortrcoin   = {{herausgegeben, \lbx at lfromlang \"ubersetzt, kommentiert und mit einer Einleitung versehen von}%
-                      {hrsg., \lbx at sfromlang \"ubers., komm\adddot\ und mit einer Einl\adddot\ vers\adddot\ von}},
+                      {hrsg., \lbx at sfromlang \"ubers., komm\adddotspace und mit einer Einl\adddotspace vers\adddotspace von}},
   byeditortrcofo   = {{herausgegeben, \lbx at lfromlang \"ubersetzt, kommentiert und mit einem Vorwort versehen von}%
-                      {hrsg., \lbx at sfromlang \"ubers., komm\adddot\ und mit einem Vorw\adddot\ vers\adddot\ von}},
+                      {hrsg., \lbx at sfromlang \"ubers., komm\adddotspace und mit einem Vorw\adddotspace vers\adddotspace von}},
   byeditortrcoaf   = {{herausgegeben, \lbx at lfromlang \"ubersetzt, kommentiert und mit einem Nachwort versehen von}%
-                      {hrsg., \lbx at sfromlang \"ubers., komm\adddot\ und mit einem Nachw\adddot\ vers\adddot\ von}},
+                      {hrsg., \lbx at sfromlang \"ubers., komm\adddotspace und mit einem Nachw\adddotspace vers\adddotspace von}},
   byeditortranin   = {{herausgegeben, \lbx at lfromlang \"ubersetzt, erl\"autert und mit einer Einleitung versehen von}%
-                      {hrsg., \lbx at sfromlang \"ubers., erl\"aut\adddot\ und mit einer Einl\adddot\ vers\adddot\ von}},
+                      {hrsg., \lbx at sfromlang \"ubers., erl\"aut\adddotspace und mit einer Einl\adddotspace vers\adddotspace von}},
   byeditortranfo   = {{herausgegeben, \lbx at lfromlang \"ubersetzt, erl\"autert und mit einem Vorwort versehen von}%
-                      {hrsg., \lbx at sfromlang \"ubers., erl\"aut\adddot\ und mit einem Vorw\adddot\ vers\adddot\ von}},
+                      {hrsg., \lbx at sfromlang \"ubers., erl\"aut\adddotspace und mit einem Vorw\adddotspace vers\adddotspace von}},
   byeditortranaf   = {{herausgegeben, \lbx at lfromlang \"ubersetzt, erl\"autert und mit einem Nachwort versehen von}%
-                      {hrsg., \lbx at sfromlang \"ubers., erl\"aut\adddot\ und mit einem Nachw\adddot\ vers\adddot\ von}},
+                      {hrsg., \lbx at sfromlang \"ubers., erl\"aut\adddotspace und mit einem Nachw\adddotspace vers\adddotspace von}},
   bytranslatorco   = {{\lbx at lfromlang \"ubersetzt und kommentiert von}%
-                      {\lbx at sfromlang \"ubers\adddot\ und komm\adddot\ von}},
+                      {\lbx at sfromlang \"ubers\adddotspace und komm\adddotspace von}},
   bytranslatoran   = {{\lbx at lfromlang \"ubersetzt und erl\"autert von}%
-                      {\lbx at sfromlang \"ubers\adddot\ und erl\"aut\adddot\ von}},
+                      {\lbx at sfromlang \"ubers\adddotspace und erl\"aut\adddotspace von}},
   bytranslatorin   = {{\lbx at lfromlang \"ubersetzt und mit einer Einleitung versehen von}%
-                      {\lbx at sfromlang \"ubers\adddot\ und mit einer Einl\adddot\ vers\adddot\ von}},
+                      {\lbx at sfromlang \"ubers\adddotspace und mit einer Einl\adddotspace vers\adddotspace von}},
   bytranslatorfo   = {{\lbx at lfromlang \"ubersetzt und mit einem Vorwort versehen von}%
-                      {\lbx at sfromlang \"ubers\adddot\ und mit einem Vorw\adddot\ vers\adddot\ von}},
+                      {\lbx at sfromlang \"ubers\adddotspace und mit einem Vorw\adddotspace vers\adddotspace von}},
   bytranslatoraf   = {{\lbx at lfromlang \"ubersetzt und mit einem Nachwort versehen von}%
-                      {\lbx at sfromlang \"ubers\adddot\ und mit einem Nachw\adddot\ vers\adddot\ von}},
+                      {\lbx at sfromlang \"ubers\adddotspace und mit einem Nachw\adddotspace vers\adddotspace von}},
   bytranslatorcoin = {{\lbx at lfromlang \"ubersetzt, kommentiert und mit einer Einleitung versehen von}%
-                      {\lbx at sfromlang \"ubers., komm\adddot\ und mit einer Einl\adddot\ vers\adddot\ von}},
+                      {\lbx at sfromlang \"ubers., komm\adddotspace und mit einer Einl\adddotspace vers\adddotspace von}},
   bytranslatorcofo = {{\lbx at lfromlang \"ubersetzt, kommentiert und mit einem Vorwort versehen von}%
-                      {\lbx at sfromlang \"ubers., komm\adddot\ und mit einem Vorw\adddot\ vers\adddot\ von}},
+                      {\lbx at sfromlang \"ubers., komm\adddotspace und mit einem Vorw\adddotspace vers\adddotspace von}},
   bytranslatorcoaf = {{\lbx at lfromlang \"ubersetzt, kommentiert und mit einem Nachwort versehen von}%
-                      {\lbx at sfromlang \"ubers., komm\adddot\ und mit einem Nachw\adddot\ vers\adddot\ von}},
+                      {\lbx at sfromlang \"ubers., komm\adddotspace und mit einem Nachw\adddotspace vers\adddotspace von}},
   bytranslatoranin = {{\lbx at lfromlang \"ubersetzt, erl\"autert und mit einer Einleitung versehen von}%
-                      {\lbx at sfromlang \"ubers., erl\"aut\adddot\ und mit einer Einl\adddot\ vers\adddot\ von}},
+                      {\lbx at sfromlang \"ubers., erl\"aut\adddotspace und mit einer Einl\adddotspace vers\adddotspace von}},
   bytranslatoranfo = {{\lbx at lfromlang \"ubersetzt, erl\"autert und mit einem Vorwort versehen von}%
-                      {\lbx at sfromlang \"ubers., erl\"aut\adddot\ und mit einem Vorw\adddot\ vers\adddot\ von}},
+                      {\lbx at sfromlang \"ubers., erl\"aut\adddotspace und mit einem Vorw\adddotspace vers\adddotspace von}},
   bytranslatoranaf = {{\lbx at lfromlang \"ubersetzt, erl\"autert und mit einem Nachwort versehen von}%
-                      {\lbx at sfromlang \"ubers., erl\"aut\adddot\ und mit einem Nachw\adddot\ vers\adddot\ von}},
+                      {\lbx at sfromlang \"ubers., erl\"aut\adddotspace und mit einem Nachw\adddotspace vers\adddotspace von}},
   and              = {{und}{und}},
   andothers        = {{u.\,a\adddot}{u.\,a\adddot}},
   andmore          = {{u.\,a\adddot}{u.\,a\adddot}},
@@ -367,7 +371,7 @@
   origpubin        = {{zuerst publiziert in}{zuerst publ\adddotspace in}},
   astitle          = {{unter dem Titel}{unter dem Titel}},
   bypublisher      = {{von}{von}},
-  nodate           = {{ohne\space Datum}{{}o\adddot D\adddot}},
+  nodate           = {{ohne\space Datum}{{}o.\,D\adddot}},
   page             = {{Seite}{S\adddot}},
   pages            = {{Seiten}{S\adddot}},
   column           = {{Spalte}{Sp\adddot}},
@@ -417,7 +421,7 @@
   prepublished     = {{Vorver\"offentlichung}{Vorver\"offentlichung}},
   citedas          = {{im folgenden zitiert als}{im folgenden zit\adddotspace als}},
   thiscite         = {{hier}{hier}},
-  seenote          = {{siehe Anmerkung}{s\adddotspace Anm\adddot}},
+  seenote          = {{siehe Anmerkung}{s.~Anm\adddot}},
   quotedin         = {{zitiert nach}{zit\adddotspace nach}},
   idem             = {{derselbe}{ders\adddot}},
   idemsf           = {{dieselbe}{dies\adddot}},
@@ -435,7 +439,7 @@
   sequentes        = {{ff\adddot}{ff\adddot}},
   passim           = {{passim}{pass\adddot}},
   see              = {{siehe}{siehe}},
-  seealso          = {{siehe auch}{s.\,auch}},
+  seealso          = {{siehe auch}{s.~auch}},
   backrefpage      = {{siehe Seite}{siehe S\adddot}},
   backrefpages     = {{siehe Seiten}{siehe S\adddot}},
   january          = {{Januar}{Jan\adddot}},
@@ -470,14 +474,17 @@
   langjapanese     = {{Japanisch}{Japanisch}},
   langlatin        = {{Lateinisch}{Lateinisch}},
   langlatvian      = {{Lettisch}{Lettisch}},
+  langlithuanian   = {{Litauisch}{Litauisch}},
   langnorwegian    = {{Norwegisch}{Norwegisch}},
   langpolish       = {{Polnisch}{Polnisch}},
   langportuguese   = {{Portugiesisch}{Portugiesisch}},
   langrussian      = {{Russisch}{Russisch}},
+  langserbian      = {{Serbisch}{Serbisch}},
   langslovak       = {{Slowakisch}{Slowakisch}},
   langslovene      = {{Slowenisch}{Slowenisch}},
   langspanish      = {{Spanisch}{Spanisch}},
   langswedish      = {{Schwedisch}{Schwedisch}},
+  langturkish      = {{T\"urkisch}{T\"urkisch}},
   langukrainian    = {{Ukrainisch}{Ukrainisch}},
   fromamerican     = {{aus dem Amerikanischen}{aus dem Amerikanischen}},
   frombrazilian    = {{aus dem Brasilianischen}{aus dem Brasilianischen}},
@@ -499,14 +506,17 @@
   fromjapanese     = {{aus dem Japanischen}{aus dem Japanischen}},
   fromlatin        = {{aus dem Lateinischen}{aus dem Lateinischen}},
   fromlatvian      = {{aus dem Lettischen}{aus dem Lettischen}},
+  fromlithuanian   = {{aus dem Litauischen}{aus dem Litauischen}},
   fromnorwegian    = {{aus dem Norwegischen}{aus dem Norwegischen}},
   frompolish       = {{aus dem Polnischen}{aus dem Polnischen}},
   fromportuguese   = {{aus dem Portugiesischen}{aus dem Portugiesischen}},
   fromrussian      = {{aus dem Russischen}{aus dem Russischen}},
+  fromserbian      = {{aus dem Serbian}{aus dem Serbian}},
   fromslovak       = {{aus dem Slowakischen}{aus dem Slowakischen}},
   fromslovene      = {{aus dem Slowenischen}{aus dem Slowenischen}},
   fromspanish      = {{aus dem Spanischen}{aus dem Spanischen}},
   fromswedish      = {{aus dem Schwedischen}{aus dem Schwedischen}},
+  fromturkish      = {{aus dem T\"urkischen}{T\"urkischen}},
   fromukrainian    = {{aus dem Ukrainischen}{aus dem Ukrainischen}},
   countryde        = {{Deutschland}{DE}},
   countryep        = {{Europ\"aische Union}{EP}},
@@ -516,29 +526,29 @@
   countryus        = {{USA}{US}},
   patent           = {{Patent}{Pat\adddot}},
   patentde         = {{deutsches Patent}{dt\adddotspace Pat\adddot}},
-  patenteu         = {{europ\"aisches Patent}{europ\adddot\ Pat\adddot}},
-  patentfr         = {{franz\"osisches Patent}{frz\adddot\ Pat\adddot}},
-  patentuk         = {{britisches Patent}{brit\adddot\ Pat\adddot}},
+  patenteu         = {{europ\"aisches Patent}{europ\adddotspace Pat\adddot}},
+  patentfr         = {{franz\"osisches Patent}{frz\adddotspace Pat\adddot}},
+  patentuk         = {{britisches Patent}{brit\adddotspace Pat\adddot}},
   patentus         = {{US-Patent}{US-Pat\adddot}},
   patreq           = {{Patentanmeldung}{Patentanmeld\adddot}},
   patreqde         = {{deutsche Patentanmeldung}{dt\adddotspace Patentanmeld\adddot}},
-  patreqeu         = {{europ\"aische Patentanmeldung}{europ\adddot\ Patentanmeld\adddot}},
-  patreqfr         = {{franz\"osische Patentanmeldung}{frz\adddot\ Patentanmeld\adddot}},
-  patrequk         = {{britische Patentanmeldung}{brit\adddot\ Patentanmeld\adddot}},
+  patreqeu         = {{europ\"aische Patentanmeldung}{europ\adddotspace Patentanmeld\adddot}},
+  patreqfr         = {{franz\"osische Patentanmeldung}{frz\adddotspace Patentanmeld\adddot}},
+  patrequk         = {{britische Patentanmeldung}{brit\adddotspace Patentanmeld\adddot}},
   patrequs         = {{US-Patentanmeldung}{US-Patentanmeld\adddot}},
   file             = {{Datei}{Datei}},
   library          = {{Bibliothek}{Bibliothek}},
   abstract         = {{Zusammenfassung}{Zusammenfassung}},
   annotation       = {{Anmerkungen}{Anmerkungen}},
-  commonera        = {{unserer Zeitrechnung}{u\adddotspace Z\adddot}},
-  beforecommonera  = {{vor unserer Zeitrechnung}{v\adddotspace u\adddotspace Z\adddot}},
-  annodomini       = {{n\adddotspace Chr\adddot}{n\adddotspace Chr\adddot}},
-  beforechrist     = {{v\adddotspace Chr\adddot}{v\adddotspace Chr\adddot}},
+  commonera        = {{u.\,Z\adddot}{u.\,Z\adddot}},
+  beforecommonera  = {{v.\,u.\,Z\adddot}{v.\,u.\,Z\adddot}},
+  annodomini       = {{n.\,Chr\adddot}{n.\,Chr\adddot}},
+  beforechrist     = {{v.\,Chr\adddot}{v.\,Chr\adddot}},
   circa            = {{circa}{ca\adddot}},
-  spring           = {{Fr\"uhling}{Fr\adddot}},
-  summer           = {{Sommer}{So\adddot}},
-  autumn           = {{Herbst}{He\adddot}},
-  winter           = {{Winter}{Wi\adddot}},
+  spring           = {{Fr\"uhling}{Frühling}},
+  summer           = {{Sommer}{Sommer}},
+  autumn           = {{Herbst}{Herbst}},
+  winter           = {{Winter}{Winter}},
   am               = {{vorm\adddot}{vorm\adddot}},
   pm               = {{nachm\adddot}{nachm\adddot}},
 }

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/greek.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/greek.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/greek.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -15,7 +15,7 @@
   {}
   {\PackageError{biblatex}
      {Greek requires UTF-8 support}
-     {The 'greek.lbx' file requires UTF-8 encoding but you
+     {The file 'greek.lbx' requires UTF-8 encoding but you
       seem\MessageBreak to be using a different encoding.
       This is a fatal error. I will\MessageBreak abort loading
       greek.lbx now.}%
@@ -78,13 +78,17 @@
   \def\mkbibordedition{\mkbibfemord}%
   \def\mkbibordseries{\mkbibfemord}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/icelandic.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/icelandic.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/icelandic.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -56,13 +56,17 @@
   %   \bibstring{bytranslator}%
   %   }}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/italian.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/italian.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/italian.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -43,13 +43,17 @@
   \def\mkbibordedition{\mkbibfemord}%
   \def\mkbibordseries{\mkbibfemord}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%
@@ -280,7 +284,7 @@
   newseries        = {{nuova serie}{nuova ser\adddot}},
   oldseries        = {{vecchia serie}{vecchia ser\adddot}},
   edition          = {{edizione}{ed\adddot}},
-  reprint          = {{ristampa}{rist\adddotspace}},
+  reprint          = {{ristampa}{rist\adddot}},
   reprintof        = {{ristampa di}{rist\adddotspace di}},
 % reprintas        = {{}{}},% FIXME: missing
 % reprintfrom      = {{}{}},% FIXME: missing

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/latvian.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/latvian.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/latvian.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -83,13 +83,17 @@
          {}
          {\adddot}}}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%
@@ -146,7 +150,7 @@
   % this redefines \mkpageprefix to put the page number as suffix
   \savecommand\blx at mkpageprefix
   \protected\long\def\blx at mkpageprefix#1[#2]#3{%
-    \blx at mkpageprefix@i[#2]{#3}%
+    \blx at mkpageprefix@i[{#2}]{#3}%
     \ifnumeral{#3}
       {\ppspace\bibstring{#1}}
       {\ifnumerals{#3}
@@ -716,7 +720,7 @@
     \blx at metadateinfo{#2}%
     \iffieldundef{#2year}
       {\blx at nounit}
-      {\printtext[#2date]{%
+      {\printtext[{#2date}]{%
          \datecircaprint
          \iffieldundef{#2season}
            {\ifdateyearsequal{#2}{#2end}
@@ -754,7 +758,7 @@
     \blx at metadateinfo{#2}%
     \iffieldundef{#2year}
       {\blx at nounit}
-      {\printtext[#2date]{%
+      {\printtext[{#2date}]{%
          \datecircaprint
          \iffieldundef{#2season}
            {\ifdateyearsequal{#2}{#2end}

Added: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/lithuanian.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/lithuanian.lbx	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/lithuanian.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -0,0 +1,838 @@
+\ProvidesFile{lithuanian.lbx}
+[\abx at lbxid]
+
+\DeclareRedundantLanguages{lithuanian}{lithuanian}
+
+% This file requires UTF-8 support!
+
+\lbx at ifutfinput
+  {}
+  {\PackageError{biblatex}
+     {Lithuanian requires UTF-8 support}
+     {The file 'lithuanian.lbx' requires UTF-8 encoding but you
+      seem\MessageBreak to be using a different encoding.
+      This is a fatal error. I will\MessageBreak abort loading
+      russian.lbx now.}%
+   \endinput}
+
+\DeclareBibliographyExtras{%
+  \DeclareCapitalPunctuation{.:!?}%
+  \protected\def\bibrangedash{%
+    \textendash\penalty\hyphenpenalty}% breakable endash
+  \def\lbx at lt@bibdaterangeseplong{\space\textendash\space}%
+  \def\lbx at lt@bibnumdaterangeseplong{\textendash}%
+  \def\lbx at lt@bibdaterangesepshort{\textendash}%
+  \let\lbx at lt@bibnumdaterangesepshort\lbx at lt@bibdaterangesepshort
+  \savecommand\bibdatesep
+  \protected\def\bibdatesep{\nobreakspace}%
+  \let\finalandcomma=\empty
+  \let\finalandsemicolon=\empty
+  \undef\mkbibordinal
+  \protected\def\mkbibmascord#1{\stripzeros{#1}-as}%
+  \protected\def\mkbibfemord#1{\stripzeros{#1}-a}%
+  \undef\mkbibneutord
+  \savecommand\mkbibordedition
+  \savecommand\mkbibordseries
+  \def\mkbibordedition{\mkbibmascord}%
+  \def\mkbibordseries{\mkbibfemord}%
+  \savecommand\lbx at lfromlang
+  \savecommand\lbx at sfromlang
+  \def\lbx at lfromlang{%
+    \iflistundef{origlanguage}
+      {}
+      {\printlist[lfromoriglanguage]{origlanguage}\space}}%
+  \def\lbx at sfromlang{%
+    \iflistundef{origlanguage}
+      {}
+      {\printlist[sfromoriglanguage]{origlanguage}\space}}%
+  \let\lbx at lt@ifdayrange\@secondoftwo
+  \def\lbx at lt@ifdropdaystring{\lbx at lt@ifdayrange}%
+  \let\lbx at lt@ifmonthrange\@secondoftwo
+  \def\lbx at lt@ifdropmonthstring{\lbx at lt@ifmonthrange}%
+  \let\lbx at lt@ifyearrange\@secondoftwo
+  \def\lbx at lt@ifdropyearstring{\lbx at lt@ifyearrange}%
+  \protected\def\mkbibdatelong#1#2#3{%
+    \iffieldundef{#1}
+      {}
+      {\iffieldbibstring{#1}
+         {\bibstring{\thefield{#1}}}
+         {\dateeraprintpre{#1}%
+          \stripzeros{\thefield{#1}}%
+          \lbx at lt@ifdropyearstring
+            {}
+            {\addnbspace\bibstring{year}}}%
+       \iffieldundef{#2}{}{\addnbspace}}%
+    \iffieldundef{#2}
+      {}
+      {\lbx at lt@mkgenmonth{\thefield{#2}}%
+       \iffieldundef{#3}
+         {\lbx at lt@ifdropmonthstring
+            {}
+            {\addnbspace\bibstring{month}}}
+         {\addnbspace}}%
+    \iffieldundef{#3}
+      {}
+      {\stripzeros{\thefield{#3}}%
+       \lbx at lt@ifdropdaystring{}{\addnbspace\bibstring{day}}}%
+  }%
+  \protected\def\mkbibdateshort#1#2#3{%
+    \iffieldundef{#1}
+      {}
+      {\iffieldbibstring{#1}
+         {\bibstring{\thefield{#1}}}
+         {\dateeraprintpre{#1}%
+          \forcezerosy{\thefield{#1}}}}%
+    \iffieldundef{#2}
+      {}
+      {\iffieldundef{#1}{}{\bibdatesep}%
+       \forcezerosmdt{\thefield{#2}}}%
+    \iffieldundef{#3}
+      {}
+      {\iffieldundef{#2}{}{\bibdatesep}%
+       \forcezerosmdt{\thefield{#3}}}%
+  }%
+  \let\mkbibseasondatelong\mkbibseasondateshort
+  \savecommand\mkdaterangefull
+  \savecommand\mkdaterangefullextra
+  \savecommand\mkdaterangetrunc
+  \savecommand\mkdaterangetruncextra
+  \protected\def\mkdaterangefull{%
+    \lbx at lt@mkdaterangefull}%
+  \protected\def\mkdaterangefullextra{%
+    \lbx at lt@mkdaterangefullextra}%
+  \protected\def\mkdaterangetrunc{%
+    \lbx at lt@mkdaterangetrunc}%
+  \protected\def\mkdaterangetruncextra{%
+    \lbx at lt@mkdaterangetruncextra}%
+  \savecommand\bibtimesep
+  \protected\def\bibtimesep{.}%
+  \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
+      \iffieldundef{#4}{}
+        {\bibtimezonesep
+         \mkbibtimezone{\thefield{#4}}}}%
+  \csletcs{mkbibtime12h}{mkbibtime24h}%
+  \protected\def\mkbibseasondateshort#1#2{%
+    \dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}%
+    \iffieldundef{#1}{}{\addspace}%
+    \mkbibseason{\thefield{#2}}%
+  }%
+  \let\mkbibseasondatelong\mkbibseasondateshort
+}%
+
+\UndeclareBibliographyExtras{%
+  \restorecommand\bibdatesep
+  \restorecommand\mkbibordedition
+  \restorecommand\mkbibordseries
+  \restorecommand\lbx at lfromlang
+  \restorecommand\lbx at sfromlang
+  \restorecommand\bibtimesep
+  \restorecommand\mkdaterangefull
+  \restorecommand\mkdaterangefullextra
+  \restorecommand\mkdaterangetrunc
+  \restorecommand\mkdaterangetruncextra
+}
+
+\NewBibliographyString{%
+  genjanuary,
+  genfebruary,
+  genmarch,
+  genapril,
+  genmay,
+  genjune,
+  genjuly,
+  genaugust,
+  genseptember,
+  genoctober,
+  gennovember,
+  gendecember,
+  year,
+  month,
+  day,
+}
+
+\DeclareBibliographyStrings{%
+  bibliography     = {{Bibliografija}{Bibliografija}},
+  references       = {{Literatūros sąrašas}{Literatūra}},
+  shorthands       = {{Santrumpų sąrašas}{Santrumpos}},
+  editor           = {{sudarytojas}{sud\adddot}},
+  editors          = {{sudarytojai}{sud\adddot}},
+  compiler         = {{parengėjas}{pareng\adddot}},% FIXME: unsure
+  compilers        = {{parengėjai}{pareng\adddot}},% FIXME: unsure
+  redactor         = {{redaktorius}{red\adddot}},
+  redactors        = {{redaktoriai}{red\adddot}},
+  reviser          = {{korektorius}{kor\adddot}},
+  revisers         = {{korektoriai}{kor\adddot}},
+  founder          = {{pradininkas}{prad\adddot}},% FIXME: unsure
+  founders         = {{pradininkai}{prad\adddot}},% FIXME: unsure
+  continuator      = {{tęsėjas}{tęs\adddot}},
+  continuators     = {{tęsėjai}{tęs\adddot}},
+  collaborator     = {{bendradarbis}{bendr\adddot}},
+  collaborators    = {{bendradarbiai}{bendr\adddot}},
+  translator       = {{vertėjas}{vert\adddot}},
+  translators      = {{vertėjai}{vert\adddot}},
+  commentator      = {{komentarų autorius}{koment\adddotspace aut\adddot}},
+  commentators     = {{komentarų autoriai}{koment\adddotspace aut\adddot}},
+  annotator        = {{paaiškinimų autorius}{paaišk\adddotspace aut\adddot}},
+  annotators       = {{paaiškinimų autoriai}{paaišk\adddotspace aut\adddot}},
+  commentary       = {{komentarai}{koment\adddot}},
+  annotations      = {{paaiškinimai}{paaišk\adddot}},
+  introduction     = {{įvadas}{įv\adddot}},
+  foreword         = {{pratarmė}{prat\adddot}},
+  afterword        = {{pabaigos žodis}{pab\adddotspace žodis}},
+  editortr         = {{sudarytojas ir vertėjas}%
+                      {sud\adddotspace ir vert\adddot}},
+  editorstr        = {{sudarytojai ir vertėjai}%
+                      {sud\adddotspace ir vert\adddot}},
+  editorco         = {{sudarytojas ir komentarų autorius}%
+                      {sud\adddotspace ir koment\adddotspace aut\adddot}},
+  editorsco        = {{sudarytojai ir komentarų autoriai}%
+                      {sud\adddotspace ir koment\adddotspace aut\adddot}},
+  editoran         = {{sudarytojas ir paaiškinimų autorius}%
+                      {sud\adddotspace ir paaišk\adddotspace aut\adddot}},
+  editorsan        = {{sudarytojai ir paaiškinimų autoriai}%
+                      {sud\adddotspace ir paaišk\adddotspace aut\adddot}},
+  editorin         = {{sudarytojas ir įvado autorius}%
+                      {sud\adddotspace ir įv\adddotspace aut\adddot}},
+  editorsin        = {{sudarytojai ir įvado autoriai}%
+                      {sud\adddotspace ir įv\adddotspace aut\adddot}},
+  editorfo         = {{sudarytojas ir pratarmės autorius}%
+                      {sud\adddotspace ir prat\adddotspace aut\adddot}},
+  editorsfo        = {{sudarytojai ir pratarmės autoriai}%
+                      {sud\adddotspace ir prat\adddotspace aut\adddot}},
+  editoraf         = {{sudarytojas ir pabaigos žodžio autorius}%
+                      {sud\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+  editorsaf        = {{sudarytojai ir pabaigos žodžio autoriai}%
+                      {sud\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+  editortrco       = {{sudarytojas, vertėjas ir komentarų autorius}%
+                      {sud., vert\adddotspace ir koment\adddotspace aut\adddot}},
+  editorstrco      = {{sudarytojai, vertėjai ir komentarų autoriai}%
+                      {sud., vert\adddotspace ir koment\adddotspace aut\adddot}},
+  editortran       = {{sudarytojas, vertėjas ir paaiškinimų autorius}%
+                      {sud., vert\adddotspace ir paaišk\adddotspace aut\adddot}},
+  editorstran      = {{sudarytojai, vertėjai ir paaiškinimų autoriai}%
+                      {sud., vert\adddotspace ir paaišk\adddotspace aut\adddot}},
+  editortrin       = {{sudarytojas, vertėjas ir įvado autorius}%
+                      {sud., vert\adddotspace ir įv\adddotspace aut\adddot}},
+  editorstrin      = {{sudarytojai, vertėjai ir įvado autoriai}%
+                      {sud., vert\adddotspace ir įv\adddotspace aut\adddot}},
+  editortrfo       = {{sudarytojas, vertėjas ir pratarmės autorius}%
+                      {sud., vert\adddotspace ir pratarmės\adddotspace aut\adddot}},
+  editorstrfo      = {{sudarytojai, vertėjai ir pratarmės autoriai}%
+                      {sud., vert\adddotspace ir prat\adddotspace aut\adddot}},
+  editortraf       = {{sudarytojas, vertėjas ir pabaigos žodžio autorius}%
+                      {sud., vert\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+  editorstraf      = {{sudarytojai, vertėjai ir pabaigos žodžio autoriai}%
+                      {sud., vert\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+  editorcoin       = {{sudarytojas, komentarų ir įvado autorius}%
+                      {sud., koment\adddotspace ir įv\adddotspace aut\adddot}},
+  editorscoin      = {{sudarytojai, komentarų ir įvado autoriai}%
+                      {sud., koment\adddotspace ir įv\adddotspace aut\adddot}},
+  editorcofo       = {{sudarytojas, komentarų ir pratarmės autorius}%
+                      {sud., koment\adddotspace ir prat\adddotspace aut\adddot}},
+  editorscofo      = {{sudarytojai, komentarų ir pratarmės autoriai}%
+                      {sud., koment\adddotspace ir prat\adddotspace aut\adddot}},
+  editorcoaf       = {{sudarytojas, komentarų ir pabaigos žodžio autorius}%
+                      {sud., koment\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+  editorscoaf      = {{sudarytojai, komentarų ir pabaigos žodžio autoriai}%
+                      {sud., koment\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+  editoranin       = {{sudarytojas, paaiškinimų ir įvado autorius}%
+                      {sud., paaišk\adddotspace ir įv\adddotspace aut\adddot}},
+  editorsanin      = {{sudarytojai, paaiškinimų ir įvado autoriai}%
+                      {sud., paaišk\adddotspace ir įv\adddotspace aut\adddot}},
+  editoranfo       = {{sudarytojas, paaiškinimų ir pratarmės autorius}%
+                      {sud., paaišk\adddotspace ir prat\adddotspace aut\adddot}},
+  editorsanfo      = {{sudarytojai, paaiškinimų ir pratarmės autoriai}%
+                      {sud., paaišk\adddotspace ir prat\adddotspace aut\adddot}},
+  editoranaf       = {{sudarytojas, paaiškinimų ir pabaigos žodžio autorius}%
+                      {sud., paaišk\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+  editorsanaf      = {{sudarytojai, paaiškinimų ir pabaigos žodžio autoriai}%
+                      {sud., paaišk\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+  editortrcoin     = {{sudarytojas, vertėjas, komentarų ir įvado autorius}%
+                      {sud., vert., koment\adddotspace ir įv\adddotspace aut\adddot}},
+  editorstrcoin    = {{sudarytojai, vertėjai, komentarų ir įvado autoriai}%
+                      {sud., vert., koment\adddotspace ir įv\adddotspace aut\adddot}},
+  editortrcofo     = {{sudarytojas, vertėjas, komentarų ir pratarmės autorius}%
+                      {sud., vert., koment\adddotspace ir prat\adddotspace aut\adddot}},
+  editorstrcofo    = {{sudarytojai, vertėjai, komentarų ir pratarmės autoriai}%
+                      {sud., vert., koment\adddotspace ir prat\adddotspace aut\adddot}},
+  editortrcoaf     = {{sudarytojas, vertėjas, komentarų ir pabaigos žodžio autorius}%
+                      {sud., vert., koment\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+  editorstrcoaf    = {{sudarytojai, vertėjai, komentarų ir pabaigos žodžio autoriai}%
+                      {sud., vert., koment\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+  editortranin     = {{sudarytojas, vertėjas, paaiškinimų ir įvado autorius}%
+                      {sud., vert., paaišk\adddotspace ir įv\adddotspace aut\adddot}},
+  editorstranin    = {{sudarytojai, vertėjai, paaiškinimų ir įvado autoriai}%
+                      {sud., vert., paaišk\adddotspace ir įv\adddotspace aut\adddot}},
+  editortranfo     = {{sudarytojas, vertėjas, paaiškinimų ir pratarmės autorius}%
+                      {sud., vert., paaišk\adddotspace ir prat\adddotspace aut\adddot}},
+  editorstranfo    = {{sudarytojai, vertėjai, paaiškinimų ir pratarmės autoriai}%
+                      {sud., vert., paaišk\adddotspace ir prat\adddotspace aut\adddot}},
+  editortranaf     = {{sudarytojas, vertėjas, paaiškinimų ir pabaigos žodžio autorius}%
+                      {sud., vert., paaišk\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+  editorstranaf    = {{sudarytojai, vertėjai, paaiškinimų ir pabaigos žodžio autoriai}%
+                      {sud., vert., paaišk\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+  translatorco     = {{vertėjas ir komentarų autorius}%
+                      {vert\adddotspace ir koment\adddotspace aut\adddot}},
+  translatorsco    = {{vertėjai ir komentarų autoriai}%
+                      {vert\adddotspace ir koment\adddotspace aut\adddot}},
+  translatoran     = {{vertėjas ir paaiškinimų autorius}%
+                      {vert\adddotspace ir paaišk\adddotspace aut\adddot}},
+  translatorsan    = {{vertėjai ir paaiškinimų autoriai}%
+                      {vert\adddotspace ir paaišk\adddotspace aut\adddot}},
+  translatorin     = {{vertėjas ir įvado autorius}%
+                      {vert\adddotspace ir įv\adddotspace aut\adddot}},
+  translatorsin    = {{vertėjai ir įvado autoriai}%
+                      {vert\adddotspace ir įv\adddotspace aut\adddot}},
+  translatorfo     = {{vertėjas ir pratarmės autorius}%
+                      {vert\adddotspace ir prat\adddotspace aut\adddot}},
+  translatorsfo    = {{vertėjai ir pratarmės autoriai}%
+                      {vert\adddotspace ir prat\adddotspace aut\adddot}},
+  translatoraf     = {{vertėjas ir pabaigos žodžio autorius}%
+                      {vert\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+  translatorsaf    = {{vertėjai ir pabaigos žodžio autoriai}%
+                      {vert\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+  translatorcoin   = {{vertėjas, komentarų ir įvado autorius}%
+                      {vert., koment\adddotspace ir įv\adddotspace aut\adddot}},
+  translatorscoin  = {{vertėjai, komentarų ir įvado autoriai}%
+                      {vert., koment\adddotspace ir įv\adddotspace aut\adddot}},
+  translatorcofo   = {{vertėjas, komentarų ir pratarmės autorius}%
+                      {vert., koment\adddotspace ir prat\adddotspace aut\adddot}},
+  translatorscofo  = {{vertėjai, komentarų ir pratarmės autoriai}%
+                      {vert., koment\adddotspace ir prat\adddotspace aut\adddot}},
+  translatorcoaf   = {{vertėjas, komentarų ir pabaigos žodžio autorius}%
+                      {vert., koment\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+  translatorscoaf  = {{vertėjai, komentarų ir pabaigos žodžio autoriai}%
+                      {vert., koment\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+  translatoranin   = {{vertėjas, paaiškinimų ir įvado autorius}%
+                      {vert., paaišk\adddotspace ir įv\adddotspace aut\adddot}},
+  translatorsanin  = {{vertėjai, paaiškinimų ir įvado autoriai}%
+                      {vert., paaišk\adddotspace ir įv\adddotspace aut\adddot}},
+  translatoranfo   = {{vertėjas, paaiškinimų ir pratarmės autorius}%
+                      {vert., paaišk\adddotspace ir prat\adddotspace aut\adddot}},
+  translatorsanfo  = {{vertėjai, paaiškinimų ir pratarmės autoriai}%
+                      {vert., paaišk\adddotspace ir prat\adddotspace aut\adddot}},
+  translatoranaf   = {{vertėjas, paaiškinimų ir pabaigos žodžio autorius}%
+                      {vert., paaišk\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+  translatorsanaf  = {{vertėjai, paaiškinimų ir pabaigos žodžio autoriai}%
+                      {vert., paaišk\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+  organizer        = {{organizatorius}{org\adddot}},
+  organizers       = {{organizatoriai}{org\adddot}},
+  byorganizer      = {{organizavo}{org\adddot}},
+%  byauthor         = {{}{}}, %or sukūrė, or parašė
+  byeditor         = {{sudarė}{sud\adddotspace}},
+  bycompiler       = {{parengė}{pareng\adddotspace}},
+  byredactor       = {{redagavo}{red\adddotspace}},
+  byreviser        = {{tikrino}{tikr\adddotspace}},
+  byreviewer       = {{recenzavo}{rec\adddotspace}},
+  byfounder        = {{pradėjo}{prad\adddotspace}},
+  bycontinuator    = {{tęsė}{tęs\adddotspace}},
+  bycollaborator   = {{bendradarbiaujant su}{bendradarb\adddotspace su}},% FIXME: unsure
+  bytranslator     = {{\lbx at lfromlang išvertė}{\lbx at sfromlang vert\adddot}},
+  bycommentator    = {{komentarus parengė}{koment\adddot}},
+  byannotator      = {{paaiškinimus parengė}{paaišk\adddot}},
+  withcommentator  = {{komentarų autorius}{koment\adddotspace aut\adddot}},
+  withannotator    = {{paaiškinimų autorius}{paaišk\adddotspace aut\adddot}},
+  withintroduction = {{įvado autorius}{įv\adddotspace aut\adddot}},
+  withforeword     = {{pratarmės autorius}{prat\adddotspace aut\adddot}},
+  withafterword    = {{pabaigos žodžio autorius}{pab\adddotspace žodžio aut\adddot}},
+  byeditortr       = {{sudarė ir \lbx at lfromlang išvertė}%
+                      {sud\adddotspace ir \lbx at sfromlang vert\adddot}},
+  byeditorco       = {{sudarė ir komentarus parengė}%
+                      {sud\adddotspace ir koment\adddotspace parengė}},
+  byeditoran       = {{sudarė ir paaiškinimus parengė}%
+                      {sud\adddotspace ir paaišk\adddotspace parengė}},
+  byeditorin       = {{sudarė ir įvadą parašė}%
+                      {sud\adddotspace ir įv\adddotspace parašė}},
+  byeditorfo       = {{sudarė ir pratarmę parašė}%
+                      {sud\adddotspace ir prat\adddotspace parašė}},
+  byeditoraf       = {{sudarė ir pabaigos žodį parašė}%
+                      {sud\adddotspace ir pab\adddotspace žodį parašė}},
+  byeditortrco     = {{sudarė, \lbx at lfromlang išvertė ir komentarus parengė}%
+                      {sud., \lbx at sfromlang vert\adddotspace ir koment\adddotspace parengė}},
+  byeditortran     = {{sudarė, \lbx at lfromlang išvertė ir paaiškinimus parengė}%
+                      {sud., \lbx at sfromlang vert\adddotspace ir paaišk\adddotspace parengė}},
+  byeditortrin     = {{sudarė, \lbx at lfromlang išvertė ir įvadą parašė}%
+                      {sud., \lbx at sfromlang vert\adddotspace ir įv\adddotspace parašė}},
+  byeditortrfo     = {{sudarė, \lbx at lfromlang išvertė ir pratarmę parašė}%
+                      {sud., \lbx at sfromlang vert\adddotspace ir prat\adddotspace parašė}},
+  byeditortraf     = {{sudarė, \lbx at lfromlang išvertė ir pabaigos žodį parašė}%
+                      {sud., \lbx at sfromlang vert\adddotspace ir pab\adddotspace žodį parašė}},
+  byeditorcoin     = {{sudarė, komentarus parengė ir įvadą parašė}%
+                      {sud., koment\adddotspace ir įv\adddotspace parašė}},
+  byeditorcofo     = {{sudarė, komentarus parengė ir pratarmę parašė}%
+                      {sud., koment\adddotspace ir prat\adddotspace parašė}},
+  byeditorcoaf     = {{sudarė, komentarus parengė ir pabaigos žodį parašė}%
+                      {sud., koment\adddotspace ir pab\adddotspace žodį parašė}},
+  byeditoranin     = {{sudarė, paaiškinimus parengė ir įvadą parašė}%
+                      {sud., paaišk\adddotspace ir įv\adddotspace parašė}},
+  byeditoranfo     = {{sudarė, paaiškinimus parengė ir pratarmę parašė}%
+                      {sud., paaišk\adddotspace ir prat\adddotspace parašė}},
+  byeditoranaf     = {{sudarė, paaiškinimus parengė ir pabaigos žodį parašė}%
+                      {sud., paaišk\adddotspace ir pab\adddotspace žodį parašė}},
+  byeditortrcoin   = {{sudarė, \lbx at lfromlang išvertė, komentarus parengė ir įvadą parašė}%
+                      {sud., \lbx at sfromlang vert\adddot, koment\adddotspace ir įvad\adddotspace parašė}},
+  byeditortrcofo   = {{sudarė, \lbx at lfromlang išvertė, komentarus parengė ir pratarmę parašė}%
+                      {sud., \lbx at sfromlang vert\adddot, koment\adddotspace ir prat\adddotspace parašė}},
+  byeditortrcoaf   = {{sudarė, \lbx at lfromlang išvertė, komentarus ir pabaigos žodį parašė}%
+                      {sud., \lbx at sfromlang vert\adddot, koment\adddotspace ir pab\adddotspace žodį parašė}},
+  byeditortranin   = {{sudarė, \lbx at lfromlang išvertė, paaiškinimus parengė ir įvadą parašė}%
+                      {sud., \lbx at sfromlang vert\adddot, paaišk\adddotspace ir pab\adddotspace žodį parašė}},
+  byeditortranfo   = {{sudarė, \lbx at lfromlang išvertė, paaiškinimus parengė ir pratarmę parašė}%
+                      {sud., \lbx at sfromlang vert\adddot, paaišk\adddotspace ir prat\adddotspace parašė}},
+  byeditortranaf   = {{sudarė, \lbx at lfromlang išvertė, paaiškinimus parengė ir pabaigos žodį parašė}%
+                      {sud., \lbx at sfromlang vert\adddot, paaišk\adddotspace ir pab\adddotspace žodį parašė}},
+  bytranslatorco   = {{\lbx at lfromlang išvertė ir komentarus parengė}%
+                      {\lbx at sfromlang vert\adddotspace ir koment\adddotspace parengė}},
+  bytranslatoran   = {{\lbx at lfromlang išvertė ir paaiškinimus parengė}%
+                      {\lbx at sfromlang vert\adddotspace ir paaišk\adddotspace parengė}},
+  bytranslatorin   = {{\lbx at lfromlang išvertė ir įvadą parašė}%
+                      {\lbx at sfromlang vert\adddotspace ir įv\adddotspace parašė}},
+  bytranslatorfo   = {{\lbx at lfromlang išvertė ir pratarmę parašė}%
+                      {\lbx at sfromlang vert\adddotspace ir prat\adddotspace parašė}},
+  bytranslatoraf   = {{\lbx at lfromlang išvertė ir pabaigos žodį parašė}%
+                      {\lbx at sfromlang vert\adddotspace ir pab\adddotspace žodį parašė}},
+  bytranslatorcoin = {{\lbx at lfromlang išvertė, komentarus parengė ir įvadą parašė}%
+                      {\lbx at sfromlang vert\adddot, koment\adddotspace ir įv\adddotspace parašė}},
+  bytranslatorcofo = {{\lbx at lfromlang išvertė, komentarus parengė ir pratarmę parašė}%
+                      {\lbx at sfromlang vert\adddot, koment\adddotspace ir prat\adddotspace parašė}},
+  bytranslatorcoaf = {{\lbx at lfromlang išvertė, komentarus parengė ir pabaigos žodį parašė}%
+                      {\lbx at sfromlang vert\adddot, koment\adddotspace ir pab\adddotspace žodį parašė}},
+  bytranslatoranin = {{\lbx at lfromlang išvertė, paaiškinimus parengė ir įvadą parašė}%
+                      {\lbx at sfromlang vert\adddot, paaišk\adddotspace ir įv\adddotspace parašė}},
+  bytranslatoranfo = {{\lbx at lfromlang išvertė, paaiškinimus parengė ir pratarmę parašė}%
+                      {\lbx at sfromlang vert\adddot, paaišk\adddotspace ir prat\adddotspace parašė}},
+  bytranslatoranaf = {{\lbx at lfromlang išvertė, paaiškinimus parengė ir pabaigos žodį parašė}%
+                      {\lbx at sfromlang vert\adddot, paaišk\adddotspace ir pab\adddotspace žodį parašė}}, %
+  and              = {{ir}{ir}},
+  andothers        = {{ir kiti}{ir kt\adddot}},
+  andmore          = {{ir taip toliau}{ir t\adddotspace t\adddot}},
+  volume           = {{tomas}{t\adddot}},
+  volumes          = {{tomai}{t\adddot}},
+%  involumes        = {{}{}},
+  jourvol          = {{tomas}{t\adddot}},
+  jourser          = {{serija}{ser\adddot}},
+  book             = {{knyga}{kn\adddot}},
+  part             = {{dalis}{d\adddot}},
+  issue            = {{numeris}{Nr.}},
+  newseries        = {{nauja serija}{nauj\adddotspace ser\adddot}},
+  oldseries        = {{sena serija}{sen\adddotspace ser\adddot}},
+  edition          = {{leidimas}{leid\adddot}},
+  reprint          = {{pakartotinis leidimas}{pakartot\adddotspace leid\adddot}},
+  reprintof        = {{pakartotinis leidimas}{pakartot\adddotspace leid\adddot}},% FIXME: unsure
+  reprintas        = {{perspausdinta kaip}{perspausdinta kaip}},
+  reprintfrom      = {{perspausdinta iš}{perspausdinta iš}},
+  reviewof         = {{recenzija}{rec\adddotspace}},
+  translationof    = {{versta iš leidinio}{vert\adddotspace iš leid\adddot}},
+  translationas    = {{išversta kaip}{išversta kaip}},
+  translationfrom  = {{vertimas iš}{vert\adddotspace iš}},
+  origpubas        = {{originaliai publikuotas kaip}{orig\adddotspace publ\adddotspace kaip}},
+  origpubin        = {{originaliai publikuotas}{orig\adddotspace publ\adddotspace}},
+  astitle          = {{pavadinimu}{pavadinimu}},%or kaip
+  bypublisher      = {{leidykloje}{leidykloje}},% FIXME: unsure
+  page             = {{puslapis}{p\adddot}},
+  pages            = {{puslapiai}{p\adddot}},
+  column           = {{skiltis}{skilt\adddot}},
+  columns          = {{skiltys}{skilt\adddot}},
+  line             = {{eilutė}{eil\adddot}},
+  lines            = {{eilutės}{eil\adddot}},
+  nodate           = {{sine anno}{s\adddotspace a\adddot}},
+  verse            = {{eilutė}{eil\adddot}},
+  verses           = {{eilutės}{eil\adddot}},
+  section          = {{paragrafas}{paragr\adddot}},
+  sections         = {{paragrafai}{paragr\adddot}},
+  paragraph        = {{pastraipa}{pastr\adddot}},
+  paragraphs       = {{pastraipos}{pastr\adddot}},
+  pagetotal        = {{puslapis}{p\adddot}},
+  pagetotals       = {{puslapiai}{p\adddot}},
+  columntotal      = {{skiltis}{skilt\adddot}},
+  columntotals     = {{skiltys}{skilt\adddot}},
+  linetotal        = {{eilutė}{eil\adddot}},
+  linetotals       = {{eilutės}{eil\adddot}},
+  versetotal       = {{eilutė}{eil\adddot}},
+  versetotals      = {{eilutės}{eil\adddot}},
+  sectiontotal     = {{paragrafas}{paragr\adddot}},
+  sectiontotals    = {{paragrafai}{paragr\adddot}},
+  paragraphtotal   = {{pastraipa}{pastr\adddot}},
+  paragraphtotals  = {{pastraipos}{pastr\adddot}},
+  in               = {{in}{in}},
+%  inseries         = {{}{}},%or in
+  ofseries         = {{iš}{iš}},
+  number           = {{numeris}{Nr\adddot}},
+  chapter          = {{skyrius}{sk\adddot}},
+  bathesis         = {{bakalauro darbas}{bak\adddotspace darb\adddot}},
+  mathesis         = {{magistro darbas}{mag\adddotspace darb\adddot}},
+  phdthesis        = {{disertacija}{disert\adddot}},
+  candthesis       = {{disertacija}{disert\adddot}},
+  resreport        = {{mokslinė ataskaita}{moksl\adddotspace atask\adddot}},
+  techreport       = {{techninė ataskaita}{techn\adddotspace atask\adddot}},
+  software         = {{programinė įranga}{PĮ}},
+  datacd           = {{CD-ROM}{CD-ROM}},
+  audiocd          = {{audio CD}{audio CD}},
+  version          = {{versija}{vers\adddot}},
+  url              = {{interaktyvus}{interaktyvus}},
+  urlfrom          = {{pasiekiamas per}{pasiekiamas per}},
+  urlseen          = {{tikrinta}{tikrinta}},
+  inpreparation    = {{rengiamas}{rengiamas}},
+  submitted        = {{pateiktas}{pateiktas}},
+  forthcoming      = {{pasirodysiantis}{pasirodysiantis}},
+  inpress          = {{spaudoje}{spaudoje}},
+  prepublished     = {{išankstinė publikacija}{išankstinė publ\adddot}},
+  citedas          = {{nuo šiol cituojamas kaip}{nuo šiol}},
+  thiscite         = {{čia}{čia}},
+  seenote          = {{žiūrėk nuorodą}{žr\adddotspace nuor\adddot}},
+  quotedin         = {{cituota}{cituota}},
+  idem             = {{tas pats}{t\adddotspace p\adddot}},
+  idemsm           = {{tas pats}{t\adddotspace p\adddot}},
+  idemsf           = {{ta pati}{t\adddotspace p\adddot}},
+  idemsn           = {{tas pats}{t\adddotspace p\adddot}},
+  idempm           = {{tie patys}{t\adddotspace p\adddot}},
+  idempf           = {{tos pačios}{t\adddotspace p\adddot}},
+  idempn           = {{tie patys}{t\adddotspace p\adddot}},
+  idempp           = {{tie patys}{t\adddotspace p\adddot}},
+  ibidem           = {{ten pat}{ten pat}},
+  opcit            = {{op\adddotspace cit\adddot}{op\adddotspace cit\adddot}},
+  loccit           = {{loc\adddotspace cit\adddot}{loc\adddotspace cit\adddot}},
+  confer           = {{palygink}{plg\adddot}},
+  sequens          = {{ir sekantis}{ir kt\adddot}},
+  sequentes        = {{ir sekantys}{ir kt\adddot}},
+  passim           = {{passim}{pass\adddot}},
+  see              = {{žiūrėk}{žr\adddot}},
+  seealso          = {{taip pat žiūrėk}{t\adddotspace p\adddotspace žr\adddot}},
+  backrefpage      = {{cituota puslapyje}{cit\adddotspace psl\adddot}},
+  backrefpages     = {{cituota puslapiuose}{cit\adddotspace psl\adddot}},
+  january          = {{sausis}{saus\adddot}},
+  february         = {{vasaris}{vas\adddot}},
+  march            = {{kovas}{kov\adddot}},
+  april            = {{balandis}{bal\adddot}},
+  may              = {{gegužė}{geg\adddot}},
+  june             = {{birželis}{birž\adddot}},
+  july             = {{liepa}{liepa}},
+  august           = {{rugpjūtis}{rugpj\adddot}},
+  september        = {{rugsėjis}{rugs\adddot}},
+  october          = {{spalis}{spal\adddot}},
+  november         = {{lapkritis}{lapkr\adddot}},
+  december         = {{gruodis}{gruod\adddot}},
+  genjanuary       = {{sausio}{saus\adddot}},
+  genfebruary      = {{vasario}{vas\adddot}},
+  genmarch         = {{kovo}{kov\adddot}},
+  genapril         = {{balandžio}{bal\adddot}},
+  genmay           = {{gegužės}{geg\adddot}},
+  genjune          = {{birželio}{birž\adddot}},
+  genjuly          = {{liepos}{liep\adddot}},
+  genaugust        = {{rugpjūčio}{rugpj\adddot}},
+  genseptember     = {{rugsėjo}{rugs\adddot}},
+  genoctober       = {{spalio}{spal\adddot}},
+  gennovember      = {{lapkričio}{lapkr\adddot}},
+  gendecember      = {{gruodžio}{gruod\adddot}},
+  langamerican     = {{amerikiečių kalba}{amer\adddotspace k\adddot}},
+  langbrazilian    = {{brazilų kalba}{braz\adddotspace k\adddot}},
+  langbulgarian    = {{bulgarų kalba}{bulgarų k\adddot}},
+  langcatalan      = {{katalonų kalba}{katalonų k\adddot}},
+  langcroatian     = {{kroatų kalba}{kroatų k\adddot}},
+  langczech        = {{čekų kalba}{čekų k\adddot}},
+  langdanish       = {{danų kalba}{danų k\adddot}},
+  langdutch        = {{olandų kalba}{olandų k\adddot}},
+  langenglish      = {{anglų kalba}{anglų k\adddot}},
+  langestonian     = {{estų kalba}{estų k\adddot}},
+  langfinnish      = {{suomių kalba}{suomių k\adddot}},
+  langfrench       = {{prancūzų kalba}{pranc\adddotspace k\adddot}},
+  langgerman       = {{vokiečių kalba}{vok\adddotspace k\adddot}},
+  langgreek        = {{graikų kalba}{graikų k\adddot}},
+  langhungarian    = {{vengrų kalba}{vengrų k\adddot}},
+  langitalian      = {{italų kalba}{it\adddotspace k\adddot}},
+  langjapanese     = {{japonų kalba}{japonų k\adddot}},
+  langlatin        = {{lotynų kalba}{lot\adddotspace k\adddot}},
+  langlatvian      = {{latvių kalba}{latv\adddotspace k\adddot}},
+  langlithuanian   = {{lietuvių kalba}{liet\adddotspace k\adddot}},
+  langnorwegian    = {{norvegų kalba}{norv\adddotspace k\adddot}},
+  langpolish       = {{lenkų kalba}{lenkų k\adddot}},
+  langportuguese   = {{portugalų kalba}{portug\adddotspace k\adddot}},
+  langrussian      = {{rusų kalba}{rusų k\adddot}},
+  langserbian      = {{serbų kalba}{serbų k\adddot}},
+  langslovak       = {{slovakų kalba}{slovakų k\adddot}},
+  langslovene      = {{slovėnų kalba}{slovėnų k\adddot}},
+  langspanish      = {{ispanų kalba}{isp\adddotspace k\adddot}},
+  langswedish      = {{švedų kalba}{švedų k\adddot}},
+  langturkish      = {{turkų kalba}{turkų k\adddot}},
+  langukrainian    = {{ukrainiečių kalba}{ukrain\adddotspace k\adddot}},
+  fromamerican     = {{iš amerikiečių kalbos}{iš amer\adddotspace k\adddot}},
+  frombrazilian    = {{iš brazilų kalbos}{iš braz\adddotspace k\adddot}},
+  frombulgarian    = {{iš bulgarų kalbos}{iš bulgarų k\adddot}},
+  fromcatalan      = {{iš katalonų kalbos}{iš katalonų k\adddot}},
+  fromcroatian     = {{iš kroatų kalbos}{iš kroatų k\adddot}},
+  fromczech        = {{iš čekų kalbos}{iš čekų k\adddot}},
+  fromdanish       = {{iš danų kalbos}{iš danų k\adddot}},
+  fromdutch        = {{iš olandų kalbos}{iš olandų k\adddot}},
+  fromenglish      = {{iš anglų kalbos}{iš anglų k\adddot}},
+  fromestonian     = {{iš estų kalbos}{iš estų k\adddot}},
+  fromfinnish      = {{iš suomių kalbos}{iš suomių k\adddot}},
+  fromfrench       = {{iš prancūzų kalbos}{iš pranc\adddotspace k\adddot}},
+  fromgerman       = {{iš vokiečių kalbos}{iš vok\adddotspace k\adddot}},
+  fromgreek        = {{iš graikų kalbos}{iš graikų k\adddot}},
+  fromhungarian    = {{iš vengrų kalbos}{iš vengrų k\adddot}},
+  fromitalian      = {{iš italų kalbos}{iš italų k\adddot}},
+  fromjapanese     = {{iš japonų kalbos}{iš japonų k\adddot}},
+  fromlatin        = {{iš lotynų kalbos}{iš lot\adddotspace k\adddot}},
+  fromlatvian      = {{iš latvių kalbos}{iš latvių k\adddot}},
+  fromnorwegian    = {{iš norvegų kalbos}{iš norv\adddotspace k\adddot}},
+  frompolish       = {{iš lenkų kalbos}{iš lenkų k\adddot}},
+  fromportuguese   = {{iš portugalų kalbos}{iš portug\adddotspace k\adddot}},
+  fromrussian      = {{iš rusų kalbos}{iš rusų k\adddot}},
+  fromserbian      = {{iš serbų kalbos}{iš serbų k\adddot}},
+  fromslovak       = {{iš slovakų kalbos}{iš slovakų k\adddot}},
+  fromslovene      = {{iš slovėnų kalbos}{iš slovėnų k\adddot}},
+  fromspanish      = {{iš ispanų kalbos}{iš isp\adddotspace k\adddot}},
+  fromswedish      = {{iš švedų kalbos}{iš švedų k\adddot}},
+  fromturkish      = {{iš turkų kalbos}{iš turkų k\adddot}},
+  fromukrainian    = {{iš ukrainiečių kalbos}{iš ukrain\adddotspace k\adddot}},
+  countryde        = {{Vokietija}{DE}},
+  countryeu        = {{Europos Sąjunga}{EU}},
+  countryep        = {{Europos Sąjunga}{EP}},
+  countryfr        = {{Prancūzija}{FR}},
+  countryuk        = {{Didžioji Britanija}{DB}},
+  countryus        = {{Jungtinės Amerikos Valstijos}{JAV}},
+  patent           = {{patentas}{pat\adddot}},
+  patentde         = {{vokiškas patentas}{vokiškas pat\adddot}},
+  patenteu         = {{europinis patentas}{europinis pat\adddot}},
+  patentfr         = {{prancūziškas patentas}{prancūziškas pat\adddot}},
+  patentuk         = {{angliškas patentas}{angliškas pat\adddot}},
+  patentus         = {{JAV\addspace patentas}{JAV\addspace pat\adddot}},
+  patreq           = {{patento prašymas}{pat\adddotspace praš\adddot}},
+  patreqde         = {{vokiško patento prašymas}{vokiško pat\adddotspace praš\adddot}},
+  patreqeu         = {{europinio patento prašymas}{europinio pat\adddotspace praš\adddot}},
+  patreqfr         = {{prancūziško patento prašymas}{prancūziško pat\adddotspace praš\adddot}},
+  patrequk         = {{angliško patento prašymas}{angliško pat\adddotspace praš\adddot}},
+  patrequs         = {{JAV\addspace patento prašymas}{JAV\addspace pat\adddot\ praš\adddot}},
+  file             = {{byla}{b\adddot}},
+  library          = {{biblioteka}{bibl\adddot}},
+  abstract         = {{santrauka}{santr\adddot}},
+  annotation       = {{paaiškinimas}{paaišk\adddot}},
+  commonera        = {{mūsų eros}{m\adddotspace e\adddot}},
+  beforecommonera  = {{prieš mūsų erą}{pr\adddotspace m\adddotspace e\adddot}},
+  annodomini       = {{po Kristaus gimimo}{po\space Kr\adddot}},
+  beforechrist     = {{prieš Kristaus giminimą}{pr\adddotspace Kr\adddot}},
+  circa            = {{apie}{apie}},
+  spring           = {{pavasaris}{pav\adddot}},
+  summer           = {{vasara}{vas\adddot}},
+  autumn           = {{ruduo}{ruduo}},
+  winter           = {{žiema}{žiema}},
+%  am               = {{}{}},
+%  pm               = {{}{}},
+  year             = {{m\adddot}{m\adddot}},
+  month            = {{mėn\adddot}{mėn\adddot}},
+  day              = {{d\adddot}{d\adddot}},
+}
+
+
+\protected\gdef\lbx at lt@mkgenmonth#1{%
+  \ifcase0#1\relax
+    #1\BibliographyWarning{Month out of range}%
+  \or\abx at bibmonth{genjanuary}%
+  \or\abx at bibmonth{genfebruary}%
+  \or\abx at bibmonth{genmarch}%
+  \or\abx at bibmonth{genapril}%
+  \or\abx at bibmonth{genmay}%
+  \or\abx at bibmonth{genjune}%
+  \or\abx at bibmonth{genjuly}%
+  \or\abx at bibmonth{genaugust}%
+  \or\abx at bibmonth{genseptember}%
+  \or\abx at bibmonth{genoctober}%
+  \or\abx at bibmonth{gennovember}%
+  \or\abx at bibmonth{gendecember}%
+  \else
+    #1\BibliographyWarning{Month out of range}%
+  \fi}%
+
+\protected\gdef\lbx at lt@ifdayrange at i#1{%
+  \ifboolexpr{not test {\iffieldundef{#1endyear}}
+              and test {\iffieldsequal{#1year}{#1endyear}}
+              and test {\iffieldsequal{#1month}{#1endmonth}}
+              and (test {\iffieldundef{#1hour}}
+                   or not togl {blx@#1dateusetime})}}
+
+\protected\gdef\lbx at lt@ifmonthrange at i#1{%
+  \ifboolexpr{not test {\iffieldundef{#1endyear}}
+              and test {\iffieldsequal{#1year}{#1endyear}}
+              and test {\iffieldundef{#1day}}
+              and test {\iffieldundef{#1endday}}}}
+
+\protected\gdef\lbx at lt@ifyearrange at i#1{%
+  \ifboolexpr{not test {\iffieldundef{#1endyear}}
+              and test {\iffieldundef{#1month}}
+              and test {\iffieldundef{#1endmonth}}}}
+
+\gdef\lbx at lt@ifdatenumrange{%
+  \lbx at lt@ifyearrange
+    {\@firstoftwo}
+    {\lbx at lt@ifdayrange}}
+
+\protected\gdef\lbx at lt@mkdaterangetrunc#1#2{%
+  \blx at if@printanytimes{#2}
+    {\mkdaterangefull{#1}{#2}}
+    {\lbx at lt@mkdaterangetrunc at i{#1}{#2}}}
+
+\protected\gdef\lbx at lt@mkdaterangetrunc at i#1#2{%
+  \begingroup
+    \blx at metadateinfo{#2}%
+    \edef\lbx at lt@ifdayrange{\lbx at lt@ifdayrange at i{#2}}%
+    \edef\lbx at lt@ifmonthrange{\lbx at lt@ifmonthrange at i{#2}}%
+    \edef\lbx at lt@ifyearrange{\lbx at lt@ifyearrange at i{#2}}%
+    \iffieldundef{#2year}
+      {}
+      {\printtext[{#2date}]{%
+         \datecircaprint
+         \iffieldundef{#2season}
+           {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}%
+            \blx at printtime{#2}{}}%
+           {\csuse{mkbibseasondate#1}{#2year}{#2season}}%
+         \dateeraprint{#2year}%
+         \dateuncertainprint
+         \iffieldundef{#2endyear}
+           {}
+           {\iffieldequalstr{#2endyear}{}
+              {\mbox{\csuse{lbx at lt@bibdaterangesep#1}}}
+              {\lbx at lt@ifdatenumrange
+                 {\csuse{lbx at lt@bibnumdaterangesep#1}}
+                 {\csuse{lbx at lt@bibdaterangesep#1}}%
+               \let\lbx at lt@ifdropdaystring\@secondoftwo
+               \let\lbx at lt@ifdropmonthstring\@secondoftwo
+               \let\lbx at lt@ifdropyearstring\@secondoftwo
+               \enddatecircaprint
+               \iffieldundef{#2season}
+                 {\iffieldsequal{#2year}{#2endyear}
+                   {\iffieldsequal{#2month}{#2endmonth}
+                      {\csuse{mkbibdate#1}{}{}{#2endday}}
+                      {\csuse{mkbibdate#1}{}{#2endmonth}{#2endday}}}
+                   {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}%
+                  \blx at printtime{#2}{end}}
+                 {\iffieldsequal{#2year}{#2endyear}
+                    {\csuse{mkbibseasondate#1}{}{#2endseason}}
+                    {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}%
+               \enddateuncertainprint
+               \dateeraprint{#2endyear}}}}}%
+  \endgroup}
+
+\protected\gdef\lbx at lt@mkdaterangetruncextra#1#2{%
+  \blx at if@printanytimes{#2}
+    {\mkdaterangefullextra{#1}{#2}}
+    {\lbx at lt@mkdaterangetruncextra at i{#1}{#2}}}
+
+\protected\gdef\lbx at lt@mkdaterangetruncextra at i#1#2{%
+  \begingroup
+    \blx at metadateinfo{#2}%
+    \edef\lbx at lt@ifdayrange{\lbx at lt@ifdayrange at i{#2}}%
+    \edef\lbx at lt@ifmonthrange{\lbx at lt@ifmonthrange at i{#2}}%
+    \edef\lbx at lt@ifyearrange{\lbx at lt@ifyearrange at i{#2}}%
+    \iffieldundef{#2year}
+      {}
+      {\printtext[{#2date}]{%
+         \datecircaprint
+         \iffieldundef{#2season}
+           {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}%
+            \blx at printtime{#2}{}}%
+           {\csuse{mkbibseasondate#1}{#2year}{#2season}}%
+         \dateeraprint{#2year}%
+         \dateuncertainprint
+         \iffieldundef{#2endyear}
+           {\printfield{extradate}}
+           {\iffieldequalstr{#2endyear}{}
+              {\printfield{extradate}%
+               \mbox{\csuse{lbx at lt@bibdaterangesep#1}}}
+              {\lbx at lt@ifdatenumrange
+                 {\csuse{lbx at lt@bibnumdaterangesep#1}}
+                 {\csuse{lbx at lt@bibdaterangesep#1}}%
+               \let\lbx at lt@ifdropdaystring\@secondoftwo
+               \let\lbx at lt@ifdropmonthstring\@secondoftwo
+               \let\lbx at lt@ifdropyearstring\@secondoftwo
+               \enddatecircaprint
+               \iffieldundef{#2season}
+                 {\iffieldsequal{#2year}{#2endyear}
+                   {\iffieldsequal{#2month}{#2endmonth}
+                      {\csuse{mkbibdate#1}{}{}{#2endday}}
+                      {\csuse{mkbibdate#1}{}{#2endmonth}{#2endday}}}
+                   {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}%
+                  \blx at printtime{#2}{end}}
+                 {\iffieldsequal{#2year}{#2endyear}
+                    {\csuse{mkbibseasondate#1}{}{#2endseason}}
+                    {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}%
+               \printfield{extradate}%
+               \enddateuncertainprint
+               \dateeraprint{#2endyear}}}}}%
+  \endgroup}
+
+\protected\gdef\lbx at lt@mkdaterangefull#1#2{%
+  \begingroup
+    \blx at metadateinfo{#2}%
+    \iffieldundef{#2year}
+      {\blx at nounit}
+      {\printtext[{#2date}]{%
+         \datecircaprint
+         % Such a season component can only come from an ISO8601 season which replaces
+         % a normal month so if it exists, we know that a normal date print is ruled out
+         \iffieldundef{#2season}
+           {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}%
+            % Optionally print the time after the date
+            \blx at printtime{#2}{}}
+           {\csuse{mkbibseasondate#1}{#2year}{#2season}}%
+         \dateuncertainprint
+         \dateeraprint{#2year}%
+         \iffieldundef{#2endyear}
+           {}
+           {\iffieldequalstr{#2endyear}{}
+              {\mbox{\csuse{lbx at lt@bibdaterangesep#1}}}
+              {\csuse{lbx at lt@bibdaterangesep#1}%
+               \enddatecircaprint
+               \iffieldundef{#2endseason}
+                 {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}%
+                  % Optionally print the time after the date
+                  \blx at printtime{#2}{end}}
+                 {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}%
+               \enddateuncertainprint
+               \dateeraprint{#2endyear}}}}}%
+  \endgroup}
+
+\protected\gdef\lbx at lt@mkdaterangefullextra#1#2{%
+  \begingroup
+    \blx at metadateinfo{#2}%
+    \iffieldundef{#2year}
+      {\blx at nounit}
+      {\printtext[{#2date}]{%
+         \datecircaprint
+         % Such a season component can only come from an ISO8601 season which replaces
+         % a normal month so if it exists, we know that a normal date print is ruled out
+         \iffieldundef{#2season}
+           {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}%
+            % Optionally print the time after the date
+            \blx at printtime{#2}{}}
+           {\csuse{mkbibseasondate#1}{#2year}{#2season}}%
+         \dateuncertainprint
+         \dateeraprint{#2year}%
+         \iffieldundef{#2endyear}
+           {\printfield{extradate}}
+           {\iffieldequalstr{#2endyear}{}
+              {\printfield{extradate}%
+               \mbox{\csuse{lbx at lt@bibdaterangesep#1}}}
+              {\csuse{lbx at lt@bibdaterangesep#1}%
+               \enddatecircaprint
+               \iffieldundef{#2endseason}
+                 {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}%
+                  % Optionally print the time after the date
+                  \blx at printtime{#2}{end}}
+                 {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}%
+               \printfield{extradate}%
+               \enddateuncertainprint
+               \dateeraprint{#2endyear}}}}%
+  \endgroup}
+
+\endinput

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/magyar.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/magyar.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/magyar.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -29,7 +29,8 @@
   \protected\def\mkbibmascord{\mkbibordinal}%
   \protected\def\mkbibfemord{\mkbibordinal}%
   \protected\def\mkbibneutord{\mkbibordinal}%
-  \let\lbx at hu@dayrange\@secondoftwo
+  \let\lbx at hu@ifdayrange\@secondoftwo
+  \def\lbx at hu@ifplainday{\lbx at hu@ifdayrange}%
   \protected\def\mkbibdatelong#1#2#3{%
     \iffieldundef{#1}
       {}
@@ -45,7 +46,7 @@
        \iffieldundef{#3}{}{\nobreakspace}}%
     \iffieldundef{#3}
       {}
-      {\lbx at hu@dayrange{\thefield{#3}}{\mkbibordinal{\thefield{#3}}}}%
+      {\lbx at hu@ifplainday{\thefield{#3}}{\mkbibordinal{\thefield{#3}}}}%
   }%
   \protected\def\mkbibdateshort#1#2#3{%
     \iffieldundef{#1}
@@ -62,7 +63,7 @@
        \iffieldundef{#3}{}{\nobreakspace}}%
     \iffieldundef{#3}
       {}
-      {\mkdayzeros{\thefield{#3}}\lbx at hu@dayrange{}{\adddot}}%
+      {\mkdayzeros{\thefield{#3}}\lbx at hu@ifdayrange{}{\adddot}}%
   }%
   \let\mkbibseasondatelong\mkbibseasondateshort
   \savecommand\mkdaterangecomp
@@ -77,14 +78,18 @@
     \lbx at hu@mkdaterangetruncextra{long}}%
   \protected\def\mkdaterangeterseextra{%
     \lbx at hu@mkdaterangetruncextra{short}}%
-\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+  \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%
@@ -91,7 +96,7 @@
   \csletcs{mkbibtime12h}{mkbibtime24h}%
   \protected\def\mkbibseasondateshort#1#2{%
     \dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}%
-    \iffieldundef{#1}{}{\adddot\space}
+    \iffieldundef{#1}{}{\adddot\space}%
     \mkbibseason{\thefield{#2}}%
   }%
   \let\mkbibseasondatelong\mkbibseasondateshort
@@ -111,7 +116,7 @@
   % this redefines \mkpageprefix to put the page number as suffix
   \savecommand\blx at mkpageprefix
   \protected\long\def\blx at mkpageprefix#1[#2]#3{%
-    \blx at mkpageprefix@i[#2]{#3}%
+    \blx at mkpageprefix@i[{#2}]{#3}%
     \ifnumeral{#3}
       {\ppspace\bibstring{#1}}
       {\ifnumerals{#3}
@@ -139,12 +144,12 @@
     \mkpageprefix[pagination][\lbx at hu@mkdottednormrange]{#1}}%
   \savefieldformat{chapter}%
   \DeclareFieldFormat{chapter}{%
-    \ifnumerals{#1}{\mkbibordinal{#1}}{#1}
+    \ifnumerals{#1}{\mkbibordinal{#1}}{#1}%
     \addnbspace
     \bibstring{chapter}}%
   \savefieldformat{volume}%
   \DeclareFieldFormat{volume}{%
-    \ifnumerals{#1}{\mkbibordinal{#1}}{#1}
+    \ifnumerals{#1}{\mkbibordinal{#1}}{#1}%
     \addnbspace
     \bibstring{volume}}%
   \savefieldformat{part}%
@@ -160,7 +165,7 @@
     \bibstring{part}}%
   \savefieldformat{version}%
   \DeclareFieldFormat{version}{%
-    \ifnumerals{#1}{\mkbibordinal{#1}}{#1}
+    \ifnumerals{#1}{\mkbibordinal{#1}}{#1}%
     \addnbspace
     \bibstring{version}}%
 }
@@ -462,7 +467,7 @@
 % translationfrom  = {{}{}},% FIXME need example
   reviewof         = {{recenzi\'oja}{rec\adddot}},% FIXME swap word order
   origpubas        = {{eredeti c\'ime}{ered\adddotspace c\'im}},
-  origpubin        = {{eredeti kiad\'as}{ered\adddotspace kiad\adddotspace}},
+  origpubin        = {{eredeti kiad\'as}{ered\adddotspace kiad\adddot}},
 % astitle          = {{}{}},% FIXME need example
 % bypublisher      = {{\addcomma}{\addcomma}},% FIXME: this is a cludge that can not be guaranteed to work in most situations, so it stays commented out
   nodate           = {{\'ev n\'elk\"ul}{\'e\adddotspace n\adddot}},
@@ -641,7 +646,7 @@
   pm               = {{d\'elut\'an}{du\adddot}},
 }
 
-\protected\gdef\lbx at hu@dayrange at i#1{%
+\protected\gdef\lbx at hu@ifdayrange at i#1{%
   \ifboolexpr{not test {\iffieldundef{#1endyear}}
               and test {\iffieldsequal{#1year}{#1endyear}}
               and test {\iffieldsequal{#1month}{#1endmonth}}
@@ -656,10 +661,10 @@
 \protected\gdef\lbx at hu@mkdaterangetrunc at i#1#2{%
   \begingroup
     \blx at metadateinfo{#2}%
-    \edef\lbx at hu@dayrange{\lbx at hu@dayrange at i{#2}}%
+    \edef\lbx at hu@ifdayrange{\lbx at hu@ifdayrange at i{#2}}%
     \iffieldundef{#2year}
       {}
-      {\printtext[#2date]{%
+      {\printtext[{#2date}]{%
          \datecircaprint
          \iffieldundef{#2season}
            {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}%
@@ -671,8 +676,8 @@
            {}
            {\iffieldequalstr{#2endyear}{}
               {\mbox{\bibdaterangesep}}
-              {\lbx at hu@dayrange{\bibrangedash}{\bibdaterangesep}%
-               \let\lbx at hu@dayrange\@secondoftwo
+              {\lbx at hu@ifdayrange{\bibrangedash}{\bibdaterangesep}%
+               \let\lbx at hu@ifplainday\@secondoftwo
                \enddatecircaprint
                \iffieldundef{#2season}
                  {\iffieldsequal{#2year}{#2endyear}
@@ -696,10 +701,10 @@
 \protected\gdef\lbx at hu@mkdaterangetruncextra at i#1#2{%
   \begingroup
     \blx at metadateinfo{#2}%
-    \edef\lbx at hu@dayrange{\lbx at hu@dayrange at i{#2}}%
+    \edef\lbx at hu@ifdayrange{\lbx at hu@ifdayrange at i{#2}}%
     \iffieldundef{#2year}
       {}
-      {\printtext[#2date]{%
+      {\printtext[{#2date}]{%
          \datecircaprint
          \iffieldundef{#2season}
            {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}%
@@ -712,8 +717,8 @@
            {\iffieldequalstr{#2endyear}{}
               {\printfield{extradate}%
                \mbox{\bibdaterangesep}}
-              {\lbx at hu@dayrange{\bibrangedash}{\bibdaterangesep}%
-               \let\lbx at hu@dayrange\@secondoftwo
+              {\lbx at hu@ifdayrange{\bibrangedash}{\bibdaterangesep}%
+               \let\lbx at hu@ifplainday\@secondoftwo
                \enddatecircaprint
                \iffieldundef{#2season}
                  {\iffieldsequal{#2year}{#2endyear}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/norsk.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/norsk.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/norsk.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -36,13 +36,17 @@
       {\bibstring{\thefield{#1}}}
       {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/polish.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/polish.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/polish.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -44,13 +44,17 @@
   \def\mkbibordedition{\mkbibneutord}%
   \def\mkbibordseries{\mkbibfemord}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/portuguese.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/portuguese.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/portuguese.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -43,13 +43,17 @@
   \def\mkbibordedition{\mkbibfemord}%
   \def\mkbibordseries{\mkbibfemord}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/russian.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/russian.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/russian.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -9,7 +9,7 @@
   {}
   {\PackageError{biblatex}
      {Russian requires UTF-8 support}
-     {The 'russian.lbx' file requires UTF-8 encoding but you
+     {The file 'russian.lbx' requires UTF-8 encoding but you
       seem\MessageBreak to be using a different encoding.
       This is a fatal error. I will\MessageBreak abort loading
       russian.lbx now.}%
@@ -70,13 +70,17 @@
   \def\mkbibordedition{\mkbibneutord}%
   \def\mkbibordseries{\mkbibfemord}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%

Added: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/serbian.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/serbian.lbx	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/serbian.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -0,0 +1,440 @@
+\ProvidesFile{serbian.lbx}
+[\abx at lbxid]
+
+% Translator's notes:
+%
+% This file is generated from a template and YAML localization string
+% collection by a script
+% You can said files at https://gitlab.com/andrejr/biblatex-serbian.
+% Please don't modify this file by hand -- contribute your changes upstream and
+% then send a pull request with the generated file to the official biblatex
+% repo (https://github.com/plk/biblatex).
+%
+% This is done so we could generate both `serbian.lbx` (Latin) and
+% `serbianc.lbx` (Cyrillic) from the same set of localization strings.
+
+
+\DeclareRedundantLanguages{serbian}{serbian}
+
+\DeclareBibliographyExtras{%
+  \protected\def\bibrangedash{\textendash\penalty\hyphenpenalty}%
+  \protected\def\mkbibordinal#1{\stripzeros{#1}\adddot}%
+  \protected\def\mkbibmascord{\mkbibordinal}%
+  \protected\def\mkbibfemord{\mkbibordinal}%
+  \protected\def\mkbibneutord{\mkbibordinal}%
+  \protected\def\bibtimesep{.}%
+  %\savecommand\mkbibordedition
+  %\savecommand\mkbibordseries
+  \def\mkbibordedition{\mkbibordinal}%
+  \def\mkbibordseries{\mkbibfemord}%
+  \protected\def\mkbibdatelong#1#2#3{%
+    % day field
+    \iffieldundef{#3}{}{\mkbibordinal{\thefield{#3}}% if day exists, display
+      \iffieldundef{#2}{}{\nobreakspace}}% space before month if month exists
+    % month field
+    \iffieldundef{#2}{}{\mkbibmonth{\thefield{#2}}%
+      \iffieldundef{#1}{}{\space}}% space before year if year exists
+    % year field
+    \iffieldbibstring{#1}% year
+    {\bibstring{\thefield{#1}}}%
+    {\dateeraprintpre{#1}\mkbibordinal{\thefield{#1}}}}%
+  \protected\def\mkbibdateshort#1#2#3{%
+    \iffieldundef{#3}{}{\mkbibordinal{\thefield{#3}}%
+      \iffieldundef{#2}{}{\addnbspace}}%
+    \iffieldundef{#2}{}{\mkbibordinal{\thefield{#2}}%
+      \iffieldundef{#1}{}{\addnbspace}}%
+    \iffieldbibstring{#1}{\bibstring{\thefield{#1}}}%
+    {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}\adddot}}%
+  \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
+      \iffieldundef{#4}{}
+        {\bibtimezonesep
+         \mkbibtimezone{\thefield{#4}}}}%
+  \expandafter\protected\expandafter\def\csname mkbibtime12h%
+  \endcsname#1#2#3#4{%
+    \stripzeros{\mktimehh{\thefield{#1}}}\bibtimesep%
+    \forcezerosmdt{\thefield{#2}}%
+    \iffieldundef{#3}{}
+    {\bibtimesep%
+      \forcezerosmdt{\thefield{#3}}}%
+    \space
+    \ifnumless{\thefield{#1}}{12}
+    {\bibstring{am}}
+    {\bibstring{pm}}%
+    \iffieldundef{#4}{}
+    {\space\bibtimezonesep%
+      \parentext{\mkbibtimezone{\thefield{#4}}}}}%
+  \protected\def\mkbibseasondateshort#1#2{%
+    \mkbibseason{\thefield{#2}}%
+    \iffieldundef{#1}{}{\space}%
+    \dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}\adddot}%
+  \protected\def\mkbibseasondatelong#1#2{%
+    \mkbibseason{\thefield{#2}}%
+    \iffieldundef{#1}{}{\space}%
+    \dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}\adddot}%
+}
+
+\DeclareBibliographyStrings{%
+    abstract = {{apstrakt}{apstrakt}},
+    afterword = {{pogovor}{pogovor}},
+    am = {{AM}{AM}},
+    and = {{i}{i}},
+    andmore = {{i drugi}{i\addabbrvspace dr\adddot}},
+    andothers = {{i drugi}{i\addabbrvspace dr\adddot}},
+    annodomini = {{posle Hrista}{p\adddotspace Hr\adddot}},
+    annotation = {{bele\v ska}{bel\adddot}},
+    annotations = {{bele\v ske}{bel\adddot}},
+    annotator = {{autor bele\v zaka}{aut\adddot\ bel\adddot}},
+    annotators = {{autori bele\v zaka}{aut\adddot\ bel\adddot}},
+    april = {{april}{apr\adddot}},
+    astitle = {{pod naslovom}{pod naslovom}},
+    audiocd = {{audio CD}{audio CD}},
+    august = {{avgust}{avg\adddot}},
+    autumn = {{jesen}{jesen}},
+    backrefpage = {{citirano na stranici}{cit\adddot\ na str\adddot}},
+    backrefpages = {{citirano na stranicama}{cit\adddot\ na str\adddot}},
+    bathesis = {{ba\v celor rad}{BA\addabbrvspace rad}},
+    beforechrist = {{pre Hrista}{pr\adddotspace Hr\adddot}},
+    beforecommonera = {{pre nove ere}{pre\addabbrvspace n\adddotspace e\adddot}},
+    bibliography = {{Bibliografija}{Bibliografija}},
+    book = {{knjiga}{knj\adddot}},
+    byannotator = {{autor bele\v zaka}{autor bele\v zaka}},
+    byauthor = {{autor}{autor}},
+    bycollaborator = {{u saradnji sa}{u saradnji sa}},
+    bycommentator = {{komentar}{komentar}},
+    bycompiler = {{odabir}{odabir}},
+    bycontinuator = {{autor nastavka}{autor nastavka}},
+    byeditor = {{urednik}{urednik}},
+    byeditoraf = {{obrada i pogovor}{obrada i pogovor}},
+    byeditoran = {{obrada i bele\v ske}{obrada i bele\v ske}},
+    byeditoranaf = {{obrada, bele\v ske i pogovor}{obrada, bele\v ske i pogovor}},
+    byeditoranfo = {{obrada, bele\v ske i predgovor}{obrada, bele\v ske i predgovor}},
+    byeditoranin = {{obrada, bele\v ske i uvod}{obrada, bele\v ske i uvod}},
+    byeditorco = {{obrada  i komentar}{obrada  i komentar}},
+    byeditorcoaf = {{obrada, komentar i pogovor}{obrada, komentar i pogovor}},
+    byeditorcofo = {{obrada, komentar i predgovor}{obrada, komentar i predgovor}},
+    byeditorcoin = {{obrada, komentar i uvod}{obrada, komentar i uvod}},
+    byeditorfo = {{obrada i predgovor}{obrada i predgovor}},
+    byeditorin = {{obrada i uvod}{obrada i uvod}},
+    byeditortr = {{obrada i prevod}{obrada i prevod}},
+    byeditortraf = {{obrada, prevod i pogovor}{obrada, prevod i pogovor}},
+    byeditortran = {{obrada, prevod i bele\v ske}{obrada, prevod i bele\v ske}},
+    byeditortranaf = {{obrada, prevod, bele\v ske i pogovor}{obrada, prevod, bele\v ske i pogovor}},
+    byeditortranfo = {{obrada, prevod, bele\v ske i predgovor}{obrada, prevod, bele\v ske i predgovor}},
+    byeditortranin = {{obrada, prevod, bele\v ske i uvod}{obrada, prevod, bele\v ske i uvod}},
+    byeditortrco = {{obrada, prevod i komentar}{obrada, prevod i komentar}},
+    byeditortrcoaf = {{obrada, prevod, komentar i pogovor}{obrada, prevod, komentar i pogovor}},
+    byeditortrcofo = {{obrada, prevod, komentar i predgovor}{obrada, prevod, komentar i predgovor}},
+    byeditortrcoin = {{obrada, prevod, komentar i uvod}{obrada, prevod, komentar i uvod}},
+    byeditortrfo = {{obrada, prevod i predgovor}{obrada, prevod i predgovor}},
+    byeditortrin = {{obrada, prevod i uvod}{obrada, prevod i uvod}},
+    byfounder = {{osniva\v c}{osniva\v c}},
+    byorganizer = {{organizator}{organizator}},
+    bypublisher = {{izdava\v c}{izdava\v c}},
+    byredactor = {{redaktor}{redaktor}},
+    byreviewer = {{recenzent}{recenzent}},
+    byreviser = {{korektor}{korektor}},
+    bytranslator = {{prevod}{prevod}},
+    bytranslatoraf = {{prevod i pogovor}{prevod i pogovor}},
+    bytranslatoran = {{prevod i bele\v ske}{prevod i bele\v ske}},
+    bytranslatoranaf = {{prevod, bele\v ske i pogovor}{prevod, bele\v ske i pogovor}},
+    bytranslatoranfo = {{prevod, bele\v ske i predgovor}{prevod, bele\v ske i predgovor}},
+    bytranslatoranin = {{prevod, bele\v ske i uvod}{prevod, bele\v ske i uvod}},
+    bytranslatorco = {{prevod i komentar}{prevod i komentar}},
+    bytranslatorcoaf = {{prevod, komentar i pogovor}{prevod, komentar i pogovor}},
+    bytranslatorcofo = {{prevod, komentar i predgovor}{prevod, komentar i predgovor}},
+    bytranslatorcoin = {{prevod, komentar i uvod}{prevod, komentar i uvod}},
+    bytranslatorfo = {{prevod i predgovor}{prevod i predgovor}},
+    bytranslatorin = {{prevod i uvod}{prevod i uvod}},
+    candthesis = {{kandidatski rad}{kandidatski rad}},
+    chapter = {{glava}{glava}},
+    circa = {{cirka}{cca}},
+    citedas = {{citirano kao}{cit\adddotspace kao}},
+    collaborator = {{saradnik}{sar\adddot}},
+    collaborators = {{saradnici}{sar\adddot}},
+    column = {{stupac}{stupac}},
+    columns = {{stupci}{stupci}},
+    columntotal = {{stupac}{stupac}},
+    columntotals = {{stupci}{stupci}},
+    commentary = {{komentar}{kom\adddot}},
+    commentator = {{komentator}{kom\adddot}},
+    commentators = {{komentatori}{kom\adddot}},
+    commonera = {{nove ere}{n.\addnbspace e\adddot}},
+    compiler = {{prire\dj iva\v c}{prire\dj iva\v c}},
+    compilers = {{priredili}{priredili}},
+    confer = {{cf\adddot}{cf\adddot}},
+    continuator = {{nastavlja\v c}{nast\adddot}},
+    continuators = {{nastavlja\v ci}{nast\adddot}},
+    countryde = {{Nema\v cka}{DE}},
+    countryep = {{Evropska unija}{EP}},
+    countryeu = {{Evropska unija}{EU}},
+    countryfr = {{Francuska}{FR}},
+    countryuk = {{Velika Britanija}{GB}},
+    countryus = {{Sjedinjene Ameri\v cke Dr\v zave}{SAD}},
+    datacd = {{CD-ROM}{CD-ROM}},
+    december = {{decembar}{dec\adddot}},
+    edition = {{izdanje}{izdanje}},
+    editor = {{urednik}{ur\adddot}},
+    editoraf = {{urednik i autor pogovora}{urednik i autor pogovora}},
+    editoran = {{urednik i autor bele\v zaka}{urednik i autor bele\v zaka}},
+    editoranaf = {{urednik, autor bele\v zaka i autor pogovora}{urednik, autor bele\v zaka i autor pogovora}},
+    editoranfo = {{urednik, autor bele\v zaka i autor predgovora}{urednik, autor bele\v zaka i autor predgovora}},
+    editoranin = {{urednik, autor bele\v zaka i autor uvoda}{urednik, autor bele\v zaka i autor uvoda}},
+    editorco = {{urednik i komentator}{urednik i komentator}},
+    editorcoaf = {{urednik, komentator i autor pogovora}{urednik, komentator i autor pogovora}},
+    editorcofo = {{urednik, komentator i autor predgovora}{urednik, komentator i autor predgovora}},
+    editorcoin = {{urednik, komentator i autor uvoda}{urednik, komentator i autor uvoda}},
+    editorfo = {{urednik i autor predgovora}{urednik i autor predgovora}},
+    editorin = {{urednik i autor uvoda}{urednik i autor uvoda}},
+    editors = {{urednici}{urednici}},
+    editorsaf = {{urednici i pisci pogovora}{urednici i pisci pogovora}},
+    editorsan = {{urednici i autori bele\v zaka}{urednici i autori bele\v zaka}},
+    editorsanaf = {{urednici, autori bele\v zaka i autori pogovora}{urednici, autori bele\v zaka i autori pogovora}},
+    editorsanfo = {{urednici, autori bele\v zaka i autori predgovora}{urednici, autori bele\v zaka i autori predgovora}},
+    editorsanin = {{urednici, autori bele\v zaka i autori uvoda}{urednici, autori bele\v zaka i autori uvoda}},
+    editorsco = {{urednici i komentatori}{urednici i komentatori}},
+    editorscoaf = {{urednici, komentatori i pisci pogovora}{urednici, komentatori i pisci pogovora}},
+    editorscofo = {{urednici, komentatori i autori predgovora}{urednici, komentatori i autori predgovora}},
+    editorscoin = {{urednici, komentatori i autori uvoda}{urednici, komentatori i autori uvoda}},
+    editorsfo = {{urednici i pisci predgovora}{urednici i pisci predgovora}},
+    editorsin = {{urednici i autori uvoda}{urednici i autori uvoda}},
+    editorstr = {{urednici i prevodioci}{urednici i prevodioci}},
+    editorstraf = {{urednici, prevodioci i autori pogovora}{urednici, prevodioci i autori pogovora}},
+    editorstran = {{urednici, prevodioci i autori bele\v zaka}{urednici, prevodioci i autori bele\v zaka}},
+    editorstranaf = {{urednici, prevodioci, autori bele\v zaka i pisci pogovora}{urednici, prevodioci, autori bele\v zaka i pisci pogovora}},
+    editorstranfo = {{urednici, prevodioci, autori bele\v zaka i autori predgovora}{urednici, prevodioci, autori bele\v zaka i autori predgovora}},
+    editorstranin = {{urednici, prevodioci, autori bele\v zaka i autori uvoda}{urednici, prevodioci, autori bele\v zaka i autori uvoda}},
+    editorstrco = {{urednici, prevodioci i komentatori}{urednici, prevodioci i komentatori}},
+    editorstrcoaf = {{urednici, prevodioci, komentatori i pisci pogovora}{urednici, prevodioci, komentatori i pisci pogovora}},
+    editorstrcofo = {{urednici, prevodioci, komentatori i autori predgovora}{urednici, prevodioci, komentatori i autori predgovora}},
+    editorstrcoin = {{urednici, prevodioci, komentatori i autori uvoda}{urednici, prevodioci, komentatori i autori uvoda}},
+    editorstrfo = {{urednici, prevodioci i autori predgovora}{urednici, prevodioci i autori predgovora}},
+    editorstrin = {{urednici, prevodioci i autori uvoda}{urednici, prevodioci i autori uvoda}},
+    editortr = {{urednik i prevodilac}{urednik i prevodilac}},
+    editortraf = {{urednik, prevodilac i autor pogovora}{urednik, prevodilac i autor pogovora}},
+    editortran = {{urednik, prevodilac i autor bele\v zaka}{urednik, prevodilac i autor bele\v zaka}},
+    editortranaf = {{urednik, prevodilac, autor bele\v zaka i autor pogovora}{urednik, prevodilac, autor bele\v zaka i autor pogovora}},
+    editortranfo = {{urednik, prevodilac, autor bele\v zaka i autor predgovora}{urednik, prevodilac, autor bele\v zaka i autor predgovora}},
+    editortranin = {{urednik, prevodilac, autor bele\v zaka i autor uvoda}{urednik, prevodilac, autor bele\v zaka i autor uvoda}},
+    editortrco = {{urednik, prevodilac i komentator}{urednik, prevodilac i komentator}},
+    editortrcoaf = {{urednik, prevodilac, komentator i autor pogovora}{urednik, prevodilac, komentator i autor pogovora}},
+    editortrcofo = {{urednik, prevodilac, komentator i autor predgovora}{urednik, prevodilac, komentator i autor predgovora}},
+    editortrcoin = {{urednik, prevodilac, komentator i autor uvoda}{urednik, prevodilac, komentator i autor uvoda}},
+    editortrfo = {{urednik, prevodilac i autor predgovora}{urednik, prevodilac i autor predgovora}},
+    editortrin = {{urednik, prevodilac i autor uvoda}{urednik, prevodilac i autor uvoda}},
+    february = {{februar}{feb\adddot}},
+    file = {{datoteka}{datoteka}},
+    foreword = {{predgovor}{predgovor}},
+    forthcoming = {{dolaze\'ce}{dolaze\'ce}},
+    founder = {{osniva\v c}{osn\adddot}},
+    founders = {{osniva\v ci}{osn\adddot}},
+    fromamerican = {{sa ameri\v ckog}{sa ameri\v ckog}},
+    frombrazilian = {{sa brazilskog}{sa brazilskog}},
+    frombulgarian = {{sa bugarskog}{sa bugarskog}},
+    fromcatalan = {{sa katalonskog}{sa katalonskog}},
+    fromcroatian = {{sa hrvatskog}{sa hrvatskog}},
+    fromczech = {{sa \v ce\v skog}{sa \v ce\v skog}},
+    fromdanish = {{sa danskog}{sa danskog}},
+    fromdutch = {{sa holandskog}{sa holandskog}},
+    fromenglish = {{sa engleskog}{sa engleskog}},
+    fromestonian = {{sa estonskog}{sa estonskog}},
+    fromfinnish = {{sa finskog}{sa finskog}},
+    fromfrench = {{sa francuskog}{sa francuskog}},
+    fromgalician = {{sa galicijskog}{sa galicijskog}},
+    fromgerman = {{sa nema\v ckog}{sa nema\v ckog}},
+    fromgreek = {{sa gr\v ckog}{sa gr\v ckog}},
+    fromhungarian = {{sa ma\dj arskog}{sa ma\dj arskog}},
+    fromitalian = {{sa italijanskog}{sa italijanskog}},
+    fromjapanese = {{sa japanskog}{sa japanskog}},
+    fromlatin = {{sa latinskog}{sa latinskog}},
+    fromlatvian = {{sa letonskog}{sa letonskog}},
+    fromnorwegian = {{sa norve\v skog}{sa norve\v skog}},
+    frompolish = {{sa poljskog}{sa poljskog}},
+    fromportuguese = {{sa portugalskog}{sa portugalskog}},
+    fromrussian = {{sa ruskog}{sa ruskog}},
+    fromslovak = {{sa slova\v ckog}{sa slova\v ckog}},
+    fromslovene = {{sa slovena\v ckog}{sa slovena\v ckog}},
+    fromspanish = {{sa \v spanskog}{sa \v spanskog}},
+    fromswedish = {{sa \v svedskog}{sa \v svedskog}},
+    fromukrainian = {{sa ukrajinskog}{sa ukrajinskog}},
+    ibidem = {{ibidem}{ibid\adddot}},
+    idem = {{idem}{idem}},
+    idempf = {{eaedem}{eaedem}},
+    idempm = {{eidem}{eidem}},
+    idempn = {{eadem}{eadem}},
+    idempp = {{eidem}{eidem}},
+    idemsf = {{eadem}{eadem}},
+    idemsm = {{idem}{idem}},
+    idemsn = {{idem}{idem}},
+    in = {{u}{u}},
+    inpreparation = {{u pripremi}{u pripremi}},
+    inpress = {{u \v stampi}{u \v stampi}},
+    inseries = {{u}{u}},
+    introduction = {{uvod}{uv\adddot}},
+    involumes = {{u}{u}},
+    issue = {{izdanje}{izdanje}},
+    january = {{januar}{jan\adddot}},
+    jourser = {{serija}{ser\adddot}},
+    jourvol = {{sveska}{sv\adddot}},
+    july = {{jul}{jul}},
+    june = {{jun}{jun}},
+    langamerican = {{ameri\v cki}{ameri\v cki}},
+    langbrazilian = {{brazilski}{brazilski}},
+    langbulgarian = {{bugarski}{bugarski}},
+    langcatalan = {{katalanski}{katalanski}},
+    langcroatian = {{hrvatski}{hrvatski}},
+    langczech = {{\v ce\v ski}{\v ce\v ski}},
+    langdanish = {{danski}{danski}},
+    langdutch = {{holandski}{holandski}},
+    langenglish = {{engleski}{engleski}},
+    langestonian = {{estonski}{estonski}},
+    langfinnish = {{finski}{finski}},
+    langfrench = {{francuski}{francuski}},
+    langgalician = {{galicijski}{galicijski}},
+    langgerman = {{nema\v cki}{nema\v cki}},
+    langgreek = {{gr\v cki}{gr\v cki}},
+    langhungarian = {{ma\dj arski}{ma\dj arski}},
+    langitalian = {{italijanski}{italijanski}},
+    langjapanese = {{japanski}{japanski}},
+    langlatin = {{latinski}{latinski}},
+    langlatvian = {{letonski}{letonski}},
+    langnorwegian = {{norve\v ski}{norve\v ski}},
+    langpolish = {{poljski}{poljski}},
+    langportuguese = {{portugalski}{portugalski}},
+    langrussian = {{ruski}{ruski}},
+    langslovak = {{slova\v cki}{slova\v cki}},
+    langslovene = {{slovena\v cki}{slovena\v cki}},
+    langspanish = {{\v spanski}{\v spanski}},
+    langswedish = {{\v svedski}{\v svedski}},
+    langukrainian = {{ukrajinski}{ukrajinski}},
+    library = {{biblioteka}{biblioteka}},
+    line = {{red}{r\adddot}},
+    lines = {{redovi}{r\adddot}},
+    linetotal = {{red}{r\adddot}},
+    linetotals = {{redovi}{r\adddot}},
+    loccit = {{loc\adddotspace cit\adddot}{loc\adddotspace cit\adddot}},
+    march = {{mart}{mar\adddot}},
+    mathesis = {{master rad}{master rad}},
+    may = {{maj}{maj}},
+    newseries = {{nova serija}{nova serija}},
+    nodate = {{bez datuma}{bez datuma}},
+    november = {{novembar}{nov\adddot}},
+    number = {{broj}{br\adddot}},
+    october = {{oktobar}{okt\adddot}},
+    ofseries = {{serija}{ser\adddot}},
+    oldseries = {{stara serija}{stara serija}},
+    opcit = {{op\adddotspace cit\adddot}{op\adddotspace cit\adddot}},
+    organizer = {{organizator}{org\adddot}},
+    organizers = {{organizatori}{org\adddot}},
+    origpubas = {{originalno izdato kao}{originalno izdato kao}},
+    origpubin = {{originalno izdato}{originalno izdato}},
+    page = {{strana}{str\adddot}},
+    pages = {{strane}{str\adddot}},
+    pagetotal = {{strana}{str\adddot}},
+    pagetotals = {{strane}{str\adddot}},
+    paragraph = {{pasus}{pas\adddot}},
+    paragraphs = {{pasusi}{pas\adddot}},
+    paragraphtotal = {{pasus}{pas\adddot}},
+    paragraphtotals = {{pasusi}{pas\adddot}},
+    part = {{deo}{deo}},
+    passim = {{passim}{pass\adddot}},
+    patent = {{patent}{pat\adddot}},
+    patentde = {{nema\v cki patent}{nem\adddot\ pat\adddot}},
+    patenteu = {{evropski patent}{evr\adddot\ pat\adddot}},
+    patentfr = {{francuski patent}{franc\adddot\ pat\adddot}},
+    patentuk = {{britanski patent}{brit\adddot\ pat\adddot}},
+    patentus = {{SAD patent}{SAD pat\adddot}},
+    patreq = {{zahtev za patent}{zahtev za patent}},
+    patreqde = {{nema\v cki zahtev za patent}{nema\v cki zahtev za patent}},
+    patreqeu = {{evropski zahtev za patent}{evropski zahtev za patent}},
+    patreqfr = {{francuski zahtev za patent}{francuski zahtev za patent}},
+    patrequk = {{britanski zahtev za patent}{britanski zahtev za patent}},
+    patrequs = {{SAD zahtev za patent}{SAD zahtev za patent}},
+    phdthesis = {{doktorska teza}{doktorska teza}},
+    pm = {{PM}{PM}},
+    prepublished = {{preliminarno izdanje}{preliminarno izdanje}},
+    quotedin = {{citirano u}{cit\adddotspace u}},
+    redactor = {{redaktor}{red\adddot}},
+    redactors = {{redaktori}{red\adddot}},
+    references = {{Literatura}{Literatura}},
+    reprint = {{reprint}{reprint}},
+    reprintas = {{ponovo izdato kao kao}{ponovo izdato kao kao}},
+    reprintfrom = {{reprint iz}{reprint iz}},
+    reprintof = {{reprint}{reprint}},
+    resreport = {{istra\v ziva\v cki izve\v staj}{istra\v ziva\v cki izve\v staj}},
+    reviewof = {{recenzija}{recenzija}},
+    reviser = {{korektor}{korektor}},
+    revisers = {{korektori}{korektori}},
+    section = {{sekcija}{sek\adddot}},
+    sections = {{sekcije}{sek\adddot}},
+    sectiontotal = {{sekcija}{sek\adddot}},
+    sectiontotals = {{sekcije}{sek\adddot}},
+    see = {{vidi}{vidi}},
+    seealso = {{vidi\addabbrvspace i}{vidi}},
+    seenote = {{vidi fusnotu}{vidi fusnotu}},
+    september = {{septembar}{sept\adddot}},
+    sequens = {{sq\adddot}{sq\adddot}},
+    sequentes = {{sqq\adddot}{sqq\adddot}},
+    shorthands = {{Spisak skra\'cenica}{Skra\'cenice}},
+    software = {{ra\v cunarski softver}{ra\v c\adddot\ softver}},
+    spring = {{prole\'ce}{prole\'ce}},
+    submitted = {{poslato}{poslato}},
+    summer = {{leto}{leto}},
+    techreport = {{tehni\v cki izve\v staj}{tehn\adddotspace izv\adddot}},
+    thiscite = {{posebno}{posebno}},
+    translationas = {{prevedeno kao}{prevedeno kao}},
+    translationfrom = {{prevedeno sa}{prevedeno sa}},
+    translationof = {{prevod}{prevod}},
+    translator = {{prevodilac}{prevodilac}},
+    translatoraf = {{prevodilac i autor pogovora}{prevodilac i autor pogovora}},
+    translatoran = {{prevodilac i anotator}{prevodilac i anotator}},
+    translatoranaf = {{prevodilac, autor anotacija i autor pogovora}{prevodilac, autor anotacija i autor pogovora}},
+    translatoranfo = {{prevodilac, autor anotacija i autor predgovora}{prevodilac, autor anotacija i autor predgovora}},
+    translatoranin = {{prevodilac, autor anotacija i autor uvoda}{prevodilac, autor anotacija i autor uvoda}},
+    translatorco = {{prevodilac i komentator}{prevodilac i komentator}},
+    translatorcoaf = {{prevodilac, komentar i autor pogovora}{prevodilac, komentar i autor pogovora}},
+    translatorcofo = {{prevodilac, komentar i autor predgovora}{prevodilac, komentar i autor predgovora}},
+    translatorcoin = {{prevodilac, komentar i autor uvoda}{prevodilac, komentar i autor uvoda}},
+    translatorfo = {{prevodilac i autor predgovora}{prevodilac i autor predgovora}},
+    translatorin = {{prevodilac i autor uvoda}{prevodilac i autor uvoda}},
+    translators = {{prevodioci}{prevodioci}},
+    translatorsaf = {{prevodilac i autor pogovora}{prevodilac i autor pogovora}},
+    translatorsan = {{prevodioci i autori bele\v ski}{prevodioci i autori bele\v ski}},
+    translatorsanaf = {{prevodilac, autor anotacija i autor pogovora}{prevodilac, autor anotacija i autor pogovora}},
+    translatorsanfo = {{prevodilac, autor anotacija i autor predgovora}{prevodilac, autor anotacija i autor predgovora}},
+    translatorsanin = {{prevodilac, autor anotacija i autor uvoda}{prevodilac, autor anotacija i autor uvoda}},
+    translatorsco = {{prevodioci i komentatori}{prevodioci i komentatori}},
+    translatorscoaf = {{prevodilac, komentar i autor pogovora}{prevodilac, komentar i autor pogovora}},
+    translatorscofo = {{prevodilac, komentar i autor predgovora}{prevodilac, komentar i autor predgovora}},
+    translatorscoin = {{prevodilac, komentar i autor uvoda}{prevodilac, komentar i autor uvoda}},
+    translatorsfo = {{prevodilac i autor predgovora}{prevodilac i autor predgovora}},
+    translatorsin = {{prevodilac i autor uvoda}{prevodilac i autor uvoda}},
+    url = {{adresa}{adresa}},
+    urlfrom = {{dostupno na}{dostupno na}},
+    urlseen = {{pose\'ceno}{pose\'ceno}},
+    verse = {{strofa}{str\adddot}},
+    verses = {{strofe}{str\adddot}},
+    versetotal = {{strofa}{str\adddot}},
+    versetotals = {{strofe}{str\adddot}},
+    version = {{verzija}{verzija}},
+    volume = {{sveska}{sv\adddot}},
+    volumes = {{sveske}{sv\adddot}},
+    winter = {{zima}{zima}},
+    withafterword = {{sa pogovorom}{sa pogovorom}},
+    withannotator = {{sa bele\v skama}{sa bele\v skama}},
+    withcommentator = {{sa komentarom}{sa komentarom}},
+    withforeword = {{sa predgovorom}{sa predgovorom}},
+    withintroduction = {{sa uvodom}{sa uvodom}},
+}
+
+\endinput
\ No newline at end of file

Added: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/serbianc.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/serbianc.lbx	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/serbianc.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -0,0 +1,449 @@
+\ProvidesFile{serbianc.lbx}
+[\abx at lbxid]
+
+% Translator's notes:
+%
+% This file is generated from a template and YAML localization string
+% collection by a script
+% You can said files at https://gitlab.com/andrejr/biblatex-serbian.
+% Please don't modify this file by hand -- contribute your changes upstream and
+% then send a pull request with the generated file to the official biblatex
+% repo (https://github.com/plk/biblatex).
+%
+% This is done so we could generate both `serbian.lbx` (Latin) and
+% `serbianc.lbx` (Cyrillic) from the same set of localization strings.
+
+\lbx at ifutfinput
+  {}
+  {\PackageError{biblatex}
+     {Serbian Cyrillic biblatex localization requires UTF-8 support}
+     {The 'serbianc.lbx' file requires UTF-8 encoding but you
+      seem\MessageBreak to be using a different encoding.
+      This is a fatal error. I will\MessageBreak abort loading
+      serbianc.lbx now.}%
+   \endinput}
+
+\DeclareRedundantLanguages{serbianc}{serbianc}
+
+\DeclareBibliographyExtras{%
+  \protected\def\bibrangedash{\textendash\penalty\hyphenpenalty}%
+  \protected\def\mkbibordinal#1{\stripzeros{#1}\adddot}%
+  \protected\def\mkbibmascord{\mkbibordinal}%
+  \protected\def\mkbibfemord{\mkbibordinal}%
+  \protected\def\mkbibneutord{\mkbibordinal}%
+  \protected\def\bibtimesep{.}%
+  %\savecommand\mkbibordedition
+  %\savecommand\mkbibordseries
+  \def\mkbibordedition{\mkbibordinal}%
+  \def\mkbibordseries{\mkbibfemord}%
+  \protected\def\mkbibdatelong#1#2#3{%
+    % day field
+    \iffieldundef{#3}{}{\mkbibordinal{\thefield{#3}}% if day exists, display
+      \iffieldundef{#2}{}{\nobreakspace}}% space before month if month exists
+    % month field
+    \iffieldundef{#2}{}{\mkbibmonth{\thefield{#2}}%
+      \iffieldundef{#1}{}{\space}}% space before year if year exists
+    % year field
+    \iffieldbibstring{#1}% year
+    {\bibstring{\thefield{#1}}}%
+    {\dateeraprintpre{#1}\mkbibordinal{\thefield{#1}}}}%
+  \protected\def\mkbibdateshort#1#2#3{%
+    \iffieldundef{#3}{}{\mkbibordinal{\thefield{#3}}%
+      \iffieldundef{#2}{}{\addnbspace}}%
+    \iffieldundef{#2}{}{\mkbibordinal{\thefield{#2}}%
+      \iffieldundef{#1}{}{\addnbspace}}%
+    \iffieldbibstring{#1}{\bibstring{\thefield{#1}}}%
+    {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}\adddot}}%
+  \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
+      \iffieldundef{#4}{}
+        {\bibtimezonesep
+         \mkbibtimezone{\thefield{#4}}}}%
+  \expandafter\protected\expandafter\def\csname mkbibtime12h%
+  \endcsname#1#2#3#4{%
+    \stripzeros{\mktimehh{\thefield{#1}}}\bibtimesep%
+    \forcezerosmdt{\thefield{#2}}%
+    \iffieldundef{#3}{}
+    {\bibtimesep%
+      \forcezerosmdt{\thefield{#3}}}%
+    \space
+    \ifnumless{\thefield{#1}}{12}
+    {\bibstring{am}}
+    {\bibstring{pm}}%
+    \iffieldundef{#4}{}
+    {\space\bibtimezonesep%
+      \parentext{\mkbibtimezone{\thefield{#4}}}}}%
+  \protected\def\mkbibseasondateshort#1#2{%
+    \mkbibseason{\thefield{#2}}%
+    \iffieldundef{#1}{}{\space}%
+    \dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}\adddot}%
+  \protected\def\mkbibseasondatelong#1#2{%
+    \mkbibseason{\thefield{#2}}%
+    \iffieldundef{#1}{}{\space}%
+    \dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}\adddot}%
+}
+
+\DeclareBibliographyStrings{%
+    abstract = {{апстракт}{апстракт}},
+    afterword = {{поговор}{поговор}},
+    am = {{AM}{AM}},
+    and = {{и}{и}},
+    andmore = {{и други}{и\addabbrvspace др\adddot}},
+    andothers = {{и други}{и\addabbrvspace др\adddot}},
+    annodomini = {{после Христа}{п\adddotspace Хр\adddot}},
+    annotation = {{белешка}{бел\adddot}},
+    annotations = {{белешке}{бел\adddot}},
+    annotator = {{аутор бележака}{аут\adddot\ бел\adddot}},
+    annotators = {{аутори бележака}{аут\adddot\ бел\adddot}},
+    april = {{април}{апр\adddot}},
+    astitle = {{под насловом}{под насловом}},
+    audiocd = {{аудио ЦД}{аудио ЦД}},
+    august = {{август}{авг\adddot}},
+    autumn = {{јесен}{јесен}},
+    backrefpage = {{цитирано на страници}{цит\adddot\ на стр\adddot}},
+    backrefpages = {{цитирано на страницама}{цит\adddot\ на стр\adddot}},
+    bathesis = {{бачелор рад}{БА\addabbrvspace рад}},
+    beforechrist = {{пре Христа}{пр\adddotspace Хр\adddot}},
+    beforecommonera = {{пре нове ере}{пре\addabbrvspace н\adddotspace е\adddot}},
+    bibliography = {{Библиографија}{Библиографија}},
+    book = {{књига}{књ\adddot}},
+    byannotator = {{аутор бележака}{аутор бележака}},
+    byauthor = {{аутор}{аутор}},
+    bycollaborator = {{у сарадњи са}{у сарадњи са}},
+    bycommentator = {{коментар}{коментар}},
+    bycompiler = {{одабир}{одабир}},
+    bycontinuator = {{аутор наставка}{аутор наставка}},
+    byeditor = {{уредник}{уредник}},
+    byeditoraf = {{обрада и поговор}{обрада и поговор}},
+    byeditoran = {{обрада и белешке}{обрада и белешке}},
+    byeditoranaf = {{обрада, белешке и поговор}{обрада, белешке и поговор}},
+    byeditoranfo = {{обрада, белешке и предговор}{обрада, белешке и предговор}},
+    byeditoranin = {{обрада, белешке и увод}{обрада, белешке и увод}},
+    byeditorco = {{обрада  и коментар}{обрада  и коментар}},
+    byeditorcoaf = {{обрада, коментар и поговор}{обрада, коментар и поговор}},
+    byeditorcofo = {{обрада, коментар и предговор}{обрада, коментар и предговор}},
+    byeditorcoin = {{обрада, коментар и увод}{обрада, коментар и увод}},
+    byeditorfo = {{обрада и предговор}{обрада и предговор}},
+    byeditorin = {{обрада и увод}{обрада и увод}},
+    byeditortr = {{обрада и превод}{обрада и превод}},
+    byeditortraf = {{обрада, превод и поговор}{обрада, превод и поговор}},
+    byeditortran = {{обрада, превод и белешке}{обрада, превод и белешке}},
+    byeditortranaf = {{обрада, превод, белешке и поговор}{обрада, превод, белешке и поговор}},
+    byeditortranfo = {{обрада, превод, белешке и предговор}{обрада, превод, белешке и предговор}},
+    byeditortranin = {{обрада, превод, белешке и увод}{обрада, превод, белешке и увод}},
+    byeditortrco = {{обрада, превод и коментар}{обрада, превод и коментар}},
+    byeditortrcoaf = {{обрада, превод, коментар и поговор}{обрада, превод, коментар и поговор}},
+    byeditortrcofo = {{обрада, превод, коментар и предговор}{обрада, превод, коментар и предговор}},
+    byeditortrcoin = {{обрада, превод, коментар и увод}{обрада, превод, коментар и увод}},
+    byeditortrfo = {{обрада, превод и предговор}{обрада, превод и предговор}},
+    byeditortrin = {{обрада, превод и увод}{обрада, превод и увод}},
+    byfounder = {{оснивач}{оснивач}},
+    byorganizer = {{организатор}{организатор}},
+    bypublisher = {{издавач}{издавач}},
+    byredactor = {{редактор}{редактор}},
+    byreviewer = {{рецензент}{рецензент}},
+    byreviser = {{коректор}{коректор}},
+    bytranslator = {{превод}{превод}},
+    bytranslatoraf = {{превод и поговор}{превод и поговор}},
+    bytranslatoran = {{превод и белешке}{превод и белешке}},
+    bytranslatoranaf = {{превод, белешке и поговор}{превод, белешке и поговор}},
+    bytranslatoranfo = {{превод, белешке и предговор}{превод, белешке и предговор}},
+    bytranslatoranin = {{превод, белешке и увод}{превод, белешке и увод}},
+    bytranslatorco = {{превод и коментар}{превод и коментар}},
+    bytranslatorcoaf = {{превод, коментар и поговор}{превод, коментар и поговор}},
+    bytranslatorcofo = {{превод, коментар и предговор}{превод, коментар и предговор}},
+    bytranslatorcoin = {{превод, коментар и увод}{превод, коментар и увод}},
+    bytranslatorfo = {{превод и предговор}{превод и предговор}},
+    bytranslatorin = {{превод и увод}{превод и увод}},
+    candthesis = {{кандидатски рад}{кандидатски рад}},
+    chapter = {{глава}{глава}},
+    circa = {{цирка}{cca}},
+    citedas = {{цитирано као}{цит\adddotspace као}},
+    collaborator = {{сарадник}{сар\adddot}},
+    collaborators = {{сарадници}{сар\adddot}},
+    column = {{ступац}{ступац}},
+    columns = {{ступци}{ступци}},
+    columntotal = {{ступац}{ступац}},
+    columntotals = {{ступци}{ступци}},
+    commentary = {{коментар}{ком\adddot}},
+    commentator = {{коментатор}{ком\adddot}},
+    commentators = {{коментатори}{ком\adddot}},
+    commonera = {{нове ере}{н.\addnbspace е\adddot}},
+    compiler = {{приређивач}{приређивач}},
+    compilers = {{приредили}{приредили}},
+    confer = {{cf\adddot}{cf\adddot}},
+    continuator = {{настављач}{наст\adddot}},
+    continuators = {{настављачи}{наст\adddot}},
+    countryde = {{Немачка}{ДЕ}},
+    countryep = {{Европска унија}{ЕП}},
+    countryeu = {{Европска унија}{ЕУ}},
+    countryfr = {{Француска}{ФР}},
+    countryuk = {{Велика Британија}{ГБ}},
+    countryus = {{Сједињене Америчке Државе}{САД}},
+    datacd = {{CD-ROM}{CD-ROM}},
+    december = {{децембар}{дец\adddot}},
+    edition = {{издање}{издање}},
+    editor = {{уредник}{ур\adddot}},
+    editoraf = {{уредник и аутор поговора}{уредник и аутор поговора}},
+    editoran = {{уредник и аутор бележака}{уредник и аутор бележака}},
+    editoranaf = {{уредник, аутор бележака и аутор поговора}{уредник, аутор бележака и аутор поговора}},
+    editoranfo = {{уредник, аутор бележака и аутор предговора}{уредник, аутор бележака и аутор предговора}},
+    editoranin = {{уредник, аутор бележака и аутор увода}{уредник, аутор бележака и аутор увода}},
+    editorco = {{уредник и коментатор}{уредник и коментатор}},
+    editorcoaf = {{уредник, коментатор и аутор поговора}{уредник, коментатор и аутор поговора}},
+    editorcofo = {{уредник, коментатор и аутор предговора}{уредник, коментатор и аутор предговора}},
+    editorcoin = {{уредник, коментатор и аутор увода}{уредник, коментатор и аутор увода}},
+    editorfo = {{уредник и аутор предговора}{уредник и аутор предговора}},
+    editorin = {{уредник и аутор увода}{уредник и аутор увода}},
+    editors = {{уредници}{уредници}},
+    editorsaf = {{уредници и писци поговора}{уредници и писци поговора}},
+    editorsan = {{уредници и аутори бележака}{уредници и аутори бележака}},
+    editorsanaf = {{уредници, аутори бележака и аутори поговора}{уредници, аутори бележака и аутори поговора}},
+    editorsanfo = {{уредници, аутори бележака и аутори предговора}{уредници, аутори бележака и аутори предговора}},
+    editorsanin = {{уредници, аутори бележака и аутори увода}{уредници, аутори бележака и аутори увода}},
+    editorsco = {{уредници и коментатори}{уредници и коментатори}},
+    editorscoaf = {{уредници, коментатори и писци поговора}{уредници, коментатори и писци поговора}},
+    editorscofo = {{уредници, коментатори и аутори предговора}{уредници, коментатори и аутори предговора}},
+    editorscoin = {{уредници, коментатори и аутори увода}{уредници, коментатори и аутори увода}},
+    editorsfo = {{уредници и писци предговора}{уредници и писци предговора}},
+    editorsin = {{уредници и аутори увода}{уредници и аутори увода}},
+    editorstr = {{уредници и преводиоци}{уредници и преводиоци}},
+    editorstraf = {{уредници, преводиоци и аутори поговора}{уредници, преводиоци и аутори поговора}},
+    editorstran = {{уредници, преводиоци и аутори бележака}{уредници, преводиоци и аутори бележака}},
+    editorstranaf = {{уредници, преводиоци, аутори бележака и писци поговора}{уредници, преводиоци, аутори бележака и писци поговора}},
+    editorstranfo = {{уредници, преводиоци, аутори бележака и аутори предговора}{уредници, преводиоци, аутори бележака и аутори предговора}},
+    editorstranin = {{уредници, преводиоци, аутори бележака и аутори увода}{уредници, преводиоци, аутори бележака и аутори увода}},
+    editorstrco = {{уредници, преводиоци и коментатори}{уредници, преводиоци и коментатори}},
+    editorstrcoaf = {{уредници, преводиоци, коментатори и писци поговора}{уредници, преводиоци, коментатори и писци поговора}},
+    editorstrcofo = {{уредници, преводиоци, коментатори и аутори предговора}{уредници, преводиоци, коментатори и аутори предговора}},
+    editorstrcoin = {{уредници, преводиоци, коментатори и аутори увода}{уредници, преводиоци, коментатори и аутори увода}},
+    editorstrfo = {{уредници, преводиоци и аутори предговора}{уредници, преводиоци и аутори предговора}},
+    editorstrin = {{уредници, преводиоци и аутори увода}{уредници, преводиоци и аутори увода}},
+    editortr = {{уредник и преводилац}{уредник и преводилац}},
+    editortraf = {{уредник, преводилац и аутор поговора}{уредник, преводилац и аутор поговора}},
+    editortran = {{уредник, преводилац и аутор бележака}{уредник, преводилац и аутор бележака}},
+    editortranaf = {{уредник, преводилац, аутор бележака и аутор поговора}{уредник, преводилац, аутор бележака и аутор поговора}},
+    editortranfo = {{уредник, преводилац, аутор бележака и аутор предговора}{уредник, преводилац, аутор бележака и аутор предговора}},
+    editortranin = {{уредник, преводилац, аутор бележака и аутор увода}{уредник, преводилац, аутор бележака и аутор увода}},
+    editortrco = {{уредник, преводилац и коментатор}{уредник, преводилац и коментатор}},
+    editortrcoaf = {{уредник, преводилац, коментатор и аутор поговора}{уредник, преводилац, коментатор и аутор поговора}},
+    editortrcofo = {{уредник, преводилац, коментатор и аутор предговора}{уредник, преводилац, коментатор и аутор предговора}},
+    editortrcoin = {{уредник, преводилац, коментатор и аутор увода}{уредник, преводилац, коментатор и аутор увода}},
+    editortrfo = {{уредник, преводилац и аутор предговора}{уредник, преводилац и аутор предговора}},
+    editortrin = {{уредник, преводилац и аутор увода}{уредник, преводилац и аутор увода}},
+    february = {{фебруар}{феб\adddot}},
+    file = {{датотека}{датотека}},
+    foreword = {{предговор}{предговор}},
+    forthcoming = {{долазеће}{долазеће}},
+    founder = {{оснивач}{осн\adddot}},
+    founders = {{оснивачи}{осн\adddot}},
+    fromamerican = {{са америчког}{са америчког}},
+    frombrazilian = {{са бразилског}{са бразилског}},
+    frombulgarian = {{са бугарског}{са бугарског}},
+    fromcatalan = {{са каталонског}{са каталонског}},
+    fromcroatian = {{са хрватског}{са хрватског}},
+    fromczech = {{са чешког}{са чешког}},
+    fromdanish = {{са данског}{са данског}},
+    fromdutch = {{са холандског}{са холандског}},
+    fromenglish = {{са енглеског}{са енглеског}},
+    fromestonian = {{са естонског}{са естонског}},
+    fromfinnish = {{са финског}{са финског}},
+    fromfrench = {{са француског}{са француског}},
+    fromgalician = {{са галицијског}{са галицијског}},
+    fromgerman = {{са немачког}{са немачког}},
+    fromgreek = {{са грчког}{са грчког}},
+    fromhungarian = {{са мађарског}{са мађарског}},
+    fromitalian = {{са италијанског}{са италијанског}},
+    fromjapanese = {{са јапанског}{са јапанског}},
+    fromlatin = {{са латинског}{са латинског}},
+    fromlatvian = {{са летонског}{са летонског}},
+    fromnorwegian = {{са норвешког}{са норвешког}},
+    frompolish = {{са пољског}{са пољског}},
+    fromportuguese = {{са португалског}{са португалског}},
+    fromrussian = {{са руског}{са руског}},
+    fromslovak = {{са словачког}{са словачког}},
+    fromslovene = {{са словеначког}{са словеначког}},
+    fromspanish = {{са шпанског}{са шпанског}},
+    fromswedish = {{са шведског}{са шведског}},
+    fromukrainian = {{са украјинског}{са украјинског}},
+    ibidem = {{ibidem}{ibid\adddot}},
+    idem = {{idem}{idem}},
+    idempf = {{eaedem}{eaedem}},
+    idempm = {{eidem}{eidem}},
+    idempn = {{eadem}{eadem}},
+    idempp = {{eidem}{eidem}},
+    idemsf = {{eadem}{eadem}},
+    idemsm = {{idem}{idem}},
+    idemsn = {{idem}{idem}},
+    in = {{у}{у}},
+    inpreparation = {{у припреми}{у припреми}},
+    inpress = {{у штампи}{у штампи}},
+    inseries = {{у}{у}},
+    introduction = {{увод}{ув\adddot}},
+    involumes = {{у}{у}},
+    issue = {{издање}{издање}},
+    january = {{јануар}{јан\adddot}},
+    jourser = {{серија}{сер\adddot}},
+    jourvol = {{свеска}{св\adddot}},
+    july = {{јул}{јул}},
+    june = {{јун}{јун}},
+    langamerican = {{амерички}{амерички}},
+    langbrazilian = {{бразилски}{бразилски}},
+    langbulgarian = {{бугарски}{бугарски}},
+    langcatalan = {{каталански}{каталански}},
+    langcroatian = {{хрватски}{хрватски}},
+    langczech = {{чешки}{чешки}},
+    langdanish = {{дански}{дански}},
+    langdutch = {{холандски}{холандски}},
+    langenglish = {{енглески}{енглески}},
+    langestonian = {{естонски}{естонски}},
+    langfinnish = {{фински}{фински}},
+    langfrench = {{француски}{француски}},
+    langgalician = {{галицијски}{галицијски}},
+    langgerman = {{немачки}{немачки}},
+    langgreek = {{грчки}{грчки}},
+    langhungarian = {{мађарски}{мађарски}},
+    langitalian = {{италијански}{италијански}},
+    langjapanese = {{јапански}{јапански}},
+    langlatin = {{латински}{латински}},
+    langlatvian = {{летонски}{летонски}},
+    langnorwegian = {{норвешки}{норвешки}},
+    langpolish = {{пољски}{пољски}},
+    langportuguese = {{португалски}{португалски}},
+    langrussian = {{руски}{руски}},
+    langslovak = {{словачки}{словачки}},
+    langslovene = {{словеначки}{словеначки}},
+    langspanish = {{шпански}{шпански}},
+    langswedish = {{шведски}{шведски}},
+    langukrainian = {{украјински}{украјински}},
+    library = {{библиотека}{библиотека}},
+    line = {{ред}{р\adddot}},
+    lines = {{редови}{р\adddot}},
+    linetotal = {{ред}{р\adddot}},
+    linetotals = {{редови}{р\adddot}},
+    loccit = {{loc\adddotspace cit\adddot}{loc\adddotspace cit\adddot}},
+    march = {{март}{мар\adddot}},
+    mathesis = {{мастер рад}{мастер рад}},
+    may = {{мај}{мај}},
+    newseries = {{нова серија}{нова серија}},
+    nodate = {{без датума}{без датума}},
+    november = {{новембар}{нов\adddot}},
+    number = {{број}{бр\adddot}},
+    october = {{октобар}{окт\adddot}},
+    ofseries = {{серија}{сер\adddot}},
+    oldseries = {{стара серија}{стара серија}},
+    opcit = {{op\adddotspace cit\adddot}{op\adddotspace cit\adddot}},
+    organizer = {{организатор}{орг\adddot}},
+    organizers = {{организатори}{орг\adddot}},
+    origpubas = {{оригинално издато као}{оригинално издато као}},
+    origpubin = {{оригинално издато}{оригинално издато}},
+    page = {{страна}{стр\adddot}},
+    pages = {{стране}{стр\adddot}},
+    pagetotal = {{страна}{стр\adddot}},
+    pagetotals = {{стране}{стр\adddot}},
+    paragraph = {{пасус}{пас\adddot}},
+    paragraphs = {{пасуси}{пас\adddot}},
+    paragraphtotal = {{пасус}{пас\adddot}},
+    paragraphtotals = {{пасуси}{пас\adddot}},
+    part = {{део}{део}},
+    passim = {{passim}{pass\adddot}},
+    patent = {{патент}{пат\adddot}},
+    patentde = {{немачки патент}{нем\adddot\ пат\adddot}},
+    patenteu = {{европски патент}{евр\adddot\ пат\adddot}},
+    patentfr = {{француски патент}{франц\adddot\ пат\adddot}},
+    patentuk = {{британски патент}{брит\adddot\ пат\adddot}},
+    patentus = {{САД патент}{САД пат\adddot}},
+    patreq = {{захтев за патент}{захтев за патент}},
+    patreqde = {{немачки захтев за патент}{немачки захтев за патент}},
+    patreqeu = {{европски захтев за патент}{европски захтев за патент}},
+    patreqfr = {{француски захтев за патент}{француски захтев за патент}},
+    patrequk = {{британски захтев за патент}{британски захтев за патент}},
+    patrequs = {{САД захтев за патент}{САД захтев за патент}},
+    phdthesis = {{докторска теза}{докторска теза}},
+    pm = {{PM}{PM}},
+    prepublished = {{прелиминарно издање}{прелиминарно издање}},
+    quotedin = {{цитирано у}{цит\adddotspace у}},
+    redactor = {{редактор}{ред\adddot}},
+    redactors = {{редактори}{ред\adddot}},
+    references = {{Литература}{Литература}},
+    reprint = {{репринт}{репринт}},
+    reprintas = {{поново издато као као}{поново издато као као}},
+    reprintfrom = {{репринт из}{репринт из}},
+    reprintof = {{репринт}{репринт}},
+    resreport = {{истраживачки извештај}{истраживачки извештај}},
+    reviewof = {{рецензија}{рецензија}},
+    reviser = {{коректор}{коректор}},
+    revisers = {{коректори}{коректори}},
+    section = {{секција}{сек\adddot}},
+    sections = {{секције}{сек\adddot}},
+    sectiontotal = {{секција}{сек\adddot}},
+    sectiontotals = {{секције}{сек\adddot}},
+    see = {{види}{види}},
+    seealso = {{види\addabbrvspace и}{види}},
+    seenote = {{види фусноту}{види фусноту}},
+    september = {{септембар}{септ\adddot}},
+    sequens = {{sq\adddot}{sq\adddot}},
+    sequentes = {{sqq\adddot}{sqq\adddot}},
+    shorthands = {{Списак скраћеница}{Скраћенице}},
+    software = {{рачунарски софтвер}{рач\adddot\ софтвер}},
+    spring = {{пролеће}{пролеће}},
+    submitted = {{послато}{послато}},
+    summer = {{лето}{лето}},
+    techreport = {{технички извештај}{техн\adddotspace изв\adddot}},
+    thiscite = {{посебно}{посебно}},
+    translationas = {{преведено као}{преведено као}},
+    translationfrom = {{преведено са}{преведено са}},
+    translationof = {{превод}{превод}},
+    translator = {{преводилац}{преводилац}},
+    translatoraf = {{преводилац и аутор поговора}{преводилац и аутор поговора}},
+    translatoran = {{преводилац и анотатор}{преводилац и анотатор}},
+    translatoranaf = {{преводилац, аутор анотација и аутор поговора}{преводилац, аутор анотација и аутор поговора}},
+    translatoranfo = {{преводилац, аутор анотација и аутор предговора}{преводилац, аутор анотација и аутор предговора}},
+    translatoranin = {{преводилац, аутор анотација и аутор увода}{преводилац, аутор анотација и аутор увода}},
+    translatorco = {{преводилац и коментатор}{преводилац и коментатор}},
+    translatorcoaf = {{преводилац, коментар и аутор поговора}{преводилац, коментар и аутор поговора}},
+    translatorcofo = {{преводилац, коментар и аутор предговора}{преводилац, коментар и аутор предговора}},
+    translatorcoin = {{преводилац, коментар и аутор увода}{преводилац, коментар и аутор увода}},
+    translatorfo = {{преводилац и аутор предговора}{преводилац и аутор предговора}},
+    translatorin = {{преводилац и аутор увода}{преводилац и аутор увода}},
+    translators = {{преводиоци}{преводиоци}},
+    translatorsaf = {{преводилац и аутор поговора}{преводилац и аутор поговора}},
+    translatorsan = {{преводиоци и аутори белешки}{преводиоци и аутори белешки}},
+    translatorsanaf = {{преводилац, аутор анотација и аутор поговора}{преводилац, аутор анотација и аутор поговора}},
+    translatorsanfo = {{преводилац, аутор анотација и аутор предговора}{преводилац, аутор анотација и аутор предговора}},
+    translatorsanin = {{преводилац, аутор анотација и аутор увода}{преводилац, аутор анотација и аутор увода}},
+    translatorsco = {{преводиоци и коментатори}{преводиоци и коментатори}},
+    translatorscoaf = {{преводилац, коментар и аутор поговора}{преводилац, коментар и аутор поговора}},
+    translatorscofo = {{преводилац, коментар и аутор предговора}{преводилац, коментар и аутор предговора}},
+    translatorscoin = {{преводилац, коментар и аутор увода}{преводилац, коментар и аутор увода}},
+    translatorsfo = {{преводилац и аутор предговора}{преводилац и аутор предговора}},
+    translatorsin = {{преводилац и аутор увода}{преводилац и аутор увода}},
+    url = {{адреса}{адреса}},
+    urlfrom = {{доступно на}{доступно на}},
+    urlseen = {{посећено}{посећено}},
+    verse = {{строфа}{стр\adddot}},
+    verses = {{строфе}{стр\adddot}},
+    versetotal = {{строфа}{стр\adddot}},
+    versetotals = {{строфе}{стр\adddot}},
+    version = {{верзија}{верзија}},
+    volume = {{свеска}{св\adddot}},
+    volumes = {{свеске}{св\adddot}},
+    winter = {{зима}{зима}},
+    withafterword = {{са поговором}{са поговором}},
+    withannotator = {{са белешкама}{са белешкама}},
+    withcommentator = {{са коментаром}{са коментаром}},
+    withforeword = {{са предговором}{са предговором}},
+    withintroduction = {{са уводом}{са уводом}},
+}
+
+\endinput
\ No newline at end of file

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/slovak.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/slovak.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/slovak.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -40,13 +40,17 @@
             {\bibstring{\thefield{#1}}}
             {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%
@@ -74,62 +78,34 @@
 }
 
 \DeclareBibliographyStrings{%
-  bibliography     = {{Zoznam bibliografick\'{y}ch odkazov}%
-                      {Bibliografia}},
-  references       = {{Cit\'{a}cie}%                  % ISO 690 -- section 2.15
-                      {Cit\'{a}cie}},
-  shorthands       = {{Zoznam skratiek}%
-                      {Skratky}},
-  editor           = {{editor}%
-                      {ed\adddot}},
-  editors          = {{editori}%
-                      {ed\adddot}},
-  compiler         = {{zostavovate\v{l}}%             % ISO 690 -- section 5.1 -- c)
-                      {zost\adddot}},
-  compilers        = {{zostavovatelia}%
-                      {zost\adddot}},
-  redactor         = {{redaktor}%
-                      {red\adddot}},
-  redactors        = {{redaktori}%
-                      {red\adddot}},
-  reviser          = {{korektor}%
-                      {kor\adddot}},
-  revisers         = {{korektori}%
-                      {kor\adddot}},
-  founder          = {{zakladate\v{l}}%
-                      {zakl\adddot}},
-  founders         = {{zakladatelia}%
-                      {zakl\adddot}},
-  continuator      = {{pokra\v{c}ovate\v{l}}%
-                      {pokr\adddot}},
-  continuators     = {{pokra\v{c}ovatelia}%
-                      {pokr\adddot}},
-  collaborator     = {{spolupracovn\'{i}k}%
-                      {spoluprac\adddot}},
-  collaborators    = {{spolupracovn\'{i}ci}%
-                      {spoluprac\adddot}},
-  translator       = {{prekladate\v{l}}%
-                      {prekl\adddot}},
-  translators      = {{prekladatelia}%
-                      {prekl\adddot}},
-  commentator      = {{koment\'{a}tor}%
-                      {kom\adddot}},
-  commentators     = {{koment\'{a}tori}%
-                      {kom\adddot}},
-  annotator        = {{anot\'{a}tor}%
-                      {anot\adddot}},
-  annotators       = {{anot\'{a}tori}%
-                      {anot\adddot}},
-  commentary       = {{koment\'{a}r}%
-                      {kom\adddot}},
-  annotations      = {{anot\'{a}cia}%
-                      {anot\adddot}},
-  introduction     = {{\'{u}vod}%
-                      {\'{u}v\adddot}},
-  foreword         = {{predhovor}%
-                      {predh\adddot}},
-  afterword        = {{doslov}%
-                      {dosl\adddot}},
+  bibliography     = {{Zoznam literat\'{u}ry}{Bibliografia}},
+  references       = {{Referencie}{Referencie}},
+  shorthands       = {{Zoznam skratiek}{Skratky}},
+  editor           = {{editor}{ed\adddot}},
+  editors          = {{editori}{ed\adddot}},
+  compiler         = {{zostavovate\v{l}}{zost\adddot}},
+  compilers        = {{zostavovatelia}{zost\adddot}},
+  redactor         = {{redaktor}{red\adddot}},
+  redactors        = {{redaktori}{red\adddot}},
+  reviser          = {{korektor}{kor\adddot}},
+  revisers         = {{korektori}{kor\adddot}},
+  founder          = {{zakladate\v{l}}{zakl\adddot}},
+  founders         = {{zakladatelia}{zakl\adddot}},
+  continuator      = {{pokra\v{c}ovate\v{l}}{pokr\adddot}},% FIXME: unsure
+  continuators     = {{pokra\v{c}ovatelia}{pokr\adddot}},% FIXME: unsure
+  collaborator     = {{spolupracovn\'{\i}k}{spoluprac\adddot}},
+  collaborators    = {{spolupracovn\'{\i}ci}{spoluprac\adddot}},
+  translator       = {{prekladate\v{l}}{prekl\adddot}},
+  translators      = {{prekladatelia}{prekl\adddot}},
+  commentator      = {{koment\'{a}tor}{kom\adddot}},
+  commentators     = {{koment\'{a}tori}{kom\adddot}},
+  annotator        = {{anot\'{a}tor}{anot\adddot}},
+  annotators       = {{anot\'{a}tori}{anot\adddot}},
+  commentary       = {{koment\'{a}r}{kom\adddot}},
+  annotations      = {{anot\'{a}cie}{anot\adddot}},
+  introduction     = {{\'{u}vod}{\'{u}v\adddot}},
+  foreword         = {{predhovor}{predh\adddot}},
+  afterword        = {{doslov}{dosl\adddot}},
   editortr         = {{editor a prekladate\v{l}}%
                       {ed\adddotspace a prekl\adddot}},
   editorstr        = {{editori a prekladatelia}%
@@ -230,97 +206,84 @@
                       {prekl\adddot\ a anot\adddot}},
   translatorsan    = {{prekladatelia a anot\'{a}tori}%
                       {prekl\adddot\ a anot\adddot}},
-  translatorin     = {{prekladate\v{l} a \'{u}vod}%
+  translatorin     = {{preklad a \'{u}vod}%
                       {prekl\adddot\ a \'{u}v\adddot}},
-  translatorsin    = {{prekladatelia a \'{u}vod}%
+  translatorsin    = {{preklad a \'{u}vod}%
                       {prekl\adddot\ a \'{u}v\adddot}},
-  translatorfo     = {{prekladate\v{l} a predhovor}%
+  translatorfo     = {{preklad a predhovor}%
                       {prekl\adddot\ a predh\adddot}},
-  translatorsfo    = {{prekladatelia a predhovor}%
+  translatorsfo    = {{preklad a predhovor}%
                       {prekl\adddot\ a predh\adddot}},
-  translatoraf     = {{prekladate\v{l} a doslov}%
+  translatoraf     = {{preklad a doslov}%
                       {prekl\adddot\ a dosl\adddot}},
-  translatorsaf    = {{prekladatelia a doslov}%
+  translatorsaf    = {{preklad a doslov}%
                       {prekl\adddot\ a dosl\adddot}},
-  translatorcoin   = {{prekladate\v{l}, koment\'{a}tor\ a \'{u}vod}%
+  translatorcoin   = {{preklad, koment\'{a}r\ a \'{u}vod}%
                       {prekl., kom\adddot\ a \'{u}v\adddot}},
-  translatorscoin  = {{prekladatelia, koment\'{a}tori\ a \'{u}vod}%
+  translatorscoin  = {{preklad, koment\'{a}r\ a \'{u}vod}%
                       {prekl., kom\adddot\ a \'{u}v\adddot}},
-  translatorcofo   = {{prekladate\v{l}, koment\'{a}tor\ a predhovor}%
+  translatorcofo   = {{preklad, koment\'{a}r\ a predhovor}%
                       {prekl., kom\adddot\ a predh\adddot}},
-  translatorscofo  = {{prekladatelia, koment\'{a}tori\ a predhovor}%
+  translatorscofo  = {{preklad, koment\'{a}r\ a predhovor}%
                       {prekl., kom\adddot\ a predh\adddot}},
-  translatorcoaf   = {{prekladate\v{l}, koment\'{a}tor\ a doslov}%
+  translatorcoaf   = {{preklad, koment\'{a}r\ a doslov}%
                       {prekl., kom\adddot\ a dosl\adddot}},
-  translatorscoaf  = {{prekladatelia, koment\'{a}tori\ a doslov}%
+  translatorscoaf  = {{preklad, koment\'{a}r\ a doslov}%
                       {prekl., kom\adddot\ a dosl\adddot}},
-  translatoranin   = {{prekladate\v{l}, anot\'{a}tor\ a \'{u}vod}%
+  translatoranin   = {{preklad, anot\'{a}cia\ a \'{u}vod}%
                       {prekl., anot\adddot\ a \'{u}v\adddot}},
-  translatorsanin  = {{prekladatelia, anot\'{a}tori\ a \'{u}vod}%
+  translatorsanin  = {{preklad, anot\'{a}cie\ a \'{u}vod}%
                       {prekl., anot\adddot\ a \'{u}v\adddot}},
-  translatoranfo   = {{prekladate\v{l}, anot\'{a}tor\ a predhovor}%
+  translatoranfo   = {{preklad, anot\'{a}cia\ a predhovor}%
                       {prekl., anot\adddot\ a predh\adddot}},
-  translatorsanfo  = {{prekladatelia, anot\'{a}tori\ a predhovor}%
+  translatorsanfo  = {{preklad, anot\'{a}cie\ a predhovor}%
                       {prekl., anot\adddot\ a predh\adddot}},
-  translatoranaf   = {{prekladate\v{l}, anot\'{a}tor\ a doslov}%
+  translatoranaf   = {{preklad, anot\'{a}cia\ a doslov}%
                       {prekl., anot\adddot\ a dosl\adddot}},
-  translatorsanaf  = {{prekladatelia, anot\'{a}tori\ a doslov}%
+  translatorsanaf  = {{preklad, anot\'{a}cie\ a doslov}%
                       {prekl., anot\adddot\ a dosl\adddot}},
-% organizer        = {{}{}},% FIXME: missing
-% organizers       = {{}{}},% FIXME: missing
-% byorganizer      = {{}{}},% FIXME: missing
-  byauthor         = {{}%
-                      {}},
-  byeditor         = {{editovan\'{e}}%
-                      {ed\adddot}},
-  bycompiler       = {{zostaven\'{e}}%
-                      {zost\adddot}},
-  byredactor       = {{redigovan\'{e}}%
-                      {red\adddot}},
-  byfounder        = {{zalo\v{z}en\'{e}}%
-                      {zal\adddot}},
-  bycontinuator    = {{pokra\v{c}ovan\'{e}}%
-                      {pokr\adddot}},
-  bycollaborator   = {{v\addnbspace spolupr\'{a}ci s}%
-                      {v\addnbspace spol\adddotspace s}},
-  bytranslator     = {{prelo\v{z}en\'{e} \lbx at lfromlang}%
-                      {prel\adddot\ \lbx at sfromlang}},
-  bycommentator    = {{komentovan\'{e}}%
-                      {kom\adddot}},
-  byannotator      = {{anotovan\'{e}}%
-                      {anot\adddot}},
-  withcommentator  = {{s\addnbspace koment\'{a}rom od}%
-                      {s\addnbspace kom\adddotspace od}},
-  withannotator    = {{s\addnbspace anot\'{a}ciami od}%
-                      {s\addnbspace anot\adddot\ od}},
-  withintroduction = {{s\addnbspace \'{u}vodom od}%
-                      {s\addnbspace \'{u}v\adddot\ od}},
-  withforeword     = {{s\addnbspace predhovorom od}%
-                      {s\addnbspace predh\adddot\ od}},
-  withafterword    = {{s\addnbspace doslovom od}%
-                      {s\addnbspace dosl\adddot\ od}},
-  byeditortr       = {{editovan\'{e} a prelo\v{z}en\'{e} \lbx at lfromlang\ }%
-                      {ed\adddotspace a prel\adddot\ \lbx at sfromlang\ }},
+  organizer        = {{organiz\'{a}tor}{org\adddot}},% FIXME: unsure
+  organizers       = {{organiz\'{a}tori}{org\adddot}},% FIXME: unsure
+  byorganizer      = {{organizovan\'{e}}{org\adddot}},% FIXME: unsure
+  byauthor         = {{}{}},
+  byeditor         = {{editovan\'{e}}{ed\adddot}},
+  bycompiler       = {{zostaven\'{e}}{zost\adddot}},
+  byredactor       = {{redigovan\'{e}}{red\adddot}},
+  byreviser        = {{korigovan\'{e}}{kor\adddot}},
+  byreviewer       = {{recenzovan\'{e}}{recenz\adddot}},
+  byfounder        = {{zalo\v{z}en\'{e}}{zal\adddot}},
+  bycontinuator    = {{pokra\v{c}ovan\'{e}}{pokr\adddot}},
+  bycollaborator   = {{v\addnbspace spolupr\'{a}ci s\addnbspace}{v\addnbspace spol\adddotspace s\addnbspace}},
+  bytranslator     = {{prelo\v{z}en\'{e} \lbx at lfromlang}{prel\adddot\ \lbx at sfromlang}},
+  bycommentator    = {{komentovan\'{e}}{kom\adddot}},
+  byannotator      = {{anotovan\'{e}}{anot\adddot}},
+  withcommentator  = {{s\addnbspace koment\'{a}rom od}{s\addnbspace kom\adddot\ od}},
+  withannotator    = {{s\addnbspace anot\'{a}ciami od}{s\addnbspace anot\adddot\ od}},
+  withintroduction = {{s\addnbspace \'{u}vodom od}{s\addnbspace \'{u}v\adddot\ od}},
+  withforeword     = {{s\addnbspace predhovorom od}{s\addnbspace predh\adddot\ od}},
+  withafterword    = {{s\addnbspace doslovom od}{s\addnbspace dosl\adddot\ od}},
+  byeditortr       = {{editovan\'{e} a prelo\v{z}en\'{e} \lbx at lfromlang}%
+                      {ed\adddotspace a prel\adddot\ \lbx at sfromlang}},
   byeditorco       = {{editovan\'{e} a komentovan\'{e}}%
-                      {ed\adddotspace a kom\adddot\ }},
+                      {ed\adddotspace a kom\adddot}},
   byeditoran       = {{editovan\'{e} a anotovan\'{e}}%
-                      {ed\adddotspace a anot\adddot\ }},
+                      {ed\adddotspace a anot\adddot}},
   byeditorin       = {{editovan\'{e}, s\addnbspace \'{u}vodom}%
                       {ed.,\addabbrvspace s\addnbspace \'{u}v\adddot}},
   byeditorfo       = {{editovan\'{e}, s\addnbspace predhovorom}%
-                      {ed.,\addabbrvspace s\addnbspace predh.,}},
+                      {ed.,\addabbrvspace s\addnbspace predh\adddot}},
   byeditoraf       = {{editovan\'{e}, s\addnbspace doslovom}%
-                      {ed.,\addabbrvspace s\addnbspace dosl.,}},
+                      {ed.,\addabbrvspace s\addnbspace dosl\adddot}},
   byeditortrco     = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx at lfromlang\ a komentovan\'{e}}%
-                      {ed.,\addabbrvspace prel\adddot\ \lbx at sfromlang\ a kom\adddot\ }},
+                      {ed.,\addabbrvspace prel\adddot\ \lbx at sfromlang\ a kom\adddot}},
   byeditortran     = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx at lfromlang\ a anotovan\'{e}}%
-                      {ed.,\addabbrvspace prel\adddot\ \lbx at sfromlang\ a anot\adddot\ }},
+                      {ed.,\addabbrvspace prel\adddot\ \lbx at sfromlang\ a anot\adddot}},
   byeditortrin     = {{editovan\'{e} a prelo\v{z}en\'{e} \lbx at lfromlang, s\addnbspace \'{u}vodom}%
                       {ed\adddotspace a prel\adddot\ \lbx at sfromlang, s\addnbspace \'{u}v\adddot}},
   byeditortrfo     = {{editovan\'{e} a prelo\v{z}en\'{e} \lbx at lfromlang, s\addnbspace predhovorom}%
                       {ed\adddotspace a prel\adddot\ \lbx at sfromlang, s\addnbspace predh\adddot}},
   byeditortraf     = {{editovan\'{e} a prelo\v{z}en\'{e} \lbx at lfromlang, s\addnbspace doslovom}%
-                      {ed\adddotspace a prekl\adddot\ \lbx at sfromlang, s\addnbspace dosl\adddot}},
+                      {ed\adddotspace a prel\adddot\ \lbx at sfromlang, s\addnbspace dosl\adddot}},
   byeditorcoin     = {{editovan\'{e} a komentovan\'{e}, s\addnbspace \'{u}vodom}%
                       {ed\adddotspace a kom., s\addnbspace \'{u}v\adddot}},
   byeditorcofo     = {{editovan\'{e} a komentovan\'{e}, s\addnbspace predhovorom}%
@@ -367,356 +330,206 @@
                       {prel\adddot\ \lbx at sfromlang\ a anot., s\addnbspace predh\adddot}},
   bytranslatoranaf = {{prelo\v{z}en\'{e} \lbx at lfromlang\ a anotovan\'{e}, s\addnbspace doslovom}%
                       {prel\adddot\ \lbx at sfromlang\ a anot., s\addnbspace dosl\adddot}},
-  and              = {{a}%
-                      {a}},
-  andothers        = {{et\addabbrvspace al\adddot}%   %et\addabbrvspace alii
-                      {et\addabbrvspace al\adddot}},
-  andmore          = {{et\addabbrvspace al\adddot}%   %et\addabbrvspace alii
-                      {et\addabbrvspace al\adddot}},
-  volume           = {{zv\"{a}zok}%
-                      {zv\adddot}},
-  volumes          = {{zv\"{a}zky}%
-                      {zv\adddot}},
-  involumes        = {{in}%
-                      {in}},
-  jourvol          = {{ro\v{c}n\'{i}k}%
-                      {ro\v{c}\adddot}},
-  jourser          = {{ed\'{i}cia}%                   % ISO 690 -- section 2.17
-                      {ed\adddot}},
-  book             = {{kniha}%
-                      {kniha}},
-  part             = {{\v{c}as\v{t}}%
-                      {\v{c}as\v{t}}},
-  issue            = {{\v{c}\'{i}slo}%
-                      {\v{c}\'{i}slo}},
-  newseries        = {{nov\'{a} ed\'{i}cia}%          % ISO 690 -- section 2.17
-                      {n\adddotspace ed\adddot}},
-  oldseries        = {{star\'{a} ed\'{i}cia}%         % ISO 690 -- section 2.17
-                      {st\adddotspace ed\adddot}},
-  edition          = {{vydanie}%
-                      {vyd\adddot}},
-  reprint          = {{dotla\v{c}}%
-                      {dotl\adddot}},
-  reprintof        = {{dotla\v{c}}%
-                      {dotl\adddot}},
-  reprintas        = {{dotla\v{c}en\'{e} ako}%
-                      {dotl\adddotspace ako}},
-  reprintfrom      = {{dotla\v{c}en\'{e} z}%
-                      {dotl\adddotspace z}},
-  reviewof         = {{hodnotenie}%
-                      {hodn\adddot}},
-  translationof    = {{preklad}%
-                      {prekl\adddot}},
-  translationas    = {{prelo\v{z}en\'{e} ako}%
-                      {prel\adddotspace ako}},
-  translationfrom  = {{prelo\v{z}en\'{e} z}%
-                      {prel\adddotspace z}},
-  origpubas        = {{p\^{o}vodne vydan\'{e} ako}%
-                      {p\^{o}v\adddotspace vyd\adddotspace ako}},
-  origpubin        = {{p\^{o}vodne vydan\'{e} v\addnbspace roku}%
-                      {p\^{o}v\adddotspace vyd\adddotspace v\addnbspace r\adddot}},
-  astitle          = {{ako}%
-                      {ako}},
-  bypublisher      = {{}%
-                      {}},
-  page             = {{strana}%
-                      {s\adddot}},
-  pages            = {{strany}%
-                      {s\adddot}},
-  column           = {{st\'{l}pec}%
-                      {st\'{l}p\adddot}},
-  columns          = {{st\'{l}pce}%
-                      {st\'{l}p\adddot}},
-  line             = {{riadok}%
-                      {r\adddot}},
-  lines            = {{riadky}%
-                      {r\adddot}},
-  nodate           = {{nedatovan\'{e}}%               % ISO 690 -- section 9.3.4
-                      {b\adddotspace r\adddot}},      % bez roku
-  verse            = {{ver\v{s}}%
-                      {v\adddot}},
-  verses           = {{ver\v{s}e}%
-                      {v\adddot}},
-  section          = {{paragraf}%
-                      {\S}},
-  sections         = {{paragrafy}%
-                      {\S\S}},
-  paragraph        = {{odsek}%
-                      {ods\adddot}},
-  paragraphs       = {{odseky}%
-                      {ods\adddot}},
-  in               = {{in}%
-                      {in}},
-  inseries         = {{v}%
-                      {v}},
-  ofseries         = {{z}%
-                      {z}},
-  number           = {{\v{c}\'{i}slo}%
-                      {\v{c}\adddot}},
-  chapter          = {{kapitola}%
-                      {kap\adddot}},
-% bathesis         = {{}{}},% FIXME: missing
-  mathesis         = {{diplomov\'{a} pr\'{a}ca}%
-                      {dipl\adddotspace pr\adddot}},
-  phdthesis        = {{dizerta\v{c}n\'{a} pr\'{a}ca}%
-                      {diz\adddotspace pr\adddot}},
-  candthesis       = {{kandid\'{a}tska pr\'{a}ca}%
-                      {kand\adddotspace pr\adddot}},
-  resreport        = {{v\'{y}skumn\'{a} spr\'{a}va}%
-                      {v\'{y}sk\adddot\ spr\adddot}},
-  techreport       = {{technick\'{a} spr\'{a}va}%
-                      {tech\adddotspace spr\adddot}},
-  software         = {{po\v{c}\'{i}ta\v{c}ov\'{y} softv\'{e}r}%
-                      {soft\adddot}},
-  datacd           = {{CD-ROM}%
-                      {CD-ROM}},
-  audiocd          = {{audio CD}%
-                      {audio CD}},
-  version          = {{verzia}%
-                      {ver\adddot}},
-  url              = {{url}%
-                      {url}},
-  urlfrom          = {{dostupn\'{e} z}%               % ISO 690 -- section 15.2.6
-                      {dostupn\'{e} z}},
-  urlseen          = {{citovane\'{e}}%
-                      {cit\adddot}},
-  inpreparation    = {{v\addnbspace pr\'{i}prave}%
-                      {v\addnbspace pr\'{i}prave}},
-  submitted        = {{predlo\v{z}en\'{e}}%
-                      {predl\adddot}},
-  forthcoming      = {{prijat\'{e}}%
-                      {prij\adddot}},
-  inpress          = {{v\addnbspace tla\v{c}i}%
-                      {v\addnbspace tla\v{c}i}},
-  prepublished     = {{pred publikovan\'{i}m}%
-                      {pred publ\adddot}},
-  citedas          = {{\v{d}alej citovan\'{e} ako}%
-                      {\v{d}alej cit\adddotspace ako}},
-  thiscite         = {{obzvl\'{a}\v{s}\v{t}}%
-                      {obzvl\adddot}},
-  seenote          = {{vi\v{d} pozn\'{a}mka}%
-                      {vi\v{d} pozn\adddot}},
-  quotedin         = {{citovan\'{e} v}%
-                      {cit\adddotspace v}},
-  idem             = {{idem}%
-                      {idem}},
-  idemsm           = {{idem}%
-                      {idem}},
-  idemsf           = {{eadem}%
-                      {eadem}},
-  idemsn           = {{idem}%
-                      {idem}},
-  idempm           = {{eidem}%
-                      {eidem}},
-  idempf           = {{eaedem}%
-                      {eaedem}},
-  idempn           = {{eadem}%
-                      {eadem}},
-  idempp           = {{eidem}%
-                      {eidem}},
-  ibidem           = {{ibidem}%
-                      {ibid\adddot}},
-  opcit            = {{op\adddotspace cit\adddot}%
-                      {op\adddotspace cit\adddot}},
-  loccit           = {{loc\adddotspace cit\adddot}%
-                      {loc\adddotspace cit\adddot}},
-  confer           = {{cf\adddot}%
-                      {cf\adddot}},
-  sequens          = {{sq\adddot}%
-                      {sq\adddot}},
-  sequentes        = {{sqq\adddot}%
-                      {sqq\adddot}},
-  passim           = {{passim}%
-                      {pass\adddot}},
-  see              = {{vi\v{d}}%
-                      {vi\v{d}}},
-  seealso          = {{vi\v{d} tie\v{z}}%
-                      {vi\v{d} tie\v{z}}},
-  backrefpage      = {{citovan\'{e} na strane}%
-                      {cit\adddotspace na s\adddot}},
-  backrefpages     = {{citovan\'{e} na stran\'{a}ch}%
-                      {cit\adddotspace na str\adddot}},
-  january          = {{janu\'{a}r}%
-                      {jan\adddot}},
-  february         = {{febru\'{a}r}%
-                      {feb\adddot}},
-  march            = {{marec}%
-                      {mar\adddot}},
-  april            = {{apr\'{i}l}%
-                      {apr\adddot}},
-  may              = {{m\'{a}j}%
-                      {m\'{a}j}},
-  june             = {{j\'{u}n}%
-                      {j\'{u}n}},
-  july             = {{j\'{u}l}%
-                      {j\'{u}l}},
-  august           = {{august}%
-                      {aug\adddot}},
-  september        = {{september}%
-                      {sept\adddot}},
-  october          = {{okt\'{o}ber}%
-                      {okt\adddot}},
-  november         = {{november}%
-                      {nov\adddot}},
-  december         = {{december}%
-                      {dec\adddot}},
-  langamerican     = {{americk\'{a} angli\v{c}tina}%
-                      {am\adddot angl\adddot}},
-  langbrazilian    = {{braz\'{i}lska portugal\v{c}ina}%
-                      {braz\adddot portugal\adddot}},
-% langbulgarian    = {{}{}},% FIXME: missing
-  langcatalan      = {{katal\'{a}n\v{c}ina}%
-                      {katal\adddot}},
-  langcroatian     = {{chorv\'{a}t\v{c}ina}%
-                      {chorv\adddot}},
-  langczech        = {{\v{c}e\v{s}tina}%
-                      {\v{c}e\v{s}tina}},
-  langdanish       = {{d\'{a}n\v{c}ina}%
-                      {d\'{a}n\adddot}},
-  langdutch        = {{holand\v{c}ina}%
-                      {hol\adddot}},
-  langenglish      = {{angli\v{c}tina}%
-                      {angl\adddot}},
-% langestonian     = {{}{}},% FIXME: missing
-  langfinnish      = {{f\'{i}n\v{c}ina}%
-                      {f\'{i}n\adddot}},
-  langfrench       = {{franc\'{u}z\v{s}tina}%
-                      {franc\adddot}},
-  langgalician     = {{gal\'icij\v{c}ina}%
-                      {gal\adddot}},
-  langgerman       = {{nem\v{c}ina}%
-                      {nem\adddot}},
-  langgreek        = {{gr\'{e}\v{c}tina}%
-                      {gr\'{e}\v{c}tina}},
-% langhungarian    = {{}{}}, % FIXME: missing
-  langitalian      = {{talian\v{c}ina}%
-                      {tal\adddot}},
-  langjapanese     = {{japon\v{c}ina}%
-                      {jap\adddot}},
-  langlatin        = {{latin\v{c}ina}%
-                      {lat\adddot}},
-% langlatvian      = {{}{}},% FIXME: missing
-  langnorwegian    = {{n\'{o}r\v{c}ina}%
-                      {n\'{o}r\adddot}},
-  langpolish       = {{po\v{l}\v{s}tina}%
-                      {po\v{l}\adddot}},
-  langportuguese   = {{portugal\v{c}ina}%
-                      {portugal\adddot}},
-  langrussian      = {{ru\v{s}tina}%
-                      {ru\v{s}tina}},
-  langslovak       = {{sloven\v{c}ina}%
-                      {sloven\v{c}ina}},
-  langslovene      = {{slovin\v{c}ina}%
-                      {slovin\v{c}ina}},
-  langspanish      = {{\v{s}paniel\v{c}ina}%
-                      {\v{s}pan\adddot}},
-  langswedish      = {{\v{s}v\'{e}d\v{c}ina}%
-                      {\v{s}v\'{e}d\adddot}},
-  fromamerican     = {{z\addnbspace americkej angli\v{c}tiny}%
-                      {z\addnbspace amer\adddot angl\adddot}},
-  frombrazilian    = {{z\addnbspace braz\'{i}lskej portugal\v{c}iny}%
-                      {z\addnbspace braz\adddotspace portugal\adddot}},
-% frombulgarian    = {{}{}},% FIXME: missing
-  fromcatalan      = {{z\addnbspace katal\'{a}n\v{c}iny}%
-                      {z\addnbspace katal\adddot}},
-  fromcroatian     = {{z\addnbspace chorvat\v{c}iny}%
-                      {z\addnbspace chorv\adddot}},
-  fromczech        = {{z\addnbspace \v{c}e\v{s}tiny}%
-                      {z\addnbspace \v{c}e\v{s}tiny}},
-  fromdanish       = {{z\addnbspace d\'{a}n\v{c}iny}%
-                      {z\addnbspace d\'{a}n\adddot}},
-  fromdutch        = {{z\addnbspace holand\v{c}iny}%
-                      {z\addnbspace hol\adddot}},
-  fromenglish      = {{z\addnbspace angli\v{c}tiny}%
-                      {z\addnbspace angl\adddot}},
-% fromestonian     = {{}{}},% FIXME: missing
-  fromfinnish      = {{z\addnbspace f\'{i}n\v{c}iny}%
-                      {z\addnbspace f\'{i}n\adddot}},
-  fromfrench       = {{z\addnbspace franc\'{u}z\v{s}tiny}%
-                      {z\addnbspace franc\adddot}},
-  fromgalician     = {{z\addnbspace gal\'icij\v{c}ina}%
-                      {z\addbnspace gal\adddot}},
-  fromgerman       = {{z\addnbspace nem\v{c}iny}%
-                      {z\addnbspace nem\adddot}},
-  fromgreek        = {{z\addnbspace gr\'{e}\v{c}tiny}%
-                      {z\addnbspace gr\'{e}\v{c}tiny}},
-% fromhungarian    = {{}{}}, % FIXME: missing
-  fromitalian      = {{z\addnbspace talian\v{c}iny}%
-                      {z\addnbspace tal\adddot}},
-  fromjapanese     = {{z\addnbspace japon\v{c}iny}%
-                      {z\addnbspace jap\adddot}},
-  fromlatin        = {{z\addnbspace latin\v{c}iny}%
-                      {z\addnbspace lat\adddot}},
-% fromlatvian      = {{}{}},% FIXME: missing
-  fromnorwegian    = {{z\addnbspace n\'{o}r\v{c}iny}%
-                      {z\addnbspace n\'{o}r\adddot}},
-  frompolish       = {{z\addnbspace po\v{l}\v{s}tiny}%
-                      {z\addnbspace po\v{l}\adddot}},
-  fromportuguese   = {{z\addnbspace portugal\v{c}iny}%
-                      {z\addnbspace portugal\adddot}},
-  fromrussian      = {{z\addnbspace ru\v{s}tiny}%
-                      {z\addnbspace ru\v{s}tiny}},
-  fromslovak       = {{zo sloven\v{c}iny}%
-                      {zo sloven\v{c}iny}},
-  fromslovene      = {{zo slovin\v{c}iny}%
-                      {zo slovin\v{c}iny}},
-  fromspanish      = {{zo \v{s}paniel\v{c}iny}%
-                      {zo \v{s}pan\adddot}},
-  fromswedish      = {{zo \v{s}v\'{e}d\v{c}iny}%
-                      {zo \v{s}v\'{e}d\adddot}},
-  countryde        = {{Nemecko}%
-                      {DE}},
-  countryeu        = {{Eur\'{o}pska \'{u}nia}%
-                      {EU}},
-  countryep        = {{Eur\'{o}pska \'{u}nia}%
-                      {EP}},
-  countryfr        = {{Franc\'{u}zsko}%
-                      {FR}},
-  countryuk        = {{Ve\v{l}k\'{a} Brit\'{a}nia}%
-                      {GB}},
-  countryus        = {{Spojen\'{e} \v{S}t\'{a}ty Americk\'{e}}%
-                      {US}},
-  patent           = {{patent}%
-                      {pat\adddot}},
-  patentde         = {{nemeck\'{y} patent}%
-                      {nem\adddot\ pat\adddot}},
-  patenteu         = {{eur\'{o}psky patent}%
-                      {eur\adddot\ pat\adddot}},
-  patentfr         = {{franc\'{u}zsky patent}%
-                      {franc\adddot\ pat\adddot}},
-  patentuk         = {{britsk\'{y} patent}%
-                      {britsk\'{y} pat\adddot}},
-  patentus         = {{americk\'{y} patent}%
-                      {US\adddotspace pat\adddot}},
-  patreq           = {{patentov\'{a} \v{z}iados\v{t}}%
-                      {pat\adddot\ \v{z}iad\adddot}},
-  patreqde         = {{nemeck\'{a} patentov\'{a} \v{z}iados\v{t}}%
-                      {nem\adddot\ pat\adddot\ \v{z}iad\adddot}},
-  patreqeu         = {{eur\'{o}pska patentov\'{a} \v{z}iados\v{t}}%
-                      {eur\adddot\ pat\adddot\ \v{z}iad\adddot}},
-  patreqfr         = {{franc\'{u}zska patentov\'{a} \v{z}iados\v{t}}%
-                      {franc\adddot\ pat\adddot\ \v{z}iad\adddot}},
-  patrequk         = {{britsk\'{a} patentov\'{a} \v{z}iados\v{t}}%
-                      {brit\adddot\ pat\adddot\ \v{z}iad\adddot}},
-  patrequs         = {{US\adddotspace patentov\'{a} \v{z}iados\v{t}}%
-                      {US\adddotspace pat\adddot\ \v{z}iad\adddot}},
-  file             = {{s\'{u}bor}%
-                      {s\'{u}b\adddot}},
-  library          = {{kni\v{z}nica}%
-                      {kni\v{z}nica}},
-  abstract         = {{abstrakt}%
-                      {abst\adddot}},
-  annotation       = {{anot\'{a}cia}%
-                      {anot\adddot}},
-  commonera        = {{n\'a\v{s}ho letopo\v{c}tu}{n\adddotspace l\adddot}},
-  beforecommonera  = {{pred na\v{s}\'{\i}m letopo\v{c}tom}{pred\ n\adddotspace l\adddot}},
-  annodomini       = {{po Kristovi}{po\ Kr\adddot}},
-  beforechrist     = {{pred Kristom}{pred\ Kr\adddot}},
-% circa            = {{}{}},% FIXME: missing
-% spring           = {{}{}},% FIXME: missing
-% summer           = {{}{}},% FIXME: missing
-% autumn           = {{}{}},% FIXME: missing
-% winter           = {{}{}},% FIXME: missing
+  and              = {{a}{a}},
+  andothers        = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}},
+  andmore          = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}},
+  volume           = {{zv\"{a}zok}{zv\adddot}},
+  volumes          = {{zv\"{a}zky}{zv\adddot}},
+  involumes        = {{in}{in}},
+  jourvol          = {{ro\v{c}n\'{\i}k}{ro\v{c}\adddot}},
+  jourser          = {{ed\'{\i}cia}{ed\adddot}},
+  book             = {{kniha}{kniha}},
+  part             = {{\v{c}as\v{t}}{\v{c}as\v{t}}},
+  issue            = {{\v{c}\'{\i}slo}{\v{c}\'{\i}slo}},
+  newseries        = {{nov\'{a} ed\'{\i}cia}{n\adddotspace ed\adddot}},
+  oldseries        = {{star\'{a} ed\'{\i}cia}{st\adddotspace ed\adddot}},
+  edition          = {{vydanie}{vyd\adddot}},
+  reprint          = {{dotla\v{c}}{dotl\adddot}},
+  reprintof        = {{dotla\v{c}}{dotl\adddot}},
+  reprintas        = {{dotla\v{c}en\'{e} ako}{dotl\adddotspace ako}},
+  reprintfrom      = {{dotla\v{c}en\'{e} z\addnbspace}{dotl\adddotspace z\addnbspace}},
+  reviewof         = {{recenzia}{recenz\adddot}},
+  translationof    = {{preklad}{prekl\adddot}},
+  translationas    = {{prelo\v{z}en\'{e} ako}{prel\adddotspace ako}},
+  translationfrom  = {{prelo\v{z}en\'{e} z\addnbspace}{prel\adddotspace z\addnbspace}},
+  origpubas        = {{p\^{o}vodne vydan\'{e} ako}{p\^{o}v\adddotspace vyd\adddotspace ako}},
+  origpubin        = {{p\^{o}vodne vydan\'{e} v\addnbspace roku}{p\^{o}v\adddotspace vyd\adddotspace v\addnbspace r\adddot}},
+  astitle          = {{ako}{ako}},
+  bypublisher      = {{}{}},
+  nodate           = {{nedatovan\'{e}}{b\adddot r\adddot}},% bez roku
+  page             = {{strana}{s\adddot}},
+  pages            = {{strany}{s\adddot}},
+  column           = {{st\'{l}pec}{st\'{l}p\adddot}},
+  columns          = {{st\'{l}pce}{st\'{l}p\adddot}},
+  line             = {{riadok}{r\adddot}},
+  lines            = {{riadky}{r\adddot}},
+  verse            = {{ver\v{s}}{v\adddot}},
+  verses           = {{ver\v{s}e}{v\adddot}},
+  section          = {{sekcia}{\S}},
+  sections         = {{sekcie}{\S\S}},
+  paragraph        = {{odsek}{ods\adddot}},
+  paragraphs       = {{odseky}{ods\adddot}},
+  pagetotal        = {{strana}{s\adddot}},
+  pagetotals       = {{strany}{s\adddot}},
+  columntotal      = {{st\'{l}pec}{st\'{l}p\adddot}},
+  columntotals     = {{st\'{l}pce}{st\'{l}p\adddot}},
+  linetotal        = {{riadok}{r\adddot}},
+  linetotals       = {{riadky}{r\adddot}},
+  versetotal       = {{ver\v{s}}{v\adddot}},
+  versetotals      = {{ver\v{s}e}{v\adddot}},
+  sectiontotal     = {{sekcia}{\S}},
+  sectiontotals    = {{sekcie}{\S\S}},
+  paragraphtotal   = {{odsek}{ods\adddot}},
+  paragraphtotals  = {{odseky}{ods\adddot}},
+  in               = {{in}{in}},
+  inseries         = {{in}{in}},
+  ofseries         = {{z}{z}},
+  number           = {{\v{c}\'{\i}slo}{\v{c}\adddot}},
+  chapter          = {{kapitola}{kap\adddot}},
+  bathesis         = {{bakal\'{a}rska pr\'{a}ca}{bak\adddotspace pr\adddot}},
+  mathesis         = {{diplomov\'{a} pr\'{a}ca}{dipl\adddotspace pr\adddot}},
+  phdthesis        = {{dizerta\v{c}n\'{a} pr\'{a}ca}{diz\adddotspace pr\adddot}},
+  candthesis       = {{kandid\'{a}tska pr\'{a}ca}{kand\adddotspace pr\adddot}},% FIXME: unsure
+  resreport        = {{v\'{y}skumn\'{a} spr\'{a}va}{v\'{y}sk\adddot\ spr\adddot}},
+  techreport       = {{technick\'{a} spr\'{a}va}{tech\adddotspace spr\adddot}},
+  software         = {{po\v{c}\'{\i}ta\v{c}ov\'{y} softv\'{e}r}{soft\adddot}},
+  datacd           = {{CD-ROM}{CD-ROM}},
+  audiocd          = {{audio CD}{audio CD}},
+  version          = {{verzia}{ver\adddot}},
+  url              = {{URL}{URL}},
+  urlfrom          = {{dostupn\'{e} z\addnbspace}{dostupn\'{e} z\addnbspace}},
+  urlseen          = {{citovan\'{e}}{cit\adddot}},
+  inpreparation    = {{v\addnbspace pr\'{\i}prave}{v\addnbspace pr\'{\i}prave}},
+  submitted        = {{odoslan\'{e}}{odosl\adddot}},
+  forthcoming      = {{bud\'{u}ce}{bud\adddot}},
+  inpress          = {{v\addnbspace tla\v{c}i}{v\addnbspace tla\v{c}i}},
+  prepublished     = {{pred publikovan\'{\i}m}{pred publ\adddot}},
+  citedas          = {{\v{d}alej citovan\'{e} ako}{\v{d}alej cit\adddotspace ako}},
+  thiscite         = {{obzvl\'{a}\v{s}\v{t}}{obzvl\adddot}},
+  seenote          = {{vi\v{d} pozn\'{a}mka}{vi\v{d} pozn\adddot}},
+  quotedin         = {{citovan\'{e} v\addnbspace}{cit\adddotspace v\addnbspace}},
+  idem             = {{idem}{idem}},
+  idemsm           = {{idem}{idem}},
+  idemsf           = {{eadem}{eadem}},
+  idemsn           = {{idem}{idem}},
+  idempm           = {{eidem}{eidem}},
+  idempf           = {{eaedem}{eaedem}},
+  idempn           = {{eadem}{eadem}},
+  idempp           = {{eidem}{eidem}},
+  ibidem           = {{ibidem}{ibid\adddot}},
+  opcit            = {{op\adddotspace cit\adddot}{op\adddotspace cit\adddot}},
+  loccit           = {{loc\adddotspace cit\adddot}{loc\adddotspace cit\adddot}},
+  confer           = {{cf\adddot}{cf\adddot}},
+  sequens          = {{sq\adddot}{sq\adddot}},
+  sequentes        = {{sqq\adddot}{sqq\adddot}},
+  passim           = {{passim}{pass\adddot}},
+  see              = {{vi\v{d}}{vi\v{d}}},
+  seealso          = {{vi\v{d} tie\v{z}}{vi\v{d} tie\v{z}}},
+  backrefpage      = {{citovan\'{e} na strane}{cit\adddotspace na str\adddot}},
+  backrefpages     = {{citovan\'{e} na stran\'{a}ch}{cit\adddotspace na s\adddot}},
+  january          = {{janu\'{a}r}{jan\adddot}},
+  february         = {{febru\'{a}r}{feb\adddot}},
+  march            = {{marec}{mar\adddot}},
+  april            = {{apr\'{\i}l}{apr\adddot}},
+  may              = {{m\'{a}j}{m\'{a}j}},
+  june             = {{j\'{u}n}{j\'{u}n}},
+  july             = {{j\'{u}l}{j\'{u}l}},
+  august           = {{august}{aug\adddot}},
+  september        = {{september}{sept\adddot}},
+  october          = {{okt\'{o}ber}{okt\adddot}},
+  november         = {{november}{nov\adddot}},
+  december         = {{december}{dec\adddot}},
+  langamerican     = {{americk\'{a} angli\v{c}tina}{am\adddot\ angl\adddot}},
+  langbrazilian    = {{braz\'{\i}lska portugal\v{c}ina}{braz\adddot\ portugal\adddot}},
+  langbulgarian    = {{bulhar\v{c}ina}{bulh\adddot}},
+  langcatalan      = {{katal\'{a}n\v{c}ina}{katal\adddot}},
+  langcroatian     = {{chorv\'{a}t\v{c}ina}{chorv\adddot}},
+  langczech        = {{\v{c}e\v{s}tina}{\v{c}e\v{s}tina}},
+  langdanish       = {{d\'{a}n\v{c}ina}{d\'{a}n\adddot}},
+  langdutch        = {{holand\v{c}ina}{hol\adddot}},
+  langenglish      = {{angli\v{c}tina}{angl\adddot}},
+  langestonian     = {{est\'{o}n\v{c}ina}{est\adddot}},
+  langfinnish      = {{f\'{\i}n\v{c}ina}{f\'{\i}n\adddot}},
+  langfrench       = {{franc\'{u}z\v{s}tina}{franc\adddot}},
+  langgalician     = {{gal\'{\i}cij\v{c}ina}{gal\adddot}},
+  langgerman       = {{nem\v{c}ina}{nem\adddot}},
+  langgreek        = {{gr\'{e}\v{c}tina}{gr\'{e}\v{c}tina}},
+  langhungarian    = {{ma\v{d}ar\v{c}ina}{ma\v{d}\adddot}},
+  langitalian      = {{talian\v{c}ina}{tal\adddot}},
+  langjapanese     = {{japon\v{c}ina}{jap\adddot}},
+  langlatin        = {{latin\v{c}ina}{lat\adddot}},
+  langlatvian      = {{loty\v{s}tina}{lot\adddot}},
+  langnorwegian    = {{n\'{o}r\v{c}ina}{n\'{o}r\adddot}},
+  langpolish       = {{po\v{l}\v{s}tina}{po\v{l}\adddot}},
+  langportuguese   = {{portugal\v{c}ina}{port\adddot}},
+  langrussian      = {{ru\v{s}tina}{ru\v{s}tina}},
+  langserbian      = {{srb\v{c}ina}{srb\adddot}},
+  langslovak       = {{sloven\v{c}ina}{sloven\v{c}ina}},
+  langslovene      = {{slovin\v{c}ina}{slovin\v{c}ina}},
+  langspanish      = {{\v{s}paniel\v{c}ina}{\v{s}pan\adddot}},
+  langswedish      = {{\v{s}v\'{e}d\v{c}ina}{\v{s}v\'{e}d\adddot}},
+  langukrainian    = {{ukrajin\v{c}ina}{ukr\adddot}},
+  fromamerican     = {{z\addnbspace americkej angli\v{c}tiny}{z\addnbspace amer\adddot\ angl\adddot}},
+  frombrazilian    = {{z\addnbspace braz\'{\i}lskej portugal\v{c}iny}{z\addnbspace braz\adddotspace portugal\adddot}},
+  frombulgarian    = {{z\addnbspace bulhar\v{c}iny}{z\addnbspace bulh\adddot}},
+  fromcatalan      = {{z\addnbspace katal\'{a}n\v{c}iny}{z\addnbspace katal\adddot}},
+  fromcroatian     = {{z\addnbspace chorvat\v{c}iny}{z\addnbspace chorv\adddot}},
+  fromczech        = {{z\addnbspace \v{c}e\v{s}tiny}{z\addnbspace \v{c}e\v{s}tiny}},
+  fromdanish       = {{z\addnbspace d\'{a}n\v{c}iny}{z\addnbspace d\'{a}n\adddot}},
+  fromdutch        = {{z\addnbspace holand\v{c}iny}{z\addnbspace hol\adddot}},
+  fromenglish      = {{z\addnbspace angli\v{c}tiny}{z\addnbspace angl\adddot}},
+  fromestonian     = {{z\addnbspace est\'{o}n\v{c}iny}{z\addnbspace est\adddot}},
+  fromfinnish      = {{z\addnbspace f\'{\i}n\v{c}iny}{z\addnbspace f\'{\i}n\adddot}},
+  fromfrench       = {{z\addnbspace franc\'{u}z\v{s}tiny}{z\addnbspace franc\adddot}},
+  fromgalician     = {{z\addnbspace gal\'{\i}cij\v{c}ina}{z\addbnspace gal\adddot}},
+  fromgerman       = {{z\addnbspace nem\v{c}iny}{z\addnbspace nem\adddot}},
+  fromgreek        = {{z\addnbspace gr\'{e}\v{c}tiny}{z\addnbspace gr\'{e}\v{c}tiny}},
+  fromhungarian    = {{z\addnbspace ma\v{d}ar\v{c}iny}{z\addnbspace ma\v{d}\adddot}},
+  fromitalian      = {{z\addnbspace talian\v{c}iny}{z\addnbspace tal\adddot}},
+  fromjapanese     = {{z\addnbspace japon\v{c}iny}{z\addnbspace jap\adddot}},
+  fromlatin        = {{z\addnbspace latin\v{c}iny}{z\addnbspace lat\adddot}},
+  fromlatvian      = {{z\addnbspace loty\v{s}tiny}{z\addnbspace lot\adddot}},
+  fromnorwegian    = {{z\addnbspace n\'{o}r\v{c}iny}{z\addnbspace n\'{o}r\adddot}},
+  frompolish       = {{z\addnbspace po\v{l}\v{s}tiny}{z\addnbspace po\v{l}\adddot}},
+  fromportuguese   = {{z\addnbspace portugal\v{c}iny}{z\addnbspace portugal\adddot}},
+  fromrussian      = {{z\addnbspace ru\v{s}tiny}{z\addnbspace ru\v{s}tiny}},
+  fromserbian      = {{zo srb\v{c}iny}{zo srb\adddot}},
+  fromslovak       = {{zo sloven\v{c}iny}{zo sloven\v{c}iny}},
+  fromslovene      = {{zo slovin\v{c}iny}{zo slovin\v{c}iny}},
+  fromspanish      = {{zo \v{s}paniel\v{c}iny}{zo \v{s}pan\adddot}},
+  fromswedish      = {{zo \v{s}v\'{e}d\v{c}iny}{zo \v{s}v\'{e}d\adddot}},
+  fromukrainian    = {{z\addnbspace ukrajin\v{c}iny}{z\addnbspace ukr\adddot}},
+  countryde        = {{Nemecko}{DE}},
+  countryeu        = {{Eur\'{o}pska \'{u}nia}{EU}},
+  countryep        = {{Eur\'{o}pska \'{u}nia}{EP}},
+  countryfr        = {{Franc\'{u}zsko}{FR}},
+  countryuk        = {{Ve\v{l}k\'{a} Brit\'{a}nia}{GB}},
+  countryus        = {{Spojen\'{e} \v{s}t\'{a}ty americk\'{e}}{US}},
+  patent           = {{patent}{pat\adddot}},
+  patentde         = {{nemeck\'{y} patent}{nem\adddot\ pat\adddot}},
+  patenteu         = {{eur\'{o}psky patent}{eur\adddot\ pat\adddot}},
+  patentfr         = {{franc\'{u}zsky patent}{franc\adddot\ pat\adddot}},
+  patentuk         = {{britsk\'{y} patent}{brit\adddot\ pat\adddot}},
+  patentus         = {{US patent}{US pat\adddot}},
+  patreq           = {{patentov\'{a} \v{z}iados\v{t}}{pat\adddot\ \v{z}iad\adddot}},
+  patreqde         = {{nemeck\'{a} patentov\'{a} \v{z}iados\v{t}}{nem\adddot\ pat\adddot\ \v{z}iad\adddot}},
+  patreqeu         = {{eur\'{o}pska patentov\'{a} \v{z}iados\v{t}}{eur\adddot\ pat\adddot\ \v{z}iad\adddot}},
+  patreqfr         = {{franc\'{u}zska patentov\'{a} \v{z}iados\v{t}}{franc\adddot\ pat\adddot\ \v{z}iad\adddot}},
+  patrequk         = {{britsk\'{a} patentov\'{a} \v{z}iados\v{t}}{brit\adddot\ pat\adddot\ \v{z}iad\adddot}},
+  patrequs         = {{US patentov\'{a} \v{z}iados\v{t}}{US pat\adddot\ \v{z}iad\adddot}},
+  file             = {{s\'{u}bor}{s\'{u}b\adddot}},
+  library          = {{kni\v{z}nica}{kni\v{z}nica}},
+  abstract         = {{abstrakt}{abst\adddot}},
+  annotation       = {{anot\'{a}cia}{anot\adddot}},
+  commonera        = {{n\'{a}\v{s}ho letopo\v{c}tu}{n\adddotspace l\adddot}},
+  beforecommonera  = {{pred na\v{s}\'{\i}m letopo\v{c}tom}{pred n\adddotspace l\adddot}},
+  annodomini       = {{po Kristovi}{po Kr\adddot}},
+  beforechrist     = {{pred Kristom}{pred Kr\adddot}},
+  circa            = {{cirka}{ca\adddot}},
+  spring           = {{jar}{jar}},
+  summer           = {{leto}{leto}},
+  autumn           = {{jese\v{n}}{jese\v{n}}},
+  winter           = {{zima}{zima}},
   am               = {{AM}{AM}},
   pm               = {{PM}{PM}},
 }

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/slovene.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/slovene.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/slovene.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -40,13 +40,17 @@
   \def\mkbibordedition{\mkbibordinal}%
   \def\mkbibordseries{\mkbibfemord}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -53,13 +53,17 @@
   \def\mkbibordedition{\mkbibfemord}%
   \def\mkbibordseries{\mkbibfemord}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/swedish.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/swedish.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/swedish.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -77,13 +77,17 @@
       Swedish dates. Using format 'short' instead}%
     \mkdaterangefull{short}}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%
@@ -332,7 +336,7 @@
   origpubin        = {{ursprungligen publicerad}{ursprungligen publ\adddot}},
   astitle          = {{som}{som}},
   bypublisher      = {{av}{av}},
-  nodate           = {{u\adddot d\adddot}{n\adddot d\adddot}},%FIXME
+  nodate           = {{u\adddot\,\aa \adddot}{u\adddot\,\aa \adddot}},
   page             = {{sidan}{s\adddot}},
   pages            = {{sidorna}{s\adddot}},
   column           = {{spalt}{sp\adddot}},

Added: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/turkish.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/turkish.lbx	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/turkish.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -0,0 +1,552 @@
+\ProvidesFile{turkish.lbx}
+[\abx at lbxid]
+
+\DeclareRedundantLanguages{turkish}{turkish}
+
+\DeclareBibliographyExtras{%
+  \DeclareCapitalPunctuation{.!?}%
+  \protected\def\bibrangedash{%
+    \textendash\penalty\hyphenpenalty}% breakable dash
+  \let\finalandcomma=\empty
+  \let\finalandsemicolon=\empty
+  \protected\def\mkbibordinal#1{\stripzeros{#1}\adddot}%
+  \protected\def\mkbibmascord{\mkbibordinal}%
+  \protected\def\mkbibfemord{\mkbibordinal}%
+  \protected\def\mkbibneutord{\mkbibordinal}%
+  \protected\def\mkbibdatelong#1#2#3{%
+    \iffieldundef{#3}
+      {}
+      {\thefield{#3}%
+       \iffieldundef{#2}{}{\nobreakspace}}%
+    \iffieldundef{#2}
+      {}
+      {\mkbibmonth{\thefield{#2}}%
+       \iffieldundef{#1}{}{\space}}%
+    \iffieldbibstring{#1}
+      {\bibstring{\thefield{#1}}}
+      {\dateeraprintpre{#1}\stripzeros{\thefield{#1}}}}%
+  \protected\def\mkbibdateshort#1#2#3{%
+    \iffieldundef{#3}
+      {}
+      {\mkdayzeros{\thefield{#3}}%
+       \iffieldundef{#2}{}{/}}%
+    \iffieldundef{#2}
+      {}
+      {\mkmonthzeros{\thefield{#2}}%
+       \iffieldundef{#1}{}{/}}%
+    \iffieldbibstring{#1}
+      {\bibstring{\thefield{#1}}}
+      {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
+  \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
+      \iffieldundef{#4}{}
+        {\bibtimezonesep
+         \mkbibtimezone{\thefield{#4}}}}%
+  \expandafter\protected\expandafter\def\csname mkbibtime12h\endcsname#1#2#3#4{%
+      \stripzeros{\mktimehh{\thefield{#1}}}\bibtimesep
+      \forcezerosmdt{\thefield{#2}}%
+      \iffieldundef{#3}{}
+        {\bibtimesep
+         \forcezerosmdt{\thefield{#3}}}%
+       \space
+       \ifnumless{\thefield{#1}}{12}
+         {\bibstring{am}}
+         {\bibstring{pm}}%
+      \iffieldundef{#4}{}
+       {\space\bibtimezonesep
+        \parentext{\mkbibtimezone{\thefield{#4}}}}}%
+  \protected\def\mkbibseasondateshort#1#2{%
+    \mkbibseason{\thefield{#2}}%
+    \iffieldundef{#1}{}{\space}%
+    \dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}%
+  \protected\def\mkbibseasondatelong#1#2{%
+    \mkbibseason{\thefield{#2}}%
+    \iffieldundef{#1}{}{\space}%
+    \dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}%
+  \savecommand\lbx at lfromlang
+  \savecommand\lbx at sfromlang
+  \def\lbx at lfromlang{%
+    \iflistundef{origlanguage}
+      {}
+      {\printlist[lfromoriglanguage]{origlanguage}\space}}%
+  \def\lbx at sfromlang{%
+    \iflistundef{origlanguage}
+      {}
+      {\printlist[sfromoriglanguage]{origlanguage}\space}}%
+}
+
+\UndeclareBibliographyExtras{%
+  \restorecommand\lbx at lfromlang
+  \restorecommand\lbx at sfromlang
+}
+
+\DeclareBibliographyStrings{%
+  bibliography     = {{Kaynak\c{c}a}{Kaynak\c{c}a}},
+  references       = {{Kaynaklar}{Kaynaklar}},
+  shorthands       = {{K\i saltmalar dizini}{K\i saltmalar}},
+  editor           = {{edit\"{o}r}{ed\adddot}},
+  editors          = {{edit\"{o}rler}{ed\adddot}},
+  compiler         = {{derleyen}{der\adddot}},
+  compilers        = {{derleyenler}{der\adddot}},
+  redactor         = {{yay\i na haz\i rlayan}{yay\adddot\ haz\adddot}},
+  redactors        = {{yay\i na haz\i rlayanlar}{yay\adddot\ haz\adddot}},
+  reviser          = {{tashih eden}{tashih\adddot}},
+  revisers         = {{tashih edenler}{tashih\adddot}},
+  founder          = {{kurucu}{kur\adddot}},
+  founders         = {{kurucular}{kur\adddot}},
+  continuator      = {{tamamlayan}{tam\adddot}},
+  continuators     = {{tamamlayanlar}{tam\adddot}},
+  collaborator     = {{ortak}{ortak}},
+  collaborators    = {{ortaklar}{ortaklar}},
+  translator       = {{\c{c}eviren}{\c{c}ev\adddot}},
+  translators      = {{\c{c}evirenler}{\c{c}ev\adddot}},
+  commentator      = {{yorumlayan}{yrm\adddot}},
+  commentators     = {{yorumlayanlar}{yrm\adddot}},
+  annotator        = {{a\c{c}\i klayan}{a\c{c}\i k\adddot}},
+  annotators       = {{a\c{c}\i klayanlar}{a\c{c}\i k\adddot}},
+  commentary       = {{yorum}{yrm\adddot}},
+  annotations      = {{a\c{c}\i klamalar}{a\c{c}\i k\adddot}},
+  introduction     = {{giri\c{s}}{gir\adddot}},
+  foreword         = {{\"{o}ns\"{o}z}{\"{o}ns\adddot}},
+  afterword        = {{sons\"{o}z}{sons\adddot}},
+  editortr         = {{edit\"{o}r ve \c{c}eviren}%
+                      {ed\adddot\ ve \c{c}ev\adddot}},
+  editorstr        = {{edit\"{o}rler ve \c{c}evirenler}%
+                      {ed\adddot\ ve \c{c}ev\adddot}},
+  editorco         = {{edit\"{o}r ve yorumlayan}%
+                      {ed\adddot\ ve yrm\adddot}},
+  editorsco        = {{edit\"{o}rler ve yorumlayanlar}%
+                      {ed\adddot\ ve yrm\adddot}},
+  editoran         = {{edit\"{o}r ve a\c{c}\i klayan}%
+                      {ed\adddot\ ve a\c{c}\i k\adddot}},
+  editorsan        = {{edit\"{o}rler ve a\c{c}\i klayanlar}%
+                      {ed\adddot\ ve a\c{c}\i k\adddot}},
+  editorin         = {{edit\"{o}r ve giri\c{s}}%
+                      {ed\adddot\ ve gir\adddot}},
+  editorsin        = {{edit\"{o}rler ve giri\c{s}}%
+                      {ed\adddot\ ve gir\adddot}},
+  editorfo         = {{edit\"{o}r ve \"{o}ns\"{o}z}%
+                      {ed\adddot\ ve \"{o}ns\adddot}},
+  editorsfo        = {{edit\"{o}rler ve \"{o}ns\"{o}z}%
+                      {ed\adddot\ ve \"{o}ns\adddot}},
+  editoraf         = {{edit\"{o}r ve sons\"{o}z}%
+                      {ed\adddot\ ve sons\adddot}},
+  editorsaf        = {{edit\"{o}rler ve sons\"{o}z}%
+                      {ed\adddot\ ve sons\adddot}},
+  editortrco       = {{edit\"{o}r, \c{c}eviren and yorumlayan}%
+                      {ed\adddot, \c{c}ev\adddot\ ve yrm\adddot}},
+  editorstrco      = {{edit\"{o}rler, \c{c}evirenler ve yorumlayanlar}%
+                      {ed\adddot, \c{c}ev\adddot\ ve yrm\adddot}},
+  editortran       = {{edit\"{o}r, \c{c}eviren ve a\c{c}\i klayan}%
+                      {ed\adddot, \c{c}ev\adddot\ ve a\c{c}\i k\adddot}},
+  editorstran      = {{edit\"{o}rler, \c{c}evirenler ve a\c{c}\i klayanlar}%
+                      {ed\adddot, \c{c}ev\adddot\ ve a\c{c}\i k\adddot}},
+  editortrin       = {{edit\"{o}r, \c{c}eviren ve giri\c{s}}%
+                      {ed\adddot, \c{c}ev\adddot\ ve gir\adddot}},
+  editorstrin      = {{edit\"{o}rler, \c{c}evirenler ve giri\c{s}}%
+                      {ed\adddot, \c{c}ev\adddot\ ve gir\adddot}},
+  editortrfo       = {{edit\"{o}r, \c{c}eviren ve \"{o}ns\"{o}z}%
+                      {ed\adddot, \c{c}ev\adddot\ ve \"{o}ns\adddot}},
+  editorstrfo      = {{edit\"{o}rler, \c{c}evirenler ve \"{o}ns\"{o}z}%
+                      {ed\adddot, \c{c}ev\adddot\ ve \"{o}ns\adddot}},
+  editortraf       = {{edit\"{o}r, \c{c}eviren ve sons\"{o}z}%
+                      {ed\adddot, \c{c}ev\adddot\ ve sons\adddot}},
+  editorstraf      = {{edit\"{o}rler, \c{c}evirenler ve sons\"{o}z}%
+                      {ed\adddot, \c{c}ev\adddot\ ve sons\adddot}},
+  editorcoin       = {{edit\"{o}r, yorumlayan ve giri\c{s}}%
+                      {ed\adddot, yrm\adddot\ ve gir\adddot}},
+  editorscoin      = {{edit\"{o}rler, yorumlayanlar ve giri\c{s}}%
+                      {ed\adddot, yrm\adddot\ ve gir\adddot}},
+  editorcofo       = {{edit\"{o}r, yorumlayan ve \"{o}ns\"{o}z}%
+                      {ed\adddot, yrm\adddot\ ve \"{o}ns\adddot}},
+  editorscofo      = {{edit\"{o}rler, yorumlayanlar ve \"{o}ns\"{o}z}%
+                      {ed\adddot, yrm\adddot\ ve \"{o}ns\adddot}},
+  editorcoaf       = {{edit\"{o}r, yorumlayan ve sons\"{o}z}%
+                      {ed\adddot, yrm\adddot\ ve sons\adddot}},
+  editorscoaf      = {{edit\"{o}rler, yorumlayanlar ve sons\"{o}z}%
+                      {ed\adddot, yrm\adddot\ ve sons\adddot}},
+  editoranin       = {{edit\"{o}r, a\c{c}\i klayan ve giri\c{s}}%
+                      {ed\adddot, a\c{c}\i k\adddot\ ve gir\adddot}},
+  editorsanin      = {{edit\"{o}rler, a\c{c}\i klayanlar ve giri\c{s}}%
+                      {ed\adddot, a\c{c}\i k\adddot\ ve gir\adddot}},
+  editoranfo       = {{edit\"{o}r, a\c{c}\i klayan ve \"{o}ns\"{o}z}%
+                      {ed\adddot, a\c{c}\i k\adddot\ ve \"{o}ns\adddot}},
+  editorsanfo      = {{edit\"{o}rler, a\c{c}\i klayanlar ve \"{o}ns\"{o}z}%
+                      {ed\adddot, a\c{c}\i k\adddot\ ve \"{o}ns\adddot}},
+  editoranaf       = {{edit\"{o}r, a\c{c}\i klayan ve sons\"{o}z}%
+                      {ed\adddot, a\c{c}\i k\adddot\ ve sons\adddot}},
+  editorsanaf      = {{edit\"{o}rler, a\c{c}\i klayanlar ve sons\"{o}z}%
+                      {ed\adddot, a\c{c}\i k\adddot\ ve sons\adddot}},
+  editortrcoin     = {{edit\"{o}r, \c{c}eviren, yorumlayan ve giri\c{s}}%
+                      {ed\adddot, \c{c}ev\adddot, yrm\adddot\ ve gir\adddot}},
+  editorstrcoin    = {{edit\"{o}rler, \c{c}evirenler, yorumlayanlar ve giri\c{s}}%
+                      {ed\adddot, \c{c}ev\adddot, yrm\adddot\ ve gir\adddot}},
+  editortrcofo     = {{edit\"{o}r, \c{c}eviren, yorumlayan ve \"{o}ns\"{o}z}%
+                      {ed\adddot, \c{c}ev\adddot, yrm\adddot\ ve \"{o}ns\adddot}},
+  editorstrcofo    = {{edit\"{o}rler, \c{c}evirenler, yorumlayanlar ve \"{o}ns\"{o}z}%
+                      {ed\adddot, \c{c}ev\adddot, yrm\adddot\ ve \"{o}ns\adddot}},
+  editortrcoaf     = {{edit\"{o}r, \c{c}eviren, yorumlayan ve sons\"{o}z}%
+                      {ed\adddot, \c{c}ev\adddot, yrm\adddot\ ve sons\adddot}},
+  editorstrcoaf    = {{edit\"{o}rler, \c{c}evirenler, yorumlayanlar ve sons\"{o}z}%
+                      {ed\adddot, \c{c}ev\adddot, yrm\adddot\ ve sons\adddot}},
+  editortranin     = {{edit\"{o}r, \c{c}eviren, a\c{c}\i klayan ve giri\c{s}}%
+                      {ed\adddot, \c{c}ev\adddot, a\c{c}\i k\adddot\ ve gir\adddot}},
+  editorstranin    = {{edit\"{o}rler, \c{c}evirenler, a\c{c}\i klayanlar ve giri\c{s}}%
+                      {ed\adddot, \c{c}ev\adddot, a\c{c}\i k\adddot\ ve gir\adddot}},
+  editortranfo     = {{edit\"{o}r, \c{c}eviren, a\c{c}\i klayan ve \"{o}ns\"{o}z}%
+                      {ed\adddot, \c{c}ev\adddot, a\c{c}\i k\adddot\ ve \"{o}ns\adddot}},
+  editorstranfo    = {{edit\"{o}rler, \c{c}evirenler, a\c{c}\i klayanlar ve \"{o}ns\"{o}z}%
+                      {ed\adddot, \c{c}ev\adddot, a\c{c}\i k\adddot\ ve \"{o}ns\adddot}},
+  editortranaf     = {{edit\"{o}r, \c{c}eviren, a\c{c}\i klayan ve sons\"{o}z}%
+                      {ed\adddot, \c{c}ev\adddot, a\c{c}\i k\adddot\ ve sons\adddot}},
+  editorstranaf    = {{edit\"{o}rler, \c{c}evirenler, a\c{c}\i klayanlar ve sons\"{o}z}%
+                      {ed\adddot, \c{c}ev\adddot, a\c{c}\i k\adddot\ ve sons\adddot}},
+  translatorco     = {{\c{c}eviren ve yorumlayan}%
+                      {\c{c}ev\adddot\ ve yrm\adddot}},
+  translatorsco    = {{\c{c}evirenler ve yorumlayanlar}%
+                      {\c{c}ev\adddot\ ve yrm\adddot}},
+  translatoran     = {{\c{c}eviren ve a\c{c}\i klayan}%
+                      {\c{c}ev\adddot\ ve a\c{c}\i k\adddot}},
+  translatorsan    = {{\c{c}evirenler ve a\c{c}\i klayanlar}%
+                      {\c{c}ev\adddot\ ve a\c{c}\i k\adddot}},
+  translatorin     = {{\c{c}eviren ve giri\c{s}}%
+                      {\c{c}ev\adddot\ ve gir\adddot}},
+  translatorsin    = {{\c{c}evirenler ve giri\c{s}}%
+                      {\c{c}ev\adddot\ ve gir\adddot}},
+  translatorfo     = {{\c{c}eviren ve \"{o}ns\"{o}z}%
+                      {\c{c}ev\adddot\ ve \"{o}ns\adddot}},
+  translatorsfo    = {{\c{c}evirenler ve \"{o}ns\"{o}z}%
+                      {\c{c}ev\adddot\ ve \"{o}ns\adddot}},
+  translatoraf     = {{\c{c}eviren ve sons\"{o}z}%
+                      {\c{c}ev\adddot\ ve sons\adddot}},
+  translatorsaf    = {{\c{c}evirenler ve sons\"{o}z}%
+                      {\c{c}ev\adddot\ ve sons\adddot}},
+  translatorcoin   = {{\c{c}eviren, yorumlayan ve giri\c{s}}%
+                      {\c{c}ev\adddot, yrm\adddot\ ve gir\adddot}},
+  translatorscoin  = {{\c{c}evirenler, yorumlayanlar ve giri\c{s}}%
+                      {\c{c}ev\adddot, yrm\adddot\ ve gir\adddot}},
+  translatorcofo   = {{\c{c}eviren, yorumlayan ve \"{o}ns\"{o}z}%
+                      {\c{c}ev\adddot, yrm\adddot\ ve \"{o}ns\adddot}},
+  translatorscofo  = {{\c{c}evirenler, yorumlayanlar ve \"{o}ns\"{o}z}%
+                      {\c{c}ev\adddot, yrm\adddot\ ve \"{o}ns\adddot}},
+  translatorcoaf   = {{\c{c}eviren, yorumlayan ve sons\"{o}z}%
+                      {\c{c}ev\adddot, yrm\adddot\ ve sons\adddot}},
+  translatorscoaf  = {{\c{c}evirenler, yorumlayanlar ve sons\"{o}z}%
+                      {\c{c}ev\adddot, yrm\adddot\ ve sons\adddot}},
+  translatoranin   = {{\c{c}eviren, a\c{c}\i klayan ve giri\c{s}}%
+                      {\c{c}ev\adddot, a\c{c}\i k\adddot\ ve gir\adddot}},
+  translatorsanin  = {{\c{c}evirenler, a\c{c}\i klayanlar ve giri\c{s}}%
+                      {\c{c}ev\adddot, a\c{c}\i k\adddot\ ve gir\adddot}},
+  translatoranfo   = {{\c{c}eviren, a\c{c}\i klayan ve \"{o}ns\"{o}z}%
+                      {\c{c}ev\adddot, a\c{c}\i k\adddot\ ve \"{o}ns\adddot}},
+  translatorsanfo  = {{\c{c}evirenler, a\c{c}\i klayanlar ve \"{o}ns\"{o}z}%
+                      {\c{c}ev\adddot, a\c{c}\i k\adddot\ ve \"{o}ns\adddot}},
+  translatoranaf   = {{\c{c}eviren, a\c{c}\i klayan ve sons\"{o}z}%
+                      {\c{c}ev\adddot, a\c{c}\i k\adddot\ ve sons\adddot}},
+  translatorsanaf  = {{\c{c}evirenler, a\c{c}\i klayanlar ve sons\"{o}z}%
+                      {\c{c}ev\adddot, a\c{c}\i k\adddot\ ve sons\adddot}},
+  organizer        = {{organizat\"{o}r}{org\adddot}},
+  organizers       = {{organizat\"{o}rler}{org\adddot}},
+  byorganizer      = {{organizat\"{o}r}{org\adddot}},
+  byauthor         = {{yazar}{yazar}},
+  byeditor         = {{edit\"{o}r}{ed\adddot}},
+  bycompiler       = {{derleyen}{der\adddot}},
+  byredactor       = {{yay\i na haz\i rlayan}{yay\adddot\ haz\adddot}},
+  byreviser        = {{tashih}{tashih}},
+  byreviewer       = {{de\u{g}erlendiren}{de\u{g}\adddot}},
+  byfounder        = {{kurucu}{kur\adddot}},
+  bycontinuator    = {{tamamlayan}{tam\adddot}},
+  bycollaborator   = {{ortakla\c{s}a yapanlar}{ortak\adddot\ yap\adddot}},
+  bytranslator     = {{\lbx at lfromlang \c{c}eviren}{\lbx at sfromlang \c{c}ev\adddot}},
+  bycommentator    = {{yorumlayan}{yrm\adddot}},
+  byannotator      = {{a\c{c}\i klayan}{a\c{c}\i k\adddot}},
+  withcommentator  = {{yorumlar\i yla katk\i da bulunan}{yrm\adddot\ kat\adddot\ bul\adddot}},
+  withannotator    = {{a\c{c}\i klamalar\i yla katk\i da bulunan}{a\c{c}\i k\adddot\ kat\adddot\ bul\adddot}},
+  withintroduction = {{giri\c{si yazan}}{gir\adddot\ yaz\adddot}}, 
+  withforeword     = {{\"{o}ns\"{o}z\"{u} yazan}{\"{o}ns\adddot\ yaz\adddot}},% 
+  withafterword    = {{sons\"{o}z\"{u} yazan}{sons\adddot\ yaz\adddot}},
+  byeditortr       = {{edit\"{o}r ve \lbx at lfromlang \c{c}eviren}%
+                      {ed\adddot\ ve \lbx at sfromlang \c{c}ev\adddot}},
+  byeditorco       = {{edit\"{o}r ve yorumlayan}%
+                      {ed\adddot\ ve yrm\adddot}},
+  byeditoran       = {{edit\"{o}r ve a\c{c}\i klayan}%
+                      {ed\adddot\ ve a\c{c}\i k\adddot}},
+  byeditorin       = {{edit\"{o}r ve giri\c{s}}%
+                      {ed\adddot\ ve gir\adddot}},
+  byeditorfo       = {{edit\"{o}r ve \"{o}ns\"{o}z}%
+                      {ed\adddot\ ve \"{o}ns\adddot}},
+  byeditoraf       = {{edit\"{o}r ve sons\"{o}z}%
+                      {ed\adddot\ ve sons\adddot}},
+  byeditortrco     = {{edit\"{o}r, \lbx at lfromlang \c{c}eviren ve yorumlayan}%
+                      {ed\adddot, \lbx at sfromlang \c{c}ev\adddot\ ve yrm\adddot}},
+  byeditortran     = {{edit\"{o}r, \lbx at lfromlang \c{c}eviren ve a\c{c}\i klayan}%
+                      {ed\adddot,  \lbx at sfromlang \c{c}ev\adddot\ ve a\c{c}\i k\adddot}},
+  byeditortrin     = {{edit\"{o}r, \lbx at lfromlang \c{c}eviren ve giri\c{s}}%
+                      {ed\adddot, \lbx at sfromlang \c{c}ev\adddot\ ve gir\adddot}},
+  byeditortrfo     = {{edit\"{o}r, \lbx at lfromlang \c{c}eviren ve \"{o}ns\"{o}z}%
+                      {ed\adddot, \lbx at sfromlang \c{c}ev\adddot\ ve \"{o}ns\adddot}},
+  byeditortraf     = {{edit\"{o}r, \lbx at lfromlang \c{c}eviren ve sons\"{o}z}%
+                      {ed\adddot, \lbx at sfromlang \c{c}ev\adddot\ ve sons\adddot}},
+  byeditorcoin     = {{edit\"{o}r, yorumlayan ve giri\c{s}}%
+                      {ed\adddot, yrm\adddot\ ve gir\adddot}},
+  byeditorcofo     = {{edit\"{o}r, yorumlayan ve \"{o}ns\"{o}z}%
+                      {ed\adddot, yrm\adddot\ ve \"{o}ns\adddot}},
+  byeditorcoaf     = {{edit\"{o}r, yorumlayan ve sons\"{o}z}%
+                      {ed\adddot, yrm\adddot\ ve sons\adddot}},
+  byeditoranin     = {{edit\"{o}r, a\c{c}\i klayan ve giri\c{s}}%
+                      {ed\adddot, a\c{c}\i k\adddot\ ve gir\adddot}},
+  byeditoranfo     = {{edit\"{o}r, a\c{c}\i klayan ve \"{o}ns\"{o}z}%
+                      {ed\adddot, a\c{c}\i k\adddot\ ve \"{o}ns\adddot}},
+  byeditoranaf     = {{edit\"{o}r, a\c{c}\i klayan ve sons\"{o}z}%
+                      {ed\adddot, a\c{c}\i k\adddot\ ve sons\adddot}},
+  byeditortrcoin   = {{edit\"{o}r, \lbx at lfromlang \c{c}eviren, yorumlayan ve giri\c{s}}%
+                      {ed\adddot, \lbx at sfromlang \c{c}ev\adddot, yrm\adddot\ ve gir\adddot}},
+  byeditortrcofo   = {{edit\"{o}r, \lbx at lfromlang \c{c}eviren, yorumlayan ve \"{o}ns\"{o}z}%
+                      {ed\adddot, \lbx at sfromlang \c{c}ev\adddot, yrm\adddot\ ve \"{o}ns\adddot}},
+  byeditortrcoaf   = {{edit\"{o}r, \lbx at lfromlang \c{c}eviren, yorumlayan ve sons\"{o}z}%
+                      {ed\adddot, \lbx at sfromlang \c{c}ev\adddot, yrm\adddot\ ve sons\adddot}},
+  byeditortranin   = {{edit\"{o}r, \lbx at lfromlang \c{c}eviren, a\c{c}\i klayan ve giri\c{s}}%
+                      {ed\adddot, \lbx at sfromlang \c{c}ev\adddot, a\c{c}\i k\adddot\ ve gir\adddot}},
+  byeditortranfo   = {{edit\"{o}r, \lbx at lfromlang \c{c}eviren, a\c{c}\i klayan ve \"{o}ns\"{o}z}%
+                      {ed\adddot, \lbx at sfromlang \c{c}ev\adddot, a\c{c}\i k\adddot\ ve \"{o}ns\adddot}},
+  byeditortranaf   = {{edit\"{o}r, \lbx at lfromlang \c{c}eviren, a\c{c}\i klayan ve sons\"{o}z}%
+                      {ed\adddot, \lbx at sfromlang \c{c}ev\adddot, a\c{c}\i k\adddot\ ve sons\adddot}},
+  bytranslatorco   = {{\lbx at lfromlang \c{c}eviren ve yorumlayan}%
+                      {\lbx at sfromlang \c{c}ev\adddot\ ve yrm\adddot}},
+  bytranslatoran   = {{\lbx at lfromlang \c{c}eviren ve a\c{c}\i klayan}%
+                      {\lbx at sfromlang \c{c}ev\adddot\ ve a\c{c}\i k\adddot}},
+  bytranslatorin   = {{\lbx at lfromlang \c{c}eviren ve giri\c{s}}%
+                      {\lbx at sfromlang \c{c}ev\adddot\ ve gir\adddot}},
+  bytranslatorfo   = {{\lbx at lfromlang \c{c}eviren ve \"{o}ns\"{o}z}%
+                      {\lbx at sfromlang \c{c}ev\adddot\ ve \"{o}ns\adddot}},
+  bytranslatoraf   = {{\lbx at lfromlang \c{c}eviren ve sons\"{o}z}%
+                      {\lbx at sfromlang \c{c}ev\adddot\ ve sons\adddot}},
+  bytranslatorcoin = {{\lbx at lfromlang \c{c}eviren, yorumlayan ve giri\c{s}}%
+                      {\lbx at sfromlang \c{c}ev\adddot, yrm\adddot\ ve gir\adddot}},
+  bytranslatorcofo = {{\lbx at lfromlang \c{c}eviren, yorumlayan ve \"{o}ns\"{o}z}%
+                      {\lbx at sfromlang \c{c}ev\adddot, yrm\adddot\ ve \"{o}ns\adddot}},
+  bytranslatorcoaf = {{\lbx at lfromlang \c{c}eviren, yorumlayan ve sons\"{o}z}%
+                      {\lbx at sfromlang \c{c}ev\adddot, yrm\adddot\ ve sons\adddot}},
+  bytranslatoranin = {{\lbx at lfromlang \c{c}eviren, a\c{c}\i klayan ve giri\c{s}}%
+                      {\lbx at sfromlang \c{c}ev\adddot, a\c{c}\i k\adddot\ ve gir\adddot}},
+  bytranslatoranfo = {{\lbx at lfromlang \c{c}eviren, a\c{c}\i klayan ve \"{o}ns\"{o}z}%
+                      {\lbx at sfromlang \c{c}ev\adddot, a\c{c}\i k\adddot\ ve \"{o}ns\adddot}},
+  bytranslatoranaf = {{\lbx at lfromlang \c{c}eviren, a\c{c}\i klayan ve sons\"{o}z}%
+                      {\lbx at sfromlang \c{c}ev\adddot, a\c{c}\i k\adddot\ ve sons\adddot}},
+  and              = {{ve}{ve}},
+  andothers        = {{ve di\u{g}erleri}{ve di\u{g}\adddot}},
+  andmore          = {{ve di\u{g}erleri}{ve di\u{g}\adddot}},
+  volume           = {{cilt}{c\adddot}},
+  volumes          = {{cilt}{c\adddot}},
+  involumes        = {{i\c{c}inde}{i\c{c}inde}},
+  jourvol          = {{cilt}{c\adddot}},
+  jourser          = {{seri}{seri}},
+  book             = {{kitap}{kitap}},
+  part             = {{k\i s\i m}{k\i s\i m}},
+  issue            = {{say\i}{say\i}},
+  newseries        = {{yeni seri}{yeni seri}},
+  oldseries        = {{eski seri}{eski seri}},
+  edition          = {{bask\i}{bs\adddot}},
+  reprint          = {{yeni bask\i s\i}{yeni bask\i s\i}}, 
+  reprintof        = {{yeni bask\i s\i}{yeni bask\i s\i}}, 
+  reprintas        = {{yeni bask\i s\i}{yeni bask\i s\i}},  
+  reprintfrom      = {{yeni bask\i s\i}{yeni bask\i s\i}}, 
+  reviewof         = {{derlenen eser}{der\adddot\ eser}}, 
+  translationof    = {{\c{c}evirilen eser}{\c{c}ev\adddot\ eser}},  
+  translationas    = {{\c{c}evirilen eser}{\c{c}ev\adddot\ eser}}, 
+  translationfrom  = {{\c{c}evirilen eser}{\c{c}ev\adddot\ eser}}, 
+  origpubas        = {{as\i l eser}{as\i l eser}},
+  origpubin        = {{as\i l eser yay\i n tarihi}{as\i l eser yay\i n tarihi}},
+  astitle          = {{yeni ba\c{s}l\i k}{yeni ba\c{s}l\i k}},
+  bypublisher      = {{yay\i n evi}{yay\i n evi}}, 
+  nodate           = {{tarih yok}{t\adddot y\adddot}},
+  page             = {{sayfa}{s\adddot}},
+  pages            = {{sayfalar}{ss\adddot}},
+  column           = {{s\"{u}tun}{s\"{u}t\adddot}},
+  columns          = {{s\"{u}tunlar}{s\"{u}t\adddot}},
+  line             = {{sat\i r}{sat\adddot}},
+  lines            = {{sat\i rlar}{sat\adddot}},
+  verse            = {{m\i sra}{m\i s\adddot}},
+  verses           = {{m\i sralar}{m\i s\adddot}},
+  section          = {{b\"{o}l\"{u}m}{b\"{o}l\adddot}},
+  sections         = {{b\"{o}l\"{u}mler}{b\"{o}l\adddot}},
+  paragraph        = {{paragraf}{par\adddot}},
+  paragraphs       = {{paragraflar}{par\adddot}},
+  pagetotal        = {{toplam sayfa}{s\adddot}},
+  pagetotals       = {{toplam sayfalar}{ss\adddot}},
+  columntotal      = {{toplam s\"{u}tun}{s\"{u}t\adddot}},
+  columntotals     = {{toplam s\"{u}tunlar}{s\"{u}t\adddot}},
+  linetotal        = {{toplam sat\i r}{sat\adddot}},
+  linetotals       = {{toplam sat\i rlar}{sat\adddot}},
+  versetotal       = {{toplam m\i sra}{m\i s\adddot}},
+  versetotals      = {{toplam m\i sralar}{m\i s\adddot}},
+  sectiontotal     = {{toplam b\"{o}l\"{u}m}{b\"{o}l\adddot}},
+  sectiontotals    = {{toplam b\"{o}l\"{u}mler}{b\"{o}l\adddot}},
+  paragraphtotal   = {{toplam paragraf}{par\adddot}},
+  paragraphtotals  = {{toplam paragraflar}{par\adddot}},
+  in               = {{i\c{c}inde}{i\c{c}inde}},
+  inseries         = {{serilerde}{serilerde}},
+  ofseries         = {{serilerde}{serilerde}},
+  number           = {{numara}{no\adddot}},
+  chapter          = {{b\"{o}l\"{u}m}{b\"{o}l\adddot}},
+  bathesis         = {{lisans tezi}{lis\adddot\ tezi}},
+  mathesis         = {{y\"{u}ksek lisans tezi}{y\"{u}k\adddot\ lis\adddot\ tezi}},
+  phdthesis        = {{doktora tezi}{dok\adddot\ tezi}},
+  candthesis       = {{aday tezi}{aday tezi}},
+  resreport        = {{ara\c{s}t\i rma raporu}{ara\c{s}\adddot\ rap\adddot}},
+  techreport       = {{teknik rapor}{tek\adddot\ rap\adddot}},
+  software         = {{bilgisayar yaz\i l\i m\i}{bilg\adddot\ yaz\adddot}},
+  datacd           = {{CD}{CD}},
+  audiocd          = {{ses CD'si}{ses CD'si}},
+  version          = {{versiyon}{ver\adddot}},
+  url              = {{eri\c{s}im adresi}{eri\c{s}im adresi}},
+  urlfrom          = {{eri\c{s}im adresi}{eri\c{s}im adresi}},
+  urlseen          = {{eri\c{s}im tarihi}{eri\c{s}im tarihi}},
+  inpreparation    = {{haz\i rl\i k a\c{s}amas\i nda}{haz\i rl\i k a\c{s}amas\i nda}},
+  submitted        = {{g\"{o}nderilmi\c{s}tir}{g\"{o}nderilmi\c{s}tir}},
+  forthcoming      = {{yak\i nda}{yak\i nda}},
+  inpress          = {{bas\i m a\c{s}amas\i nda}{bas\i m a\c{s}amas\i nda}},
+  prepublished     = {{taslak bas\i m\i}{taslak bas\i m\i}},
+  citedas          = {{at\i f olarak}{at\i f olarak}},
+  thiscite         = {{\"{o}zellikle}{\"{o}z\adddot\ bkz\adddot}},
+  seenote          = {{nota bak\i n\i z}{nota bkz\adddot}},
+  quotedin         = {{al\i nt\i}{al\i nt\i}},
+  idem             = {{ayn\i}{ayn\i}},
+  idemsm           = {{ayn\i}{ayn\i}},
+  idemsf           = {{ayn\i}{ayn\i}},
+  idemsn           = {{ayn\i}{ayn\i}},
+  idempm           = {{ayn\i lar\i}{ayn\i lar\i}},
+  idempf           = {{ayn\i lar\i}{ayn\i lar\i}},
+  idempn           = {{ayn\i lar\i}{ayn\i lar\i}},
+  idempp           = {{ayn\i lar\i}{ayn\i lar\i}},
+  ibidem           = {{ayn{\i} yer}{ayn{\i} yer}},
+  opcit            = {{at\i f yap\i lan \c{c}al\i\c{s}ma}{at\i f yap\adddot\ \c{c}al\adddot}},
+  loccit           = {{at\i f yap\i lan yer}{at\i f yap\adddot\ yer}},
+  confer           = {{kar\c{s}\i la\c{s}t\i r}{kar\c{s}\adddot}},
+  sequens          = {{takip eden}{takip eden}},
+  sequentes        = {{takip eden}{takip eden}},
+  passim           = {{rastgele}{rastgele}},
+  see              = {{bak\i n\i z}{bkz\adddot}},
+  seealso          = {{ayr\i ca bak\i n\i z}{ayr\i ca bkz\adddot}},
+  backrefpage      = {{sayfada g\"{o}sterilmi\c{s}tir}{say\adddot\ g\"{o}s\adddot}},
+  backrefpages     = {{sayfalarda g\"{o}sterilmi\c{s}tir}{say\adddot\ g\"{o}s\adddot}},
+  january          = {{Ocak}{Ocak}},
+  february         = {{\c{S}ubat}{\c{S}ub\adddot}},
+  march            = {{Mart}{Mar\adddot}},
+  april            = {{Nisan}{Nis\adddot}},
+  may              = {{May\i s}{May\adddot}},
+  june             = {{Haziran}{Haz\adddot}},
+  july             = {{Temmuz}{Tem\adddot}},
+  august           = {{A\u{g}ustos}{A\u{g}us\adddot}},
+  september        = {{Eyl\"{u}l}{Eyl\adddot}},
+  october          = {{Ekim}{Ekim}},
+  november         = {{Kas\i m}{Kas\adddot}},
+  december         = {{Aral\i k}{Ara\adddot}},
+  langamerican     = {{Amerikanca}{Amerikanca}},
+  langbrazilian    = {{Brezilyanca}{Brezilyanca}},
+  langbulgarian    = {{Bulgarca}{Bulgarca}},
+  langcatalan      = {{Katalanca}{Katalanca}},
+  langcroatian     = {{H\i rvat\c{c}a}{H\i rvat\c{c}a}},
+  langczech        = {{\c{C}ek\c{c}e}{\c{C}ek\c{c}e}},
+  langdanish       = {{Danimarkanca}{Danimarkanca}},
+  langdutch        = {{Flemenk\c{c}e}{Flemenk\c{c}e}},
+  langenglish      = {{\.{I}ngilizce}{\.{I}ngilizce}},
+  langestonian     = {{Estonca}{Estonca}},
+  langfinnish      = {{Fince}{Fince}},
+  langfrench       = {{Frans\i zca}{Frans\i zca}},
+  langgalician     = {{Galce}{Galce}},
+  langgerman       = {{Almanca}{Almanca}},
+  langgreek        = {{Yunanca}{Yunanca}},
+  langhungarian    = {{Macarca}{Macarca}},
+  langitalian      = {{\.{I}talyanca}{\.{I}talyanca}},
+  langjapanese     = {{Japonca}{Japonca}},
+  langlatin        = {{Latince}{Latince}},
+  langlatvian      = {{Letonca}{Letonca}},
+  langlithuanian   = {{Litvanca}{Litvanca}},
+  langnorwegian    = {{Norve\c{c}\c{c}e}{Norve\c{c}\c{c}e}},
+  langpolish       = {{Polonyaca}{Polonyaca}},
+  langportuguese   = {{Portekizce}{Portekizce}},
+  langrussian      = {{Rus\c{c}a}{Rus\c{c}a}},
+  langserbian      = {{S\i rp\c{c}a}{S\i rp\c{c}a}},
+  langslovak       = {{Slovak\c{c}a}{Slovak\c{c}a}},
+  langslovene      = {{Slovence}{Slovence}},
+  langspanish      = {{\.{I}spanyolca}{\.{I}spanyolca}},
+  langswedish      = {{\.{I}sve\c{c}\c{c}e}{\.{I}sve\c{c}\c{c}e}},
+  langukrainian    = {{Ukraynaca}{Ukraynaca}},
+  fromamerican     = {{Amerikanca'dan}{Amerikanca'dan}},
+  frombrazilian    = {{Brezilyanca'dan}{Brezilyanca'dan}},
+  frombulgarian    = {{Bulgarca'dan}{Bulgarca'dan}},
+  fromcatalan      = {{Katalanca'dan}{Katalanca'dan}},
+  fromcroatian     = {{H\i rvat\c{c}a'dan}{H\i rvat\c{c}a'dan}},
+  fromczech        = {{\c{C}ek\c{c}e'den}{\c{C}ek\c{c}e'den}},
+  fromdanish       = {{Danimarkanca'dan}{Danimarkanca'dan}},
+  fromdutch        = {{Flemenk\c{c}e'den}{Flemenk\c{c}e'den}},
+  fromenglish      = {{\.{I}ngilizce'den}{\.{I}ngilizce'den}},
+  fromestonian     = {{Estonyaca'dan}{Estonyaca'dan}},
+  fromfinnish      = {{Fince'den}{Fince'den}},
+  fromfrench       = {{Frans\i zca'dan}{Frans\i zca'dan}},
+  fromgalician     = {{Galyaca'dan}{Galyaca'dan}},
+  fromgerman       = {{Almanca'dan}{Almanca'dan}},
+  fromgreek        = {{Yunanca'dan}{Yunanca'dan}},
+  fromhungarian    = {{Macarca'dan}{Macarca'dan}},
+  fromitalian      = {{\.{I}talyanca'dan}{\.{I}talyanca'dan}},
+  fromjapanese     = {{Japonca'dan}{Japonca'dan}},
+  fromlatin        = {{Latince'den}{Latince'den}},
+  fromlatvian      = {{Latvianca'dan}{Latvianca'dan}},
+  fromlithuanian   = {{Litvanca'dan}{Litvanca'dan}},
+  fromnorwegian    = {{Norve\c{c}\c{c}e'den}{Norve\c{c}\c{c}e'den}},
+  frompolish       = {{Polonyaca'dan}{Polonyaca'dan}},
+  fromportuguese   = {{Portekizce'den}{Portekizce'den}},
+  fromrussian      = {{Rus\c{c}a'dan}{Rus\c{c}a'dan}},
+  fromserbian      = {{S\i rp\c{c}a'dan}{S\i rp\c{c}a'dan}},
+  fromslovak       = {{Slovak\c{c}a'dan}{Slovak\c{c}a'dan}},
+  fromslovene      = {{Slovence'den}{Slovence'den}},
+  fromspanish      = {{\.{I}spanyolca'dan}{\.{I}spanyolca'dan}},
+  fromswedish      = {{\.{I}sve\c{c}\c{c}e'den}{\.{I}sve\c{c}\c{c}e'den}},
+  fromukrainian    = {{Ukraynaca'dan}{Ukraynaca'dan}},
+  countryde        = {{Almanya}{DE}},
+  countryeu        = {{Avrupa Birli\u{g}i}{AB}},
+  countryep        = {{Avrupa Birli\u{g}i}{AB}},
+  countryfr        = {{Fransa}{FR}},
+  countryuk        = {{Birle\c{s}ik Krall\i k}{BK}},
+  countryus        = {{Amerika Birle\c{s}ik Devletleri}{ABD}},
+  patent           = {{patent}{pat\adddot}},
+  patentde         = {{Alman patenti}{Alman pat\adddot}},
+  patenteu         = {{Avrupa patenti}{Avrupa pat\adddot}},
+  patentfr         = {{Frans\i z patenti}{Frans\i z pat\adddot}},
+  patentuk         = {{\.{I}ngiliz patenti}{\.{I}ngiliz pat\adddot}},
+  patentus         = {{Amerika patenti}{Amerika pat\adddot}},
+  patreq           = {{patent beklemede}{pat\adddot\ bek\adddot}},
+  patreqde         = {{Alman patenti beklemede}{Alman pat\adddot\ bek\adddot}},
+  patreqeu         = {{Avrupa patenti beklemede}{Avrupa pat\adddot\ bek\adddot}},
+  patreqfr         = {{Frans\i z patenti beklemede}{Frans\i z pat\adddot\ bek\adddot}},
+  patrequk         = {{\.{I}ngiliz patenti beklemede}{\.{I}ngiliz pat\adddot\ bek\adddot}},
+  patrequs         = {{Amerika patenti beklemede}{Amerika pat\adddot\ bek\adddot}},
+  file             = {{dosya}{dosya}},
+  library          = {{k\"{u}t\"{u}phane}{k\"{u}t\"{u}phane}},
+  abstract         = {{\"{o}zet}{\"{o}zet}},
+  annotation       = {{a\c{c}\i klama}{a\c{c}\i klama}},
+  commonera        = {{milattan sonra}{MS}},
+  beforecommonera  = {{milattan \"{o}nce}{M\"{O}}},
+  annodomini       = {{milattan sonra}{MS}},
+  beforechrist     = {{milattan \"{o}nce}{M\"{O}}},
+  circa            = {{yakla\c{s}\i k olarak}{yak\adddot}},
+  spring           = {{\.{I}lkbahar}{\.{I}lkbahar}},
+  summer           = {{Yaz}{Yaz}},
+  autumn           = {{Sonbahar}{Sonbahar}},
+  winter           = {{K\i \c{s}}{K\i \c{s}}},
+  am               = {{\"{o}\u{g}leden \"{o}nce}{\"{O}\"{O}}},
+  pm               = {{\"{o}\u{g}leden sonra}{\"{O}S}},
+}
+
+\endinput

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/ukrainian.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/ukrainian.lbx	2020-08-20 21:11:01 UTC (rev 56142)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/ukrainian.lbx	2020-08-20 21:11:51 UTC (rev 56143)
@@ -70,13 +70,17 @@
   \def\mkbibordedition{\mkbibneutord}%
   \def\mkbibordseries{\mkbibfemord}%
   \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
-      \iffieldundef{#1}{}
-        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#2}{}
-        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
-      \iffieldundef{#3}{}
-        {\printtext{\mktimezeros{\thefield{#3}}}}%
-      \setunit{}%
+      \iffieldundef{#1}
+        {}
+        {\mktimezeros{\thefield{#1}}%
+         \iffieldundef{#2}{}{\bibtimesep}}%
+      \iffieldundef{#2}
+        {}
+        {\mktimezeros{\thefield{#2}}%
+         \iffieldundef{#3}{}{\bibtimesep}}%
+      \iffieldundef{#3}
+        {}
+        {\mktimezeros{\thefield{#3}}}%
       \iffieldundef{#4}{}
         {\bibtimezonesep
          \mkbibtimezone{\thefield{#4}}}}%



More information about the tex-live-commits mailing list.