summaryrefslogtreecommitdiffstats
path: root/vendor/regex/tests
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/regex/tests')
-rw-r--r--vendor/regex/tests/api.rs234
-rw-r--r--vendor/regex/tests/api_str.rs34
-rw-r--r--vendor/regex/tests/bytes.rs107
-rw-r--r--vendor/regex/tests/consistent.rs238
-rw-r--r--vendor/regex/tests/crates_regex.rs3287
-rw-r--r--vendor/regex/tests/crazy.rs459
-rw-r--r--vendor/regex/tests/flags.rs31
-rw-r--r--vendor/regex/tests/fowler.rs1588
-rw-r--r--vendor/regex/tests/fuzz/mod.rs166
-rw-r--r--vendor/regex/tests/fuzz/testdata/crash-7eb3351f0965e5d6c1cb98aa8585949ef96531ffbin0 -> 77 bytes
-rw-r--r--vendor/regex/tests/fuzz/testdata/crash-8760b19b25d74e3603d4c643e9c7404fdd3631f9bin0 -> 21 bytes
-rw-r--r--vendor/regex/tests/fuzz/testdata/crash-cd33b13df59ea9d74503986f9d32a270dd43cc04bin0 -> 63 bytes
-rw-r--r--vendor/regex/tests/fuzz/testdata/minimized-from-8760b19b25d74e3603d4c643e9c7404fdd3631f9bin0 -> 16 bytes
-rw-r--r--vendor/regex/tests/fuzz/testdata/slow-unit-3ab758ea520027fefd3f00e1384d9aeef155739ebin0 -> 68 bytes
-rw-r--r--vendor/regex/tests/fuzz/testdata/slow-unit-5345fccadf3812c53c3ccc7af5aa2741b7b2106cbin0 -> 84 bytes
-rw-r--r--vendor/regex/tests/fuzz/testdata/slow-unit-6bd643eec330166e4ada91da2d3f284268481085bin0 -> 105 bytes
-rw-r--r--vendor/regex/tests/fuzz/testdata/slow-unit-93c73a43581f205f9aaffd9c17e52b34b17becd0bin0 -> 22 bytes
-rw-r--r--vendor/regex/tests/fuzz/testdata/slow-unit-9ca9cc9929fee1fcbb847a78384effb8b98ea18abin0 -> 83 bytes
-rw-r--r--vendor/regex/tests/fuzz/testdata/slow-unit-b8a052f4254802edbe5f569b6ce6e9b6c927e9d6bin0 -> 102 bytes
-rw-r--r--vendor/regex/tests/lib.rs58
-rw-r--r--vendor/regex/tests/macros.rs160
-rw-r--r--vendor/regex/tests/macros_bytes.rs39
-rw-r--r--vendor/regex/tests/macros_str.rs38
-rw-r--r--vendor/regex/tests/misc.rs147
-rw-r--r--vendor/regex/tests/multiline.rs144
-rw-r--r--vendor/regex/tests/noparse.rs45
-rw-r--r--vendor/regex/tests/regression.rs227
-rw-r--r--vendor/regex/tests/regression_fuzz.rs27
-rw-r--r--vendor/regex/tests/replace.rs129
-rw-r--r--vendor/regex/tests/searcher.rs24
-rw-r--r--vendor/regex/tests/set.rs74
-rw-r--r--vendor/regex/tests/shortest_match.rs14
-rw-r--r--vendor/regex/tests/suffix_reverse.rs6
-rw-r--r--vendor/regex/tests/suite_bytes.rs108
-rw-r--r--vendor/regex/tests/suite_bytes_set.rs71
-rw-r--r--vendor/regex/tests/suite_string.rs114
-rw-r--r--vendor/regex/tests/suite_string_set.rs79
-rw-r--r--vendor/regex/tests/test_backtrack.rs56
-rw-r--r--vendor/regex/tests/test_backtrack_bytes.rs55
-rw-r--r--vendor/regex/tests/test_backtrack_utf8bytes.rs58
-rw-r--r--vendor/regex/tests/test_crates_regex.rs54
-rw-r--r--vendor/regex/tests/test_default.rs232
-rw-r--r--vendor/regex/tests/test_default_bytes.rs75
-rw-r--r--vendor/regex/tests/test_nfa.rs50
-rw-r--r--vendor/regex/tests/test_nfa_bytes.rs55
-rw-r--r--vendor/regex/tests/test_nfa_utf8bytes.rs54
-rw-r--r--vendor/regex/tests/unicode.rs254
-rw-r--r--vendor/regex/tests/word_boundary.rs89
-rw-r--r--vendor/regex/tests/word_boundary_ascii.rs9
-rw-r--r--vendor/regex/tests/word_boundary_unicode.rs6
50 files changed, 835 insertions, 7860 deletions
diff --git a/vendor/regex/tests/api.rs b/vendor/regex/tests/api.rs
deleted file mode 100644
index c7250a8a3..000000000
--- a/vendor/regex/tests/api.rs
+++ /dev/null
@@ -1,234 +0,0 @@
-#[test]
-fn empty_regex_empty_match() {
- let re = regex!("");
- assert_eq!(vec![(0, 0)], findall!(re, ""));
-}
-
-#[test]
-fn empty_regex_nonempty_match() {
- let re = regex!("");
- assert_eq!(vec![(0, 0), (1, 1), (2, 2), (3, 3)], findall!(re, "abc"));
-}
-
-#[test]
-fn one_zero_length_match() {
- let re = regex!(r"[0-9]*");
- assert_eq!(vec![(0, 0), (1, 2), (3, 4)], findall!(re, "a1b2"));
-}
-
-#[test]
-fn many_zero_length_match() {
- let re = regex!(r"[0-9]*");
- assert_eq!(
- vec![(0, 0), (1, 2), (3, 3), (4, 4), (5, 6)],
- findall!(re, "a1bbb2")
- );
-}
-
-#[test]
-fn many_sequential_zero_length_match() {
- let re = regex!(r"[0-9]?");
- assert_eq!(
- vec![(0, 0), (1, 2), (2, 3), (4, 5), (6, 6)],
- findall!(re, "a12b3c")
- );
-}
-
-#[test]
-fn quoted_bracket_set() {
- let re = regex!(r"([\x{5b}\x{5d}])");
- assert_eq!(vec![(0, 1), (1, 2)], findall!(re, "[]"));
- let re = regex!(r"([\[\]])");
- assert_eq!(vec![(0, 1), (1, 2)], findall!(re, "[]"));
-}
-
-#[test]
-fn first_range_starts_with_left_bracket() {
- let re = regex!(r"([\[-z])");
- assert_eq!(vec![(0, 1), (1, 2)], findall!(re, "[]"));
-}
-
-#[test]
-fn range_ends_with_escape() {
- let re = regex!(r"([\[-\x{5d}])");
- assert_eq!(vec![(0, 1), (1, 2)], findall!(re, "[]"));
-}
-
-#[test]
-fn empty_match_find_iter() {
- let re = regex!(r".*?");
- assert_eq!(vec![(0, 0), (1, 1), (2, 2), (3, 3)], findall!(re, "abc"));
-}
-
-#[test]
-fn empty_match_captures_iter() {
- let re = regex!(r".*?");
- let ms: Vec<_> = re
- .captures_iter(text!("abc"))
- .map(|c| c.get(0).unwrap())
- .map(|m| (m.start(), m.end()))
- .collect();
- assert_eq!(ms, vec![(0, 0), (1, 1), (2, 2), (3, 3)]);
-}
-
-#[test]
-fn capture_names() {
- let re = regex!(r"(.)(?P<a>.)");
- assert_eq!(3, re.captures_len());
- assert_eq!((3, Some(3)), re.capture_names().size_hint());
- assert_eq!(
- vec![None, None, Some("a")],
- re.capture_names().collect::<Vec<_>>()
- );
-}
-
-#[test]
-fn regex_string() {
- assert_eq!(r"[a-zA-Z0-9]+", regex!(r"[a-zA-Z0-9]+").as_str());
- assert_eq!(r"[a-zA-Z0-9]+", &format!("{}", regex!(r"[a-zA-Z0-9]+")));
- assert_eq!(r"[a-zA-Z0-9]+", &format!("{:?}", regex!(r"[a-zA-Z0-9]+")));
-}
-
-#[test]
-fn capture_index() {
- let re = regex!(r"^(?P<name>.+)$");
- let cap = re.captures(t!("abc")).unwrap();
- assert_eq!(&cap[0], t!("abc"));
- assert_eq!(&cap[1], t!("abc"));
- assert_eq!(&cap["name"], t!("abc"));
-}
-
-#[test]
-#[should_panic]
-#[cfg_attr(all(target_env = "msvc", target_pointer_width = "32"), ignore)]
-fn capture_index_panic_usize() {
- let re = regex!(r"^(?P<name>.+)$");
- let cap = re.captures(t!("abc")).unwrap();
- let _ = cap[2];
-}
-
-#[test]
-#[should_panic]
-#[cfg_attr(all(target_env = "msvc", target_pointer_width = "32"), ignore)]
-fn capture_index_panic_name() {
- let re = regex!(r"^(?P<name>.+)$");
- let cap = re.captures(t!("abc")).unwrap();
- let _ = cap["bad name"];
-}
-
-#[test]
-fn capture_index_lifetime() {
- // This is a test of whether the types on `caps["..."]` are general
- // enough. If not, this will fail to typecheck.
- fn inner(s: &str) -> usize {
- let re = regex!(r"(?P<number>[0-9]+)");
- let caps = re.captures(t!(s)).unwrap();
- caps["number"].len()
- }
- assert_eq!(3, inner("123"));
-}
-
-#[test]
-fn capture_misc() {
- let re = regex!(r"(.)(?P<a>a)?(.)(?P<b>.)");
- let cap = re.captures(t!("abc")).unwrap();
-
- assert_eq!(5, cap.len());
-
- assert_eq!((0, 3), {
- let m = cap.get(0).unwrap();
- (m.start(), m.end())
- });
- assert_eq!(None, cap.get(2));
- assert_eq!((2, 3), {
- let m = cap.get(4).unwrap();
- (m.start(), m.end())
- });
-
- assert_eq!(t!("abc"), match_text!(cap.get(0).unwrap()));
- assert_eq!(None, cap.get(2));
- assert_eq!(t!("c"), match_text!(cap.get(4).unwrap()));
-
- assert_eq!(None, cap.name("a"));
- assert_eq!(t!("c"), match_text!(cap.name("b").unwrap()));
-}
-
-#[test]
-fn sub_capture_matches() {
- let re = regex!(r"([a-z])(([a-z])|([0-9]))");
- let cap = re.captures(t!("a5")).unwrap();
- let subs: Vec<_> = cap.iter().collect();
-
- assert_eq!(5, subs.len());
- assert!(subs[0].is_some());
- assert!(subs[1].is_some());
- assert!(subs[2].is_some());
- assert!(subs[3].is_none());
- assert!(subs[4].is_some());
-
- assert_eq!(t!("a5"), match_text!(subs[0].unwrap()));
- assert_eq!(t!("a"), match_text!(subs[1].unwrap()));
- assert_eq!(t!("5"), match_text!(subs[2].unwrap()));
- assert_eq!(t!("5"), match_text!(subs[4].unwrap()));
-}
-
-expand!(expand1, r"(?-u)(?P<foo>\w+)", "abc", "$foo", "abc");
-expand!(expand2, r"(?-u)(?P<foo>\w+)", "abc", "$0", "abc");
-expand!(expand3, r"(?-u)(?P<foo>\w+)", "abc", "$1", "abc");
-expand!(expand4, r"(?-u)(?P<foo>\w+)", "abc", "$$1", "$1");
-expand!(expand5, r"(?-u)(?P<foo>\w+)", "abc", "$$foo", "$foo");
-expand!(expand6, r"(?-u)(?P<a>\w+)\s+(?P<b>\d+)", "abc 123", "$b$a", "123abc");
-expand!(expand7, r"(?-u)(?P<a>\w+)\s+(?P<b>\d+)", "abc 123", "z$bz$az", "z");
-expand!(
- expand8,
- r"(?-u)(?P<a>\w+)\s+(?P<b>\d+)",
- "abc 123",
- ".$b.$a.",
- ".123.abc."
-);
-expand!(
- expand9,
- r"(?-u)(?P<a>\w+)\s+(?P<b>\d+)",
- "abc 123",
- " $b $a ",
- " 123 abc "
-);
-expand!(expand10, r"(?-u)(?P<a>\w+)\s+(?P<b>\d+)", "abc 123", "$bz$az", "");
-
-expand!(expand_name1, r"%(?P<Z>[a-z]+)", "%abc", "$Z%", "abc%");
-expand!(expand_name2, r"\[(?P<Z>[a-z]+)", "[abc", "$Z[", "abc[");
-expand!(expand_name3, r"\{(?P<Z>[a-z]+)", "{abc", "$Z{", "abc{");
-expand!(expand_name4, r"\}(?P<Z>[a-z]+)", "}abc", "$Z}", "abc}");
-expand!(expand_name5, r"%([a-z]+)", "%abc", "$1a%", "%");
-expand!(expand_name6, r"%([a-z]+)", "%abc", "${1}a%", "abca%");
-expand!(expand_name7, r"\[(?P<Z[>[a-z]+)", "[abc", "${Z[}[", "abc[");
-expand!(expand_name8, r"\[(?P<Z[>[a-z]+)", "[abc", "${foo}[", "[");
-expand!(expand_name9, r"\[(?P<Z[>[a-z]+)", "[abc", "${1a}[", "[");
-expand!(expand_name10, r"\[(?P<Z[>[a-z]+)", "[abc", "${#}[", "[");
-expand!(expand_name11, r"\[(?P<Z[>[a-z]+)", "[abc", "${$$}[", "[");
-
-split!(
- split1,
- r"(?-u)\s+",
- "a b\nc\td\n\t e",
- &[t!("a"), t!("b"), t!("c"), t!("d"), t!("e")]
-);
-split!(
- split2,
- r"(?-u)\b",
- "a b c",
- &[t!(""), t!("a"), t!(" "), t!("b"), t!(" "), t!("c"), t!("")]
-);
-split!(split3, r"a$", "a", &[t!(""), t!("")]);
-split!(split_none, r"-", r"a", &[t!("a")]);
-split!(split_trailing_blank, r"-", r"a-", &[t!("a"), t!("")]);
-split!(split_trailing_blanks, r"-", r"a--", &[t!("a"), t!(""), t!("")]);
-split!(split_empty, r"-", r"", &[t!("")]);
-
-splitn!(splitn_below_limit, r"-", r"a", 2, &[t!("a")]);
-splitn!(splitn_at_limit, r"-", r"a-b", 2, &[t!("a"), t!("b")]);
-splitn!(splitn_above_limit, r"-", r"a-b-c", 2, &[t!("a"), t!("b-c")]);
-splitn!(splitn_zero_limit, r"-", r"a-b", 0, empty_vec!());
-splitn!(splitn_trailing_blank, r"-", r"a-", 2, &[t!("a"), t!("")]);
-splitn!(splitn_trailing_separator, r"-", r"a--", 2, &[t!("a"), t!("-")]);
-splitn!(splitn_empty, r"-", r"", 1, &[t!("")]);
diff --git a/vendor/regex/tests/api_str.rs b/vendor/regex/tests/api_str.rs
deleted file mode 100644
index 480116da7..000000000
--- a/vendor/regex/tests/api_str.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-// These tests don't really make sense with the bytes API, so we only test them
-// on the Unicode API.
-
-#[test]
-fn empty_match_unicode_find_iter() {
- // Tests that we still yield byte ranges at valid UTF-8 sequence boundaries
- // even when we're susceptible to empty width matches.
- let re = regex!(r".*?");
- assert_eq!(
- vec![(0, 0), (3, 3), (4, 4), (7, 7), (8, 8)],
- findall!(re, "Ⅰ1Ⅱ2")
- );
-}
-
-#[test]
-fn empty_match_unicode_captures_iter() {
- // Same as empty_match_unicode_find_iter, but tests capture iteration.
- let re = regex!(r".*?");
- let ms: Vec<_> = re
- .captures_iter(text!("Ⅰ1Ⅱ2"))
- .map(|c| c.get(0).unwrap())
- .map(|m| (m.start(), m.end()))
- .collect();
- assert_eq!(vec![(0, 0), (3, 3), (4, 4), (7, 7), (8, 8)], ms);
-}
-
-#[test]
-fn match_as_str() {
- let re = regex!(r"fo+");
- let caps = re.captures("barfoobar").unwrap();
- assert_eq!(caps.get(0).map(|m| m.as_str()), Some("foo"));
- assert_eq!(caps.get(0).map(From::from), Some("foo"));
- assert_eq!(caps.get(0).map(Into::into), Some("foo"));
-}
diff --git a/vendor/regex/tests/bytes.rs b/vendor/regex/tests/bytes.rs
deleted file mode 100644
index d05f138ed..000000000
--- a/vendor/regex/tests/bytes.rs
+++ /dev/null
@@ -1,107 +0,0 @@
-// These are tests specifically crafted for regexes that can match arbitrary
-// bytes.
-
-// A silly wrapper to make it possible to write and match raw bytes.
-struct R<'a>(&'a [u8]);
-impl<'a> R<'a> {
- fn as_bytes(&self) -> &'a [u8] {
- self.0
- }
-}
-
-mat!(word_boundary, r"(?-u) \b", " δ", None);
-#[cfg(feature = "unicode-perl")]
-mat!(word_boundary_unicode, r" \b", " δ", Some((0, 1)));
-mat!(word_not_boundary, r"(?-u) \B", " δ", Some((0, 1)));
-#[cfg(feature = "unicode-perl")]
-mat!(word_not_boundary_unicode, r" \B", " δ", None);
-
-mat!(perl_w_ascii, r"(?-u)\w+", "aδ", Some((0, 1)));
-#[cfg(feature = "unicode-perl")]
-mat!(perl_w_unicode, r"\w+", "aδ", Some((0, 3)));
-mat!(perl_d_ascii, r"(?-u)\d+", "1२३9", Some((0, 1)));
-#[cfg(feature = "unicode-perl")]
-mat!(perl_d_unicode, r"\d+", "1२३9", Some((0, 8)));
-mat!(perl_s_ascii, r"(?-u)\s+", " \u{1680}", Some((0, 1)));
-#[cfg(feature = "unicode-perl")]
-mat!(perl_s_unicode, r"\s+", " \u{1680}", Some((0, 4)));
-
-// The first `(.+)` matches two Unicode codepoints, but can't match the 5th
-// byte, which isn't valid UTF-8. The second (byte based) `(.+)` takes over and
-// matches.
-mat!(
- mixed1,
- r"(.+)(?-u)(.+)",
- R(b"\xCE\x93\xCE\x94\xFF"),
- Some((0, 5)),
- Some((0, 4)),
- Some((4, 5))
-);
-
-mat!(case_ascii_one, r"(?i-u)a", "A", Some((0, 1)));
-mat!(case_ascii_class, r"(?i-u)[a-z]+", "AaAaA", Some((0, 5)));
-#[cfg(feature = "unicode-case")]
-mat!(case_unicode, r"(?i)[a-z]+", "aA\u{212A}aA", Some((0, 7)));
-mat!(case_not_unicode, r"(?i-u)[a-z]+", "aA\u{212A}aA", Some((0, 2)));
-
-mat!(negate_unicode, r"[^a]", "δ", Some((0, 2)));
-mat!(negate_not_unicode, r"(?-u)[^a]", "δ", Some((0, 1)));
-
-// This doesn't match in a normal Unicode regex because the implicit preceding
-// `.*?` is Unicode aware.
-mat!(dotstar_prefix_not_unicode1, r"(?-u)a", R(b"\xFFa"), Some((1, 2)));
-mat!(dotstar_prefix_not_unicode2, r"a", R(b"\xFFa"), Some((1, 2)));
-
-// Have fun with null bytes.
-mat!(
- null_bytes,
- r"(?-u)(?P<cstr>[^\x00]+)\x00",
- R(b"foo\x00"),
- Some((0, 4)),
- Some((0, 3))
-);
-
-// Test that lookahead operators work properly in the face of invalid UTF-8.
-// See: https://github.com/rust-lang/regex/issues/277
-matiter!(
- invalidutf8_anchor1,
- r"(?-u)\xcc?^",
- R(b"\x8d#;\x1a\xa4s3\x05foobarX\\\x0f0t\xe4\x9b\xa4"),
- (0, 0)
-);
-matiter!(
- invalidutf8_anchor2,
- r"(?-u)^\xf7|4\xff\d\x8a\x8a\x8a\x8a\x8a\x8a\x8a\x8a\x8a\x8a\x8a\x8a\x8a##########[] d\x8a\x8a\x8a\x8a\x8a\x8a\x8a\x8a\x8a\x8a\x8a\x8a\x8a##########\[] #####\x80\S7|$",
- R(b"\x8d#;\x1a\xa4s3\x05foobarX\\\x0f0t\xe4\x9b\xa4"),
- (22, 22)
-);
-matiter!(
- invalidutf8_anchor3,
- r"(?-u)^|ddp\xff\xffdddddlQd@\x80",
- R(b"\x8d#;\x1a\xa4s3\x05foobarX\\\x0f0t\xe4\x9b\xa4"),
- (0, 0)
-);
-
-// See https://github.com/rust-lang/regex/issues/303
-#[test]
-fn negated_full_byte_range() {
- assert!(::regex::bytes::Regex::new(r#"(?-u)[^\x00-\xff]"#).is_err());
-}
-
-matiter!(word_boundary_ascii1, r"(?-u:\B)x(?-u:\B)", "áxβ");
-matiter!(
- word_boundary_ascii2,
- r"(?-u:\B)",
- "0\u{7EF5E}",
- (2, 2),
- (3, 3),
- (4, 4),
- (5, 5)
-);
-
-// See: https://github.com/rust-lang/regex/issues/264
-mat!(ascii_boundary_no_capture, r"(?-u)\B", "\u{28f3e}", Some((0, 0)));
-mat!(ascii_boundary_capture, r"(?-u)(\B)", "\u{28f3e}", Some((0, 0)));
-
-// See: https://github.com/rust-lang/regex/issues/271
-mat!(end_not_wb, r"$(?-u:\B)", "\u{5c124}\u{b576c}", Some((8, 8)));
diff --git a/vendor/regex/tests/consistent.rs b/vendor/regex/tests/consistent.rs
deleted file mode 100644
index 722f2a51a..000000000
--- a/vendor/regex/tests/consistent.rs
+++ /dev/null
@@ -1,238 +0,0 @@
-use regex::internal::ExecBuilder;
-
-/// Given a regex, check if all of the backends produce the same
-/// results on a number of different inputs.
-///
-/// For now this just throws quickcheck at the problem, which
-/// is not very good because it only really tests half of the
-/// problem space. It is pretty unlikely that a random string
-/// will match any given regex, so this will probably just
-/// be checking that the different backends fail in the same
-/// way. This is still worthwhile to test, but is definitely not
-/// the whole story.
-///
-/// TODO(ethan): In order to cover the other half of the problem
-/// space, we should generate a random matching string by inspecting
-/// the AST of the input regex. The right way to do this probably
-/// involves adding a custom Arbitrary instance around a couple
-/// of newtypes. That way we can respect the quickcheck size hinting
-/// and shrinking and whatnot.
-pub fn backends_are_consistent(re: &str) -> Result<u64, String> {
- let standard_backends = vec![
- (
- "bounded_backtracking_re",
- ExecBuilder::new(re)
- .bounded_backtracking()
- .build()
- .map(|exec| exec.into_regex())
- .map_err(|err| format!("{}", err))?,
- ),
- (
- "pikevm_re",
- ExecBuilder::new(re)
- .nfa()
- .build()
- .map(|exec| exec.into_regex())
- .map_err(|err| format!("{}", err))?,
- ),
- (
- "default_re",
- ExecBuilder::new(re)
- .build()
- .map(|exec| exec.into_regex())
- .map_err(|err| format!("{}", err))?,
- ),
- ];
-
- let utf8bytes_backends = vec![
- (
- "bounded_backtracking_utf8bytes_re",
- ExecBuilder::new(re)
- .bounded_backtracking()
- .bytes(true)
- .build()
- .map(|exec| exec.into_regex())
- .map_err(|err| format!("{}", err))?,
- ),
- (
- "pikevm_utf8bytes_re",
- ExecBuilder::new(re)
- .nfa()
- .bytes(true)
- .build()
- .map(|exec| exec.into_regex())
- .map_err(|err| format!("{}", err))?,
- ),
- (
- "default_utf8bytes_re",
- ExecBuilder::new(re)
- .bytes(true)
- .build()
- .map(|exec| exec.into_regex())
- .map_err(|err| format!("{}", err))?,
- ),
- ];
-
- let bytes_backends = vec![
- (
- "bounded_backtracking_bytes_re",
- ExecBuilder::new(re)
- .bounded_backtracking()
- .only_utf8(false)
- .build()
- .map(|exec| exec.into_byte_regex())
- .map_err(|err| format!("{}", err))?,
- ),
- (
- "pikevm_bytes_re",
- ExecBuilder::new(re)
- .nfa()
- .only_utf8(false)
- .build()
- .map(|exec| exec.into_byte_regex())
- .map_err(|err| format!("{}", err))?,
- ),
- (
- "default_bytes_re",
- ExecBuilder::new(re)
- .only_utf8(false)
- .build()
- .map(|exec| exec.into_byte_regex())
- .map_err(|err| format!("{}", err))?,
- ),
- ];
-
- Ok(string_checker::check_backends(&standard_backends)?
- + string_checker::check_backends(&utf8bytes_backends)?
- + bytes_checker::check_backends(&bytes_backends)?)
-}
-
-//
-// A consistency checker parameterized by the input type (&str or &[u8]).
-//
-
-macro_rules! checker {
- ($module_name:ident, $regex_type:path, $mk_input:expr) => {
- mod $module_name {
- use quickcheck;
- use quickcheck::{Arbitrary, TestResult};
-
- pub fn check_backends(
- backends: &[(&str, $regex_type)],
- ) -> Result<u64, String> {
- let mut total_passed = 0;
- for regex in backends[1..].iter() {
- total_passed += quickcheck_regex_eq(&backends[0], regex)?;
- }
-
- Ok(total_passed)
- }
-
- fn quickcheck_regex_eq(
- &(name1, ref re1): &(&str, $regex_type),
- &(name2, ref re2): &(&str, $regex_type),
- ) -> Result<u64, String> {
- quickcheck::QuickCheck::new()
- .quicktest(RegexEqualityTest::new(
- re1.clone(),
- re2.clone(),
- ))
- .map_err(|err| {
- format!(
- "{}(/{}/) and {}(/{}/) are inconsistent.\
- QuickCheck Err: {:?}",
- name1, re1, name2, re2, err
- )
- })
- }
-
- struct RegexEqualityTest {
- re1: $regex_type,
- re2: $regex_type,
- }
- impl RegexEqualityTest {
- fn new(re1: $regex_type, re2: $regex_type) -> Self {
- RegexEqualityTest { re1: re1, re2: re2 }
- }
- }
-
- impl quickcheck::Testable for RegexEqualityTest {
- fn result(&self, gen: &mut quickcheck::Gen) -> TestResult {
- let input = $mk_input(gen);
- let input = &input;
-
- if self.re1.find(&input) != self.re2.find(input) {
- return TestResult::error(format!(
- "find mismatch input={:?}",
- input
- ));
- }
-
- let cap1 = self.re1.captures(input);
- let cap2 = self.re2.captures(input);
- match (cap1, cap2) {
- (None, None) => {}
- (Some(cap1), Some(cap2)) => {
- for (c1, c2) in cap1.iter().zip(cap2.iter()) {
- if c1 != c2 {
- return TestResult::error(format!(
- "captures mismatch input={:?}",
- input
- ));
- }
- }
- }
- _ => {
- return TestResult::error(format!(
- "captures mismatch input={:?}",
- input
- ))
- }
- }
-
- let fi1 = self.re1.find_iter(input);
- let fi2 = self.re2.find_iter(input);
- for (m1, m2) in fi1.zip(fi2) {
- if m1 != m2 {
- return TestResult::error(format!(
- "find_iter mismatch input={:?}",
- input
- ));
- }
- }
-
- let ci1 = self.re1.captures_iter(input);
- let ci2 = self.re2.captures_iter(input);
- for (cap1, cap2) in ci1.zip(ci2) {
- for (c1, c2) in cap1.iter().zip(cap2.iter()) {
- if c1 != c2 {
- return TestResult::error(format!(
- "captures_iter mismatch input={:?}",
- input
- ));
- }
- }
- }
-
- let s1 = self.re1.split(input);
- let s2 = self.re2.split(input);
- for (chunk1, chunk2) in s1.zip(s2) {
- if chunk1 != chunk2 {
- return TestResult::error(format!(
- "split mismatch input={:?}",
- input
- ));
- }
- }
-
- TestResult::from_bool(true)
- }
- }
- } // mod
- }; // rule case
-} // macro_rules!
-
-checker!(string_checker, ::regex::Regex, |gen| String::arbitrary(gen));
-checker!(bytes_checker, ::regex::bytes::Regex, |gen| Vec::<u8>::arbitrary(
- gen
-));
diff --git a/vendor/regex/tests/crates_regex.rs b/vendor/regex/tests/crates_regex.rs
deleted file mode 100644
index 200ec27b2..000000000
--- a/vendor/regex/tests/crates_regex.rs
+++ /dev/null
@@ -1,3287 +0,0 @@
-// DO NOT EDIT. Automatically generated by 'scripts/scrape_crates_io.py'
-// on 2018-06-20 09:56:32.820354.
-
-// autoshutdown-0.1.0: r"\s*(\d+)(\w)\s*"
-consistent!(autoshutdown_0, r"\s*(\d+)(\w)\s*");
-
-// epub-1.1.1: r"/"
-consistent!(epub_0, r"/");
-
-// rpi-info-0.2.0: "^Revision\t+: ([0-9a-fA-F]+)"
-consistent!(rpi_info_0, "^Revision\t+: ([0-9a-fA-F]+)");
-
-// rpi-info-0.2.0: "Serial\t+: ([0-9a-fA-F]+)"
-consistent!(rpi_info_1, "Serial\t+: ([0-9a-fA-F]+)");
-
-// pnet_macros-0.21.0: r"^u([0-9]+)(be|le|he)?$"
-consistent!(pnet_macros_0, r"^u([0-9]+)(be|le|he)?$");
-
-// iban_validate-1.0.3: r"^[A-Z]{2}\d{2}[A-Z\d]{1,30}$"
-consistent!(iban_validate_0, r"^[A-Z]{2}\d{2}[A-Z\d]{1,30}$");
-
-// markifier-0.1.0: r".*\[(?P<percent>.+)%.*\].*"
-consistent!(markifier_0, r".*\[(?P<percent>.+)%.*\].*");
-
-// mallumo-0.3.0: r"(#include) (\S*)(.*)"
-consistent!(mallumo_0, r"(#include) (\S*)(.*)");
-
-// mallumo-0.3.0: r"(ERROR: \d+:)(\d+)(: )(.+)"
-consistent!(mallumo_1, r"(ERROR: \d+:)(\d+)(: )(.+)");
-
-// mallumo-0.3.0: r"(\d+\()(\d+)(?:\) : )(.+)"
-consistent!(mallumo_2, r"(\d+\()(\d+)(?:\) : )(.+)");
-
-// magnet_more-0.0.1: r"(.+?)(\[.*?\])?"
-consistent!(magnet_more_0, r"(.+?)(\[.*?\])?");
-
-// magnet_app-0.0.1: r":(?P<k>[a-zA-Z_]+)"
-consistent!(magnet_app_0, r":(?P<k>[a-zA-Z_]+)");
-
-// yubibomb-0.2.0: r"^\d{6}(?:\s*,\s*\d{6})*$"
-consistent!(yubibomb_0, r"^\d{6}(?:\s*,\s*\d{6})*$");
-
-// multirust-rs-0.0.4: r"[\\/]([^\\/?]+)(\?.*)?$"
-consistent!(multirust_rs_0, r"[\\/]([^\\/?]+)(\?.*)?$");
-
-// hueclient-0.3.2: "\"[a-z]*\":null"
-consistent!(hueclient_0, "\"[a-z]*\":null");
-
-// hueclient-0.3.2: ",+"
-consistent!(hueclient_1, ",+");
-
-// hueclient-0.3.2: ",\\}"
-consistent!(hueclient_2, ",\\}");
-
-// hueclient-0.3.2: "\\{,"
-consistent!(hueclient_3, "\\{,");
-
-// aerial-0.1.0: r"[a-zA-Z_\$][a-zA-Z_0-9]*"
-consistent!(aerial_0, r"[a-zA-Z_\$][a-zA-Z_0-9]*");
-
-// aerial-0.1.0: r"thi[sng]+"
-consistent!(aerial_1, r"thi[sng]+");
-
-// rvue-0.1.0: r"(.+)\s+\((.+?)\)"
-consistent!(rvue_0, r"(.+)\s+\((.+?)\)");
-
-// rvue-0.1.0: r"([\d\.]+)\s*out\s*of\s*([\d\.]+)"
-consistent!(rvue_1, r"([\d\.]+)\s*out\s*of\s*([\d\.]+)");
-
-// rvue-0.1.0: r"^([\d\.]+)\s*(?:\(\))?$"
-consistent!(rvue_2, r"^([\d\.]+)\s*(?:\(\))?$");
-
-// rvue-0.1.0: r"([\d\.]+)\s*Points\s*Possible"
-consistent!(rvue_3, r"([\d\.]+)\s*Points\s*Possible");
-
-// rvue-0.1.0: r"([\d\.]+)\s*/\s*([\d\.]+)"
-consistent!(rvue_4, r"([\d\.]+)\s*/\s*([\d\.]+)");
-
-// rvsim-0.1.0: r"_?([_a-z0-9]+)\s*:\s*([_a-z0-9]+)\s*[,)]"
-consistent!(rvsim_0, r"_?([_a-z0-9]+)\s*:\s*([_a-z0-9]+)\s*[,)]");
-
-// nereon-0.1.4: "(.*[^\\\\])\\{\\}(.*)"
-consistent!(nereon_0, "(.*[^\\\\])\\{\\}(.*)");
-
-// next_episode-0.3.0: r"((?i)^(.+).s(\d+)e(\d+).*)$"
-consistent!(next_episode_0, r"((?i)^(.+).s(\d+)e(\d+).*)$");
-
-// migrant_lib-0.19.2: r"[^a-z0-9-]+"
-consistent!(migrant_lib_0, r"[^a-z0-9-]+");
-
-// migrant_lib-0.19.2: r"[0-9]{14}_[a-z0-9-]+"
-consistent!(migrant_lib_1, r"[0-9]{14}_[a-z0-9-]+");
-
-// migrant_lib-0.19.2: r"([0-9]{14}_)?[a-z0-9-]+"
-consistent!(migrant_lib_2, r"([0-9]{14}_)?[a-z0-9-]+");
-
-// minipre-0.2.0: "$_"
-consistent!(minipre_0, "$_");
-
-// minifier-0.0.13: r">\s+<"
-consistent!(minifier_0, r">\s+<");
-
-// minifier-0.0.13: r"\s{2,}|[\r\n]"
-consistent!(minifier_1, r"\s{2,}|[\r\n]");
-
-// minifier-0.0.13: r"<(style|script)[\w|\s].*?>"
-consistent!(minifier_2, r"<(style|script)[\w|\s].*?>");
-
-// minifier-0.0.13: "<!--(.|\n)*?-->"
-consistent!(minifier_3, "<!--(.|\n)*?-->");
-
-// minifier-0.0.13: r"<\w.*?>"
-consistent!(minifier_4, r"<\w.*?>");
-
-// minifier-0.0.13: r" \s+|\s +"
-consistent!(minifier_5, r" \s+|\s +");
-
-// minifier-0.0.13: r"\w\s+\w"
-consistent!(minifier_6, r"\w\s+\w");
-
-// minifier-0.0.13: r"'\s+>"
-consistent!(minifier_7, r"'\s+>");
-
-// minifier-0.0.13: r"\d\s+>"
-consistent!(minifier_8, r"\d\s+>");
-
-// ggp-rs-0.1.2: r"(?P<relation>\([^)]+\))|(?P<prop>[a-zA-Z0-9_]+)"
-consistent!(ggp_rs_0, r"(?P<relation>\([^)]+\))|(?P<prop>[a-zA-Z0-9_]+)");
-
-// ggp-rs-0.1.2: r"\((.*)\)."
-consistent!(ggp_rs_1, r"\((.*)\).");
-
-// poe-superfilter-0.2.0: "[A-Za-z0-9_]"
-consistent!(poe_superfilter_0, "[A-Za-z0-9_]");
-
-// poke-a-mango-0.5.0: r"(\d+)x(\d+)"
-consistent!(poke_a_mango_0, r"(\d+)x(\d+)");
-
-// pop3-rs-0.1.0: r"(?P<nmsg>\d+) (?P<size>\d+)"
-consistent!(pop3_rs_0, r"(?P<nmsg>\d+) (?P<size>\d+)");
-
-// pop3-rs-0.1.0: r"(?P<msgid>\d+) (?P<uidl>[\x21-\x7E]{1,70})"
-consistent!(pop3_rs_1, r"(?P<msgid>\d+) (?P<uidl>[\x21-\x7E]{1,70})");
-
-// pop3-rs-0.1.0: r"(<.*>)\r\n$"
-consistent!(pop3_rs_2, r"(<.*>)\r\n$");
-
-// pop3-rs-0.1.0: r"^(?P<status>\+OK|-ERR) (?P<statustext>.*)"
-consistent!(pop3_rs_3, r"^(?P<status>\+OK|-ERR) (?P<statustext>.*)");
-
-// pop3-1.0.6: r"^\.\r\n$"
-consistent!(pop3_0, r"^\.\r\n$");
-
-// pop3-1.0.6: r"\+OK(.*)"
-consistent!(pop3_1, r"\+OK(.*)");
-
-// pop3-1.0.6: r"-ERR(.*)"
-consistent!(pop3_2, r"-ERR(.*)");
-
-// pop3-1.0.6: r"\+OK (\d+) (\d+)\r\n"
-consistent!(pop3_3, r"\+OK (\d+) (\d+)\r\n");
-
-// pop3-1.0.6: r"(\d+) ([\x21-\x7e]+)\r\n"
-consistent!(pop3_4, r"(\d+) ([\x21-\x7e]+)\r\n");
-
-// pop3-1.0.6: r"\+OK (\d+) ([\x21-\x7e]+)\r\n"
-consistent!(pop3_5, r"\+OK (\d+) ([\x21-\x7e]+)\r\n");
-
-// pop3-1.0.6: r"(\d+) (\d+)\r\n"
-consistent!(pop3_6, r"(\d+) (\d+)\r\n");
-
-// pop3-1.0.6: r"\+OK (\d+) (\d+)\r\n"
-consistent!(pop3_7, r"\+OK (\d+) (\d+)\r\n");
-
-// polk-1.1.3: "github:(\\w+)/?(\\w+)?"
-consistent!(polk_0, "github:(\\w+)/?(\\w+)?");
-
-// geochunk-0.1.5: "^[0-9]{5}"
-consistent!(geochunk_0, "^[0-9]{5}");
-
-// generic-dns-update-1.1.4: r"((?:(?:0|1[\d]{0,2}|2(?:[0-4]\d?|5[0-5]?|[6-9])?|[3-9]\d?)\.){3}(?:0|1[\d]{0,2}|2(?:[0-4]\d?|5[0-5]?|[6-9])?|[3-9]\d?))"
-consistent!(generic_dns_update_0, r"((?:(?:0|1[\d]{0,2}|2(?:[0-4]\d?|5[0-5]?|[6-9])?|[3-9]\d?)\.){3}(?:0|1[\d]{0,2}|2(?:[0-4]\d?|5[0-5]?|[6-9])?|[3-9]\d?))");
-
-// generic-dns-update-1.1.4: r"((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\d((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\d)\.){3}(\d((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\d))|(([0-9A-Fa-f]{1,4}:){0,5}:((\d((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\d)\.){3}(\d((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\d))|(::([0-9A-Fa-f]{1,4}:){0,5}((\d((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\d)\.){3}(\d((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\d))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))"
-consistent!(generic_dns_update_1, r"((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\d((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\d)\.){3}(\d((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\d))|(([0-9A-Fa-f]{1,4}:){0,5}:((\d((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\d)\.){3}(\d((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\d))|(::([0-9A-Fa-f]{1,4}:){0,5}((\d((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\d)\.){3}(\d((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\d))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))");
-
-// generic-dns-update-1.1.4: r"<value><string>([0-9.]*)</string></value>"
-consistent!(
- generic_dns_update_2,
- r"<value><string>([0-9.]*)</string></value>"
-);
-
-// generic-dns-update-1.1.4: r"<int>([0-9]+)</int>"
-consistent!(generic_dns_update_3, r"<int>([0-9]+)</int>");
-
-// generic-dns-update-1.1.4: r"<int>([0-9]+)</int>"
-consistent!(generic_dns_update_4, r"<int>([0-9]+)</int>");
-
-// generic-dns-update-1.1.4: r"<boolean>([0-1]*)</boolean>"
-consistent!(generic_dns_update_5, r"<boolean>([0-1]*)</boolean>");
-
-// generate-nix-pkg-0.3.0: r"(\d*)\.(\d*)\.(\d*)(-(\S*))?"
-consistent!(generate_nix_pkg_0, r"(\d*)\.(\d*)\.(\d*)(-(\S*))?");
-
-// generate-nix-pkg-0.3.0: r"^(\S*) (\d*)\.(\d*)\.(\d*)(-(\S*))?"
-consistent!(generate_nix_pkg_1, r"^(\S*) (\d*)\.(\d*)\.(\d*)(-(\S*))?");
-
-// genact-0.6.0: r"arch/([a-z0-9_])+/"
-consistent!(genact_0, r"arch/([a-z0-9_])+/");
-
-// genact-0.6.0: r"arch/([a-z0-9_])+/"
-consistent!(genact_1, r"arch/([a-z0-9_])+/");
-
-// cron_rs-0.1.6: r"^\s*((\*(/\d+)?)|[0-9-,/]+)(\s+((\*(/\d+)?)|[0-9-,/]+)){4,5}\s*$"
-consistent!(
- cron_rs_0,
- r"^\s*((\*(/\d+)?)|[0-9-,/]+)(\s+((\*(/\d+)?)|[0-9-,/]+)){4,5}\s*$"
-);
-
-// systemfd-0.3.0: r"^([a-zA-Z]+)::(.+)$"
-consistent!(systemfd_0, r"^([a-zA-Z]+)::(.+)$");
-
-// symbolic-debuginfo-5.0.2: "__?hidden#\\d+_"
-consistent!(symbolic_debuginfo_0, "__?hidden#\\d+_");
-
-// symbolic-minidump-5.0.2: r"^Linux ([^ ]+) (.*) \w+(?: GNU/Linux)?$"
-consistent!(symbolic_minidump_0, r"^Linux ([^ ]+) (.*) \w+(?: GNU/Linux)?$");
-
-// graphql-idl-parser-0.1.1: "^(?u:\\#)(?u:[\t-\r - \u{85}-\u{85}\u{a0}-\u{a0}\u{1680}-\u{1680}\u{2000}-\u{200a}\u{2028}-\u{2029}\u{202f}-\u{202f}\u{205f}-\u{205f}\u{3000}-\u{3000}])*(?u:.)+"
-consistent!(graphql_idl_parser_0, "^(?u:\\#)(?u:[\t-\r - \u{85}-\u{85}\u{a0}-\u{a0}\u{1680}-\u{1680}\u{2000}-\u{200a}\u{2028}-\u{2029}\u{202f}-\u{202f}\u{205f}-\u{205f}\u{3000}-\u{3000}])*(?u:.)+");
-
-// graphql-idl-parser-0.1.1: "^(?u:=)(?u:[\t-\r - \u{85}-\u{85}\u{a0}-\u{a0}\u{1680}-\u{1680}\u{2000}-\u{200a}\u{2028}-\u{2029}\u{202f}-\u{202f}\u{205f}-\u{205f}\u{3000}-\u{3000}])*(?u:.)+"
-consistent!(graphql_idl_parser_1, "^(?u:=)(?u:[\t-\r - \u{85}-\u{85}\u{a0}-\u{a0}\u{1680}-\u{1680}\u{2000}-\u{200a}\u{2028}-\u{2029}\u{202f}-\u{202f}\u{205f}-\u{205f}\u{3000}-\u{3000}])*(?u:.)+");
-
-// graphql-idl-parser-0.1.1: "^(?u:[A-Z_-_a-z])(?u:[0-9A-Z_-_a-z])*"
-consistent!(graphql_idl_parser_2, "^(?u:[A-Z_-_a-z])(?u:[0-9A-Z_-_a-z])*");
-
-// graphql-idl-parser-0.1.1: "^(?u:!)"
-consistent!(graphql_idl_parser_3, "^(?u:!)");
-
-// graphql-idl-parser-0.1.1: "^(?u:\\()"
-consistent!(graphql_idl_parser_4, "^(?u:\\()");
-
-// graphql-idl-parser-0.1.1: "^(?u:\\))"
-consistent!(graphql_idl_parser_5, "^(?u:\\))");
-
-// graphql-idl-parser-0.1.1: "^(?u:,)"
-consistent!(graphql_idl_parser_6, "^(?u:,)");
-
-// graphql-idl-parser-0.1.1: "^(?u::)"
-consistent!(graphql_idl_parser_7, "^(?u::)");
-
-// graphql-idl-parser-0.1.1: "^(?u:@)"
-consistent!(graphql_idl_parser_8, "^(?u:@)");
-
-// graphql-idl-parser-0.1.1: "^(?u:\\[)"
-consistent!(graphql_idl_parser_9, "^(?u:\\[)");
-
-// graphql-idl-parser-0.1.1: "^(?u:\\])"
-consistent!(graphql_idl_parser_10, "^(?u:\\])");
-
-// graphql-idl-parser-0.1.1: "^(?u:enum)"
-consistent!(graphql_idl_parser_11, "^(?u:enum)");
-
-// graphql-idl-parser-0.1.1: "^(?u:implements)"
-consistent!(graphql_idl_parser_12, "^(?u:implements)");
-
-// graphql-idl-parser-0.1.1: "^(?u:input)"
-consistent!(graphql_idl_parser_13, "^(?u:input)");
-
-// graphql-idl-parser-0.1.1: "^(?u:interface)"
-consistent!(graphql_idl_parser_14, "^(?u:interface)");
-
-// graphql-idl-parser-0.1.1: "^(?u:scalar)"
-consistent!(graphql_idl_parser_15, "^(?u:scalar)");
-
-// graphql-idl-parser-0.1.1: "^(?u:type)"
-consistent!(graphql_idl_parser_16, "^(?u:type)");
-
-// graphql-idl-parser-0.1.1: "^(?u:union)"
-consistent!(graphql_idl_parser_17, "^(?u:union)");
-
-// graphql-idl-parser-0.1.1: "^(?u:\\{)"
-consistent!(graphql_idl_parser_18, "^(?u:\\{)");
-
-// graphql-idl-parser-0.1.1: "^(?u:\\})"
-consistent!(graphql_idl_parser_19, "^(?u:\\})");
-
-// grimoire-0.1.0: r"(?s)/\*(?P<config>.*?)\*/"
-consistent!(grimoire_0, r"(?s)/\*(?P<config>.*?)\*/");
-
-// phonenumber-0.2.0+8.9.0: r"[\d]+(?:[~\x{2053}\x{223C}\x{FF5E}][\d]+)?"
-consistent!(phonenumber_0, r"[\d]+(?:[~\x{2053}\x{223C}\x{FF5E}][\d]+)?");
-
-// phonenumber-0.2.0+8.9.0: r"[, \[\]]"
-consistent!(phonenumber_1, r"[, \[\]]");
-
-// phonenumber-0.2.0+8.9.0: r"[\\/] *x"
-consistent!(phonenumber_2, r"[\\/] *x");
-
-// phonenumber-0.2.0+8.9.0: r"[[\P{N}&&\P{L}]&&[^#]]+$"
-consistent!(phonenumber_3, r"[[\P{N}&&\P{L}]&&[^#]]+$");
-
-// phonenumber-0.2.0+8.9.0: r"(?:.*?[A-Za-z]){3}.*"
-consistent!(phonenumber_4, r"(?:.*?[A-Za-z]){3}.*");
-
-// phonenumber-0.2.0+8.9.0: r"(\D+)"
-consistent!(phonenumber_5, r"(\D+)");
-
-// phonenumber-0.2.0+8.9.0: r"(\$\d)"
-consistent!(phonenumber_6, r"(\$\d)");
-
-// phonenumber-0.2.0+8.9.0: r"\(?\$1\)?"
-consistent!(phonenumber_7, r"\(?\$1\)?");
-
-// phone_number-0.1.0: r"\D"
-consistent!(phone_number_0, r"\D");
-
-// phone_number-0.1.0: r"^0+"
-consistent!(phone_number_1, r"^0+");
-
-// phone_number-0.1.0: r"^89"
-consistent!(phone_number_2, r"^89");
-
-// phone_number-0.1.0: r"^8+"
-consistent!(phone_number_3, r"^8+");
-
-// phile-0.1.4: r"^ *(\^_*\^) *$"
-consistent!(phile_0, r"^ *(\^_*\^) *$");
-
-// phile-0.1.4: r"^[_\p{XID_Start}]$"
-consistent!(phile_1, r"^[_\p{XID_Start}]$");
-
-// phile-0.1.4: r"^\p{XID_Continue}$"
-consistent!(phile_2, r"^\p{XID_Continue}$");
-
-// uritemplate-0.1.2: "%25(?P<hex>[0-9a-fA-F][0-9a-fA-F])"
-consistent!(uritemplate_0, "%25(?P<hex>[0-9a-fA-F][0-9a-fA-F])");
-
-// urdf-rs-0.4.2: "^package://(\\w+)/"
-consistent!(urdf_rs_0, "^package://(\\w+)/");
-
-// url-match-0.1.7: r"(?P<key>[?&.])"
-consistent!(url_match_0, r"(?P<key>[?&.])");
-
-// url-match-0.1.7: r":(?P<key>[a-zA-Z0-9_-]+)"
-consistent!(url_match_1, r":(?P<key>[a-zA-Z0-9_-]+)");
-
-// tsm-sys-0.1.0: r"hello world"
-consistent!(tsm_sys_0, r"hello world");
-
-// deb-version-0.1.0: "^(?:(?:(?:\\d+:).+)|(?:[^:]+))$"
-consistent!(deb_version_0, "^(?:(?:(?:\\d+:).+)|(?:[^:]+))$");
-
-// debcargo-2.1.0: r"^(?i)(a|an|the)\s+"
-consistent!(debcargo_0, r"^(?i)(a|an|the)\s+");
-
-// debcargo-2.1.0: r"^(?i)(rust\s+)?(implementation|library|tool|crate)\s+(of|to|for)\s+"
-consistent!(
- debcargo_1,
- r"^(?i)(rust\s+)?(implementation|library|tool|crate)\s+(of|to|for)\s+"
-);
-
-// feaders-0.2.0: r"^.*\.h$"
-consistent!(feaders_0, r"^.*\.h$");
-
-// feaders-0.2.0: r"^.*\.c$"
-consistent!(feaders_1, r"^.*\.c$");
-
-// feaders-0.2.0: r"^.*\.hpp$"
-consistent!(feaders_2, r"^.*\.hpp$");
-
-// feaders-0.2.0: r"^.*\.cc$"
-consistent!(feaders_3, r"^.*\.cc$");
-
-// feaders-0.2.0: r"^.*\.cpp$"
-consistent!(feaders_4, r"^.*\.cpp$");
-
-// hyperscan-0.1.6: r"CPtr\(\w+\)"
-consistent!(hyperscan_0, r"CPtr\(\w+\)");
-
-// hyperscan-0.1.6: r"^Version:\s(\d\.\d\.\d)\sFeatures:\s+(\w+)?\sMode:\s(\w+)$"
-consistent!(
- hyperscan_1,
- r"^Version:\s(\d\.\d\.\d)\sFeatures:\s+(\w+)?\sMode:\s(\w+)$"
-);
-
-// hyperscan-0.1.6: r"RawDatabase<Block>\{db: \w+\}"
-consistent!(hyperscan_2, r"RawDatabase<Block>\{db: \w+\}");
-
-// hyperscan-0.1.6: r"RawSerializedDatabase\{p: \w+, len: \d+\}"
-consistent!(hyperscan_3, r"RawSerializedDatabase\{p: \w+, len: \d+\}");
-
-// ucd-parse-0.1.1: r"[0-9A-F]+"
-consistent!(ucd_parse_0, r"[0-9A-F]+");
-
-// afsort-0.2.0: r".*"
-consistent!(afsort_0, r".*");
-
-// afsort-0.2.0: r".*"
-consistent!(afsort_1, r".*");
-
-// afsort-0.2.0: r".*"
-consistent!(afsort_2, r".*");
-
-// afsort-0.2.0: r".*"
-consistent!(afsort_3, r".*");
-
-// afsort-0.2.0: r".*"
-consistent!(afsort_4, r".*");
-
-// afsort-0.2.0: r".*"
-consistent!(afsort_5, r".*");
-
-// afsort-0.2.0: r"^[a-z]+$"
-consistent!(afsort_6, r"^[a-z]+$");
-
-// afsort-0.2.0: r"^[a-z]+$"
-consistent!(afsort_7, r"^[a-z]+$");
-
-// tin-summer-1.21.4: r"(\.git|\.pijul|_darcs|\.hg)$"
-consistent!(tin_summer_0, r"(\.git|\.pijul|_darcs|\.hg)$");
-
-// tin-drummer-1.0.1: r".*?\.(a|la|lo|o|ll|keter|bc|dyn_o|d|rlib|crate|min\.js|hi|dyn_hi|S|jsexe|webapp|js\.externs|ibc|toc|aux|fdb_latexmk|fls|egg-info|whl|js_a|js_hi|jld|ji|js_o|so.*|dump-.*|vmb|crx|orig|elmo|elmi|pyc|mod|p_hi|p_o|prof|tix)$"
-consistent!(tin_drummer_0, r".*?\.(a|la|lo|o|ll|keter|bc|dyn_o|d|rlib|crate|min\.js|hi|dyn_hi|S|jsexe|webapp|js\.externs|ibc|toc|aux|fdb_latexmk|fls|egg-info|whl|js_a|js_hi|jld|ji|js_o|so.*|dump-.*|vmb|crx|orig|elmo|elmi|pyc|mod|p_hi|p_o|prof|tix)$");
-
-// tin-drummer-1.0.1: r".*?\.(stats|conf|h|out|cache.*|dat|pc|info|\.js)$"
-consistent!(
- tin_drummer_1,
- r".*?\.(stats|conf|h|out|cache.*|dat|pc|info|\.js)$"
-);
-
-// tin-drummer-1.0.1: r".*?\.(exe|a|la|o|ll|keter|bc|dyn_o|d|rlib|crate|min\.js|hi|dyn_hi|jsexe|webapp|js\.externs|ibc|toc|aux|fdb_latexmk|fls|egg-info|whl|js_a|js_hi|jld|ji|js_o|so.*|dump-.*|vmb|crx|orig|elmo|elmi|pyc|mod|p_hi|p_o|prof|tix)$"
-consistent!(tin_drummer_2, r".*?\.(exe|a|la|o|ll|keter|bc|dyn_o|d|rlib|crate|min\.js|hi|dyn_hi|jsexe|webapp|js\.externs|ibc|toc|aux|fdb_latexmk|fls|egg-info|whl|js_a|js_hi|jld|ji|js_o|so.*|dump-.*|vmb|crx|orig|elmo|elmi|pyc|mod|p_hi|p_o|prof|tix)$");
-
-// tin-drummer-1.0.1: r".*?\.(stats|conf|h|out|cache.*|\.js)$"
-consistent!(tin_drummer_3, r".*?\.(stats|conf|h|out|cache.*|\.js)$");
-
-// tin-drummer-1.0.1: r"(\.git|\.pijul|_darcs|\.hg)$"
-consistent!(tin_drummer_4, r"(\.git|\.pijul|_darcs|\.hg)$");
-
-// tin-drummer-1.0.1: r".*?\.(dyn_o|out|d|hi|dyn_hi|dump-.*|p_hi|p_o|prof|tix)$"
-consistent!(
- tin_drummer_5,
- r".*?\.(dyn_o|out|d|hi|dyn_hi|dump-.*|p_hi|p_o|prof|tix)$"
-);
-
-// tin-drummer-1.0.1: r".*?\.(ibc)$"
-consistent!(tin_drummer_6, r".*?\.(ibc)$");
-
-// tin-drummer-1.0.1: r"\.stack-work|dist-newstyle"
-consistent!(tin_drummer_7, r"\.stack-work|dist-newstyle");
-
-// timmy-0.3.0: r"_NET_WM_PID\(CARDINAL\) = (\d+)"
-consistent!(timmy_0, r"_NET_WM_PID\(CARDINAL\) = (\d+)");
-
-// timmy-0.3.0: r"today|yesterday|now"
-consistent!(timmy_1, r"today|yesterday|now");
-
-// timmy-0.3.0: r"(?P<day>\d{1,2})/(?P<month>\d{1,2})(/(?P<year>\d{4}|\d{2}))?"
-consistent!(
- timmy_2,
- r"(?P<day>\d{1,2})/(?P<month>\d{1,2})(/(?P<year>\d{4}|\d{2}))?"
-);
-
-// timmy-0.3.0: r"(?P<n>\d+) (days?|ds?)(?P<ago>( ago)?)"
-consistent!(timmy_3, r"(?P<n>\d+) (days?|ds?)(?P<ago>( ago)?)");
-
-// timmy-0.3.0: r"(?P<hr>\d{2}):(?P<mins>\d{2})"
-consistent!(timmy_4, r"(?P<hr>\d{2}):(?P<mins>\d{2})");
-
-// tinfo-0.5.0: r"^(\d+): \d+ windows \(.*\) \[\d+x\d+\]( \(attached\))?"
-consistent!(
- tinfo_0,
- r"^(\d+): \d+ windows \(.*\) \[\d+x\d+\]( \(attached\))?"
-);
-
-// tinfo-0.5.0: r"^(\d+):(\d+): (.*) \((\d+) panes\) \[(\d+)x(\d+)\]"
-consistent!(tinfo_1, r"^(\d+):(\d+): (.*) \((\d+) panes\) \[(\d+)x(\d+)\]");
-
-// timespan-0.0.4: r"(?:\\\{start\\\}|\\\{end\\\})"
-consistent!(timespan_0, r"(?:\\\{start\\\}|\\\{end\\\})");
-
-// timespan-0.0.4: r"(.*)\s+-\s+(.*)"
-consistent!(timespan_1, r"(.*)\s+-\s+(.*)");
-
-// timespan-0.0.4: r"(.*)\s+(\w+)$"
-consistent!(timespan_2, r"(.*)\s+(\w+)$");
-
-// timespan-0.0.4: r"(.*)\s+(\w+)$"
-consistent!(timespan_3, r"(.*)\s+(\w+)$");
-
-// timespan-0.0.4: r"(.*)\s+-\s+(.*)"
-consistent!(timespan_4, r"(.*)\s+-\s+(.*)");
-
-// titlecase-0.10.0: r"[[:lower:]]"
-consistent!(titlecase_0, r"[[:lower:]]");
-
-// tight-0.1.3: r"^\d+ (day|week|month|year)s?$"
-consistent!(tight_0, r"^\d+ (day|week|month|year)s?$");
-
-// tight-0.1.3: r"^\d+ (day|week|month|year)s?$"
-consistent!(tight_1, r"^\d+ (day|week|month|year)s?$");
-
-// yaml-0.2.1: r"^[-+]?(0|[1-9][0-9_]*)$"
-consistent!(yaml_0, r"^[-+]?(0|[1-9][0-9_]*)$");
-
-// yaml-0.2.1: r"^([-+]?)0o?([0-7_]+)$"
-consistent!(yaml_1, r"^([-+]?)0o?([0-7_]+)$");
-
-// yaml-0.2.1: r"^([-+]?)0x([0-9a-fA-F_]+)$"
-consistent!(yaml_2, r"^([-+]?)0x([0-9a-fA-F_]+)$");
-
-// yaml-0.2.1: r"^([-+]?)0b([0-1_]+)$"
-consistent!(yaml_3, r"^([-+]?)0b([0-1_]+)$");
-
-// yaml-0.2.1: r"^([-+]?)(\.[0-9]+|[0-9]+(\.[0-9]*)?([eE][-+]?[0-9]+)?)$"
-consistent!(
- yaml_4,
- r"^([-+]?)(\.[0-9]+|[0-9]+(\.[0-9]*)?([eE][-+]?[0-9]+)?)$"
-);
-
-// yaml-0.2.1: r"^[+]?(\.inf|\.Inf|\.INF)$"
-consistent!(yaml_5, r"^[+]?(\.inf|\.Inf|\.INF)$");
-
-// yaml-0.2.1: r"^-(\.inf|\.Inf|\.INF)$"
-consistent!(yaml_6, r"^-(\.inf|\.Inf|\.INF)$");
-
-// yaml-0.2.1: r"^(\.nan|\.NaN|\.NAN)$"
-consistent!(yaml_7, r"^(\.nan|\.NaN|\.NAN)$");
-
-// yaml-0.2.1: r"^(null|Null|NULL|~)$"
-consistent!(yaml_8, r"^(null|Null|NULL|~)$");
-
-// yaml-0.2.1: r"^(true|True|TRUE|yes|Yes|YES)$"
-consistent!(yaml_9, r"^(true|True|TRUE|yes|Yes|YES)$");
-
-// yaml-0.2.1: r"^(false|False|FALSE|no|No|NO)$"
-consistent!(yaml_10, r"^(false|False|FALSE|no|No|NO)$");
-
-// kefia-0.1.0: r"(?m)^(\S+)/(\S+) (\S+)(?: \((.*)\))?$"
-consistent!(kefia_0, r"(?m)^(\S+)/(\S+) (\S+)(?: \((.*)\))?$");
-
-// risp-0.7.0: "^(\\s+|;.*?(\n|$))+"
-consistent!(risp_0, "^(\\s+|;.*?(\n|$))+");
-
-// risp-0.7.0: "^\".*?\""
-consistent!(risp_1, "^\".*?\"");
-
-// risp-0.7.0: r"^[^\s\{\}()\[\]]+"
-consistent!(risp_2, r"^[^\s\{\}()\[\]]+");
-
-// risp-0.7.0: r"^-?\d+"
-consistent!(risp_3, r"^-?\d+");
-
-// ripgrep-0.8.1: "^([0-9]+)([KMG])?$"
-consistent!(ripgrep_0, "^([0-9]+)([KMG])?$");
-
-// riquid-0.0.1: r"^\w+"
-consistent!(riquid_0, r"^\w+");
-
-// riquid-0.0.1: r"^\d+"
-consistent!(riquid_1, r"^\d+");
-
-// recursive_disassembler-2.1.2: r"\A(0x)?([a-fA-F0-9]+)\z"
-consistent!(recursive_disassembler_0, r"\A(0x)?([a-fA-F0-9]+)\z");
-
-// remake-0.1.0: r"^[a-zA-Z_][a-zA-Z0-9_]*"
-consistent!(remake_0, r"^[a-zA-Z_][a-zA-Z0-9_]*");
-
-// regex-decode-0.1.0: r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})\)"
-consistent!(regex_decode_0, r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})\)");
-
-// regex-decode-0.1.0: r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})\)"
-consistent!(regex_decode_1, r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})\)");
-
-// regex-decode-0.1.0: r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})\)"
-consistent!(regex_decode_2, r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})\)");
-
-// regex-decode-0.1.0: r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})\)"
-consistent!(regex_decode_3, r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})\)");
-
-// regex-decode-0.1.0: r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})\)"
-consistent!(regex_decode_4, r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})\)");
-
-// regex-decode-0.1.0: r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})\)"
-consistent!(regex_decode_5, r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})\)");
-
-// regex-decode-0.1.0: r"'(?P<title>[^']+)'\s+\((?P<year>\d{2})\)"
-consistent!(regex_decode_6, r"'(?P<title>[^']+)'\s+\((?P<year>\d{2})\)");
-
-// regex-decode-0.1.0: r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})\)"
-consistent!(regex_decode_7, r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})\)");
-
-// regex-decode-0.1.0: r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})\)"
-consistent!(regex_decode_8, r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})\)");
-
-// regex-decode-0.1.0: r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})?\)"
-consistent!(regex_decode_9, r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})?\)");
-
-// regex-decode-0.1.0: r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})?\)"
-consistent!(regex_decode_10, r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})?\)");
-
-// regex-decode-0.1.0: r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})?\)"
-consistent!(regex_decode_11, r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})?\)");
-
-// regex-decode-0.1.0: r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})?\)"
-consistent!(regex_decode_12, r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})?\)");
-
-// regex-decode-0.1.0: r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})?\)"
-consistent!(regex_decode_13, r"'(?P<title>[^']+)'\s+\((?P<year>\d{4})?\)");
-
-// regex-cache-0.2.0: "[0-9]{3}-[0-9]{3}-[0-9]{4}"
-consistent!(regex_cache_0, "[0-9]{3}-[0-9]{3}-[0-9]{4}");
-
-// regex-cache-0.2.0: r"^\d+$"
-consistent!(regex_cache_1, r"^\d+$");
-
-// regex-cache-0.2.0: r"^[a-z]+$"
-consistent!(regex_cache_2, r"^[a-z]+$");
-
-// regex-cache-0.2.0: r"^\d+$"
-consistent!(regex_cache_3, r"^\d+$");
-
-// regex-cache-0.2.0: r"^\d+$"
-consistent!(regex_cache_4, r"^\d+$");
-
-// regex_dfa-0.5.0: r"\d{4}-\d{2}-\d{2}"
-consistent!(regex_dfa_0, r"\d{4}-\d{2}-\d{2}");
-
-// reaper-2.0.0: r"^[0-9\p{L} _\\.]{3,16}$"
-consistent!(reaper_0, r"^[0-9\p{L} _\\.]{3,16}$");
-
-// retdec-0.1.0: r"^attachment; filename=(.+)$"
-consistent!(retdec_0, r"^attachment; filename=(.+)$");
-
-// renvsubst-0.1.2: r"(\\)(?P<head>\$[0-9A-Za-z_{])"
-consistent!(renvsubst_0, r"(\\)(?P<head>\$[0-9A-Za-z_{])");
-
-// renvsubst-0.1.2: r"\$([[:word:]]+)"
-consistent!(renvsubst_1, r"\$([[:word:]]+)");
-
-// renvsubst-0.1.2: r"\$\{([[:word:]]+)\}"
-consistent!(renvsubst_2, r"\$\{([[:word:]]+)\}");
-
-// rexpect-0.3.0: r"'[a-z]+'"
-consistent!(rexpect_0, r"'[a-z]+'");
-
-// rexpect-0.3.0: r"^\d{4}-\d{2}-\d{2}$"
-consistent!(rexpect_1, r"^\d{4}-\d{2}-\d{2}$");
-
-// rexpect-0.3.0: r"-\d{2}-"
-consistent!(rexpect_2, r"-\d{2}-");
-
-// luther-0.1.0: "^a(b|c)c*$"
-consistent!(luther_0, "^a(b|c)c*$");
-
-// little_boxes-1.6.0: r"(\x9B|\x1B\[)[0-?]*[ -/]*[@-~]"
-consistent!(little_boxes_0, r"(\x9B|\x1B\[)[0-?]*[ -/]*[@-~]");
-
-// libimagentrytag-0.8.0: "^[a-zA-Z]([a-zA-Z0-9_-]*)$"
-consistent!(libimagentrytag_0, "^[a-zA-Z]([a-zA-Z0-9_-]*)$");
-
-// libimaginteraction-0.8.0: r"^[Yy](\n?)$"
-consistent!(libimaginteraction_0, r"^[Yy](\n?)$");
-
-// libimaginteraction-0.8.0: r"^[Nn](\n?)$"
-consistent!(libimaginteraction_1, r"^[Nn](\n?)$");
-
-// libimagutil-0.8.0: "^(?P<KEY>([^=]*))=(.*)$"
-consistent!(libimagutil_0, "^(?P<KEY>([^=]*))=(.*)$");
-
-// libimagutil-0.8.0: "(.*)=(\"(?P<QVALUE>([^\"]*))\"|(?P<VALUE>(.*)))$"
-consistent!(libimagutil_1, "(.*)=(\"(?P<QVALUE>([^\"]*))\"|(?P<VALUE>(.*)))$");
-
-// linux_ip-0.1.0: r"\s+"
-consistent!(linux_ip_0, r"\s+");
-
-// linux_ip-0.1.0: r"\s*[\n\r]+\s*"
-consistent!(linux_ip_1, r"\s*[\n\r]+\s*");
-
-// linux_ip-0.1.0: r"^([0-9a-fA-F\.:/]+)\s+dev\s+([a-z0-9\.]+)\s*(.*)$"
-consistent!(linux_ip_2, r"^([0-9a-fA-F\.:/]+)\s+dev\s+([a-z0-9\.]+)\s*(.*)$");
-
-// linux_ip-0.1.0: r"^([0-9a-fA-F\.:/]+|default)\s+via\s+([a-z0-9\.:]+)\s+dev\s+([a-z0-9\.]+)\s*(.*)$"
-consistent!(linux_ip_3, r"^([0-9a-fA-F\.:/]+|default)\s+via\s+([a-z0-9\.:]+)\s+dev\s+([a-z0-9\.]+)\s*(.*)$");
-
-// linux_ip-0.1.0: r"^(blackhole)\s+([0-9a-fA-F\.:/]+)$"
-consistent!(linux_ip_4, r"^(blackhole)\s+([0-9a-fA-F\.:/]+)$");
-
-// linux_ip-0.1.0: r"^(unreachable)\s+([0-9a-fA-F\.:/]+)\s+dev\s+([a-z0-9\.]+)\s+(.*)$"
-consistent!(
- linux_ip_5,
- r"^(unreachable)\s+([0-9a-fA-F\.:/]+)\s+dev\s+([a-z0-9\.]+)\s+(.*)$"
-);
-
-// linux_ip-0.1.0: r"\s*[\n\r]+\s*"
-consistent!(linux_ip_6, r"\s*[\n\r]+\s*");
-
-// linux_ip-0.1.0: r"^\d+:\s+([a-zA-Z0-9\.-]+)(@\S+)*:\s+(.*)$"
-consistent!(linux_ip_7, r"^\d+:\s+([a-zA-Z0-9\.-]+)(@\S+)*:\s+(.*)$");
-
-// linux_ip-0.1.0: r"\s*link/ether\s+([a-f0-9:]+)\s+.*"
-consistent!(linux_ip_8, r"\s*link/ether\s+([a-f0-9:]+)\s+.*");
-
-// linux_ip-0.1.0: r"\s*inet[6]*\s+([0-9a-f:\./]+)\s+.*"
-consistent!(linux_ip_9, r"\s*inet[6]*\s+([0-9a-f:\./]+)\s+.*");
-
-// linky-0.1.4: r"[^\w -]"
-consistent!(linky_0, r"[^\w -]");
-
-// linky-0.1.4: r"^(.*):(\d+): [^ ]* ([^ ]*)$"
-consistent!(linky_1, r"^(.*):(\d+): [^ ]* ([^ ]*)$");
-
-// limonite-0.2.1: r"^(\d{4}-\d{2}-\d{2})-(\d{3})-(.+)$"
-consistent!(limonite_0, r"^(\d{4}-\d{2}-\d{2})-(\d{3})-(.+)$");
-
-// process-queue-0.1.1: r"^[a-zA-Z]+$"
-consistent!(process_queue_0, r"^[a-zA-Z]+$");
-
-// pronghorn-0.1.2: r"^\{([a-zA-Z_]+)\}$"
-consistent!(pronghorn_0, r"^\{([a-zA-Z_]+)\}$");
-
-// protocol-ftp-client-0.1.1: "(?m:^(\\d{3}) (.+)\r$)"
-consistent!(protocol_ftp_client_0, "(?m:^(\\d{3}) (.+)\r$)");
-
-// protocol-ftp-client-0.1.1: "\"(.+)\""
-consistent!(protocol_ftp_client_1, "\"(.+)\"");
-
-// protocol-ftp-client-0.1.1: "(\\w+) [Tt]ype: (\\w+)"
-consistent!(protocol_ftp_client_2, "(\\w+) [Tt]ype: (\\w+)");
-
-// protocol-ftp-client-0.1.1: "(?m:^(\\d{3})-.+\r$)"
-consistent!(protocol_ftp_client_3, "(?m:^(\\d{3})-.+\r$)");
-
-// protocol-ftp-client-0.1.1: "Entering Passive Mode \\((\\d+),(\\d+),(\\d+),(\\d+),(\\d+),(\\d+)\\)"
-consistent!(
- protocol_ftp_client_4,
- "Entering Passive Mode \\((\\d+),(\\d+),(\\d+),(\\d+),(\\d+),(\\d+)\\)"
-);
-
-// protocol-ftp-client-0.1.1: "(?m:^(.+)\r$)"
-consistent!(protocol_ftp_client_5, "(?m:^(.+)\r$)");
-
-// protocol-ftp-client-0.1.1: "^([d-])(?:[rwx-]{3}){3} +\\d+ +\\w+ +\\w+ +(\\d+) +(.+) +(.+)$"
-consistent!(
- protocol_ftp_client_6,
- "^([d-])(?:[rwx-]{3}){3} +\\d+ +\\w+ +\\w+ +(\\d+) +(.+) +(.+)$"
-);
-
-// article-date-extractor-0.1.1: r"([\./\-_]{0,1}(19|20)\d{2})[\./\-_]{0,1}(([0-3]{0,1}[0-9][\./\-_])|(\w{3,5}[\./\-_]))([0-3]{0,1}[0-9][\./\-]{0,1})"
-consistent!(article_date_extractor_0, r"([\./\-_]{0,1}(19|20)\d{2})[\./\-_]{0,1}(([0-3]{0,1}[0-9][\./\-_])|(\w{3,5}[\./\-_]))([0-3]{0,1}[0-9][\./\-]{0,1})");
-
-// article-date-extractor-0.1.1: r"(?i)publishdate|pubdate|timestamp|article_date|articledate|date"
-consistent!(
- article_date_extractor_1,
- r"(?i)publishdate|pubdate|timestamp|article_date|articledate|date"
-);
-
-// arthas_plugin-0.1.1: r"type\((.*)\)"
-consistent!(arthas_plugin_0, r"type\((.*)\)");
-
-// arthas_plugin-0.1.1: r"Vec<(.*)>"
-consistent!(arthas_plugin_1, r"Vec<(.*)>");
-
-// arthas_plugin-0.1.1: r"Option<(.*)>"
-consistent!(arthas_plugin_2, r"Option<(.*)>");
-
-// arthas_plugin-0.1.1: r"HashMap<[a-z0-9A-Z]+, *(.*)>"
-consistent!(arthas_plugin_3, r"HashMap<[a-z0-9A-Z]+, *(.*)>");
-
-// arthas_derive-0.1.0: "Vec *< *(.*) *>"
-consistent!(arthas_derive_0, "Vec *< *(.*) *>");
-
-// arthas_derive-0.1.0: r"Option *< *(.*) *>"
-consistent!(arthas_derive_1, r"Option *< *(.*) *>");
-
-// arthas_derive-0.1.0: r"HashMap *< *[a-z0-9A-Z]+ *, *(.*) *>"
-consistent!(arthas_derive_2, r"HashMap *< *[a-z0-9A-Z]+ *, *(.*) *>");
-
-// arpabet-0.2.0: r"^([\w\-\(\)\.']+)\s+([^\s].*)\s*$"
-consistent!(arpabet_0, r"^([\w\-\(\)\.']+)\s+([^\s].*)\s*$");
-
-// arpabet-0.2.0: r"^;;;\s+"
-consistent!(arpabet_1, r"^;;;\s+");
-
-// glossy_codegen-0.2.0: r"/\*.*?\*/|//.*"
-consistent!(glossy_codegen_0, r"/\*.*?\*/|//.*");
-
-// glossy_codegen-0.2.0: "^\\s*#\\s*include\\s+<([:print:]+)>\\s*$"
-consistent!(glossy_codegen_1, "^\\s*#\\s*include\\s+<([:print:]+)>\\s*$");
-
-// glossy_codegen-0.2.0: "^\\s*#\\s*include\\s+\"([:print:]+)\"\\s*$"
-consistent!(glossy_codegen_2, "^\\s*#\\s*include\\s+\"([:print:]+)\"\\s*$");
-
-// glossy_codegen-0.2.0: r"^\s*#\s*version\s+(\d+)"
-consistent!(glossy_codegen_3, r"^\s*#\s*version\s+(\d+)");
-
-// glossy_codegen-0.2.0: r"^\s*$"
-consistent!(glossy_codegen_4, r"^\s*$");
-
-// gluster-1.0.1: r"(?P<addr>via \S+)"
-consistent!(gluster_0, r"(?P<addr>via \S+)");
-
-// gluster-1.0.1: r"(?P<src>src \S+)"
-consistent!(gluster_1, r"(?P<src>src \S+)");
-
-// gl_helpers-0.1.7: r"(.*)\[\d+\]"
-consistent!(gl_helpers_0, r"(.*)\[\d+\]");
-
-// gl_helpers-0.1.7: r"(\d+).(\d+)"
-consistent!(gl_helpers_1, r"(\d+).(\d+)");
-
-// glr-parser-0.0.1: r"(?P<c>[\\\.\+\*\?\(\)\|\[\]\{\}\^\$])"
-consistent!(glr_parser_0, r"(?P<c>[\\\.\+\*\?\(\)\|\[\]\{\}\^\$])");
-
-// glr-parser-0.0.1: r"^\w+$"
-consistent!(glr_parser_1, r"^\w+$");
-
-// glr-parser-0.0.1: "'[^']+'"
-consistent!(glr_parser_2, "'[^']+'");
-
-// hoodlum-0.5.0: r"(?m)//.*"
-consistent!(hoodlum_0, r"(?m)//.*");
-
-// form-checker-0.2.2: r"^1\d{10}$"
-consistent!(form_checker_0, r"^1\d{10}$");
-
-// form-checker-0.2.2: r"(?i)^[\w.%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$"
-consistent!(form_checker_1, r"(?i)^[\w.%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$");
-
-// wikibase-0.2.0: r"(?P<user_agent>[a-zA-Z0-9-_]+/[0-9\.]+)"
-consistent!(wikibase_0, r"(?P<user_agent>[a-zA-Z0-9-_]+/[0-9\.]+)");
-
-// wifiscanner-0.3.6: r"Cell [0-9]{2,} - Address:"
-consistent!(wifiscanner_0, r"Cell [0-9]{2,} - Address:");
-
-// wifiscanner-0.3.6: r"([0-9a-zA-Z]{1}[0-9a-zA-Z]{1}[:]{1}){5}[0-9a-zA-Z]{1}[0-9a-zA-Z]{1}"
-consistent!(
- wifiscanner_1,
- r"([0-9a-zA-Z]{1}[0-9a-zA-Z]{1}[:]{1}){5}[0-9a-zA-Z]{1}[0-9a-zA-Z]{1}"
-);
-
-// wifiscanner-0.3.6: r"Signal level=(\d+)/100"
-consistent!(wifiscanner_2, r"Signal level=(\d+)/100");
-
-// bbcode-1.0.2: r"(?s)\[b\](.*?)\[/b\]"
-consistent!(bbcode_0, r"(?s)\[b\](.*?)\[/b\]");
-
-// bbcode-1.0.2: r"(?s)\[i\](.*?)\[/i\]"
-consistent!(bbcode_1, r"(?s)\[i\](.*?)\[/i\]");
-
-// bbcode-1.0.2: r"(?s)\[u\](.*?)\[/u\]"
-consistent!(bbcode_2, r"(?s)\[u\](.*?)\[/u\]");
-
-// bbcode-1.0.2: r"(?s)\[s\](.*?)\[/s\]"
-consistent!(bbcode_3, r"(?s)\[s\](.*?)\[/s\]");
-
-// bbcode-1.0.2: r"(?s)\[size=(\d+)](.*?)\[/size\]"
-consistent!(bbcode_4, r"(?s)\[size=(\d+)](.*?)\[/size\]");
-
-// bbcode-1.0.2: r"(?s)\[color=(.+)](.*?)\[/color\]"
-consistent!(bbcode_5, r"(?s)\[color=(.+)](.*?)\[/color\]");
-
-// bbcode-1.0.2: r"(?s)\[center\](.*?)\[/center\]"
-consistent!(bbcode_6, r"(?s)\[center\](.*?)\[/center\]");
-
-// bbcode-1.0.2: r"(?s)\[left\](.*?)\[/left\]"
-consistent!(bbcode_7, r"(?s)\[left\](.*?)\[/left\]");
-
-// bbcode-1.0.2: r"(?s)\[right\](.*?)\[/right\]"
-consistent!(bbcode_8, r"(?s)\[right\](.*?)\[/right\]");
-
-// bbcode-1.0.2: r"(?s)\[table\](.*?)\[/table\]"
-consistent!(bbcode_9, r"(?s)\[table\](.*?)\[/table\]");
-
-// bbcode-1.0.2: r"(?s)\[td\](.*?)\[/td\]"
-consistent!(bbcode_10, r"(?s)\[td\](.*?)\[/td\]");
-
-// bbcode-1.0.2: r"(?s)\[tr\](.*?)\[/tr\]"
-consistent!(bbcode_11, r"(?s)\[tr\](.*?)\[/tr\]");
-
-// bbcode-1.0.2: r"(?s)\[th\](.*?)\[/th\]"
-consistent!(bbcode_12, r"(?s)\[th\](.*?)\[/th\]");
-
-// bbcode-1.0.2: r"(?s)\[url\](.*?)\[/url\]"
-consistent!(bbcode_13, r"(?s)\[url\](.*?)\[/url\]");
-
-// bbcode-1.0.2: r"(?s)\[url=(.+)\](.*?)\[/url\]"
-consistent!(bbcode_14, r"(?s)\[url=(.+)\](.*?)\[/url\]");
-
-// bbcode-1.0.2: r"(?s)\[quote\](.*?)\[/quote\]"
-consistent!(bbcode_15, r"(?s)\[quote\](.*?)\[/quote\]");
-
-// bbcode-1.0.2: r"(?s)\[quote=(.+)\](.*?)\[/quote\]"
-consistent!(bbcode_16, r"(?s)\[quote=(.+)\](.*?)\[/quote\]");
-
-// bbcode-1.0.2: r"(?s)\[img=(\d+)x(\d+)(\b.*)?\](.*?)\[/img\]"
-consistent!(bbcode_17, r"(?s)\[img=(\d+)x(\d+)(\b.*)?\](.*?)\[/img\]");
-
-// bbcode-1.0.2: r"(?s)\[img=(.+)(\b.*)?\](.*?)\[/img\]"
-consistent!(bbcode_18, r"(?s)\[img=(.+)(\b.*)?\](.*?)\[/img\]");
-
-// bbcode-1.0.2: r"(?s)\[img(\b.*)?\](.*?)\[/img\]"
-consistent!(bbcode_19, r"(?s)\[img(\b.*)?\](.*?)\[/img\]");
-
-// bbcode-1.0.2: r"(?s)\[ol\](.*?)\[/ol\]"
-consistent!(bbcode_20, r"(?s)\[ol\](.*?)\[/ol\]");
-
-// bbcode-1.0.2: r"(?s)\[ul\](.*?)\[/ul\]"
-consistent!(bbcode_21, r"(?s)\[ul\](.*?)\[/ul\]");
-
-// bbcode-1.0.2: r"(?s)\[list\](.*?)\[/list\]"
-consistent!(bbcode_22, r"(?s)\[list\](.*?)\[/list\]");
-
-// bbcode-1.0.2: r"(?s)\[youtube\](.*?)\[/youtube\]"
-consistent!(bbcode_23, r"(?s)\[youtube\](.*?)\[/youtube\]");
-
-// bbcode-1.0.2: r"(?s)\[youtube=(\d+)x(\d+)\](.*?)\[/youtube\]"
-consistent!(bbcode_24, r"(?s)\[youtube=(\d+)x(\d+)\](.*?)\[/youtube\]");
-
-// bbcode-1.0.2: r"(?s)\[li\](.*?)\[/li\]"
-consistent!(bbcode_25, r"(?s)\[li\](.*?)\[/li\]");
-
-// block-utils-0.5.0: r"loop\d+"
-consistent!(block_utils_0, r"loop\d+");
-
-// block-utils-0.5.0: r"ram\d+"
-consistent!(block_utils_1, r"ram\d+");
-
-// block-utils-0.5.0: r"md\d+"
-consistent!(block_utils_2, r"md\d+");
-
-// kvvliveapi-0.1.0: r"^([1-9]) min$"
-consistent!(kvvliveapi_0, r"^([1-9]) min$");
-
-// rfc822_sanitizer-0.3.3: r"(\d{2}):(\d{2}):(\d{2})"
-consistent!(rfc822_sanitizer_0, r"(\d{2}):(\d{2}):(\d{2})");
-
-// rfc822_sanitizer-0.3.3: r"(\d{1,2}):(\d{1,2}):(\d{1,2})"
-consistent!(rfc822_sanitizer_1, r"(\d{1,2}):(\d{1,2}):(\d{1,2})");
-
-// faker-0.0.4: r"[2-9]"
-consistent!(faker_0, r"[2-9]");
-
-// faker-0.0.4: r"[1-9]"
-consistent!(faker_1, r"[1-9]");
-
-// faker-0.0.4: r"[0-9]"
-consistent!(faker_2, r"[0-9]");
-
-// faker-0.0.4: r"\d{10}"
-consistent!(faker_3, r"\d{10}");
-
-// faker-0.0.4: r"\d{1}"
-consistent!(faker_4, r"\d{1}");
-
-// faker-0.0.4: r"^\w+"
-consistent!(faker_5, r"^\w+");
-
-// faker-0.0.4: r"^\w+"
-consistent!(faker_6, r"^\w+");
-
-// faker-0.0.4: r"^(\w+\.? ?){2,3}$"
-consistent!(faker_7, r"^(\w+\.? ?){2,3}$");
-
-// faker-0.0.4: r"^[A-Z][a-z]+\.?$"
-consistent!(faker_8, r"^[A-Z][a-z]+\.?$");
-
-// faker-0.0.4: r"^[A-Z][A-Za-z]*\.?$"
-consistent!(faker_9, r"^[A-Z][A-Za-z]*\.?$");
-
-// faker-0.0.4: r"http://lorempixel.com/100/100/\w+"
-consistent!(faker_10, r"http://lorempixel.com/100/100/\w+");
-
-// faker-0.0.4: r"http://lorempixel.com/100/100/cats"
-consistent!(faker_11, r"http://lorempixel.com/100/100/cats");
-
-// fancy-regex-0.1.0: "(?i:ß)"
-consistent!(fancy_regex_0, "(?i:ß)");
-
-// fancy-regex-0.1.0: "(?i:\\x{0587})"
-consistent!(fancy_regex_1, "(?i:\\x{0587})");
-
-// fancy-regex-0.1.0: "^\\\\([!-/:-@\\[-`\\{-~aftnrv]|[0-7]{1,3}|x[0-9a-fA-F]{2}|x\\{[0-9a-fA-F]{1,6}\\})"
-consistent!(fancy_regex_2, "^\\\\([!-/:-@\\[-`\\{-~aftnrv]|[0-7]{1,3}|x[0-9a-fA-F]{2}|x\\{[0-9a-fA-F]{1,6}\\})");
-
-// fancy-prompt-0.1.5: r"/([^/])[^/]+/"
-consistent!(fancy_prompt_0, r"/([^/])[^/]+/");
-
-// fancy-prompt-0.1.5: r"^([^:]+):.*?(?::([^:]+))?$"
-consistent!(fancy_prompt_1, r"^([^:]+):.*?(?::([^:]+))?$");
-
-// fanta-0.2.0: r"^(/?__\w+__)/(.*)"
-consistent!(fanta_0, r"^(/?__\w+__)/(.*)");
-
-// fanta-cli-0.1.1: r"(.)([A-Z])"
-consistent!(fanta_cli_0, r"(.)([A-Z])");
-
-// fanta-cli-0.1.1: "\\{:[^\\s]+\\}"
-consistent!(fanta_cli_1, "\\{:[^\\s]+\\}");
-
-// amethyst_tools-0.7.1: "(?P<last>[^\r])\n"
-consistent!(amethyst_tools_0, "(?P<last>[^\r])\n");
-
-// amigo-0.3.1: r"^-?\d+(\.\d)?"
-consistent!(amigo_0, r"^-?\d+(\.\d)?");
-
-// amigo-0.3.1: r"^[a-zA-Z_]+[\w-]*[!?_]?"
-consistent!(amigo_1, r"^[a-zA-Z_]+[\w-]*[!?_]?");
-
-// amigo-0.3.1: r"^\("
-consistent!(amigo_2, r"^\(");
-
-// amigo-0.3.1: r"^\)"
-consistent!(amigo_3, r"^\)");
-
-// amigo-0.3.1: r"^\s+"
-consistent!(amigo_4, r"^\s+");
-
-// ethcore-logger-1.12.0: "\x1b\\[[^m]+m"
-consistent!(ethcore_logger_0, "\x1b\\[[^m]+m");
-
-// dash2html-1.0.1: r"__.*?__"
-consistent!(dash2html_0, r"__.*?__");
-
-// dash2html-1.0.1: r"(?i)@(?:time|clipboard|cursor|date)"
-consistent!(dash2html_1, r"(?i)@(?:time|clipboard|cursor|date)");
-
-// os_type-2.0.0: r"^Microsoft Windows \[Version\s(\d+\.\d+\.\d+)\]$"
-consistent!(os_type_0, r"^Microsoft Windows \[Version\s(\d+\.\d+\.\d+)\]$");
-
-// os_type-2.0.0: r"ProductName:\s([\w\s]+)\n"
-consistent!(os_type_1, r"ProductName:\s([\w\s]+)\n");
-
-// os_type-2.0.0: r"ProductVersion:\s(\w+\.\w+\.\w+)"
-consistent!(os_type_2, r"ProductVersion:\s(\w+\.\w+\.\w+)");
-
-// os_type-2.0.0: r"BuildVersion:\s(\w+)"
-consistent!(os_type_3, r"BuildVersion:\s(\w+)");
-
-// os_type-2.0.0: r"(\w+) Linux release"
-consistent!(os_type_4, r"(\w+) Linux release");
-
-// os_type-2.0.0: r"release\s([\w\.]+)"
-consistent!(os_type_5, r"release\s([\w\.]+)");
-
-// os_type-2.0.0: r"Distributor ID:\s(\w+)"
-consistent!(os_type_6, r"Distributor ID:\s(\w+)");
-
-// os_type-2.0.0: r"Release:\s([\w\.]+)"
-consistent!(os_type_7, r"Release:\s([\w\.]+)");
-
-// bindgen-0.37.0: r"typename type\-parameter\-\d+\-\d+::.+"
-consistent!(bindgen_0, r"typename type\-parameter\-\d+\-\d+::.+");
-
-// imap-0.8.1: "^+(.*)\r\n"
-consistent!(imap_0, "^+(.*)\r\n");
-
-// image-base64-0.1.0: r"^ffd8ffe0"
-consistent!(image_base64_0, r"^ffd8ffe0");
-
-// image-base64-0.1.0: r"^89504e47"
-consistent!(image_base64_1, r"^89504e47");
-
-// image-base64-0.1.0: r"^47494638"
-consistent!(image_base64_2, r"^47494638");
-
-// json-pointer-0.3.2: "^(/([^/~]|~[01])*)*$"
-consistent!(json_pointer_0, "^(/([^/~]|~[01])*)*$");
-
-// json-pointer-0.3.2: "^#(/([^/~%]|~[01]|%[0-9a-fA-F]{2})*)*$"
-consistent!(json_pointer_1, "^#(/([^/~%]|~[01]|%[0-9a-fA-F]{2})*)*$");
-
-// mysql_common-0.7.0: r"^5.5.5-(\d{1,2})\.(\d{1,2})\.(\d{1,3})-MariaDB"
-consistent!(mysql_common_0, r"^5.5.5-(\d{1,2})\.(\d{1,2})\.(\d{1,3})-MariaDB");
-
-// mysql_common-0.7.0: r"^(\d{1,2})\.(\d{1,2})\.(\d{1,3})(.*)"
-consistent!(mysql_common_1, r"^(\d{1,2})\.(\d{1,2})\.(\d{1,3})(.*)");
-
-// government_id-0.1.0: r"^[0-9]{4}[0-9A-Z]{2}[0-9]{3}$"
-consistent!(government_id_0, r"^[0-9]{4}[0-9A-Z]{2}[0-9]{3}$");
-
-// ohmers-0.1.1: r"UniqueIndexViolation: (\w+)"
-consistent!(ohmers_0, r"UniqueIndexViolation: (\w+)");
-
-// eliza-1.0.0: r"(.*) you are (.*)"
-consistent!(eliza_0, r"(.*) you are (.*)");
-
-// eliza-1.0.0: r"(.*) you are (.*)"
-consistent!(eliza_1, r"(.*) you are (.*)");
-
-// eliza-1.0.0: r"(.*) you are (.*)"
-consistent!(eliza_2, r"(.*) you are (.*)");
-
-// chema-0.0.5: "^\\s*\\*"
-consistent!(chema_0, "^\\s*\\*");
-
-// chema-0.0.5: "^\\s*@(\\w+)\\s+(.*)"
-consistent!(chema_1, "^\\s*@(\\w+)\\s+(.*)");
-
-// chord3-0.3.0: r"^\s*#"
-consistent!(chord3_0, r"^\s*#");
-
-// chord3-0.3.0: r"\{(?P<cmd>\w+)(?::?\s*(?P<arg>.*))?\}"
-consistent!(chord3_1, r"\{(?P<cmd>\w+)(?::?\s*(?P<arg>.*))?\}");
-
-// chord3-0.3.0: r"\{(eot|end_of_tab):?\s*"
-consistent!(chord3_2, r"\{(eot|end_of_tab):?\s*");
-
-// chord3-0.3.0: r"([^\[]*)(?:\[([^\]]*)\])?"
-consistent!(chord3_3, r"([^\[]*)(?:\[([^\]]*)\])?");
-
-// checkmail-0.1.1: "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$"
-consistent!(checkmail_0, "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$");
-
-// cntk-0.2.1: r"\b\w\w+\b"
-consistent!(cntk_0, r"\b\w\w+\b");
-
-// cntk-0.2.1: r"\b\w\w+\b"
-consistent!(cntk_1, r"\b\w\w+\b");
-
-// cniguru-0.1.0: r"\(id: (\d+)\)"
-consistent!(cniguru_0, r"\(id: (\d+)\)");
-
-// upm_lib-0.3.0: r"^(\d+)\.(\d+)\.(\d+)(?:-([\dA-Za-z-]+(?:\.[\dA-Za-z-]+)*))?(?:\+([\dA-Za-z-]+(?:\.[\dA-Za-z-]+)*))?$"
-consistent!(upm_lib_0, r"^(\d+)\.(\d+)\.(\d+)(?:-([\dA-Za-z-]+(?:\.[\dA-Za-z-]+)*))?(?:\+([\dA-Za-z-]+(?:\.[\dA-Za-z-]+)*))?$");
-
-// avro-0.2.1: r"^\s*(\*+(\s+))?"
-consistent!(avro_0, r"^\s*(\*+(\s+))?");
-
-// avro-0.2.1: r"^\s*(\*+)?"
-consistent!(avro_1, r"^\s*(\*+)?");
-
-// nomi-0.0.2: "[0-9]+"
-consistent!(nomi_0, "[0-9]+");
-
-// nodes-0.1.0: "([0-9]+)@(?:nodes|n)?:([^@]+)?"
-consistent!(nodes_0, "([0-9]+)@(?:nodes|n)?:([^@]+)?");
-
-// not-stakkr-1.0.0: r"(?i)in (\d+) (second|minute|hour|day|week)s?"
-consistent!(not_stakkr_0, r"(?i)in (\d+) (second|minute|hour|day|week)s?");
-
-// notetxt-0.0.1: "^([A-Za-z0-9 -_:]+)\n-+\n"
-consistent!(notetxt_0, "^([A-Za-z0-9 -_:]+)\n-+\n");
-
-// nail-0.1.0-pre.0: r"^-?[0-9]+(\.[0-9]+)?([eE]-?[0-9]+)?$"
-consistent!(nail_0, r"^-?[0-9]+(\.[0-9]+)?([eE]-?[0-9]+)?$");
-
-// nail-0.1.0-pre.0: r"^-?[0-9]+$"
-consistent!(nail_1, r"^-?[0-9]+$");
-
-// askalono-0.2.0: r"[^\w\s\pP]+"
-consistent!(askalono_0, r"[^\w\s\pP]+");
-
-// askalono-0.2.0: r"(?x)[ \t\p{Zs} \\ / \| \x2044 ]+"
-consistent!(askalono_1, r"(?x)[ \t\p{Zs} \\ / \| \x2044 ]+");
-
-// askalono-0.2.0: r"\p{Pd}+"
-consistent!(askalono_2, r"\p{Pd}+");
-
-// askalono-0.2.0: r"\p{Ps}+"
-consistent!(askalono_3, r"\p{Ps}+");
-
-// askalono-0.2.0: r"\p{Pe}+"
-consistent!(askalono_4, r"\p{Pe}+");
-
-// askalono-0.2.0: r"\p{Pc}+"
-consistent!(askalono_5, r"\p{Pc}+");
-
-// askalono-0.2.0: r"[©Ⓒⓒ]"
-consistent!(askalono_6, r"[©Ⓒⓒ]");
-
-// askalono-0.2.0: r"[\r\n\v\f]"
-consistent!(askalono_7, r"[\r\n\v\f]");
-
-// askalono-0.2.0: r"\n{3,}"
-consistent!(askalono_8, r"\n{3,}");
-
-// askalono-0.2.0: r"[^\w\s]+"
-consistent!(askalono_9, r"[^\w\s]+");
-
-// askalono-0.2.0: r"\s+"
-consistent!(askalono_10, r"\s+");
-
-// assembunny_plus-0.0.3: r"[^0-9a-zA-Z_]"
-consistent!(assembunny_plus_0, r"[^0-9a-zA-Z_]");
-
-// assembunny_plus-0.0.3: r"[0-9]"
-consistent!(assembunny_plus_1, r"[0-9]");
-
-// salt-compressor-0.4.0: r"(?m)^Minion (\S*) did not respond\. No job will be sent\.$"
-consistent!(
- salt_compressor_0,
- r"(?m)^Minion (\S*) did not respond\. No job will be sent\.$"
-);
-
-// sabisabi-0.4.1: r"</?[^>]+?>"
-consistent!(sabisabi_0, r"</?[^>]+?>");
-
-// sabisabi-0.4.1: r"\([^)]*\)"
-consistent!(sabisabi_1, r"\([^)]*\)");
-
-// sassers-0.13.5-h28: "@import \"([^\"]*)\";"
-consistent!(sassers_0, "@import \"([^\"]*)\";");
-
-// shadowsocks-0.6.2: r"[A-Za-z\d-]{1,63}$"
-consistent!(shadowsocks_0, r"[A-Za-z\d-]{1,63}$");
-
-// shkeleton-0.1.5: "[abc]+"
-consistent!(shkeleton_0, "[abc]+");
-
-// shellwords-0.1.0: r"([^A-Za-z0-9_\-.,:/@\n])"
-consistent!(shellwords_0, r"([^A-Za-z0-9_\-.,:/@\n])");
-
-// shellwords-0.1.0: r"\n"
-consistent!(shellwords_1, r"\n");
-
-// shush-0.1.5: "(?P<num>[0-9]+)(?P<units>[dhms])"
-consistent!(shush_0, "(?P<num>[0-9]+)(?P<units>[dhms])");
-
-// woothee-0.8.0: r"(?:Chrome|CrMo|CriOS)/([.0-9]+)"
-consistent!(woothee_0, r"(?:Chrome|CrMo|CriOS)/([.0-9]+)");
-
-// woothee-0.8.0: r"Vivaldi/([.0-9]+)"
-consistent!(woothee_1, r"Vivaldi/([.0-9]+)");
-
-// woothee-0.8.0: r"Firefox/([.0-9]+)"
-consistent!(woothee_2, r"Firefox/([.0-9]+)");
-
-// woothee-0.8.0: r"^Mozilla/[.0-9]+ \((?:Mobile|Tablet);(?:.*;)? rv:([.0-9]+)\) Gecko/[.0-9]+ Firefox/[.0-9]+$"
-consistent!(woothee_3, r"^Mozilla/[.0-9]+ \((?:Mobile|Tablet);(?:.*;)? rv:([.0-9]+)\) Gecko/[.0-9]+ Firefox/[.0-9]+$");
-
-// woothee-0.8.0: r"FxiOS/([.0-9]+)"
-consistent!(woothee_4, r"FxiOS/([.0-9]+)");
-
-// woothee-0.8.0: r"\(([^;)]+);FOMA;"
-consistent!(woothee_5, r"\(([^;)]+);FOMA;");
-
-// woothee-0.8.0: r"jig browser[^;]+; ([^);]+)"
-consistent!(woothee_6, r"jig browser[^;]+; ([^);]+)");
-
-// woothee-0.8.0: r"(?i)rss(?:reader|bar|[-_ /;()]|[ +]*/)"
-consistent!(woothee_7, r"(?i)rss(?:reader|bar|[-_ /;()]|[ +]*/)");
-
-// woothee-0.8.0: r"(?i)(?:bot|crawler|spider)(?:[-_ ./;@()]|$)"
-consistent!(woothee_8, r"(?i)(?:bot|crawler|spider)(?:[-_ ./;@()]|$)");
-
-// woothee-0.8.0: r"(?i)(?:feed|web) ?parser"
-consistent!(woothee_9, r"(?i)(?:feed|web) ?parser");
-
-// woothee-0.8.0: r"(?i)watch ?dog"
-consistent!(woothee_10, r"(?i)watch ?dog");
-
-// woothee-0.8.0: r"Edge/([.0-9]+)"
-consistent!(woothee_11, r"Edge/([.0-9]+)");
-
-// woothee-0.8.0: r"MSIE ([.0-9]+);"
-consistent!(woothee_12, r"MSIE ([.0-9]+);");
-
-// woothee-0.8.0: r"Version/([.0-9]+)"
-consistent!(woothee_13, r"Version/([.0-9]+)");
-
-// woothee-0.8.0: r"Opera[/ ]([.0-9]+)"
-consistent!(woothee_14, r"Opera[/ ]([.0-9]+)");
-
-// woothee-0.8.0: r"OPR/([.0-9]+)"
-consistent!(woothee_15, r"OPR/([.0-9]+)");
-
-// woothee-0.8.0: r"Version/([.0-9]+)"
-consistent!(woothee_16, r"Version/([.0-9]+)");
-
-// woothee-0.8.0: r"(?:SoftBank|Vodafone|J-PHONE)/[.0-9]+/([^ /;()]+)"
-consistent!(woothee_17, r"(?:SoftBank|Vodafone|J-PHONE)/[.0-9]+/([^ /;()]+)");
-
-// woothee-0.8.0: r"Trident/([.0-9]+);"
-consistent!(woothee_18, r"Trident/([.0-9]+);");
-
-// woothee-0.8.0: r" rv:([.0-9]+)"
-consistent!(woothee_19, r" rv:([.0-9]+)");
-
-// woothee-0.8.0: r"IEMobile/([.0-9]+);"
-consistent!(woothee_20, r"IEMobile/([.0-9]+);");
-
-// woothee-0.8.0: r"(?:WILLCOM|DDIPOCKET);[^/]+/([^ /;()]+)"
-consistent!(woothee_21, r"(?:WILLCOM|DDIPOCKET);[^/]+/([^ /;()]+)");
-
-// woothee-0.8.0: r"Windows ([ .a-zA-Z0-9]+)[;\\)]"
-consistent!(woothee_22, r"Windows ([ .a-zA-Z0-9]+)[;\\)]");
-
-// woothee-0.8.0: r"^Phone(?: OS)? ([.0-9]+)"
-consistent!(woothee_23, r"^Phone(?: OS)? ([.0-9]+)");
-
-// woothee-0.8.0: r"iP(hone;|ad;|od) .*like Mac OS X"
-consistent!(woothee_24, r"iP(hone;|ad;|od) .*like Mac OS X");
-
-// woothee-0.8.0: r"Version/([.0-9]+)"
-consistent!(woothee_25, r"Version/([.0-9]+)");
-
-// woothee-0.8.0: r"rv:(\d+\.\d+\.\d+)"
-consistent!(woothee_26, r"rv:(\d+\.\d+\.\d+)");
-
-// woothee-0.8.0: r"FreeBSD ([^;\)]+);"
-consistent!(woothee_27, r"FreeBSD ([^;\)]+);");
-
-// woothee-0.8.0: r"CrOS ([^\)]+)\)"
-consistent!(woothee_28, r"CrOS ([^\)]+)\)");
-
-// woothee-0.8.0: r"Android[- ](\d+\.\d+(?:\.\d+)?)"
-consistent!(woothee_29, r"Android[- ](\d+\.\d+(?:\.\d+)?)");
-
-// woothee-0.8.0: r"PSP \(PlayStation Portable\); ([.0-9]+)\)"
-consistent!(woothee_30, r"PSP \(PlayStation Portable\); ([.0-9]+)\)");
-
-// woothee-0.8.0: r"PLAYSTATION 3;? ([.0-9]+)\)"
-consistent!(woothee_31, r"PLAYSTATION 3;? ([.0-9]+)\)");
-
-// woothee-0.8.0: r"PlayStation Vita ([.0-9]+)\)"
-consistent!(woothee_32, r"PlayStation Vita ([.0-9]+)\)");
-
-// woothee-0.8.0: r"PlayStation 4 ([.0-9]+)\)"
-consistent!(woothee_33, r"PlayStation 4 ([.0-9]+)\)");
-
-// woothee-0.8.0: r"BB10(?:.+)Version/([.0-9]+) "
-consistent!(woothee_34, r"BB10(?:.+)Version/([.0-9]+) ");
-
-// woothee-0.8.0: r"BlackBerry(?:\d+)/([.0-9]+) "
-consistent!(woothee_35, r"BlackBerry(?:\d+)/([.0-9]+) ");
-
-// woothee-0.8.0: r"; CPU(?: iPhone)? OS (\d+_\d+(?:_\d+)?) like Mac OS X"
-consistent!(
- woothee_36,
- r"; CPU(?: iPhone)? OS (\d+_\d+(?:_\d+)?) like Mac OS X"
-);
-
-// woothee-0.8.0: r"Mac OS X (10[._]\d+(?:[._]\d+)?)(?:\)|;)"
-consistent!(woothee_37, r"Mac OS X (10[._]\d+(?:[._]\d+)?)(?:\)|;)");
-
-// woothee-0.8.0: r"^(?:Apache-HttpClient/|Jakarta Commons-HttpClient/|Java/)"
-consistent!(
- woothee_38,
- r"^(?:Apache-HttpClient/|Jakarta Commons-HttpClient/|Java/)"
-);
-
-// woothee-0.8.0: r"[- ]HttpClient(/|$)"
-consistent!(woothee_39, r"[- ]HttpClient(/|$)");
-
-// woothee-0.8.0: r"^(?:PHP|WordPress|CakePHP|PukiWiki|PECL::HTTP)(?:/| |$)"
-consistent!(
- woothee_40,
- r"^(?:PHP|WordPress|CakePHP|PukiWiki|PECL::HTTP)(?:/| |$)"
-);
-
-// woothee-0.8.0: r"(?:PEAR HTTP_Request|HTTP_Request)(?: class|2)"
-consistent!(woothee_41, r"(?:PEAR HTTP_Request|HTTP_Request)(?: class|2)");
-
-// woothee-0.8.0: r"(?:Rome Client |UnwindFetchor/|ia_archiver |Summify |PostRank/)"
-consistent!(
- woothee_42,
- r"(?:Rome Client |UnwindFetchor/|ia_archiver |Summify |PostRank/)"
-);
-
-// woothee-0.8.0: r"Sleipnir/([.0-9]+)"
-consistent!(woothee_43, r"Sleipnir/([.0-9]+)");
-
-// word_replace-0.0.3: r"@@[a-z|A-Z|\d]+@@"
-consistent!(word_replace_0, r"@@[a-z|A-Z|\d]+@@");
-
-// wordcount-0.1.0: r"\w+"
-consistent!(wordcount_0, r"\w+");
-
-// just-0.3.12: "^([^=]+)=(.*)$"
-consistent!(just_0, "^([^=]+)=(.*)$");
-
-// emote-0.1.0: r":[a-zA-Z_]+?:"
-consistent!(emote_0, r":[a-zA-Z_]+?:");
-
-// emojicons-1.0.1: r":([a-zA-Z0-9_+-]+):"
-consistent!(emojicons_0, r":([a-zA-Z0-9_+-]+):");
-
-// git2_codecommit-0.1.2: r"git-codecommit\.([a-z0-9-]+)\.amazonaws\.com"
-consistent!(
- git2_codecommit_0,
- r"git-codecommit\.([a-z0-9-]+)\.amazonaws\.com"
-);
-
-// git-workarea-3.1.2: r"^submodule\.(?P<name>.*)\.(?P<key>[^=]*)=(?P<value>.*)$"
-consistent!(
- git_workarea_0,
- r"^submodule\.(?P<name>.*)\.(?P<key>[^=]*)=(?P<value>.*)$"
-);
-
-// git-shell-enforce-directory-1.0.0: r"^(?P<command>git-(?:receive|upload)-pack) '(?P<path>.+)'$"
-consistent!(
- git_shell_enforce_directory_0,
- r"^(?P<command>git-(?:receive|upload)-pack) '(?P<path>.+)'$"
-);
-
-// git-journal-1.6.3: r"[ \n]:(.*?):"
-consistent!(git_journal_0, r"[ \n]:(.*?):");
-
-// git-find-0.3.2: r"^git@(?P<host>[[:alnum:]\._-]+):(?P<path>[[:alnum:]\._\-/]+).git$"
-consistent!(
- git_find_0,
- r"^git@(?P<host>[[:alnum:]\._-]+):(?P<path>[[:alnum:]\._\-/]+).git$"
-);
-
-// gitlab-api-0.6.0: r"private_token=\w{20}"
-consistent!(gitlab_api_0, r"private_token=\w{20}");
-
-// td-client-0.7.0: "^(http://|https://)"
-consistent!(td_client_0, "^(http://|https://)");
-
-// karaconv-0.3.0: r"--(?P<type>[a-zA-Z]+)-- (?P<contents>.*)"
-consistent!(karaconv_0, r"--(?P<type>[a-zA-Z]+)-- (?P<contents>.*)");
-
-// katana-1.0.2: r"(?P<comp>et al\.)(?:\.)"
-consistent!(katana_0, r"(?P<comp>et al\.)(?:\.)");
-
-// katana-1.0.2: r"\.{3}"
-consistent!(katana_1, r"\.{3}");
-
-// katana-1.0.2: r"(?P<number>[0-9]+)\.(?P<decimal>[0-9]+)"
-consistent!(katana_2, r"(?P<number>[0-9]+)\.(?P<decimal>[0-9]+)");
-
-// katana-1.0.2: r"\s\.(?P<nums>[0-9]+)"
-consistent!(katana_3, r"\s\.(?P<nums>[0-9]+)");
-
-// katana-1.0.2: r"(?:[A-Za-z]\.){2,}"
-consistent!(katana_4, r"(?:[A-Za-z]\.){2,}");
-
-// katana-1.0.2: r"(?P<init>[A-Z])(?P<point>\.)"
-consistent!(katana_5, r"(?P<init>[A-Z])(?P<point>\.)");
-
-// katana-1.0.2: r"(?P<title>[A-Z][a-z]{1,3})(\.)"
-consistent!(katana_6, r"(?P<title>[A-Z][a-z]{1,3})(\.)");
-
-// katana-1.0.2: r"&==&(?P<p>[.!?])"
-consistent!(katana_7, r"&==&(?P<p>[.!?])");
-
-// katana-1.0.2: r"&\^&(?P<p>[.!?])"
-consistent!(katana_8, r"&\^&(?P<p>[.!?])");
-
-// katana-1.0.2: r"&\*\*&(?P<p>[.!?])"
-consistent!(katana_9, r"&\*\*&(?P<p>[.!?])");
-
-// katana-1.0.2: r"&=&(?P<p>[.!?])"
-consistent!(katana_10, r"&=&(?P<p>[.!?])");
-
-// katana-1.0.2: r"&##&(?P<p>[.!?])"
-consistent!(katana_11, r"&##&(?P<p>[.!?])");
-
-// katana-1.0.2: r"&\$&(?P<p>[.!?])"
-consistent!(katana_12, r"&\$&(?P<p>[.!?])");
-
-// kailua_syntax-1.1.0: r"@(?:_|\d+(?:/\d+(?:-\d+)?)?)"
-consistent!(kailua_syntax_0, r"@(?:_|\d+(?:/\d+(?:-\d+)?)?)");
-
-// kailua_syntax-1.1.0: r"<(\d+)>"
-consistent!(kailua_syntax_1, r"<(\d+)>");
-
-// ftp-3.0.1: r"\((\d+),(\d+),(\d+),(\d+),(\d+),(\d+)\)"
-consistent!(ftp_0, r"\((\d+),(\d+),(\d+),(\d+),(\d+),(\d+)\)");
-
-// ftp-3.0.1: r"\b(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\b"
-consistent!(ftp_1, r"\b(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\b");
-
-// ftp-3.0.1: r"\s+(\d+)\s*$"
-consistent!(ftp_2, r"\s+(\d+)\s*$");
-
-// vat-0.1.0: r"<countryCode>(.*?)</countryCode>"
-consistent!(vat_0, r"<countryCode>(.*?)</countryCode>");
-
-// vat-0.1.0: r"<vatNumber>(.*?)</vatNumber>"
-consistent!(vat_1, r"<vatNumber>(.*?)</vatNumber>");
-
-// vat-0.1.0: r"<name>(.*?)</name>"
-consistent!(vat_2, r"<name>(.*?)</name>");
-
-// vat-0.1.0: r"<address>(?s)(.*?)(?-s)</address>"
-consistent!(vat_3, r"<address>(?s)(.*?)(?-s)</address>");
-
-// vat-0.1.0: r"<valid>(true|false)</valid>"
-consistent!(vat_4, r"<valid>(true|false)</valid>");
-
-// vat-0.1.0: r"^ATU\d{8}$"
-consistent!(vat_5, r"^ATU\d{8}$");
-
-// vat-0.1.0: r"^BE0?\d{9, 10}$"
-consistent!(vat_6, r"^BE0?\d{9, 10}$");
-
-// vat-0.1.0: r"^BG\d{9,10}$"
-consistent!(vat_7, r"^BG\d{9,10}$");
-
-// vat-0.1.0: r"^HR\d{11}$"
-consistent!(vat_8, r"^HR\d{11}$");
-
-// vat-0.1.0: r"^CY\d{8}[A-Z]$"
-consistent!(vat_9, r"^CY\d{8}[A-Z]$");
-
-// vat-0.1.0: r"^CZ\d{8,10}$"
-consistent!(vat_10, r"^CZ\d{8,10}$");
-
-// vat-0.1.0: r"^DK\d{8}$"
-consistent!(vat_11, r"^DK\d{8}$");
-
-// vat-0.1.0: r"^EE\d{9}$"
-consistent!(vat_12, r"^EE\d{9}$");
-
-// vat-0.1.0: r"^FI\d{8}$"
-consistent!(vat_13, r"^FI\d{8}$");
-
-// vat-0.1.0: r"^FR[A-HJ-NP-Z0-9][A-HJ-NP-Z0-9]\d{9}$"
-consistent!(vat_14, r"^FR[A-HJ-NP-Z0-9][A-HJ-NP-Z0-9]\d{9}$");
-
-// vat-0.1.0: r"^DE\d{9}$"
-consistent!(vat_15, r"^DE\d{9}$");
-
-// vat-0.1.0: r"^EL\d{9}$"
-consistent!(vat_16, r"^EL\d{9}$");
-
-// vat-0.1.0: r"^HU\d{8}$"
-consistent!(vat_17, r"^HU\d{8}$");
-
-// vat-0.1.0: r"^IE\d[A-Z0-9\+\*]\d{5}[A-Z]{1,2}$"
-consistent!(vat_18, r"^IE\d[A-Z0-9\+\*]\d{5}[A-Z]{1,2}$");
-
-// vat-0.1.0: r"^IT\d{11}$"
-consistent!(vat_19, r"^IT\d{11}$");
-
-// vat-0.1.0: r"^LV\d{11}$"
-consistent!(vat_20, r"^LV\d{11}$");
-
-// vat-0.1.0: r"^LT(\d{9}|\d{12})$"
-consistent!(vat_21, r"^LT(\d{9}|\d{12})$");
-
-// vat-0.1.0: r"^LU\d{8}$"
-consistent!(vat_22, r"^LU\d{8}$");
-
-// vat-0.1.0: r"^MT\d{8}$"
-consistent!(vat_23, r"^MT\d{8}$");
-
-// vat-0.1.0: r"^NL\d{9}B\d{2}$"
-consistent!(vat_24, r"^NL\d{9}B\d{2}$");
-
-// vat-0.1.0: r"^PL\d{10}$"
-consistent!(vat_25, r"^PL\d{10}$");
-
-// vat-0.1.0: r"^PT\d{9}$"
-consistent!(vat_26, r"^PT\d{9}$");
-
-// vat-0.1.0: r"^RO\d{2,10}$"
-consistent!(vat_27, r"^RO\d{2,10}$");
-
-// vat-0.1.0: r"^SK\d{10}$"
-consistent!(vat_28, r"^SK\d{10}$");
-
-// vat-0.1.0: r"^SI\d{8}$"
-consistent!(vat_29, r"^SI\d{8}$");
-
-// vat-0.1.0: r"^ES[A-Z0-9]\d{7}[A-Z0-9]$"
-consistent!(vat_30, r"^ES[A-Z0-9]\d{7}[A-Z0-9]$");
-
-// vat-0.1.0: r"^SE\d{10}01$"
-consistent!(vat_31, r"^SE\d{10}01$");
-
-// vat-0.1.0: r"^(GB(GD|HA)\d{3}|GB\d{9}|GB\d{12})$"
-consistent!(vat_32, r"^(GB(GD|HA)\d{3}|GB\d{9}|GB\d{12})$");
-
-// eve-0.1.1: r"\{\{(.*)\}\}"
-consistent!(eve_0, r"\{\{(.*)\}\}");
-
-// egc-0.1.2: "^mio"
-consistent!(egc_0, "^mio");
-
-// pew-0.2.3: ""
-consistent!(pew_0, "");
-
-// pew-0.2.3: ""
-consistent!(pew_1, "");
-
-// mob-0.4.3: "y"
-consistent!(mob_0, "y");
-
-// lit-0.2.8: "@([a-z]+)"
-consistent!(lit_0, "@([a-z]+)");
-
-// lit-0.2.8: "([A-Z-]+):(.*)"
-consistent!(lit_1, "([A-Z-]+):(.*)");
-
-// lit-0.2.8: "^[a-zA-Z_][a-zA-Z0-9_]*$"
-consistent!(lit_2, "^[a-zA-Z_][a-zA-Z0-9_]*$");
-
-// avm-1.0.1: r"\d+\.\d+\.\d+"
-consistent!(avm_0, r"\d+\.\d+\.\d+");
-
-// avm-1.0.1: r"\d+\.\d+\.\d+"
-consistent!(avm_1, r"\d+\.\d+\.\d+");
-
-// orm-0.2.0: r"^Vec<(.+)>$"
-consistent!(orm_0, r"^Vec<(.+)>$");
-
-// sgf-0.1.5: r"\\(\r\n|\n\r|\n|\r)"
-consistent!(sgf_0, r"\\(\r\n|\n\r|\n|\r)");
-
-// sgf-0.1.5: r"\\(.)"
-consistent!(sgf_1, r"\\(.)");
-
-// sgf-0.1.5: r"\r\n|\n\r|\n|\r"
-consistent!(sgf_2, r"\r\n|\n\r|\n|\r");
-
-// sgf-0.1.5: r"([\]\\:])"
-consistent!(sgf_3, r"([\]\\:])");
-
-// dok-0.2.0: "^Bearer realm=\"(.+?)\",service=\"(.+?)\",scope=\"(.+?)\"$"
-consistent!(
- dok_0,
- "^Bearer realm=\"(.+?)\",service=\"(.+?)\",scope=\"(.+?)\"$"
-);
-
-// d20-0.1.0: r"([+-]?\s*\d+[dD]\d+|[+-]?\s*\d+)"
-consistent!(d20_0, r"([+-]?\s*\d+[dD]\d+|[+-]?\s*\d+)");
-
-// dvb-0.3.0: "E"
-consistent!(dvb_0, "E");
-
-// dvb-0.3.0: "^F"
-consistent!(dvb_1, "^F");
-
-// dvb-0.3.0: "^S"
-consistent!(dvb_2, "^S");
-
-// ger-0.2.0: r"Change-Id: (I[a-f0-9]{40})$"
-consistent!(ger_0, r"Change-Id: (I[a-f0-9]{40})$");
-
-// ger-0.2.0: r"(refs|ref|fix|fixes|close|closes)\s+([A-Z]{2,5}-[0-9]{1,5})$"
-consistent!(
- ger_1,
- r"(refs|ref|fix|fixes|close|closes)\s+([A-Z]{2,5}-[0-9]{1,5})$"
-);
-
-// n5-0.2.1: r"(\d+)(\.(\d+))?(\.(\d+))?(.*)"
-consistent!(n5_0, r"(\d+)(\.(\d+))?(\.(\d+))?(.*)");
-
-// po-0.1.4: r"[A-Za-z0-9]"
-consistent!(po_0, r"[A-Za-z0-9]");
-
-// carnix-0.8.5: "path is (‘|')?([^’'\n]*)(’|')?"
-consistent!(carnix_0, "path is (‘|')?([^’'\n]*)(’|')?");
-
-// carnix-0.8.5: r"^(\S*) (\d*)\.(\d*)\.(\d*)(-(\S*))?(.*)?"
-consistent!(carnix_1, r"^(\S*) (\d*)\.(\d*)\.(\d*)(-(\S*))?(.*)?");
-
-// carnix-0.8.5: r"(\d*)\.(\d*)\.(\d*)(-(\S*))?"
-consistent!(carnix_2, r"(\d*)\.(\d*)\.(\d*)(-(\S*))?");
-
-// carnix-0.8.5: r"(\S*)-(\d*)\.(\d*)\.(\d*)(-(\S*))?"
-consistent!(carnix_3, r"(\S*)-(\d*)\.(\d*)\.(\d*)(-(\S*))?");
-
-// caseless-0.2.1: r"^# CaseFolding-(\d+)\.(\d+)\.(\d+).txt$"
-consistent!(caseless_0, r"^# CaseFolding-(\d+)\.(\d+)\.(\d+).txt$");
-
-// caseless-0.2.1: r"^([0-9A-F]+); [CF]; ([0-9A-F ]+);"
-consistent!(caseless_1, r"^([0-9A-F]+); [CF]; ([0-9A-F ]+);");
-
-// cabot-0.2.0: "\r?\n\r?\n"
-consistent!(cabot_0, "\r?\n\r?\n");
-
-// cabot-0.2.0: "\r?\n"
-consistent!(cabot_1, "\r?\n");
-
-// card-validate-2.2.1: r"^600"
-consistent!(card_validate_0, r"^600");
-
-// card-validate-2.2.1: r"^5019"
-consistent!(card_validate_1, r"^5019");
-
-// card-validate-2.2.1: r"^4"
-consistent!(card_validate_2, r"^4");
-
-// card-validate-2.2.1: r"^(5[1-5]|2[2-7])"
-consistent!(card_validate_3, r"^(5[1-5]|2[2-7])");
-
-// card-validate-2.2.1: r"^3[47]"
-consistent!(card_validate_4, r"^3[47]");
-
-// card-validate-2.2.1: r"^3[0689]"
-consistent!(card_validate_5, r"^3[0689]");
-
-// card-validate-2.2.1: r"^6([045]|22)"
-consistent!(card_validate_6, r"^6([045]|22)");
-
-// card-validate-2.2.1: r"^(62|88)"
-consistent!(card_validate_7, r"^(62|88)");
-
-// card-validate-2.2.1: r"^35"
-consistent!(card_validate_8, r"^35");
-
-// card-validate-2.2.1: r"^[0-9]+$"
-consistent!(card_validate_9, r"^[0-9]+$");
-
-// cargo-testify-0.3.0: r"\d{1,} passed.*filtered out"
-consistent!(cargo_testify_0, r"\d{1,} passed.*filtered out");
-
-// cargo-testify-0.3.0: r"error(:|\[).*"
-consistent!(cargo_testify_1, r"error(:|\[).*");
-
-// cargo-wix-0.0.5: r"<(.*?)>"
-consistent!(cargo_wix_0, r"<(.*?)>");
-
-// cargo-wix-0.0.5: r"<(.*?)>"
-consistent!(cargo_wix_1, r"<(.*?)>");
-
-// cargo-wix-0.0.5: r"<(.*?)>"
-consistent!(cargo_wix_2, r"<(.*?)>");
-
-// cargo-wix-0.0.5: r"<(.*?)>"
-consistent!(cargo_wix_3, r"<(.*?)>");
-
-// cargo-incremental-0.1.23: r"(?m)^incremental: re-using (\d+) out of (\d+) modules$"
-consistent!(
- cargo_incremental_0,
- r"(?m)^incremental: re-using (\d+) out of (\d+) modules$"
-);
-
-// cargo-incremental-0.1.23: "(?m)(warning|error): (.*)\n --> ([^:]:\\d+:\\d+)$"
-consistent!(
- cargo_incremental_1,
- "(?m)(warning|error): (.*)\n --> ([^:]:\\d+:\\d+)$"
-);
-
-// cargo-incremental-0.1.23: r"(?m)^test (.*) \.\.\. (\w+)"
-consistent!(cargo_incremental_2, r"(?m)^test (.*) \.\.\. (\w+)");
-
-// cargo-incremental-0.1.23: r"(?m)(\d+) passed; (\d+) failed; (\d+) ignored; \d+ measured"
-consistent!(
- cargo_incremental_3,
- r"(?m)(\d+) passed; (\d+) failed; (\d+) ignored; \d+ measured"
-);
-
-// cargo-testjs-0.1.2: r"^[^-]+-[0-9a-f]+\.js$"
-consistent!(cargo_testjs_0, r"^[^-]+-[0-9a-f]+\.js$");
-
-// cargo-tarpaulin-0.6.2: r"\s*//"
-consistent!(cargo_tarpaulin_0, r"\s*//");
-
-// cargo-tarpaulin-0.6.2: r"/\*"
-consistent!(cargo_tarpaulin_1, r"/\*");
-
-// cargo-tarpaulin-0.6.2: r"\*/"
-consistent!(cargo_tarpaulin_2, r"\*/");
-
-// cargo-culture-kit-0.1.0: r"^fo"
-consistent!(cargo_culture_kit_0, r"^fo");
-
-// cargo-screeps-0.1.3: "\\s+"
-consistent!(cargo_screeps_0, "\\s+");
-
-// cargo-brew-0.1.4: r"`(\S+) v([0-9.]+)"
-consistent!(cargo_brew_0, r"`(\S+) v([0-9.]+)");
-
-// cargo-release-0.10.2: "^\\[.+\\]"
-consistent!(cargo_release_0, "^\\[.+\\]");
-
-// cargo-release-0.10.2: "^\\[\\[.+\\]\\]"
-consistent!(cargo_release_1, "^\\[\\[.+\\]\\]");
-
-// cargo-edit-0.3.0-beta.1: r"^https://github.com/([-_0-9a-zA-Z]+)/([-_0-9a-zA-Z]+)(/|.git)?$"
-consistent!(
- cargo_edit_0,
- r"^https://github.com/([-_0-9a-zA-Z]+)/([-_0-9a-zA-Z]+)(/|.git)?$"
-);
-
-// cargo-edit-0.3.0-beta.1: r"^https://gitlab.com/([-_0-9a-zA-Z]+)/([-_0-9a-zA-Z]+)(/|.git)?$"
-consistent!(
- cargo_edit_1,
- r"^https://gitlab.com/([-_0-9a-zA-Z]+)/([-_0-9a-zA-Z]+)(/|.git)?$"
-);
-
-// cargo-disassemble-0.1.1: ".*"
-consistent!(cargo_disassemble_0, ".*");
-
-// cargo-demangle-0.1.2: r"(?m)(?P<symbol>_ZN[0-9]+.*E)"
-consistent!(cargo_demangle_0, r"(?m)(?P<symbol>_ZN[0-9]+.*E)");
-
-// cargo-coverage-annotations-0.1.5: r"^\s*\}(?:\)*;?|\s*else\s*\{)$"
-consistent!(cargo_coverage_annotations_0, r"^\s*\}(?:\)*;?|\s*else\s*\{)$");
-
-// cargo-urlcrate-1.0.1: "[\u{001b}\u{009b}][\\[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]"
-consistent!(cargo_urlcrate_0, "[\u{001b}\u{009b}][\\[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]");
-
-// cargo-script-0.2.8: r"^\s*\*( |$)"
-consistent!(cargo_script_0, r"^\s*\*( |$)");
-
-// cargo-script-0.2.8: r"^(\s+)"
-consistent!(cargo_script_1, r"^(\s+)");
-
-// cargo-script-0.2.8: r"/\*|\*/"
-consistent!(cargo_script_2, r"/\*|\*/");
-
-// cargo-script-0.2.8: r"^\s*//!"
-consistent!(cargo_script_3, r"^\s*//!");
-
-// cargo-script-0.2.8: r"^#![^\[].*?(\r\n|\n)"
-consistent!(cargo_script_4, r"^#![^\[].*?(\r\n|\n)");
-
-// cargo-update-1.5.2: r"cargo-install-update\.exe-v.+"
-consistent!(cargo_update_0, r"cargo-install-update\.exe-v.+");
-
-// canteen-0.4.1: r"^<(?:(int|uint|str|float|path):)?([\w_][a-zA-Z0-9_]*)>$"
-consistent!(
- canteen_0,
- r"^<(?:(int|uint|str|float|path):)?([\w_][a-zA-Z0-9_]*)>$"
-);
-
-// thruster-cli-0.1.3: r"(.)([A-Z])"
-consistent!(thruster_cli_0, r"(.)([A-Z])");
-
-// thieves-cant-0.1.0: "([Z]+)$"
-consistent!(thieves_cant_0, "([Z]+)$");
-
-// codeowners-0.1.3: r"^@\S+/\S+"
-consistent!(codeowners_0, r"^@\S+/\S+");
-
-// codeowners-0.1.3: r"^@\S+"
-consistent!(codeowners_1, r"^@\S+");
-
-// codeowners-0.1.3: r"^\S+@\S+"
-consistent!(codeowners_2, r"^\S+@\S+");
-
-// conserve-0.4.2: r"^b0000 {21} complete 20[-0-9T:+]+\s +\d+s\n$"
-consistent!(conserve_0, r"^b0000 {21} complete 20[-0-9T:+]+\s +\d+s\n$");
-
-// commodore-0.3.0: r"(?P<greeting>\S+?) (?P<name>\S+?)$"
-consistent!(commodore_0, r"(?P<greeting>\S+?) (?P<name>\S+?)$");
-
-// corollary-0.3.0: r"([ \t]*)```haskell([\s\S]*?)```"
-consistent!(corollary_0, r"([ \t]*)```haskell([\s\S]*?)```");
-
-// corollary-0.3.0: r"\b((?:a|b|t)\d*)\b"
-consistent!(corollary_1, r"\b((?:a|b|t)\d*)\b");
-
-// colorizex-0.1.3: "NB"
-consistent!(colorizex_0, "NB");
-
-// colorstring-0.0.1: r"(?i)\[[a-z0-9_-]+\]"
-consistent!(colorstring_0, r"(?i)\[[a-z0-9_-]+\]");
-
-// colorstring-0.0.1: r"^(?i)(\[[a-z0-9_-]+\])+"
-consistent!(colorstring_1, r"^(?i)(\[[a-z0-9_-]+\])+");
-
-// cosmogony-0.3.0: "name:(.+)"
-consistent!(cosmogony_0, "name:(.+)");
-
-// cobalt-bin-0.12.1: r"(?m:^ {0,3}\[[^\]]+\]:.+$)"
-consistent!(cobalt_bin_0, r"(?m:^ {0,3}\[[^\]]+\]:.+$)");
-
-// comrak-0.2.12: r"[^\p{L}\p{M}\p{N}\p{Pc} -]"
-consistent!(comrak_0, r"[^\p{L}\p{M}\p{N}\p{Pc} -]");
-
-// content-blocker-0.2.3: ""
-consistent!(content_blocker_0, "");
-
-// content-blocker-0.2.3: "(?i)hi"
-consistent!(content_blocker_1, "(?i)hi");
-
-// content-blocker-0.2.3: "http[s]?://domain.org"
-consistent!(content_blocker_2, "http[s]?://domain.org");
-
-// content-blocker-0.2.3: "(?i)http[s]?://domain.org"
-consistent!(content_blocker_3, "(?i)http[s]?://domain.org");
-
-// content-blocker-0.2.3: "http://domain.org"
-consistent!(content_blocker_4, "http://domain.org");
-
-// content-blocker-0.2.3: "http://domain.org"
-consistent!(content_blocker_5, "http://domain.org");
-
-// content-blocker-0.2.3: "ad.html"
-consistent!(content_blocker_6, "ad.html");
-
-// content-blocker-0.2.3: "ad.html"
-consistent!(content_blocker_7, "ad.html");
-
-// content-blocker-0.2.3: "http://domain.org"
-consistent!(content_blocker_8, "http://domain.org");
-
-// content-blocker-0.2.3: "http://domain.org/nocookies.sjs"
-consistent!(content_blocker_9, "http://domain.org/nocookies.sjs");
-
-// content-blocker-0.2.3: "http://domain.org/nocookies.sjs"
-consistent!(content_blocker_10, "http://domain.org/nocookies.sjs");
-
-// content-blocker-0.2.3: "http://domain.org/hideme.jpg"
-consistent!(content_blocker_11, "http://domain.org/hideme.jpg");
-
-// content-blocker-0.2.3: "http://domain.org/ok.html"
-consistent!(content_blocker_12, "http://domain.org/ok.html");
-
-// content-blocker-0.2.3: "http://domain.org/ok.html\\?except_this=1"
-consistent!(content_blocker_13, "http://domain.org/ok.html\\?except_this=1");
-
-// victoria-dom-0.1.2: "[A-Za-z0-9=]"
-consistent!(victoria_dom_0, "[A-Za-z0-9=]");
-
-// numbat-1.0.0: r"^nsq://"
-consistent!(numbat_0, r"^nsq://");
-
-// airkorea-0.1.2: r"[\s\t\r\n]"
-consistent!(airkorea_0, r"[\s\t\r\n]");
-
-// airkorea-0.1.2: r"([\{\[,])|([\}\]])"
-consistent!(airkorea_1, r"([\{\[,])|([\}\]])");
-
-// airkorea-0.1.2: r"[^.\d]+$"
-consistent!(airkorea_2, r"[^.\d]+$");
-
-// rofl-0.0.1: r"\b"
-// consistent!(rofl_0, r"\b");
-
-// rogcat-0.2.15: r"--------- beginning of.*"
-consistent!(rogcat_0, r"--------- beginning of.*");
-
-// rogcat-0.2.15: r"a|e|i|o|u"
-consistent!(rogcat_1, r"a|e|i|o|u");
-
-// rogcat-0.2.15: r"^(\d+)([kMG])$"
-consistent!(rogcat_2, r"^(\d+)([kMG])$");
-
-// media_filename-0.1.4: "\\.([A-Za-z0-9]{2,4})$"
-consistent!(media_filename_0, "\\.([A-Za-z0-9]{2,4})$");
-
-// media_filename-0.1.4: "([0-9]{3,4}p|[0-9]{3,4}x[0-9]{3,4})"
-consistent!(media_filename_1, "([0-9]{3,4}p|[0-9]{3,4}x[0-9]{3,4})");
-
-// media_filename-0.1.4: "(?:^\\[([^]]+)\\]|- ?([^-]+)$)"
-consistent!(media_filename_2, "(?:^\\[([^]]+)\\]|- ?([^-]+)$)");
-
-// media_filename-0.1.4: "(?:[eE]([0-9]{2,3})|[^0-9A-Za-z]([0-9]{2,3})(?:v[0-9])?[^0-9A-Za-z])"
-consistent!(
- media_filename_3,
- "(?:[eE]([0-9]{2,3})|[^0-9A-Za-z]([0-9]{2,3})(?:v[0-9])?[^0-9A-Za-z])"
-);
-
-// media_filename-0.1.4: "[sS]([0-9]{1,2})"
-consistent!(media_filename_4, "[sS]([0-9]{1,2})");
-
-// media_filename-0.1.4: "((?i)(?:PPV.)?[HP]DTV|(?:HD)?CAM|BRRIP|[^a-z]TS[^a-z]|(?:PPV )?WEB.?DL(?: DVDRip)?|HDRip|DVDRip|CamRip|W[EB]BRip|BluRay|BD|DVD|DvDScr|hdtv)"
-consistent!(media_filename_5, "((?i)(?:PPV.)?[HP]DTV|(?:HD)?CAM|BRRIP|[^a-z]TS[^a-z]|(?:PPV )?WEB.?DL(?: DVDRip)?|HDRip|DVDRip|CamRip|W[EB]BRip|BluRay|BD|DVD|DvDScr|hdtv)");
-
-// media_filename-0.1.4: "((19[0-9]|20[01])[0-9])"
-consistent!(media_filename_6, "((19[0-9]|20[01])[0-9])");
-
-// media_filename-0.1.4: "((?i)xvid|x264|h\\.?264)"
-consistent!(media_filename_7, "((?i)xvid|x264|h\\.?264)");
-
-// media_filename-0.1.4: "((?i)MP3|DD5\\.?1|Dual[- ]Audio|LiNE|DTS|AAC(?:\\.?2\\.0)?|AC3(?:\\.5\\.1)?)"
-consistent!(media_filename_8, "((?i)MP3|DD5\\.?1|Dual[- ]Audio|LiNE|DTS|AAC(?:\\.?2\\.0)?|AC3(?:\\.5\\.1)?)");
-
-// media_filename-0.1.4: "\\[([0-9A-F]{8})\\]"
-consistent!(media_filename_9, "\\[([0-9A-F]{8})\\]");
-
-// termimage-0.3.2: r"(\d+)[xX](\d+)"
-consistent!(termimage_0, r"(\d+)[xX](\d+)");
-
-// teensy-0.1.0: r".*(\d{4}-\d{2}-\d{2}).*"
-consistent!(teensy_0, r".*(\d{4}-\d{2}-\d{2}).*");
-
-// telescreen-0.1.3: r"<@(.+)>"
-consistent!(telescreen_0, r"<@(.+)>");
-
-// tempus_fugit-0.4.4: r"^(\d+)"
-consistent!(tempus_fugit_0, r"^(\d+)");
-
-// fselect-0.4.1: "(\\?|\\.|\\*|\\[|\\]|\\(|\\)|\\^|\\$)"
-consistent!(fselect_0, "(\\?|\\.|\\*|\\[|\\]|\\(|\\)|\\^|\\$)");
-
-// fselect-0.4.1: "(%|_|\\?|\\.|\\*|\\[|\\]|\\(|\\)|\\^|\\$)"
-consistent!(fselect_1, "(%|_|\\?|\\.|\\*|\\[|\\]|\\(|\\)|\\^|\\$)");
-
-// fs_eventbridge-0.1.0: r"^([A-Z]+)(?:\s(.+))?\s*"
-consistent!(fs_eventbridge_0, r"^([A-Z]+)(?:\s(.+))?\s*");
-
-// joseki-0.0.1: r"(\w{1,2})\[(.+?)\]"
-consistent!(joseki_0, r"(\w{1,2})\[(.+?)\]");
-
-// tweetr-0.2.1: r"(?i)in (\d+) (second|minute|hour|day|week)s?"
-consistent!(tweetr_0, r"(?i)in (\d+) (second|minute|hour|day|week)s?");
-
-// bullet_core-0.1.1: "^(?u:[0-9])+"
-consistent!(bullet_core_0, "^(?u:[0-9])+");
-
-// bullet_core-0.1.1: "^(?u:[0-9])+(?u:\\.)(?u:[0-9])+"
-consistent!(bullet_core_1, "^(?u:[0-9])+(?u:\\.)(?u:[0-9])+");
-
-// bullet_core-0.1.1: "^(?u:[A-Za-zª-ªµ-µº-ºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬ-ˬˮ-ˮͰ-ʹͶ-ͷͺ-ͽͿ-ͿΆ-ΆΈ-ΊΌ-ΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙ-ՙա-ևא-תװ-ײؠ-يٮ-ٯٱ-ۓە-ەۥ-ۦۮ-ۯۺ-ۼۿ-ۿܐ-ܐܒ-ܯݍ-ޥޱ-ޱߊ-ߪߴ-ߵߺ-ߺࠀ-ࠕࠚ-ࠚࠤ-ࠤࠨ-ࠨࡀ-ࡘࢠ-ࢴऄ-हऽ-ऽॐ-ॐक़-ॡॱ-ঀঅ-ঌএ-ঐও-নপ-রল-লশ-হঽ-ঽৎ-ৎড়-ঢ়য়-ৡৰ-ৱਅ-ਊਏ-ਐਓ-ਨਪ-ਰਲ-ਲ਼ਵ-ਸ਼ਸ-ਹਖ਼-ੜਫ਼-ਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલ-ળવ-હઽ-ઽૐ-ૐૠ-ૡૹ-ૹଅ-ଌଏ-ଐଓ-ନପ-ରଲ-ଳଵ-ହଽ-ଽଡ଼-ଢ଼ୟ-ୡୱ-ୱஃ-ஃஅ-ஊஎ-ஐஒ-கங-சஜ-ஜஞ-டண-தந-பம-ஹௐ-ௐఅ-ఌఎ-ఐఒ-నప-హఽ-ఽౘ-ౚౠ-ౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽ-ಽೞ-ೞೠ-ೡೱ-ೲഅ-ഌഎ-ഐഒ-ഺഽ-ഽൎ-ൎൟ-ൡൺ-ൿඅ-ඖක-නඳ-රල-ලව-ෆก-ะา-ำเ-ๆກ-ຂຄ-ຄງ-ຈຊ-ຊຍ-ຍດ-ທນ-ຟມ-ຣລ-ລວ-ວສ-ຫອ-ະາ-ຳຽ-ຽເ-ໄໆ-ໆໜ-ໟༀ-ༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿ-ဿၐ-ၕၚ-ၝၡ-ၡၥ-ၦၮ-ၰၵ-ႁႎ-ႎႠ-ჅჇ-ჇჍ-Ⴭა-ჺჼ-ቈቊ-ቍቐ-ቖቘ-ቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀ-ዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛱ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗ-ៗៜ-ៜᠠ-ᡷᢀ-ᢨᢪ-ᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧ-ᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮ-ᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵ-ᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙ-ὙὛ-ὛὝ-ὝὟ-ώᾀ-ᾴᾶ-ᾼι-ιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱ-ⁱⁿ-ⁿₐ-ₜℂ-ℂℇ-ℇℊ-ℓℕ-ℕℙ-ℝℤ-ℤΩ-Ωℨ-ℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎ-ⅎↃ-ↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲ-ⳳⴀ-ⴥⴧ-ⴧⴭ-ⴭⴰ-ⵧⵯ-ⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ-ⸯ々-〆〱-〵〻-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪ-ꘫꙀ-ꙮꙿ-ꚝꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞭꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻ-ꣻꣽ-ꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏ-ꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺ-ꩺꩾ-ꪯꪱ-ꪱꪵ-ꪶꪹ-ꪽꫀ-ꫀꫂ-ꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-יִײַ-ﬨשׁ-זּטּ-לּמּ-מּנּ-סּףּ-פּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ𐀀-𐀋𐀍-𐀦𐀨-𐀺𐀼-𐀽𐀿-𐁍𐁐-𐁝𐂀-𐃺𐊀-𐊜𐊠-𐋐𐌀-𐌟𐌰-𐍀𐍂-𐍉𐍐-𐍵𐎀-𐎝𐎠-𐏃𐏈-𐏏𐐀-𐒝𐔀-𐔧𐔰-𐕣𐘀-𐜶𐝀-𐝕𐝠-𐝧𐠀-𐠅𐠈-𐠈𐠊-𐠵𐠷-𐠸𐠼-𐠼𐠿-𐡕𐡠-𐡶𐢀-𐢞𐣠-𐣲𐣴-𐣵𐤀-𐤕𐤠-𐤹𐦀-𐦷𐦾-𐦿𐨀-𐨀𐨐-𐨓𐨕-𐨗𐨙-𐨳𐩠-𐩼𐪀-𐪜𐫀-𐫇𐫉-𐫤𐬀-𐬵𐭀-𐭕𐭠-𐭲𐮀-𐮑𐰀-𐱈𐲀-𐲲𐳀-𐳲𑀃-𑀷𑂃-𑂯𑃐-𑃨𑄃-𑄦𑅐-𑅲𑅶-𑅶𑆃-𑆲𑇁-𑇄𑇚-𑇚𑇜-𑇜𑈀-𑈑𑈓-𑈫𑊀-𑊆𑊈-𑊈𑊊-𑊍𑊏-𑊝𑊟-𑊨𑊰-𑋞𑌅-𑌌𑌏-𑌐𑌓-𑌨𑌪-𑌰𑌲-𑌳𑌵-𑌹𑌽-𑌽𑍐-𑍐𑍝-𑍡𑒀-𑒯𑓄-𑓅𑓇-𑓇𑖀-𑖮𑗘-𑗛𑘀-𑘯𑙄-𑙄𑚀-𑚪𑜀-𑜙𑢠-𑣟𑣿-𑣿𑫀-𑫸𒀀-𒎙𒒀-𒕃𓀀-𓐮𔐀-𔙆𖠀-𖨸𖩀-𖩞𖫐-𖫭𖬀-𖬯𖭀-𖭃𖭣-𖭷𖭽-𖮏𖼀-𖽄𖽐-𖽐𖾓-𖾟𛀀-𛀁𛰀-𛱪𛱰-𛱼𛲀-𛲈𛲐-𛲙𝐀-𝑔𝑖-𝒜𝒞-𝒟𝒢-𝒢𝒥-𝒦𝒩-𝒬𝒮-𝒹𝒻-𝒻𝒽-𝓃𝓅-𝔅𝔇-𝔊𝔍-𝔔𝔖-𝔜𝔞-𝔹𝔻-𝔾𝕀-𝕄𝕆-𝕆𝕊-𝕐𝕒-𝚥𝚨-𝛀𝛂-𝛚𝛜-𝛺𝛼-𝜔𝜖-𝜴𝜶-𝝎𝝐-𝝮𝝰-𝞈𝞊-𝞨𝞪-𝟂𝟄-𝟋𞠀-𞣄𞸀-𞸃𞸅-𞸟𞸡-𞸢𞸤-𞸤𞸧-𞸧𞸩-𞸲𞸴-𞸷𞸹-𞸹𞸻-𞸻𞹂-𞹂𞹇-𞹇𞹉-𞹉𞹋-𞹋𞹍-𞹏𞹑-𞹒𞹔-𞹔𞹗-𞹗𞹙-𞹙𞹛-𞹛𞹝-𞹝𞹟-𞹟𞹡-𞹢𞹤-𞹤𞹧-𞹪𞹬-𞹲𞹴-𞹷𞹹-𞹼𞹾-𞹾𞺀-𞺉𞺋-𞺛𞺡-𞺣𞺥-𞺩𞺫-𞺻𠀀-𪛖𪜀-𫜴𫝀-𫠝𫠠-𬺡丽-𪘀])+"
-consistent!(bullet_core_2, "^(?u:[A-Za-zª-ªµ-µº-ºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬ-ˬˮ-ˮͰ-ʹͶ-ͷͺ-ͽͿ-ͿΆ-ΆΈ-ΊΌ-ΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙ-ՙա-ևא-תװ-ײؠ-يٮ-ٯٱ-ۓە-ەۥ-ۦۮ-ۯۺ-ۼۿ-ۿܐ-ܐܒ-ܯݍ-ޥޱ-ޱߊ-ߪߴ-ߵߺ-ߺࠀ-ࠕࠚ-ࠚࠤ-ࠤࠨ-ࠨࡀ-ࡘࢠ-ࢴऄ-हऽ-ऽॐ-ॐक़-ॡॱ-ঀঅ-ঌএ-ঐও-নপ-রল-লশ-হঽ-ঽৎ-ৎড়-ঢ়য়-ৡৰ-ৱਅ-ਊਏ-ਐਓ-ਨਪ-ਰਲ-ਲ਼ਵ-ਸ਼ਸ-ਹਖ਼-ੜਫ਼-ਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલ-ળવ-હઽ-ઽૐ-ૐૠ-ૡૹ-ૹଅ-ଌଏ-ଐଓ-ନପ-ରଲ-ଳଵ-ହଽ-ଽଡ଼-ଢ଼ୟ-ୡୱ-ୱஃ-ஃஅ-ஊஎ-ஐஒ-கங-சஜ-ஜஞ-டண-தந-பம-ஹௐ-ௐఅ-ఌఎ-ఐఒ-నప-హఽ-ఽౘ-ౚౠ-ౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽ-ಽೞ-ೞೠ-ೡೱ-ೲഅ-ഌഎ-ഐഒ-ഺഽ-ഽൎ-ൎൟ-ൡൺ-ൿඅ-ඖක-නඳ-රල-ලව-ෆก-ะา-ำเ-ๆກ-ຂຄ-ຄງ-ຈຊ-ຊຍ-ຍດ-ທນ-ຟມ-ຣລ-ລວ-ວສ-ຫອ-ະາ-ຳຽ-ຽເ-ໄໆ-ໆໜ-ໟༀ-ༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿ-ဿၐ-ၕၚ-ၝၡ-ၡၥ-ၦၮ-ၰၵ-ႁႎ-ႎႠ-ჅჇ-ჇჍ-Ⴭა-ჺჼ-ቈቊ-ቍቐ-ቖቘ-ቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀ-ዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛱ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗ-ៗៜ-ៜᠠ-ᡷᢀ-ᢨᢪ-ᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧ-ᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮ-ᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵ-ᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙ-ὙὛ-ὛὝ-ὝὟ-ώᾀ-ᾴᾶ-ᾼι-ιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱ-ⁱⁿ-ⁿₐ-ₜℂ-ℂℇ-ℇℊ-ℓℕ-ℕℙ-ℝℤ-ℤΩ-Ωℨ-ℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎ-ⅎↃ-ↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲ-ⳳⴀ-ⴥⴧ-ⴧⴭ-ⴭⴰ-ⵧⵯ-ⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ-ⸯ々-〆〱-〵〻-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪ-ꘫꙀ-ꙮꙿ-ꚝꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞭꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻ-ꣻꣽ-ꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏ-ꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺ-ꩺꩾ-ꪯꪱ-ꪱꪵ-ꪶꪹ-ꪽꫀ-ꫀꫂ-ꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-יִײַ-ﬨשׁ-זּטּ-לּמּ-מּנּ-סּףּ-פּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ𐀀-𐀋𐀍-𐀦𐀨-𐀺𐀼-𐀽𐀿-𐁍𐁐-𐁝𐂀-𐃺𐊀-𐊜𐊠-𐋐𐌀-𐌟𐌰-𐍀𐍂-𐍉𐍐-𐍵𐎀-𐎝𐎠-𐏃𐏈-𐏏𐐀-𐒝𐔀-𐔧𐔰-𐕣𐘀-𐜶𐝀-𐝕𐝠-𐝧𐠀-𐠅𐠈-𐠈𐠊-𐠵𐠷-𐠸𐠼-𐠼𐠿-𐡕𐡠-𐡶𐢀-𐢞𐣠-𐣲𐣴-𐣵𐤀-𐤕𐤠-𐤹𐦀-𐦷𐦾-𐦿𐨀-𐨀𐨐-𐨓𐨕-𐨗𐨙-𐨳𐩠-𐩼𐪀-𐪜𐫀-𐫇𐫉-𐫤𐬀-𐬵𐭀-𐭕𐭠-𐭲𐮀-𐮑𐰀-𐱈𐲀-𐲲𐳀-𐳲𑀃-𑀷𑂃-𑂯𑃐-𑃨𑄃-𑄦𑅐-𑅲𑅶-𑅶𑆃-𑆲𑇁-𑇄𑇚-𑇚𑇜-𑇜𑈀-𑈑𑈓-𑈫𑊀-𑊆𑊈-𑊈𑊊-𑊍𑊏-𑊝𑊟-𑊨𑊰-𑋞𑌅-𑌌𑌏-𑌐𑌓-𑌨𑌪-𑌰𑌲-𑌳𑌵-𑌹𑌽-𑌽𑍐-𑍐𑍝-𑍡𑒀-𑒯𑓄-𑓅𑓇-𑓇𑖀-𑖮𑗘-𑗛𑘀-𑘯𑙄-𑙄𑚀-𑚪𑜀-𑜙𑢠-𑣟𑣿-𑣿𑫀-𑫸𒀀-𒎙𒒀-𒕃𓀀-𓐮𔐀-𔙆𖠀-𖨸𖩀-𖩞𖫐-𖫭𖬀-𖬯𖭀-𖭃𖭣-𖭷𖭽-𖮏𖼀-𖽄𖽐-𖽐𖾓-𖾟𛀀-𛀁𛰀-𛱪𛱰-𛱼𛲀-𛲈𛲐-𛲙𝐀-𝑔𝑖-𝒜𝒞-𝒟𝒢-𝒢𝒥-𝒦𝒩-𝒬𝒮-𝒹𝒻-𝒻𝒽-𝓃𝓅-𝔅𝔇-𝔊𝔍-𝔔𝔖-𝔜𝔞-𝔹𝔻-𝔾𝕀-𝕄𝕆-𝕆𝕊-𝕐𝕒-𝚥𝚨-𝛀𝛂-𝛚𝛜-𝛺𝛼-𝜔𝜖-𝜴𝜶-𝝎𝝐-𝝮𝝰-𝞈𝞊-𝞨𝞪-𝟂𝟄-𝟋𞠀-𞣄𞸀-𞸃𞸅-𞸟𞸡-𞸢𞸤-𞸤𞸧-𞸧𞸩-𞸲𞸴-𞸷𞸹-𞸹𞸻-𞸻𞹂-𞹂𞹇-𞹇𞹉-𞹉𞹋-𞹋𞹍-𞹏𞹑-𞹒𞹔-𞹔𞹗-𞹗𞹙-𞹙𞹛-𞹛𞹝-𞹝𞹟-𞹟𞹡-𞹢𞹤-𞹤𞹧-𞹪𞹬-𞹲𞹴-𞹷𞹹-𞹼𞹾-𞹾𞺀-𞺉𞺋-𞺛𞺡-𞺣𞺥-𞺩𞺫-𞺻𠀀-𪛖𪜀-𫜴𫝀-𫠝𫠠-𬺡丽-𪘀])+");
-
-// bullet_core-0.1.1: "^(?u:d/d)((?u:[A-Za-zª-ªµ-µº-ºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬ-ˬˮ-ˮͰ-ʹͶ-ͷͺ-ͽͿ-ͿΆ-ΆΈ-ΊΌ-ΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙ-ՙա-ևא-תװ-ײؠ-يٮ-ٯٱ-ۓە-ەۥ-ۦۮ-ۯۺ-ۼۿ-ۿܐ-ܐܒ-ܯݍ-ޥޱ-ޱߊ-ߪߴ-ߵߺ-ߺࠀ-ࠕࠚ-ࠚࠤ-ࠤࠨ-ࠨࡀ-ࡘࢠ-ࢴऄ-हऽ-ऽॐ-ॐक़-ॡॱ-ঀঅ-ঌএ-ঐও-নপ-রল-লশ-হঽ-ঽৎ-ৎড়-ঢ়য়-ৡৰ-ৱਅ-ਊਏ-ਐਓ-ਨਪ-ਰਲ-ਲ਼ਵ-ਸ਼ਸ-ਹਖ਼-ੜਫ਼-ਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલ-ળવ-હઽ-ઽૐ-ૐૠ-ૡૹ-ૹଅ-ଌଏ-ଐଓ-ନପ-ରଲ-ଳଵ-ହଽ-ଽଡ଼-ଢ଼ୟ-ୡୱ-ୱஃ-ஃஅ-ஊஎ-ஐஒ-கங-சஜ-ஜஞ-டண-தந-பம-ஹௐ-ௐఅ-ఌఎ-ఐఒ-నప-హఽ-ఽౘ-ౚౠ-ౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽ-ಽೞ-ೞೠ-ೡೱ-ೲഅ-ഌഎ-ഐഒ-ഺഽ-ഽൎ-ൎൟ-ൡൺ-ൿඅ-ඖක-නඳ-රල-ලව-ෆก-ะา-ำเ-ๆກ-ຂຄ-ຄງ-ຈຊ-ຊຍ-ຍດ-ທນ-ຟມ-ຣລ-ລວ-ວສ-ຫອ-ະາ-ຳຽ-ຽເ-ໄໆ-ໆໜ-ໟༀ-ༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿ-ဿၐ-ၕၚ-ၝၡ-ၡၥ-ၦၮ-ၰၵ-ႁႎ-ႎႠ-ჅჇ-ჇჍ-Ⴭა-ჺჼ-ቈቊ-ቍቐ-ቖቘ-ቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀ-ዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛱ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗ-ៗៜ-ៜᠠ-ᡷᢀ-ᢨᢪ-ᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧ-ᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮ-ᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵ-ᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙ-ὙὛ-ὛὝ-ὝὟ-ώᾀ-ᾴᾶ-ᾼι-ιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱ-ⁱⁿ-ⁿₐ-ₜℂ-ℂℇ-ℇℊ-ℓℕ-ℕℙ-ℝℤ-ℤΩ-Ωℨ-ℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎ-ⅎↃ-ↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲ-ⳳⴀ-ⴥⴧ-ⴧⴭ-ⴭⴰ-ⵧⵯ-ⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ-ⸯ々-〆〱-〵〻-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪ-ꘫꙀ-ꙮꙿ-ꚝꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞭꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻ-ꣻꣽ-ꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏ-ꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺ-ꩺꩾ-ꪯꪱ-ꪱꪵ-ꪶꪹ-ꪽꫀ-ꫀꫂ-ꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-יִײַ-ﬨשׁ-זּטּ-לּמּ-מּנּ-סּףּ-פּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ𐀀-𐀋𐀍-𐀦𐀨-𐀺𐀼-𐀽𐀿-𐁍𐁐-𐁝𐂀-𐃺𐊀-𐊜𐊠-𐋐𐌀-𐌟𐌰-𐍀𐍂-𐍉𐍐-𐍵𐎀-𐎝𐎠-𐏃𐏈-𐏏𐐀-𐒝𐔀-𐔧𐔰-𐕣𐘀-𐜶𐝀-𐝕𐝠-𐝧𐠀-𐠅𐠈-𐠈𐠊-𐠵𐠷-𐠸𐠼-𐠼𐠿-𐡕𐡠-𐡶𐢀-𐢞𐣠-𐣲𐣴-𐣵𐤀-𐤕𐤠-𐤹𐦀-𐦷𐦾-𐦿𐨀-𐨀𐨐-𐨓𐨕-𐨗𐨙-𐨳𐩠-𐩼𐪀-𐪜𐫀-𐫇𐫉-𐫤𐬀-𐬵𐭀-𐭕𐭠-𐭲𐮀-𐮑𐰀-𐱈𐲀-𐲲𐳀-𐳲𑀃-𑀷𑂃-𑂯𑃐-𑃨𑄃-𑄦𑅐-𑅲𑅶-𑅶𑆃-𑆲𑇁-𑇄𑇚-𑇚𑇜-𑇜𑈀-𑈑𑈓-𑈫𑊀-𑊆𑊈-𑊈𑊊-𑊍𑊏-𑊝𑊟-𑊨𑊰-𑋞𑌅-𑌌𑌏-𑌐𑌓-𑌨𑌪-𑌰𑌲-𑌳𑌵-𑌹𑌽-𑌽𑍐-𑍐𑍝-𑍡𑒀-𑒯𑓄-𑓅𑓇-𑓇𑖀-𑖮𑗘-𑗛𑘀-𑘯𑙄-𑙄𑚀-𑚪𑜀-𑜙𑢠-𑣟𑣿-𑣿𑫀-𑫸𒀀-𒎙𒒀-𒕃𓀀-𓐮𔐀-𔙆𖠀-𖨸𖩀-𖩞𖫐-𖫭𖬀-𖬯𖭀-𖭃𖭣-𖭷𖭽-𖮏𖼀-𖽄𖽐-𖽐𖾓-𖾟𛀀-𛀁𛰀-𛱪𛱰-𛱼𛲀-𛲈𛲐-𛲙𝐀-𝑔𝑖-𝒜𝒞-𝒟𝒢-𝒢𝒥-𝒦𝒩-𝒬𝒮-𝒹𝒻-𝒻𝒽-𝓃𝓅-𝔅𝔇-𝔊𝔍-𝔔𝔖-𝔜𝔞-𝔹𝔻-𝔾𝕀-𝕄𝕆-𝕆𝕊-𝕐𝕒-𝚥𝚨-𝛀𝛂-𝛚𝛜-𝛺𝛼-𝜔𝜖-𝜴𝜶-𝝎𝝐-𝝮𝝰-𝞈𝞊-𝞨𝞪-𝟂𝟄-𝟋𞠀-𞣄𞸀-𞸃𞸅-𞸟𞸡-𞸢𞸤-𞸤𞸧-𞸧𞸩-𞸲𞸴-𞸷𞸹-𞸹𞸻-𞸻𞹂-𞹂𞹇-𞹇𞹉-𞹉𞹋-𞹋𞹍-𞹏𞹑-𞹒𞹔-𞹔𞹗-𞹗𞹙-𞹙𞹛-𞹛𞹝-𞹝𞹟-𞹟𞹡-𞹢𞹤-𞹤𞹧-𞹪𞹬-𞹲𞹴-𞹷𞹹-𞹼𞹾-𞹾𞺀-𞺉𞺋-𞺛𞺡-𞺣𞺥-𞺩𞺫-𞺻𠀀-𪛖𪜀-𫜴𫝀-𫠝𫠠-𬺡丽-𪘀])+)"
-consistent!(bullet_core_3, "^(?u:d/d)((?u:[A-Za-zª-ªµ-µº-ºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬ-ˬˮ-ˮͰ-ʹͶ-ͷͺ-ͽͿ-ͿΆ-ΆΈ-ΊΌ-ΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙ-ՙա-ևא-תװ-ײؠ-يٮ-ٯٱ-ۓە-ەۥ-ۦۮ-ۯۺ-ۼۿ-ۿܐ-ܐܒ-ܯݍ-ޥޱ-ޱߊ-ߪߴ-ߵߺ-ߺࠀ-ࠕࠚ-ࠚࠤ-ࠤࠨ-ࠨࡀ-ࡘࢠ-ࢴऄ-हऽ-ऽॐ-ॐक़-ॡॱ-ঀঅ-ঌএ-ঐও-নপ-রল-লশ-হঽ-ঽৎ-ৎড়-ঢ়য়-ৡৰ-ৱਅ-ਊਏ-ਐਓ-ਨਪ-ਰਲ-ਲ਼ਵ-ਸ਼ਸ-ਹਖ਼-ੜਫ਼-ਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલ-ળવ-હઽ-ઽૐ-ૐૠ-ૡૹ-ૹଅ-ଌଏ-ଐଓ-ନପ-ରଲ-ଳଵ-ହଽ-ଽଡ଼-ଢ଼ୟ-ୡୱ-ୱஃ-ஃஅ-ஊஎ-ஐஒ-கங-சஜ-ஜஞ-டண-தந-பம-ஹௐ-ௐఅ-ఌఎ-ఐఒ-నప-హఽ-ఽౘ-ౚౠ-ౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽ-ಽೞ-ೞೠ-ೡೱ-ೲഅ-ഌഎ-ഐഒ-ഺഽ-ഽൎ-ൎൟ-ൡൺ-ൿඅ-ඖක-නඳ-රල-ලව-ෆก-ะา-ำเ-ๆກ-ຂຄ-ຄງ-ຈຊ-ຊຍ-ຍດ-ທນ-ຟມ-ຣລ-ລວ-ວສ-ຫອ-ະາ-ຳຽ-ຽເ-ໄໆ-ໆໜ-ໟༀ-ༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿ-ဿၐ-ၕၚ-ၝၡ-ၡၥ-ၦၮ-ၰၵ-ႁႎ-ႎႠ-ჅჇ-ჇჍ-Ⴭა-ჺჼ-ቈቊ-ቍቐ-ቖቘ-ቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀ-ዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛱ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗ-ៗៜ-ៜᠠ-ᡷᢀ-ᢨᢪ-ᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧ-ᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮ-ᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵ-ᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙ-ὙὛ-ὛὝ-ὝὟ-ώᾀ-ᾴᾶ-ᾼι-ιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱ-ⁱⁿ-ⁿₐ-ₜℂ-ℂℇ-ℇℊ-ℓℕ-ℕℙ-ℝℤ-ℤΩ-Ωℨ-ℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎ-ⅎↃ-ↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲ-ⳳⴀ-ⴥⴧ-ⴧⴭ-ⴭⴰ-ⵧⵯ-ⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ-ⸯ々-〆〱-〵〻-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪ-ꘫꙀ-ꙮꙿ-ꚝꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞭꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻ-ꣻꣽ-ꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏ-ꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺ-ꩺꩾ-ꪯꪱ-ꪱꪵ-ꪶꪹ-ꪽꫀ-ꫀꫂ-ꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-יִײַ-ﬨשׁ-זּטּ-לּמּ-מּנּ-סּףּ-פּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ𐀀-𐀋𐀍-𐀦𐀨-𐀺𐀼-𐀽𐀿-𐁍𐁐-𐁝𐂀-𐃺𐊀-𐊜𐊠-𐋐𐌀-𐌟𐌰-𐍀𐍂-𐍉𐍐-𐍵𐎀-𐎝𐎠-𐏃𐏈-𐏏𐐀-𐒝𐔀-𐔧𐔰-𐕣𐘀-𐜶𐝀-𐝕𐝠-𐝧𐠀-𐠅𐠈-𐠈𐠊-𐠵𐠷-𐠸𐠼-𐠼𐠿-𐡕𐡠-𐡶𐢀-𐢞𐣠-𐣲𐣴-𐣵𐤀-𐤕𐤠-𐤹𐦀-𐦷𐦾-𐦿𐨀-𐨀𐨐-𐨓𐨕-𐨗𐨙-𐨳𐩠-𐩼𐪀-𐪜𐫀-𐫇𐫉-𐫤𐬀-𐬵𐭀-𐭕𐭠-𐭲𐮀-𐮑𐰀-𐱈𐲀-𐲲𐳀-𐳲𑀃-𑀷𑂃-𑂯𑃐-𑃨𑄃-𑄦𑅐-𑅲𑅶-𑅶𑆃-𑆲𑇁-𑇄𑇚-𑇚𑇜-𑇜𑈀-𑈑𑈓-𑈫𑊀-𑊆𑊈-𑊈𑊊-𑊍𑊏-𑊝𑊟-𑊨𑊰-𑋞𑌅-𑌌𑌏-𑌐𑌓-𑌨𑌪-𑌰𑌲-𑌳𑌵-𑌹𑌽-𑌽𑍐-𑍐𑍝-𑍡𑒀-𑒯𑓄-𑓅𑓇-𑓇𑖀-𑖮𑗘-𑗛𑘀-𑘯𑙄-𑙄𑚀-𑚪𑜀-𑜙𑢠-𑣟𑣿-𑣿𑫀-𑫸𒀀-𒎙𒒀-𒕃𓀀-𓐮𔐀-𔙆𖠀-𖨸𖩀-𖩞𖫐-𖫭𖬀-𖬯𖭀-𖭃𖭣-𖭷𖭽-𖮏𖼀-𖽄𖽐-𖽐𖾓-𖾟𛀀-𛀁𛰀-𛱪𛱰-𛱼𛲀-𛲈𛲐-𛲙𝐀-𝑔𝑖-𝒜𝒞-𝒟𝒢-𝒢𝒥-𝒦𝒩-𝒬𝒮-𝒹𝒻-𝒻𝒽-𝓃𝓅-𝔅𝔇-𝔊𝔍-𝔔𝔖-𝔜𝔞-𝔹𝔻-𝔾𝕀-𝕄𝕆-𝕆𝕊-𝕐𝕒-𝚥𝚨-𝛀𝛂-𝛚𝛜-𝛺𝛼-𝜔𝜖-𝜴𝜶-𝝎𝝐-𝝮𝝰-𝞈𝞊-𝞨𝞪-𝟂𝟄-𝟋𞠀-𞣄𞸀-𞸃𞸅-𞸟𞸡-𞸢𞸤-𞸤𞸧-𞸧𞸩-𞸲𞸴-𞸷𞸹-𞸹𞸻-𞸻𞹂-𞹂𞹇-𞹇𞹉-𞹉𞹋-𞹋𞹍-𞹏𞹑-𞹒𞹔-𞹔𞹗-𞹗𞹙-𞹙𞹛-𞹛𞹝-𞹝𞹟-𞹟𞹡-𞹢𞹤-𞹤𞹧-𞹪𞹬-𞹲𞹴-𞹷𞹹-𞹼𞹾-𞹾𞺀-𞺉𞺋-𞺛𞺡-𞺣𞺥-𞺩𞺫-𞺻𠀀-𪛖𪜀-𫜴𫝀-𫠝𫠠-𬺡丽-𪘀])+)");
-
-// bullet_core-0.1.1: "^(?u:\\()"
-consistent!(bullet_core_4, "^(?u:\\()");
-
-// bullet_core-0.1.1: "^(?u:\\))"
-consistent!(bullet_core_5, "^(?u:\\))");
-
-// bullet_core-0.1.1: "^(?u:\\*)"
-consistent!(bullet_core_6, "^(?u:\\*)");
-
-// bullet_core-0.1.1: "^(?u:\\+)"
-consistent!(bullet_core_7, "^(?u:\\+)");
-
-// bullet_core-0.1.1: "^(?u:,)"
-consistent!(bullet_core_8, "^(?u:,)");
-
-// bullet_core-0.1.1: "^(?u:\\-)"
-consistent!(bullet_core_9, "^(?u:\\-)");
-
-// bullet_core-0.1.1: "^(?u:/)"
-consistent!(bullet_core_10, "^(?u:/)");
-
-// bullet_core-0.1.1: "^(?u:\\[)"
-consistent!(bullet_core_11, "^(?u:\\[)");
-
-// bullet_core-0.1.1: "^(?u:\\])"
-consistent!(bullet_core_12, "^(?u:\\])");
-
-// bullet_core-0.1.1: "^(?u:\\^)"
-consistent!(bullet_core_13, "^(?u:\\^)");
-
-// bullet_core-0.1.1: "^(?u:·)"
-consistent!(bullet_core_14, "^(?u:·)");
-
-// actix-web-0.6.13: "//+"
-consistent!(actix_web_0, "//+");
-
-// actix-web-0.6.13: "//+"
-consistent!(actix_web_1, "//+");
-
-// althea_kernel_interface-0.1.0: r"(\S*) .* (\S*) (REACHABLE|STALE|DELAY)"
-consistent!(
- althea_kernel_interface_0,
- r"(\S*) .* (\S*) (REACHABLE|STALE|DELAY)"
-);
-
-// althea_kernel_interface-0.1.0: r"-s (.*) --ip6-dst (.*)/.* bcnt = (.*)"
-consistent!(
- althea_kernel_interface_1,
- r"-s (.*) --ip6-dst (.*)/.* bcnt = (.*)"
-);
-
-// alcibiades-0.3.0: r"\buci(?:\s|$)"
-consistent!(alcibiades_0, r"\buci(?:\s|$)");
-
-// ruma-identifiers-0.11.0: r"\A[a-z0-9._=-]+\z"
-consistent!(ruma_identifiers_0, r"\A[a-z0-9._=-]+\z");
-
-// rusqbin-0.2.3: r"/rusqbins/((?i)[A-F0-9]{8}\-[A-F0-9]{4}\-4[A-F0-9]{3}\-[89AB][A-F0-9]{3}\-[A-F0-9]{12})$"
-consistent!(rusqbin_0, r"/rusqbins/((?i)[A-F0-9]{8}\-[A-F0-9]{4}\-4[A-F0-9]{3}\-[89AB][A-F0-9]{3}\-[A-F0-9]{12})$");
-
-// rusqbin-0.2.3: r"/rusqbins/((?i)[A-F0-9]{8}\-[A-F0-9]{4}\-4[A-F0-9]{3}\-[89AB][A-F0-9]{3}\-[A-F0-9]{12})/requests/?$"
-consistent!(rusqbin_1, r"/rusqbins/((?i)[A-F0-9]{8}\-[A-F0-9]{4}\-4[A-F0-9]{3}\-[89AB][A-F0-9]{3}\-[A-F0-9]{12})/requests/?$");
-
-// rust-install-0.0.4: r"^(nightly|beta|stable)(?:-(\d{4}-\d{2}-\d{2}))?$"
-consistent!(
- rust_install_0,
- r"^(nightly|beta|stable)(?:-(\d{4}-\d{2}-\d{2}))?$"
-);
-
-// rust_inbox-0.0.5: "^+(.*)\r\n"
-consistent!(rust_inbox_0, "^+(.*)\r\n");
-
-// rust_inbox-0.0.5: r"^\* CAPABILITY (.*)\r\n"
-consistent!(rust_inbox_1, r"^\* CAPABILITY (.*)\r\n");
-
-// rust_inbox-0.0.5: r"^([a-zA-Z0-9]+) (OK|NO|BAD)(.*)"
-consistent!(rust_inbox_2, r"^([a-zA-Z0-9]+) (OK|NO|BAD)(.*)");
-
-// rust_inbox-0.0.5: r"^\* (\d+) EXISTS\r\n"
-consistent!(rust_inbox_3, r"^\* (\d+) EXISTS\r\n");
-
-// rust_inbox-0.0.5: r"^\* (\d+) RECENT\r\n"
-consistent!(rust_inbox_4, r"^\* (\d+) RECENT\r\n");
-
-// rust_inbox-0.0.5: r"^\* FLAGS (.+)\r\n"
-consistent!(rust_inbox_5, r"^\* FLAGS (.+)\r\n");
-
-// rust_inbox-0.0.5: r"^\* OK \[UNSEEN (\d+)\](.*)\r\n"
-consistent!(rust_inbox_6, r"^\* OK \[UNSEEN (\d+)\](.*)\r\n");
-
-// rust_inbox-0.0.5: r"^\* OK \[UIDVALIDITY (\d+)\](.*)\r\n"
-consistent!(rust_inbox_7, r"^\* OK \[UIDVALIDITY (\d+)\](.*)\r\n");
-
-// rust_inbox-0.0.5: r"^\* OK \[UIDNEXT (\d+)\](.*)\r\n"
-consistent!(rust_inbox_8, r"^\* OK \[UIDNEXT (\d+)\](.*)\r\n");
-
-// rust_inbox-0.0.5: r"^\* OK \[PERMANENTFLAGS (.+)\](.*)\r\n"
-consistent!(rust_inbox_9, r"^\* OK \[PERMANENTFLAGS (.+)\](.*)\r\n");
-
-// rustml-0.0.7: r"^[a-z]+ (\d+)$"
-consistent!(rustml_0, r"^[a-z]+ (\d+)$");
-
-// rustml-0.0.7: r"^[a-z]+ (\d+)$"
-consistent!(rustml_1, r"^[a-z]+ (\d+)$");
-
-// rustml-0.0.7: r"^[a-z]+ (\d+)$"
-consistent!(rustml_2, r"^[a-z]+ (\d+)$");
-
-// rustfmt-0.10.0: r"([^\\](\\\\)*)\\[\n\r][[:space:]]*"
-consistent!(rustfmt_0, r"([^\\](\\\\)*)\\[\n\r][[:space:]]*");
-
-// rustfmt-core-0.4.0: r"(^\s*$)|(^\s*//\s*rustfmt-[^:]+:\s*\S+)"
-consistent!(rustfmt_core_0, r"(^\s*$)|(^\s*//\s*rustfmt-[^:]+:\s*\S+)");
-
-// rustfmt-core-0.4.0: r"^## `([^`]+)`"
-consistent!(rustfmt_core_1, r"^## `([^`]+)`");
-
-// rustfmt-core-0.4.0: r"([^\\](\\\\)*)\\[\n\r][[:space:]]*"
-consistent!(rustfmt_core_2, r"([^\\](\\\\)*)\\[\n\r][[:space:]]*");
-
-// rustfmt-core-0.4.0: r"\s;"
-consistent!(rustfmt_core_3, r"\s;");
-
-// rust-enum-derive-0.4.0: r"^(0x)?([:digit:]+)$"
-consistent!(rust_enum_derive_0, r"^(0x)?([:digit:]+)$");
-
-// rust-enum-derive-0.4.0: r"^([:digit:]+)[:space:]*<<[:space:]*([:digit:]+)$"
-consistent!(
- rust_enum_derive_1,
- r"^([:digit:]+)[:space:]*<<[:space:]*([:digit:]+)$"
-);
-
-// rust-enum-derive-0.4.0: r"^[:space:]*([[:alnum:]_]+)([:space:]*=[:space:]*([:graph:]+))?[:space:]*,"
-consistent!(rust_enum_derive_2, r"^[:space:]*([[:alnum:]_]+)([:space:]*=[:space:]*([:graph:]+))?[:space:]*,");
-
-// rust-enum-derive-0.4.0: r"^#define[:space:]+([:graph:]+)[:space:]+([:graph:]+)"
-consistent!(
- rust_enum_derive_3,
- r"^#define[:space:]+([:graph:]+)[:space:]+([:graph:]+)"
-);
-
-// rustsourcebundler-0.2.0: r"^\s*pub mod (.+);$"
-consistent!(rustsourcebundler_0, r"^\s*pub mod (.+);$");
-
-// rustsourcebundler-0.2.0: r"^\s*pub mod (.+);$"
-consistent!(rustsourcebundler_1, r"^\s*pub mod (.+);$");
-
-// rustfmt-nightly-0.8.2: r"([^\\](\\\\)*)\\[\n\r][[:space:]]*"
-consistent!(rustfmt_nightly_0, r"([^\\](\\\\)*)\\[\n\r][[:space:]]*");
-
-// rustfmt-nightly-0.8.2: r"\s;"
-consistent!(rustfmt_nightly_1, r"\s;");
-
-// rustache-0.1.0: r"(?s)(.*?)([ \t\r\n]*)(\{\{(\{?\S?\s*?[\w\.\s]*.*?\s*?\}?)\}\})([ \t\r\n]*)"
-consistent!(rustache_0, r"(?s)(.*?)([ \t\r\n]*)(\{\{(\{?\S?\s*?[\w\.\s]*.*?\s*?\}?)\}\})([ \t\r\n]*)");
-
-// rustfilt-0.2.0: r"_ZN[\$\._[:alnum:]]*"
-consistent!(rustfilt_0, r"_ZN[\$\._[:alnum:]]*");
-
-// rustache-lists-0.1.2: r"(?s)(.*?)([ \t\r\n]*)(\{\{(\{?\S?\s*?[\w\.\s]*.*?\s*?\}?)\}\})([ \t\r\n]*)"
-consistent!(rustache_lists_0, r"(?s)(.*?)([ \t\r\n]*)(\{\{(\{?\S?\s*?[\w\.\s]*.*?\s*?\}?)\}\})([ \t\r\n]*)");
-
-// rural-0.7.3: "(.+)=(.+)"
-consistent!(rural_0, "(.+)=(.+)");
-
-// rural-0.7.3: "(.*):(.+)"
-consistent!(rural_1, "(.*):(.+)");
-
-// rural-0.7.3: "(.+):=(.+)"
-consistent!(rural_2, "(.+):=(.+)");
-
-// rural-0.7.3: "(.*)==(.+)"
-consistent!(rural_3, "(.*)==(.+)");
-
-// rusoto_credential-0.11.0: r"^\[([^\]]+)\]$"
-consistent!(rusoto_credential_0, r"^\[([^\]]+)\]$");
-
-// rumblebars-0.3.0: "([:blank:]*)$"
-consistent!(rumblebars_0, "([:blank:]*)$");
-
-// rumblebars-0.3.0: "(\r?\n)[:blank:]*(\\{\\{~?[#!/](?:\\}?[^}])*\\}\\})[:blank:]*(:?\r?\n)?\\z"
-consistent!(rumblebars_1, "(\r?\n)[:blank:]*(\\{\\{~?[#!/](?:\\}?[^}])*\\}\\})[:blank:]*(:?\r?\n)?\\z");
-
-// rumblebars-0.3.0: "(\r?\n[:blank:]*)(\\{\\{~?>(?:\\}?[^}])*\\}\\})[:blank:]*(:?\r?\n)?\\z"
-consistent!(
- rumblebars_2,
- "(\r?\n[:blank:]*)(\\{\\{~?>(?:\\}?[^}])*\\}\\})[:blank:]*(:?\r?\n)?\\z"
-);
-
-// rumblebars-0.3.0: "((?:[:blank:]|\r?\n)*)(\r?\n)[:blank:]*$"
-consistent!(rumblebars_3, "((?:[:blank:]|\r?\n)*)(\r?\n)[:blank:]*$");
-
-// rumblebars-0.3.0: "^([:blank:]*\r?\n)(.*)"
-consistent!(rumblebars_4, "^([:blank:]*\r?\n)(.*)");
-
-// diesel_cli-1.3.1: r"(?P<stamp>[\d-]*)_hello"
-consistent!(diesel_cli_0, r"(?P<stamp>[\d-]*)_hello");
-
-// dishub-0.1.1: r"(\d+)s"
-consistent!(dishub_0, r"(\d+)s");
-
-// spreadsheet_textconv-0.1.0: r"\n"
-consistent!(spreadsheet_textconv_0, r"\n");
-
-// spreadsheet_textconv-0.1.0: r"\r"
-consistent!(spreadsheet_textconv_1, r"\r");
-
-// spreadsheet_textconv-0.1.0: r"\t"
-consistent!(spreadsheet_textconv_2, r"\t");
-
-// split_aud-0.1.0: r"DELAY (-?\d+)ms"
-consistent!(split_aud_0, r"DELAY (-?\d+)ms");
-
-// split_aud-0.1.0: r"Trim\((\d+), ?(\d+)\)"
-consistent!(split_aud_1, r"Trim\((\d+), ?(\d+)\)");
-
-// spotrust-0.0.5: r"spotify:[a-z]+:[a-zA-Z0-9]+"
-consistent!(spotrust_0, r"spotify:[a-z]+:[a-zA-Z0-9]+");
-
-// spaceslugs-0.1.0: r"[^\x00-\x7F]"
-consistent!(spaceslugs_0, r"[^\x00-\x7F]");
-
-// spaceslugs-0.1.0: r"[']+"
-consistent!(spaceslugs_1, r"[']+");
-
-// spaceslugs-0.1.0: r"\W+"
-consistent!(spaceslugs_2, r"\W+");
-
-// spaceslugs-0.1.0: r"[ ]+"
-consistent!(spaceslugs_3, r"[ ]+");
-
-// space_email_api-0.1.1: "PHPSESSID=([0-9a-f]+)"
-consistent!(space_email_api_0, "PHPSESSID=([0-9a-f]+)");
-
-// lorikeet-0.7.0: "[^0-9.,]"
-consistent!(lorikeet_0, "[^0-9.,]");
-
-// claude-0.3.0: r"^(?:\b|(-)?)(\p{Currency_Symbol})?((?:(?:\d{1,3}[\.,])+\d{3})|\d+)(?:[\.,](\d{2}))?\b$"
-consistent!(claude_0, r"^(?:\b|(-)?)(\p{Currency_Symbol})?((?:(?:\d{1,3}[\.,])+\d{3})|\d+)(?:[\.,](\d{2}))?\b$");
-
-// clam-0.1.6: r"<%=\s*(.+?)\s*%>"
-consistent!(clam_0, r"<%=\s*(.+?)\s*%>");
-
-// classifier-0.0.3: r"(\s)"
-consistent!(classifier_0, r"(\s)");
-
-// click-0.3.2: r"(-----BEGIN .*-----\n)((?:(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)*\n)+)(-----END .*-----)"
-consistent!(click_0, r"(-----BEGIN .*-----\n)((?:(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)*\n)+)(-----END .*-----)");
-
-// click-0.3.2: r"-----BEGIN PRIVATE KEY-----"
-consistent!(click_1, r"-----BEGIN PRIVATE KEY-----");
-
-// ultrastar-txt-0.1.2: r"#([A-Z3a-z]*):(.*)"
-consistent!(ultrastar_txt_0, r"#([A-Z3a-z]*):(.*)");
-
-// ultrastar-txt-0.1.2: "^-\\s?(-?[0-9]+)\\s*$"
-consistent!(ultrastar_txt_1, "^-\\s?(-?[0-9]+)\\s*$");
-
-// ultrastar-txt-0.1.2: "^-\\s?(-?[0-9]+)\\s+(-?[0-9]+)"
-consistent!(ultrastar_txt_2, "^-\\s?(-?[0-9]+)\\s+(-?[0-9]+)");
-
-// ultrastar-txt-0.1.2: "^(.)\\s*(-?[0-9]+)\\s+(-?[0-9]+)\\s+(-?[0-9]+)\\s?(.*)"
-consistent!(
- ultrastar_txt_3,
- "^(.)\\s*(-?[0-9]+)\\s+(-?[0-9]+)\\s+(-?[0-9]+)\\s?(.*)"
-);
-
-// ultrastar-txt-0.1.2: "^P\\s?(-?[0-9]+)"
-consistent!(ultrastar_txt_4, "^P\\s?(-?[0-9]+)");
-
-// db-accelerate-2.0.0: r"^template\.add($|\..+$)"
-consistent!(db_accelerate_0, r"^template\.add($|\..+$)");
-
-// db-accelerate-2.0.0: r"^template\.sub($|\..+$)"
-consistent!(db_accelerate_1, r"^template\.sub($|\..+$)");
-
-// sterling-0.3.0: r"(\d+)([cegps])"
-consistent!(sterling_0, r"(\d+)([cegps])");
-
-// stache-0.2.0: r"[^\w]"
-consistent!(stache_0, r"[^\w]");
-
-// strukt-0.1.0: "\"([<>]?)([xcbB\\?hHiIlLqQfdspP]*)\""
-consistent!(strukt_0, "\"([<>]?)([xcbB\\?hHiIlLqQfdspP]*)\"");
-
-// steamid-ng-0.3.1: r"^STEAM_([0-4]):([0-1]):([0-9]{1,10})$"
-consistent!(steamid_ng_0, r"^STEAM_([0-4]):([0-1]):([0-9]{1,10})$");
-
-// steamid-ng-0.3.1: r"^\[([AGMPCgcLTIUai]):([0-4]):([0-9]{1,10})(:([0-9]+))?\]$"
-consistent!(
- steamid_ng_1,
- r"^\[([AGMPCgcLTIUai]):([0-4]):([0-9]{1,10})(:([0-9]+))?\]$"
-);
-
-// strscan-0.1.1: r"^\w+"
-consistent!(strscan_0, r"^\w+");
-
-// strscan-0.1.1: r"^\s+"
-consistent!(strscan_1, r"^\s+");
-
-// strscan-0.1.1: r"^\w+"
-consistent!(strscan_2, r"^\w+");
-
-// strscan-0.1.1: r"^\s+"
-consistent!(strscan_3, r"^\s+");
-
-// strscan-0.1.1: r"^(\w+)\s+"
-consistent!(strscan_4, r"^(\w+)\s+");
-
-// tk-carbon-0.2.0: r"^([a-zA-Z0-9\.-]+)(?:\s+(\d+))$"
-consistent!(tk_carbon_0, r"^([a-zA-Z0-9\.-]+)(?:\s+(\d+))$");
-
-// tk-carbon-0.2.0: r"^([a-zA-Z0-9\.-]+)(?:\s+(\d+))$"
-consistent!(tk_carbon_1, r"^([a-zA-Z0-9\.-]+)(?:\s+(\d+))$");
-
-// evalrs-0.0.10: r"extern\s+crate\s+([a-z0-9_]+)\s*;(\s*//(.+))?"
-consistent!(evalrs_0, r"extern\s+crate\s+([a-z0-9_]+)\s*;(\s*//(.+))?");
-
-// evalrs-0.0.10: r"(?m)^# "
-consistent!(evalrs_1, r"(?m)^# ");
-
-// evalrs-0.0.10: r"(?m)^\s*fn +main *\( *\)"
-consistent!(evalrs_2, r"(?m)^\s*fn +main *\( *\)");
-
-// evalrs-0.0.10: r"(extern\s+crate\s+[a-z0-9_]+\s*;)"
-consistent!(evalrs_3, r"(extern\s+crate\s+[a-z0-9_]+\s*;)");
-
-// gate_build-0.5.0: "(.*)_t([0-9]+)"
-consistent!(gate_build_0, "(.*)_t([0-9]+)");
-
-// rake-0.1.1: r"[^\P{P}-]|\s+-\s+"
-consistent!(rake_0, r"[^\P{P}-]|\s+-\s+");
-
-// rafy-0.2.1: r"^.*(?:(?:youtu\.be/|v/|vi/|u/w/|embed/)|(?:(?:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]*).*"
-consistent!(rafy_0, r"^.*(?:(?:youtu\.be/|v/|vi/|u/w/|embed/)|(?:(?:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]*).*");
-
-// raven-0.2.1: r"^(?P<protocol>.*?)://(?P<public_key>.*?):(?P<secret_key>.*?)@(?P<host>.*?)/(?P<path>.*/)?(?P<project_id>.*)$"
-consistent!(raven_0, r"^(?P<protocol>.*?)://(?P<public_key>.*?):(?P<secret_key>.*?)@(?P<host>.*?)/(?P<path>.*/)?(?P<project_id>.*)$");
-
-// rargs-0.2.0: r"\{[[:space:]]*[^{}]*[[:space:]]*\}"
-consistent!(rargs_0, r"\{[[:space:]]*[^{}]*[[:space:]]*\}");
-
-// rargs-0.2.0: r"^\{[[:space:]]*(?P<name>[[:word:]]*)[[:space:]]*\}$"
-consistent!(rargs_1, r"^\{[[:space:]]*(?P<name>[[:word:]]*)[[:space:]]*\}$");
-
-// rargs-0.2.0: r"^\{[[:space:]]*(?P<num>-?\d+)[[:space:]]*\}$"
-consistent!(rargs_2, r"^\{[[:space:]]*(?P<num>-?\d+)[[:space:]]*\}$");
-
-// rargs-0.2.0: r"^\{(?P<left>-?\d*)?\.\.(?P<right>-?\d*)?(?::(?P<sep>.*))?\}$"
-consistent!(
- rargs_3,
- r"^\{(?P<left>-?\d*)?\.\.(?P<right>-?\d*)?(?::(?P<sep>.*))?\}$"
-);
-
-// rargs-0.2.0: r"(.*?)[[:space:]]+|(.*?)$"
-consistent!(rargs_4, r"(.*?)[[:space:]]+|(.*?)$");
-
-// indradb-lib-0.15.0: r"[a-zA-Z0-9]{8}"
-consistent!(indradb_lib_0, r"[a-zA-Z0-9]{8}");
-
-// fungi-lang-0.1.50: r"::"
-consistent!(fungi_lang_0, r"::");
-
-// nickel-0.10.1: "/hello/(?P<name>[a-zA-Z]+)"
-consistent!(nickel_0, "/hello/(?P<name>[a-zA-Z]+)");
-
-// nickel-0.10.1: "/hello/(?P<name>[a-zA-Z]+)"
-consistent!(nickel_1, "/hello/(?P<name>[a-zA-Z]+)");
-
-// pact_verifier-0.4.0: r"\{(\w+)\}"
-consistent!(pact_verifier_0, r"\{(\w+)\}");
-
-// pact_matching-0.4.1: "application/.*json"
-consistent!(pact_matching_0, "application/.*json");
-
-// pact_matching-0.4.1: "application/json.*"
-consistent!(pact_matching_1, "application/json.*");
-
-// pact_matching-0.4.1: "application/.*xml"
-consistent!(pact_matching_2, "application/.*xml");
-
-// pangu-0.2.0: "([\"'\\(\\[\\{{<\u{201c}])(\\s*)(.+?)(\\s*)([\"'\\)\\]\\}}>\u{201d}])"
-consistent!(
- pangu_0,
- "([\"'\\(\\[\\{{<\u{201c}])(\\s*)(.+?)(\\s*)([\"'\\)\\]\\}}>\u{201d}])"
-);
-
-// pangu-0.2.0: "([\\(\\[\\{{<\u{201c}]+)(\\s*)(.+?)(\\s*)([\\)\\]\\}}>\u{201d}]+)"
-consistent!(
- pangu_1,
- "([\\(\\[\\{{<\u{201c}]+)(\\s*)(.+?)(\\s*)([\\)\\]\\}}>\u{201d}]+)"
-);
-
-// parser-haskell-0.2.0: r"\{-[\s\S]*?-\}"
-consistent!(parser_haskell_0, r"\{-[\s\S]*?-\}");
-
-// parser-haskell-0.2.0: r"(?m);+\s*$"
-consistent!(parser_haskell_1, r"(?m);+\s*$");
-
-// parser-haskell-0.2.0: r"(?m)^#(if|ifn?def|endif|else|include|elif).*"
-consistent!(parser_haskell_2, r"(?m)^#(if|ifn?def|endif|else|include|elif).*");
-
-// parser-haskell-0.2.0: r"'([^'\\]|\\[A-Z]{1,3}|\\.)'"
-consistent!(parser_haskell_3, r"'([^'\\]|\\[A-Z]{1,3}|\\.)'");
-
-// parser-haskell-0.2.0: r"forall\s+(.*?)\."
-consistent!(parser_haskell_4, r"forall\s+(.*?)\.");
-
-// html2md-0.2.1: "\\s{2,}"
-consistent!(html2md_0, "\\s{2,}");
-
-// html2md-0.2.1: "\\n{2,}"
-consistent!(html2md_1, "\\n{2,}");
-
-// html2md-0.2.1: "(?m)(\\S) $"
-consistent!(html2md_2, "(?m)(\\S) $");
-
-// html2md-0.2.1: "(?m)^[-*] "
-consistent!(html2md_3, "(?m)^[-*] ");
-
-// ovpnfile-0.1.2: r"#.*$"
-consistent!(ovpnfile_0, r"#.*$");
-
-// ovpnfile-0.1.2: r"^<(\S+)>"
-consistent!(ovpnfile_1, r"^<(\S+)>");
-
-// ovpnfile-0.1.2: r"^</(\S+)>"
-consistent!(ovpnfile_2, r"^</(\S+)>");
-
-// screenruster-saver-fractal-0.1.1: r"#([:xdigit:]{2})([:xdigit:]{2})([:xdigit:]{2})"
-consistent!(
- screenruster_saver_fractal_0,
- r"#([:xdigit:]{2})([:xdigit:]{2})([:xdigit:]{2})"
-);
-
-// scarlet-0.2.2: r"rgb\((?: *(\d{1,3}),)(?: *(\d{1,3}),)(?: *(\d{1,3}))\)"
-consistent!(
- scarlet_0,
- r"rgb\((?: *(\d{1,3}),)(?: *(\d{1,3}),)(?: *(\d{1,3}))\)"
-);
-
-// cpp_to_rust_generator-0.2.0: r"^([\w:]+)<(.+)>$"
-consistent!(cpp_to_rust_generator_0, r"^([\w:]+)<(.+)>$");
-
-// cpp_to_rust_generator-0.2.0: r"^type-parameter-(\d+)-(\d+)$"
-consistent!(cpp_to_rust_generator_1, r"^type-parameter-(\d+)-(\d+)$");
-
-// cpp_to_rust_generator-0.2.0: r"^([\w~]+)<[^<>]+>$"
-consistent!(cpp_to_rust_generator_2, r"^([\w~]+)<[^<>]+>$");
-
-// cpp_to_rust_generator-0.2.0: r"(signals|Q_SIGNALS)\s*:"
-consistent!(cpp_to_rust_generator_3, r"(signals|Q_SIGNALS)\s*:");
-
-// cpp_to_rust_generator-0.2.0: r"(slots|Q_SLOTS)\s*:"
-consistent!(cpp_to_rust_generator_4, r"(slots|Q_SLOTS)\s*:");
-
-// cpp_to_rust_generator-0.2.0: r"(public|protected|private)\s*:"
-consistent!(cpp_to_rust_generator_5, r"(public|protected|private)\s*:");
-
-// cpp_to_rust-0.5.3: r"^([\w:]+)<(.+)>$"
-consistent!(cpp_to_rust_0, r"^([\w:]+)<(.+)>$");
-
-// cpp_to_rust-0.5.3: r"^type-parameter-(\d+)-(\d+)$"
-consistent!(cpp_to_rust_1, r"^type-parameter-(\d+)-(\d+)$");
-
-// cpp_to_rust-0.5.3: r"^([\w~]+)<[^<>]+>$"
-consistent!(cpp_to_rust_2, r"^([\w~]+)<[^<>]+>$");
-
-// cpp_to_rust-0.5.3: r"(signals|Q_SIGNALS)\s*:"
-consistent!(cpp_to_rust_3, r"(signals|Q_SIGNALS)\s*:");
-
-// cpp_to_rust-0.5.3: r"(slots|Q_SLOTS)\s*:"
-consistent!(cpp_to_rust_4, r"(slots|Q_SLOTS)\s*:");
-
-// cpp_to_rust-0.5.3: r"(public|protected|private)\s*:"
-consistent!(cpp_to_rust_5, r"(public|protected|private)\s*:");
-
-// fritzbox_logs-0.2.0: "(\\d{2}\\.\\d{2}\\.\\d{2}) (\\d{2}:\\d{2}:\\d{2}) (.*)"
-consistent!(
- fritzbox_logs_0,
- "(\\d{2}\\.\\d{2}\\.\\d{2}) (\\d{2}:\\d{2}:\\d{2}) (.*)"
-);
-
-// fractal-matrix-api-3.29.0: r"mxc://(?P<server>[^/]+)/(?P<media>.+)"
-consistent!(fractal_matrix_api_0, r"mxc://(?P<server>[^/]+)/(?P<media>.+)");
-
-// smtp2go-0.1.4: r"^api-[a-zA-Z0-9]{32}$"
-consistent!(smtp2go_0, r"^api-[a-zA-Z0-9]{32}$");
-
-// pusher-0.3.1: r"^[-a-zA-Z0-9_=@,.;]+$"
-consistent!(pusher_0, r"^[-a-zA-Z0-9_=@,.;]+$");
-
-// pusher-0.3.1: r"\A\d+\.\d+\z"
-consistent!(pusher_1, r"\A\d+\.\d+\z");
-
-// bakervm-0.9.0: r"^\.(.+?) +?(.+)$"
-consistent!(bakervm_0, r"^\.(.+?) +?(.+)$");
-
-// bakervm-0.9.0: r"^\.([^\s]+)$"
-consistent!(bakervm_1, r"^\.([^\s]+)$");
-
-// bakervm-0.9.0: r"^include! +([^\s]+)$"
-consistent!(bakervm_2, r"^include! +([^\s]+)$");
-
-// bakervm-0.9.0: r"^@(\d+)$"
-consistent!(bakervm_3, r"^@(\d+)$");
-
-// bakervm-0.9.0: r"^true|false$"
-consistent!(bakervm_4, r"^true|false$");
-
-// bakervm-0.9.0: r"^(-?\d+)?\.[0-9]+$"
-consistent!(bakervm_5, r"^(-?\d+)?\.[0-9]+$");
-
-// bakervm-0.9.0: r"^(-?\d+)?$"
-consistent!(bakervm_6, r"^(-?\d+)?$");
-
-// bakervm-0.9.0: r"^#([0-9abcdefABCDEF]{6})$"
-consistent!(bakervm_7, r"^#([0-9abcdefABCDEF]{6})$");
-
-// bakervm-0.9.0: r"^'(.)'$"
-consistent!(bakervm_8, r"^'(.)'$");
-
-// bakervm-0.9.0: r"^\$vi\((\d+)\)$"
-consistent!(bakervm_9, r"^\$vi\((\d+)\)$");
-
-// bakervm-0.9.0: r"^\$key\((\d+)\)$"
-consistent!(bakervm_10, r"^\$key\((\d+)\)$");
-
-// banana-0.0.2: "(?P<type>[A-Z^']+) (?P<route>[^']+) HTTP/(?P<http>[^']+)"
-consistent!(
- banana_0,
- "(?P<type>[A-Z^']+) (?P<route>[^']+) HTTP/(?P<http>[^']+)"
-);
-
-// serial-key-2.0.0: r"[A-F0-9]{8}"
-consistent!(serial_key_0, r"[A-F0-9]{8}");
-
-// serde-hjson-0.8.1: "[\\\\\"\x00-\x1f\x7f-\u{9f}\u{00ad}\u{0600}-\u{0604}\u{070f}\u{17b4}\u{17b5}\u{200c}-\u{200f}\u{2028}-\u{202f}\u{2060}-\u{206f}\u{feff}\u{fff0}-\u{ffff}]"
-consistent!(serde_hjson_0, "[\\\\\"\x00-\x1f\x7f-\u{9f}\u{00ad}\u{0600}-\u{0604}\u{070f}\u{17b4}\u{17b5}\u{200c}-\u{200f}\u{2028}-\u{202f}\u{2060}-\u{206f}\u{feff}\u{fff0}-\u{ffff}]");
-
-// serde-hjson-0.8.1: "[\x00-\x1f\x7f-\u{9f}\u{00ad}\u{0600}-\u{0604}\u{070f}\u{17b4}\u{17b5}\u{200c}-\u{200f}\u{2028}-\u{202f}\u{2060}-\u{206f}\u{feff}\u{fff0}-\u{ffff}]"
-consistent!(serde_hjson_1, "[\x00-\x1f\x7f-\u{9f}\u{00ad}\u{0600}-\u{0604}\u{070f}\u{17b4}\u{17b5}\u{200c}-\u{200f}\u{2028}-\u{202f}\u{2060}-\u{206f}\u{feff}\u{fff0}-\u{ffff}]");
-
-// serde-hjson-0.8.1: "'''|[\x00-\x09\x0b\x0c\x0e-\x1f\x7f-\u{9f}\u{00ad}\u{0600}-\u{0604}\u{070f}\u{17b4}\u{17b5}\u{200c}-\u{200f}\u{2028}-\u{202f}\u{2060}-\u{206f}\u{feff}\u{fff0}-\u{ffff}]"
-consistent!(serde_hjson_2, "'''|[\x00-\x09\x0b\x0c\x0e-\x1f\x7f-\u{9f}\u{00ad}\u{0600}-\u{0604}\u{070f}\u{17b4}\u{17b5}\u{200c}-\u{200f}\u{2028}-\u{202f}\u{2060}-\u{206f}\u{feff}\u{fff0}-\u{ffff}]");
-
-// serde-odbc-0.1.0: r"/todos/(?P<id>\d+)"
-consistent!(serde_odbc_0, r"/todos/(?P<id>\d+)");
-
-// sentry-0.6.0: r"^(?:_<)?([a-zA-Z0-9_]+?)(?:\.\.|::)"
-consistent!(sentry_0, r"^(?:_<)?([a-zA-Z0-9_]+?)(?:\.\.|::)");
-
-// sentiment-0.1.1: r"[^a-zA-Z0 -]+"
-consistent!(sentiment_0, r"[^a-zA-Z0 -]+");
-
-// sentiment-0.1.1: r" {2,}"
-consistent!(sentiment_1, r" {2,}");
-
-// verilog-0.0.1: r"(?m)//.*"
-consistent!(verilog_0, r"(?m)//.*");
-
-// verex-0.2.2: "(?P<robot>C3PO)"
-consistent!(verex_0, "(?P<robot>C3PO)");
-
-// handlebars-0.32.4: ">|<|\"|&"
-consistent!(handlebars_0, ">|<|\"|&");
-
-// haikunator-0.1.2: r"^\w+-\w+-[0123456789]{4}$"
-consistent!(haikunator_0, r"^\w+-\w+-[0123456789]{4}$");
-
-// haikunator-0.1.2: r"^\w+@\w+@[0123456789]{4}$"
-consistent!(haikunator_1, r"^\w+@\w+@[0123456789]{4}$");
-
-// haikunator-0.1.2: r"^\w+-\w+-[0123456789abcdef]{4}$"
-consistent!(haikunator_2, r"^\w+-\w+-[0123456789abcdef]{4}$");
-
-// haikunator-0.1.2: r"^\w+-\w+-[0123456789忠犬ハチ公]{10}$"
-consistent!(haikunator_3, r"^\w+-\w+-[0123456789忠犬ハチ公]{10}$");
-
-// haikunator-0.1.2: r"^\w+-\w+$"
-consistent!(haikunator_4, r"^\w+-\w+$");
-
-// haikunator-0.1.2: r"^\w+-\w+-[foo]{4}$"
-consistent!(haikunator_5, r"^\w+-\w+-[foo]{4}$");
-
-// haikunator-0.1.2: r"^\w+-\w+-[0123456789忠犬ハチ公]{5}$"
-consistent!(haikunator_6, r"^\w+-\w+-[0123456789忠犬ハチ公]{5}$");
-
-// bobbin-cli-0.8.3: r"(.*)"
-consistent!(bobbin_cli_0, r"(.*)");
-
-// bobbin-cli-0.8.3: r"rustc (.*)"
-consistent!(bobbin_cli_1, r"rustc (.*)");
-
-// bobbin-cli-0.8.3: r"cargo (.*)"
-consistent!(bobbin_cli_2, r"cargo (.*)");
-
-// bobbin-cli-0.8.3: r"xargo (.*)\n"
-consistent!(bobbin_cli_3, r"xargo (.*)\n");
-
-// bobbin-cli-0.8.3: r"Open On-Chip Debugger (.*)"
-consistent!(bobbin_cli_4, r"Open On-Chip Debugger (.*)");
-
-// bobbin-cli-0.8.3: r"arm-none-eabi-gcc \(GNU Tools for ARM Embedded Processors[^\)]*\) (.*)"
-consistent!(
- bobbin_cli_5,
- r"arm-none-eabi-gcc \(GNU Tools for ARM Embedded Processors[^\)]*\) (.*)"
-);
-
-// bobbin-cli-0.8.3: r"(?m).*\nBasic Open Source SAM-BA Application \(BOSSA\) Version (.*)\n"
-consistent!(
- bobbin_cli_6,
- r"(?m).*\nBasic Open Source SAM-BA Application \(BOSSA\) Version (.*)\n"
-);
-
-// bobbin-cli-0.8.3: r"(?m)SEGGER J-Link Commander (.*)\n"
-consistent!(bobbin_cli_7, r"(?m)SEGGER J-Link Commander (.*)\n");
-
-// bobbin-cli-0.8.3: r"(?m)Teensy Loader, Command Line, Version (.*)\n"
-consistent!(bobbin_cli_8, r"(?m)Teensy Loader, Command Line, Version (.*)\n");
-
-// bobbin-cli-0.8.3: r"dfu-util (.*)\n"
-consistent!(bobbin_cli_9, r"dfu-util (.*)\n");
-
-// borsholder-0.9.1: r"^/static/[\w.]+$"
-consistent!(borsholder_0, r"^/static/[\w.]+$");
-
-// borsholder-0.9.1: r"^/timeline/([0-9]+)$"
-consistent!(borsholder_1, r"^/timeline/([0-9]+)$");
-
-// fblog-1.0.1: "\u{001B}\\[[\\d;]*[^\\d;]"
-consistent!(fblog_0, "\u{001B}\\[[\\d;]*[^\\d;]");
-
-// fblog-1.0.1: "\u{001B}\\[[\\d;]*[^\\d;]"
-consistent!(fblog_1, "\u{001B}\\[[\\d;]*[^\\d;]");
-
-// toml-query-0.6.0: r"^\[\d+\]$"
-consistent!(toml_query_0, r"^\[\d+\]$");
-
-// todo-txt-1.1.0: r" (?P<key>[^\s]+):(?P<value>[^\s^/]+)"
-consistent!(todo_txt_0, r" (?P<key>[^\s]+):(?P<value>[^\s^/]+)");
-
-// findr-0.1.5: r"\band\b"
-consistent!(findr_0, r"\band\b");
-
-// findr-0.1.5: r"\bor\b"
-consistent!(findr_1, r"\bor\b");
-
-// findr-0.1.5: r"\bnot\b"
-consistent!(findr_2, r"\bnot\b");
-
-// file-sniffer-3.0.1: r".*?\.(a|la|lo|o|ll|keter|bc|dyn_o|out|d|rlib|crate|min\.js|hi|dyn_hi|S|jsexe|webapp|js\.externs|ibc|toc|aux|fdb_latexmk|fls|egg-info|whl|js_a|js_hi|jld|ji|js_o|so.*|dump-.*|vmb|crx|orig|elmo|elmi|pyc|mod|p_hi|p_o|prof|tix)$"
-consistent!(file_sniffer_0, r".*?\.(a|la|lo|o|ll|keter|bc|dyn_o|out|d|rlib|crate|min\.js|hi|dyn_hi|S|jsexe|webapp|js\.externs|ibc|toc|aux|fdb_latexmk|fls|egg-info|whl|js_a|js_hi|jld|ji|js_o|so.*|dump-.*|vmb|crx|orig|elmo|elmi|pyc|mod|p_hi|p_o|prof|tix)$");
-
-// file-sniffer-3.0.1: r".*?\.(stats|conf|h|cache.*|dat|pc|info)$"
-consistent!(file_sniffer_1, r".*?\.(stats|conf|h|cache.*|dat|pc|info)$");
-
-// file-sniffer-3.0.1: r".*?\.(exe|a|la|o|ll|keter|bc|dyn_o|out|d|rlib|crate|min\.js|hi|dyn_hi|jsexe|webapp|js\.externs|ibc|toc|aux|fdb_latexmk|fls|egg-info|whl|js_a|js_hi|jld|ji|js_o|so.*|dump-.*|vmb|crx|orig|elmo|elmi|pyc|mod|p_hi|p_o|prof|tix)$"
-consistent!(file_sniffer_2, r".*?\.(exe|a|la|o|ll|keter|bc|dyn_o|out|d|rlib|crate|min\.js|hi|dyn_hi|jsexe|webapp|js\.externs|ibc|toc|aux|fdb_latexmk|fls|egg-info|whl|js_a|js_hi|jld|ji|js_o|so.*|dump-.*|vmb|crx|orig|elmo|elmi|pyc|mod|p_hi|p_o|prof|tix)$");
-
-// file-sniffer-3.0.1: r".*?\.(stats|conf|h|cache.*)$"
-consistent!(file_sniffer_3, r".*?\.(stats|conf|h|cache.*)$");
-
-// file-sniffer-3.0.1: r"(\.git|\.pijul|_darcs|\.hg)$"
-consistent!(file_sniffer_4, r"(\.git|\.pijul|_darcs|\.hg)$");
-
-// file_logger-0.1.0: "test"
-consistent!(file_logger_0, "test");
-
-// file_scanner-0.2.0: r"foo"
-consistent!(file_scanner_0, r"foo");
-
-// file_scanner-0.2.0: r"a+b"
-consistent!(file_scanner_1, r"a+b");
-
-// file_scanner-0.2.0: r"a[ab]*b"
-consistent!(file_scanner_2, r"a[ab]*b");
-
-// file_scanner-0.2.0: r"\s+"
-consistent!(file_scanner_3, r"\s+");
-
-// file_scanner-0.2.0: r"\s+"
-consistent!(file_scanner_4, r"\s+");
-
-// cellsplit-0.2.1: r"^\s*([^\s]+) %cellsplit<\d+>$"
-consistent!(cellsplit_0, r"^\s*([^\s]+) %cellsplit<\d+>$");
-
-// cellsplit-0.2.1: r"^\s*([^\s]+) %cellsplit<\d+>$"
-consistent!(cellsplit_1, r"^\s*([^\s]+) %cellsplit<\d+>$");
-
-// aterm-0.20.0: r"^[+\-]?[0-9]+"
-consistent!(aterm_0, r"^[+\-]?[0-9]+");
-
-// aterm-0.20.0: r"^[+\-]?[0-9]+\.[0-9]*([eE][+\-]?[0-9]+)?"
-consistent!(aterm_1, r"^[+\-]?[0-9]+\.[0-9]*([eE][+\-]?[0-9]+)?");
-
-// atarashii_imap-0.3.0: r"^[*] OK"
-consistent!(atarashii_imap_0, r"^[*] OK");
-
-// atarashii_imap-0.3.0: r"FLAGS\s\((.+)\)"
-consistent!(atarashii_imap_1, r"FLAGS\s\((.+)\)");
-
-// atarashii_imap-0.3.0: r"\[PERMANENTFLAGS\s\((.+)\)\]"
-consistent!(atarashii_imap_2, r"\[PERMANENTFLAGS\s\((.+)\)\]");
-
-// atarashii_imap-0.3.0: r"\[UIDVALIDITY\s(\d+)\]"
-consistent!(atarashii_imap_3, r"\[UIDVALIDITY\s(\d+)\]");
-
-// atarashii_imap-0.3.0: r"(\d+)\sEXISTS"
-consistent!(atarashii_imap_4, r"(\d+)\sEXISTS");
-
-// atarashii_imap-0.3.0: r"(\d+)\sRECENT"
-consistent!(atarashii_imap_5, r"(\d+)\sRECENT");
-
-// atarashii_imap-0.3.0: r"\[UNSEEN\s(\d+)\]"
-consistent!(atarashii_imap_6, r"\[UNSEEN\s(\d+)\]");
-
-// atarashii_imap-0.3.0: r"\[UIDNEXT\s(\d+)\]"
-consistent!(atarashii_imap_7, r"\[UIDNEXT\s(\d+)\]");
-
-// editorconfig-1.0.0: r"\\(\{|\})"
-consistent!(editorconfig_0, r"\\(\{|\})");
-
-// editorconfig-1.0.0: r"(^|[^\\])\\\|"
-consistent!(editorconfig_1, r"(^|[^\\])\\\|");
-
-// editorconfig-1.0.0: r"\[([^\]]*)$"
-consistent!(editorconfig_2, r"\[([^\]]*)$");
-
-// editorconfig-1.0.0: r"\[(.*/.*)\]"
-consistent!(editorconfig_3, r"\[(.*/.*)\]");
-
-// editorconfig-1.0.0: r"\{(-?\d+\\\.\\\.-?\d+)\}"
-consistent!(editorconfig_4, r"\{(-?\d+\\\.\\\.-?\d+)\}");
-
-// editorconfig-1.0.0: r"\{([^,]+)\}"
-consistent!(editorconfig_5, r"\{([^,]+)\}");
-
-// editorconfig-1.0.0: r"\{(([^\}].*)?(,|\|)(.*[^\\])?)\}"
-consistent!(editorconfig_6, r"\{(([^\}].*)?(,|\|)(.*[^\\])?)\}");
-
-// editorconfig-1.0.0: r"^/"
-consistent!(editorconfig_7, r"^/");
-
-// editorconfig-1.0.0: r"(^|[^\\])(\{|\})"
-consistent!(editorconfig_8, r"(^|[^\\])(\{|\})");
-
-// edmunge-1.0.0: "^#!.*\n"
-consistent!(edmunge_0, "^#!.*\n");
-
-// unicode_names2_macros-0.2.0: r"\\N\{(.*?)(?:\}|$)"
-consistent!(unicode_names2_macros_0, r"\\N\{(.*?)(?:\}|$)");
-
-// unidiff-0.2.1: r"^--- (?P<filename>[^\t\n]+)(?:\t(?P<timestamp>[^\n]+))?"
-consistent!(
- unidiff_0,
- r"^--- (?P<filename>[^\t\n]+)(?:\t(?P<timestamp>[^\n]+))?"
-);
-
-// unidiff-0.2.1: r"^\+\+\+ (?P<filename>[^\t\n]+)(?:\t(?P<timestamp>[^\n]+))?"
-consistent!(
- unidiff_1,
- r"^\+\+\+ (?P<filename>[^\t\n]+)(?:\t(?P<timestamp>[^\n]+))?"
-);
-
-// unidiff-0.2.1: r"^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@[ ]?(.*)"
-consistent!(unidiff_2, r"^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@[ ]?(.*)");
-
-// unidiff-0.2.1: r"^(?P<line_type>[- \n\+\\]?)(?P<value>.*)"
-consistent!(unidiff_3, r"^(?P<line_type>[- \n\+\\]?)(?P<value>.*)");
-
-// slippy-map-tiles-0.13.1: "/?(?P<zoom>[0-9]?[0-9])/(?P<x>[0-9]{1,10})/(?P<y>[0-9]{1,10})(\\.[a-zA-Z]{3,4})?$"
-consistent!(slippy_map_tiles_0, "/?(?P<zoom>[0-9]?[0-9])/(?P<x>[0-9]{1,10})/(?P<y>[0-9]{1,10})(\\.[a-zA-Z]{3,4})?$");
-
-// slippy-map-tiles-0.13.1: r"^(?P<minlon>-?[0-9]{1,3}(\.[0-9]{1,10})?) (?P<minlat>-?[0-9]{1,3}(\.[0-9]{1,10})?) (?P<maxlon>-?[0-9]{1,3}(\.[0-9]{1,10})?) (?P<maxlat>-?[0-9]{1,3}(\.[0-9]{1,10})?)$"
-consistent!(slippy_map_tiles_1, r"^(?P<minlon>-?[0-9]{1,3}(\.[0-9]{1,10})?) (?P<minlat>-?[0-9]{1,3}(\.[0-9]{1,10})?) (?P<maxlon>-?[0-9]{1,3}(\.[0-9]{1,10})?) (?P<maxlat>-?[0-9]{1,3}(\.[0-9]{1,10})?)$");
-
-// slippy-map-tiles-0.13.1: r"^(?P<minlon>-?[0-9]{1,3}(\.[0-9]{1,10})?),(?P<minlat>-?[0-9]{1,3}(\.[0-9]{1,10})?),(?P<maxlon>-?[0-9]{1,3}(\.[0-9]{1,10})?),(?P<maxlat>-?[0-9]{1,3}(\.[0-9]{1,10})?)$"
-consistent!(slippy_map_tiles_2, r"^(?P<minlon>-?[0-9]{1,3}(\.[0-9]{1,10})?),(?P<minlat>-?[0-9]{1,3}(\.[0-9]{1,10})?),(?P<maxlon>-?[0-9]{1,3}(\.[0-9]{1,10})?),(?P<maxlat>-?[0-9]{1,3}(\.[0-9]{1,10})?)$");
-
-// sonos-0.1.2: r"^https?://(.+?):1400/xml"
-consistent!(sonos_0, r"^https?://(.+?):1400/xml");
-
-// validator_derive-0.7.0: r"^[a-z]{2}$"
-consistent!(validator_derive_0, r"^[a-z]{2}$");
-
-// validator_derive-0.7.0: r"[a-z]{2}"
-consistent!(validator_derive_1, r"[a-z]{2}");
-
-// validator_derive-0.7.0: r"[a-z]{2}"
-consistent!(validator_derive_2, r"[a-z]{2}");
-
-// nginx-config-0.8.0: r"one of \d+ options"
-consistent!(nginx_config_0, r"one of \d+ options");
-
-// waltz-0.4.0: r"[\s,]"
-consistent!(waltz_0, r"[\s,]");
-
-// warheadhateus-0.2.1: r"^aws_access_key_id = (.*)"
-consistent!(warheadhateus_0, r"^aws_access_key_id = (.*)");
-
-// warheadhateus-0.2.1: r"^aws_secret_access_key = (.*)"
-consistent!(warheadhateus_1, r"^aws_secret_access_key = (.*)");
-
-// warheadhateus-0.2.1: r"^aws_access_key_id = (.*)"
-consistent!(warheadhateus_2, r"^aws_access_key_id = (.*)");
-
-// warheadhateus-0.2.1: r"^aws_secret_access_key = (.*)"
-consistent!(warheadhateus_3, r"^aws_secret_access_key = (.*)");
-
-// jieba-rs-0.2.2: r"([\u{4E00}-\u{9FD5}a-zA-Z0-9+#&\._%]+)"
-consistent!(jieba_rs_0, r"([\u{4E00}-\u{9FD5}a-zA-Z0-9+#&\._%]+)");
-
-// jieba-rs-0.2.2: r"(\r\n|\s)"
-consistent!(jieba_rs_1, r"(\r\n|\s)");
-
-// jieba-rs-0.2.2: "([\u{4E00}-\u{9FD5}]+)"
-consistent!(jieba_rs_2, "([\u{4E00}-\u{9FD5}]+)");
-
-// jieba-rs-0.2.2: r"[^a-zA-Z0-9+#\n]"
-consistent!(jieba_rs_3, r"[^a-zA-Z0-9+#\n]");
-
-// jieba-rs-0.2.2: r"([\u{4E00}-\u{9FD5}]+)"
-consistent!(jieba_rs_4, r"([\u{4E00}-\u{9FD5}]+)");
-
-// jieba-rs-0.2.2: r"([a-zA-Z0-9]+(?:.\d+)?%?)"
-consistent!(jieba_rs_5, r"([a-zA-Z0-9]+(?:.\d+)?%?)");
-
-// lalrpop-0.15.2: r"Span\([0-9 ,]*\)"
-consistent!(lalrpop_0, r"Span\([0-9 ,]*\)");
-
-// lalrpop-snap-0.15.2: r"Span\([0-9 ,]*\)"
-consistent!(lalrpop_snap_0, r"Span\([0-9 ,]*\)");
-
-// nlp-tokenize-0.1.0: r"[\S]+"
-consistent!(nlp_tokenize_0, r"[\S]+");
-
-// kbgpg-0.1.2: "[[:xdigit:]][70]"
-consistent!(kbgpg_0, "[[:xdigit:]][70]");
-
-// cdbd-0.1.1: r"^((?P<address>.*):)?(?P<port>\d+)$"
-consistent!(cdbd_0, r"^((?P<address>.*):)?(?P<port>\d+)$");
-
-// mbutiles-0.1.1: r"[\w\s=+-/]+\((\{(.|\n)*\})\);?"
-consistent!(mbutiles_0, r"[\w\s=+-/]+\((\{(.|\n)*\})\);?");
-
-// extrahop-0.2.5: r"^-\d+(?:ms|s|m|h|d|w|y)?$"
-consistent!(extrahop_0, r"^-\d+(?:ms|s|m|h|d|w|y)?$");
-
-// pippin-0.1.0: "^((?:.*)-)?ss(0|[1-9][0-9]*)\\.pip$"
-consistent!(pippin_0, "^((?:.*)-)?ss(0|[1-9][0-9]*)\\.pip$");
-
-// pippin-0.1.0: "^((?:.*)-)?ss(0|[1-9][0-9]*)-cl(0|[1-9][0-9]*)\\.piplog$"
-consistent!(
- pippin_1,
- "^((?:.*)-)?ss(0|[1-9][0-9]*)-cl(0|[1-9][0-9]*)\\.piplog$"
-);
-
-// pippin-0.1.0: "^((?:.*)-)?ss(0|[1-9][0-9]*)\\.pip$"
-consistent!(pippin_2, "^((?:.*)-)?ss(0|[1-9][0-9]*)\\.pip$");
-
-// pippin-0.1.0: "^((?:.*)-)?ss(0|[1-9][0-9]*)-cl(0|[1-9][0-9]*)\\.piplog$"
-consistent!(
- pippin_3,
- "^((?:.*)-)?ss(0|[1-9][0-9]*)-cl(0|[1-9][0-9]*)\\.piplog$"
-);
-
-// pippin-0.1.0: "^.*pn(0|[1-9][0-9]*)(-ss(0|[1-9][0-9]*)(\\.pip|-cl(0|[1-9][0-9]*)\\.piplog))?$"
-consistent!(pippin_4, "^.*pn(0|[1-9][0-9]*)(-ss(0|[1-9][0-9]*)(\\.pip|-cl(0|[1-9][0-9]*)\\.piplog))?$");
-
-// pippin-0.1.0: "^(.*)-ss(?:0|[1-9][0-9]*)(?:\\.pip|-cl(?:0|[1-9][0-9]*)\\.piplog)$"
-consistent!(
- pippin_5,
- "^(.*)-ss(?:0|[1-9][0-9]*)(?:\\.pip|-cl(?:0|[1-9][0-9]*)\\.piplog)$"
-);
-
-// pinyin-0.3.0: r"(?i)[āáǎàēéěèōóǒòīíǐìūúǔùüǘǚǜńň]"
-consistent!(
- pinyin_0,
- r"(?i)[āáǎàēéěèōóǒòīíǐìūúǔùüǘǚǜńň]"
-);
-
-// pinyin-0.3.0: r"([aeoiuvnm])([0-4])$"
-consistent!(pinyin_1, r"([aeoiuvnm])([0-4])$");
-
-// duration-parser-0.2.0: r"(?P<value>\d+)(?P<units>[a-z])"
-consistent!(duration_parser_0, r"(?P<value>\d+)(?P<units>[a-z])");
-
-// dutree-0.2.7: r"^\d+\D?$"
-consistent!(dutree_0, r"^\d+\D?$");
-
-// djangohashers-0.3.0: r"^[A-Za-z0-9]*$"
-consistent!(djangohashers_0, r"^[A-Za-z0-9]*$");
-
-// rtag-0.3.5: r"^[A-Z][A-Z0-9]{2,}$"
-consistent!(rtag_0, r"^[A-Z][A-Z0-9]{2,}$");
-
-// rtag-0.3.5: r"^http://www\.emusic\.com"
-consistent!(rtag_1, r"^http://www\.emusic\.com");
-
-// rtag-0.3.5: r"^[A-Z][A-Z0-9]{2,}"
-consistent!(rtag_2, r"^[A-Z][A-Z0-9]{2,}");
-
-// rtag-0.3.5: r"(^[\x{0}|\x{feff}|\x{fffe}]*|[\x{0}|\x{feff}|\x{fffe}]*$)"
-consistent!(
- rtag_3,
- r"(^[\x{0}|\x{feff}|\x{fffe}]*|[\x{0}|\x{feff}|\x{fffe}]*$)"
-);
-
-// rtow-0.1.0: r"(\d+)[xX](\d+)"
-consistent!(rtow_0, r"(\d+)[xX](\d+)");
-
-// pleingres-sql-plugin-0.1.0: r"\$([a-zA-Z0-9_]+)"
-consistent!(pleingres_sql_plugin_0, r"\$([a-zA-Z0-9_]+)");
-
-// dono-2.0.0: "[\\n]+"
-consistent!(dono_0, "[\\n]+");
-
-// dono-2.0.0: "(?m)^\\n"
-consistent!(dono_1, "(?m)^\\n");
-
-// dono-2.0.0: "(?m)^\\n"
-consistent!(dono_2, "(?m)^\\n");
-
-// ssb-common-0.3.0: r"^[0-9A-Za-z\+/]{43}=\.ed25519$"
-consistent!(ssb_common_0, r"^[0-9A-Za-z\+/]{43}=\.ed25519$");
-
-// ssb-common-0.3.0: r"^[0-9A-Za-z\+/]{86}==\.ed25519$"
-consistent!(ssb_common_1, r"^[0-9A-Za-z\+/]{86}==\.ed25519$");
-
-// ssb-common-0.3.0: r"^[0-9A-Za-z\+/]{43}=\.sha256$"
-consistent!(ssb_common_2, r"^[0-9A-Za-z\+/]{43}=\.sha256$");
-
-// mozversion-0.1.3: r"^(?P<major>\d+)\.(?P<minor>\d+)(?:\.(?P<patch>\d+))?(?:(?P<pre0>[a-z]+)(?P<pre1>\d*))?$"
-consistent!(mozversion_0, r"^(?P<major>\d+)\.(?P<minor>\d+)(?:\.(?P<patch>\d+))?(?:(?P<pre0>[a-z]+)(?P<pre1>\d*))?$");
-
-// monger-0.5.6: r"^(\d+)\.(\d+)$"
-consistent!(monger_0, r"^(\d+)\.(\d+)$");
-
-// mongo_rub-0.0.2: r"^[rv]2\.6"
-consistent!(mongo_rub_0, r"^[rv]2\.6");
-
-// flow-0.3.5: "body value"
-consistent!(flow_0, "body value");
-
-// flow-0.3.5: "start marker"
-consistent!(flow_1, "start marker");
-
-// flow-0.3.5: "end marker"
-consistent!(flow_2, "end marker");
-
-// flow-0.3.5: "body value"
-consistent!(flow_3, "body value");
-
-// vobsub-0.2.3: "^([A-Za-z/ ]+): (.*)"
-consistent!(vobsub_0, "^([A-Za-z/ ]+): (.*)");
-
-// voidmap-1.1.2: r"#([^\s=]+)*"
-consistent!(voidmap_0, r"#([^\s=]+)*");
-
-// voidmap-1.1.2: r"#(\S+)*"
-consistent!(voidmap_1, r"#(\S+)*");
-
-// voidmap-1.1.2: r"#prio=(\d+)"
-consistent!(voidmap_2, r"#prio=(\d+)");
-
-// voidmap-1.1.2: r"\[(\S+)\]"
-consistent!(voidmap_3, r"\[(\S+)\]");
-
-// voidmap-1.1.2: r"#limit=(\d+)"
-consistent!(voidmap_4, r"#limit=(\d+)");
-
-// voidmap-1.1.2: r"#tagged=(\S+)"
-consistent!(voidmap_5, r"#tagged=(\S+)");
-
-// voidmap-1.1.2: r"#rev\b"
-consistent!(voidmap_6, r"#rev\b");
-
-// voidmap-1.1.2: r"#done\b"
-consistent!(voidmap_7, r"#done\b");
-
-// voidmap-1.1.2: r"#open\b"
-consistent!(voidmap_8, r"#open\b");
-
-// voidmap-1.1.2: r"#since=(\S+)"
-consistent!(voidmap_9, r"#since=(\S+)");
-
-// voidmap-1.1.2: r"#until=(\S+)"
-consistent!(voidmap_10, r"#until=(\S+)");
-
-// voidmap-1.1.2: r"#plot=(\S+)"
-consistent!(voidmap_11, r"#plot=(\S+)");
-
-// voidmap-1.1.2: r"#n=(\d+)"
-consistent!(voidmap_12, r"#n=(\d+)");
-
-// voidmap-1.1.2: r"(\S+)"
-consistent!(voidmap_13, r"(\S+)");
-
-// voidmap-1.1.2: r"(?P<y>\d+)y"
-consistent!(voidmap_14, r"(?P<y>\d+)y");
-
-// voidmap-1.1.2: r"(?P<m>\d+)m"
-consistent!(voidmap_15, r"(?P<m>\d+)m");
-
-// voidmap-1.1.2: r"(?P<w>\d+)w"
-consistent!(voidmap_16, r"(?P<w>\d+)w");
-
-// voidmap-1.1.2: r"(?P<d>\d+)d"
-consistent!(voidmap_17, r"(?P<d>\d+)d");
-
-// voidmap-1.1.2: r"(?P<h>\d+)h"
-consistent!(voidmap_18, r"(?P<h>\d+)h");
-
-// voidmap-1.1.2: r"C-(.)"
-consistent!(voidmap_19, r"C-(.)");
-
-// qt_generator-0.2.0: r"^\.\./qt[^/]+/"
-consistent!(qt_generator_0, r"^\.\./qt[^/]+/");
-
-// qt_generator-0.2.0: "(href|src)=\"([^\"]*)\""
-consistent!(qt_generator_1, "(href|src)=\"([^\"]*)\"");
-
-// kryptos-0.6.1: r"[01]{5}"
-consistent!(kryptos_0, r"[01]{5}");
-
-// cifar_10_loader-0.2.0: "data_batch_[1-5].bin"
-consistent!(cifar_10_loader_0, "data_batch_[1-5].bin");
-
-// cifar_10_loader-0.2.0: "test_batch.bin"
-consistent!(cifar_10_loader_1, "test_batch.bin");
-
-// circadian-0.6.0: r"^\d+.\d+s$"
-consistent!(circadian_0, r"^\d+.\d+s$");
-
-// circadian-0.6.0: r"^\d+:\d+$"
-consistent!(circadian_1, r"^\d+:\d+$");
-
-// circadian-0.6.0: r"^\d+:\d+m$"
-consistent!(circadian_2, r"^\d+:\d+m$");
-
-// cicada-0.8.1: r"!!"
-consistent!(cicada_0, r"!!");
-
-// cicada-0.8.1: r"^([^`]*)`([^`]+)`(.*)$"
-consistent!(cicada_1, r"^([^`]*)`([^`]+)`(.*)$");
-
-// cicada-0.8.1: r"\*+"
-consistent!(cicada_2, r"\*+");
-
-// cicada-0.8.1: r"([^\$]*)\$\{?([A-Za-z0-9\?\$_]+)\}?(.*)"
-consistent!(cicada_3, r"([^\$]*)\$\{?([A-Za-z0-9\?\$_]+)\}?(.*)");
-
-// cicada-0.8.1: r"^ *alias +([a-zA-Z0-9_\.-]+)=(.*)$"
-consistent!(cicada_4, r"^ *alias +([a-zA-Z0-9_\.-]+)=(.*)$");
-
-// vterm-sys-0.1.0: r"hi"
-consistent!(vterm_sys_0, r"hi");
-
-// skim-0.5.0: r".*?\t"
-consistent!(skim_0, r".*?\t");
-
-// skim-0.5.0: r".*?[\t ]"
-consistent!(skim_1, r".*?[\t ]");
-
-// skim-0.5.0: r"(\{-?[0-9.,q]*?})"
-consistent!(skim_2, r"(\{-?[0-9.,q]*?})");
-
-// skim-0.5.0: r"[ \t\n]+"
-consistent!(skim_3, r"[ \t\n]+");
-
-// skim-0.5.0: r"[ \t\n]+"
-consistent!(skim_4, r"[ \t\n]+");
-
-// skim-0.5.0: r"([^ |]+( +\| +[^ |]*)+)|( +)"
-consistent!(skim_5, r"([^ |]+( +\| +[^ |]*)+)|( +)");
-
-// skim-0.5.0: r" +\| +"
-consistent!(skim_6, r" +\| +");
-
-// skim-0.5.0: r"^(?P<left>-?\d+)?(?P<sep>\.\.)?(?P<right>-?\d+)?$"
-consistent!(skim_7, r"^(?P<left>-?\d+)?(?P<sep>\.\.)?(?P<right>-?\d+)?$");
-
-// skim-0.5.0: ","
-consistent!(skim_8, ",");
-
-// skim-0.5.0: ".*?,"
-consistent!(skim_9, ".*?,");
-
-// skim-0.5.0: ".*?,"
-consistent!(skim_10, ".*?,");
-
-// skim-0.5.0: ","
-consistent!(skim_11, ",");
-
-// skim-0.5.0: r"\x1B\[(?:([0-9]+;[0-9]+[Hf])|([0-9]+[ABCD])|(s|u|2J|K)|([0-9;]*m)|(=[0-9]+[hI]))"
-consistent!(skim_12, r"\x1B\[(?:([0-9]+;[0-9]+[Hf])|([0-9]+[ABCD])|(s|u|2J|K)|([0-9;]*m)|(=[0-9]+[hI]))");
-
-// egg-mode-text-1.14.7: r"[-_./]\z"
-consistent!(egg_mode_text_0, r"[-_./]\z");
-
-// java-properties-1.1.1: "^[ \t\r\n\x0c]*[#!]"
-consistent!(java_properties_0, "^[ \t\r\n\x0c]*[#!]");
-
-// java-properties-1.1.1: r"^[ \t\x0c]*[#!][^\r\n]*$"
-consistent!(java_properties_1, r"^[ \t\x0c]*[#!][^\r\n]*$");
-
-// java-properties-1.1.1: r"^([ \t\x0c]*[:=][ \t\x0c]*|[ \t\x0c]+)$"
-consistent!(java_properties_2, r"^([ \t\x0c]*[:=][ \t\x0c]*|[ \t\x0c]+)$");
-
-// ipaddress-0.1.2: r":.+\."
-consistent!(ipaddress_0, r":.+\.");
-
-// ipaddress-0.1.2: r"\."
-consistent!(ipaddress_1, r"\.");
-
-// ipaddress-0.1.2: r":"
-consistent!(ipaddress_2, r":");
-
-// iptables-0.2.2: r"v(\d+)\.(\d+)\.(\d+)"
-consistent!(iptables_0, r"v(\d+)\.(\d+)\.(\d+)");
-
-// rsure-0.8.1: r"^([^-]+)-(.*)\.dat\.gz$"
-consistent!(rsure_0, r"^([^-]+)-(.*)\.dat\.gz$");
-
-// rs-jsonpath-0.1.0: "^(.*?)(<=|<|==|>=|>)(.*?)$"
-consistent!(rs_jsonpath_0, "^(.*?)(<=|<|==|>=|>)(.*?)$");
-
-// oatie-0.3.0: r"(\n|^)(\w+):([\n\w\W]+?)(\n(?:\w)|(\n\]))"
-consistent!(oatie_0, r"(\n|^)(\w+):([\n\w\W]+?)(\n(?:\w)|(\n\]))");
-
-// weld-0.2.0: "#.*$"
-consistent!(weld_0, "#.*$");
-
-// weld-0.2.0: r"^[A-Za-z$_][A-Za-z0-9$_]*$"
-consistent!(weld_1, r"^[A-Za-z$_][A-Za-z0-9$_]*$");
-
-// weld-0.2.0: r"^[0-9]+[cC]$"
-consistent!(weld_2, r"^[0-9]+[cC]$");
-
-// weld-0.2.0: r"^0b[0-1]+[cC]$"
-consistent!(weld_3, r"^0b[0-1]+[cC]$");
-
-// weld-0.2.0: r"^0x[0-9a-fA-F]+[cC]$"
-consistent!(weld_4, r"^0x[0-9a-fA-F]+[cC]$");
-
-// weld-0.2.0: r"^[0-9]+$"
-consistent!(weld_5, r"^[0-9]+$");
-
-// weld-0.2.0: r"^0b[0-1]+$"
-consistent!(weld_6, r"^0b[0-1]+$");
-
-// weld-0.2.0: r"^0x[0-9a-fA-F]+$"
-consistent!(weld_7, r"^0x[0-9a-fA-F]+$");
-
-// weld-0.2.0: r"^[0-9]+[lL]$"
-consistent!(weld_8, r"^[0-9]+[lL]$");
-
-// weld-0.2.0: r"^0b[0-1]+[lL]$"
-consistent!(weld_9, r"^0b[0-1]+[lL]$");
-
-// weld-0.2.0: r"^0x[0-9a-fA-F]+[lL]$"
-consistent!(weld_10, r"^0x[0-9a-fA-F]+[lL]$");
-
-// webgl_generator-0.1.0: "([(, ])enum\\b"
-consistent!(webgl_generator_0, "([(, ])enum\\b");
-
-// webgl_generator-0.1.0: "\\bAcquireResourcesCallback\\b"
-consistent!(webgl_generator_1, "\\bAcquireResourcesCallback\\b");
-
-// weave-0.2.0: r"^(\d+)(,(\d+))?([acd]).*$"
-consistent!(weave_0, r"^(\d+)(,(\d+))?([acd]).*$");
-
-// wemo-0.0.12: r"<BinaryState>(\d)(\|-?\d+)*</BinaryState>"
-consistent!(wemo_0, r"<BinaryState>(\d)(\|-?\d+)*</BinaryState>");
-
-// webscale-0.9.4: r"(http[s]?://[^\s]+)"
-consistent!(webscale_0, r"(http[s]?://[^\s]+)");
-
-// svgrep-1.1.0: r"^\d+.*$"
-consistent!(svgrep_0, r"^\d+.*$");
-
-// ignore-0.4.2: r"^[\pL\pN]+$"
-consistent!(ignore_0, r"^[\pL\pN]+$");
-
-// ommui_string_patterns-0.1.2: r"^([A-Za-z][0-9A-Za-z_]*)?$"
-consistent!(ommui_string_patterns_0, r"^([A-Za-z][0-9A-Za-z_]*)?$");
-
-// ommui_string_patterns-0.1.2: r"^(\S+(?:.*\S)?)?$"
-consistent!(ommui_string_patterns_1, r"^(\S+(?:.*\S)?)?$");
-
-// opcua-types-0.3.0: "^(?P<min>[0-9]{1,10})(:(?P<max>[0-9]{1,10}))?$"
-consistent!(opcua_types_0, "^(?P<min>[0-9]{1,10})(:(?P<max>[0-9]{1,10}))?$");
-
-// opcua-types-0.3.0: r"^(ns=(?P<ns>[0-9]+);)?(?P<t>[isgb])=(?P<v>.+)$"
-consistent!(opcua_types_1, r"^(ns=(?P<ns>[0-9]+);)?(?P<t>[isgb])=(?P<v>.+)$");
-
-// open_read_later-1.1.1: r"^(.+?)\s*:\s*(.+)$"
-consistent!(open_read_later_0, r"^(.+?)\s*:\s*(.+)$");
-
-// youtube-downloader-0.1.0: r"^.*(?:(?:youtu\.be/|v/|vi/|u/w/|embed/)|(?:(?:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]*).*"
-consistent!(youtube_downloader_0, r"^.*(?:(?:youtu\.be/|v/|vi/|u/w/|embed/)|(?:(?:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]*).*");
-
-// yobot-0.1.1: "."
-consistent!(yobot_0, ".");
-
-// yobot-0.1.1: r"."
-consistent!(yobot_1, r".");
-
-// yobot-0.1.1: r".+"
-consistent!(yobot_2, r".+");
-
-// yobot-0.1.1: r"."
-consistent!(yobot_3, r".");
-
-// ubiquity-0.1.5: r"foo"
-consistent!(ubiquity_0, r"foo");
-
-// ubiquity-0.1.5: r"/target/"
-consistent!(ubiquity_1, r"/target/");
-
-// ubiquity-0.1.5: r".DS_Store"
-consistent!(ubiquity_2, r".DS_Store");
-
-// qasm-1.0.0: r"//.*"
-consistent!(qasm_0, r"//.*");
-
-// drill-0.3.5: r"\{\{ *([a-z\._]+) *\}\}"
-consistent!(drill_0, r"\{\{ *([a-z\._]+) *\}\}");
-
-// queryst-2.0.0: r"^([^\]\[]+)"
-consistent!(queryst_0, r"^([^\]\[]+)");
-
-// queryst-2.0.0: r"(\[[^\]\[]*\])"
-consistent!(queryst_1, r"(\[[^\]\[]*\])");
-
-// qui-vive-0.1.0: r"^/(\w+)$"
-consistent!(qui_vive_0, r"^/(\w+)$");
-
-// qui-vive-0.1.0: r"^/key$"
-consistent!(qui_vive_1, r"^/key$");
-
-// qui-vive-0.1.0: r"^/key/(\w+)$"
-consistent!(qui_vive_2, r"^/key/(\w+)$");
-
-// qui-vive-0.1.0: r"^/url$"
-consistent!(qui_vive_3, r"^/url$");
-
-// qui-vive-0.1.0: r"^/url/(\w+)$"
-consistent!(qui_vive_4, r"^/url/(\w+)$");
-
-// qui-vive-0.1.0: r"^/inv$"
-consistent!(qui_vive_5, r"^/inv$");
-
-// qui-vive-0.1.0: r"^/inv/(\w+)$"
-consistent!(qui_vive_6, r"^/inv/(\w+)$");
-
-// subdiff-0.1.0: r"\b"
-// consistent!(subdiff_0, r"\b");
-
-// substudy-0.4.5: r"^(\d+)/(\d+)$"
-consistent!(substudy_0, r"^(\d+)/(\d+)$");
-
-// substudy-0.4.5: r"\s+"
-consistent!(substudy_1, r"\s+");
-
-// substudy-0.4.5: r"<[a-z/][^>]*>"
-consistent!(substudy_2, r"<[a-z/][^>]*>");
-
-// substudy-0.4.5: r"(\([^)]*\)|♪[^♪]*♪|[A-Z]{2,} ?:)"
-consistent!(substudy_3, r"(\([^)]*\)|♪[^♪]*♪|[A-Z]{2,} ?:)");
-
-// substudy-0.4.5: r"\s+"
-consistent!(substudy_4, r"\s+");
-
-// isbnid-0.1.3: r"^(\d(-| )?){9}(x|X|\d|(\d(-| )?){3}\d)$"
-consistent!(isbnid_0, r"^(\d(-| )?){9}(x|X|\d|(\d(-| )?){3}\d)$");
-
-// isbnid-0.1.3: r"[^0-9X]"
-consistent!(isbnid_1, r"[^0-9X]");
-
-// ispc-0.3.5: r"Intel\(r\) SPMD Program Compiler \(ispc\), (\d+\.\d+\.\d+)"
-consistent!(
- ispc_0,
- r"Intel\(r\) SPMD Program Compiler \(ispc\), (\d+\.\d+\.\d+)"
-);
diff --git a/vendor/regex/tests/crazy.rs b/vendor/regex/tests/crazy.rs
deleted file mode 100644
index 293ac1ae7..000000000
--- a/vendor/regex/tests/crazy.rs
+++ /dev/null
@@ -1,459 +0,0 @@
-mat!(ascii_literal, r"a", "a", Some((0, 1)));
-
-// Some crazy expressions from regular-expressions.info.
-mat!(
- match_ranges,
- r"(?-u)\b(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b",
- "num: 255",
- Some((5, 8))
-);
-mat!(
- match_ranges_not,
- r"(?-u)\b(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b",
- "num: 256",
- None
-);
-mat!(match_float1, r"[-+]?[0-9]*\.?[0-9]+", "0.1", Some((0, 3)));
-mat!(match_float2, r"[-+]?[0-9]*\.?[0-9]+", "0.1.2", Some((0, 3)));
-mat!(match_float3, r"[-+]?[0-9]*\.?[0-9]+", "a1.2", Some((1, 4)));
-mat!(match_float4, r"^[-+]?[0-9]*\.?[0-9]+$", "1.a", None);
-mat!(
- match_email,
- r"(?i-u)\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b",
- "mine is jam.slam@gmail.com ",
- Some((8, 26))
-);
-mat!(
- match_email_not,
- r"(?i-u)\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b",
- "mine is jam.slam@gmail ",
- None
-);
-mat!(
- match_email_big,
- r"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?",
- "mine is jam.slam@gmail.com ",
- Some((8, 26))
-);
-mat!(
- match_date1,
- r"(?-u)^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$",
- "1900-01-01",
- Some((0, 10))
-);
-mat!(
- match_date2,
- r"(?-u)^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$",
- "1900-00-01",
- None
-);
-mat!(
- match_date3,
- r"(?-u)^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$",
- "1900-13-01",
- None
-);
-
-// Do some crazy dancing with the start/end assertions.
-matiter!(match_start_end_empty, r"^$", "", (0, 0));
-matiter!(match_start_end_empty_many_1, r"^$^$^$", "", (0, 0));
-matiter!(match_start_end_empty_many_2, r"^^^$$$", "", (0, 0));
-matiter!(match_start_end_empty_rev, r"$^", "", (0, 0));
-matiter!(
- match_start_end_empty_rep,
- r"(?:^$)*",
- "a\nb\nc",
- (0, 0),
- (1, 1),
- (2, 2),
- (3, 3),
- (4, 4),
- (5, 5)
-);
-matiter!(
- match_start_end_empty_rep_rev,
- r"(?:$^)*",
- "a\nb\nc",
- (0, 0),
- (1, 1),
- (2, 2),
- (3, 3),
- (4, 4),
- (5, 5)
-);
-
-// Test negated character classes.
-mat!(negclass_letters, r"[^ac]", "acx", Some((2, 3)));
-mat!(negclass_letter_comma, r"[^a,]", "a,x", Some((2, 3)));
-mat!(negclass_letter_space, r"[^a[:space:]]", "a x", Some((2, 3)));
-mat!(negclass_comma, r"[^,]", ",,x", Some((2, 3)));
-mat!(negclass_space, r"[^[:space:]]", " a", Some((1, 2)));
-mat!(negclass_space_comma, r"[^,[:space:]]", ", a", Some((2, 3)));
-mat!(negclass_comma_space, r"[^[:space:],]", " ,a", Some((2, 3)));
-mat!(negclass_ascii, r"[^[:alpha:]Z]", "A1", Some((1, 2)));
-
-// Test that repeated empty expressions don't loop forever.
-mat!(lazy_many_many, r"((?:.*)*?)=", "a=b", Some((0, 2)));
-mat!(lazy_many_optional, r"((?:.?)*?)=", "a=b", Some((0, 2)));
-mat!(lazy_one_many_many, r"((?:.*)+?)=", "a=b", Some((0, 2)));
-mat!(lazy_one_many_optional, r"((?:.?)+?)=", "a=b", Some((0, 2)));
-mat!(lazy_range_min_many, r"((?:.*){1,}?)=", "a=b", Some((0, 2)));
-mat!(lazy_range_many, r"((?:.*){1,2}?)=", "a=b", Some((0, 2)));
-mat!(greedy_many_many, r"((?:.*)*)=", "a=b", Some((0, 2)));
-mat!(greedy_many_optional, r"((?:.?)*)=", "a=b", Some((0, 2)));
-mat!(greedy_one_many_many, r"((?:.*)+)=", "a=b", Some((0, 2)));
-mat!(greedy_one_many_optional, r"((?:.?)+)=", "a=b", Some((0, 2)));
-mat!(greedy_range_min_many, r"((?:.*){1,})=", "a=b", Some((0, 2)));
-mat!(greedy_range_many, r"((?:.*){1,2})=", "a=b", Some((0, 2)));
-
-// Test that we handle various flavors of empty expressions.
-matiter!(match_empty1, r"", "", (0, 0));
-matiter!(match_empty2, r"", "abc", (0, 0), (1, 1), (2, 2), (3, 3));
-matiter!(match_empty3, r"()", "abc", (0, 0), (1, 1), (2, 2), (3, 3));
-matiter!(match_empty4, r"()*", "abc", (0, 0), (1, 1), (2, 2), (3, 3));
-matiter!(match_empty5, r"()+", "abc", (0, 0), (1, 1), (2, 2), (3, 3));
-matiter!(match_empty6, r"()?", "abc", (0, 0), (1, 1), (2, 2), (3, 3));
-matiter!(match_empty7, r"()()", "abc", (0, 0), (1, 1), (2, 2), (3, 3));
-matiter!(match_empty8, r"()+|z", "abc", (0, 0), (1, 1), (2, 2), (3, 3));
-matiter!(match_empty9, r"z|()+", "abc", (0, 0), (1, 1), (2, 2), (3, 3));
-matiter!(match_empty10, r"()+|b", "abc", (0, 0), (1, 1), (2, 2), (3, 3));
-matiter!(match_empty11, r"b|()+", "abc", (0, 0), (1, 2), (3, 3));
-matiter!(match_empty12, r"|b", "abc", (0, 0), (1, 1), (2, 2), (3, 3));
-matiter!(match_empty13, r"b|", "abc", (0, 0), (1, 2), (3, 3));
-matiter!(match_empty14, r"|z", "abc", (0, 0), (1, 1), (2, 2), (3, 3));
-matiter!(match_empty15, r"z|", "abc", (0, 0), (1, 1), (2, 2), (3, 3));
-matiter!(match_empty16, r"|", "abc", (0, 0), (1, 1), (2, 2), (3, 3));
-matiter!(match_empty17, r"||", "abc", (0, 0), (1, 1), (2, 2), (3, 3));
-matiter!(match_empty18, r"||z", "abc", (0, 0), (1, 1), (2, 2), (3, 3));
-matiter!(match_empty19, r"(?:)|b", "abc", (0, 0), (1, 1), (2, 2), (3, 3));
-matiter!(match_empty20, r"b|(?:)", "abc", (0, 0), (1, 2), (3, 3));
-matiter!(match_empty21, r"(?:|)", "abc", (0, 0), (1, 1), (2, 2), (3, 3));
-matiter!(match_empty22, r"(?:|)|z", "abc", (0, 0), (1, 1), (2, 2), (3, 3));
-matiter!(match_empty23, r"a(?:)|b", "abc", (0, 1), (1, 2));
-
-// Test that the DFA can handle pathological cases.
-// (This should result in the DFA's cache being flushed too frequently, which
-// should cause it to quit and fall back to the NFA algorithm.)
-#[test]
-fn dfa_handles_pathological_case() {
- fn ones_and_zeroes(count: usize) -> String {
- use rand::rngs::SmallRng;
- use rand::{Rng, SeedableRng};
-
- let mut rng = SmallRng::from_entropy();
- let mut s = String::new();
- for _ in 0..count {
- if rng.gen() {
- s.push('1');
- } else {
- s.push('0');
- }
- }
- s
- }
-
- let re = regex!(r"[01]*1[01]{20}$");
- let text = {
- let mut pieces = ones_and_zeroes(100_000);
- pieces.push('1');
- pieces.push_str(&ones_and_zeroes(20));
- pieces
- };
- assert!(re.is_match(text!(&*text)));
-}
-
-#[test]
-fn nest_limit_makes_it_parse() {
- use regex::RegexBuilder;
-
- RegexBuilder::new(
- r#"(?-u)
- 2(?:
- [45]\d{3}|
- 7(?:
- 1[0-267]|
- 2[0-289]|
- 3[0-29]|
- 4[01]|
- 5[1-3]|
- 6[013]|
- 7[0178]|
- 91
- )|
- 8(?:
- 0[125]|
- [139][1-6]|
- 2[0157-9]|
- 41|
- 6[1-35]|
- 7[1-5]|
- 8[1-8]|
- 90
- )|
- 9(?:
- 0[0-2]|
- 1[0-4]|
- 2[568]|
- 3[3-6]|
- 5[5-7]|
- 6[0167]|
- 7[15]|
- 8[0146-9]
- )
- )\d{4}|
- 3(?:
- 12?[5-7]\d{2}|
- 0(?:
- 2(?:
- [025-79]\d|
- [348]\d{1,2}
- )|
- 3(?:
- [2-4]\d|
- [56]\d?
- )
- )|
- 2(?:
- 1\d{2}|
- 2(?:
- [12]\d|
- [35]\d{1,2}|
- 4\d?
- )
- )|
- 3(?:
- 1\d{2}|
- 2(?:
- [2356]\d|
- 4\d{1,2}
- )
- )|
- 4(?:
- 1\d{2}|
- 2(?:
- 2\d{1,2}|
- [47]|
- 5\d{2}
- )
- )|
- 5(?:
- 1\d{2}|
- 29
- )|
- [67]1\d{2}|
- 8(?:
- 1\d{2}|
- 2(?:
- 2\d{2}|
- 3|
- 4\d
- )
- )
- )\d{3}|
- 4(?:
- 0(?:
- 2(?:
- [09]\d|
- 7
- )|
- 33\d{2}
- )|
- 1\d{3}|
- 2(?:
- 1\d{2}|
- 2(?:
- [25]\d?|
- [348]\d|
- [67]\d{1,2}
- )
- )|
- 3(?:
- 1\d{2}(?:
- \d{2}
- )?|
- 2(?:
- [045]\d|
- [236-9]\d{1,2}
- )|
- 32\d{2}
- )|
- 4(?:
- [18]\d{2}|
- 2(?:
- [2-46]\d{2}|
- 3
- )|
- 5[25]\d{2}
- )|
- 5(?:
- 1\d{2}|
- 2(?:
- 3\d|
- 5
- )
- )|
- 6(?:
- [18]\d{2}|
- 2(?:
- 3(?:
- \d{2}
- )?|
- [46]\d{1,2}|
- 5\d{2}|
- 7\d
- )|
- 5(?:
- 3\d?|
- 4\d|
- [57]\d{1,2}|
- 6\d{2}|
- 8
- )
- )|
- 71\d{2}|
- 8(?:
- [18]\d{2}|
- 23\d{2}|
- 54\d{2}
- )|
- 9(?:
- [18]\d{2}|
- 2[2-5]\d{2}|
- 53\d{1,2}
- )
- )\d{3}|
- 5(?:
- 02[03489]\d{2}|
- 1\d{2}|
- 2(?:
- 1\d{2}|
- 2(?:
- 2(?:
- \d{2}
- )?|
- [457]\d{2}
- )
- )|
- 3(?:
- 1\d{2}|
- 2(?:
- [37](?:
- \d{2}
- )?|
- [569]\d{2}
- )
- )|
- 4(?:
- 1\d{2}|
- 2[46]\d{2}
- )|
- 5(?:
- 1\d{2}|
- 26\d{1,2}
- )|
- 6(?:
- [18]\d{2}|
- 2|
- 53\d{2}
- )|
- 7(?:
- 1|
- 24
- )\d{2}|
- 8(?:
- 1|
- 26
- )\d{2}|
- 91\d{2}
- )\d{3}|
- 6(?:
- 0(?:
- 1\d{2}|
- 2(?:
- 3\d{2}|
- 4\d{1,2}
- )
- )|
- 2(?:
- 2[2-5]\d{2}|
- 5(?:
- [3-5]\d{2}|
- 7
- )|
- 8\d{2}
- )|
- 3(?:
- 1|
- 2[3478]
- )\d{2}|
- 4(?:
- 1|
- 2[34]
- )\d{2}|
- 5(?:
- 1|
- 2[47]
- )\d{2}|
- 6(?:
- [18]\d{2}|
- 6(?:
- 2(?:
- 2\d|
- [34]\d{2}
- )|
- 5(?:
- [24]\d{2}|
- 3\d|
- 5\d{1,2}
- )
- )
- )|
- 72[2-5]\d{2}|
- 8(?:
- 1\d{2}|
- 2[2-5]\d{2}
- )|
- 9(?:
- 1\d{2}|
- 2[2-6]\d{2}
- )
- )\d{3}|
- 7(?:
- (?:
- 02|
- [3-589]1|
- 6[12]|
- 72[24]
- )\d{2}|
- 21\d{3}|
- 32
- )\d{3}|
- 8(?:
- (?:
- 4[12]|
- [5-7]2|
- 1\d?
- )|
- (?:
- 0|
- 3[12]|
- [5-7]1|
- 217
- )\d
- )\d{4}|
- 9(?:
- [35]1|
- (?:
- [024]2|
- 81
- )\d|
- (?:
- 1|
- [24]1
- )\d{2}
- )\d{3}
- "#,
- )
- .build()
- .unwrap();
-}
diff --git a/vendor/regex/tests/flags.rs b/vendor/regex/tests/flags.rs
deleted file mode 100644
index c33b82d43..000000000
--- a/vendor/regex/tests/flags.rs
+++ /dev/null
@@ -1,31 +0,0 @@
-mat!(match_flag_case, "(?-u)(?i)abc", "ABC", Some((0, 3)));
-mat!(match_flag_weird_case, "(?-u)(?i)a(?-i)bc", "Abc", Some((0, 3)));
-mat!(match_flag_weird_case_not, "(?-u)(?i)a(?-i)bc", "ABC", None);
-mat!(match_flag_case_dotnl, "(?-u)(?is)a(?u:.)", "A\n", Some((0, 2)));
-mat!(
- match_flag_case_dotnl_toggle,
- "(?-u)(?is)a(?u:.)(?-is)a(?u:.)",
- "A\nab",
- Some((0, 4))
-);
-mat!(
- match_flag_case_dotnl_toggle_not,
- "(?-u)(?is)a(?u:.)(?-is)a(?u:.)",
- "A\na\n",
- None
-);
-mat!(
- match_flag_case_dotnl_toggle_ok,
- "(?-u)(?is)a(?u:.)(?-is:a(?u:.))?",
- "A\na\n",
- Some((0, 2))
-);
-mat!(
- match_flag_multi,
- r"(?-u)(?m)(?:^\d+$\n?)+",
- "123\n456\n789",
- Some((0, 11))
-);
-mat!(match_flag_ungreedy, "(?U)a+", "aa", Some((0, 1)));
-mat!(match_flag_ungreedy_greedy, "(?U)a+?", "aa", Some((0, 2)));
-mat!(match_flag_ungreedy_noop, "(?U)(?-U)a+", "aa", Some((0, 2)));
diff --git a/vendor/regex/tests/fowler.rs b/vendor/regex/tests/fowler.rs
deleted file mode 100644
index 7f56a758d..000000000
--- a/vendor/regex/tests/fowler.rs
+++ /dev/null
@@ -1,1588 +0,0 @@
-// DO NOT EDIT. Automatically generated by 'scripts/regex-match-tests.py'
-// on 2019-09-02 11:07:37.849994.
-
-// Tests from basic.dat
-mat!(match_basic_3, r"abracadabra$", r"abracadabracadabra", Some((7, 18)));
-mat!(match_basic_4, r"a...b", r"abababbb", Some((2, 7)));
-mat!(match_basic_5, r"XXXXXX", r"..XXXXXX", Some((2, 8)));
-mat!(match_basic_6, r"\)", r"()", Some((1, 2)));
-mat!(match_basic_7, r"a]", r"a]a", Some((0, 2)));
-mat!(match_basic_9, r"\}", r"}", Some((0, 1)));
-mat!(match_basic_10, r"\]", r"]", Some((0, 1)));
-mat!(match_basic_12, r"]", r"]", Some((0, 1)));
-mat!(match_basic_15, r"^a", r"ax", Some((0, 1)));
-mat!(match_basic_16, r"\^a", r"a^a", Some((1, 3)));
-mat!(match_basic_17, r"a\^", r"a^", Some((0, 2)));
-mat!(match_basic_18, r"a$", r"aa", Some((1, 2)));
-mat!(match_basic_19, r"a\$", r"a$", Some((0, 2)));
-mat!(match_basic_20, r"^$", r"", Some((0, 0)));
-mat!(match_basic_21, r"$^", r"", Some((0, 0)));
-mat!(match_basic_22, r"a($)", r"aa", Some((1, 2)), Some((2, 2)));
-mat!(match_basic_23, r"a*(^a)", r"aa", Some((0, 1)), Some((0, 1)));
-mat!(match_basic_24, r"(..)*(...)*", r"a", Some((0, 0)));
-mat!(match_basic_25, r"(..)*(...)*", r"abcd", Some((0, 4)), Some((2, 4)));
-mat!(
- match_basic_26,
- r"(ab|a)(bc|c)",
- r"abc",
- Some((0, 3)),
- Some((0, 2)),
- Some((2, 3))
-);
-mat!(match_basic_27, r"(ab)c|abc", r"abc", Some((0, 3)), Some((0, 2)));
-mat!(match_basic_28, r"a{0}b", r"ab", Some((1, 2)));
-mat!(
- match_basic_29,
- r"(a*)(b?)(b+)b{3}",
- r"aaabbbbbbb",
- Some((0, 10)),
- Some((0, 3)),
- Some((3, 4)),
- Some((4, 7))
-);
-mat!(
- match_basic_30,
- r"(a*)(b{0,1})(b{1,})b{3}",
- r"aaabbbbbbb",
- Some((0, 10)),
- Some((0, 3)),
- Some((3, 4)),
- Some((4, 7))
-);
-mat!(
- match_basic_32,
- r"((a|a)|a)",
- r"a",
- Some((0, 1)),
- Some((0, 1)),
- Some((0, 1))
-);
-mat!(
- match_basic_33,
- r"(a*)(a|aa)",
- r"aaaa",
- Some((0, 4)),
- Some((0, 3)),
- Some((3, 4))
-);
-mat!(match_basic_34, r"a*(a.|aa)", r"aaaa", Some((0, 4)), Some((2, 4)));
-mat!(
- match_basic_35,
- r"a(b)|c(d)|a(e)f",
- r"aef",
- Some((0, 3)),
- None,
- None,
- Some((1, 2))
-);
-mat!(match_basic_36, r"(a|b)?.*", r"b", Some((0, 1)), Some((0, 1)));
-mat!(match_basic_37, r"(a|b)c|a(b|c)", r"ac", Some((0, 2)), Some((0, 1)));
-mat!(
- match_basic_38,
- r"(a|b)c|a(b|c)",
- r"ab",
- Some((0, 2)),
- None,
- Some((1, 2))
-);
-mat!(match_basic_39, r"(a|b)*c|(a|ab)*c", r"abc", Some((0, 3)), Some((1, 2)));
-mat!(match_basic_40, r"(a|b)*c|(a|ab)*c", r"xc", Some((1, 2)));
-mat!(
- match_basic_41,
- r"(.a|.b).*|.*(.a|.b)",
- r"xa",
- Some((0, 2)),
- Some((0, 2))
-);
-mat!(match_basic_42, r"a?(ab|ba)ab", r"abab", Some((0, 4)), Some((0, 2)));
-mat!(match_basic_43, r"a?(ac{0}b|ba)ab", r"abab", Some((0, 4)), Some((0, 2)));
-mat!(match_basic_44, r"ab|abab", r"abbabab", Some((0, 2)));
-mat!(match_basic_45, r"aba|bab|bba", r"baaabbbaba", Some((5, 8)));
-mat!(match_basic_46, r"aba|bab", r"baaabbbaba", Some((6, 9)));
-mat!(
- match_basic_47,
- r"(aa|aaa)*|(a|aaaaa)",
- r"aa",
- Some((0, 2)),
- Some((0, 2))
-);
-mat!(
- match_basic_48,
- r"(a.|.a.)*|(a|.a...)",
- r"aa",
- Some((0, 2)),
- Some((0, 2))
-);
-mat!(match_basic_49, r"ab|a", r"xabc", Some((1, 3)));
-mat!(match_basic_50, r"ab|a", r"xxabc", Some((2, 4)));
-mat!(
- match_basic_51,
- r"(?i)(?-u)(Ab|cD)*",
- r"aBcD",
- Some((0, 4)),
- Some((2, 4))
-);
-mat!(match_basic_52, r"[^-]", r"--a", Some((2, 3)));
-mat!(match_basic_53, r"[a-]*", r"--a", Some((0, 3)));
-mat!(match_basic_54, r"[a-m-]*", r"--amoma--", Some((0, 4)));
-mat!(
- match_basic_55,
- r":::1:::0:|:::1:1:0:",
- r":::0:::1:::1:::0:",
- Some((8, 17))
-);
-mat!(
- match_basic_56,
- r":::1:::0:|:::1:1:1:",
- r":::0:::1:::1:::0:",
- Some((8, 17))
-);
-mat!(match_basic_57, r"[[:upper:]]", r"A", Some((0, 1)));
-mat!(match_basic_58, r"[[:lower:]]+", r"`az{", Some((1, 3)));
-mat!(match_basic_59, r"[[:upper:]]+", r"@AZ[", Some((1, 3)));
-mat!(
- match_basic_65,
- r"
-",
- r"
-",
- Some((0, 1))
-);
-mat!(
- match_basic_66,
- r"
-",
- r"
-",
- Some((0, 1))
-);
-mat!(
- match_basic_67,
- r"[^a]",
- r"
-",
- Some((0, 1))
-);
-mat!(
- match_basic_68,
- r"
-a",
- r"
-a",
- Some((0, 2))
-);
-mat!(
- match_basic_69,
- r"(a)(b)(c)",
- r"abc",
- Some((0, 3)),
- Some((0, 1)),
- Some((1, 2)),
- Some((2, 3))
-);
-mat!(match_basic_70, r"xxx", r"xxx", Some((0, 3)));
-mat!(
- match_basic_71,
- r"(^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$)",
- r"feb 6,",
- Some((0, 6))
-);
-mat!(
- match_basic_72,
- r"(^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$)",
- r"2/7",
- Some((0, 3))
-);
-mat!(
- match_basic_73,
- r"(^|[ (,;])((([Ff]eb[^ ]* *|0*2/|\* */?)0*[6-7]))([^0-9]|$)",
- r"feb 1,Feb 6",
- Some((5, 11))
-);
-mat!(
- match_basic_74,
- r"((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))",
- r"x",
- Some((0, 1)),
- Some((0, 1)),
- Some((0, 1))
-);
-mat!(
- match_basic_75,
- r"((((((((((((((((((((((((((((((x))))))))))))))))))))))))))))))*",
- r"xx",
- Some((0, 2)),
- Some((1, 2)),
- Some((1, 2))
-);
-mat!(
- match_basic_76,
- r"a?(ab|ba)*",
- r"ababababababababababababababababababababababababababababababababababababababababa",
- Some((0, 81)),
- Some((79, 81))
-);
-mat!(
- match_basic_77,
- r"abaa|abbaa|abbbaa|abbbbaa",
- r"ababbabbbabbbabbbbabbbbaa",
- Some((18, 25))
-);
-mat!(
- match_basic_78,
- r"abaa|abbaa|abbbaa|abbbbaa",
- r"ababbabbbabbbabbbbabaa",
- Some((18, 22))
-);
-mat!(
- match_basic_79,
- r"aaac|aabc|abac|abbc|baac|babc|bbac|bbbc",
- r"baaabbbabac",
- Some((7, 11))
-);
-mat!(match_basic_80, r".*", r"", Some((0, 2)));
-mat!(
- match_basic_81,
- r"aaaa|bbbb|cccc|ddddd|eeeeee|fffffff|gggg|hhhh|iiiii|jjjjj|kkkkk|llll",
- r"XaaaXbbbXcccXdddXeeeXfffXgggXhhhXiiiXjjjXkkkXlllXcbaXaaaa",
- Some((53, 57))
-);
-mat!(match_basic_83, r"a*a*a*a*a*b", r"aaaaaaaaab", Some((0, 10)));
-mat!(match_basic_84, r"^", r"", Some((0, 0)));
-mat!(match_basic_85, r"$", r"", Some((0, 0)));
-mat!(match_basic_86, r"^$", r"", Some((0, 0)));
-mat!(match_basic_87, r"^a$", r"a", Some((0, 1)));
-mat!(match_basic_88, r"abc", r"abc", Some((0, 3)));
-mat!(match_basic_89, r"abc", r"xabcy", Some((1, 4)));
-mat!(match_basic_90, r"abc", r"ababc", Some((2, 5)));
-mat!(match_basic_91, r"ab*c", r"abc", Some((0, 3)));
-mat!(match_basic_92, r"ab*bc", r"abc", Some((0, 3)));
-mat!(match_basic_93, r"ab*bc", r"abbc", Some((0, 4)));
-mat!(match_basic_94, r"ab*bc", r"abbbbc", Some((0, 6)));
-mat!(match_basic_95, r"ab+bc", r"abbc", Some((0, 4)));
-mat!(match_basic_96, r"ab+bc", r"abbbbc", Some((0, 6)));
-mat!(match_basic_97, r"ab?bc", r"abbc", Some((0, 4)));
-mat!(match_basic_98, r"ab?bc", r"abc", Some((0, 3)));
-mat!(match_basic_99, r"ab?c", r"abc", Some((0, 3)));
-mat!(match_basic_100, r"^abc$", r"abc", Some((0, 3)));
-mat!(match_basic_101, r"^abc", r"abcc", Some((0, 3)));
-mat!(match_basic_102, r"abc$", r"aabc", Some((1, 4)));
-mat!(match_basic_103, r"^", r"abc", Some((0, 0)));
-mat!(match_basic_104, r"$", r"abc", Some((3, 3)));
-mat!(match_basic_105, r"a.c", r"abc", Some((0, 3)));
-mat!(match_basic_106, r"a.c", r"axc", Some((0, 3)));
-mat!(match_basic_107, r"a.*c", r"axyzc", Some((0, 5)));
-mat!(match_basic_108, r"a[bc]d", r"abd", Some((0, 3)));
-mat!(match_basic_109, r"a[b-d]e", r"ace", Some((0, 3)));
-mat!(match_basic_110, r"a[b-d]", r"aac", Some((1, 3)));
-mat!(match_basic_111, r"a[-b]", r"a-", Some((0, 2)));
-mat!(match_basic_112, r"a[b-]", r"a-", Some((0, 2)));
-mat!(match_basic_113, r"a]", r"a]", Some((0, 2)));
-mat!(match_basic_114, r"a[]]b", r"a]b", Some((0, 3)));
-mat!(match_basic_115, r"a[^bc]d", r"aed", Some((0, 3)));
-mat!(match_basic_116, r"a[^-b]c", r"adc", Some((0, 3)));
-mat!(match_basic_117, r"a[^]b]c", r"adc", Some((0, 3)));
-mat!(match_basic_118, r"ab|cd", r"abc", Some((0, 2)));
-mat!(match_basic_119, r"ab|cd", r"abcd", Some((0, 2)));
-mat!(match_basic_120, r"a\(b", r"a(b", Some((0, 3)));
-mat!(match_basic_121, r"a\(*b", r"ab", Some((0, 2)));
-mat!(match_basic_122, r"a\(*b", r"a((b", Some((0, 4)));
-mat!(
- match_basic_123,
- r"((a))",
- r"abc",
- Some((0, 1)),
- Some((0, 1)),
- Some((0, 1))
-);
-mat!(
- match_basic_124,
- r"(a)b(c)",
- r"abc",
- Some((0, 3)),
- Some((0, 1)),
- Some((2, 3))
-);
-mat!(match_basic_125, r"a+b+c", r"aabbabc", Some((4, 7)));
-mat!(match_basic_126, r"a*", r"aaa", Some((0, 3)));
-mat!(match_basic_128, r"(a*)*", r"-", Some((0, 0)), None);
-mat!(match_basic_129, r"(a*)+", r"-", Some((0, 0)), Some((0, 0)));
-mat!(match_basic_131, r"(a*|b)*", r"-", Some((0, 0)), None);
-mat!(match_basic_132, r"(a+|b)*", r"ab", Some((0, 2)), Some((1, 2)));
-mat!(match_basic_133, r"(a+|b)+", r"ab", Some((0, 2)), Some((1, 2)));
-mat!(match_basic_134, r"(a+|b)?", r"ab", Some((0, 1)), Some((0, 1)));
-mat!(match_basic_135, r"[^ab]*", r"cde", Some((0, 3)));
-mat!(match_basic_137, r"(^)*", r"-", Some((0, 0)), None);
-mat!(match_basic_138, r"a*", r"", Some((0, 0)));
-mat!(match_basic_139, r"([abc])*d", r"abbbcd", Some((0, 6)), Some((4, 5)));
-mat!(match_basic_140, r"([abc])*bcd", r"abcd", Some((0, 4)), Some((0, 1)));
-mat!(match_basic_141, r"a|b|c|d|e", r"e", Some((0, 1)));
-mat!(match_basic_142, r"(a|b|c|d|e)f", r"ef", Some((0, 2)), Some((0, 1)));
-mat!(match_basic_144, r"((a*|b))*", r"-", Some((0, 0)), None, None);
-mat!(match_basic_145, r"abcd*efg", r"abcdefg", Some((0, 7)));
-mat!(match_basic_146, r"ab*", r"xabyabbbz", Some((1, 3)));
-mat!(match_basic_147, r"ab*", r"xayabbbz", Some((1, 2)));
-mat!(match_basic_148, r"(ab|cd)e", r"abcde", Some((2, 5)), Some((2, 4)));
-mat!(match_basic_149, r"[abhgefdc]ij", r"hij", Some((0, 3)));
-mat!(match_basic_150, r"(a|b)c*d", r"abcd", Some((1, 4)), Some((1, 2)));
-mat!(match_basic_151, r"(ab|ab*)bc", r"abc", Some((0, 3)), Some((0, 1)));
-mat!(match_basic_152, r"a([bc]*)c*", r"abc", Some((0, 3)), Some((1, 3)));
-mat!(
- match_basic_153,
- r"a([bc]*)(c*d)",
- r"abcd",
- Some((0, 4)),
- Some((1, 3)),
- Some((3, 4))
-);
-mat!(
- match_basic_154,
- r"a([bc]+)(c*d)",
- r"abcd",
- Some((0, 4)),
- Some((1, 3)),
- Some((3, 4))
-);
-mat!(
- match_basic_155,
- r"a([bc]*)(c+d)",
- r"abcd",
- Some((0, 4)),
- Some((1, 2)),
- Some((2, 4))
-);
-mat!(match_basic_156, r"a[bcd]*dcdcde", r"adcdcde", Some((0, 7)));
-mat!(match_basic_157, r"(ab|a)b*c", r"abc", Some((0, 3)), Some((0, 2)));
-mat!(
- match_basic_158,
- r"((a)(b)c)(d)",
- r"abcd",
- Some((0, 4)),
- Some((0, 3)),
- Some((0, 1)),
- Some((1, 2)),
- Some((3, 4))
-);
-mat!(match_basic_159, r"[A-Za-z_][A-Za-z0-9_]*", r"alpha", Some((0, 5)));
-mat!(match_basic_160, r"^a(bc+|b[eh])g|.h$", r"abh", Some((1, 3)));
-mat!(
- match_basic_161,
- r"(bc+d$|ef*g.|h?i(j|k))",
- r"effgz",
- Some((0, 5)),
- Some((0, 5))
-);
-mat!(
- match_basic_162,
- r"(bc+d$|ef*g.|h?i(j|k))",
- r"ij",
- Some((0, 2)),
- Some((0, 2)),
- Some((1, 2))
-);
-mat!(
- match_basic_163,
- r"(bc+d$|ef*g.|h?i(j|k))",
- r"reffgz",
- Some((1, 6)),
- Some((1, 6))
-);
-mat!(
- match_basic_164,
- r"(((((((((a)))))))))",
- r"a",
- Some((0, 1)),
- Some((0, 1)),
- Some((0, 1)),
- Some((0, 1)),
- Some((0, 1)),
- Some((0, 1)),
- Some((0, 1)),
- Some((0, 1)),
- Some((0, 1)),
- Some((0, 1))
-);
-mat!(
- match_basic_165,
- r"multiple words",
- r"multiple words yeah",
- Some((0, 14))
-);
-mat!(
- match_basic_166,
- r"(.*)c(.*)",
- r"abcde",
- Some((0, 5)),
- Some((0, 2)),
- Some((3, 5))
-);
-mat!(match_basic_167, r"abcd", r"abcd", Some((0, 4)));
-mat!(match_basic_168, r"a(bc)d", r"abcd", Some((0, 4)), Some((1, 3)));
-mat!(match_basic_169, r"a[-]?c", r"ac", Some((0, 3)));
-mat!(
- match_basic_170,
- r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
- r"Muammar Qaddafi",
- Some((0, 15)),
- None,
- Some((10, 12))
-);
-mat!(
- match_basic_171,
- r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
- r"Mo'ammar Gadhafi",
- Some((0, 16)),
- None,
- Some((11, 13))
-);
-mat!(
- match_basic_172,
- r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
- r"Muammar Kaddafi",
- Some((0, 15)),
- None,
- Some((10, 12))
-);
-mat!(
- match_basic_173,
- r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
- r"Muammar Qadhafi",
- Some((0, 15)),
- None,
- Some((10, 12))
-);
-mat!(
- match_basic_174,
- r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
- r"Muammar Gadafi",
- Some((0, 14)),
- None,
- Some((10, 11))
-);
-mat!(
- match_basic_175,
- r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
- r"Mu'ammar Qadafi",
- Some((0, 15)),
- None,
- Some((11, 12))
-);
-mat!(
- match_basic_176,
- r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
- r"Moamar Gaddafi",
- Some((0, 14)),
- None,
- Some((9, 11))
-);
-mat!(
- match_basic_177,
- r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
- r"Mu'ammar Qadhdhafi",
- Some((0, 18)),
- None,
- Some((13, 15))
-);
-mat!(
- match_basic_178,
- r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
- r"Muammar Khaddafi",
- Some((0, 16)),
- None,
- Some((11, 13))
-);
-mat!(
- match_basic_179,
- r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
- r"Muammar Ghaddafy",
- Some((0, 16)),
- None,
- Some((11, 13))
-);
-mat!(
- match_basic_180,
- r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
- r"Muammar Ghadafi",
- Some((0, 15)),
- None,
- Some((11, 12))
-);
-mat!(
- match_basic_181,
- r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
- r"Muammar Ghaddafi",
- Some((0, 16)),
- None,
- Some((11, 13))
-);
-mat!(
- match_basic_182,
- r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
- r"Muamar Kaddafi",
- Some((0, 14)),
- None,
- Some((9, 11))
-);
-mat!(
- match_basic_183,
- r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
- r"Muammar Quathafi",
- Some((0, 16)),
- None,
- Some((11, 13))
-);
-mat!(
- match_basic_184,
- r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
- r"Muammar Gheddafi",
- Some((0, 16)),
- None,
- Some((11, 13))
-);
-mat!(
- match_basic_185,
- r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
- r"Moammar Khadafy",
- Some((0, 15)),
- None,
- Some((11, 12))
-);
-mat!(
- match_basic_186,
- r"M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]",
- r"Moammar Qudhafi",
- Some((0, 15)),
- None,
- Some((10, 12))
-);
-mat!(match_basic_187, r"a+(b|c)*d+", r"aabcdd", Some((0, 6)), Some((3, 4)));
-mat!(match_basic_188, r"^.+$", r"vivi", Some((0, 4)));
-mat!(match_basic_189, r"^(.+)$", r"vivi", Some((0, 4)), Some((0, 4)));
-mat!(
- match_basic_190,
- r"^([^!.]+).att.com!(.+)$",
- r"gryphon.att.com!eby",
- Some((0, 19)),
- Some((0, 7)),
- Some((16, 19))
-);
-mat!(
- match_basic_191,
- r"^([^!]+!)?([^!]+)$",
- r"bas",
- Some((0, 3)),
- None,
- Some((0, 3))
-);
-mat!(
- match_basic_192,
- r"^([^!]+!)?([^!]+)$",
- r"bar!bas",
- Some((0, 7)),
- Some((0, 4)),
- Some((4, 7))
-);
-mat!(
- match_basic_193,
- r"^([^!]+!)?([^!]+)$",
- r"foo!bas",
- Some((0, 7)),
- Some((0, 4)),
- Some((4, 7))
-);
-mat!(
- match_basic_194,
- r"^.+!([^!]+!)([^!]+)$",
- r"foo!bar!bas",
- Some((0, 11)),
- Some((4, 8)),
- Some((8, 11))
-);
-mat!(
- match_basic_195,
- r"((foo)|(bar))!bas",
- r"bar!bas",
- Some((0, 7)),
- Some((0, 3)),
- None,
- Some((0, 3))
-);
-mat!(
- match_basic_196,
- r"((foo)|(bar))!bas",
- r"foo!bar!bas",
- Some((4, 11)),
- Some((4, 7)),
- None,
- Some((4, 7))
-);
-mat!(
- match_basic_197,
- r"((foo)|(bar))!bas",
- r"foo!bas",
- Some((0, 7)),
- Some((0, 3)),
- Some((0, 3))
-);
-mat!(
- match_basic_198,
- r"((foo)|bar)!bas",
- r"bar!bas",
- Some((0, 7)),
- Some((0, 3))
-);
-mat!(
- match_basic_199,
- r"((foo)|bar)!bas",
- r"foo!bar!bas",
- Some((4, 11)),
- Some((4, 7))
-);
-mat!(
- match_basic_200,
- r"((foo)|bar)!bas",
- r"foo!bas",
- Some((0, 7)),
- Some((0, 3)),
- Some((0, 3))
-);
-mat!(
- match_basic_201,
- r"(foo|(bar))!bas",
- r"bar!bas",
- Some((0, 7)),
- Some((0, 3)),
- Some((0, 3))
-);
-mat!(
- match_basic_202,
- r"(foo|(bar))!bas",
- r"foo!bar!bas",
- Some((4, 11)),
- Some((4, 7)),
- Some((4, 7))
-);
-mat!(
- match_basic_203,
- r"(foo|(bar))!bas",
- r"foo!bas",
- Some((0, 7)),
- Some((0, 3))
-);
-mat!(
- match_basic_204,
- r"(foo|bar)!bas",
- r"bar!bas",
- Some((0, 7)),
- Some((0, 3))
-);
-mat!(
- match_basic_205,
- r"(foo|bar)!bas",
- r"foo!bar!bas",
- Some((4, 11)),
- Some((4, 7))
-);
-mat!(
- match_basic_206,
- r"(foo|bar)!bas",
- r"foo!bas",
- Some((0, 7)),
- Some((0, 3))
-);
-mat!(
- match_basic_207,
- r"^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$",
- r"foo!bar!bas",
- Some((0, 11)),
- Some((0, 11)),
- None,
- None,
- Some((4, 8)),
- Some((8, 11))
-);
-mat!(
- match_basic_208,
- r"^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$",
- r"bas",
- Some((0, 3)),
- None,
- Some((0, 3))
-);
-mat!(
- match_basic_209,
- r"^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$",
- r"bar!bas",
- Some((0, 7)),
- Some((0, 4)),
- Some((4, 7))
-);
-mat!(
- match_basic_210,
- r"^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$",
- r"foo!bar!bas",
- Some((0, 11)),
- None,
- None,
- Some((4, 8)),
- Some((8, 11))
-);
-mat!(
- match_basic_211,
- r"^([^!]+!)?([^!]+)$|^.+!([^!]+!)([^!]+)$",
- r"foo!bas",
- Some((0, 7)),
- Some((0, 4)),
- Some((4, 7))
-);
-mat!(
- match_basic_212,
- r"^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$",
- r"bas",
- Some((0, 3)),
- Some((0, 3)),
- None,
- Some((0, 3))
-);
-mat!(
- match_basic_213,
- r"^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$",
- r"bar!bas",
- Some((0, 7)),
- Some((0, 7)),
- Some((0, 4)),
- Some((4, 7))
-);
-mat!(
- match_basic_214,
- r"^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$",
- r"foo!bar!bas",
- Some((0, 11)),
- Some((0, 11)),
- None,
- None,
- Some((4, 8)),
- Some((8, 11))
-);
-mat!(
- match_basic_215,
- r"^(([^!]+!)?([^!]+)|.+!([^!]+!)([^!]+))$",
- r"foo!bas",
- Some((0, 7)),
- Some((0, 7)),
- Some((0, 4)),
- Some((4, 7))
-);
-mat!(match_basic_216, r".*(/XXX).*", r"/XXX", Some((0, 4)), Some((0, 4)));
-mat!(match_basic_217, r".*(\\XXX).*", r"\XXX", Some((0, 4)), Some((0, 4)));
-mat!(match_basic_218, r"\\XXX", r"\XXX", Some((0, 4)));
-mat!(match_basic_219, r".*(/000).*", r"/000", Some((0, 4)), Some((0, 4)));
-mat!(match_basic_220, r".*(\\000).*", r"\000", Some((0, 4)), Some((0, 4)));
-mat!(match_basic_221, r"\\000", r"\000", Some((0, 4)));
-
-// Tests from nullsubexpr.dat
-mat!(match_nullsubexpr_3, r"(a*)*", r"a", Some((0, 1)), Some((0, 1)));
-mat!(match_nullsubexpr_5, r"(a*)*", r"x", Some((0, 0)), None);
-mat!(match_nullsubexpr_6, r"(a*)*", r"aaaaaa", Some((0, 6)), Some((0, 6)));
-mat!(match_nullsubexpr_7, r"(a*)*", r"aaaaaax", Some((0, 6)), Some((0, 6)));
-mat!(match_nullsubexpr_8, r"(a*)+", r"a", Some((0, 1)), Some((0, 1)));
-mat!(match_nullsubexpr_9, r"(a*)+", r"x", Some((0, 0)), Some((0, 0)));
-mat!(match_nullsubexpr_10, r"(a*)+", r"aaaaaa", Some((0, 6)), Some((0, 6)));
-mat!(match_nullsubexpr_11, r"(a*)+", r"aaaaaax", Some((0, 6)), Some((0, 6)));
-mat!(match_nullsubexpr_12, r"(a+)*", r"a", Some((0, 1)), Some((0, 1)));
-mat!(match_nullsubexpr_13, r"(a+)*", r"x", Some((0, 0)));
-mat!(match_nullsubexpr_14, r"(a+)*", r"aaaaaa", Some((0, 6)), Some((0, 6)));
-mat!(match_nullsubexpr_15, r"(a+)*", r"aaaaaax", Some((0, 6)), Some((0, 6)));
-mat!(match_nullsubexpr_16, r"(a+)+", r"a", Some((0, 1)), Some((0, 1)));
-mat!(match_nullsubexpr_17, r"(a+)+", r"x", None);
-mat!(match_nullsubexpr_18, r"(a+)+", r"aaaaaa", Some((0, 6)), Some((0, 6)));
-mat!(match_nullsubexpr_19, r"(a+)+", r"aaaaaax", Some((0, 6)), Some((0, 6)));
-mat!(match_nullsubexpr_21, r"([a]*)*", r"a", Some((0, 1)), Some((0, 1)));
-mat!(match_nullsubexpr_23, r"([a]*)*", r"x", Some((0, 0)), None);
-mat!(match_nullsubexpr_24, r"([a]*)*", r"aaaaaa", Some((0, 6)), Some((0, 6)));
-mat!(match_nullsubexpr_25, r"([a]*)*", r"aaaaaax", Some((0, 6)), Some((0, 6)));
-mat!(match_nullsubexpr_26, r"([a]*)+", r"a", Some((0, 1)), Some((0, 1)));
-mat!(match_nullsubexpr_27, r"([a]*)+", r"x", Some((0, 0)), Some((0, 0)));
-mat!(match_nullsubexpr_28, r"([a]*)+", r"aaaaaa", Some((0, 6)), Some((0, 6)));
-mat!(match_nullsubexpr_29, r"([a]*)+", r"aaaaaax", Some((0, 6)), Some((0, 6)));
-mat!(match_nullsubexpr_30, r"([^b]*)*", r"a", Some((0, 1)), Some((0, 1)));
-mat!(match_nullsubexpr_32, r"([^b]*)*", r"b", Some((0, 0)), None);
-mat!(match_nullsubexpr_33, r"([^b]*)*", r"aaaaaa", Some((0, 6)), Some((0, 6)));
-mat!(
- match_nullsubexpr_34,
- r"([^b]*)*",
- r"aaaaaab",
- Some((0, 6)),
- Some((0, 6))
-);
-mat!(match_nullsubexpr_35, r"([ab]*)*", r"a", Some((0, 1)), Some((0, 1)));
-mat!(match_nullsubexpr_36, r"([ab]*)*", r"aaaaaa", Some((0, 6)), Some((0, 6)));
-mat!(match_nullsubexpr_37, r"([ab]*)*", r"ababab", Some((0, 6)), Some((0, 6)));
-mat!(match_nullsubexpr_38, r"([ab]*)*", r"bababa", Some((0, 6)), Some((0, 6)));
-mat!(match_nullsubexpr_39, r"([ab]*)*", r"b", Some((0, 1)), Some((0, 1)));
-mat!(match_nullsubexpr_40, r"([ab]*)*", r"bbbbbb", Some((0, 6)), Some((0, 6)));
-mat!(
- match_nullsubexpr_41,
- r"([ab]*)*",
- r"aaaabcde",
- Some((0, 5)),
- Some((0, 5))
-);
-mat!(match_nullsubexpr_42, r"([^a]*)*", r"b", Some((0, 1)), Some((0, 1)));
-mat!(match_nullsubexpr_43, r"([^a]*)*", r"bbbbbb", Some((0, 6)), Some((0, 6)));
-mat!(match_nullsubexpr_45, r"([^a]*)*", r"aaaaaa", Some((0, 0)), None);
-mat!(
- match_nullsubexpr_46,
- r"([^ab]*)*",
- r"ccccxx",
- Some((0, 6)),
- Some((0, 6))
-);
-mat!(match_nullsubexpr_48, r"([^ab]*)*", r"ababab", Some((0, 0)), None);
-mat!(
- match_nullsubexpr_50,
- r"((z)+|a)*",
- r"zabcde",
- Some((0, 2)),
- Some((1, 2))
-);
-mat!(
- match_nullsubexpr_69,
- r"(a*)*(x)",
- r"x",
- Some((0, 1)),
- None,
- Some((0, 1))
-);
-mat!(
- match_nullsubexpr_70,
- r"(a*)*(x)",
- r"ax",
- Some((0, 2)),
- Some((0, 1)),
- Some((1, 2))
-);
-mat!(
- match_nullsubexpr_71,
- r"(a*)*(x)",
- r"axa",
- Some((0, 2)),
- Some((0, 1)),
- Some((1, 2))
-);
-mat!(
- match_nullsubexpr_73,
- r"(a*)+(x)",
- r"x",
- Some((0, 1)),
- Some((0, 0)),
- Some((0, 1))
-);
-mat!(
- match_nullsubexpr_74,
- r"(a*)+(x)",
- r"ax",
- Some((0, 2)),
- Some((0, 1)),
- Some((1, 2))
-);
-mat!(
- match_nullsubexpr_75,
- r"(a*)+(x)",
- r"axa",
- Some((0, 2)),
- Some((0, 1)),
- Some((1, 2))
-);
-mat!(
- match_nullsubexpr_77,
- r"(a*){2}(x)",
- r"x",
- Some((0, 1)),
- Some((0, 0)),
- Some((0, 1))
-);
-mat!(
- match_nullsubexpr_78,
- r"(a*){2}(x)",
- r"ax",
- Some((0, 2)),
- Some((1, 1)),
- Some((1, 2))
-);
-mat!(
- match_nullsubexpr_79,
- r"(a*){2}(x)",
- r"axa",
- Some((0, 2)),
- Some((1, 1)),
- Some((1, 2))
-);
-
-// Tests from repetition.dat
-mat!(match_repetition_10, r"((..)|(.))", r"", None);
-mat!(match_repetition_11, r"((..)|(.))((..)|(.))", r"", None);
-mat!(match_repetition_12, r"((..)|(.))((..)|(.))((..)|(.))", r"", None);
-mat!(match_repetition_14, r"((..)|(.)){1}", r"", None);
-mat!(match_repetition_15, r"((..)|(.)){2}", r"", None);
-mat!(match_repetition_16, r"((..)|(.)){3}", r"", None);
-mat!(match_repetition_18, r"((..)|(.))*", r"", Some((0, 0)));
-mat!(
- match_repetition_20,
- r"((..)|(.))",
- r"a",
- Some((0, 1)),
- Some((0, 1)),
- None,
- Some((0, 1))
-);
-mat!(match_repetition_21, r"((..)|(.))((..)|(.))", r"a", None);
-mat!(match_repetition_22, r"((..)|(.))((..)|(.))((..)|(.))", r"a", None);
-mat!(
- match_repetition_24,
- r"((..)|(.)){1}",
- r"a",
- Some((0, 1)),
- Some((0, 1)),
- None,
- Some((0, 1))
-);
-mat!(match_repetition_25, r"((..)|(.)){2}", r"a", None);
-mat!(match_repetition_26, r"((..)|(.)){3}", r"a", None);
-mat!(
- match_repetition_28,
- r"((..)|(.))*",
- r"a",
- Some((0, 1)),
- Some((0, 1)),
- None,
- Some((0, 1))
-);
-mat!(
- match_repetition_30,
- r"((..)|(.))",
- r"aa",
- Some((0, 2)),
- Some((0, 2)),
- Some((0, 2)),
- None
-);
-mat!(
- match_repetition_31,
- r"((..)|(.))((..)|(.))",
- r"aa",
- Some((0, 2)),
- Some((0, 1)),
- None,
- Some((0, 1)),
- Some((1, 2)),
- None,
- Some((1, 2))
-);
-mat!(match_repetition_32, r"((..)|(.))((..)|(.))((..)|(.))", r"aa", None);
-mat!(
- match_repetition_34,
- r"((..)|(.)){1}",
- r"aa",
- Some((0, 2)),
- Some((0, 2)),
- Some((0, 2)),
- None
-);
-mat!(
- match_repetition_35,
- r"((..)|(.)){2}",
- r"aa",
- Some((0, 2)),
- Some((1, 2)),
- None,
- Some((1, 2))
-);
-mat!(match_repetition_36, r"((..)|(.)){3}", r"aa", None);
-mat!(
- match_repetition_38,
- r"((..)|(.))*",
- r"aa",
- Some((0, 2)),
- Some((0, 2)),
- Some((0, 2)),
- None
-);
-mat!(
- match_repetition_40,
- r"((..)|(.))",
- r"aaa",
- Some((0, 2)),
- Some((0, 2)),
- Some((0, 2)),
- None
-);
-mat!(
- match_repetition_41,
- r"((..)|(.))((..)|(.))",
- r"aaa",
- Some((0, 3)),
- Some((0, 2)),
- Some((0, 2)),
- None,
- Some((2, 3)),
- None,
- Some((2, 3))
-);
-mat!(
- match_repetition_42,
- r"((..)|(.))((..)|(.))((..)|(.))",
- r"aaa",
- Some((0, 3)),
- Some((0, 1)),
- None,
- Some((0, 1)),
- Some((1, 2)),
- None,
- Some((1, 2)),
- Some((2, 3)),
- None,
- Some((2, 3))
-);
-mat!(
- match_repetition_44,
- r"((..)|(.)){1}",
- r"aaa",
- Some((0, 2)),
- Some((0, 2)),
- Some((0, 2)),
- None
-);
-mat!(
- match_repetition_46,
- r"((..)|(.)){2}",
- r"aaa",
- Some((0, 3)),
- Some((2, 3)),
- Some((0, 2)),
- Some((2, 3))
-);
-mat!(
- match_repetition_47,
- r"((..)|(.)){3}",
- r"aaa",
- Some((0, 3)),
- Some((2, 3)),
- None,
- Some((2, 3))
-);
-mat!(
- match_repetition_50,
- r"((..)|(.))*",
- r"aaa",
- Some((0, 3)),
- Some((2, 3)),
- Some((0, 2)),
- Some((2, 3))
-);
-mat!(
- match_repetition_52,
- r"((..)|(.))",
- r"aaaa",
- Some((0, 2)),
- Some((0, 2)),
- Some((0, 2)),
- None
-);
-mat!(
- match_repetition_53,
- r"((..)|(.))((..)|(.))",
- r"aaaa",
- Some((0, 4)),
- Some((0, 2)),
- Some((0, 2)),
- None,
- Some((2, 4)),
- Some((2, 4)),
- None
-);
-mat!(
- match_repetition_54,
- r"((..)|(.))((..)|(.))((..)|(.))",
- r"aaaa",
- Some((0, 4)),
- Some((0, 2)),
- Some((0, 2)),
- None,
- Some((2, 3)),
- None,
- Some((2, 3)),
- Some((3, 4)),
- None,
- Some((3, 4))
-);
-mat!(
- match_repetition_56,
- r"((..)|(.)){1}",
- r"aaaa",
- Some((0, 2)),
- Some((0, 2)),
- Some((0, 2)),
- None
-);
-mat!(
- match_repetition_57,
- r"((..)|(.)){2}",
- r"aaaa",
- Some((0, 4)),
- Some((2, 4)),
- Some((2, 4)),
- None
-);
-mat!(
- match_repetition_59,
- r"((..)|(.)){3}",
- r"aaaa",
- Some((0, 4)),
- Some((3, 4)),
- Some((0, 2)),
- Some((3, 4))
-);
-mat!(
- match_repetition_61,
- r"((..)|(.))*",
- r"aaaa",
- Some((0, 4)),
- Some((2, 4)),
- Some((2, 4)),
- None
-);
-mat!(
- match_repetition_63,
- r"((..)|(.))",
- r"aaaaa",
- Some((0, 2)),
- Some((0, 2)),
- Some((0, 2)),
- None
-);
-mat!(
- match_repetition_64,
- r"((..)|(.))((..)|(.))",
- r"aaaaa",
- Some((0, 4)),
- Some((0, 2)),
- Some((0, 2)),
- None,
- Some((2, 4)),
- Some((2, 4)),
- None
-);
-mat!(
- match_repetition_65,
- r"((..)|(.))((..)|(.))((..)|(.))",
- r"aaaaa",
- Some((0, 5)),
- Some((0, 2)),
- Some((0, 2)),
- None,
- Some((2, 4)),
- Some((2, 4)),
- None,
- Some((4, 5)),
- None,
- Some((4, 5))
-);
-mat!(
- match_repetition_67,
- r"((..)|(.)){1}",
- r"aaaaa",
- Some((0, 2)),
- Some((0, 2)),
- Some((0, 2)),
- None
-);
-mat!(
- match_repetition_68,
- r"((..)|(.)){2}",
- r"aaaaa",
- Some((0, 4)),
- Some((2, 4)),
- Some((2, 4)),
- None
-);
-mat!(
- match_repetition_70,
- r"((..)|(.)){3}",
- r"aaaaa",
- Some((0, 5)),
- Some((4, 5)),
- Some((2, 4)),
- Some((4, 5))
-);
-mat!(
- match_repetition_73,
- r"((..)|(.))*",
- r"aaaaa",
- Some((0, 5)),
- Some((4, 5)),
- Some((2, 4)),
- Some((4, 5))
-);
-mat!(
- match_repetition_75,
- r"((..)|(.))",
- r"aaaaaa",
- Some((0, 2)),
- Some((0, 2)),
- Some((0, 2)),
- None
-);
-mat!(
- match_repetition_76,
- r"((..)|(.))((..)|(.))",
- r"aaaaaa",
- Some((0, 4)),
- Some((0, 2)),
- Some((0, 2)),
- None,
- Some((2, 4)),
- Some((2, 4)),
- None
-);
-mat!(
- match_repetition_77,
- r"((..)|(.))((..)|(.))((..)|(.))",
- r"aaaaaa",
- Some((0, 6)),
- Some((0, 2)),
- Some((0, 2)),
- None,
- Some((2, 4)),
- Some((2, 4)),
- None,
- Some((4, 6)),
- Some((4, 6)),
- None
-);
-mat!(
- match_repetition_79,
- r"((..)|(.)){1}",
- r"aaaaaa",
- Some((0, 2)),
- Some((0, 2)),
- Some((0, 2)),
- None
-);
-mat!(
- match_repetition_80,
- r"((..)|(.)){2}",
- r"aaaaaa",
- Some((0, 4)),
- Some((2, 4)),
- Some((2, 4)),
- None
-);
-mat!(
- match_repetition_81,
- r"((..)|(.)){3}",
- r"aaaaaa",
- Some((0, 6)),
- Some((4, 6)),
- Some((4, 6)),
- None
-);
-mat!(
- match_repetition_83,
- r"((..)|(.))*",
- r"aaaaaa",
- Some((0, 6)),
- Some((4, 6)),
- Some((4, 6)),
- None
-);
-mat!(
- match_repetition_90,
- r"X(.?){0,}Y",
- r"X1234567Y",
- Some((0, 9)),
- Some((7, 8))
-);
-mat!(
- match_repetition_91,
- r"X(.?){1,}Y",
- r"X1234567Y",
- Some((0, 9)),
- Some((7, 8))
-);
-mat!(
- match_repetition_92,
- r"X(.?){2,}Y",
- r"X1234567Y",
- Some((0, 9)),
- Some((7, 8))
-);
-mat!(
- match_repetition_93,
- r"X(.?){3,}Y",
- r"X1234567Y",
- Some((0, 9)),
- Some((7, 8))
-);
-mat!(
- match_repetition_94,
- r"X(.?){4,}Y",
- r"X1234567Y",
- Some((0, 9)),
- Some((7, 8))
-);
-mat!(
- match_repetition_95,
- r"X(.?){5,}Y",
- r"X1234567Y",
- Some((0, 9)),
- Some((7, 8))
-);
-mat!(
- match_repetition_96,
- r"X(.?){6,}Y",
- r"X1234567Y",
- Some((0, 9)),
- Some((7, 8))
-);
-mat!(
- match_repetition_97,
- r"X(.?){7,}Y",
- r"X1234567Y",
- Some((0, 9)),
- Some((7, 8))
-);
-mat!(
- match_repetition_98,
- r"X(.?){8,}Y",
- r"X1234567Y",
- Some((0, 9)),
- Some((8, 8))
-);
-mat!(
- match_repetition_100,
- r"X(.?){0,8}Y",
- r"X1234567Y",
- Some((0, 9)),
- Some((8, 8))
-);
-mat!(
- match_repetition_102,
- r"X(.?){1,8}Y",
- r"X1234567Y",
- Some((0, 9)),
- Some((8, 8))
-);
-mat!(
- match_repetition_104,
- r"X(.?){2,8}Y",
- r"X1234567Y",
- Some((0, 9)),
- Some((8, 8))
-);
-mat!(
- match_repetition_106,
- r"X(.?){3,8}Y",
- r"X1234567Y",
- Some((0, 9)),
- Some((8, 8))
-);
-mat!(
- match_repetition_108,
- r"X(.?){4,8}Y",
- r"X1234567Y",
- Some((0, 9)),
- Some((8, 8))
-);
-mat!(
- match_repetition_110,
- r"X(.?){5,8}Y",
- r"X1234567Y",
- Some((0, 9)),
- Some((8, 8))
-);
-mat!(
- match_repetition_112,
- r"X(.?){6,8}Y",
- r"X1234567Y",
- Some((0, 9)),
- Some((8, 8))
-);
-mat!(
- match_repetition_114,
- r"X(.?){7,8}Y",
- r"X1234567Y",
- Some((0, 9)),
- Some((8, 8))
-);
-mat!(
- match_repetition_115,
- r"X(.?){8,8}Y",
- r"X1234567Y",
- Some((0, 9)),
- Some((8, 8))
-);
-mat!(
- match_repetition_126,
- r"(a|ab|c|bcd){0,}(d*)",
- r"ababcd",
- Some((0, 1)),
- Some((0, 1)),
- Some((1, 1))
-);
-mat!(
- match_repetition_127,
- r"(a|ab|c|bcd){1,}(d*)",
- r"ababcd",
- Some((0, 1)),
- Some((0, 1)),
- Some((1, 1))
-);
-mat!(
- match_repetition_128,
- r"(a|ab|c|bcd){2,}(d*)",
- r"ababcd",
- Some((0, 6)),
- Some((3, 6)),
- Some((6, 6))
-);
-mat!(
- match_repetition_129,
- r"(a|ab|c|bcd){3,}(d*)",
- r"ababcd",
- Some((0, 6)),
- Some((3, 6)),
- Some((6, 6))
-);
-mat!(match_repetition_130, r"(a|ab|c|bcd){4,}(d*)", r"ababcd", None);
-mat!(
- match_repetition_131,
- r"(a|ab|c|bcd){0,10}(d*)",
- r"ababcd",
- Some((0, 1)),
- Some((0, 1)),
- Some((1, 1))
-);
-mat!(
- match_repetition_132,
- r"(a|ab|c|bcd){1,10}(d*)",
- r"ababcd",
- Some((0, 1)),
- Some((0, 1)),
- Some((1, 1))
-);
-mat!(
- match_repetition_133,
- r"(a|ab|c|bcd){2,10}(d*)",
- r"ababcd",
- Some((0, 6)),
- Some((3, 6)),
- Some((6, 6))
-);
-mat!(
- match_repetition_134,
- r"(a|ab|c|bcd){3,10}(d*)",
- r"ababcd",
- Some((0, 6)),
- Some((3, 6)),
- Some((6, 6))
-);
-mat!(match_repetition_135, r"(a|ab|c|bcd){4,10}(d*)", r"ababcd", None);
-mat!(
- match_repetition_136,
- r"(a|ab|c|bcd)*(d*)",
- r"ababcd",
- Some((0, 1)),
- Some((0, 1)),
- Some((1, 1))
-);
-mat!(
- match_repetition_137,
- r"(a|ab|c|bcd)+(d*)",
- r"ababcd",
- Some((0, 1)),
- Some((0, 1)),
- Some((1, 1))
-);
-mat!(
- match_repetition_143,
- r"(ab|a|c|bcd){0,}(d*)",
- r"ababcd",
- Some((0, 6)),
- Some((4, 5)),
- Some((5, 6))
-);
-mat!(
- match_repetition_145,
- r"(ab|a|c|bcd){1,}(d*)",
- r"ababcd",
- Some((0, 6)),
- Some((4, 5)),
- Some((5, 6))
-);
-mat!(
- match_repetition_147,
- r"(ab|a|c|bcd){2,}(d*)",
- r"ababcd",
- Some((0, 6)),
- Some((4, 5)),
- Some((5, 6))
-);
-mat!(
- match_repetition_149,
- r"(ab|a|c|bcd){3,}(d*)",
- r"ababcd",
- Some((0, 6)),
- Some((4, 5)),
- Some((5, 6))
-);
-mat!(match_repetition_150, r"(ab|a|c|bcd){4,}(d*)", r"ababcd", None);
-mat!(
- match_repetition_152,
- r"(ab|a|c|bcd){0,10}(d*)",
- r"ababcd",
- Some((0, 6)),
- Some((4, 5)),
- Some((5, 6))
-);
-mat!(
- match_repetition_154,
- r"(ab|a|c|bcd){1,10}(d*)",
- r"ababcd",
- Some((0, 6)),
- Some((4, 5)),
- Some((5, 6))
-);
-mat!(
- match_repetition_156,
- r"(ab|a|c|bcd){2,10}(d*)",
- r"ababcd",
- Some((0, 6)),
- Some((4, 5)),
- Some((5, 6))
-);
-mat!(
- match_repetition_158,
- r"(ab|a|c|bcd){3,10}(d*)",
- r"ababcd",
- Some((0, 6)),
- Some((4, 5)),
- Some((5, 6))
-);
-mat!(match_repetition_159, r"(ab|a|c|bcd){4,10}(d*)", r"ababcd", None);
-mat!(
- match_repetition_161,
- r"(ab|a|c|bcd)*(d*)",
- r"ababcd",
- Some((0, 6)),
- Some((4, 5)),
- Some((5, 6))
-);
-mat!(
- match_repetition_163,
- r"(ab|a|c|bcd)+(d*)",
- r"ababcd",
- Some((0, 6)),
- Some((4, 5)),
- Some((5, 6))
-);
diff --git a/vendor/regex/tests/fuzz/mod.rs b/vendor/regex/tests/fuzz/mod.rs
new file mode 100644
index 000000000..88c196ae6
--- /dev/null
+++ b/vendor/regex/tests/fuzz/mod.rs
@@ -0,0 +1,166 @@
+// This set of tests is different from regression_fuzz in that the tests start
+// from the fuzzer data directly. The test essentially duplicates the fuzz
+// target. I wonder if there's a better way to set this up... Hmmm. I bet
+// `cargo fuzz` has something where it can run a target against crash files and
+// verify that they pass.
+
+// This case found by the fuzzer causes the meta engine to use the "reverse
+// inner" literal strategy. That in turn uses a specialized search routine
+// for the lazy DFA in order to avoid worst case quadratic behavior. That
+// specialized search routine had a bug where it assumed that start state
+// specialization was disabled. But this is indeed not the case, since it
+// reuses the "general" lazy DFA for the full regex created as part of the core
+// strategy, which might very well have start states specialized due to the
+// existence of a prefilter.
+//
+// This is a somewhat weird case because if the core engine has a prefilter,
+// then it's usually the case that the "reverse inner" optimization won't be
+// pursued in that case. But there are some heuristics that try to detect
+// whether a prefilter is "fast" or not. If it's not, then the meta engine will
+// attempt the reverse inner optimization. And indeed, that's what happens
+// here. So the reverse inner optimization ends up with a lazy DFA that has
+// start states specialized. Ideally this wouldn't happen because specializing
+// start states without a prefilter inside the DFA can be disastrous for
+// performance by causing the DFA to ping-pong in and out of the special state
+// handling. In this case, it's probably not a huge deal because the lazy
+// DFA is only used for part of the matching where as the work horse is the
+// prefilter found by the reverse inner optimization.
+//
+// We could maybe fix this by refactoring the meta engine to be a little more
+// careful. For example, by attempting the optimizations before building the
+// core engine. But this is perhaps a little tricky.
+#[test]
+fn meta_stopat_specialize_start_states() {
+ let data = include_bytes!(
+ "testdata/crash-8760b19b25d74e3603d4c643e9c7404fdd3631f9",
+ );
+ let _ = run(data);
+}
+
+// Same bug as meta_stopat_specialize_start_states, but minimized by the
+// fuzzer.
+#[test]
+fn meta_stopat_specialize_start_states_min() {
+ let data = include_bytes!(
+ "testdata/minimized-from-8760b19b25d74e3603d4c643e9c7404fdd3631f9",
+ );
+ let _ = run(data);
+}
+
+// This input generated a pattern with a fail state (e.g., \P{any}, [^\s\S]
+// or [a&&b]). But the fail state was in a branch, where a subsequent branch
+// should have led to an overall match, but handling of the fail state
+// prevented it from doing so. A hand-minimized version of this is '[^\s\S]A|B'
+// on the haystack 'B'. That should yield a match of 'B'.
+//
+// The underlying cause was an issue in how DFA determinization handled fail
+// states. The bug didn't impact the PikeVM or the bounded backtracker.
+#[test]
+fn fail_branch_prevents_match() {
+ let data = include_bytes!(
+ "testdata/crash-cd33b13df59ea9d74503986f9d32a270dd43cc04",
+ );
+ let _ = run(data);
+}
+
+// This input generated a pattern that contained a sub-expression like this:
+//
+// a{0}{50000}
+//
+// This turned out to provoke quadratic behavior in the NFA compiler.
+// Basically, the NFA compiler works in two phases. The first phase builds
+// a more complicated-but-simpler-to-construct sequence of NFA states that
+// includes unconditional epsilon transitions. As part of converting this
+// sequence to the "final" NFA, we remove those unconditional espilon
+// transition. The code responsible for doing this follows every chain of
+// these transitions and remaps the state IDs. The way we were doing this
+// before resulted in re-following every subsequent part of the chain for each
+// state in the chain, which ended up being quadratic behavior. We effectively
+// memoized this, which fixed the performance bug.
+#[test]
+fn slow_big_empty_chain() {
+ let data = include_bytes!(
+ "testdata/slow-unit-9ca9cc9929fee1fcbb847a78384effb8b98ea18a",
+ );
+ let _ = run(data);
+}
+
+// A different case of slow_big_empty_chain.
+#[test]
+fn slow_big_empty_chain2() {
+ let data = include_bytes!(
+ "testdata/slow-unit-3ab758ea520027fefd3f00e1384d9aeef155739e",
+ );
+ let _ = run(data);
+}
+
+// A different case of slow_big_empty_chain.
+#[test]
+fn slow_big_empty_chain3() {
+ let data = include_bytes!(
+ "testdata/slow-unit-b8a052f4254802edbe5f569b6ce6e9b6c927e9d6",
+ );
+ let _ = run(data);
+}
+
+// A different case of slow_big_empty_chain.
+#[test]
+fn slow_big_empty_chain4() {
+ let data = include_bytes!(
+ "testdata/slow-unit-93c73a43581f205f9aaffd9c17e52b34b17becd0",
+ );
+ let _ = run(data);
+}
+
+// A different case of slow_big_empty_chain.
+#[test]
+fn slow_big_empty_chain5() {
+ let data = include_bytes!(
+ "testdata/slow-unit-5345fccadf3812c53c3ccc7af5aa2741b7b2106c",
+ );
+ let _ = run(data);
+}
+
+// A different case of slow_big_empty_chain.
+#[test]
+fn slow_big_empty_chain6() {
+ let data = include_bytes!(
+ "testdata/slow-unit-6bd643eec330166e4ada91da2d3f284268481085",
+ );
+ let _ = run(data);
+}
+
+// This fuzz input generated a pattern with a large repetition that would fail
+// NFA compilation, but its HIR was small. (HIR doesn't expand repetitions.)
+// But, the bounds were high enough that the minimum length calculation
+// overflowed. We fixed this by using saturating arithmetic (and also checked
+// arithmetic for the maximum length calculation).
+//
+// Incidentally, this was the only unguarded arithmetic operation performed in
+// the HIR smart constructors. And the fuzzer found it. Hah. Nice.
+#[test]
+fn minimum_len_overflow() {
+ let data = include_bytes!(
+ "testdata/crash-7eb3351f0965e5d6c1cb98aa8585949ef96531ff",
+ );
+ let _ = run(data);
+}
+
+// This is the fuzz target function. We duplicate it here since this is the
+// thing we use to interpret the data. It is ultimately what we want to
+// succeed.
+fn run(data: &[u8]) -> Option<()> {
+ if data.len() < 2 {
+ return None;
+ }
+ let mut split_at = usize::from(data[0]);
+ let data = std::str::from_utf8(&data[1..]).ok()?;
+ // Split data into a regex and haystack to search.
+ let len = usize::try_from(data.chars().count()).ok()?;
+ split_at = std::cmp::max(split_at, 1) % len;
+ let char_index = data.char_indices().nth(split_at)?.0;
+ let (pattern, input) = data.split_at(char_index);
+ let re = regex::Regex::new(pattern).ok()?;
+ re.is_match(input);
+ Some(())
+}
diff --git a/vendor/regex/tests/fuzz/testdata/crash-7eb3351f0965e5d6c1cb98aa8585949ef96531ff b/vendor/regex/tests/fuzz/testdata/crash-7eb3351f0965e5d6c1cb98aa8585949ef96531ff
new file mode 100644
index 000000000..f7ffbc974
--- /dev/null
+++ b/vendor/regex/tests/fuzz/testdata/crash-7eb3351f0965e5d6c1cb98aa8585949ef96531ff
Binary files differ
diff --git a/vendor/regex/tests/fuzz/testdata/crash-8760b19b25d74e3603d4c643e9c7404fdd3631f9 b/vendor/regex/tests/fuzz/testdata/crash-8760b19b25d74e3603d4c643e9c7404fdd3631f9
new file mode 100644
index 000000000..86748199b
--- /dev/null
+++ b/vendor/regex/tests/fuzz/testdata/crash-8760b19b25d74e3603d4c643e9c7404fdd3631f9
Binary files differ
diff --git a/vendor/regex/tests/fuzz/testdata/crash-cd33b13df59ea9d74503986f9d32a270dd43cc04 b/vendor/regex/tests/fuzz/testdata/crash-cd33b13df59ea9d74503986f9d32a270dd43cc04
new file mode 100644
index 000000000..152769d2d
--- /dev/null
+++ b/vendor/regex/tests/fuzz/testdata/crash-cd33b13df59ea9d74503986f9d32a270dd43cc04
Binary files differ
diff --git a/vendor/regex/tests/fuzz/testdata/minimized-from-8760b19b25d74e3603d4c643e9c7404fdd3631f9 b/vendor/regex/tests/fuzz/testdata/minimized-from-8760b19b25d74e3603d4c643e9c7404fdd3631f9
new file mode 100644
index 000000000..69663d5c7
--- /dev/null
+++ b/vendor/regex/tests/fuzz/testdata/minimized-from-8760b19b25d74e3603d4c643e9c7404fdd3631f9
Binary files differ
diff --git a/vendor/regex/tests/fuzz/testdata/slow-unit-3ab758ea520027fefd3f00e1384d9aeef155739e b/vendor/regex/tests/fuzz/testdata/slow-unit-3ab758ea520027fefd3f00e1384d9aeef155739e
new file mode 100644
index 000000000..6c2280353
--- /dev/null
+++ b/vendor/regex/tests/fuzz/testdata/slow-unit-3ab758ea520027fefd3f00e1384d9aeef155739e
Binary files differ
diff --git a/vendor/regex/tests/fuzz/testdata/slow-unit-5345fccadf3812c53c3ccc7af5aa2741b7b2106c b/vendor/regex/tests/fuzz/testdata/slow-unit-5345fccadf3812c53c3ccc7af5aa2741b7b2106c
new file mode 100644
index 000000000..0570f328c
--- /dev/null
+++ b/vendor/regex/tests/fuzz/testdata/slow-unit-5345fccadf3812c53c3ccc7af5aa2741b7b2106c
Binary files differ
diff --git a/vendor/regex/tests/fuzz/testdata/slow-unit-6bd643eec330166e4ada91da2d3f284268481085 b/vendor/regex/tests/fuzz/testdata/slow-unit-6bd643eec330166e4ada91da2d3f284268481085
new file mode 100644
index 000000000..182bc7fa1
--- /dev/null
+++ b/vendor/regex/tests/fuzz/testdata/slow-unit-6bd643eec330166e4ada91da2d3f284268481085
Binary files differ
diff --git a/vendor/regex/tests/fuzz/testdata/slow-unit-93c73a43581f205f9aaffd9c17e52b34b17becd0 b/vendor/regex/tests/fuzz/testdata/slow-unit-93c73a43581f205f9aaffd9c17e52b34b17becd0
new file mode 100644
index 000000000..f939c33ab
--- /dev/null
+++ b/vendor/regex/tests/fuzz/testdata/slow-unit-93c73a43581f205f9aaffd9c17e52b34b17becd0
Binary files differ
diff --git a/vendor/regex/tests/fuzz/testdata/slow-unit-9ca9cc9929fee1fcbb847a78384effb8b98ea18a b/vendor/regex/tests/fuzz/testdata/slow-unit-9ca9cc9929fee1fcbb847a78384effb8b98ea18a
new file mode 100644
index 000000000..a87de230f
--- /dev/null
+++ b/vendor/regex/tests/fuzz/testdata/slow-unit-9ca9cc9929fee1fcbb847a78384effb8b98ea18a
Binary files differ
diff --git a/vendor/regex/tests/fuzz/testdata/slow-unit-b8a052f4254802edbe5f569b6ce6e9b6c927e9d6 b/vendor/regex/tests/fuzz/testdata/slow-unit-b8a052f4254802edbe5f569b6ce6e9b6c927e9d6
new file mode 100644
index 000000000..dc3329339
--- /dev/null
+++ b/vendor/regex/tests/fuzz/testdata/slow-unit-b8a052f4254802edbe5f569b6ce6e9b6c927e9d6
Binary files differ
diff --git a/vendor/regex/tests/lib.rs b/vendor/regex/tests/lib.rs
new file mode 100644
index 000000000..b3f69423d
--- /dev/null
+++ b/vendor/regex/tests/lib.rs
@@ -0,0 +1,58 @@
+#![cfg_attr(feature = "pattern", feature(pattern))]
+
+mod fuzz;
+mod misc;
+mod regression;
+mod regression_fuzz;
+mod replace;
+#[cfg(feature = "pattern")]
+mod searcher;
+mod suite_bytes;
+mod suite_bytes_set;
+mod suite_string;
+mod suite_string_set;
+
+const BLACKLIST: &[&str] = &[
+ // Nothing to blacklist yet!
+];
+
+fn suite() -> anyhow::Result<regex_test::RegexTests> {
+ let _ = env_logger::try_init();
+
+ let mut tests = regex_test::RegexTests::new();
+ macro_rules! load {
+ ($name:expr) => {{
+ const DATA: &[u8] =
+ include_bytes!(concat!("../testdata/", $name, ".toml"));
+ tests.load_slice($name, DATA)?;
+ }};
+ }
+
+ load!("anchored");
+ load!("bytes");
+ load!("crazy");
+ load!("crlf");
+ load!("earliest");
+ load!("empty");
+ load!("expensive");
+ load!("flags");
+ load!("iter");
+ load!("leftmost-all");
+ load!("line-terminator");
+ load!("misc");
+ load!("multiline");
+ load!("no-unicode");
+ load!("overlapping");
+ load!("regression");
+ load!("set");
+ load!("substring");
+ load!("unicode");
+ load!("utf8");
+ load!("word-boundary");
+ load!("word-boundary-special");
+ load!("fowler/basic");
+ load!("fowler/nullsubexpr");
+ load!("fowler/repetition");
+
+ Ok(tests)
+}
diff --git a/vendor/regex/tests/macros.rs b/vendor/regex/tests/macros.rs
deleted file mode 100644
index e70e9489f..000000000
--- a/vendor/regex/tests/macros.rs
+++ /dev/null
@@ -1,160 +0,0 @@
-// Convenience macros.
-
-macro_rules! findall {
- ($re:expr, $text:expr) => {{
- $re.find_iter(text!($text))
- .map(|m| (m.start(), m.end())).collect::<Vec<_>>()
- }}
-}
-
-// Macros for automatically producing tests.
-
-macro_rules! ismatch {
- ($name:ident, $re:expr, $text:expr, $ismatch:expr) => {
- #[test]
- fn $name() {
- let re = regex!($re);
- assert_eq!($ismatch, re.is_match(text!($text)));
- }
- };
-}
-
-macro_rules! mat(
- ($name:ident, $re:expr, $text:expr, $($loc:tt)+) => (
- #[test]
- fn $name() {
- let text = text!($text);
- let expected: Vec<Option<_>> = vec![$($loc)+];
- let r = regex!($re);
- let got: Vec<Option<_>> = match r.captures(text) {
- Some(c) => {
- assert!(r.is_match(text));
- assert!(r.shortest_match(text).is_some());
- r.capture_names()
- .enumerate()
- .map(|(i, _)| c.get(i).map(|m| (m.start(), m.end())))
- .collect()
- }
- None => vec![None],
- };
- // The test set sometimes leave out capture groups, so truncate
- // actual capture groups to match test set.
- let mut sgot = &got[..];
- if sgot.len() > expected.len() {
- sgot = &sgot[0..expected.len()]
- }
- if expected != sgot {
- panic!("For RE '{}' against '{:?}', \
- expected '{:?}' but got '{:?}'",
- $re, text, expected, sgot);
- }
- }
- );
-);
-
-macro_rules! matiter(
- ($name:ident, $re:expr, $text:expr) => (
- #[test]
- fn $name() {
- let text = text!($text);
- let expected: Vec<(usize, usize)> = vec![];
- let r = regex!($re);
- let got: Vec<_> =
- r.find_iter(text).map(|m| (m.start(), m.end())).collect();
- if expected != got {
- panic!("For RE '{}' against '{:?}', \
- expected '{:?}' but got '{:?}'",
- $re, text, expected, got);
- }
- let captures_got: Vec<_> =
- r.captures_iter(text)
- .map(|c| c.get(0).unwrap())
- .map(|m| (m.start(), m.end()))
- .collect();
- if captures_got != got {
- panic!("For RE '{}' against '{:?}', \
- got '{:?}' using find_iter but got '{:?}' \
- using captures_iter",
- $re, text, got, captures_got);
- }
- }
- );
- ($name:ident, $re:expr, $text:expr, $($loc:tt)+) => (
- #[test]
- fn $name() {
- let text = text!($text);
- let expected: Vec<_> = vec![$($loc)+];
- let r = regex!($re);
- let got: Vec<_> =
- r.find_iter(text).map(|m| (m.start(), m.end())).collect();
- if expected != got {
- panic!("For RE '{}' against '{:?}', \
- expected '{:?}' but got '{:?}'",
- $re, text, expected, got);
- }
- let captures_got: Vec<_> =
- r.captures_iter(text)
- .map(|c| c.get(0).unwrap())
- .map(|m| (m.start(), m.end()))
- .collect();
- if captures_got != got {
- panic!("For RE '{}' against '{:?}', \
- got '{:?}' using find_iter but got '{:?}' \
- using captures_iter",
- $re, text, got, captures_got);
- }
- }
- );
-);
-
-macro_rules! matset {
- ($name:ident, $res:expr, $text:expr, $($match_index:expr),*) => {
- #[test]
- fn $name() {
- let text = text!($text);
- let set = regex_set!($res);
- assert!(set.is_match(text));
- let expected = vec![$($match_index),*];
- let matches = set.matches(text);
- assert!(matches.matched_any());
- let got: Vec<_> = matches.into_iter().collect();
- assert_eq!(expected, got);
- }
- }
-}
-
-macro_rules! nomatset {
- ($name:ident, $res:expr, $text:expr) => {
- #[test]
- fn $name() {
- let text = text!($text);
- let set = regex_set!($res);
- assert!(!set.is_match(text));
- let matches = set.matches(text);
- assert!(!matches.matched_any());
- assert_eq!(0, matches.into_iter().count());
- }
- }
-}
-
-macro_rules! split {
- ($name:ident, $re:expr, $text:expr, $expected:expr) => {
- #[test]
- fn $name() {
- let re = regex!($re);
- let splitted: Vec<_> = re.split(t!($text)).collect();
- assert_eq!($expected, &*splitted);
- }
- }
-}
-
-macro_rules! splitn {
- ($name:ident, $re:expr, $text:expr, $limit:expr, $expected:expr) => {
- #[test]
- fn $name() {
- let re = regex!($re);
- let splitted: Vec<_> = re.splitn(t!($text), $limit).collect();
- assert_eq!($expected, &*splitted);
- }
- }
-}
diff --git a/vendor/regex/tests/macros_bytes.rs b/vendor/regex/tests/macros_bytes.rs
deleted file mode 100644
index 3d6c8c3ac..000000000
--- a/vendor/regex/tests/macros_bytes.rs
+++ /dev/null
@@ -1,39 +0,0 @@
-// Macros for use in writing tests generic over &str/&[u8].
-macro_rules! text { ($text:expr) => { $text.as_bytes() } }
-macro_rules! t { ($re:expr) => { text!($re) } }
-macro_rules! match_text { ($text:expr) => { $text.as_bytes() } }
-macro_rules! use_ { ($($path: tt)*) => { use regex::bytes::$($path)*; } }
-macro_rules! empty_vec { () => { <Vec<&[u8]>>::new() } }
-macro_rules! bytes { ($text:expr) => { $text } }
-
-macro_rules! no_expand {
- ($text:expr) => {{
- use regex::bytes::NoExpand;
- NoExpand(text!($text))
- }}
-}
-
-macro_rules! show {
- ($text:expr) => {{
- use std::ascii::escape_default;
- let mut s = vec![];
- for &b in bytes!($text) {
- s.extend(escape_default(b));
- }
- String::from_utf8(s).unwrap()
- }}
-}
-
-macro_rules! expand {
- ($name:ident, $re:expr, $text:expr, $expand:expr, $expected:expr) => {
- #[test]
- fn $name() {
- let re = regex!($re);
- let cap = re.captures(t!($text)).unwrap();
-
- let mut got = vec![];
- cap.expand(t!($expand), &mut got);
- assert_eq!(show!(t!($expected)), show!(&*got));
- }
- }
-}
diff --git a/vendor/regex/tests/macros_str.rs b/vendor/regex/tests/macros_str.rs
deleted file mode 100644
index 7b7eb110c..000000000
--- a/vendor/regex/tests/macros_str.rs
+++ /dev/null
@@ -1,38 +0,0 @@
-// Macros for use in writing tests generic over &str/&[u8].
-macro_rules! text { ($text:expr) => { $text } }
-macro_rules! t { ($text:expr) => { text!($text) } }
-macro_rules! match_text { ($text:expr) => { $text.as_str() } }
-macro_rules! use_ { ($($path: tt)*) => { use regex::$($path)*; } }
-macro_rules! empty_vec { () => { <Vec<&str>>::new() } }
-macro_rules! bytes { ($text:expr) => { std::str::from_utf8($text.as_ref()).unwrap() } }
-
-macro_rules! no_expand {
- ($text:expr) => {{
- use regex::NoExpand;
- NoExpand(text!($text))
- }}
-}
-
-macro_rules! show { ($text:expr) => { $text } }
-
-// N.B. The expansion API for &str and &[u8] APIs differs slightly for now,
-// but they should be unified in 1.0. Then we can move this macro back into
-// tests/api.rs where it is used. ---AG
-macro_rules! expand {
- ($name:ident, $re:expr, $text:expr, $expand:expr, $expected:expr) => {
- #[test]
- fn $name() {
- let re = regex!($re);
- let cap = re.captures(t!($text)).unwrap();
-
- let mut got = String::new();
- cap.expand(t!($expand), &mut got);
- assert_eq!(show!(t!($expected)), show!(&*got));
- }
- }
-}
-
-#[cfg(feature = "pattern")]
-macro_rules! searcher_expr { ($e:expr) => ($e) }
-#[cfg(not(feature = "pattern"))]
-macro_rules! searcher_expr { ($e:expr) => ({}) }
diff --git a/vendor/regex/tests/misc.rs b/vendor/regex/tests/misc.rs
index 314811e25..91e7d2898 100644
--- a/vendor/regex/tests/misc.rs
+++ b/vendor/regex/tests/misc.rs
@@ -1,4 +1,143 @@
-mat!(prefix_literal_match, r"^abc", r"abc", Some((0, 3)));
-mat!(prefix_literal_nomatch, r"^abc", r"zabc", None);
-mat!(one_literal_edge, r"abc", r"xxxxxab", None);
-matiter!(terminates, r"a$", r"a", (0, 1));
+use regex::Regex;
+
+macro_rules! regex {
+ ($pattern:expr) => {
+ regex::Regex::new($pattern).unwrap()
+ };
+}
+
+#[test]
+fn unclosed_group_error() {
+ let err = Regex::new(r"(").unwrap_err();
+ let msg = err.to_string();
+ assert!(msg.contains("unclosed group"), "error message: {:?}", msg);
+}
+
+#[test]
+fn regex_string() {
+ assert_eq!(r"[a-zA-Z0-9]+", regex!(r"[a-zA-Z0-9]+").as_str());
+ assert_eq!(r"[a-zA-Z0-9]+", &format!("{}", regex!(r"[a-zA-Z0-9]+")));
+ assert_eq!(
+ r#"Regex("[a-zA-Z0-9]+")"#,
+ &format!("{:?}", regex!(r"[a-zA-Z0-9]+"))
+ );
+}
+
+#[test]
+fn capture_names() {
+ let re = regex!(r"(.)(?P<a>.)");
+ assert_eq!(3, re.captures_len());
+ assert_eq!((3, Some(3)), re.capture_names().size_hint());
+ assert_eq!(
+ vec![None, None, Some("a")],
+ re.capture_names().collect::<Vec<_>>()
+ );
+}
+
+#[test]
+fn capture_index() {
+ let re = regex!(r"^(?P<name>.+)$");
+ let cap = re.captures("abc").unwrap();
+ assert_eq!(&cap[0], "abc");
+ assert_eq!(&cap[1], "abc");
+ assert_eq!(&cap["name"], "abc");
+}
+
+#[test]
+#[should_panic]
+fn capture_index_panic_usize() {
+ let re = regex!(r"^(?P<name>.+)$");
+ let cap = re.captures("abc").unwrap();
+ let _ = cap[2];
+}
+
+#[test]
+#[should_panic]
+fn capture_index_panic_name() {
+ let re = regex!(r"^(?P<name>.+)$");
+ let cap = re.captures("abc").unwrap();
+ let _ = cap["bad name"];
+}
+
+#[test]
+fn capture_index_lifetime() {
+ // This is a test of whether the types on `caps["..."]` are general
+ // enough. If not, this will fail to typecheck.
+ fn inner(s: &str) -> usize {
+ let re = regex!(r"(?P<number>[0-9]+)");
+ let caps = re.captures(s).unwrap();
+ caps["number"].len()
+ }
+ assert_eq!(3, inner("123"));
+}
+
+#[test]
+fn capture_misc() {
+ let re = regex!(r"(.)(?P<a>a)?(.)(?P<b>.)");
+ let cap = re.captures("abc").unwrap();
+
+ assert_eq!(5, cap.len());
+
+ assert_eq!((0, 3), {
+ let m = cap.get(0).unwrap();
+ (m.start(), m.end())
+ });
+ assert_eq!(None, cap.get(2));
+ assert_eq!((2, 3), {
+ let m = cap.get(4).unwrap();
+ (m.start(), m.end())
+ });
+
+ assert_eq!("abc", cap.get(0).unwrap().as_str());
+ assert_eq!(None, cap.get(2));
+ assert_eq!("c", cap.get(4).unwrap().as_str());
+
+ assert_eq!(None, cap.name("a"));
+ assert_eq!("c", cap.name("b").unwrap().as_str());
+}
+
+#[test]
+fn sub_capture_matches() {
+ let re = regex!(r"([a-z])(([a-z])|([0-9]))");
+ let cap = re.captures("a5").unwrap();
+ let subs: Vec<_> = cap.iter().collect();
+
+ assert_eq!(5, subs.len());
+ assert!(subs[0].is_some());
+ assert!(subs[1].is_some());
+ assert!(subs[2].is_some());
+ assert!(subs[3].is_none());
+ assert!(subs[4].is_some());
+
+ assert_eq!("a5", subs[0].unwrap().as_str());
+ assert_eq!("a", subs[1].unwrap().as_str());
+ assert_eq!("5", subs[2].unwrap().as_str());
+ assert_eq!("5", subs[4].unwrap().as_str());
+}
+
+// Test that the DFA can handle pathological cases. (This should result in the
+// DFA's cache being flushed too frequently, which should cause it to quit and
+// fall back to the NFA algorithm.)
+#[test]
+fn dfa_handles_pathological_case() {
+ fn ones_and_zeroes(count: usize) -> String {
+ let mut s = String::new();
+ for i in 0..count {
+ if i % 3 == 0 {
+ s.push('1');
+ } else {
+ s.push('0');
+ }
+ }
+ s
+ }
+
+ let re = regex!(r"[01]*1[01]{20}$");
+ let text = {
+ let mut pieces = ones_and_zeroes(100_000);
+ pieces.push('1');
+ pieces.push_str(&ones_and_zeroes(20));
+ pieces
+ };
+ assert!(re.is_match(&text));
+}
diff --git a/vendor/regex/tests/multiline.rs b/vendor/regex/tests/multiline.rs
deleted file mode 100644
index 62ee47b62..000000000
--- a/vendor/regex/tests/multiline.rs
+++ /dev/null
@@ -1,144 +0,0 @@
-matiter!(
- match_multi_1,
- r"(?m)^[a-z]+$",
- "abc\ndef\nxyz",
- (0, 3),
- (4, 7),
- (8, 11)
-);
-matiter!(match_multi_2, r"(?m)^$", "abc\ndef\nxyz");
-matiter!(match_multi_3, r"(?m)^", "abc\ndef\nxyz", (0, 0), (4, 4), (8, 8));
-matiter!(match_multi_4, r"(?m)$", "abc\ndef\nxyz", (3, 3), (7, 7), (11, 11));
-matiter!(
- match_multi_5,
- r"(?m)^[a-z]",
- "abc\ndef\nxyz",
- (0, 1),
- (4, 5),
- (8, 9)
-);
-matiter!(match_multi_6, r"(?m)[a-z]^", "abc\ndef\nxyz");
-matiter!(
- match_multi_7,
- r"(?m)[a-z]$",
- "abc\ndef\nxyz",
- (2, 3),
- (6, 7),
- (10, 11)
-);
-matiter!(match_multi_8, r"(?m)$[a-z]", "abc\ndef\nxyz");
-matiter!(match_multi_9, r"(?m)^$", "", (0, 0));
-
-matiter!(
- match_multi_rep_1,
- r"(?m)(?:^$)*",
- "a\nb\nc",
- (0, 0),
- (1, 1),
- (2, 2),
- (3, 3),
- (4, 4),
- (5, 5)
-);
-matiter!(
- match_multi_rep_2,
- r"(?m)(?:^|a)+",
- "a\naaa\n",
- (0, 0),
- (2, 2),
- (3, 5),
- (6, 6)
-);
-matiter!(
- match_multi_rep_3,
- r"(?m)(?:^|a)*",
- "a\naaa\n",
- (0, 1),
- (2, 5),
- (6, 6)
-);
-matiter!(
- match_multi_rep_4,
- r"(?m)(?:^[a-z])+",
- "abc\ndef\nxyz",
- (0, 1),
- (4, 5),
- (8, 9)
-);
-matiter!(
- match_multi_rep_5,
- r"(?m)(?:^[a-z]{3}\n?)+",
- "abc\ndef\nxyz",
- (0, 11)
-);
-matiter!(
- match_multi_rep_6,
- r"(?m)(?:^[a-z]{3}\n?)*",
- "abc\ndef\nxyz",
- (0, 11)
-);
-matiter!(
- match_multi_rep_7,
- r"(?m)(?:\n?[a-z]{3}$)+",
- "abc\ndef\nxyz",
- (0, 11)
-);
-matiter!(
- match_multi_rep_8,
- r"(?m)(?:\n?[a-z]{3}$)*",
- "abc\ndef\nxyz",
- (0, 11)
-);
-matiter!(
- match_multi_rep_9,
- r"(?m)^*",
- "\naa\n",
- (0, 0),
- (1, 1),
- (2, 2),
- (3, 3),
- (4, 4)
-);
-matiter!(match_multi_rep_10, r"(?m)^+", "\naa\n", (0, 0), (1, 1), (4, 4));
-matiter!(
- match_multi_rep_11,
- r"(?m)$*",
- "\naa\n",
- (0, 0),
- (1, 1),
- (2, 2),
- (3, 3),
- (4, 4)
-);
-matiter!(match_multi_rep_12, r"(?m)$+", "\naa\n", (0, 0), (3, 3), (4, 4));
-matiter!(match_multi_rep_13, r"(?m)(?:$\n)+", "\n\naaa\n\n", (0, 2), (5, 7));
-matiter!(
- match_multi_rep_14,
- r"(?m)(?:$\n)*",
- "\n\naaa\n\n",
- (0, 2),
- (3, 3),
- (4, 4),
- (5, 7)
-);
-matiter!(match_multi_rep_15, r"(?m)(?:$\n^)+", "\n\naaa\n\n", (0, 2), (5, 7));
-matiter!(
- match_multi_rep_16,
- r"(?m)(?:^|$)+",
- "\n\naaa\n\n",
- (0, 0),
- (1, 1),
- (2, 2),
- (5, 5),
- (6, 6),
- (7, 7)
-);
-matiter!(
- match_multi_rep_17,
- r"(?m)(?:$\n)*",
- "\n\naaa\n\n",
- (0, 2),
- (3, 3),
- (4, 4),
- (5, 7)
-);
diff --git a/vendor/regex/tests/noparse.rs b/vendor/regex/tests/noparse.rs
deleted file mode 100644
index 8ded1dce7..000000000
--- a/vendor/regex/tests/noparse.rs
+++ /dev/null
@@ -1,45 +0,0 @@
-macro_rules! noparse(
- ($name:ident, $re:expr) => (
- #[test]
- fn $name() {
- let re = $re;
- match regex_new!(re) {
- Err(_) => {},
- Ok(_) => panic!("Regex '{}' should cause a parse error.", re),
- }
- }
- );
-);
-
-noparse!(fail_no_repeat_arg, "*");
-noparse!(fail_incomplete_escape, "\\");
-noparse!(fail_class_incomplete, "[A-");
-noparse!(fail_class_not_closed, "[A");
-noparse!(fail_class_no_begin, r"[\A]");
-noparse!(fail_class_no_end, r"[\z]");
-noparse!(fail_class_no_boundary, r"[\b]");
-noparse!(fail_open_paren, "(");
-noparse!(fail_close_paren, ")");
-noparse!(fail_invalid_range, "[a-Z]");
-noparse!(fail_empty_capture_name, "(?P<>a)");
-noparse!(fail_bad_capture_name, "(?P<na-me>)");
-noparse!(fail_bad_flag, "(?a)a");
-noparse!(fail_too_big, "a{10000000}");
-noparse!(fail_counted_no_close, "a{1001");
-noparse!(fail_counted_decreasing, "a{2,1}");
-noparse!(fail_counted_nonnegative, "a{-1,1}");
-noparse!(fail_unfinished_cap, "(?");
-noparse!(fail_unfinished_escape, "\\");
-noparse!(fail_octal_digit, r"\8");
-noparse!(fail_hex_digit, r"\xG0");
-noparse!(fail_hex_short, r"\xF");
-noparse!(fail_hex_long_digits, r"\x{fffg}");
-noparse!(fail_flag_bad, "(?a)");
-noparse!(fail_flag_empty, "(?)");
-noparse!(fail_double_neg, "(?-i-i)");
-noparse!(fail_neg_empty, "(?i-)");
-noparse!(fail_dupe_named, "(?P<a>.)(?P<a>.)");
-noparse!(fail_range_end_no_class, "[a-[:lower:]]");
-noparse!(fail_range_end_no_begin, r"[a-\A]");
-noparse!(fail_range_end_no_end, r"[a-\z]");
-noparse!(fail_range_end_no_boundary, r"[a-\b]");
diff --git a/vendor/regex/tests/regression.rs b/vendor/regex/tests/regression.rs
index 291062a77..a5867016b 100644
--- a/vendor/regex/tests/regression.rs
+++ b/vendor/regex/tests/regression.rs
@@ -1,235 +1,67 @@
+use regex::Regex;
+
+macro_rules! regex {
+ ($pattern:expr) => {
+ regex::Regex::new($pattern).unwrap()
+ };
+}
+
// See: https://github.com/rust-lang/regex/issues/48
#[test]
fn invalid_regexes_no_crash() {
- assert!(regex_new!("(*)").is_err());
- assert!(regex_new!("(?:?)").is_err());
- assert!(regex_new!("(?)").is_err());
- assert!(regex_new!("*").is_err());
+ assert!(Regex::new("(*)").is_err());
+ assert!(Regex::new("(?:?)").is_err());
+ assert!(Regex::new("(?)").is_err());
+ assert!(Regex::new("*").is_err());
}
// See: https://github.com/rust-lang/regex/issues/98
#[test]
fn regression_many_repeat_stack_overflow() {
let re = regex!("^.{1,2500}");
- assert_eq!(vec![(0, 1)], findall!(re, "a"));
+ assert_eq!(
+ vec![0..1],
+ re.find_iter("a").map(|m| m.range()).collect::<Vec<_>>()
+ );
}
// See: https://github.com/rust-lang/regex/issues/555
#[test]
fn regression_invalid_repetition_expr() {
- assert!(regex_new!("(?m){1,1}").is_err());
+ assert!(Regex::new("(?m){1,1}").is_err());
}
// See: https://github.com/rust-lang/regex/issues/527
#[test]
fn regression_invalid_flags_expression() {
- assert!(regex_new!("(((?x)))").is_ok());
+ assert!(Regex::new("(((?x)))").is_ok());
}
-// See: https://github.com/rust-lang/regex/issues/75
-mat!(regression_unsorted_binary_search_1, r"(?i-u)[a_]+", "A_", Some((0, 2)));
-mat!(regression_unsorted_binary_search_2, r"(?i-u)[A_]+", "a_", Some((0, 2)));
-
-// See: https://github.com/rust-lang/regex/issues/99
-#[cfg(feature = "unicode-case")]
-mat!(regression_negated_char_class_1, r"(?i)[^x]", "x", None);
-#[cfg(feature = "unicode-case")]
-mat!(regression_negated_char_class_2, r"(?i)[^x]", "X", None);
-
-// See: https://github.com/rust-lang/regex/issues/101
-mat!(regression_ascii_word_underscore, r"[[:word:]]", "_", Some((0, 1)));
-
// See: https://github.com/rust-lang/regex/issues/129
#[test]
fn regression_captures_rep() {
let re = regex!(r"([a-f]){2}(?P<foo>[x-z])");
- let caps = re.captures(text!("abx")).unwrap();
- assert_eq!(match_text!(caps.name("foo").unwrap()), text!("x"));
+ let caps = re.captures("abx").unwrap();
+ assert_eq!(&caps["foo"], "x");
}
-// See: https://github.com/rust-lang/regex/issues/153
-mat!(regression_alt_in_alt1, r"ab?|$", "az", Some((0, 1)));
-mat!(regression_alt_in_alt2, r"^(.*?)(\n|\r\n?|$)", "ab\rcd", Some((0, 3)));
-
-// See: https://github.com/rust-lang/regex/issues/169
-mat!(regression_leftmost_first_prefix, r"z*azb", "azb", Some((0, 3)));
-
-// See: https://github.com/rust-lang/regex/issues/76
-#[cfg(all(feature = "unicode-case", feature = "unicode-gencat"))]
-mat!(uni_case_lower_nocase_flag, r"(?i)\p{Ll}+", "ΛΘΓΔα", Some((0, 10)));
-
-// See: https://github.com/rust-lang/regex/issues/191
-mat!(many_alternates, r"1|2|3|4|5|6|7|8|9|10|int", "int", Some((0, 3)));
-
-// burntsushi was bad and didn't create an issue for this bug.
-mat!(anchored_prefix1, r"^a[[:^space:]]", "a ", None);
-mat!(anchored_prefix2, r"^a[[:^space:]]", "foo boo a ", None);
-mat!(anchored_prefix3, r"^-[a-z]", "r-f", None);
-
-// See: https://github.com/rust-lang/regex/issues/204
-#[cfg(feature = "unicode-perl")]
-split!(
- split_on_word_boundary,
- r"\b",
- r"Should this (work?)",
- &[
- t!(""),
- t!("Should"),
- t!(" "),
- t!("this"),
- t!(" ("),
- t!("work"),
- t!("?)")
- ]
-);
-#[cfg(feature = "unicode-perl")]
-matiter!(
- word_boundary_dfa,
- r"\b",
- "a b c",
- (0, 0),
- (1, 1),
- (2, 2),
- (3, 3),
- (4, 4),
- (5, 5)
-);
-
-// See: https://github.com/rust-lang/regex/issues/268
-matiter!(partial_anchor, r"^a|b", "ba", (0, 1));
-
-// See: https://github.com/rust-lang/regex/issues/280
-ismatch!(partial_anchor_alternate_begin, r"^a|z", "yyyyya", false);
-ismatch!(partial_anchor_alternate_end, r"a$|z", "ayyyyy", false);
-
-// See: https://github.com/rust-lang/regex/issues/289
-mat!(lits_unambiguous1, r"(ABC|CDA|BC)X", "CDAX", Some((0, 4)));
-
-// See: https://github.com/rust-lang/regex/issues/291
-mat!(
- lits_unambiguous2,
- r"((IMG|CAM|MG|MB2)_|(DSCN|CIMG))(?P<n>[0-9]+)$",
- "CIMG2341",
- Some((0, 8)),
- Some((0, 4)),
- None,
- Some((0, 4)),
- Some((4, 8))
-);
-
-// See: https://github.com/rust-lang/regex/issues/271
-mat!(endl_or_wb, r"(?m:$)|(?-u:\b)", "\u{6084e}", Some((4, 4)));
-mat!(zero_or_end, r"(?i-u:\x00)|$", "\u{e682f}", Some((4, 4)));
-mat!(y_or_endl, r"(?i-u:y)|(?m:$)", "\u{b4331}", Some((4, 4)));
-#[cfg(feature = "unicode-perl")]
-mat!(wb_start_x, r"(?u:\b)^(?-u:X)", "X", Some((0, 1)));
-
-// See: https://github.com/rust-lang/regex/issues/321
-ismatch!(strange_anchor_non_complete_prefix, r"a^{2}", "", false);
-ismatch!(strange_anchor_non_complete_suffix, r"${2}a", "", false);
-
-// See: https://github.com/BurntSushi/ripgrep/issues/1203
-ismatch!(reverse_suffix1, r"[0-4][0-4][0-4]000", "153.230000", true);
-ismatch!(reverse_suffix2, r"[0-9][0-9][0-9]000", "153.230000\n", true);
-matiter!(reverse_suffix3, r"[0-9][0-9][0-9]000", "153.230000\n", (4, 10));
-
-// See: https://github.com/rust-lang/regex/issues/334
-// See: https://github.com/rust-lang/regex/issues/557
-mat!(
- captures_after_dfa_premature_end1,
- r"a(b*(X|$))?",
- "abcbX",
- Some((0, 1)),
- None,
- None
-);
-mat!(
- captures_after_dfa_premature_end2,
- r"a(bc*(X|$))?",
- "abcbX",
- Some((0, 1)),
- None,
- None
-);
-mat!(captures_after_dfa_premature_end3, r"(aa$)?", "aaz", Some((0, 0)));
-
-// See: https://github.com/rust-lang/regex/issues/437
-ismatch!(
- literal_panic,
- r"typename type\-parameter\-[0-9]+\-[0-9]+::.+",
- "test",
- false
-);
-
-// See: https://github.com/rust-lang/regex/issues/533
-ismatch!(
- blank_matches_nothing_between_space_and_tab,
- r"[[:blank:]]",
- "\u{a}\u{b}\u{c}\u{d}\u{e}\u{f}\
- \u{10}\u{11}\u{12}\u{13}\u{14}\u{15}\u{16}\u{17}\
- \u{18}\u{19}\u{1a}\u{1b}\u{1c}\u{1d}\u{1e}\u{1f}",
- false
-);
-
-ismatch!(
- inverted_blank_matches_everything_between_space_and_tab,
- r"^[[:^blank:]]+$",
- "\u{a}\u{b}\u{c}\u{d}\u{e}\u{f}\
- \u{10}\u{11}\u{12}\u{13}\u{14}\u{15}\u{16}\u{17}\
- \u{18}\u{19}\u{1a}\u{1b}\u{1c}\u{1d}\u{1e}\u{1f}",
- true
-);
-
-// Tests that our Aho-Corasick optimization works correctly. It only
-// kicks in when we have >32 literals. By "works correctly," we mean that
-// leftmost-first match semantics are properly respected. That is, samwise
-// should match, not sam.
-mat!(
- ahocorasick1,
- "samwise|sam|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|\
- A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z",
- "samwise",
- Some((0, 7))
-);
-
// See: https://github.com/BurntSushi/ripgrep/issues/1247
-#[test]
#[cfg(feature = "unicode-perl")]
+#[test]
fn regression_nfa_stops1() {
- let re = ::regex::bytes::Regex::new(r"\bs(?:[ab])").unwrap();
+ let re = regex::bytes::Regex::new(r"\bs(?:[ab])").unwrap();
assert_eq!(0, re.find_iter(b"s\xE4").count());
}
-// See: https://github.com/rust-lang/regex/issues/640
-#[cfg(feature = "unicode-case")]
-matiter!(
- flags_are_unset,
- r"((?i)foo)|Bar",
- "foo Foo bar Bar",
- (0, 3),
- (4, 7),
- (12, 15)
-);
-
-// See: https://github.com/rust-lang/regex/issues/659
-//
-// Note that 'Ј' is not 'j', but cyrillic Je
-// https://en.wikipedia.org/wiki/Je_(Cyrillic)
-ismatch!(empty_group_match, r"()Ј01", "zЈ01", true);
-matiter!(empty_group_find, r"()Ј01", "zЈ01", (1, 5));
-
-// See: https://github.com/rust-lang/regex/issues/862
-mat!(non_greedy_question_literal, r"ab??", "ab", Some((0, 1)));
-
// See: https://github.com/rust-lang/regex/issues/981
#[cfg(feature = "unicode")]
#[test]
fn regression_bad_word_boundary() {
- let re = regex_new!(r#"(?i:(?:\b|_)win(?:32|64|dows)?(?:\b|_))"#).unwrap();
+ let re = regex!(r#"(?i:(?:\b|_)win(?:32|64|dows)?(?:\b|_))"#);
let hay = "ubi-Darwin-x86_64.tar.gz";
- assert!(!re.is_match(text!(hay)));
+ assert!(!re.is_match(hay));
let hay = "ubi-Windows-x86_64.zip";
- assert!(re.is_match(text!(hay)));
+ assert!(re.is_match(hay));
}
// See: https://github.com/rust-lang/regex/issues/982
@@ -237,18 +69,17 @@ fn regression_bad_word_boundary() {
#[test]
fn regression_unicode_perl_not_enabled() {
let pat = r"(\d+\s?(years|year|y))?\s?(\d+\s?(months|month|m))?\s?(\d+\s?(weeks|week|w))?\s?(\d+\s?(days|day|d))?\s?(\d+\s?(hours|hour|h))?";
- let re = regex_new!(pat);
- assert!(re.is_ok());
+ assert!(Regex::new(pat).is_ok());
}
// See: https://github.com/rust-lang/regex/issues/995
#[test]
fn regression_big_regex_overflow() {
let pat = r" {2147483516}{2147483416}{5}";
- let re = regex_new!(pat);
- assert!(re.is_err());
+ assert!(Regex::new(pat).is_err());
}
+// See: https://github.com/rust-lang/regex/issues/999
#[test]
fn regression_complete_literals_suffix_incorrect() {
let needles = vec![
@@ -259,5 +90,5 @@ fn regression_complete_literals_suffix_incorrect() {
let pattern = needles.join("|");
let re = regex!(&pattern);
let hay = "FUBAR";
- assert_eq!(0, re.find_iter(text!(hay)).count());
+ assert_eq!(0, re.find_iter(hay).count());
}
diff --git a/vendor/regex/tests/regression_fuzz.rs b/vendor/regex/tests/regression_fuzz.rs
index 5f49530a7..f90ad4cb2 100644
--- a/vendor/regex/tests/regression_fuzz.rs
+++ b/vendor/regex/tests/regression_fuzz.rs
@@ -2,6 +2,14 @@
// can take quite a long time. Some of them take long enough that it's not
// practical to run them in debug mode. :-/
+use regex::Regex;
+
+macro_rules! regex {
+ ($pattern:expr) => {
+ regex::Regex::new($pattern).unwrap()
+ };
+}
+
// See: https://oss-fuzz.com/testcase-detail/5673225499181056
//
// Ignored by default since it takes too long in debug mode (almost a minute).
@@ -14,8 +22,9 @@ fn fuzz1() {
// See: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=26505
// See: https://github.com/rust-lang/regex/issues/722
#[test]
+#[cfg(feature = "unicode")]
fn empty_any_errors_no_panic() {
- assert!(regex_new!(r"\P{any}").is_err());
+ assert!(Regex::new(r"\P{any}").is_ok());
}
// This tests that a very large regex errors during compilation instead of
@@ -27,7 +36,7 @@ fn empty_any_errors_no_panic() {
#[test]
fn big_regex_fails_to_compile() {
let pat = "[\u{0}\u{e}\u{2}\\w~~>[l\t\u{0}]p?<]{971158}";
- assert!(regex_new!(pat).is_err());
+ assert!(Regex::new(pat).is_err());
}
// This was caught while on master but before a release went out(!).
@@ -36,5 +45,17 @@ fn big_regex_fails_to_compile() {
#[test]
fn todo() {
let pat = "(?:z|xx)@|xx";
- assert!(regex_new!(pat).is_ok());
+ assert!(Regex::new(pat).is_ok());
+}
+
+// This was caused by the fuzzer, and then minimized by hand.
+//
+// This was caused by a bug in DFA determinization that mishandled NFA fail
+// states.
+#[test]
+fn fail_branch_prevents_match() {
+ let pat = r".*[a&&b]A|B";
+ let hay = "B";
+ let re = Regex::new(pat).unwrap();
+ assert!(re.is_match(hay));
}
diff --git a/vendor/regex/tests/replace.rs b/vendor/regex/tests/replace.rs
index f23c57551..f26ae4603 100644
--- a/vendor/regex/tests/replace.rs
+++ b/vendor/regex/tests/replace.rs
@@ -3,39 +3,32 @@ macro_rules! replace(
$search:expr, $replace:expr, $result:expr) => (
#[test]
fn $name() {
- let re = regex!($re);
- assert_eq!(re.$which(text!($search), $replace), text!($result));
+ let re = regex::Regex::new($re).unwrap();
+ assert_eq!(re.$which($search, $replace), $result);
}
);
);
-replace!(first, replace, r"[0-9]", "age: 26", t!("Z"), "age: Z6");
-replace!(plus, replace, r"[0-9]+", "age: 26", t!("Z"), "age: Z");
-replace!(all, replace_all, r"[0-9]", "age: 26", t!("Z"), "age: ZZ");
-replace!(
- groups,
- replace,
- r"([^ ]+)[ ]+([^ ]+)",
- "w1 w2",
- t!("$2 $1"),
- "w2 w1"
-);
+replace!(first, replace, r"[0-9]", "age: 26", "Z", "age: Z6");
+replace!(plus, replace, r"[0-9]+", "age: 26", "Z", "age: Z");
+replace!(all, replace_all, r"[0-9]", "age: 26", "Z", "age: ZZ");
+replace!(groups, replace, r"([^ ]+)[ ]+([^ ]+)", "w1 w2", "$2 $1", "w2 w1");
replace!(
double_dollar,
replace,
r"([^ ]+)[ ]+([^ ]+)",
"w1 w2",
- t!("$2 $$1"),
+ "$2 $$1",
"w2 $1"
);
// replace!(adjacent_index, replace,
-// r"([^aeiouy])ies$", "skies", t!("$1y"), "sky");
+// r"([^aeiouy])ies$", "skies", "$1y", "sky");
replace!(
named,
replace_all,
r"(?P<first>[^ ]+)[ ]+(?P<last>[^ ]+)(?P<space>[ ]*)",
"w1 w2 w3 w4",
- t!("$last $first$space"),
+ "$last $first$space",
"w2 w1 w4 w3"
);
replace!(
@@ -43,17 +36,17 @@ replace!(
replace_all,
"^[ \t]+|[ \t]+$",
" \t trim me\t \t",
- t!(""),
+ "",
"trim me"
);
-replace!(number_hypen, replace, r"(.)(.)", "ab", t!("$1-$2"), "a-b");
-// replace!(number_underscore, replace, r"(.)(.)", "ab", t!("$1_$2"), "a_b");
+replace!(number_hyphen, replace, r"(.)(.)", "ab", "$1-$2", "a-b");
+// replace!(number_underscore, replace, r"(.)(.)", "ab", "$1_$2", "a_b");
replace!(
simple_expand,
replace_all,
r"([a-z]) ([a-z])",
"a b",
- t!("$2 $1"),
+ "$2 $1",
"b a"
);
replace!(
@@ -61,7 +54,7 @@ replace!(
replace_all,
r"([a-z]+) ([a-z]+)",
"a b",
- t!("$$1"),
+ "$$1",
"$1"
);
replace!(
@@ -69,7 +62,7 @@ replace!(
replace_all,
r"([a-z]+) ([a-z]+)",
"a b",
- t!("$2 $$c $1"),
+ "$2 $$c $1",
"b $c a"
);
replace!(
@@ -77,7 +70,7 @@ replace!(
replace,
r"([^ ]+)[ ]+([^ ]+)",
"w1 w2",
- no_expand!("$2 $1"),
+ regex::NoExpand("$2 $1"),
"$2 $1"
);
replace!(
@@ -85,18 +78,15 @@ replace!(
replace,
r"([^ ]+)[ ]+([^ ]+)",
"w1 w2",
- no_expand!("$$1"),
+ regex::NoExpand("$$1"),
"$$1"
);
-use_!(Captures);
replace!(
closure_returning_reference,
replace,
r"([0-9]+)",
"age: 26",
- |captures: &Captures<'_>| {
- match_text!(captures.get(1).unwrap())[0..1].to_owned()
- },
+ |captures: &regex::Captures<'_>| { captures[1][0..1].to_owned() },
"age: 2"
);
replace!(
@@ -104,7 +94,7 @@ replace!(
replace,
r"[0-9]+",
"age: 26",
- |_captures: &Captures<'_>| t!("Z").to_owned(),
+ |_captures: &regex::Captures<'_>| "Z".to_owned(),
"age: Z"
);
@@ -114,12 +104,12 @@ replace!(
replace_all,
r"foo",
"foobar",
- t!(""),
+ "",
"bar"
);
// See https://github.com/rust-lang/regex/issues/393
-replace!(single_empty_match, replace, r"^", "bar", t!("foo"), "foobar");
+replace!(single_empty_match, replace, r"^", "bar", "foo", "foobar");
// See https://github.com/rust-lang/regex/issues/399
replace!(
@@ -127,7 +117,7 @@ replace!(
replace_all,
r"(.)",
"b",
- t!("${1}a $1a"),
+ "${1}a $1a",
"ba "
);
@@ -136,7 +126,7 @@ replace!(
replace,
r"[0-9]",
"age: 26",
- t!("Z".to_string()),
+ "Z".to_string(),
"age: Z6"
);
replace!(
@@ -144,7 +134,7 @@ replace!(
replace,
r"[0-9]",
"age: 26",
- t!(&"Z".to_string()),
+ &"Z".to_string(),
"age: Z6"
);
replace!(
@@ -152,7 +142,7 @@ replace!(
replace,
r"[0-9]",
"age: 26",
- t!(std::borrow::Cow::<'_, str>::Borrowed("Z")),
+ std::borrow::Cow::<'_, str>::Borrowed("Z"),
"age: Z6"
);
replace!(
@@ -160,7 +150,7 @@ replace!(
replace,
r"[0-9]",
"age: 26",
- t!(&std::borrow::Cow::<'_, str>::Borrowed("Z")),
+ &std::borrow::Cow::<'_, str>::Borrowed("Z"),
"age: Z6"
);
replace!(
@@ -168,7 +158,7 @@ replace!(
replace,
r"[0-9]",
"age: 26",
- t!(std::borrow::Cow::<'_, str>::Owned("Z".to_string())),
+ std::borrow::Cow::<'_, str>::Owned("Z".to_string()),
"age: Z6"
);
replace!(
@@ -176,73 +166,18 @@ replace!(
replace,
r"[0-9]",
"age: 26",
- t!(&std::borrow::Cow::<'_, str>::Owned("Z".to_string())),
- "age: Z6"
-);
-
-replace!(
- impl_vec_u8,
- replace,
- r"[0-9]",
- "age: 26",
- bytes!(vec![b'Z']),
- "age: Z6"
-);
-replace!(
- impl_vec_u8_ref,
- replace,
- r"[0-9]",
- "age: 26",
- bytes!(&vec![b'Z']),
- "age: Z6"
-);
-replace!(
- impl_cow_slice_borrowed,
- replace,
- r"[0-9]",
- "age: 26",
- bytes!(std::borrow::Cow::<'_, [u8]>::Borrowed(&[b'Z'])),
- "age: Z6"
-);
-replace!(
- impl_cow_slice_borrowed_ref,
- replace,
- r"[0-9]",
- "age: 26",
- bytes!(&std::borrow::Cow::<'_, [u8]>::Borrowed(&[b'Z'])),
- "age: Z6"
-);
-replace!(
- impl_cow_slice_owned,
- replace,
- r"[0-9]",
- "age: 26",
- bytes!(std::borrow::Cow::<'_, [u8]>::Owned(vec![b'Z'])),
- "age: Z6"
-);
-replace!(
- impl_cow_slice_owned_ref,
- replace,
- r"[0-9]",
- "age: 26",
- bytes!(&std::borrow::Cow::<'_, [u8]>::Owned(vec![b'Z'])),
+ &std::borrow::Cow::<'_, str>::Owned("Z".to_string()),
"age: Z6"
);
#[test]
fn replacen_no_captures() {
- let re = regex!(r"[0-9]");
- assert_eq!(
- re.replacen(text!("age: 1234"), 2, t!("Z")),
- text!("age: ZZ34")
- );
+ let re = regex::Regex::new(r"[0-9]").unwrap();
+ assert_eq!(re.replacen("age: 1234", 2, "Z"), "age: ZZ34");
}
#[test]
fn replacen_with_captures() {
- let re = regex!(r"([0-9])");
- assert_eq!(
- re.replacen(text!("age: 1234"), 2, t!("${1}Z")),
- text!("age: 1Z2Z34")
- );
+ let re = regex::Regex::new(r"([0-9])").unwrap();
+ assert_eq!(re.replacen("age: 1234", 2, "${1}Z"), "age: 1Z2Z34");
}
diff --git a/vendor/regex/tests/searcher.rs b/vendor/regex/tests/searcher.rs
index 3779f54c3..f6dae1310 100644
--- a/vendor/regex/tests/searcher.rs
+++ b/vendor/regex/tests/searcher.rs
@@ -12,20 +12,18 @@ macro_rules! searcher {
#[test]
#[allow(unused_imports)]
fn $name() {
- searcher_expr! {{
- use std::str::pattern::{Pattern, Searcher};
- use std::str::pattern::SearchStep::{Match, Reject, Done};
- let re = regex!($re);
- let mut se = re.into_searcher($haystack);
- let mut got_steps = vec![];
- loop {
- match se.next() {
- Done => break,
- step => { got_steps.push(step); }
- }
+ use std::str::pattern::{Pattern, Searcher};
+ use std::str::pattern::SearchStep::{Match, Reject, Done};
+ let re = regex::Regex::new($re).unwrap();
+ let mut se = re.into_searcher($haystack);
+ let mut got_steps = vec![];
+ loop {
+ match se.next() {
+ Done => break,
+ step => { got_steps.push(step); }
}
- assert_eq!(got_steps, $expect_steps);
- }}
+ }
+ assert_eq!(got_steps, $expect_steps);
}
);
}
diff --git a/vendor/regex/tests/set.rs b/vendor/regex/tests/set.rs
deleted file mode 100644
index d1144d662..000000000
--- a/vendor/regex/tests/set.rs
+++ /dev/null
@@ -1,74 +0,0 @@
-matset!(set1, &["a", "a"], "a", 0, 1);
-matset!(set2, &["a", "a"], "ba", 0, 1);
-matset!(set3, &["a", "b"], "a", 0);
-matset!(set4, &["a", "b"], "b", 1);
-matset!(set5, &["a|b", "b|a"], "b", 0, 1);
-matset!(set6, &["foo", "oo"], "foo", 0, 1);
-matset!(set7, &["^foo", "bar$"], "foo", 0);
-matset!(set8, &["^foo", "bar$"], "foo bar", 0, 1);
-matset!(set9, &["^foo", "bar$"], "bar", 1);
-matset!(set10, &[r"[a-z]+$", "foo"], "01234 foo", 0, 1);
-matset!(set11, &[r"[a-z]+$", "foo"], "foo 01234", 1);
-matset!(set12, &[r".*?", "a"], "zzzzzza", 0, 1);
-matset!(set13, &[r".*", "a"], "zzzzzza", 0, 1);
-matset!(set14, &[r".*", "a"], "zzzzzz", 0);
-matset!(set15, &[r"(?-u)\ba\b"], "hello a bye", 0);
-matset!(set16, &["a"], "a", 0);
-matset!(set17, &[".*a"], "a", 0);
-matset!(set18, &["a", "β"], "β", 1);
-
-// regexes that match the empty string
-matset!(setempty1, &["", "a"], "abc", 0, 1);
-matset!(setempty2, &["", "b"], "abc", 0, 1);
-matset!(setempty3, &["", "z"], "abc", 0);
-matset!(setempty4, &["a", ""], "abc", 0, 1);
-matset!(setempty5, &["b", ""], "abc", 0, 1);
-matset!(setempty6, &["z", ""], "abc", 1);
-matset!(setempty7, &["b", "(?:)"], "abc", 0, 1);
-matset!(setempty8, &["(?:)", "b"], "abc", 0, 1);
-matset!(setempty9, &["c(?:)", "b"], "abc", 0, 1);
-
-nomatset!(nset1, &["a", "a"], "b");
-nomatset!(nset2, &["^foo", "bar$"], "bar foo");
-nomatset!(
- nset3,
- {
- let xs: &[&str] = &[];
- xs
- },
- "a"
-);
-nomatset!(nset4, &[r"^rooted$", r"\.log$"], "notrooted");
-
-// See: https://github.com/rust-lang/regex/issues/187
-#[test]
-fn regression_subsequent_matches() {
- let set = regex_set!(&["ab", "b"]);
- let text = text!("ba");
- assert!(set.matches(text).matched(1));
- assert!(set.matches(text).matched(1));
-}
-
-#[test]
-fn get_set_patterns() {
- let set = regex_set!(&["a", "b"]);
- assert_eq!(vec!["a", "b"], set.patterns());
-}
-
-#[test]
-fn len_and_empty() {
- let empty = regex_set!(&[""; 0]);
- assert_eq!(empty.len(), 0);
- assert!(empty.is_empty());
-
- let not_empty = regex_set!(&["ab", "b"]);
- assert_eq!(not_empty.len(), 2);
- assert!(!not_empty.is_empty());
-}
-
-#[test]
-fn default_set_is_empty() {
- let set: regex::bytes::RegexSet = Default::default();
- assert_eq!(set.len(), 0);
- assert!(set.is_empty());
-}
diff --git a/vendor/regex/tests/shortest_match.rs b/vendor/regex/tests/shortest_match.rs
deleted file mode 100644
index f8b4fed15..000000000
--- a/vendor/regex/tests/shortest_match.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-macro_rules! shortmat {
- ($name:ident, $re:expr, $text:expr, $shortest_match:expr) => {
- #[test]
- fn $name() {
- let text = text!($text);
- let re = regex!($re);
- assert_eq!($shortest_match, re.shortest_match(text));
- }
- };
-}
-
-shortmat!(t01, r"a+", r"aa", Some(1));
-// Test that the reverse suffix optimization gets it right.
-shortmat!(t02, r".*(?:abcd)+", r"abcdabcd", Some(4));
diff --git a/vendor/regex/tests/suffix_reverse.rs b/vendor/regex/tests/suffix_reverse.rs
deleted file mode 100644
index 774c9e85f..000000000
--- a/vendor/regex/tests/suffix_reverse.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-mat!(t01, r".*abcd", r"abcd", Some((0, 4)));
-mat!(t02, r".*(?:abcd)+", r"abcd", Some((0, 4)));
-mat!(t03, r".*(?:abcd)+", r"abcdabcd", Some((0, 8)));
-mat!(t04, r".*(?:abcd)+", r"abcdxabcd", Some((0, 9)));
-mat!(t05, r".*x(?:abcd)+", r"abcdxabcd", Some((0, 9)));
-mat!(t06, r"[^abcd]*x(?:abcd)+", r"abcdxabcd", Some((4, 9)));
diff --git a/vendor/regex/tests/suite_bytes.rs b/vendor/regex/tests/suite_bytes.rs
new file mode 100644
index 000000000..106d99808
--- /dev/null
+++ b/vendor/regex/tests/suite_bytes.rs
@@ -0,0 +1,108 @@
+use {
+ anyhow::Result,
+ regex::bytes::{Regex, RegexBuilder},
+ regex_test::{
+ CompiledRegex, Match, RegexTest, Span, TestResult, TestRunner,
+ },
+};
+
+/// Tests the default configuration of the hybrid NFA/DFA.
+#[test]
+fn default() -> Result<()> {
+ let mut runner = TestRunner::new()?;
+ runner
+ .expand(&["is_match", "find", "captures"], |test| test.compiles())
+ .blacklist_iter(super::BLACKLIST)
+ .test_iter(crate::suite()?.iter(), compiler)
+ .assert();
+ Ok(())
+}
+
+fn run_test(re: &Regex, test: &RegexTest) -> TestResult {
+ match test.additional_name() {
+ "is_match" => TestResult::matched(re.is_match(test.haystack())),
+ "find" => TestResult::matches(
+ re.find_iter(test.haystack())
+ .take(test.match_limit().unwrap_or(std::usize::MAX))
+ .map(|m| Match {
+ id: 0,
+ span: Span { start: m.start(), end: m.end() },
+ }),
+ ),
+ "captures" => {
+ let it = re
+ .captures_iter(test.haystack())
+ .take(test.match_limit().unwrap_or(std::usize::MAX))
+ .map(|caps| testify_captures(&caps));
+ TestResult::captures(it)
+ }
+ name => TestResult::fail(&format!("unrecognized test name: {}", name)),
+ }
+}
+
+/// Converts the given regex test to a closure that searches with a
+/// `bytes::Regex`. If the test configuration is unsupported, then a
+/// `CompiledRegex` that skips the test is returned.
+fn compiler(
+ test: &RegexTest,
+ _patterns: &[String],
+) -> anyhow::Result<CompiledRegex> {
+ let skip = Ok(CompiledRegex::skip());
+
+ // We're only testing bytes::Regex here, which supports one pattern only.
+ let pattern = match test.regexes().len() {
+ 1 => &test.regexes()[0],
+ _ => return skip,
+ };
+ // We only test is_match, find_iter and captures_iter. All of those are
+ // leftmost searches.
+ if !matches!(test.search_kind(), regex_test::SearchKind::Leftmost) {
+ return skip;
+ }
+ // The top-level single-pattern regex API always uses leftmost-first.
+ if !matches!(test.match_kind(), regex_test::MatchKind::LeftmostFirst) {
+ return skip;
+ }
+ // The top-level regex API always runs unanchored searches. ... But we can
+ // handle tests that are anchored but have only one match.
+ if test.anchored() && test.match_limit() != Some(1) {
+ return skip;
+ }
+ // We don't support tests with explicit search bounds. We could probably
+ // support this by using the 'find_at' (and such) APIs.
+ let bounds = test.bounds();
+ if !(bounds.start == 0 && bounds.end == test.haystack().len()) {
+ return skip;
+ }
+ // The bytes::Regex API specifically does not support enabling UTF-8 mode.
+ // It could I suppose, but currently it does not. That is, it permits
+ // matches to have offsets that split codepoints.
+ if test.utf8() {
+ return skip;
+ }
+ // If the test requires Unicode but the Unicode feature isn't enabled,
+ // skip it. This is a little aggressive, but the test suite doesn't
+ // have any easy way of communicating which Unicode features are needed.
+ if test.unicode() && !cfg!(feature = "unicode") {
+ return skip;
+ }
+ let re = RegexBuilder::new(pattern)
+ .case_insensitive(test.case_insensitive())
+ .unicode(test.unicode())
+ .line_terminator(test.line_terminator())
+ .build()?;
+ Ok(CompiledRegex::compiled(move |test| run_test(&re, test)))
+}
+
+/// Convert `Captures` into the test suite's capture values.
+fn testify_captures(
+ caps: &regex::bytes::Captures<'_>,
+) -> regex_test::Captures {
+ let spans = caps.iter().map(|group| {
+ group.map(|m| regex_test::Span { start: m.start(), end: m.end() })
+ });
+ // This unwrap is OK because we assume our 'caps' represents a match, and
+ // a match always gives a non-zero number of groups with the first group
+ // being non-None.
+ regex_test::Captures::new(0, spans).unwrap()
+}
diff --git a/vendor/regex/tests/suite_bytes_set.rs b/vendor/regex/tests/suite_bytes_set.rs
new file mode 100644
index 000000000..899d24c17
--- /dev/null
+++ b/vendor/regex/tests/suite_bytes_set.rs
@@ -0,0 +1,71 @@
+use {
+ anyhow::Result,
+ regex::bytes::{RegexSet, RegexSetBuilder},
+ regex_test::{CompiledRegex, RegexTest, TestResult, TestRunner},
+};
+
+/// Tests the default configuration of the hybrid NFA/DFA.
+#[test]
+fn default() -> Result<()> {
+ let mut runner = TestRunner::new()?;
+ runner
+ .expand(&["is_match", "which"], |test| test.compiles())
+ .blacklist_iter(super::BLACKLIST)
+ .test_iter(crate::suite()?.iter(), compiler)
+ .assert();
+ Ok(())
+}
+
+fn run_test(re: &RegexSet, test: &RegexTest) -> TestResult {
+ match test.additional_name() {
+ "is_match" => TestResult::matched(re.is_match(test.haystack())),
+ "which" => TestResult::which(re.matches(test.haystack()).iter()),
+ name => TestResult::fail(&format!("unrecognized test name: {}", name)),
+ }
+}
+
+/// Converts the given regex test to a closure that searches with a
+/// `bytes::Regex`. If the test configuration is unsupported, then a
+/// `CompiledRegex` that skips the test is returned.
+fn compiler(
+ test: &RegexTest,
+ _patterns: &[String],
+) -> anyhow::Result<CompiledRegex> {
+ let skip = Ok(CompiledRegex::skip());
+
+ // The top-level RegexSet API only supports "overlapping" semantics.
+ if !matches!(test.search_kind(), regex_test::SearchKind::Overlapping) {
+ return skip;
+ }
+ // The top-level RegexSet API only supports "all" semantics.
+ if !matches!(test.match_kind(), regex_test::MatchKind::All) {
+ return skip;
+ }
+ // The top-level RegexSet API always runs unanchored searches.
+ if test.anchored() {
+ return skip;
+ }
+ // We don't support tests with explicit search bounds.
+ let bounds = test.bounds();
+ if !(bounds.start == 0 && bounds.end == test.haystack().len()) {
+ return skip;
+ }
+ // The bytes::Regex API specifically does not support enabling UTF-8 mode.
+ // It could I suppose, but currently it does not. That is, it permits
+ // matches to have offsets that split codepoints.
+ if test.utf8() {
+ return skip;
+ }
+ // If the test requires Unicode but the Unicode feature isn't enabled,
+ // skip it. This is a little aggressive, but the test suite doesn't
+ // have any easy way of communicating which Unicode features are needed.
+ if test.unicode() && !cfg!(feature = "unicode") {
+ return skip;
+ }
+ let re = RegexSetBuilder::new(test.regexes())
+ .case_insensitive(test.case_insensitive())
+ .unicode(test.unicode())
+ .line_terminator(test.line_terminator())
+ .build()?;
+ Ok(CompiledRegex::compiled(move |test| run_test(&re, test)))
+}
diff --git a/vendor/regex/tests/suite_string.rs b/vendor/regex/tests/suite_string.rs
new file mode 100644
index 000000000..1e5bf0bb3
--- /dev/null
+++ b/vendor/regex/tests/suite_string.rs
@@ -0,0 +1,114 @@
+use {
+ anyhow::Result,
+ regex::{Regex, RegexBuilder},
+ regex_test::{
+ CompiledRegex, Match, RegexTest, Span, TestResult, TestRunner,
+ },
+};
+
+/// Tests the default configuration of the hybrid NFA/DFA.
+#[test]
+fn default() -> Result<()> {
+ let mut runner = TestRunner::new()?;
+ runner
+ .expand(&["is_match", "find", "captures"], |test| test.compiles())
+ .blacklist_iter(super::BLACKLIST)
+ .test_iter(crate::suite()?.iter(), compiler)
+ .assert();
+ Ok(())
+}
+
+fn run_test(re: &Regex, test: &RegexTest) -> TestResult {
+ let hay = match std::str::from_utf8(test.haystack()) {
+ Ok(hay) => hay,
+ Err(err) => {
+ return TestResult::fail(&format!(
+ "haystack is not valid UTF-8: {}",
+ err
+ ));
+ }
+ };
+ match test.additional_name() {
+ "is_match" => TestResult::matched(re.is_match(hay)),
+ "find" => TestResult::matches(
+ re.find_iter(hay)
+ .take(test.match_limit().unwrap_or(std::usize::MAX))
+ .map(|m| Match {
+ id: 0,
+ span: Span { start: m.start(), end: m.end() },
+ }),
+ ),
+ "captures" => {
+ let it = re
+ .captures_iter(hay)
+ .take(test.match_limit().unwrap_or(std::usize::MAX))
+ .map(|caps| testify_captures(&caps));
+ TestResult::captures(it)
+ }
+ name => TestResult::fail(&format!("unrecognized test name: {}", name)),
+ }
+}
+
+/// Converts the given regex test to a closure that searches with a
+/// `bytes::Regex`. If the test configuration is unsupported, then a
+/// `CompiledRegex` that skips the test is returned.
+fn compiler(
+ test: &RegexTest,
+ _patterns: &[String],
+) -> anyhow::Result<CompiledRegex> {
+ let skip = Ok(CompiledRegex::skip());
+
+ // We're only testing bytes::Regex here, which supports one pattern only.
+ let pattern = match test.regexes().len() {
+ 1 => &test.regexes()[0],
+ _ => return skip,
+ };
+ // We only test is_match, find_iter and captures_iter. All of those are
+ // leftmost searches.
+ if !matches!(test.search_kind(), regex_test::SearchKind::Leftmost) {
+ return skip;
+ }
+ // The top-level single-pattern regex API always uses leftmost-first.
+ if !matches!(test.match_kind(), regex_test::MatchKind::LeftmostFirst) {
+ return skip;
+ }
+ // The top-level regex API always runs unanchored searches. ... But we can
+ // handle tests that are anchored but have only one match.
+ if test.anchored() && test.match_limit() != Some(1) {
+ return skip;
+ }
+ // We don't support tests with explicit search bounds. We could probably
+ // support this by using the 'find_at' (and such) APIs.
+ let bounds = test.bounds();
+ if !(bounds.start == 0 && bounds.end == test.haystack().len()) {
+ return skip;
+ }
+ // The Regex API specifically does not support disabling UTF-8 mode because
+ // it can only search &str which is always valid UTF-8.
+ if !test.utf8() {
+ return skip;
+ }
+ // If the test requires Unicode but the Unicode feature isn't enabled,
+ // skip it. This is a little aggressive, but the test suite doesn't
+ // have any easy way of communicating which Unicode features are needed.
+ if test.unicode() && !cfg!(feature = "unicode") {
+ return skip;
+ }
+ let re = RegexBuilder::new(pattern)
+ .case_insensitive(test.case_insensitive())
+ .unicode(test.unicode())
+ .line_terminator(test.line_terminator())
+ .build()?;
+ Ok(CompiledRegex::compiled(move |test| run_test(&re, test)))
+}
+
+/// Convert `Captures` into the test suite's capture values.
+fn testify_captures(caps: &regex::Captures<'_>) -> regex_test::Captures {
+ let spans = caps.iter().map(|group| {
+ group.map(|m| regex_test::Span { start: m.start(), end: m.end() })
+ });
+ // This unwrap is OK because we assume our 'caps' represents a match, and
+ // a match always gives a non-zero number of groups with the first group
+ // being non-None.
+ regex_test::Captures::new(0, spans).unwrap()
+}
diff --git a/vendor/regex/tests/suite_string_set.rs b/vendor/regex/tests/suite_string_set.rs
new file mode 100644
index 000000000..dffdc7081
--- /dev/null
+++ b/vendor/regex/tests/suite_string_set.rs
@@ -0,0 +1,79 @@
+use {
+ anyhow::Result,
+ regex::{RegexSet, RegexSetBuilder},
+ regex_test::{CompiledRegex, RegexTest, TestResult, TestRunner},
+};
+
+/// Tests the default configuration of the hybrid NFA/DFA.
+#[test]
+fn default() -> Result<()> {
+ let mut runner = TestRunner::new()?;
+ runner
+ .expand(&["is_match", "which"], |test| test.compiles())
+ .blacklist_iter(super::BLACKLIST)
+ .test_iter(crate::suite()?.iter(), compiler)
+ .assert();
+ Ok(())
+}
+
+fn run_test(re: &RegexSet, test: &RegexTest) -> TestResult {
+ let hay = match std::str::from_utf8(test.haystack()) {
+ Ok(hay) => hay,
+ Err(err) => {
+ return TestResult::fail(&format!(
+ "haystack is not valid UTF-8: {}",
+ err
+ ));
+ }
+ };
+ match test.additional_name() {
+ "is_match" => TestResult::matched(re.is_match(hay)),
+ "which" => TestResult::which(re.matches(hay).iter()),
+ name => TestResult::fail(&format!("unrecognized test name: {}", name)),
+ }
+}
+
+/// Converts the given regex test to a closure that searches with a
+/// `bytes::Regex`. If the test configuration is unsupported, then a
+/// `CompiledRegex` that skips the test is returned.
+fn compiler(
+ test: &RegexTest,
+ _patterns: &[String],
+) -> anyhow::Result<CompiledRegex> {
+ let skip = Ok(CompiledRegex::skip());
+
+ // The top-level RegexSet API only supports "overlapping" semantics.
+ if !matches!(test.search_kind(), regex_test::SearchKind::Overlapping) {
+ return skip;
+ }
+ // The top-level RegexSet API only supports "all" semantics.
+ if !matches!(test.match_kind(), regex_test::MatchKind::All) {
+ return skip;
+ }
+ // The top-level RegexSet API always runs unanchored searches.
+ if test.anchored() {
+ return skip;
+ }
+ // We don't support tests with explicit search bounds.
+ let bounds = test.bounds();
+ if !(bounds.start == 0 && bounds.end == test.haystack().len()) {
+ return skip;
+ }
+ // The Regex API specifically does not support disabling UTF-8 mode because
+ // it can only search &str which is always valid UTF-8.
+ if !test.utf8() {
+ return skip;
+ }
+ // If the test requires Unicode but the Unicode feature isn't enabled,
+ // skip it. This is a little aggressive, but the test suite doesn't
+ // have any easy way of communicating which Unicode features are needed.
+ if test.unicode() && !cfg!(feature = "unicode") {
+ return skip;
+ }
+ let re = RegexSetBuilder::new(test.regexes())
+ .case_insensitive(test.case_insensitive())
+ .unicode(test.unicode())
+ .line_terminator(test.line_terminator())
+ .build()?;
+ Ok(CompiledRegex::compiled(move |test| run_test(&re, test)))
+}
diff --git a/vendor/regex/tests/test_backtrack.rs b/vendor/regex/tests/test_backtrack.rs
deleted file mode 100644
index fb934e2d8..000000000
--- a/vendor/regex/tests/test_backtrack.rs
+++ /dev/null
@@ -1,56 +0,0 @@
-#![cfg_attr(feature = "pattern", feature(pattern))]
-
-macro_rules! regex_new {
- ($re:expr) => {{
- use regex::internal::ExecBuilder;
- ExecBuilder::new($re)
- .bounded_backtracking()
- .build()
- .map(|e| e.into_regex())
- }};
-}
-
-macro_rules! regex {
- ($re:expr) => {
- regex_new!($re).unwrap()
- };
-}
-
-macro_rules! regex_set_new {
- ($re:expr) => {{
- use regex::internal::ExecBuilder;
- ExecBuilder::new_many($re)
- .bounded_backtracking()
- .build()
- .map(|e| e.into_regex_set())
- }};
-}
-
-macro_rules! regex_set {
- ($res:expr) => {
- regex_set_new!($res).unwrap()
- };
-}
-
-// Must come before other module definitions.
-include!("macros_str.rs");
-include!("macros.rs");
-
-mod api;
-mod api_str;
-mod crazy;
-mod flags;
-mod fowler;
-mod multiline;
-mod noparse;
-mod regression;
-mod replace;
-mod searcher;
-mod set;
-mod suffix_reverse;
-#[cfg(feature = "unicode")]
-mod unicode;
-#[cfg(feature = "unicode-perl")]
-mod word_boundary;
-#[cfg(feature = "unicode-perl")]
-mod word_boundary_unicode;
diff --git a/vendor/regex/tests/test_backtrack_bytes.rs b/vendor/regex/tests/test_backtrack_bytes.rs
deleted file mode 100644
index a59426c94..000000000
--- a/vendor/regex/tests/test_backtrack_bytes.rs
+++ /dev/null
@@ -1,55 +0,0 @@
-macro_rules! regex_new {
- ($re:expr) => {{
- use regex::internal::ExecBuilder;
- ExecBuilder::new($re)
- .bounded_backtracking()
- .only_utf8(false)
- .build()
- .map(|e| e.into_byte_regex())
- }};
-}
-
-macro_rules! regex {
- ($re:expr) => {
- regex_new!($re).unwrap()
- };
-}
-
-macro_rules! regex_set_new {
- ($re:expr) => {{
- use regex::internal::ExecBuilder;
- ExecBuilder::new_many($re)
- .bounded_backtracking()
- .only_utf8(false)
- .build()
- .map(|e| e.into_byte_regex_set())
- }};
-}
-
-macro_rules! regex_set {
- ($res:expr) => {
- regex_set_new!($res).unwrap()
- };
-}
-
-// Must come before other module definitions.
-include!("macros_bytes.rs");
-include!("macros.rs");
-
-mod api;
-mod bytes;
-mod crazy;
-mod flags;
-mod fowler;
-mod multiline;
-mod noparse;
-mod regression;
-mod replace;
-mod set;
-mod suffix_reverse;
-#[cfg(feature = "unicode")]
-mod unicode;
-#[cfg(feature = "unicode-perl")]
-mod word_boundary;
-#[cfg(feature = "unicode-perl")]
-mod word_boundary_ascii;
diff --git a/vendor/regex/tests/test_backtrack_utf8bytes.rs b/vendor/regex/tests/test_backtrack_utf8bytes.rs
deleted file mode 100644
index 6d308e9e1..000000000
--- a/vendor/regex/tests/test_backtrack_utf8bytes.rs
+++ /dev/null
@@ -1,58 +0,0 @@
-#![cfg_attr(feature = "pattern", feature(pattern))]
-
-macro_rules! regex_new {
- ($re:expr) => {{
- use regex::internal::ExecBuilder;
- ExecBuilder::new($re)
- .bounded_backtracking()
- .bytes(true)
- .build()
- .map(|e| e.into_regex())
- }};
-}
-
-macro_rules! regex {
- ($re:expr) => {
- regex_new!($re).unwrap()
- };
-}
-
-macro_rules! regex_set_new {
- ($re:expr) => {{
- use regex::internal::ExecBuilder;
- ExecBuilder::new_many($re)
- .bounded_backtracking()
- .bytes(true)
- .build()
- .map(|e| e.into_regex_set())
- }};
-}
-
-macro_rules! regex_set {
- ($res:expr) => {
- regex_set_new!($res).unwrap()
- };
-}
-
-// Must come before other module definitions.
-include!("macros_str.rs");
-include!("macros.rs");
-
-mod api;
-mod api_str;
-mod crazy;
-mod flags;
-mod fowler;
-mod multiline;
-mod noparse;
-mod regression;
-mod replace;
-mod searcher;
-mod set;
-mod suffix_reverse;
-#[cfg(feature = "unicode")]
-mod unicode;
-#[cfg(feature = "unicode-perl")]
-mod word_boundary;
-#[cfg(feature = "unicode-perl")]
-mod word_boundary_unicode;
diff --git a/vendor/regex/tests/test_crates_regex.rs b/vendor/regex/tests/test_crates_regex.rs
deleted file mode 100644
index a68160472..000000000
--- a/vendor/regex/tests/test_crates_regex.rs
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * This test is a minimal version of <rofl_0> and <subdiff_0>
- *
- * Once this bug gets fixed, uncomment rofl_0 and subdiff_0
- * (in `tests/crates_regex.rs`).
-#[test]
-fn word_boundary_backtracking_default_mismatch() {
- use regex::internal::ExecBuilder;
-
- let backtrack_re = ExecBuilder::new(r"\b")
- .bounded_backtracking()
- .build()
- .map(|exec| exec.into_regex())
- .map_err(|err| format!("{}", err))
- .unwrap();
-
- let default_re = ExecBuilder::new(r"\b")
- .build()
- .map(|exec| exec.into_regex())
- .map_err(|err| format!("{}", err))
- .unwrap();
-
- let input = "䅅\\u{a0}";
-
- let fi1 = backtrack_re.find_iter(input);
- let fi2 = default_re.find_iter(input);
- for (m1, m2) in fi1.zip(fi2) {
- assert_eq!(m1, m2);
- }
-}
-*/
-
-mod consistent;
-
-mod crates_regex {
-
- macro_rules! consistent {
- ($test_name:ident, $regex_src:expr) => {
- #[test]
- fn $test_name() {
- use super::consistent::backends_are_consistent;
-
- if option_env!("RUST_REGEX_RANDOM_TEST").is_some() {
- match backends_are_consistent($regex_src) {
- Ok(_) => {}
- Err(err) => panic!("{}", err),
- }
- }
- }
- };
- }
-
- include!("crates_regex.rs");
-}
diff --git a/vendor/regex/tests/test_default.rs b/vendor/regex/tests/test_default.rs
deleted file mode 100644
index 19a319af1..000000000
--- a/vendor/regex/tests/test_default.rs
+++ /dev/null
@@ -1,232 +0,0 @@
-#![cfg_attr(feature = "pattern", feature(pattern))]
-
-use regex;
-
-// Due to macro scoping rules, this definition only applies for the modules
-// defined below. Effectively, it allows us to use the same tests for both
-// native and dynamic regexes.
-//
-// This is also used to test the various matching engines. This one exercises
-// the normal code path which automatically chooses the engine based on the
-// regex and the input. Other dynamic tests explicitly set the engine to use.
-macro_rules! regex_new {
- ($re:expr) => {{
- use regex::Regex;
- Regex::new($re)
- }};
-}
-
-macro_rules! regex {
- ($re:expr) => {
- regex_new!($re).unwrap()
- };
-}
-
-macro_rules! regex_set_new {
- ($re:expr) => {{
- use regex::RegexSet;
- RegexSet::new($re)
- }};
-}
-
-macro_rules! regex_set {
- ($res:expr) => {
- regex_set_new!($res).unwrap()
- };
-}
-
-// Must come before other module definitions.
-include!("macros_str.rs");
-include!("macros.rs");
-
-mod api;
-mod api_str;
-mod crazy;
-mod flags;
-mod fowler;
-mod misc;
-mod multiline;
-mod noparse;
-mod regression;
-mod regression_fuzz;
-mod replace;
-mod searcher;
-mod set;
-mod shortest_match;
-mod suffix_reverse;
-#[cfg(feature = "unicode")]
-mod unicode;
-#[cfg(feature = "unicode-perl")]
-mod word_boundary;
-#[cfg(feature = "unicode-perl")]
-mod word_boundary_unicode;
-
-#[test]
-fn disallow_non_utf8() {
- assert!(regex::Regex::new(r"(?-u)\xFF").is_err());
- assert!(regex::Regex::new(r"(?-u).").is_err());
- assert!(regex::Regex::new(r"(?-u)[\xFF]").is_err());
- assert!(regex::Regex::new(r"(?-u)☃").is_err());
-}
-
-#[test]
-fn disallow_octal() {
- assert!(regex::Regex::new(r"\0").is_err());
-}
-
-#[test]
-fn allow_octal() {
- assert!(regex::RegexBuilder::new(r"\0").octal(true).build().is_ok());
-}
-
-#[test]
-fn oibits() {
- use regex::bytes;
- use regex::{Regex, RegexBuilder, RegexSet, RegexSetBuilder};
- use std::panic::{RefUnwindSafe, UnwindSafe};
-
- fn assert_send<T: Send>() {}
- fn assert_sync<T: Sync>() {}
- fn assert_unwind_safe<T: UnwindSafe>() {}
- fn assert_ref_unwind_safe<T: RefUnwindSafe>() {}
-
- assert_send::<Regex>();
- assert_sync::<Regex>();
- assert_unwind_safe::<Regex>();
- assert_ref_unwind_safe::<Regex>();
- assert_send::<RegexBuilder>();
- assert_sync::<RegexBuilder>();
- assert_unwind_safe::<RegexBuilder>();
- assert_ref_unwind_safe::<RegexBuilder>();
-
- assert_send::<bytes::Regex>();
- assert_sync::<bytes::Regex>();
- assert_unwind_safe::<bytes::Regex>();
- assert_ref_unwind_safe::<bytes::Regex>();
- assert_send::<bytes::RegexBuilder>();
- assert_sync::<bytes::RegexBuilder>();
- assert_unwind_safe::<bytes::RegexBuilder>();
- assert_ref_unwind_safe::<bytes::RegexBuilder>();
-
- assert_send::<RegexSet>();
- assert_sync::<RegexSet>();
- assert_unwind_safe::<RegexSet>();
- assert_ref_unwind_safe::<RegexSet>();
- assert_send::<RegexSetBuilder>();
- assert_sync::<RegexSetBuilder>();
- assert_unwind_safe::<RegexSetBuilder>();
- assert_ref_unwind_safe::<RegexSetBuilder>();
-
- assert_send::<bytes::RegexSet>();
- assert_sync::<bytes::RegexSet>();
- assert_unwind_safe::<bytes::RegexSet>();
- assert_ref_unwind_safe::<bytes::RegexSet>();
- assert_send::<bytes::RegexSetBuilder>();
- assert_sync::<bytes::RegexSetBuilder>();
- assert_unwind_safe::<bytes::RegexSetBuilder>();
- assert_ref_unwind_safe::<bytes::RegexSetBuilder>();
-}
-
-// See: https://github.com/rust-lang/regex/issues/568
-#[test]
-fn oibits_regression() {
- use regex::Regex;
- use std::panic;
-
- let _ = panic::catch_unwind(|| Regex::new("a").unwrap());
-}
-
-// See: https://github.com/rust-lang/regex/issues/750
-#[test]
-#[cfg(target_pointer_width = "64")]
-fn regex_is_reasonably_small() {
- use std::mem::size_of;
-
- use regex::bytes;
- use regex::{Regex, RegexSet};
-
- assert_eq!(16, size_of::<Regex>());
- assert_eq!(16, size_of::<RegexSet>());
- assert_eq!(16, size_of::<bytes::Regex>());
- assert_eq!(16, size_of::<bytes::RegexSet>());
-}
-
-// See: https://github.com/rust-lang/regex/security/advisories/GHSA-m5pq-gvj9-9vr8
-// See: CVE-2022-24713
-//
-// We test that our regex compiler will correctly return a "too big" error when
-// we try to use a very large repetition on an *empty* sub-expression.
-//
-// At the time this test was written, the regex compiler does not represent
-// empty sub-expressions with any bytecode instructions. In effect, it's an
-// "optimization" to leave them out, since they would otherwise correspond
-// to an unconditional JUMP in the regex bytecode (i.e., an unconditional
-// epsilon transition in the NFA graph). Therefore, an empty sub-expression
-// represents an interesting case for the compiler's size limits. Since it
-// doesn't actually contribute any additional memory to the compiled regex
-// instructions, the size limit machinery never detects it. Instead, it just
-// dumbly tries to compile the empty sub-expression N times, where N is the
-// repetition size.
-//
-// When N is very large, this will cause the compiler to essentially spin and
-// do nothing for a decently large amount of time. It causes the regex to take
-// quite a bit of time to compile, despite the concrete syntax of the regex
-// being quite small.
-//
-// The degree to which this is actually a problem is somewhat of a judgment
-// call. Some regexes simply take a long time to compile. But in general, you
-// should be able to reasonably control this by setting lower or higher size
-// limits on the compiled object size. But this mitigation doesn't work at all
-// for this case.
-//
-// This particular test is somewhat narrow. It merely checks that regex
-// compilation will, at some point, return a "too big" error. Before the
-// fix landed, this test would eventually fail because the regex would be
-// successfully compiled (after enough time elapsed). So while this test
-// doesn't check that we exit in a reasonable amount of time, it does at least
-// check that we are properly returning an error at some point.
-#[test]
-fn big_empty_regex_fails() {
- use regex::Regex;
-
- let result = Regex::new("(?:){4294967295}");
- assert!(result.is_err());
-}
-
-// Below is a "billion laughs" variant of the previous test case.
-#[test]
-fn big_empty_reps_chain_regex_fails() {
- use regex::Regex;
-
- let result = Regex::new("(?:){64}{64}{64}{64}{64}{64}");
- assert!(result.is_err());
-}
-
-// Below is another situation where a zero-length sub-expression can be
-// introduced.
-#[test]
-fn big_zero_reps_regex_fails() {
- use regex::Regex;
-
- let result = Regex::new(r"x{0}{4294967295}");
- assert!(result.is_err());
-}
-
-// Testing another case for completeness.
-#[test]
-fn empty_alt_regex_fails() {
- use regex::Regex;
-
- let result = Regex::new(r"(?:|){4294967295}");
- assert!(result.is_err());
-}
-
-// Regression test for: https://github.com/rust-lang/regex/issues/969
-#[test]
-fn regression_i969() {
- use regex::Regex;
-
- let re = Regex::new(r"c.*d\z").unwrap();
- assert_eq!(Some(6), re.shortest_match_at("ababcd", 4));
- assert_eq!(Some(6), re.find_at("ababcd", 4).map(|m| m.end()));
-}
diff --git a/vendor/regex/tests/test_default_bytes.rs b/vendor/regex/tests/test_default_bytes.rs
deleted file mode 100644
index f200596ba..000000000
--- a/vendor/regex/tests/test_default_bytes.rs
+++ /dev/null
@@ -1,75 +0,0 @@
-macro_rules! regex_new {
- ($re:expr) => {{
- use regex::bytes::Regex;
- Regex::new($re)
- }};
-}
-
-macro_rules! regex_set_new {
- ($res:expr) => {{
- use regex::bytes::RegexSet;
- RegexSet::new($res)
- }};
-}
-
-macro_rules! regex {
- ($re:expr) => {
- regex_new!($re).unwrap()
- };
-}
-
-macro_rules! regex_set {
- ($res:expr) => {
- regex_set_new!($res).unwrap()
- };
-}
-
-// Must come before other module definitions.
-include!("macros_bytes.rs");
-include!("macros.rs");
-
-// A silly wrapper to make it possible to write and match raw bytes.
-struct R<'a>(&'a [u8]);
-impl<'a> R<'a> {
- fn as_bytes(&self) -> &'a [u8] {
- self.0
- }
-}
-
-// See: https://github.com/rust-lang/regex/issues/321
-//
-// These tests are here because they do not have the same behavior in every
-// regex engine.
-mat!(invalid_utf8_nfa1, r".", R(b"\xD4\xC2\x65\x2B\x0E\xFE"), Some((2, 3)));
-mat!(invalid_utf8_nfa2, r"${2}ä", R(b"\xD4\xC2\x65\x2B\x0E\xFE"), None);
-mat!(
- invalid_utf8_nfa3,
- r".",
- R(b"\x0A\xDB\x82\x6E\x33\x01\xDD\x33\xCD"),
- Some((1, 3))
-);
-mat!(
- invalid_utf8_nfa4,
- r"${2}ä",
- R(b"\x0A\xDB\x82\x6E\x33\x01\xDD\x33\xCD"),
- None
-);
-
-mod api;
-mod bytes;
-mod crazy;
-mod flags;
-mod fowler;
-mod multiline;
-mod noparse;
-mod regression;
-mod replace;
-mod set;
-mod shortest_match;
-mod suffix_reverse;
-#[cfg(feature = "unicode")]
-mod unicode;
-#[cfg(feature = "unicode-perl")]
-mod word_boundary;
-#[cfg(feature = "unicode-perl")]
-mod word_boundary_unicode;
diff --git a/vendor/regex/tests/test_nfa.rs b/vendor/regex/tests/test_nfa.rs
deleted file mode 100644
index e5a67d180..000000000
--- a/vendor/regex/tests/test_nfa.rs
+++ /dev/null
@@ -1,50 +0,0 @@
-#![cfg_attr(feature = "pattern", feature(pattern))]
-
-macro_rules! regex_new {
- ($re:expr) => {{
- use regex::internal::ExecBuilder;
- ExecBuilder::new($re).nfa().build().map(|e| e.into_regex())
- }};
-}
-
-macro_rules! regex {
- ($re:expr) => {
- regex_new!($re).unwrap()
- };
-}
-
-macro_rules! regex_set_new {
- ($re:expr) => {{
- use regex::internal::ExecBuilder;
- ExecBuilder::new_many($re).nfa().build().map(|e| e.into_regex_set())
- }};
-}
-
-macro_rules! regex_set {
- ($res:expr) => {
- regex_set_new!($res).unwrap()
- };
-}
-
-// Must come before other module definitions.
-include!("macros_str.rs");
-include!("macros.rs");
-
-mod api;
-mod api_str;
-mod crazy;
-mod flags;
-mod fowler;
-mod multiline;
-mod noparse;
-mod regression;
-mod replace;
-mod searcher;
-mod set;
-mod suffix_reverse;
-#[cfg(feature = "unicode")]
-mod unicode;
-#[cfg(feature = "unicode-perl")]
-mod word_boundary;
-#[cfg(feature = "unicode-perl")]
-mod word_boundary_unicode;
diff --git a/vendor/regex/tests/test_nfa_bytes.rs b/vendor/regex/tests/test_nfa_bytes.rs
deleted file mode 100644
index 0a10e032a..000000000
--- a/vendor/regex/tests/test_nfa_bytes.rs
+++ /dev/null
@@ -1,55 +0,0 @@
-macro_rules! regex_new {
- ($re:expr) => {{
- use regex::internal::ExecBuilder;
- ExecBuilder::new($re)
- .nfa()
- .only_utf8(false)
- .build()
- .map(|e| e.into_byte_regex())
- }};
-}
-
-macro_rules! regex {
- ($re:expr) => {
- regex_new!($re).unwrap()
- };
-}
-
-macro_rules! regex_set_new {
- ($re:expr) => {{
- use regex::internal::ExecBuilder;
- ExecBuilder::new_many($re)
- .nfa()
- .only_utf8(false)
- .build()
- .map(|e| e.into_byte_regex_set())
- }};
-}
-
-macro_rules! regex_set {
- ($res:expr) => {
- regex_set_new!($res).unwrap()
- };
-}
-
-// Must come before other module definitions.
-include!("macros_bytes.rs");
-include!("macros.rs");
-
-mod api;
-mod bytes;
-mod crazy;
-mod flags;
-mod fowler;
-mod multiline;
-mod noparse;
-mod regression;
-mod replace;
-mod set;
-mod suffix_reverse;
-#[cfg(feature = "unicode")]
-mod unicode;
-#[cfg(feature = "unicode-perl")]
-mod word_boundary;
-#[cfg(feature = "unicode-perl")]
-mod word_boundary_unicode;
diff --git a/vendor/regex/tests/test_nfa_utf8bytes.rs b/vendor/regex/tests/test_nfa_utf8bytes.rs
deleted file mode 100644
index 36a572b5f..000000000
--- a/vendor/regex/tests/test_nfa_utf8bytes.rs
+++ /dev/null
@@ -1,54 +0,0 @@
-#![cfg_attr(feature = "pattern", feature(pattern))]
-
-macro_rules! regex_new {
- ($re:expr) => {{
- use regex::internal::ExecBuilder;
- ExecBuilder::new($re).nfa().bytes(true).build().map(|e| e.into_regex())
- }};
-}
-
-macro_rules! regex {
- ($re:expr) => {
- regex_new!($re).unwrap()
- };
-}
-
-macro_rules! regex_set_new {
- ($re:expr) => {{
- use regex::internal::ExecBuilder;
- ExecBuilder::new_many($re)
- .nfa()
- .bytes(true)
- .build()
- .map(|e| e.into_regex_set())
- }};
-}
-
-macro_rules! regex_set {
- ($res:expr) => {
- regex_set_new!($res).unwrap()
- };
-}
-
-// Must come before other module definitions.
-include!("macros_str.rs");
-include!("macros.rs");
-
-mod api;
-mod api_str;
-mod crazy;
-mod flags;
-mod fowler;
-mod multiline;
-mod noparse;
-mod regression;
-mod replace;
-mod searcher;
-mod set;
-mod suffix_reverse;
-#[cfg(feature = "unicode")]
-mod unicode;
-#[cfg(feature = "unicode-perl")]
-mod word_boundary;
-#[cfg(feature = "unicode-perl")]
-mod word_boundary_unicode;
diff --git a/vendor/regex/tests/unicode.rs b/vendor/regex/tests/unicode.rs
deleted file mode 100644
index d7dbdd31b..000000000
--- a/vendor/regex/tests/unicode.rs
+++ /dev/null
@@ -1,254 +0,0 @@
-mat!(uni_literal, r"☃", "☃", Some((0, 3)));
-mat!(uni_literal_plus, r"☃+", "☃", Some((0, 3)));
-mat!(uni_literal_casei_plus, r"(?i)☃+", "☃", Some((0, 3)));
-mat!(uni_class_plus, r"[☃Ⅰ]+", "☃", Some((0, 3)));
-mat!(uni_one, r"\pN", "Ⅰ", Some((0, 3)));
-mat!(uni_mixed, r"\pN+", "Ⅰ1Ⅱ2", Some((0, 8)));
-mat!(uni_not, r"\PN+", "abⅠ", Some((0, 2)));
-mat!(uni_not_class, r"[\PN]+", "abⅠ", Some((0, 2)));
-mat!(uni_not_class_neg, r"[^\PN]+", "abⅠ", Some((2, 5)));
-mat!(uni_case, r"(?i)Δ", "δ", Some((0, 2)));
-mat!(uni_case_upper, r"\p{Lu}+", "ΛΘΓΔα", Some((0, 8)));
-mat!(uni_case_upper_nocase_flag, r"(?i)\p{Lu}+", "ΛΘΓΔα", Some((0, 10)));
-mat!(uni_case_upper_nocase, r"\p{L}+", "ΛΘΓΔα", Some((0, 10)));
-mat!(uni_case_lower, r"\p{Ll}+", "ΛΘΓΔα", Some((8, 10)));
-
-// Test the Unicode friendliness of Perl character classes.
-mat!(uni_perl_w, r"\w+", "dδd", Some((0, 4)));
-mat!(uni_perl_w_not, r"\w+", "⥡", None);
-mat!(uni_perl_w_neg, r"\W+", "⥡", Some((0, 3)));
-mat!(uni_perl_d, r"\d+", "1२३9", Some((0, 8)));
-mat!(uni_perl_d_not, r"\d+", "Ⅱ", None);
-mat!(uni_perl_d_neg, r"\D+", "Ⅱ", Some((0, 3)));
-mat!(uni_perl_s, r"\s+", " ", Some((0, 3)));
-mat!(uni_perl_s_not, r"\s+", "☃", None);
-mat!(uni_perl_s_neg, r"\S+", "☃", Some((0, 3)));
-
-// And do the same for word boundaries.
-mat!(uni_boundary_none, r"\d\b", "6δ", None);
-mat!(uni_boundary_ogham, r"\d\b", "6 ", Some((0, 1)));
-mat!(uni_not_boundary_none, r"\d\B", "6δ", Some((0, 1)));
-mat!(uni_not_boundary_ogham, r"\d\B", "6 ", None);
-
-// Test general categories.
-//
-// We should test more, but there's a lot. Write a script to generate more of
-// these tests.
-mat!(uni_class_gencat_cased_letter, r"\p{Cased_Letter}", "A", Some((0, 3)));
-mat!(uni_class_gencat_cased_letter2, r"\p{gc=LC}", "A", Some((0, 3)));
-mat!(uni_class_gencat_cased_letter3, r"\p{LC}", "A", Some((0, 3)));
-mat!(
- uni_class_gencat_close_punctuation,
- r"\p{Close_Punctuation}",
- "❯",
- Some((0, 3))
-);
-mat!(
- uni_class_gencat_connector_punctuation,
- r"\p{Connector_Punctuation}",
- "⁀",
- Some((0, 3))
-);
-mat!(uni_class_gencat_control, r"\p{Control}", "\u{9f}", Some((0, 2)));
-mat!(
- uni_class_gencat_currency_symbol,
- r"\p{Currency_Symbol}",
- "£",
- Some((0, 3))
-);
-mat!(
- uni_class_gencat_dash_punctuation,
- r"\p{Dash_Punctuation}",
- "〰",
- Some((0, 3))
-);
-mat!(uni_class_gencat_decimal_numer, r"\p{Decimal_Number}", "𑓙", Some((0, 4)));
-mat!(
- uni_class_gencat_enclosing_mark,
- r"\p{Enclosing_Mark}",
- "\u{A672}",
- Some((0, 3))
-);
-mat!(
- uni_class_gencat_final_punctuation,
- r"\p{Final_Punctuation}",
- "⸡",
- Some((0, 3))
-);
-mat!(uni_class_gencat_format, r"\p{Format}", "\u{E007F}", Some((0, 4)));
-// See: https://github.com/rust-lang/regex/issues/719
-mat!(uni_class_gencat_format_abbrev1, r"\p{cf}", "\u{E007F}", Some((0, 4)));
-mat!(uni_class_gencat_format_abbrev2, r"\p{gc=cf}", "\u{E007F}", Some((0, 4)));
-mat!(uni_class_gencat_format_abbrev3, r"\p{Sc}", "$", Some((0, 1)));
-mat!(
- uni_class_gencat_initial_punctuation,
- r"\p{Initial_Punctuation}",
- "⸜",
- Some((0, 3))
-);
-mat!(uni_class_gencat_letter, r"\p{Letter}", "Έ", Some((0, 2)));
-mat!(uni_class_gencat_letter_number, r"\p{Letter_Number}", "ↂ", Some((0, 3)));
-mat!(
- uni_class_gencat_line_separator,
- r"\p{Line_Separator}",
- "\u{2028}",
- Some((0, 3))
-);
-mat!(
- uni_class_gencat_lowercase_letter,
- r"\p{Lowercase_Letter}",
- "ϛ",
- Some((0, 2))
-);
-mat!(uni_class_gencat_mark, r"\p{Mark}", "\u{E01EF}", Some((0, 4)));
-mat!(uni_class_gencat_math, r"\p{Math}", "⋿", Some((0, 3)));
-mat!(
- uni_class_gencat_modifier_letter,
- r"\p{Modifier_Letter}",
- "𖭃",
- Some((0, 4))
-);
-mat!(
- uni_class_gencat_modifier_symbol,
- r"\p{Modifier_Symbol}",
- "🏿",
- Some((0, 4))
-);
-mat!(
- uni_class_gencat_nonspacing_mark,
- r"\p{Nonspacing_Mark}",
- "\u{1E94A}",
- Some((0, 4))
-);
-mat!(uni_class_gencat_number, r"\p{Number}", "⓿", Some((0, 3)));
-mat!(
- uni_class_gencat_open_punctuation,
- r"\p{Open_Punctuation}",
- "⦅",
- Some((0, 3))
-);
-mat!(uni_class_gencat_other, r"\p{Other}", "\u{bc9}", Some((0, 3)));
-mat!(uni_class_gencat_other_letter, r"\p{Other_Letter}", "ꓷ", Some((0, 3)));
-mat!(uni_class_gencat_other_number, r"\p{Other_Number}", "㉏", Some((0, 3)));
-mat!(
- uni_class_gencat_other_punctuation,
- r"\p{Other_Punctuation}",
- "𞥞",
- Some((0, 4))
-);
-mat!(uni_class_gencat_other_symbol, r"\p{Other_Symbol}", "⅌", Some((0, 3)));
-mat!(
- uni_class_gencat_paragraph_separator,
- r"\p{Paragraph_Separator}",
- "\u{2029}",
- Some((0, 3))
-);
-mat!(
- uni_class_gencat_private_use,
- r"\p{Private_Use}",
- "\u{10FFFD}",
- Some((0, 4))
-);
-mat!(uni_class_gencat_punctuation, r"\p{Punctuation}", "𑁍", Some((0, 4)));
-mat!(uni_class_gencat_separator, r"\p{Separator}", "\u{3000}", Some((0, 3)));
-mat!(
- uni_class_gencat_space_separator,
- r"\p{Space_Separator}",
- "\u{205F}",
- Some((0, 3))
-);
-mat!(
- uni_class_gencat_spacing_mark,
- r"\p{Spacing_Mark}",
- "\u{16F7E}",
- Some((0, 4))
-);
-mat!(uni_class_gencat_symbol, r"\p{Symbol}", "⯈", Some((0, 3)));
-mat!(
- uni_class_gencat_titlecase_letter,
- r"\p{Titlecase_Letter}",
- "ῼ",
- Some((0, 3))
-);
-mat!(
- uni_class_gencat_unassigned,
- r"\p{Unassigned}",
- "\u{10FFFF}",
- Some((0, 4))
-);
-mat!(
- uni_class_gencat_uppercase_letter,
- r"\p{Uppercase_Letter}",
- "Ꝋ",
- Some((0, 3))
-);
-
-// Test a smattering of properties.
-mat!(uni_class_prop_emoji1, r"\p{Emoji}", "\u{23E9}", Some((0, 3)));
-mat!(uni_class_prop_emoji2, r"\p{emoji}", "\u{1F21A}", Some((0, 4)));
-mat!(
- uni_class_prop_picto1,
- r"\p{extendedpictographic}",
- "\u{1FA6E}",
- Some((0, 4))
-);
-mat!(
- uni_class_prop_picto2,
- r"\p{extendedpictographic}",
- "\u{1FFFD}",
- Some((0, 4))
-);
-
-// grapheme_cluster_break
-mat!(
- uni_class_gcb_prepend,
- r"\p{grapheme_cluster_break=prepend}",
- "\u{11D46}",
- Some((0, 4))
-);
-mat!(
- uni_class_gcb_ri1,
- r"\p{gcb=regional_indicator}",
- "\u{1F1E6}",
- Some((0, 4))
-);
-mat!(uni_class_gcb_ri2, r"\p{gcb=ri}", "\u{1F1E7}", Some((0, 4)));
-mat!(
- uni_class_gcb_ri3,
- r"\p{gcb=regionalindicator}",
- "\u{1F1FF}",
- Some((0, 4))
-);
-mat!(uni_class_gcb_lvt, r"\p{gcb=lvt}", "\u{C989}", Some((0, 3)));
-mat!(uni_class_gcb_zwj, r"\p{gcb=zwj}", "\u{200D}", Some((0, 3)));
-
-// word_break
-mat!(uni_class_wb1, r"\p{word_break=Hebrew_Letter}", "\u{FB46}", Some((0, 3)));
-mat!(uni_class_wb2, r"\p{wb=hebrewletter}", "\u{FB46}", Some((0, 3)));
-mat!(uni_class_wb3, r"\p{wb=ExtendNumLet}", "\u{FF3F}", Some((0, 3)));
-mat!(uni_class_wb4, r"\p{wb=WSegSpace}", "\u{3000}", Some((0, 3)));
-mat!(uni_class_wb5, r"\p{wb=numeric}", "\u{1E950}", Some((0, 4)));
-
-// sentence_break
-mat!(uni_class_sb1, r"\p{sentence_break=Lower}", "\u{0469}", Some((0, 2)));
-mat!(uni_class_sb2, r"\p{sb=lower}", "\u{0469}", Some((0, 2)));
-mat!(uni_class_sb3, r"\p{sb=Close}", "\u{FF60}", Some((0, 3)));
-mat!(uni_class_sb4, r"\p{sb=Close}", "\u{1F677}", Some((0, 4)));
-mat!(uni_class_sb5, r"\p{sb=SContinue}", "\u{FF64}", Some((0, 3)));
-
-// Test 'Vithkuqi' support, which was added in Unicode 14.
-// See: https://github.com/rust-lang/regex/issues/877
-mat!(
- uni_vithkuqi_literal_upper,
- r"(?i)^\u{10570}$",
- "\u{10570}",
- Some((0, 4))
-);
-mat!(
- uni_vithkuqi_literal_lower,
- r"(?i)^\u{10570}$",
- "\u{10597}",
- Some((0, 4))
-);
-mat!(uni_vithkuqi_word_upper, r"^\w$", "\u{10570}", Some((0, 4)));
-mat!(uni_vithkuqi_word_lower, r"^\w$", "\u{10597}", Some((0, 4)));
diff --git a/vendor/regex/tests/word_boundary.rs b/vendor/regex/tests/word_boundary.rs
deleted file mode 100644
index 7fe97a297..000000000
--- a/vendor/regex/tests/word_boundary.rs
+++ /dev/null
@@ -1,89 +0,0 @@
-// Many of these are cribbed from RE2's test suite.
-
-matiter!(wb1, r"\b", "");
-matiter!(wb2, r"\b", "a", (0, 0), (1, 1));
-matiter!(wb3, r"\b", "ab", (0, 0), (2, 2));
-matiter!(wb4, r"^\b", "ab", (0, 0));
-matiter!(wb5, r"\b$", "ab", (2, 2));
-matiter!(wb6, r"^\b$", "ab");
-matiter!(wb7, r"\bbar\b", "nobar bar foo bar", (6, 9), (14, 17));
-matiter!(wb8, r"a\b", "faoa x", (3, 4));
-matiter!(wb9, r"\bbar", "bar x", (0, 3));
-matiter!(wb10, r"\bbar", "foo\nbar x", (4, 7));
-matiter!(wb11, r"bar\b", "foobar", (3, 6));
-matiter!(wb12, r"bar\b", "foobar\nxxx", (3, 6));
-matiter!(wb13, r"(foo|bar|[A-Z])\b", "foo", (0, 3));
-matiter!(wb14, r"(foo|bar|[A-Z])\b", "foo\n", (0, 3));
-matiter!(wb15, r"\b(foo|bar|[A-Z])", "foo", (0, 3));
-matiter!(wb16, r"\b(foo|bar|[A-Z])\b", "X", (0, 1));
-matiter!(wb17, r"\b(foo|bar|[A-Z])\b", "XY");
-matiter!(wb18, r"\b(foo|bar|[A-Z])\b", "bar", (0, 3));
-matiter!(wb19, r"\b(foo|bar|[A-Z])\b", "foo", (0, 3));
-matiter!(wb20, r"\b(foo|bar|[A-Z])\b", "foo\n", (0, 3));
-matiter!(wb21, r"\b(foo|bar|[A-Z])\b", "ffoo bbar N x", (10, 11));
-matiter!(wb22, r"\b(fo|foo)\b", "fo", (0, 2));
-matiter!(wb23, r"\b(fo|foo)\b", "foo", (0, 3));
-matiter!(wb24, r"\b\b", "");
-matiter!(wb25, r"\b\b", "a", (0, 0), (1, 1));
-matiter!(wb26, r"\b$", "");
-matiter!(wb27, r"\b$", "x", (1, 1));
-matiter!(wb28, r"\b$", "y x", (3, 3));
-matiter!(wb29, r"\b.$", "x", (0, 1));
-matiter!(wb30, r"^\b(fo|foo)\b", "fo", (0, 2));
-matiter!(wb31, r"^\b(fo|foo)\b", "foo", (0, 3));
-matiter!(wb32, r"^\b$", "");
-matiter!(wb33, r"^\b$", "x");
-matiter!(wb34, r"^\b.$", "x", (0, 1));
-matiter!(wb35, r"^\b.\b$", "x", (0, 1));
-matiter!(wb36, r"^^^^^\b$$$$$", "");
-matiter!(wb37, r"^^^^^\b.$$$$$", "x", (0, 1));
-matiter!(wb38, r"^^^^^\b$$$$$", "x");
-matiter!(wb39, r"^^^^^\b\b\b.\b\b\b$$$$$", "x", (0, 1));
-matiter!(wb40, r"\b.+\b", "$$abc$$", (2, 5));
-matiter!(wb41, r"\b", "a b c", (0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (5, 5));
-
-matiter!(nb1, r"\Bfoo\B", "n foo xfoox that", (7, 10));
-matiter!(nb2, r"a\B", "faoa x", (1, 2));
-matiter!(nb3, r"\Bbar", "bar x");
-matiter!(nb4, r"\Bbar", "foo\nbar x");
-matiter!(nb5, r"bar\B", "foobar");
-matiter!(nb6, r"bar\B", "foobar\nxxx");
-matiter!(nb7, r"(foo|bar|[A-Z])\B", "foox", (0, 3));
-matiter!(nb8, r"(foo|bar|[A-Z])\B", "foo\n");
-matiter!(nb9, r"\B", "", (0, 0));
-matiter!(nb10, r"\B", "x");
-matiter!(nb11, r"\B(foo|bar|[A-Z])", "foo");
-matiter!(nb12, r"\B(foo|bar|[A-Z])\B", "xXy", (1, 2));
-matiter!(nb13, r"\B(foo|bar|[A-Z])\B", "XY");
-matiter!(nb14, r"\B(foo|bar|[A-Z])\B", "XYZ", (1, 2));
-matiter!(nb15, r"\B(foo|bar|[A-Z])\B", "abara", (1, 4));
-matiter!(nb16, r"\B(foo|bar|[A-Z])\B", "xfoo_", (1, 4));
-matiter!(nb17, r"\B(foo|bar|[A-Z])\B", "xfoo\n");
-matiter!(nb18, r"\B(foo|bar|[A-Z])\B", "foo bar vNX", (9, 10));
-matiter!(nb19, r"\B(fo|foo)\B", "xfoo", (1, 3));
-matiter!(nb20, r"\B(foo|fo)\B", "xfooo", (1, 4));
-matiter!(nb21, r"\B\B", "", (0, 0));
-matiter!(nb22, r"\B\B", "x");
-matiter!(nb23, r"\B$", "", (0, 0));
-matiter!(nb24, r"\B$", "x");
-matiter!(nb25, r"\B$", "y x");
-matiter!(nb26, r"\B.$", "x");
-matiter!(nb27, r"^\B(fo|foo)\B", "fo");
-matiter!(nb28, r"^\B(fo|foo)\B", "foo");
-matiter!(nb29, r"^\B", "", (0, 0));
-matiter!(nb30, r"^\B", "x");
-matiter!(nb31, r"^\B\B", "", (0, 0));
-matiter!(nb32, r"^\B\B", "x");
-matiter!(nb33, r"^\B$", "", (0, 0));
-matiter!(nb34, r"^\B$", "x");
-matiter!(nb35, r"^\B.$", "x");
-matiter!(nb36, r"^\B.\B$", "x");
-matiter!(nb37, r"^^^^^\B$$$$$", "", (0, 0));
-matiter!(nb38, r"^^^^^\B.$$$$$", "x");
-matiter!(nb39, r"^^^^^\B$$$$$", "x");
-
-// These work for both Unicode and ASCII because all matches are reported as
-// byte offsets, and « and » do not correspond to word boundaries at either
-// the character or byte level.
-matiter!(unicode1, r"\bx\b", "«x", (2, 3));
-matiter!(unicode2, r"\bx\b", "x»", (0, 1));
diff --git a/vendor/regex/tests/word_boundary_ascii.rs b/vendor/regex/tests/word_boundary_ascii.rs
deleted file mode 100644
index 5a3cf1166..000000000
--- a/vendor/regex/tests/word_boundary_ascii.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-// ASCII word boundaries are completely oblivious to Unicode characters.
-// For Unicode word boundaries, the tests are precisely inverted.
-matiter!(ascii1, r"(?-u:\b)x(?-u:\b)", "áxβ", (2, 3));
-matiter!(ascii2, r"(?-u:\B)x(?-u:\B)", "áxβ");
-matiter!(ascii3, r"(?-u:\B)", "0\u{7EF5E}", (2, 2), (3, 3), (4, 4), (5, 5));
-
-// We still get Unicode word boundaries by default in byte regexes.
-matiter!(unicode1, r"\bx\b", "áxβ");
-matiter!(unicode2, r"\Bx\B", "áxβ", (2, 3));
diff --git a/vendor/regex/tests/word_boundary_unicode.rs b/vendor/regex/tests/word_boundary_unicode.rs
deleted file mode 100644
index c41355ffc..000000000
--- a/vendor/regex/tests/word_boundary_unicode.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-// Unicode word boundaries know about Unicode characters.
-// For ASCII word boundaries, the tests are precisely inverted.
-matiter!(unicode1, r"\bx\b", "áxβ");
-matiter!(unicode2, r"\Bx\B", "áxβ", (2, 3));
-
-matiter!(ascii1, r"(?-u:\b)x(?-u:\b)", "áxβ", (2, 3));