+const leiri·iprivate = String.raw
+ `[\u{E000}-\u{F8FF}\u{E0000}-\u{E0FFF}\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}]`;
+const leiri·ucschar = String.raw
+ `[ <>"{}|\\^${"`"}\u{0}-\u{1F}\u{7F}-\u{D7FF}\u{E000}-\u{FFFD}\u{10000}-\u{10FFFF}]`;
+const leiri·iunreserved = String.raw
+ `[A-Za-z0-9\-\._~]|${leiri·ucschar}`;
+const leiri·ipchar = String.raw
+ `${leiri·iunreserved}|${pct·encoded}|${sub·delims}|[:@]`;
+const leiri·ifragment = String.raw`(?:${leiri·ipchar}|[/?])*`;
+const leiri·iquery = String.raw
+ `(?:${leiri·ipchar}|${leiri·iprivate}|[/?])*`;
+const leiri·isegment·nz·nc = String.raw
+ `(?:${leiri·iunreserved}|${pct·encoded}|${sub·delims}|@)+`;
+const leiri·isegment·nz = String.raw`(?:${leiri·ipchar})+`;
+const leiri·isegment = String.raw`(?:${leiri·ipchar})*`;
+const leiri·ipath·empty = String.raw``;
+const leiri·ipath·rootless = String.raw
+ `(?:${leiri·isegment·nz})(?:/(?:${leiri·isegment}))*`;
+const leiri·ipath·noscheme = String.raw
+ `(?:${leiri·isegment·nz·nc})(?:/(?:${leiri·isegment}))*`;
+const leiri·ipath·absolute = String.raw
+ `/(?:(?:${leiri·isegment·nz})(?:/(?:${leiri·isegment}))*)?`;
+const leiri·ipath·abempty = String.raw`(?:/(?:${leiri·isegment}))*`;
+const leiri·ipath = String.raw
+ `${leiri·ipath·abempty}|${leiri·ipath·absolute}|${leiri·ipath·noscheme}|${leiri·ipath·rootless}|${leiri·ipath·empty}`;
+const leiri·ireg·name = String.raw
+ `(?:${leiri·iunreserved}|${pct·encoded}|${sub·delims})*`;
+const leiri·ihost = String.raw
+ `${IP·literal}|${IPv4address}|${leiri·ireg·name}`;
+const leiri·iuserinfo = String.raw
+ `(?:${leiri·iunreserved}|${pct·encoded}|${sub·delims}|:)*`;
+const leiri·iauthority = String.raw
+ `(?:(?:${leiri·iuserinfo})@)?(?:${leiri·ihost})(?::(?:${port}))?`;
+const leiri·irelative·part = String.raw
+ `//(?:${leiri·iauthority})(?:${leiri·ipath·abempty})|(?:${leiri·ipath·absolute})|(?:${leiri·ipath·noscheme})|(?:${leiri·ipath·empty})`;
+const leiri·irelative·ref = String.raw
+ `(?:${leiri·irelative·part})(?:\?(?:${leiri·iquery}))?(?:#(?:${leiri·ifragment}))?`;
+const leiri·ihier·part = String.raw
+ `//(?:${leiri·iauthority})(?:${leiri·ipath·abempty})|(?:${leiri·ipath·absolute})|(?:${leiri·ipath·rootless})|(?:${leiri·ipath·empty})`;
+const absolute·LEIRI = String.raw
+ `(?:${scheme}):(?:${leiri·ihier·part})(?:\?(?:${leiri·iquery}))?`;
+const LEIRI = String.raw
+ `(?:${scheme}):(?:${leiri·ihier·part})(?:\?(?:${leiri·iquery}))?(?:#(?:${leiri·ifragment}))?`;
+const LEIRI·reference = String.raw
+ `(?:${LEIRI})|(?:${leiri·irelative·ref})`;
+