From 8cda4b662fc82eb3bf767d2b5a642f016e732aa9 Mon Sep 17 00:00:00 2001 From: dongyan Date: Thu, 25 Aug 2022 21:23:04 +0800 Subject: [PATCH 01/30] Update .ocamlformat --- .ocamlformat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ocamlformat b/.ocamlformat index ff63c583..0de0912e 100644 --- a/.ocamlformat +++ b/.ocamlformat @@ -1,4 +1,4 @@ -version=0.19.0 +#version=0.19.0 profile = conventional break-separators = after space-around-lists = false From 62b678ab10ad700e08552f780d7eed7d30913693 Mon Sep 17 00:00:00 2001 From: dongyan Date: Sat, 3 Sep 2022 23:34:42 +0800 Subject: [PATCH 02/30] Add field `alias` to Sedlex.node --- src/lib/sedlexing.ml | 12 +++++++++++- src/lib/sedlexing.mli | 6 +++++- src/syntax/ppx_sedlex.ml | 41 +++++++++++++++++++++++----------------- src/syntax/sedlex.ml | 12 +++++++++++- src/syntax/sedlex.mli | 1 + 5 files changed, 52 insertions(+), 20 deletions(-) diff --git a/src/lib/sedlexing.ml b/src/lib/sedlexing.ml index adc415c7..034f7115 100644 --- a/src/lib/sedlexing.ml +++ b/src/lib/sedlexing.ml @@ -28,6 +28,8 @@ type lexbuf = { (* bol is the index in the input stream but not buffer *) mutable curr_line : int; (* start from 1, if it is 0, we would not track postion info for you *) + mutable path : int list; + (* The path of state transformation in the automaton *) mutable start_pos : int; (* First char we need to keep visible *) mutable start_bol : int; @@ -35,6 +37,7 @@ type lexbuf = { mutable marked_pos : int; mutable marked_bol : int; mutable marked_line : int; + mutable marked_path : int list; mutable marked_val : int; mutable filename : string; mutable finished : bool; @@ -51,12 +54,14 @@ let empty_lexbuf = pos = 0; curr_bol = 0; curr_line = 0; + path = []; start_pos = 0; start_bol = 0; start_line = 0; marked_pos = 0; marked_bol = 0; marked_line = 0; + marked_path = []; marked_val = 0; filename = ""; finished = false; @@ -158,25 +163,30 @@ let mark lexbuf i = lexbuf.marked_pos <- lexbuf.pos; lexbuf.marked_bol <- lexbuf.curr_bol; lexbuf.marked_line <- lexbuf.curr_line; + lexbuf.marked_path <- lexbuf.path; lexbuf.marked_val <- i let start lexbuf = lexbuf.start_pos <- lexbuf.pos; lexbuf.start_bol <- lexbuf.curr_bol; lexbuf.start_line <- lexbuf.curr_line; + lexbuf.path <- []; mark lexbuf (-1) let backtrack lexbuf = lexbuf.pos <- lexbuf.marked_pos; lexbuf.curr_bol <- lexbuf.marked_bol; lexbuf.curr_line <- lexbuf.marked_line; + lexbuf.path <- lexbuf.marked_path; lexbuf.marked_val let rollback lexbuf = lexbuf.pos <- lexbuf.start_pos; lexbuf.curr_bol <- lexbuf.start_bol; - lexbuf.curr_line <- lexbuf.start_line + lexbuf.curr_line <- lexbuf.start_line; + lexbuf.path <- [] +let track lexbuf state = lexbuf.path <- state :: lexbuf.path let lexeme_start lexbuf = lexbuf.start_pos + lexbuf.offset let lexeme_end lexbuf = lexbuf.pos + lexbuf.offset let loc lexbuf = (lexbuf.start_pos + lexbuf.offset, lexbuf.pos + lexbuf.offset) diff --git a/src/lib/sedlexing.mli b/src/lib/sedlexing.mli index 9df2f17f..4f7ed3c0 100644 --- a/src/lib/sedlexing.mli +++ b/src/lib/sedlexing.mli @@ -151,7 +151,7 @@ val next : lexbuf -> Uchar.t option lexer buffer and increments to current position. If the input stream is exhausted, the function returns -1. If a ['\n'] is encountered, the tracked line number is incremented. - + This is a private API, it should not be used by code using this module's API and can be removed at any time. *) val __private__next_int : lexbuf -> int @@ -165,6 +165,10 @@ val mark : lexbuf -> int -> unit (the current position is set to the value of the backtrack position). *) val backtrack : lexbuf -> int +(** [track lexbuf state] tracks the path of state transformation + within the automaton. *) +val track : lexbuf -> int -> unit + (** [with_tokenizer tokenizer lexbuf] given a lexer and a lexbuf, returns a generator of tokens annotated with positions. This generator can be used with the Menir parser generator's diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index 172ad71c..212ae66e 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -209,16 +209,18 @@ let gen_state lexbuf auto i (trans, final) = in let cases = Array.to_list cases in let body () = - pexp_match ~loc - (appfun (partition_name partition) - [[%expr Sedlexing.__private__next_int [%e evar ~loc lexbuf]]]) - (cases - @ [ - case - ~lhs:[%pat? _] - ~guard:None - ~rhs:[%expr Sedlexing.backtrack [%e evar ~loc lexbuf]]; - ]) + pexp_sequence ~loc + [%expr Sedlexing.track [%e evar ~loc lexbuf] [%e eint ~loc i]] + (pexp_match ~loc + (appfun (partition_name partition) + [[%expr Sedlexing.__private__next_int [%e evar ~loc lexbuf]]]) + (cases + @ [ + case + ~lhs:[%pat? _] + ~guard:None + ~rhs:[%expr Sedlexing.backtrack [%e evar ~loc lexbuf]]; + ])) in let ret body = [ @@ -296,7 +298,7 @@ let rec repeat r = function | 0, m -> Sedlex.alt Sedlex.eps (Sedlex.seq r (repeat r (0, m - 1))) | n, m -> Sedlex.seq r (repeat r (n - 1, m - 1)) -let regexp_of_pattern env = +let regexp_of_pattern allow_alias env = let rec char_pair_op func name p tuple = (* Construct something like Sub(a,b) *) match tuple with @@ -311,12 +313,15 @@ let regexp_of_pattern env = | _ -> err p.ppat_loc @@ "the " ^ name ^ " operator requires two arguments, like " ^ name ^ "(a,b)" - and aux p = + and aux ?(allow_alias = false) p = (* interpret one pattern node *) match p.ppat_desc with - | Ppat_or (p1, p2) -> Sedlex.alt (aux p1) (aux p2) + | Ppat_or (p1, p2) -> + Sedlex.alt (aux ~allow_alias p1) (aux ~allow_alias p2) | Ppat_tuple (p :: pl) -> - List.fold_left (fun r p -> Sedlex.seq r (aux p)) (aux p) pl + List.fold_left + (fun r p -> Sedlex.seq r (aux ~allow_alias p)) + (aux ~allow_alias p) pl | Ppat_construct ({ txt = Lident "Star" }, Some (_, p)) -> Sedlex.rep (aux p) | Ppat_construct ({ txt = Lident "Plus" }, Some (_, p)) -> @@ -406,9 +411,11 @@ let regexp_of_pattern env = with Not_found -> err p.ppat_loc (Printf.sprintf "unbound regexp %s" x) end + | Ppat_alias (p, { txt = x }) when allow_alias -> + Sedlex.alias (aux ~allow_alias p) x | _ -> err p.ppat_loc "this pattern is not a valid regexp" in - aux + aux ~allow_alias let previous = ref [] let regexps = ref [] @@ -420,7 +427,7 @@ let mapper = val env = builtin_regexps method define_regexp name p = - {} + {} method! expression e = match e with @@ -446,7 +453,7 @@ let mapper = List.map (function | { pc_lhs = p; pc_rhs = e; pc_guard = None } -> - (regexp_of_pattern env p, super#expression e) + (regexp_of_pattern true env p, super#expression e) | { pc_guard = Some e } -> err e.pexp_loc "'when' guards are not supported") cases diff --git a/src/syntax/sedlex.ml b/src/syntax/sedlex.ml index 9a5f53ed..97c08bfa 100644 --- a/src/syntax/sedlex.ml +++ b/src/syntax/sedlex.ml @@ -10,6 +10,7 @@ type node = { id : int; mutable eps : node list; mutable trans : (Cset.t * node) list; + mutable alias : (string * bool) list; } (* Compilation regexp -> NFA *) @@ -20,7 +21,16 @@ let cur_id = ref 0 let new_node () = incr cur_id; - { id = !cur_id; eps = []; trans = [] } + { id = !cur_id; eps = []; trans = []; alias = [] } + +let alias r alias succ = + let n = new_node () in + let s = new_node () in + s.eps <- [succ]; + succ.alias <- (alias, false) :: succ.alias; + n.alias <- [(alias, true)]; + n.eps <- [r s]; + n let seq r1 r2 succ = r1 (r2 succ) diff --git a/src/syntax/sedlex.mli b/src/syntax/sedlex.mli index d809010e..d5279c05 100644 --- a/src/syntax/sedlex.mli +++ b/src/syntax/sedlex.mli @@ -11,6 +11,7 @@ val rep : regexp -> regexp val plus : regexp -> regexp val eps : regexp val compl : regexp -> regexp option +val alias : regexp -> string -> regexp (* If the argument is a single [chars] regexp, returns a regexp which matches the complement set. Otherwise returns [None]. *) From 73e31fa9aacb441b2bd4925f0e4aa45925bc2231 Mon Sep 17 00:00:00 2001 From: dongyan Date: Sun, 4 Sep 2022 00:40:16 +0800 Subject: [PATCH 03/30] Update `regexp_of_pattern` to analyze aliases --- src/syntax/ppx_sedlex.ml | 81 ++++++++++++++++++++++++++++------------ 1 file changed, 58 insertions(+), 23 deletions(-) diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index 212ae66e..cd077273 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -104,6 +104,14 @@ module StringMap = Map.Make (struct let compare = compare end) +(* Aliases *) + +module StringSet = Set.Make (struct + type t = string + + let compare = compare +end) + let builtin_regexps = List.fold_left (fun acc (n, c) -> StringMap.add n (Sedlex.chars c) acc) @@ -257,7 +265,7 @@ let gen_recflag auto = let gen_definition lexbuf l error = let loc = default_loc in - let brs = Array.of_list l in + let brs = Array.of_list (List.map (fun ((p, _), e) -> (p, e)) l) in let auto = Sedlex.compile (Array.map fst brs) in let cases = Array.to_list @@ -303,8 +311,8 @@ let regexp_of_pattern allow_alias env = (* Construct something like Sub(a,b) *) match tuple with | Some { ppat_desc = Ppat_tuple [p0; p1] } -> begin - match func (aux p0) (aux p1) with - | Some r -> r + match func (fst @@ aux p0) (fst @@ aux p1) with + | Some r -> (r, StringSet.empty) | None -> err p.ppat_loc @@ "the " ^ name ^ " operator can only applied to single-character length \ @@ -314,18 +322,36 @@ let regexp_of_pattern allow_alias env = err p.ppat_loc @@ "the " ^ name ^ " operator requires two arguments, like " ^ name ^ "(a,b)" and aux ?(allow_alias = false) p = + let loc = p.ppat_loc in (* interpret one pattern node *) match p.ppat_desc with | Ppat_or (p1, p2) -> - Sedlex.alt (aux ~allow_alias p1) (aux ~allow_alias p2) + let r1, s1 = aux ~allow_alias p1 in + let r2, s2 = aux ~allow_alias p2 in + if not (StringSet.equal s1 s2) then begin + let x = + try StringSet.choose (StringSet.diff s1 s2) + with Not_found -> StringSet.choose (StringSet.diff s2 s1) + in + err loc @@ "variable " ^ x + ^ " must occur on both sides of this | pattern" + end; + (Sedlex.alt r1 r2, s1) | Ppat_tuple (p :: pl) -> List.fold_left - (fun r p -> Sedlex.seq r (aux ~allow_alias p)) + (fun (r1, s1) p -> + let r2, s2 = aux ~allow_alias p in + if not (StringSet.disjoint s1 s2) then begin + let x = StringSet.choose (StringSet.inter s1 s2) in + err loc @@ "variable " ^ x + ^ " is bound several times in this matching" + end; + (Sedlex.seq r1 r2, StringSet.union s1 s2)) (aux ~allow_alias p) pl | Ppat_construct ({ txt = Lident "Star" }, Some (_, p)) -> - Sedlex.rep (aux p) + (Sedlex.rep (fst @@ aux p), StringSet.empty) | Ppat_construct ({ txt = Lident "Plus" }, Some (_, p)) -> - Sedlex.plus (aux p) + (Sedlex.plus (fst @@ aux p), StringSet.empty) | Ppat_construct ( { txt = Lident "Rep" }, Some @@ -345,7 +371,8 @@ let regexp_of_pattern allow_alias env = | Pconst_integer (i1, _), Pconst_integer (i2, _) -> let i1 = int_of_string i1 in let i2 = int_of_string i2 in - if 0 <= i1 && i1 <= i2 then repeat (aux p0) (i1, i2) + if 0 <= i1 && i1 <= i2 then + (repeat (fst @@ aux p0) (i1, i2), StringSet.empty) else err p.ppat_loc "Invalid range for Rep operator" | _ -> err p.ppat_loc "Rep must take an integer constant or interval" @@ -353,12 +380,12 @@ let regexp_of_pattern allow_alias env = | Ppat_construct ({ txt = Lident "Rep" }, _) -> err p.ppat_loc "the Rep operator takes 2 arguments" | Ppat_construct ({ txt = Lident "Opt" }, Some (_, p)) -> - Sedlex.alt Sedlex.eps (aux p) + (Sedlex.alt Sedlex.eps (fst @@ aux p), StringSet.empty) | Ppat_construct ({ txt = Lident "Compl" }, arg) -> begin match arg with | Some (_, p0) -> begin - match Sedlex.compl (aux p0) with - | Some r -> r + match Sedlex.compl (fst @@ aux p0) with + | Some r -> (r, StringSet.empty) | None -> err p.ppat_loc "the Compl operator can only applied to a \ @@ -384,35 +411,43 @@ let regexp_of_pattern allow_alias env = for i = 0 to String.length s - 1 do c := Cset.union !c (Cset.singleton (Char.code s.[i])) done; - Sedlex.chars !c + (Sedlex.chars !c, StringSet.empty) | _ -> err p.ppat_loc "the Chars operator requires a string argument") | Ppat_interval (i_start, i_end) -> begin match (i_start, i_end) with | Pconst_char c1, Pconst_char c2 -> - Sedlex.chars (Cset.interval (Char.code c1) (Char.code c2)) + ( Sedlex.chars (Cset.interval (Char.code c1) (Char.code c2)), + StringSet.empty ) | Pconst_integer (i1, _), Pconst_integer (i2, _) -> - Sedlex.chars - (Cset.interval - (codepoint (int_of_string i1)) - (codepoint (int_of_string i2))) + ( Sedlex.chars + (Cset.interval + (codepoint (int_of_string i1)) + (codepoint (int_of_string i2))), + StringSet.empty ) | _ -> err p.ppat_loc "this pattern is not a valid interval regexp" end | Ppat_constant const -> begin match const with - | Pconst_string (s, _, _) -> regexp_for_string s - | Pconst_char c -> regexp_for_char c + | Pconst_string (s, _, _) -> (regexp_for_string s, StringSet.empty) + | Pconst_char c -> (regexp_for_char c, StringSet.empty) | Pconst_integer (i, _) -> - Sedlex.chars (Cset.singleton (codepoint (int_of_string i))) + ( Sedlex.chars (Cset.singleton (codepoint (int_of_string i))), + StringSet.empty ) | _ -> err p.ppat_loc "this pattern is not a valid regexp" end | Ppat_var { txt = x } -> begin - try StringMap.find x env + try (StringMap.find x env, StringSet.empty) with Not_found -> err p.ppat_loc (Printf.sprintf "unbound regexp %s" x) end | Ppat_alias (p, { txt = x }) when allow_alias -> - Sedlex.alias (aux ~allow_alias p) x + let r, s = aux ~allow_alias p in + if StringSet.mem x s then begin + err loc @@ "variable " ^ x + ^ " is bound several times in this matching" + end; + (Sedlex.alias r x, StringSet.add x s) | _ -> err p.ppat_loc "this pattern is not a valid regexp" in aux ~allow_alias @@ -427,7 +462,7 @@ let mapper = val env = builtin_regexps method define_regexp name p = - {} + {} method! expression e = match e with From 2144578bde24c99e13c4aa61da6b4535dd2cd99d Mon Sep 17 00:00:00 2001 From: dongyan Date: Mon, 5 Sep 2022 23:03:18 +0800 Subject: [PATCH 04/30] Refactor tracking path --- src/lib/sedlexing.ml | 12 +------ src/lib/sedlexing.mli | 4 --- src/syntax/ppx_sedlex.ml | 67 +++++++++++++++++++++++++++------------- 3 files changed, 46 insertions(+), 37 deletions(-) diff --git a/src/lib/sedlexing.ml b/src/lib/sedlexing.ml index 034f7115..adc415c7 100644 --- a/src/lib/sedlexing.ml +++ b/src/lib/sedlexing.ml @@ -28,8 +28,6 @@ type lexbuf = { (* bol is the index in the input stream but not buffer *) mutable curr_line : int; (* start from 1, if it is 0, we would not track postion info for you *) - mutable path : int list; - (* The path of state transformation in the automaton *) mutable start_pos : int; (* First char we need to keep visible *) mutable start_bol : int; @@ -37,7 +35,6 @@ type lexbuf = { mutable marked_pos : int; mutable marked_bol : int; mutable marked_line : int; - mutable marked_path : int list; mutable marked_val : int; mutable filename : string; mutable finished : bool; @@ -54,14 +51,12 @@ let empty_lexbuf = pos = 0; curr_bol = 0; curr_line = 0; - path = []; start_pos = 0; start_bol = 0; start_line = 0; marked_pos = 0; marked_bol = 0; marked_line = 0; - marked_path = []; marked_val = 0; filename = ""; finished = false; @@ -163,30 +158,25 @@ let mark lexbuf i = lexbuf.marked_pos <- lexbuf.pos; lexbuf.marked_bol <- lexbuf.curr_bol; lexbuf.marked_line <- lexbuf.curr_line; - lexbuf.marked_path <- lexbuf.path; lexbuf.marked_val <- i let start lexbuf = lexbuf.start_pos <- lexbuf.pos; lexbuf.start_bol <- lexbuf.curr_bol; lexbuf.start_line <- lexbuf.curr_line; - lexbuf.path <- []; mark lexbuf (-1) let backtrack lexbuf = lexbuf.pos <- lexbuf.marked_pos; lexbuf.curr_bol <- lexbuf.marked_bol; lexbuf.curr_line <- lexbuf.marked_line; - lexbuf.path <- lexbuf.marked_path; lexbuf.marked_val let rollback lexbuf = lexbuf.pos <- lexbuf.start_pos; lexbuf.curr_bol <- lexbuf.start_bol; - lexbuf.curr_line <- lexbuf.start_line; - lexbuf.path <- [] + lexbuf.curr_line <- lexbuf.start_line -let track lexbuf state = lexbuf.path <- state :: lexbuf.path let lexeme_start lexbuf = lexbuf.start_pos + lexbuf.offset let lexeme_end lexbuf = lexbuf.pos + lexbuf.offset let loc lexbuf = (lexbuf.start_pos + lexbuf.offset, lexbuf.pos + lexbuf.offset) diff --git a/src/lib/sedlexing.mli b/src/lib/sedlexing.mli index 4f7ed3c0..d09bd4eb 100644 --- a/src/lib/sedlexing.mli +++ b/src/lib/sedlexing.mli @@ -165,10 +165,6 @@ val mark : lexbuf -> int -> unit (the current position is set to the value of the backtrack position). *) val backtrack : lexbuf -> int -(** [track lexbuf state] tracks the path of state transformation - within the automaton. *) -val track : lexbuf -> int -> unit - (** [with_tokenizer tokenizer lexbuf] given a lexer and a lexbuf, returns a generator of tokens annotated with positions. This generator can be used with the Menir parser generator's diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index cd077273..1cc1eceb 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -197,14 +197,22 @@ let best_final final = !fin let state_fun state = Printf.sprintf "__sedlex_state_%i" state +let matching_result = "__sedlex_matching_result" +let matching_path = "__sedlex_matching_path" let call_state lexbuf auto state = + let loc = default_loc in let trans, final = auto.(state) in if Array.length trans = 0 then ( match best_final final with - | Some i -> eint ~loc:default_loc i + | Some i -> [%expr [%e eint ~loc i], [%e evar ~loc matching_path]] | None -> assert false) - else appfun (state_fun state) [evar ~loc:default_loc lexbuf] + else + appfun (state_fun state) + [ + [%expr [%e eint ~loc state] :: [%e evar ~loc matching_path]]; + evar ~loc lexbuf; + ] let gen_state lexbuf auto i (trans, final) = let loc = default_loc in @@ -217,26 +225,25 @@ let gen_state lexbuf auto i (trans, final) = in let cases = Array.to_list cases in let body () = - pexp_sequence ~loc - [%expr Sedlexing.track [%e evar ~loc lexbuf] [%e eint ~loc i]] - (pexp_match ~loc - (appfun (partition_name partition) - [[%expr Sedlexing.__private__next_int [%e evar ~loc lexbuf]]]) - (cases - @ [ - case - ~lhs:[%pat? _] - ~guard:None - ~rhs:[%expr Sedlexing.backtrack [%e evar ~loc lexbuf]]; - ])) + pexp_match ~loc + (appfun (partition_name partition) + [[%expr Sedlexing.__private__next_int [%e evar ~loc lexbuf]]]) + (cases + @ [ + case + ~lhs:[%pat? _] + ~guard:None + ~rhs:[%expr Sedlexing.backtrack [%e evar ~loc lexbuf], []]; + ]) in let ret body = [ value_binding ~loc ~pat:(pvar ~loc (state_fun i)) ~expr: - (pexp_function ~loc - [case ~lhs:(pvar ~loc lexbuf) ~guard:None ~rhs:body]); + (pexp_fun ~loc Nolabel None (pvar ~loc matching_path) + (pexp_function ~loc + [case ~lhs:(pvar ~loc lexbuf) ~guard:None ~rhs:body])); ] in match best_final final with @@ -265,12 +272,20 @@ let gen_recflag auto = let gen_definition lexbuf l error = let loc = default_loc in - let brs = Array.of_list (List.map (fun ((p, _), e) -> (p, e)) l) in - let auto = Sedlex.compile (Array.map fst brs) in + let brs = Array.of_list l in + let auto = Sedlex.compile (Array.map (fun ((x, _), _) -> x) brs) in let cases = Array.to_list (Array.mapi - (fun i (_, e) -> case ~lhs:(pint ~loc i) ~guard:None ~rhs:e) + (fun i ((_, aliases), e) -> + let e = + if StringSet.is_empty aliases then e + else + [%expr + let _ = 123 in + [%e e]] + in + case ~lhs:(pint ~loc i) ~guard:None ~rhs:e) brs) in let states = Array.mapi (gen_state lexbuf auto) auto in @@ -278,9 +293,17 @@ let gen_definition lexbuf l error = pexp_let ~loc (gen_recflag auto) states (pexp_sequence ~loc [%expr Sedlexing.start [%e evar ~loc lexbuf]] - (pexp_match ~loc - (appfun (state_fun 0) [evar ~loc lexbuf]) - (cases @ [case ~lhs:(ppat_any ~loc) ~guard:None ~rhs:error]))) + (pexp_let ~loc Nonrecursive + [ + value_binding ~loc + ~pat: + (ppat_tuple ~loc + [pvar ~loc matching_result; pvar ~loc matching_path]) + ~expr:(appfun (state_fun 0) [[%expr [0]]; evar ~loc lexbuf]); + ] + (pexp_match ~loc + (evar ~loc matching_result) + (cases @ [case ~lhs:(ppat_any ~loc) ~guard:None ~rhs:error])))) (* Lexer specification parser *) From d2b29d9eaaa3cfe3dbfb782fe83e5d4eead2ffed Mon Sep 17 00:00:00 2001 From: dongyan Date: Sun, 18 Sep 2022 23:46:34 +0800 Subject: [PATCH 05/30] Implement path tracing --- dune-project | 2 +- examples/tokenizer.ml | 3 +- sedlex.opam | 2 +- src/syntax/ppx_sedlex.ml | 187 +- src/syntax/sedlex.ml | 87 +- src/syntax/sedlex.mli | 7 +- src/syntax/unicode.ml | 14283 +++++++------------------------------ 7 files changed, 2663 insertions(+), 11908 deletions(-) diff --git a/dune-project b/dune-project index e98e7270..2972cd3e 100644 --- a/dune-project +++ b/dune-project @@ -1,5 +1,5 @@ (lang dune 2.8) -(version 3.0) +(version 2144578-dirty) (name sedlex) (source (github ocaml-community/sedlex)) (license MIT) diff --git a/examples/tokenizer.ml b/examples/tokenizer.ml index e90af0d7..0c828c01 100644 --- a/examples/tokenizer.ml +++ b/examples/tokenizer.ml @@ -7,7 +7,8 @@ let rec token buf = | number -> Printf.printf "Number %s\n" (Sedlexing.Latin1.lexeme buf); token buf - | letter, Star ('A' .. 'Z' | 'a' .. 'z' | digit) -> + | (letter as initial), Star ('A' .. 'Z' | 'a' .. 'z' | digit) -> + Printf.printf "initial (%i, %i)\n" (fst initial) (snd initial); Printf.printf "Ident %s\n" (Sedlexing.Latin1.lexeme buf); token buf | Plus xml_blank -> token buf diff --git a/sedlex.opam b/sedlex.opam index 95c6ec70..aaf8ba1c 100644 --- a/sedlex.opam +++ b/sedlex.opam @@ -1,6 +1,6 @@ # This file is generated by dune, edit dune-project instead opam-version: "2.0" -version: "3.0" +version: "2144578-dirty" synopsis: "An OCaml lexer generator for Unicode" description: """ sedlex is a lexer generator for OCaml. It is similar to ocamllex, but supports diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index 1cc1eceb..84073419 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -104,7 +104,7 @@ module StringMap = Map.Make (struct let compare = compare end) -(* Aliases *) +(* Lexeme aliases *) module StringSet = Set.Make (struct type t = string @@ -197,22 +197,18 @@ let best_final final = !fin let state_fun state = Printf.sprintf "__sedlex_state_%i" state -let matching_result = "__sedlex_matching_result" -let matching_path = "__sedlex_matching_path" +let trace_fun i = Printf.sprintf "__sedlex_trace_%i" i let call_state lexbuf auto state = let loc = default_loc in let trans, final = auto.(state) in if Array.length trans = 0 then ( match best_final final with - | Some i -> [%expr [%e eint ~loc i], [%e evar ~loc matching_path]] + | Some i -> [%expr [%e eint ~loc i], __sedlex_path] | None -> assert false) else appfun (state_fun state) - [ - [%expr [%e eint ~loc state] :: [%e evar ~loc matching_path]]; - evar ~loc lexbuf; - ] + [[%expr [%e eint ~loc state] :: __sedlex_path]; evar ~loc lexbuf] let gen_state lexbuf auto i (trans, final) = let loc = default_loc in @@ -233,17 +229,15 @@ let gen_state lexbuf auto i (trans, final) = case ~lhs:[%pat? _] ~guard:None - ~rhs:[%expr Sedlexing.backtrack [%e evar ~loc lexbuf], []]; + ~rhs: + [%expr Sedlexing.backtrack [%e evar ~loc lexbuf], __sedlex_path]; ]) in let ret body = [ value_binding ~loc ~pat:(pvar ~loc (state_fun i)) - ~expr: - (pexp_fun ~loc Nolabel None (pvar ~loc matching_path) - (pexp_function ~loc - [case ~lhs:(pvar ~loc lexbuf) ~guard:None ~rhs:body])); + ~expr:[%expr fun __sedlex_path [%p pvar ~loc lexbuf] -> [%e body]]; ] in match best_final final with @@ -270,40 +264,159 @@ let gen_recflag auto = Nonrecursive with Exit -> Recursive +let gen_trace lexbuf traces i = function + | (_, []), _ -> [] + | (_, aliases), { pexp_loc = loc; _ } -> + let trans, finals = traces.(i) in + let alias_indexes = + List.to_seq aliases + |> Seq.mapi (fun i alias -> (alias, i)) + |> StringMap.of_seq + in + let find_index alias = StringMap.find alias alias_indexes in + let result_arrays = + [ + value_binding ~loc + ~pat:[%pat? __sedlex_aliases_pos] + ~expr:(pexp_array ~loc (List.map (fun _ -> [%expr 0]) aliases)); + value_binding ~loc + ~pat:[%pat? __sedlex_aliases_len] + ~expr:(pexp_array ~loc (List.map (fun _ -> [%expr 0]) aliases)); + ] + in + let aux_fun = + let gen_start alias e = + let alias_index = find_index alias in + [%expr + __sedlex_aliases_len.([%e eint ~loc alias_index]) <- + __sedlex_aliases_pos.([%e eint ~loc alias_index]) - __sedlex_pos; + __sedlex_aliases_pos.([%e eint ~loc alias_index]) <- __sedlex_pos; + [%e e]] + in + let gen_stop alias e = + let alias_index = find_index alias in + [%expr + __sedlex_aliases_pos.([%e eint ~loc alias_index]) <- __sedlex_pos; + [%e e]] + in + let unreachable_case = + [case ~lhs:[%pat? _] ~guard:None ~rhs:[%expr assert false]] + in + let trans_cases = + List.map + (fun (curr, state, next, starts, stops) -> + let lhs = + if curr == -1 then [%pat? -1, _] + else ppat_tuple ~loc [pint ~loc curr; pint ~loc state] + in + let call_rest = + [%expr + __sedlex_aux (__sedlex_pos - 1) [%e eint ~loc next] + __sedlex_rest] + in + let rhs = + call_rest + |> List.fold_right gen_start starts + |> List.fold_right gen_stop stops + in + case ~lhs ~guard:None ~rhs) + trans + in + let final_cases = + List.map + (fun (curr, starts, stops) -> + let lhs = pint ~loc curr in + let rhs = + [%expr ()] + |> List.fold_right gen_start starts + |> List.fold_right gen_stop stops + in + case ~lhs ~guard:None ~rhs) + finals + in + value_binding ~loc + ~pat:[%pat? __sedlex_aux] + ~expr: + [%expr + fun __sedlex_pos __sedlex_curr -> function + | [] -> + [%e + pexp_match ~loc [%expr __sedlex_curr] + (final_cases @ unreachable_case)] + | __sedlex_state :: __sedlex_rest -> + [%e + pexp_match ~loc + [%expr __sedlex_curr, __sedlex_state] + (trans_cases @ unreachable_case)]] + in + [ + value_binding ~loc + ~pat:(pvar ~loc (trace_fun i)) + ~expr: + [%expr + fun [%p pvar ~loc lexbuf] __sedlex_path -> + [%e + pexp_let ~loc Nonrecursive result_arrays + @@ pexp_let ~loc Recursive [aux_fun] + @@ [%expr + __sedlex_aux + (Sedlexing.lexeme_length [%e evar ~loc lexbuf] + 1) + (-1) __sedlex_path; + (__sedlex_aliases_pos, __sedlex_aliases_len)]]]; + ] + +let gen_aliases lexbuf i e = function + | [] -> e + | aliases -> + let loc = e.pexp_loc in + pexp_let ~loc Nonrecursive + [ + value_binding ~loc + ~pat:[%pat? __sedlex_aliases_pos, __sedlex_aliases_len] + ~expr: + (appfun (trace_fun i) [evar ~loc lexbuf; [%expr __sedlex_path]]); + ] + @@ pexp_let ~loc Nonrecursive + (List.mapi + (fun i alias -> + value_binding ~loc ~pat:(pvar ~loc alias) + ~expr: + [%expr + __sedlex_aliases_pos.([%e eint ~loc i]), + __sedlex_aliases_len.([%e eint ~loc i])]) + aliases) + @@ e + let gen_definition lexbuf l error = let loc = default_loc in - let brs = Array.of_list l in - let auto = Sedlex.compile (Array.map (fun ((x, _), _) -> x) brs) in + let brs = + Array.of_list + (List.map + (fun ((r, s), e) -> ((r, List.of_seq (StringSet.to_seq s)), e)) + l) + in + let auto, traces = Sedlex.compile (Array.map (fun ((r, _), _) -> r) brs) in let cases = Array.to_list (Array.mapi (fun i ((_, aliases), e) -> - let e = - if StringSet.is_empty aliases then e - else - [%expr - let _ = 123 in - [%e e]] - in - case ~lhs:(pint ~loc i) ~guard:None ~rhs:e) + case ~lhs:(pint ~loc i) ~guard:None + ~rhs:(gen_aliases lexbuf i e aliases)) brs) in let states = Array.mapi (gen_state lexbuf auto) auto in let states = List.flatten (Array.to_list states) in - pexp_let ~loc (gen_recflag auto) states - (pexp_sequence ~loc - [%expr Sedlexing.start [%e evar ~loc lexbuf]] - (pexp_let ~loc Nonrecursive - [ - value_binding ~loc - ~pat: - (ppat_tuple ~loc - [pvar ~loc matching_result; pvar ~loc matching_path]) - ~expr:(appfun (state_fun 0) [[%expr [0]]; evar ~loc lexbuf]); - ] - (pexp_match ~loc - (evar ~loc matching_result) - (cases @ [case ~lhs:(ppat_any ~loc) ~guard:None ~rhs:error])))) + let traces = Array.mapi (gen_trace lexbuf traces) brs in + let traces = List.flatten (Array.to_list traces) in + pexp_let ~loc (gen_recflag auto) (states @ traces) + @@ [%expr + Sedlexing.start [%e evar ~loc lexbuf]; + let __sedlex_result, __sedlex_path = + [%e appfun (state_fun 0) [[%expr [0]]; evar ~loc lexbuf]] + in + [%e + pexp_match ~loc [%expr __sedlex_result] + (cases @ [case ~lhs:(ppat_any ~loc) ~guard:None ~rhs:error])]] (* Lexer specification parser *) diff --git a/src/syntax/sedlex.ml b/src/syntax/sedlex.ml index 97c08bfa..2d74c519 100644 --- a/src/syntax/sedlex.ml +++ b/src/syntax/sedlex.ml @@ -10,7 +10,7 @@ type node = { id : int; mutable eps : node list; mutable trans : (Cset.t * node) list; - mutable alias : (string * bool) list; + mutable alias : (string * bool) option; } (* Compilation regexp -> NFA *) @@ -21,16 +21,7 @@ let cur_id = ref 0 let new_node () = incr cur_id; - { id = !cur_id; eps = []; trans = []; alias = [] } - -let alias r alias succ = - let n = new_node () in - let s = new_node () in - s.eps <- [succ]; - succ.alias <- (alias, false) :: succ.alias; - n.alias <- [(alias, true)]; - n.eps <- [r s]; - n + { id = !cur_id; eps = []; trans = []; alias = None } let seq r1 r2 succ = r1 (r2 succ) @@ -82,6 +73,15 @@ let pair_op f r0 r1 = let subtract = pair_op Cset.difference let intersection = pair_op Cset.intersection +let alias r alias succ = + let n = new_node () in + let s = new_node () in + s.eps <- [succ]; + s.alias <- Some (alias, false); + n.alias <- Some (alias, true); + n.eps <- [r s]; + n + let compile_re re = let final = new_node () in (re final, final) @@ -127,6 +127,68 @@ let transition (state : state) = Array.sort (fun (c1, _) (c2, _) -> compare c1 c2) t; t +let compile_traces states (start, final) = + let counter = ref 0 in + let nodes_idx = Hashtbl.create 31 in + let rec aux node = + try ignore (Hashtbl.find nodes_idx node) + with Not_found -> + let i = !counter in + incr counter; + Hashtbl.add nodes_idx node i; + List.iter (fun (_, next) -> aux next) node.trans; + List.iter aux node.eps + in + aux start; + let final_idx = Hashtbl.find nodes_idx final in + let handle_alias (starts, stops) = function + | None -> (starts, stops) + | Some (alias, flag) -> + if flag then (alias :: starts, stops) else (starts, alias :: stops) + in + let first_case = (-1, 0, final_idx, [], []) in + let trans_cases = + let visited = Array.make !counter false in + let cases = Hashtbl.create 31 in + let rec traverse node = + let j = Hashtbl.find nodes_idx node in + if not visited.(j) then begin + visited.(j) <- true; + let to_states = + Hashtbl.fold + (fun state i acc -> if List.mem node state then i :: acc else acc) + states [] + in + let rec dfs start_stops node = + let i = Hashtbl.find nodes_idx node in + let starts, stops = handle_alias start_stops node.alias in + List.iter + (fun state -> + try ignore (Hashtbl.find cases (i, state)) + with Not_found -> + Hashtbl.add cases (i, state) (i, state, j, starts, stops)) + to_states; + List.iter (dfs (starts, stops)) node.eps + in + List.iter (fun (_, next) -> dfs ([], []) next) node.trans; + List.iter traverse node.eps; + List.iter (fun (_, next) -> traverse next) node.trans + end + in + traverse start; + Hashtbl.to_seq cases |> Seq.map snd |> List.of_seq + in + let final_cases = + let rec dfs start_stops cases node = + let i = Hashtbl.find nodes_idx node in + let starts, stops = handle_alias start_stops node.alias in + let cases = (i, starts, stops) :: cases in + List.fold_left (dfs (starts, stops)) cases node.eps + in + dfs ([], []) [] start + in + (first_case :: trans_cases, final_cases) + let compile rs = let rs = Array.map compile_re rs in let counter = ref 0 in @@ -148,4 +210,5 @@ let compile rs = Array.iter (fun (i, _) -> init := add_node !init i) rs; let i = aux !init in assert (i = 0); - Array.init !counter (Hashtbl.find states_def) + ( Array.init !counter (Hashtbl.find states_def), + Array.map (compile_traces states) rs ) diff --git a/src/syntax/sedlex.mli b/src/syntax/sedlex.mli index d5279c05..d6cc1181 100644 --- a/src/syntax/sedlex.mli +++ b/src/syntax/sedlex.mli @@ -23,4 +23,9 @@ val intersection : regexp -> regexp -> regexp option (* If each argument is a single [chars] regexp, returns a regexp which matches the intersection set. Otherwise returns [None]. *) -val compile : regexp array -> ((Sedlex_cset.t * int) array * bool array) array +val compile : + regexp array -> + ((Sedlex_cset.t * int) array * bool array) array + * ((int * int * int * string list * string list) list + * (int * string list * string list) list) + array diff --git a/src/syntax/unicode.ml b/src/syntax/unicode.ml index ed322964..24aae1cc 100644 --- a/src/syntax/unicode.ml +++ b/src/syntax/unicode.ml @@ -1,11944 +1,2517 @@ let version = "14.0.0" module Categories = struct - let cc = [(0x85, 0x85); (0x7f, 0x9f); (0x9, 0xd); (0x0, 0x1f)] + + let cc = + [0x85, 0x85; 0x7f, 0x9f; 0x9, 0xd; 0x0, 0x1f] let cf = - [ - (0xad, 0xad); - (0x600, 0x605); - (0x61c, 0x61c); - (0x6dd, 0x6dd); - (0x70f, 0x70f); - (0x890, 0x891); - (0x8e2, 0x8e2); - (0x180e, 0x180e); - (0x200b, 0x200f); - (0x200c, 0x200c); - (0x200c, 0x200d); - (0x200e, 0x200f); - (0x202a, 0x202e); - (0x2060, 0x2064); - (0x2061, 0x2064); - (0x2066, 0x2069); - (0x2066, 0x206f); - (0x206a, 0x206f); - (0xfeff, 0xfeff); - (0xfff9, 0xfffb); - (0x110bd, 0x110bd); - (0x110cd, 0x110cd); - (0x13430, 0x13438); - (0x1bca0, 0x1bca3); - (0x1d173, 0x1d17a); - (0xe0020, 0xe007f); - (0xe0001, 0xe0001); - ] + [0xad, 0xad; 0x600, 0x605; 0x61c, 0x61c; 0x6dd, 0x6dd; 0x70f, 0x70f; + 0x890, 0x891; 0x8e2, 0x8e2; 0x180e, 0x180e; 0x200b, 0x200f; 0x200c, 0x200c; + 0x200c, 0x200d; 0x200e, 0x200f; 0x202a, 0x202e; 0x2060, 0x2064; 0x2061, 0x2064; + 0x2066, 0x2069; 0x2066, 0x206f; 0x206a, 0x206f; 0xfeff, 0xfeff; 0xfff9, 0xfffb; + 0x110bd, 0x110bd; 0x110cd, 0x110cd; 0x13430, 0x13438; 0x1bca0, 0x1bca3; 0x1d173, 0x1d17a; + 0xe0020, 0xe007f; 0xe0001, 0xe0001] let cn = - [ - (0x378, 0x379); - (0x380, 0x383); - (0x38b, 0x38b); - (0x38d, 0x38d); - (0x3a2, 0x3a2); - (0x530, 0x530); - (0x557, 0x558); - (0x58b, 0x58c); - (0x590, 0x590); - (0x5c8, 0x5cf); - (0x5eb, 0x5ee); - (0x5f5, 0x5ff); - (0x70e, 0x70e); - (0x74b, 0x74c); - (0x7b2, 0x7bf); - (0x7fb, 0x7fc); - (0x82e, 0x82f); - (0x83f, 0x83f); - (0x85c, 0x85d); - (0x85f, 0x85f); - (0x86b, 0x86f); - (0x88f, 0x88f); - (0x892, 0x897); - (0x984, 0x984); - (0x98d, 0x98e); - (0x991, 0x992); - (0x9a9, 0x9a9); - (0x9b1, 0x9b1); - (0x9b3, 0x9b5); - (0x9ba, 0x9bb); - (0x9c5, 0x9c6); - (0x9c9, 0x9ca); - (0x9cf, 0x9d6); - (0x9d8, 0x9db); - (0x9de, 0x9de); - (0x9e4, 0x9e5); - (0x9ff, 0xa00); - (0xa04, 0xa04); - (0xa0b, 0xa0e); - (0xa11, 0xa12); - (0xa29, 0xa29); - (0xa31, 0xa31); - (0xa34, 0xa34); - (0xa37, 0xa37); - (0xa3a, 0xa3b); - (0xa3d, 0xa3d); - (0xa43, 0xa46); - (0xa49, 0xa4a); - (0xa4e, 0xa50); - (0xa52, 0xa58); - (0xa5d, 0xa5d); - (0xa5f, 0xa65); - (0xa77, 0xa80); - (0xa84, 0xa84); - (0xa8e, 0xa8e); - (0xa92, 0xa92); - (0xaa9, 0xaa9); - (0xab1, 0xab1); - (0xab4, 0xab4); - (0xaba, 0xabb); - (0xac6, 0xac6); - (0xaca, 0xaca); - (0xace, 0xacf); - (0xad1, 0xadf); - (0xae4, 0xae5); - (0xaf2, 0xaf8); - (0xb00, 0xb00); - (0xb04, 0xb04); - (0xb0d, 0xb0e); - (0xb11, 0xb12); - (0xb29, 0xb29); - (0xb31, 0xb31); - (0xb34, 0xb34); - (0xb3a, 0xb3b); - (0xb45, 0xb46); - (0xb49, 0xb4a); - (0xb4e, 0xb54); - (0xb58, 0xb5b); - (0xb5e, 0xb5e); - (0xb64, 0xb65); - (0xb78, 0xb81); - (0xb84, 0xb84); - (0xb8b, 0xb8d); - (0xb91, 0xb91); - (0xb96, 0xb98); - (0xb9b, 0xb9b); - (0xb9d, 0xb9d); - (0xba0, 0xba2); - (0xba5, 0xba7); - (0xbab, 0xbad); - (0xbba, 0xbbd); - (0xbc3, 0xbc5); - (0xbc9, 0xbc9); - (0xbce, 0xbcf); - (0xbd1, 0xbd6); - (0xbd8, 0xbe5); - (0xbfb, 0xbff); - (0xc0d, 0xc0d); - (0xc11, 0xc11); - (0xc29, 0xc29); - (0xc3a, 0xc3b); - (0xc45, 0xc45); - (0xc49, 0xc49); - (0xc4e, 0xc54); - (0xc57, 0xc57); - (0xc5b, 0xc5c); - (0xc5e, 0xc5f); - (0xc64, 0xc65); - (0xc70, 0xc76); - (0xc8d, 0xc8d); - (0xc91, 0xc91); - (0xca9, 0xca9); - (0xcb4, 0xcb4); - (0xcba, 0xcbb); - (0xcc5, 0xcc5); - (0xcc9, 0xcc9); - (0xcce, 0xcd4); - (0xcd7, 0xcdc); - (0xcdf, 0xcdf); - (0xce4, 0xce5); - (0xcf0, 0xcf0); - (0xcf3, 0xcff); - (0xd0d, 0xd0d); - (0xd11, 0xd11); - (0xd45, 0xd45); - (0xd49, 0xd49); - (0xd50, 0xd53); - (0xd64, 0xd65); - (0xd80, 0xd80); - (0xd84, 0xd84); - (0xd97, 0xd99); - (0xdb2, 0xdb2); - (0xdbc, 0xdbc); - (0xdbe, 0xdbf); - (0xdc7, 0xdc9); - (0xdcb, 0xdce); - (0xdd5, 0xdd5); - (0xdd7, 0xdd7); - (0xde0, 0xde5); - (0xdf0, 0xdf1); - (0xdf5, 0xe00); - (0xe3b, 0xe3e); - (0xe5c, 0xe80); - (0xe83, 0xe83); - (0xe85, 0xe85); - (0xe8b, 0xe8b); - (0xea4, 0xea4); - (0xea6, 0xea6); - (0xebe, 0xebf); - (0xec5, 0xec5); - (0xec7, 0xec7); - (0xece, 0xecf); - (0xeda, 0xedb); - (0xee0, 0xeff); - (0xf48, 0xf48); - (0xf6d, 0xf70); - (0xf98, 0xf98); - (0xfbd, 0xfbd); - (0xfcd, 0xfcd); - (0xfdb, 0xfff); - (0x10c6, 0x10c6); - (0x10c8, 0x10cc); - (0x10ce, 0x10cf); - (0x1249, 0x1249); - (0x124e, 0x124f); - (0x1257, 0x1257); - (0x1259, 0x1259); - (0x125e, 0x125f); - (0x1289, 0x1289); - (0x128e, 0x128f); - (0x12b1, 0x12b1); - (0x12b6, 0x12b7); - (0x12bf, 0x12bf); - (0x12c1, 0x12c1); - (0x12c6, 0x12c7); - (0x12d7, 0x12d7); - (0x1311, 0x1311); - (0x1316, 0x1317); - (0x135b, 0x135c); - (0x137d, 0x137f); - (0x139a, 0x139f); - (0x13f6, 0x13f7); - (0x13fe, 0x13ff); - (0x169d, 0x169f); - (0x16f9, 0x16ff); - (0x1716, 0x171e); - (0x1737, 0x173f); - (0x1754, 0x175f); - (0x176d, 0x176d); - (0x1771, 0x1771); - (0x1774, 0x177f); - (0x17de, 0x17df); - (0x17ea, 0x17ef); - (0x17fa, 0x17ff); - (0x181a, 0x181f); - (0x1879, 0x187f); - (0x18ab, 0x18af); - (0x18f6, 0x18ff); - (0x191f, 0x191f); - (0x192c, 0x192f); - (0x193c, 0x193f); - (0x1941, 0x1943); - (0x196e, 0x196f); - (0x1975, 0x197f); - (0x19ac, 0x19af); - (0x19ca, 0x19cf); - (0x19db, 0x19dd); - (0x1a1c, 0x1a1d); - (0x1a5f, 0x1a5f); - (0x1a7d, 0x1a7e); - (0x1a8a, 0x1a8f); - (0x1a9a, 0x1a9f); - (0x1aae, 0x1aaf); - (0x1acf, 0x1aff); - (0x1b4d, 0x1b4f); - (0x1b7f, 0x1b7f); - (0x1bf4, 0x1bfb); - (0x1c38, 0x1c3a); - (0x1c4a, 0x1c4c); - (0x1c89, 0x1c8f); - (0x1cbb, 0x1cbc); - (0x1cc8, 0x1ccf); - (0x1cfb, 0x1cff); - (0x1f16, 0x1f17); - (0x1f1e, 0x1f1f); - (0x1f46, 0x1f47); - (0x1f4e, 0x1f4f); - (0x1f58, 0x1f58); - (0x1f5a, 0x1f5a); - (0x1f5c, 0x1f5c); - (0x1f5e, 0x1f5e); - (0x1f7e, 0x1f7f); - (0x1fb5, 0x1fb5); - (0x1fc5, 0x1fc5); - (0x1fd4, 0x1fd5); - (0x1fdc, 0x1fdc); - (0x1ff0, 0x1ff1); - (0x1ff5, 0x1ff5); - (0x1fff, 0x1fff); - (0x2065, 0x2065); - (0x2072, 0x2073); - (0x208f, 0x208f); - (0x209d, 0x209f); - (0x20c1, 0x20cf); - (0x20f1, 0x20ff); - (0x218c, 0x218f); - (0x2427, 0x243f); - (0x244b, 0x245f); - (0x2b74, 0x2b75); - (0x2b96, 0x2b96); - (0x2cf4, 0x2cf8); - (0x2d26, 0x2d26); - (0x2d28, 0x2d2c); - (0x2d2e, 0x2d2f); - (0x2d68, 0x2d6e); - (0x2d71, 0x2d7e); - (0x2d97, 0x2d9f); - (0x2da7, 0x2da7); - (0x2daf, 0x2daf); - (0x2db7, 0x2db7); - (0x2dbf, 0x2dbf); - (0x2dc7, 0x2dc7); - (0x2dcf, 0x2dcf); - (0x2dd7, 0x2dd7); - (0x2ddf, 0x2ddf); - (0x2e5e, 0x2e7f); - (0x2e9a, 0x2e9a); - (0x2ef4, 0x2eff); - (0x2fd6, 0x2fef); - (0x2ffc, 0x2fff); - (0x3040, 0x3040); - (0x3097, 0x3098); - (0x3100, 0x3104); - (0x3130, 0x3130); - (0x318f, 0x318f); - (0x31e4, 0x31ef); - (0x321f, 0x321f); - (0xa48d, 0xa48f); - (0xa4c7, 0xa4cf); - (0xa62c, 0xa63f); - (0xa6f8, 0xa6ff); - (0xa7cb, 0xa7cf); - (0xa7d2, 0xa7d2); - (0xa7d4, 0xa7d4); - (0xa7da, 0xa7f1); - (0xa82d, 0xa82f); - (0xa83a, 0xa83f); - (0xa878, 0xa87f); - (0xa8c6, 0xa8cd); - (0xa8da, 0xa8df); - (0xa954, 0xa95e); - (0xa97d, 0xa97f); - (0xa9ce, 0xa9ce); - (0xa9da, 0xa9dd); - (0xa9ff, 0xa9ff); - (0xaa37, 0xaa3f); - (0xaa4e, 0xaa4f); - (0xaa5a, 0xaa5b); - (0xaac3, 0xaada); - (0xaaf7, 0xab00); - (0xab07, 0xab08); - (0xab0f, 0xab10); - (0xab17, 0xab1f); - (0xab27, 0xab27); - (0xab2f, 0xab2f); - (0xab6c, 0xab6f); - (0xabee, 0xabef); - (0xabfa, 0xabff); - (0xd7a4, 0xd7af); - (0xd7c7, 0xd7ca); - (0xd7fc, 0xd7ff); - (0xfa6e, 0xfa6f); - (0xfada, 0xfaff); - (0xfb07, 0xfb12); - (0xfb18, 0xfb1c); - (0xfb37, 0xfb37); - (0xfb3d, 0xfb3d); - (0xfb3f, 0xfb3f); - (0xfb42, 0xfb42); - (0xfb45, 0xfb45); - (0xfbc3, 0xfbd2); - (0xfd90, 0xfd91); - (0xfdc8, 0xfdce); - (0xfdd0, 0xfdef); - (0xfe1a, 0xfe1f); - (0xfe53, 0xfe53); - (0xfe67, 0xfe67); - (0xfe6c, 0xfe6f); - (0xfe75, 0xfe75); - (0xfefd, 0xfefe); - (0xff00, 0xff00); - (0xffbf, 0xffc1); - (0xffc8, 0xffc9); - (0xffd0, 0xffd1); - (0xffd8, 0xffd9); - (0xffdd, 0xffdf); - (0xffe7, 0xffe7); - (0xffef, 0xfff8); - (0xfff0, 0xfff8); - (0xfffe, 0xffff); - (0x1000c, 0x1000c); - (0x10027, 0x10027); - (0x1003b, 0x1003b); - (0x1003e, 0x1003e); - (0x1004e, 0x1004f); - (0x1005e, 0x1007f); - (0x100fb, 0x100ff); - (0x10103, 0x10106); - (0x10134, 0x10136); - (0x1018f, 0x1018f); - (0x1019d, 0x1019f); - (0x101a1, 0x101cf); - (0x101fe, 0x1027f); - (0x1029d, 0x1029f); - (0x102d1, 0x102df); - (0x102fc, 0x102ff); - (0x10324, 0x1032c); - (0x1034b, 0x1034f); - (0x1037b, 0x1037f); - (0x1039e, 0x1039e); - (0x103c4, 0x103c7); - (0x103d6, 0x103ff); - (0x1049e, 0x1049f); - (0x104aa, 0x104af); - (0x104d4, 0x104d7); - (0x104fc, 0x104ff); - (0x10528, 0x1052f); - (0x10564, 0x1056e); - (0x1057b, 0x1057b); - (0x1058b, 0x1058b); - (0x10593, 0x10593); - (0x10596, 0x10596); - (0x105a2, 0x105a2); - (0x105b2, 0x105b2); - (0x105ba, 0x105ba); - (0x105bd, 0x105ff); - (0x10737, 0x1073f); - (0x10756, 0x1075f); - (0x10768, 0x1077f); - (0x10786, 0x10786); - (0x107b1, 0x107b1); - (0x107bb, 0x107ff); - (0x10806, 0x10807); - (0x10809, 0x10809); - (0x10836, 0x10836); - (0x10839, 0x1083b); - (0x1083d, 0x1083e); - (0x10856, 0x10856); - (0x1089f, 0x108a6); - (0x108b0, 0x108df); - (0x108f3, 0x108f3); - (0x108f6, 0x108fa); - (0x1091c, 0x1091e); - (0x1093a, 0x1093e); - (0x10940, 0x1097f); - (0x109b8, 0x109bb); - (0x109d0, 0x109d1); - (0x10a04, 0x10a04); - (0x10a07, 0x10a0b); - (0x10a14, 0x10a14); - (0x10a18, 0x10a18); - (0x10a36, 0x10a37); - (0x10a3b, 0x10a3e); - (0x10a49, 0x10a4f); - (0x10a59, 0x10a5f); - (0x10aa0, 0x10abf); - (0x10ae7, 0x10aea); - (0x10af7, 0x10aff); - (0x10b36, 0x10b38); - (0x10b56, 0x10b57); - (0x10b73, 0x10b77); - (0x10b92, 0x10b98); - (0x10b9d, 0x10ba8); - (0x10bb0, 0x10bff); - (0x10c49, 0x10c7f); - (0x10cb3, 0x10cbf); - (0x10cf3, 0x10cf9); - (0x10d28, 0x10d2f); - (0x10d3a, 0x10e5f); - (0x10e7f, 0x10e7f); - (0x10eaa, 0x10eaa); - (0x10eae, 0x10eaf); - (0x10eb2, 0x10eff); - (0x10f28, 0x10f2f); - (0x10f5a, 0x10f6f); - (0x10f8a, 0x10faf); - (0x10fcc, 0x10fdf); - (0x10ff7, 0x10fff); - (0x1104e, 0x11051); - (0x11076, 0x1107e); - (0x110c3, 0x110cc); - (0x110ce, 0x110cf); - (0x110e9, 0x110ef); - (0x110fa, 0x110ff); - (0x11135, 0x11135); - (0x11148, 0x1114f); - (0x11177, 0x1117f); - (0x111e0, 0x111e0); - (0x111f5, 0x111ff); - (0x11212, 0x11212); - (0x1123f, 0x1127f); - (0x11287, 0x11287); - (0x11289, 0x11289); - (0x1128e, 0x1128e); - (0x1129e, 0x1129e); - (0x112aa, 0x112af); - (0x112eb, 0x112ef); - (0x112fa, 0x112ff); - (0x11304, 0x11304); - (0x1130d, 0x1130e); - (0x11311, 0x11312); - (0x11329, 0x11329); - (0x11331, 0x11331); - (0x11334, 0x11334); - (0x1133a, 0x1133a); - (0x11345, 0x11346); - (0x11349, 0x1134a); - (0x1134e, 0x1134f); - (0x11351, 0x11356); - (0x11358, 0x1135c); - (0x11364, 0x11365); - (0x1136d, 0x1136f); - (0x11375, 0x113ff); - (0x1145c, 0x1145c); - (0x11462, 0x1147f); - (0x114c8, 0x114cf); - (0x114da, 0x1157f); - (0x115b6, 0x115b7); - (0x115de, 0x115ff); - (0x11645, 0x1164f); - (0x1165a, 0x1165f); - (0x1166d, 0x1167f); - (0x116ba, 0x116bf); - (0x116ca, 0x116ff); - (0x1171b, 0x1171c); - (0x1172c, 0x1172f); - (0x11747, 0x117ff); - (0x1183c, 0x1189f); - (0x118f3, 0x118fe); - (0x11907, 0x11908); - (0x1190a, 0x1190b); - (0x11914, 0x11914); - (0x11917, 0x11917); - (0x11936, 0x11936); - (0x11939, 0x1193a); - (0x11947, 0x1194f); - (0x1195a, 0x1199f); - (0x119a8, 0x119a9); - (0x119d8, 0x119d9); - (0x119e5, 0x119ff); - (0x11a48, 0x11a4f); - (0x11aa3, 0x11aaf); - (0x11af9, 0x11bff); - (0x11c09, 0x11c09); - (0x11c37, 0x11c37); - (0x11c46, 0x11c4f); - (0x11c6d, 0x11c6f); - (0x11c90, 0x11c91); - (0x11ca8, 0x11ca8); - (0x11cb7, 0x11cff); - (0x11d07, 0x11d07); - (0x11d0a, 0x11d0a); - (0x11d37, 0x11d39); - (0x11d3b, 0x11d3b); - (0x11d3e, 0x11d3e); - (0x11d48, 0x11d4f); - (0x11d5a, 0x11d5f); - (0x11d66, 0x11d66); - (0x11d69, 0x11d69); - (0x11d8f, 0x11d8f); - (0x11d92, 0x11d92); - (0x11d99, 0x11d9f); - (0x11daa, 0x11edf); - (0x11ef9, 0x11faf); - (0x11fb1, 0x11fbf); - (0x11ff2, 0x11ffe); - (0x1239a, 0x123ff); - (0x1246f, 0x1246f); - (0x12475, 0x1247f); - (0x12544, 0x12f8f); - (0x12ff3, 0x12fff); - (0x1342f, 0x1342f); - (0x13439, 0x143ff); - (0x14647, 0x167ff); - (0x16a39, 0x16a3f); - (0x16a5f, 0x16a5f); - (0x16a6a, 0x16a6d); - (0x16abf, 0x16abf); - (0x16aca, 0x16acf); - (0x16aee, 0x16aef); - (0x16af6, 0x16aff); - (0x16b46, 0x16b4f); - (0x16b5a, 0x16b5a); - (0x16b62, 0x16b62); - (0x16b78, 0x16b7c); - (0x16b90, 0x16e3f); - (0x16e9b, 0x16eff); - (0x16f4b, 0x16f4e); - (0x16f88, 0x16f8e); - (0x16fa0, 0x16fdf); - (0x16fe5, 0x16fef); - (0x16ff2, 0x16fff); - (0x187f8, 0x187ff); - (0x18cd6, 0x18cff); - (0x18d09, 0x1afef); - (0x1aff4, 0x1aff4); - (0x1affc, 0x1affc); - (0x1afff, 0x1afff); - (0x1b123, 0x1b14f); - (0x1b153, 0x1b163); - (0x1b168, 0x1b16f); - (0x1b2fc, 0x1bbff); - (0x1bc6b, 0x1bc6f); - (0x1bc7d, 0x1bc7f); - (0x1bc89, 0x1bc8f); - (0x1bc9a, 0x1bc9b); - (0x1bca4, 0x1ceff); - (0x1cf2e, 0x1cf2f); - (0x1cf47, 0x1cf4f); - (0x1cfc4, 0x1cfff); - (0x1d0f6, 0x1d0ff); - (0x1d127, 0x1d128); - (0x1d1eb, 0x1d1ff); - (0x1d246, 0x1d2df); - (0x1d2f4, 0x1d2ff); - (0x1d357, 0x1d35f); - (0x1d379, 0x1d3ff); - (0x1d455, 0x1d455); - (0x1d49d, 0x1d49d); - (0x1d4a0, 0x1d4a1); - (0x1d4a3, 0x1d4a4); - (0x1d4a7, 0x1d4a8); - (0x1d4ad, 0x1d4ad); - (0x1d4ba, 0x1d4ba); - (0x1d4bc, 0x1d4bc); - (0x1d4c4, 0x1d4c4); - (0x1d506, 0x1d506); - (0x1d50b, 0x1d50c); - (0x1d515, 0x1d515); - (0x1d51d, 0x1d51d); - (0x1d53a, 0x1d53a); - (0x1d53f, 0x1d53f); - (0x1d545, 0x1d545); - (0x1d547, 0x1d549); - (0x1d551, 0x1d551); - (0x1d6a6, 0x1d6a7); - (0x1d7cc, 0x1d7cd); - (0x1da8c, 0x1da9a); - (0x1daa0, 0x1daa0); - (0x1dab0, 0x1deff); - (0x1df1f, 0x1dfff); - (0x1e007, 0x1e007); - (0x1e019, 0x1e01a); - (0x1e022, 0x1e022); - (0x1e025, 0x1e025); - (0x1e02b, 0x1e0ff); - (0x1e12d, 0x1e12f); - (0x1e13e, 0x1e13f); - (0x1e14a, 0x1e14d); - (0x1e150, 0x1e28f); - (0x1e2af, 0x1e2bf); - (0x1e2fa, 0x1e2fe); - (0x1e300, 0x1e7df); - (0x1e7e7, 0x1e7e7); - (0x1e7ec, 0x1e7ec); - (0x1e7ef, 0x1e7ef); - (0x1e7ff, 0x1e7ff); - (0x1e8c5, 0x1e8c6); - (0x1e8d7, 0x1e8ff); - (0x1e94c, 0x1e94f); - (0x1e95a, 0x1e95d); - (0x1e960, 0x1ec70); - (0x1ecb5, 0x1ed00); - (0x1ed3e, 0x1edff); - (0x1ee04, 0x1ee04); - (0x1ee20, 0x1ee20); - (0x1ee23, 0x1ee23); - (0x1ee25, 0x1ee26); - (0x1ee28, 0x1ee28); - (0x1ee33, 0x1ee33); - (0x1ee38, 0x1ee38); - (0x1ee3a, 0x1ee3a); - (0x1ee3c, 0x1ee41); - (0x1ee43, 0x1ee46); - (0x1ee48, 0x1ee48); - (0x1ee4a, 0x1ee4a); - (0x1ee4c, 0x1ee4c); - (0x1ee50, 0x1ee50); - (0x1ee53, 0x1ee53); - (0x1ee55, 0x1ee56); - (0x1ee58, 0x1ee58); - (0x1ee5a, 0x1ee5a); - (0x1ee5c, 0x1ee5c); - (0x1ee5e, 0x1ee5e); - (0x1ee60, 0x1ee60); - (0x1ee63, 0x1ee63); - (0x1ee65, 0x1ee66); - (0x1ee6b, 0x1ee6b); - (0x1ee73, 0x1ee73); - (0x1ee78, 0x1ee78); - (0x1ee7d, 0x1ee7d); - (0x1ee7f, 0x1ee7f); - (0x1ee8a, 0x1ee8a); - (0x1ee9c, 0x1eea0); - (0x1eea4, 0x1eea4); - (0x1eeaa, 0x1eeaa); - (0x1eebc, 0x1eeef); - (0x1eef2, 0x1efff); - (0x1f02c, 0x1f02f); - (0x1f094, 0x1f09f); - (0x1f0af, 0x1f0b0); - (0x1f0c0, 0x1f0c0); - (0x1f0d0, 0x1f0d0); - (0x1f0f6, 0x1f0ff); - (0x1f1ae, 0x1f1e5); - (0x1f203, 0x1f20f); - (0x1f23c, 0x1f23f); - (0x1f249, 0x1f24f); - (0x1f252, 0x1f25f); - (0x1f266, 0x1f2ff); - (0x1f6d8, 0x1f6dc); - (0x1f6ed, 0x1f6ef); - (0x1f6fd, 0x1f6ff); - (0x1f774, 0x1f77f); - (0x1f7d9, 0x1f7df); - (0x1f7ec, 0x1f7ef); - (0x1f7f1, 0x1f7ff); - (0x1f80c, 0x1f80f); - (0x1f848, 0x1f84f); - (0x1f85a, 0x1f85f); - (0x1f888, 0x1f88f); - (0x1f8ae, 0x1f8af); - (0x1f8b2, 0x1f8ff); - (0x1fa54, 0x1fa5f); - (0x1fa6e, 0x1fa6f); - (0x1fa75, 0x1fa77); - (0x1fa7d, 0x1fa7f); - (0x1fa87, 0x1fa8f); - (0x1faad, 0x1faaf); - (0x1fabb, 0x1fabf); - (0x1fac6, 0x1facf); - (0x1fada, 0x1fadf); - (0x1fae8, 0x1faef); - (0x1faf7, 0x1faff); - (0x1fb93, 0x1fb93); - (0x1fbcb, 0x1fbef); - (0x1fbfa, 0x1ffff); - (0x1fffe, 0x1ffff); - (0x2a6e0, 0x2a6ff); - (0x2b739, 0x2b73f); - (0x2b81e, 0x2b81f); - (0x2cea2, 0x2ceaf); - (0x2ebe1, 0x2f7ff); - (0x2fa1e, 0x2ffff); - (0x2fffe, 0x2ffff); - (0x3134b, 0xe0000); - (0x3fffe, 0x3ffff); - (0x4fffe, 0x4ffff); - (0x5fffe, 0x5ffff); - (0x6fffe, 0x6ffff); - (0x7fffe, 0x7ffff); - (0x8fffe, 0x8ffff); - (0x9fffe, 0x9ffff); - (0xafffe, 0xaffff); - (0xbfffe, 0xbffff); - (0xcfffe, 0xcffff); - (0xdfffe, 0xdffff); - (0xe0000, 0xe0000); - (0xe0002, 0xe001f); - (0xe0080, 0xe00ff); - (0x10fffe, 0x10ffff); - (0xffffe, 0xfffff); - (0xefffe, 0xeffff); - (0xe01f0, 0xeffff); - (0xe01f0, 0xe0fff); - ] + [0x378, 0x379; 0x380, 0x383; 0x38b, 0x38b; 0x38d, 0x38d; 0x3a2, 0x3a2; + 0x530, 0x530; 0x557, 0x558; 0x58b, 0x58c; 0x590, 0x590; 0x5c8, 0x5cf; + 0x5eb, 0x5ee; 0x5f5, 0x5ff; 0x70e, 0x70e; 0x74b, 0x74c; 0x7b2, 0x7bf; + 0x7fb, 0x7fc; 0x82e, 0x82f; 0x83f, 0x83f; 0x85c, 0x85d; 0x85f, 0x85f; + 0x86b, 0x86f; 0x88f, 0x88f; 0x892, 0x897; 0x984, 0x984; 0x98d, 0x98e; + 0x991, 0x992; 0x9a9, 0x9a9; 0x9b1, 0x9b1; 0x9b3, 0x9b5; 0x9ba, 0x9bb; + 0x9c5, 0x9c6; 0x9c9, 0x9ca; 0x9cf, 0x9d6; 0x9d8, 0x9db; 0x9de, 0x9de; + 0x9e4, 0x9e5; 0x9ff, 0xa00; 0xa04, 0xa04; 0xa0b, 0xa0e; 0xa11, 0xa12; + 0xa29, 0xa29; 0xa31, 0xa31; 0xa34, 0xa34; 0xa37, 0xa37; 0xa3a, 0xa3b; + 0xa3d, 0xa3d; 0xa43, 0xa46; 0xa49, 0xa4a; 0xa4e, 0xa50; 0xa52, 0xa58; + 0xa5d, 0xa5d; 0xa5f, 0xa65; 0xa77, 0xa80; 0xa84, 0xa84; 0xa8e, 0xa8e; + 0xa92, 0xa92; 0xaa9, 0xaa9; 0xab1, 0xab1; 0xab4, 0xab4; 0xaba, 0xabb; + 0xac6, 0xac6; 0xaca, 0xaca; 0xace, 0xacf; 0xad1, 0xadf; 0xae4, 0xae5; + 0xaf2, 0xaf8; 0xb00, 0xb00; 0xb04, 0xb04; 0xb0d, 0xb0e; 0xb11, 0xb12; + 0xb29, 0xb29; 0xb31, 0xb31; 0xb34, 0xb34; 0xb3a, 0xb3b; 0xb45, 0xb46; + 0xb49, 0xb4a; 0xb4e, 0xb54; 0xb58, 0xb5b; 0xb5e, 0xb5e; 0xb64, 0xb65; + 0xb78, 0xb81; 0xb84, 0xb84; 0xb8b, 0xb8d; 0xb91, 0xb91; 0xb96, 0xb98; + 0xb9b, 0xb9b; 0xb9d, 0xb9d; 0xba0, 0xba2; 0xba5, 0xba7; 0xbab, 0xbad; + 0xbba, 0xbbd; 0xbc3, 0xbc5; 0xbc9, 0xbc9; 0xbce, 0xbcf; 0xbd1, 0xbd6; + 0xbd8, 0xbe5; 0xbfb, 0xbff; 0xc0d, 0xc0d; 0xc11, 0xc11; 0xc29, 0xc29; + 0xc3a, 0xc3b; 0xc45, 0xc45; 0xc49, 0xc49; 0xc4e, 0xc54; 0xc57, 0xc57; + 0xc5b, 0xc5c; 0xc5e, 0xc5f; 0xc64, 0xc65; 0xc70, 0xc76; 0xc8d, 0xc8d; + 0xc91, 0xc91; 0xca9, 0xca9; 0xcb4, 0xcb4; 0xcba, 0xcbb; 0xcc5, 0xcc5; + 0xcc9, 0xcc9; 0xcce, 0xcd4; 0xcd7, 0xcdc; 0xcdf, 0xcdf; 0xce4, 0xce5; + 0xcf0, 0xcf0; 0xcf3, 0xcff; 0xd0d, 0xd0d; 0xd11, 0xd11; 0xd45, 0xd45; + 0xd49, 0xd49; 0xd50, 0xd53; 0xd64, 0xd65; 0xd80, 0xd80; 0xd84, 0xd84; + 0xd97, 0xd99; 0xdb2, 0xdb2; 0xdbc, 0xdbc; 0xdbe, 0xdbf; 0xdc7, 0xdc9; + 0xdcb, 0xdce; 0xdd5, 0xdd5; 0xdd7, 0xdd7; 0xde0, 0xde5; 0xdf0, 0xdf1; + 0xdf5, 0xe00; 0xe3b, 0xe3e; 0xe5c, 0xe80; 0xe83, 0xe83; 0xe85, 0xe85; + 0xe8b, 0xe8b; 0xea4, 0xea4; 0xea6, 0xea6; 0xebe, 0xebf; 0xec5, 0xec5; + 0xec7, 0xec7; 0xece, 0xecf; 0xeda, 0xedb; 0xee0, 0xeff; 0xf48, 0xf48; + 0xf6d, 0xf70; 0xf98, 0xf98; 0xfbd, 0xfbd; 0xfcd, 0xfcd; 0xfdb, 0xfff; + 0x10c6, 0x10c6; 0x10c8, 0x10cc; 0x10ce, 0x10cf; 0x1249, 0x1249; 0x124e, 0x124f; + 0x1257, 0x1257; 0x1259, 0x1259; 0x125e, 0x125f; 0x1289, 0x1289; 0x128e, 0x128f; + 0x12b1, 0x12b1; 0x12b6, 0x12b7; 0x12bf, 0x12bf; 0x12c1, 0x12c1; 0x12c6, 0x12c7; + 0x12d7, 0x12d7; 0x1311, 0x1311; 0x1316, 0x1317; 0x135b, 0x135c; 0x137d, 0x137f; + 0x139a, 0x139f; 0x13f6, 0x13f7; 0x13fe, 0x13ff; 0x169d, 0x169f; 0x16f9, 0x16ff; + 0x1716, 0x171e; 0x1737, 0x173f; 0x1754, 0x175f; 0x176d, 0x176d; 0x1771, 0x1771; + 0x1774, 0x177f; 0x17de, 0x17df; 0x17ea, 0x17ef; 0x17fa, 0x17ff; 0x181a, 0x181f; + 0x1879, 0x187f; 0x18ab, 0x18af; 0x18f6, 0x18ff; 0x191f, 0x191f; 0x192c, 0x192f; + 0x193c, 0x193f; 0x1941, 0x1943; 0x196e, 0x196f; 0x1975, 0x197f; 0x19ac, 0x19af; + 0x19ca, 0x19cf; 0x19db, 0x19dd; 0x1a1c, 0x1a1d; 0x1a5f, 0x1a5f; 0x1a7d, 0x1a7e; + 0x1a8a, 0x1a8f; 0x1a9a, 0x1a9f; 0x1aae, 0x1aaf; 0x1acf, 0x1aff; 0x1b4d, 0x1b4f; + 0x1b7f, 0x1b7f; 0x1bf4, 0x1bfb; 0x1c38, 0x1c3a; 0x1c4a, 0x1c4c; 0x1c89, 0x1c8f; + 0x1cbb, 0x1cbc; 0x1cc8, 0x1ccf; 0x1cfb, 0x1cff; 0x1f16, 0x1f17; 0x1f1e, 0x1f1f; + 0x1f46, 0x1f47; 0x1f4e, 0x1f4f; 0x1f58, 0x1f58; 0x1f5a, 0x1f5a; 0x1f5c, 0x1f5c; + 0x1f5e, 0x1f5e; 0x1f7e, 0x1f7f; 0x1fb5, 0x1fb5; 0x1fc5, 0x1fc5; 0x1fd4, 0x1fd5; + 0x1fdc, 0x1fdc; 0x1ff0, 0x1ff1; 0x1ff5, 0x1ff5; 0x1fff, 0x1fff; 0x2065, 0x2065; + 0x2072, 0x2073; 0x208f, 0x208f; 0x209d, 0x209f; 0x20c1, 0x20cf; 0x20f1, 0x20ff; + 0x218c, 0x218f; 0x2427, 0x243f; 0x244b, 0x245f; 0x2b74, 0x2b75; 0x2b96, 0x2b96; + 0x2cf4, 0x2cf8; 0x2d26, 0x2d26; 0x2d28, 0x2d2c; 0x2d2e, 0x2d2f; 0x2d68, 0x2d6e; + 0x2d71, 0x2d7e; 0x2d97, 0x2d9f; 0x2da7, 0x2da7; 0x2daf, 0x2daf; 0x2db7, 0x2db7; + 0x2dbf, 0x2dbf; 0x2dc7, 0x2dc7; 0x2dcf, 0x2dcf; 0x2dd7, 0x2dd7; 0x2ddf, 0x2ddf; + 0x2e5e, 0x2e7f; 0x2e9a, 0x2e9a; 0x2ef4, 0x2eff; 0x2fd6, 0x2fef; 0x2ffc, 0x2fff; + 0x3040, 0x3040; 0x3097, 0x3098; 0x3100, 0x3104; 0x3130, 0x3130; 0x318f, 0x318f; + 0x31e4, 0x31ef; 0x321f, 0x321f; 0xa48d, 0xa48f; 0xa4c7, 0xa4cf; 0xa62c, 0xa63f; + 0xa6f8, 0xa6ff; 0xa7cb, 0xa7cf; 0xa7d2, 0xa7d2; 0xa7d4, 0xa7d4; 0xa7da, 0xa7f1; + 0xa82d, 0xa82f; 0xa83a, 0xa83f; 0xa878, 0xa87f; 0xa8c6, 0xa8cd; 0xa8da, 0xa8df; + 0xa954, 0xa95e; 0xa97d, 0xa97f; 0xa9ce, 0xa9ce; 0xa9da, 0xa9dd; 0xa9ff, 0xa9ff; + 0xaa37, 0xaa3f; 0xaa4e, 0xaa4f; 0xaa5a, 0xaa5b; 0xaac3, 0xaada; 0xaaf7, 0xab00; + 0xab07, 0xab08; 0xab0f, 0xab10; 0xab17, 0xab1f; 0xab27, 0xab27; 0xab2f, 0xab2f; + 0xab6c, 0xab6f; 0xabee, 0xabef; 0xabfa, 0xabff; 0xd7a4, 0xd7af; 0xd7c7, 0xd7ca; + 0xd7fc, 0xd7ff; 0xfa6e, 0xfa6f; 0xfada, 0xfaff; 0xfb07, 0xfb12; 0xfb18, 0xfb1c; + 0xfb37, 0xfb37; 0xfb3d, 0xfb3d; 0xfb3f, 0xfb3f; 0xfb42, 0xfb42; 0xfb45, 0xfb45; + 0xfbc3, 0xfbd2; 0xfd90, 0xfd91; 0xfdc8, 0xfdce; 0xfdd0, 0xfdef; 0xfe1a, 0xfe1f; + 0xfe53, 0xfe53; 0xfe67, 0xfe67; 0xfe6c, 0xfe6f; 0xfe75, 0xfe75; 0xfefd, 0xfefe; + 0xff00, 0xff00; 0xffbf, 0xffc1; 0xffc8, 0xffc9; 0xffd0, 0xffd1; 0xffd8, 0xffd9; + 0xffdd, 0xffdf; 0xffe7, 0xffe7; 0xffef, 0xfff8; 0xfff0, 0xfff8; 0xfffe, 0xffff; + 0x1000c, 0x1000c; 0x10027, 0x10027; 0x1003b, 0x1003b; 0x1003e, 0x1003e; 0x1004e, 0x1004f; + 0x1005e, 0x1007f; 0x100fb, 0x100ff; 0x10103, 0x10106; 0x10134, 0x10136; 0x1018f, 0x1018f; + 0x1019d, 0x1019f; 0x101a1, 0x101cf; 0x101fe, 0x1027f; 0x1029d, 0x1029f; 0x102d1, 0x102df; + 0x102fc, 0x102ff; 0x10324, 0x1032c; 0x1034b, 0x1034f; 0x1037b, 0x1037f; 0x1039e, 0x1039e; + 0x103c4, 0x103c7; 0x103d6, 0x103ff; 0x1049e, 0x1049f; 0x104aa, 0x104af; 0x104d4, 0x104d7; + 0x104fc, 0x104ff; 0x10528, 0x1052f; 0x10564, 0x1056e; 0x1057b, 0x1057b; 0x1058b, 0x1058b; + 0x10593, 0x10593; 0x10596, 0x10596; 0x105a2, 0x105a2; 0x105b2, 0x105b2; 0x105ba, 0x105ba; + 0x105bd, 0x105ff; 0x10737, 0x1073f; 0x10756, 0x1075f; 0x10768, 0x1077f; 0x10786, 0x10786; + 0x107b1, 0x107b1; 0x107bb, 0x107ff; 0x10806, 0x10807; 0x10809, 0x10809; 0x10836, 0x10836; + 0x10839, 0x1083b; 0x1083d, 0x1083e; 0x10856, 0x10856; 0x1089f, 0x108a6; 0x108b0, 0x108df; + 0x108f3, 0x108f3; 0x108f6, 0x108fa; 0x1091c, 0x1091e; 0x1093a, 0x1093e; 0x10940, 0x1097f; + 0x109b8, 0x109bb; 0x109d0, 0x109d1; 0x10a04, 0x10a04; 0x10a07, 0x10a0b; 0x10a14, 0x10a14; + 0x10a18, 0x10a18; 0x10a36, 0x10a37; 0x10a3b, 0x10a3e; 0x10a49, 0x10a4f; 0x10a59, 0x10a5f; + 0x10aa0, 0x10abf; 0x10ae7, 0x10aea; 0x10af7, 0x10aff; 0x10b36, 0x10b38; 0x10b56, 0x10b57; + 0x10b73, 0x10b77; 0x10b92, 0x10b98; 0x10b9d, 0x10ba8; 0x10bb0, 0x10bff; 0x10c49, 0x10c7f; + 0x10cb3, 0x10cbf; 0x10cf3, 0x10cf9; 0x10d28, 0x10d2f; 0x10d3a, 0x10e5f; 0x10e7f, 0x10e7f; + 0x10eaa, 0x10eaa; 0x10eae, 0x10eaf; 0x10eb2, 0x10eff; 0x10f28, 0x10f2f; 0x10f5a, 0x10f6f; + 0x10f8a, 0x10faf; 0x10fcc, 0x10fdf; 0x10ff7, 0x10fff; 0x1104e, 0x11051; 0x11076, 0x1107e; + 0x110c3, 0x110cc; 0x110ce, 0x110cf; 0x110e9, 0x110ef; 0x110fa, 0x110ff; 0x11135, 0x11135; + 0x11148, 0x1114f; 0x11177, 0x1117f; 0x111e0, 0x111e0; 0x111f5, 0x111ff; 0x11212, 0x11212; + 0x1123f, 0x1127f; 0x11287, 0x11287; 0x11289, 0x11289; 0x1128e, 0x1128e; 0x1129e, 0x1129e; + 0x112aa, 0x112af; 0x112eb, 0x112ef; 0x112fa, 0x112ff; 0x11304, 0x11304; 0x1130d, 0x1130e; + 0x11311, 0x11312; 0x11329, 0x11329; 0x11331, 0x11331; 0x11334, 0x11334; 0x1133a, 0x1133a; + 0x11345, 0x11346; 0x11349, 0x1134a; 0x1134e, 0x1134f; 0x11351, 0x11356; 0x11358, 0x1135c; + 0x11364, 0x11365; 0x1136d, 0x1136f; 0x11375, 0x113ff; 0x1145c, 0x1145c; 0x11462, 0x1147f; + 0x114c8, 0x114cf; 0x114da, 0x1157f; 0x115b6, 0x115b7; 0x115de, 0x115ff; 0x11645, 0x1164f; + 0x1165a, 0x1165f; 0x1166d, 0x1167f; 0x116ba, 0x116bf; 0x116ca, 0x116ff; 0x1171b, 0x1171c; + 0x1172c, 0x1172f; 0x11747, 0x117ff; 0x1183c, 0x1189f; 0x118f3, 0x118fe; 0x11907, 0x11908; + 0x1190a, 0x1190b; 0x11914, 0x11914; 0x11917, 0x11917; 0x11936, 0x11936; 0x11939, 0x1193a; + 0x11947, 0x1194f; 0x1195a, 0x1199f; 0x119a8, 0x119a9; 0x119d8, 0x119d9; 0x119e5, 0x119ff; + 0x11a48, 0x11a4f; 0x11aa3, 0x11aaf; 0x11af9, 0x11bff; 0x11c09, 0x11c09; 0x11c37, 0x11c37; + 0x11c46, 0x11c4f; 0x11c6d, 0x11c6f; 0x11c90, 0x11c91; 0x11ca8, 0x11ca8; 0x11cb7, 0x11cff; + 0x11d07, 0x11d07; 0x11d0a, 0x11d0a; 0x11d37, 0x11d39; 0x11d3b, 0x11d3b; 0x11d3e, 0x11d3e; + 0x11d48, 0x11d4f; 0x11d5a, 0x11d5f; 0x11d66, 0x11d66; 0x11d69, 0x11d69; 0x11d8f, 0x11d8f; + 0x11d92, 0x11d92; 0x11d99, 0x11d9f; 0x11daa, 0x11edf; 0x11ef9, 0x11faf; 0x11fb1, 0x11fbf; + 0x11ff2, 0x11ffe; 0x1239a, 0x123ff; 0x1246f, 0x1246f; 0x12475, 0x1247f; 0x12544, 0x12f8f; + 0x12ff3, 0x12fff; 0x1342f, 0x1342f; 0x13439, 0x143ff; 0x14647, 0x167ff; 0x16a39, 0x16a3f; + 0x16a5f, 0x16a5f; 0x16a6a, 0x16a6d; 0x16abf, 0x16abf; 0x16aca, 0x16acf; 0x16aee, 0x16aef; + 0x16af6, 0x16aff; 0x16b46, 0x16b4f; 0x16b5a, 0x16b5a; 0x16b62, 0x16b62; 0x16b78, 0x16b7c; + 0x16b90, 0x16e3f; 0x16e9b, 0x16eff; 0x16f4b, 0x16f4e; 0x16f88, 0x16f8e; 0x16fa0, 0x16fdf; + 0x16fe5, 0x16fef; 0x16ff2, 0x16fff; 0x187f8, 0x187ff; 0x18cd6, 0x18cff; 0x18d09, 0x1afef; + 0x1aff4, 0x1aff4; 0x1affc, 0x1affc; 0x1afff, 0x1afff; 0x1b123, 0x1b14f; 0x1b153, 0x1b163; + 0x1b168, 0x1b16f; 0x1b2fc, 0x1bbff; 0x1bc6b, 0x1bc6f; 0x1bc7d, 0x1bc7f; 0x1bc89, 0x1bc8f; + 0x1bc9a, 0x1bc9b; 0x1bca4, 0x1ceff; 0x1cf2e, 0x1cf2f; 0x1cf47, 0x1cf4f; 0x1cfc4, 0x1cfff; + 0x1d0f6, 0x1d0ff; 0x1d127, 0x1d128; 0x1d1eb, 0x1d1ff; 0x1d246, 0x1d2df; 0x1d2f4, 0x1d2ff; + 0x1d357, 0x1d35f; 0x1d379, 0x1d3ff; 0x1d455, 0x1d455; 0x1d49d, 0x1d49d; 0x1d4a0, 0x1d4a1; + 0x1d4a3, 0x1d4a4; 0x1d4a7, 0x1d4a8; 0x1d4ad, 0x1d4ad; 0x1d4ba, 0x1d4ba; 0x1d4bc, 0x1d4bc; + 0x1d4c4, 0x1d4c4; 0x1d506, 0x1d506; 0x1d50b, 0x1d50c; 0x1d515, 0x1d515; 0x1d51d, 0x1d51d; + 0x1d53a, 0x1d53a; 0x1d53f, 0x1d53f; 0x1d545, 0x1d545; 0x1d547, 0x1d549; 0x1d551, 0x1d551; + 0x1d6a6, 0x1d6a7; 0x1d7cc, 0x1d7cd; 0x1da8c, 0x1da9a; 0x1daa0, 0x1daa0; 0x1dab0, 0x1deff; + 0x1df1f, 0x1dfff; 0x1e007, 0x1e007; 0x1e019, 0x1e01a; 0x1e022, 0x1e022; 0x1e025, 0x1e025; + 0x1e02b, 0x1e0ff; 0x1e12d, 0x1e12f; 0x1e13e, 0x1e13f; 0x1e14a, 0x1e14d; 0x1e150, 0x1e28f; + 0x1e2af, 0x1e2bf; 0x1e2fa, 0x1e2fe; 0x1e300, 0x1e7df; 0x1e7e7, 0x1e7e7; 0x1e7ec, 0x1e7ec; + 0x1e7ef, 0x1e7ef; 0x1e7ff, 0x1e7ff; 0x1e8c5, 0x1e8c6; 0x1e8d7, 0x1e8ff; 0x1e94c, 0x1e94f; + 0x1e95a, 0x1e95d; 0x1e960, 0x1ec70; 0x1ecb5, 0x1ed00; 0x1ed3e, 0x1edff; 0x1ee04, 0x1ee04; + 0x1ee20, 0x1ee20; 0x1ee23, 0x1ee23; 0x1ee25, 0x1ee26; 0x1ee28, 0x1ee28; 0x1ee33, 0x1ee33; + 0x1ee38, 0x1ee38; 0x1ee3a, 0x1ee3a; 0x1ee3c, 0x1ee41; 0x1ee43, 0x1ee46; 0x1ee48, 0x1ee48; + 0x1ee4a, 0x1ee4a; 0x1ee4c, 0x1ee4c; 0x1ee50, 0x1ee50; 0x1ee53, 0x1ee53; 0x1ee55, 0x1ee56; + 0x1ee58, 0x1ee58; 0x1ee5a, 0x1ee5a; 0x1ee5c, 0x1ee5c; 0x1ee5e, 0x1ee5e; 0x1ee60, 0x1ee60; + 0x1ee63, 0x1ee63; 0x1ee65, 0x1ee66; 0x1ee6b, 0x1ee6b; 0x1ee73, 0x1ee73; 0x1ee78, 0x1ee78; + 0x1ee7d, 0x1ee7d; 0x1ee7f, 0x1ee7f; 0x1ee8a, 0x1ee8a; 0x1ee9c, 0x1eea0; 0x1eea4, 0x1eea4; + 0x1eeaa, 0x1eeaa; 0x1eebc, 0x1eeef; 0x1eef2, 0x1efff; 0x1f02c, 0x1f02f; 0x1f094, 0x1f09f; + 0x1f0af, 0x1f0b0; 0x1f0c0, 0x1f0c0; 0x1f0d0, 0x1f0d0; 0x1f0f6, 0x1f0ff; 0x1f1ae, 0x1f1e5; + 0x1f203, 0x1f20f; 0x1f23c, 0x1f23f; 0x1f249, 0x1f24f; 0x1f252, 0x1f25f; 0x1f266, 0x1f2ff; + 0x1f6d8, 0x1f6dc; 0x1f6ed, 0x1f6ef; 0x1f6fd, 0x1f6ff; 0x1f774, 0x1f77f; 0x1f7d9, 0x1f7df; + 0x1f7ec, 0x1f7ef; 0x1f7f1, 0x1f7ff; 0x1f80c, 0x1f80f; 0x1f848, 0x1f84f; 0x1f85a, 0x1f85f; + 0x1f888, 0x1f88f; 0x1f8ae, 0x1f8af; 0x1f8b2, 0x1f8ff; 0x1fa54, 0x1fa5f; 0x1fa6e, 0x1fa6f; + 0x1fa75, 0x1fa77; 0x1fa7d, 0x1fa7f; 0x1fa87, 0x1fa8f; 0x1faad, 0x1faaf; 0x1fabb, 0x1fabf; + 0x1fac6, 0x1facf; 0x1fada, 0x1fadf; 0x1fae8, 0x1faef; 0x1faf7, 0x1faff; 0x1fb93, 0x1fb93; + 0x1fbcb, 0x1fbef; 0x1fbfa, 0x1ffff; 0x1fffe, 0x1ffff; 0x2a6e0, 0x2a6ff; 0x2b739, 0x2b73f; + 0x2b81e, 0x2b81f; 0x2cea2, 0x2ceaf; 0x2ebe1, 0x2f7ff; 0x2fa1e, 0x2ffff; 0x2fffe, 0x2ffff; + 0x3134b, 0xe0000; 0x3fffe, 0x3ffff; 0x4fffe, 0x4ffff; 0x5fffe, 0x5ffff; 0x6fffe, 0x6ffff; + 0x7fffe, 0x7ffff; 0x8fffe, 0x8ffff; 0x9fffe, 0x9ffff; 0xafffe, 0xaffff; 0xbfffe, 0xbffff; + 0xcfffe, 0xcffff; 0xdfffe, 0xdffff; 0xe0000, 0xe0000; 0xe0002, 0xe001f; 0xe0080, 0xe00ff; + 0x10fffe, 0x10ffff; 0xffffe, 0xfffff; 0xefffe, 0xeffff; 0xe01f0, 0xeffff; 0xe01f0, 0xe0fff] + + let co = + [0x100000, 0x10fffd; 0xf0000, 0xffffd; 0xe000, 0xf8ff] - let co = [(0x100000, 0x10fffd); (0xf0000, 0xffffd); (0xe000, 0xf8ff)] - let cs = [(0xd800, 0xdfff)] + let cs = + [0xd800, 0xdfff] let ll = - [ - (0x61, 0x7a); - (0xb5, 0xb5); - (0xdf, 0xf6); - (0xf8, 0xff); - (0x101, 0x101); - (0x103, 0x103); - (0x105, 0x105); - (0x107, 0x107); - (0x109, 0x109); - (0x10b, 0x10b); - (0x10d, 0x10d); - (0x10f, 0x10f); - (0x111, 0x111); - (0x113, 0x113); - (0x115, 0x115); - (0x117, 0x117); - (0x119, 0x119); - (0x11b, 0x11b); - (0x11d, 0x11d); - (0x11f, 0x11f); - (0x121, 0x121); - (0x123, 0x123); - (0x125, 0x125); - (0x127, 0x127); - (0x129, 0x129); - (0x12b, 0x12b); - (0x12d, 0x12d); - (0x12f, 0x12f); - (0x131, 0x131); - (0x133, 0x133); - (0x135, 0x135); - (0x137, 0x138); - (0x13a, 0x13a); - (0x13c, 0x13c); - (0x13e, 0x13e); - (0x140, 0x140); - (0x142, 0x142); - (0x144, 0x144); - (0x146, 0x146); - (0x148, 0x149); - (0x14b, 0x14b); - (0x14d, 0x14d); - (0x14f, 0x14f); - (0x151, 0x151); - (0x153, 0x153); - (0x155, 0x155); - (0x157, 0x157); - (0x159, 0x159); - (0x15b, 0x15b); - (0x15d, 0x15d); - (0x15f, 0x15f); - (0x161, 0x161); - (0x163, 0x163); - (0x165, 0x165); - (0x167, 0x167); - (0x169, 0x169); - (0x16b, 0x16b); - (0x16d, 0x16d); - (0x16f, 0x16f); - (0x171, 0x171); - (0x173, 0x173); - (0x175, 0x175); - (0x177, 0x177); - (0x17a, 0x17a); - (0x17c, 0x17c); - (0x17e, 0x180); - (0x183, 0x183); - (0x185, 0x185); - (0x188, 0x188); - (0x18c, 0x18d); - (0x192, 0x192); - (0x195, 0x195); - (0x199, 0x19b); - (0x19e, 0x19e); - (0x1a1, 0x1a1); - (0x1a3, 0x1a3); - (0x1a5, 0x1a5); - (0x1a8, 0x1a8); - (0x1aa, 0x1ab); - (0x1ad, 0x1ad); - (0x1b0, 0x1b0); - (0x1b4, 0x1b4); - (0x1b6, 0x1b6); - (0x1b9, 0x1ba); - (0x1bd, 0x1bf); - (0x1c6, 0x1c6); - (0x1c9, 0x1c9); - (0x1cc, 0x1cc); - (0x1ce, 0x1ce); - (0x1d0, 0x1d0); - (0x1d2, 0x1d2); - (0x1d4, 0x1d4); - (0x1d6, 0x1d6); - (0x1d8, 0x1d8); - (0x1da, 0x1da); - (0x1dc, 0x1dd); - (0x1df, 0x1df); - (0x1e1, 0x1e1); - (0x1e3, 0x1e3); - (0x1e5, 0x1e5); - (0x1e7, 0x1e7); - (0x1e9, 0x1e9); - (0x1eb, 0x1eb); - (0x1ed, 0x1ed); - (0x1ef, 0x1f0); - (0x1f3, 0x1f3); - (0x1f5, 0x1f5); - (0x1f9, 0x1f9); - (0x1fb, 0x1fb); - (0x1fd, 0x1fd); - (0x1ff, 0x1ff); - (0x201, 0x201); - (0x203, 0x203); - (0x205, 0x205); - (0x207, 0x207); - (0x209, 0x209); - (0x20b, 0x20b); - (0x20d, 0x20d); - (0x20f, 0x20f); - (0x211, 0x211); - (0x213, 0x213); - (0x215, 0x215); - (0x217, 0x217); - (0x219, 0x219); - (0x21b, 0x21b); - (0x21d, 0x21d); - (0x21f, 0x21f); - (0x221, 0x221); - (0x223, 0x223); - (0x225, 0x225); - (0x227, 0x227); - (0x229, 0x229); - (0x22b, 0x22b); - (0x22d, 0x22d); - (0x22f, 0x22f); - (0x231, 0x231); - (0x233, 0x239); - (0x23c, 0x23c); - (0x23f, 0x240); - (0x242, 0x242); - (0x247, 0x247); - (0x249, 0x249); - (0x24b, 0x24b); - (0x24d, 0x24d); - (0x24f, 0x293); - (0x295, 0x2af); - (0x371, 0x371); - (0x373, 0x373); - (0x377, 0x377); - (0x37b, 0x37d); - (0x390, 0x390); - (0x3ac, 0x3ce); - (0x3d0, 0x3d1); - (0x3d5, 0x3d7); - (0x3d9, 0x3d9); - (0x3db, 0x3db); - (0x3dd, 0x3dd); - (0x3df, 0x3df); - (0x3e1, 0x3e1); - (0x3e3, 0x3e3); - (0x3e5, 0x3e5); - (0x3e7, 0x3e7); - (0x3e9, 0x3e9); - (0x3eb, 0x3eb); - (0x3ed, 0x3ed); - (0x3ef, 0x3f3); - (0x3f5, 0x3f5); - (0x3f8, 0x3f8); - (0x3fb, 0x3fc); - (0x430, 0x45f); - (0x461, 0x461); - (0x463, 0x463); - (0x465, 0x465); - (0x467, 0x467); - (0x469, 0x469); - (0x46b, 0x46b); - (0x46d, 0x46d); - (0x46f, 0x46f); - (0x471, 0x471); - (0x473, 0x473); - (0x475, 0x475); - (0x477, 0x477); - (0x479, 0x479); - (0x47b, 0x47b); - (0x47d, 0x47d); - (0x47f, 0x47f); - (0x481, 0x481); - (0x48b, 0x48b); - (0x48d, 0x48d); - (0x48f, 0x48f); - (0x491, 0x491); - (0x493, 0x493); - (0x495, 0x495); - (0x497, 0x497); - (0x499, 0x499); - (0x49b, 0x49b); - (0x49d, 0x49d); - (0x49f, 0x49f); - (0x4a1, 0x4a1); - (0x4a3, 0x4a3); - (0x4a5, 0x4a5); - (0x4a7, 0x4a7); - (0x4a9, 0x4a9); - (0x4ab, 0x4ab); - (0x4ad, 0x4ad); - (0x4af, 0x4af); - (0x4b1, 0x4b1); - (0x4b3, 0x4b3); - (0x4b5, 0x4b5); - (0x4b7, 0x4b7); - (0x4b9, 0x4b9); - (0x4bb, 0x4bb); - (0x4bd, 0x4bd); - (0x4bf, 0x4bf); - (0x4c2, 0x4c2); - (0x4c4, 0x4c4); - (0x4c6, 0x4c6); - (0x4c8, 0x4c8); - (0x4ca, 0x4ca); - (0x4cc, 0x4cc); - (0x4ce, 0x4cf); - (0x4d1, 0x4d1); - (0x4d3, 0x4d3); - (0x4d5, 0x4d5); - (0x4d7, 0x4d7); - (0x4d9, 0x4d9); - (0x4db, 0x4db); - (0x4dd, 0x4dd); - (0x4df, 0x4df); - (0x4e1, 0x4e1); - (0x4e3, 0x4e3); - (0x4e5, 0x4e5); - (0x4e7, 0x4e7); - (0x4e9, 0x4e9); - (0x4eb, 0x4eb); - (0x4ed, 0x4ed); - (0x4ef, 0x4ef); - (0x4f1, 0x4f1); - (0x4f3, 0x4f3); - (0x4f5, 0x4f5); - (0x4f7, 0x4f7); - (0x4f9, 0x4f9); - (0x4fb, 0x4fb); - (0x4fd, 0x4fd); - (0x4ff, 0x4ff); - (0x501, 0x501); - (0x503, 0x503); - (0x505, 0x505); - (0x507, 0x507); - (0x509, 0x509); - (0x50b, 0x50b); - (0x50d, 0x50d); - (0x50f, 0x50f); - (0x511, 0x511); - (0x513, 0x513); - (0x515, 0x515); - (0x517, 0x517); - (0x519, 0x519); - (0x51b, 0x51b); - (0x51d, 0x51d); - (0x51f, 0x51f); - (0x521, 0x521); - (0x523, 0x523); - (0x525, 0x525); - (0x527, 0x527); - (0x529, 0x529); - (0x52b, 0x52b); - (0x52d, 0x52d); - (0x52f, 0x52f); - (0x560, 0x588); - (0x10d0, 0x10fa); - (0x10fd, 0x10ff); - (0x13f8, 0x13fd); - (0x1c80, 0x1c88); - (0x1d00, 0x1d2b); - (0x1d6b, 0x1d77); - (0x1d79, 0x1d9a); - (0x1e01, 0x1e01); - (0x1e03, 0x1e03); - (0x1e05, 0x1e05); - (0x1e07, 0x1e07); - (0x1e09, 0x1e09); - (0x1e0b, 0x1e0b); - (0x1e0d, 0x1e0d); - (0x1e0f, 0x1e0f); - (0x1e11, 0x1e11); - (0x1e13, 0x1e13); - (0x1e15, 0x1e15); - (0x1e17, 0x1e17); - (0x1e19, 0x1e19); - (0x1e1b, 0x1e1b); - (0x1e1d, 0x1e1d); - (0x1e1f, 0x1e1f); - (0x1e21, 0x1e21); - (0x1e23, 0x1e23); - (0x1e25, 0x1e25); - (0x1e27, 0x1e27); - (0x1e29, 0x1e29); - (0x1e2b, 0x1e2b); - (0x1e2d, 0x1e2d); - (0x1e2f, 0x1e2f); - (0x1e31, 0x1e31); - (0x1e33, 0x1e33); - (0x1e35, 0x1e35); - (0x1e37, 0x1e37); - (0x1e39, 0x1e39); - (0x1e3b, 0x1e3b); - (0x1e3d, 0x1e3d); - (0x1e3f, 0x1e3f); - (0x1e41, 0x1e41); - (0x1e43, 0x1e43); - (0x1e45, 0x1e45); - (0x1e47, 0x1e47); - (0x1e49, 0x1e49); - (0x1e4b, 0x1e4b); - (0x1e4d, 0x1e4d); - (0x1e4f, 0x1e4f); - (0x1e51, 0x1e51); - (0x1e53, 0x1e53); - (0x1e55, 0x1e55); - (0x1e57, 0x1e57); - (0x1e59, 0x1e59); - (0x1e5b, 0x1e5b); - (0x1e5d, 0x1e5d); - (0x1e5f, 0x1e5f); - (0x1e61, 0x1e61); - (0x1e63, 0x1e63); - (0x1e65, 0x1e65); - (0x1e67, 0x1e67); - (0x1e69, 0x1e69); - (0x1e6b, 0x1e6b); - (0x1e6d, 0x1e6d); - (0x1e6f, 0x1e6f); - (0x1e71, 0x1e71); - (0x1e73, 0x1e73); - (0x1e75, 0x1e75); - (0x1e77, 0x1e77); - (0x1e79, 0x1e79); - (0x1e7b, 0x1e7b); - (0x1e7d, 0x1e7d); - (0x1e7f, 0x1e7f); - (0x1e81, 0x1e81); - (0x1e83, 0x1e83); - (0x1e85, 0x1e85); - (0x1e87, 0x1e87); - (0x1e89, 0x1e89); - (0x1e8b, 0x1e8b); - (0x1e8d, 0x1e8d); - (0x1e8f, 0x1e8f); - (0x1e91, 0x1e91); - (0x1e93, 0x1e93); - (0x1e95, 0x1e9d); - (0x1e9f, 0x1e9f); - (0x1ea1, 0x1ea1); - (0x1ea3, 0x1ea3); - (0x1ea5, 0x1ea5); - (0x1ea7, 0x1ea7); - (0x1ea9, 0x1ea9); - (0x1eab, 0x1eab); - (0x1ead, 0x1ead); - (0x1eaf, 0x1eaf); - (0x1eb1, 0x1eb1); - (0x1eb3, 0x1eb3); - (0x1eb5, 0x1eb5); - (0x1eb7, 0x1eb7); - (0x1eb9, 0x1eb9); - (0x1ebb, 0x1ebb); - (0x1ebd, 0x1ebd); - (0x1ebf, 0x1ebf); - (0x1ec1, 0x1ec1); - (0x1ec3, 0x1ec3); - (0x1ec5, 0x1ec5); - (0x1ec7, 0x1ec7); - (0x1ec9, 0x1ec9); - (0x1ecb, 0x1ecb); - (0x1ecd, 0x1ecd); - (0x1ecf, 0x1ecf); - (0x1ed1, 0x1ed1); - (0x1ed3, 0x1ed3); - (0x1ed5, 0x1ed5); - (0x1ed7, 0x1ed7); - (0x1ed9, 0x1ed9); - (0x1edb, 0x1edb); - (0x1edd, 0x1edd); - (0x1edf, 0x1edf); - (0x1ee1, 0x1ee1); - (0x1ee3, 0x1ee3); - (0x1ee5, 0x1ee5); - (0x1ee7, 0x1ee7); - (0x1ee9, 0x1ee9); - (0x1eeb, 0x1eeb); - (0x1eed, 0x1eed); - (0x1eef, 0x1eef); - (0x1ef1, 0x1ef1); - (0x1ef3, 0x1ef3); - (0x1ef5, 0x1ef5); - (0x1ef7, 0x1ef7); - (0x1ef9, 0x1ef9); - (0x1efb, 0x1efb); - (0x1efd, 0x1efd); - (0x1eff, 0x1f07); - (0x1f10, 0x1f15); - (0x1f20, 0x1f27); - (0x1f30, 0x1f37); - (0x1f40, 0x1f45); - (0x1f50, 0x1f57); - (0x1f60, 0x1f67); - (0x1f70, 0x1f7d); - (0x1f80, 0x1f87); - (0x1f90, 0x1f97); - (0x1fa0, 0x1fa7); - (0x1fb0, 0x1fb4); - (0x1fb6, 0x1fb7); - (0x1fbe, 0x1fbe); - (0x1fc2, 0x1fc4); - (0x1fc6, 0x1fc7); - (0x1fd0, 0x1fd3); - (0x1fd6, 0x1fd7); - (0x1fe0, 0x1fe7); - (0x1ff2, 0x1ff4); - (0x1ff6, 0x1ff7); - (0x210a, 0x210a); - (0x210e, 0x210f); - (0x2113, 0x2113); - (0x212f, 0x212f); - (0x2134, 0x2134); - (0x2139, 0x2139); - (0x213c, 0x213d); - (0x2146, 0x2149); - (0x214e, 0x214e); - (0x2184, 0x2184); - (0x2c30, 0x2c5f); - (0x2c61, 0x2c61); - (0x2c65, 0x2c66); - (0x2c68, 0x2c68); - (0x2c6a, 0x2c6a); - (0x2c6c, 0x2c6c); - (0x2c71, 0x2c71); - (0x2c73, 0x2c74); - (0x2c76, 0x2c7b); - (0x2c81, 0x2c81); - (0x2c83, 0x2c83); - (0x2c85, 0x2c85); - (0x2c87, 0x2c87); - (0x2c89, 0x2c89); - (0x2c8b, 0x2c8b); - (0x2c8d, 0x2c8d); - (0x2c8f, 0x2c8f); - (0x2c91, 0x2c91); - (0x2c93, 0x2c93); - (0x2c95, 0x2c95); - (0x2c97, 0x2c97); - (0x2c99, 0x2c99); - (0x2c9b, 0x2c9b); - (0x2c9d, 0x2c9d); - (0x2c9f, 0x2c9f); - (0x2ca1, 0x2ca1); - (0x2ca3, 0x2ca3); - (0x2ca5, 0x2ca5); - (0x2ca7, 0x2ca7); - (0x2ca9, 0x2ca9); - (0x2cab, 0x2cab); - (0x2cad, 0x2cad); - (0x2caf, 0x2caf); - (0x2cb1, 0x2cb1); - (0x2cb3, 0x2cb3); - (0x2cb5, 0x2cb5); - (0x2cb7, 0x2cb7); - (0x2cb9, 0x2cb9); - (0x2cbb, 0x2cbb); - (0x2cbd, 0x2cbd); - (0x2cbf, 0x2cbf); - (0x2cc1, 0x2cc1); - (0x2cc3, 0x2cc3); - (0x2cc5, 0x2cc5); - (0x2cc7, 0x2cc7); - (0x2cc9, 0x2cc9); - (0x2ccb, 0x2ccb); - (0x2ccd, 0x2ccd); - (0x2ccf, 0x2ccf); - (0x2cd1, 0x2cd1); - (0x2cd3, 0x2cd3); - (0x2cd5, 0x2cd5); - (0x2cd7, 0x2cd7); - (0x2cd9, 0x2cd9); - (0x2cdb, 0x2cdb); - (0x2cdd, 0x2cdd); - (0x2cdf, 0x2cdf); - (0x2ce1, 0x2ce1); - (0x2ce3, 0x2ce4); - (0x2cec, 0x2cec); - (0x2cee, 0x2cee); - (0x2cf3, 0x2cf3); - (0x2d00, 0x2d25); - (0x2d27, 0x2d27); - (0x2d2d, 0x2d2d); - (0xa641, 0xa641); - (0xa643, 0xa643); - (0xa645, 0xa645); - (0xa647, 0xa647); - (0xa649, 0xa649); - (0xa64b, 0xa64b); - (0xa64d, 0xa64d); - (0xa64f, 0xa64f); - (0xa651, 0xa651); - (0xa653, 0xa653); - (0xa655, 0xa655); - (0xa657, 0xa657); - (0xa659, 0xa659); - (0xa65b, 0xa65b); - (0xa65d, 0xa65d); - (0xa65f, 0xa65f); - (0xa661, 0xa661); - (0xa663, 0xa663); - (0xa665, 0xa665); - (0xa667, 0xa667); - (0xa669, 0xa669); - (0xa66b, 0xa66b); - (0xa66d, 0xa66d); - (0xa681, 0xa681); - (0xa683, 0xa683); - (0xa685, 0xa685); - (0xa687, 0xa687); - (0xa689, 0xa689); - (0xa68b, 0xa68b); - (0xa68d, 0xa68d); - (0xa68f, 0xa68f); - (0xa691, 0xa691); - (0xa693, 0xa693); - (0xa695, 0xa695); - (0xa697, 0xa697); - (0xa699, 0xa699); - (0xa69b, 0xa69b); - (0xa723, 0xa723); - (0xa725, 0xa725); - (0xa727, 0xa727); - (0xa729, 0xa729); - (0xa72b, 0xa72b); - (0xa72d, 0xa72d); - (0xa72f, 0xa731); - (0xa733, 0xa733); - (0xa735, 0xa735); - (0xa737, 0xa737); - (0xa739, 0xa739); - (0xa73b, 0xa73b); - (0xa73d, 0xa73d); - (0xa73f, 0xa73f); - (0xa741, 0xa741); - (0xa743, 0xa743); - (0xa745, 0xa745); - (0xa747, 0xa747); - (0xa749, 0xa749); - (0xa74b, 0xa74b); - (0xa74d, 0xa74d); - (0xa74f, 0xa74f); - (0xa751, 0xa751); - (0xa753, 0xa753); - (0xa755, 0xa755); - (0xa757, 0xa757); - (0xa759, 0xa759); - (0xa75b, 0xa75b); - (0xa75d, 0xa75d); - (0xa75f, 0xa75f); - (0xa761, 0xa761); - (0xa763, 0xa763); - (0xa765, 0xa765); - (0xa767, 0xa767); - (0xa769, 0xa769); - (0xa76b, 0xa76b); - (0xa76d, 0xa76d); - (0xa76f, 0xa76f); - (0xa771, 0xa778); - (0xa77a, 0xa77a); - (0xa77c, 0xa77c); - (0xa77f, 0xa77f); - (0xa781, 0xa781); - (0xa783, 0xa783); - (0xa785, 0xa785); - (0xa787, 0xa787); - (0xa78c, 0xa78c); - (0xa78e, 0xa78e); - (0xa791, 0xa791); - (0xa793, 0xa795); - (0xa797, 0xa797); - (0xa799, 0xa799); - (0xa79b, 0xa79b); - (0xa79d, 0xa79d); - (0xa79f, 0xa79f); - (0xa7a1, 0xa7a1); - (0xa7a3, 0xa7a3); - (0xa7a5, 0xa7a5); - (0xa7a7, 0xa7a7); - (0xa7a9, 0xa7a9); - (0xa7af, 0xa7af); - (0xa7b5, 0xa7b5); - (0xa7b7, 0xa7b7); - (0xa7b9, 0xa7b9); - (0xa7bb, 0xa7bb); - (0xa7bd, 0xa7bd); - (0xa7bf, 0xa7bf); - (0xa7c1, 0xa7c1); - (0xa7c3, 0xa7c3); - (0xa7c8, 0xa7c8); - (0xa7ca, 0xa7ca); - (0xa7d1, 0xa7d1); - (0xa7d3, 0xa7d3); - (0xa7d5, 0xa7d5); - (0xa7d7, 0xa7d7); - (0xa7d9, 0xa7d9); - (0xa7f6, 0xa7f6); - (0xa7fa, 0xa7fa); - (0xab30, 0xab5a); - (0xab60, 0xab68); - (0xab70, 0xabbf); - (0xfb00, 0xfb06); - (0xfb13, 0xfb17); - (0xff41, 0xff5a); - (0x10428, 0x1044f); - (0x104d8, 0x104fb); - (0x10597, 0x105a1); - (0x105a3, 0x105b1); - (0x105b3, 0x105b9); - (0x105bb, 0x105bc); - (0x10cc0, 0x10cf2); - (0x118c0, 0x118df); - (0x16e60, 0x16e7f); - (0x1d41a, 0x1d433); - (0x1d44e, 0x1d454); - (0x1d456, 0x1d467); - (0x1d482, 0x1d49b); - (0x1d4b6, 0x1d4b9); - (0x1d4bb, 0x1d4bb); - (0x1d4bd, 0x1d4c3); - (0x1d4c5, 0x1d4cf); - (0x1d4ea, 0x1d503); - (0x1d51e, 0x1d537); - (0x1d552, 0x1d56b); - (0x1d586, 0x1d59f); - (0x1d5ba, 0x1d5d3); - (0x1d5ee, 0x1d607); - (0x1d622, 0x1d63b); - (0x1d656, 0x1d66f); - (0x1d68a, 0x1d6a5); - (0x1d6c2, 0x1d6da); - (0x1d6dc, 0x1d6e1); - (0x1d6fc, 0x1d714); - (0x1d716, 0x1d71b); - (0x1d736, 0x1d74e); - (0x1d750, 0x1d755); - (0x1d770, 0x1d788); - (0x1d78a, 0x1d78f); - (0x1d7aa, 0x1d7c2); - (0x1d7c4, 0x1d7c9); - (0x1d7cb, 0x1d7cb); - (0x1df00, 0x1df09); - (0x1e922, 0x1e943); - (0x1df0b, 0x1df1e); - ] + [0x61, 0x7a; 0xb5, 0xb5; 0xdf, 0xf6; 0xf8, 0xff; 0x101, 0x101; + 0x103, 0x103; 0x105, 0x105; 0x107, 0x107; 0x109, 0x109; 0x10b, 0x10b; + 0x10d, 0x10d; 0x10f, 0x10f; 0x111, 0x111; 0x113, 0x113; 0x115, 0x115; + 0x117, 0x117; 0x119, 0x119; 0x11b, 0x11b; 0x11d, 0x11d; 0x11f, 0x11f; + 0x121, 0x121; 0x123, 0x123; 0x125, 0x125; 0x127, 0x127; 0x129, 0x129; + 0x12b, 0x12b; 0x12d, 0x12d; 0x12f, 0x12f; 0x131, 0x131; 0x133, 0x133; + 0x135, 0x135; 0x137, 0x138; 0x13a, 0x13a; 0x13c, 0x13c; 0x13e, 0x13e; + 0x140, 0x140; 0x142, 0x142; 0x144, 0x144; 0x146, 0x146; 0x148, 0x149; + 0x14b, 0x14b; 0x14d, 0x14d; 0x14f, 0x14f; 0x151, 0x151; 0x153, 0x153; + 0x155, 0x155; 0x157, 0x157; 0x159, 0x159; 0x15b, 0x15b; 0x15d, 0x15d; + 0x15f, 0x15f; 0x161, 0x161; 0x163, 0x163; 0x165, 0x165; 0x167, 0x167; + 0x169, 0x169; 0x16b, 0x16b; 0x16d, 0x16d; 0x16f, 0x16f; 0x171, 0x171; + 0x173, 0x173; 0x175, 0x175; 0x177, 0x177; 0x17a, 0x17a; 0x17c, 0x17c; + 0x17e, 0x180; 0x183, 0x183; 0x185, 0x185; 0x188, 0x188; 0x18c, 0x18d; + 0x192, 0x192; 0x195, 0x195; 0x199, 0x19b; 0x19e, 0x19e; 0x1a1, 0x1a1; + 0x1a3, 0x1a3; 0x1a5, 0x1a5; 0x1a8, 0x1a8; 0x1aa, 0x1ab; 0x1ad, 0x1ad; + 0x1b0, 0x1b0; 0x1b4, 0x1b4; 0x1b6, 0x1b6; 0x1b9, 0x1ba; 0x1bd, 0x1bf; + 0x1c6, 0x1c6; 0x1c9, 0x1c9; 0x1cc, 0x1cc; 0x1ce, 0x1ce; 0x1d0, 0x1d0; + 0x1d2, 0x1d2; 0x1d4, 0x1d4; 0x1d6, 0x1d6; 0x1d8, 0x1d8; 0x1da, 0x1da; + 0x1dc, 0x1dd; 0x1df, 0x1df; 0x1e1, 0x1e1; 0x1e3, 0x1e3; 0x1e5, 0x1e5; + 0x1e7, 0x1e7; 0x1e9, 0x1e9; 0x1eb, 0x1eb; 0x1ed, 0x1ed; 0x1ef, 0x1f0; + 0x1f3, 0x1f3; 0x1f5, 0x1f5; 0x1f9, 0x1f9; 0x1fb, 0x1fb; 0x1fd, 0x1fd; + 0x1ff, 0x1ff; 0x201, 0x201; 0x203, 0x203; 0x205, 0x205; 0x207, 0x207; + 0x209, 0x209; 0x20b, 0x20b; 0x20d, 0x20d; 0x20f, 0x20f; 0x211, 0x211; + 0x213, 0x213; 0x215, 0x215; 0x217, 0x217; 0x219, 0x219; 0x21b, 0x21b; + 0x21d, 0x21d; 0x21f, 0x21f; 0x221, 0x221; 0x223, 0x223; 0x225, 0x225; + 0x227, 0x227; 0x229, 0x229; 0x22b, 0x22b; 0x22d, 0x22d; 0x22f, 0x22f; + 0x231, 0x231; 0x233, 0x239; 0x23c, 0x23c; 0x23f, 0x240; 0x242, 0x242; + 0x247, 0x247; 0x249, 0x249; 0x24b, 0x24b; 0x24d, 0x24d; 0x24f, 0x293; + 0x295, 0x2af; 0x371, 0x371; 0x373, 0x373; 0x377, 0x377; 0x37b, 0x37d; + 0x390, 0x390; 0x3ac, 0x3ce; 0x3d0, 0x3d1; 0x3d5, 0x3d7; 0x3d9, 0x3d9; + 0x3db, 0x3db; 0x3dd, 0x3dd; 0x3df, 0x3df; 0x3e1, 0x3e1; 0x3e3, 0x3e3; + 0x3e5, 0x3e5; 0x3e7, 0x3e7; 0x3e9, 0x3e9; 0x3eb, 0x3eb; 0x3ed, 0x3ed; + 0x3ef, 0x3f3; 0x3f5, 0x3f5; 0x3f8, 0x3f8; 0x3fb, 0x3fc; 0x430, 0x45f; + 0x461, 0x461; 0x463, 0x463; 0x465, 0x465; 0x467, 0x467; 0x469, 0x469; + 0x46b, 0x46b; 0x46d, 0x46d; 0x46f, 0x46f; 0x471, 0x471; 0x473, 0x473; + 0x475, 0x475; 0x477, 0x477; 0x479, 0x479; 0x47b, 0x47b; 0x47d, 0x47d; + 0x47f, 0x47f; 0x481, 0x481; 0x48b, 0x48b; 0x48d, 0x48d; 0x48f, 0x48f; + 0x491, 0x491; 0x493, 0x493; 0x495, 0x495; 0x497, 0x497; 0x499, 0x499; + 0x49b, 0x49b; 0x49d, 0x49d; 0x49f, 0x49f; 0x4a1, 0x4a1; 0x4a3, 0x4a3; + 0x4a5, 0x4a5; 0x4a7, 0x4a7; 0x4a9, 0x4a9; 0x4ab, 0x4ab; 0x4ad, 0x4ad; + 0x4af, 0x4af; 0x4b1, 0x4b1; 0x4b3, 0x4b3; 0x4b5, 0x4b5; 0x4b7, 0x4b7; + 0x4b9, 0x4b9; 0x4bb, 0x4bb; 0x4bd, 0x4bd; 0x4bf, 0x4bf; 0x4c2, 0x4c2; + 0x4c4, 0x4c4; 0x4c6, 0x4c6; 0x4c8, 0x4c8; 0x4ca, 0x4ca; 0x4cc, 0x4cc; + 0x4ce, 0x4cf; 0x4d1, 0x4d1; 0x4d3, 0x4d3; 0x4d5, 0x4d5; 0x4d7, 0x4d7; + 0x4d9, 0x4d9; 0x4db, 0x4db; 0x4dd, 0x4dd; 0x4df, 0x4df; 0x4e1, 0x4e1; + 0x4e3, 0x4e3; 0x4e5, 0x4e5; 0x4e7, 0x4e7; 0x4e9, 0x4e9; 0x4eb, 0x4eb; + 0x4ed, 0x4ed; 0x4ef, 0x4ef; 0x4f1, 0x4f1; 0x4f3, 0x4f3; 0x4f5, 0x4f5; + 0x4f7, 0x4f7; 0x4f9, 0x4f9; 0x4fb, 0x4fb; 0x4fd, 0x4fd; 0x4ff, 0x4ff; + 0x501, 0x501; 0x503, 0x503; 0x505, 0x505; 0x507, 0x507; 0x509, 0x509; + 0x50b, 0x50b; 0x50d, 0x50d; 0x50f, 0x50f; 0x511, 0x511; 0x513, 0x513; + 0x515, 0x515; 0x517, 0x517; 0x519, 0x519; 0x51b, 0x51b; 0x51d, 0x51d; + 0x51f, 0x51f; 0x521, 0x521; 0x523, 0x523; 0x525, 0x525; 0x527, 0x527; + 0x529, 0x529; 0x52b, 0x52b; 0x52d, 0x52d; 0x52f, 0x52f; 0x560, 0x588; + 0x10d0, 0x10fa; 0x10fd, 0x10ff; 0x13f8, 0x13fd; 0x1c80, 0x1c88; 0x1d00, 0x1d2b; + 0x1d6b, 0x1d77; 0x1d79, 0x1d9a; 0x1e01, 0x1e01; 0x1e03, 0x1e03; 0x1e05, 0x1e05; + 0x1e07, 0x1e07; 0x1e09, 0x1e09; 0x1e0b, 0x1e0b; 0x1e0d, 0x1e0d; 0x1e0f, 0x1e0f; + 0x1e11, 0x1e11; 0x1e13, 0x1e13; 0x1e15, 0x1e15; 0x1e17, 0x1e17; 0x1e19, 0x1e19; + 0x1e1b, 0x1e1b; 0x1e1d, 0x1e1d; 0x1e1f, 0x1e1f; 0x1e21, 0x1e21; 0x1e23, 0x1e23; + 0x1e25, 0x1e25; 0x1e27, 0x1e27; 0x1e29, 0x1e29; 0x1e2b, 0x1e2b; 0x1e2d, 0x1e2d; + 0x1e2f, 0x1e2f; 0x1e31, 0x1e31; 0x1e33, 0x1e33; 0x1e35, 0x1e35; 0x1e37, 0x1e37; + 0x1e39, 0x1e39; 0x1e3b, 0x1e3b; 0x1e3d, 0x1e3d; 0x1e3f, 0x1e3f; 0x1e41, 0x1e41; + 0x1e43, 0x1e43; 0x1e45, 0x1e45; 0x1e47, 0x1e47; 0x1e49, 0x1e49; 0x1e4b, 0x1e4b; + 0x1e4d, 0x1e4d; 0x1e4f, 0x1e4f; 0x1e51, 0x1e51; 0x1e53, 0x1e53; 0x1e55, 0x1e55; + 0x1e57, 0x1e57; 0x1e59, 0x1e59; 0x1e5b, 0x1e5b; 0x1e5d, 0x1e5d; 0x1e5f, 0x1e5f; + 0x1e61, 0x1e61; 0x1e63, 0x1e63; 0x1e65, 0x1e65; 0x1e67, 0x1e67; 0x1e69, 0x1e69; + 0x1e6b, 0x1e6b; 0x1e6d, 0x1e6d; 0x1e6f, 0x1e6f; 0x1e71, 0x1e71; 0x1e73, 0x1e73; + 0x1e75, 0x1e75; 0x1e77, 0x1e77; 0x1e79, 0x1e79; 0x1e7b, 0x1e7b; 0x1e7d, 0x1e7d; + 0x1e7f, 0x1e7f; 0x1e81, 0x1e81; 0x1e83, 0x1e83; 0x1e85, 0x1e85; 0x1e87, 0x1e87; + 0x1e89, 0x1e89; 0x1e8b, 0x1e8b; 0x1e8d, 0x1e8d; 0x1e8f, 0x1e8f; 0x1e91, 0x1e91; + 0x1e93, 0x1e93; 0x1e95, 0x1e9d; 0x1e9f, 0x1e9f; 0x1ea1, 0x1ea1; 0x1ea3, 0x1ea3; + 0x1ea5, 0x1ea5; 0x1ea7, 0x1ea7; 0x1ea9, 0x1ea9; 0x1eab, 0x1eab; 0x1ead, 0x1ead; + 0x1eaf, 0x1eaf; 0x1eb1, 0x1eb1; 0x1eb3, 0x1eb3; 0x1eb5, 0x1eb5; 0x1eb7, 0x1eb7; + 0x1eb9, 0x1eb9; 0x1ebb, 0x1ebb; 0x1ebd, 0x1ebd; 0x1ebf, 0x1ebf; 0x1ec1, 0x1ec1; + 0x1ec3, 0x1ec3; 0x1ec5, 0x1ec5; 0x1ec7, 0x1ec7; 0x1ec9, 0x1ec9; 0x1ecb, 0x1ecb; + 0x1ecd, 0x1ecd; 0x1ecf, 0x1ecf; 0x1ed1, 0x1ed1; 0x1ed3, 0x1ed3; 0x1ed5, 0x1ed5; + 0x1ed7, 0x1ed7; 0x1ed9, 0x1ed9; 0x1edb, 0x1edb; 0x1edd, 0x1edd; 0x1edf, 0x1edf; + 0x1ee1, 0x1ee1; 0x1ee3, 0x1ee3; 0x1ee5, 0x1ee5; 0x1ee7, 0x1ee7; 0x1ee9, 0x1ee9; + 0x1eeb, 0x1eeb; 0x1eed, 0x1eed; 0x1eef, 0x1eef; 0x1ef1, 0x1ef1; 0x1ef3, 0x1ef3; + 0x1ef5, 0x1ef5; 0x1ef7, 0x1ef7; 0x1ef9, 0x1ef9; 0x1efb, 0x1efb; 0x1efd, 0x1efd; + 0x1eff, 0x1f07; 0x1f10, 0x1f15; 0x1f20, 0x1f27; 0x1f30, 0x1f37; 0x1f40, 0x1f45; + 0x1f50, 0x1f57; 0x1f60, 0x1f67; 0x1f70, 0x1f7d; 0x1f80, 0x1f87; 0x1f90, 0x1f97; + 0x1fa0, 0x1fa7; 0x1fb0, 0x1fb4; 0x1fb6, 0x1fb7; 0x1fbe, 0x1fbe; 0x1fc2, 0x1fc4; + 0x1fc6, 0x1fc7; 0x1fd0, 0x1fd3; 0x1fd6, 0x1fd7; 0x1fe0, 0x1fe7; 0x1ff2, 0x1ff4; + 0x1ff6, 0x1ff7; 0x210a, 0x210a; 0x210e, 0x210f; 0x2113, 0x2113; 0x212f, 0x212f; + 0x2134, 0x2134; 0x2139, 0x2139; 0x213c, 0x213d; 0x2146, 0x2149; 0x214e, 0x214e; + 0x2184, 0x2184; 0x2c30, 0x2c5f; 0x2c61, 0x2c61; 0x2c65, 0x2c66; 0x2c68, 0x2c68; + 0x2c6a, 0x2c6a; 0x2c6c, 0x2c6c; 0x2c71, 0x2c71; 0x2c73, 0x2c74; 0x2c76, 0x2c7b; + 0x2c81, 0x2c81; 0x2c83, 0x2c83; 0x2c85, 0x2c85; 0x2c87, 0x2c87; 0x2c89, 0x2c89; + 0x2c8b, 0x2c8b; 0x2c8d, 0x2c8d; 0x2c8f, 0x2c8f; 0x2c91, 0x2c91; 0x2c93, 0x2c93; + 0x2c95, 0x2c95; 0x2c97, 0x2c97; 0x2c99, 0x2c99; 0x2c9b, 0x2c9b; 0x2c9d, 0x2c9d; + 0x2c9f, 0x2c9f; 0x2ca1, 0x2ca1; 0x2ca3, 0x2ca3; 0x2ca5, 0x2ca5; 0x2ca7, 0x2ca7; + 0x2ca9, 0x2ca9; 0x2cab, 0x2cab; 0x2cad, 0x2cad; 0x2caf, 0x2caf; 0x2cb1, 0x2cb1; + 0x2cb3, 0x2cb3; 0x2cb5, 0x2cb5; 0x2cb7, 0x2cb7; 0x2cb9, 0x2cb9; 0x2cbb, 0x2cbb; + 0x2cbd, 0x2cbd; 0x2cbf, 0x2cbf; 0x2cc1, 0x2cc1; 0x2cc3, 0x2cc3; 0x2cc5, 0x2cc5; + 0x2cc7, 0x2cc7; 0x2cc9, 0x2cc9; 0x2ccb, 0x2ccb; 0x2ccd, 0x2ccd; 0x2ccf, 0x2ccf; + 0x2cd1, 0x2cd1; 0x2cd3, 0x2cd3; 0x2cd5, 0x2cd5; 0x2cd7, 0x2cd7; 0x2cd9, 0x2cd9; + 0x2cdb, 0x2cdb; 0x2cdd, 0x2cdd; 0x2cdf, 0x2cdf; 0x2ce1, 0x2ce1; 0x2ce3, 0x2ce4; + 0x2cec, 0x2cec; 0x2cee, 0x2cee; 0x2cf3, 0x2cf3; 0x2d00, 0x2d25; 0x2d27, 0x2d27; + 0x2d2d, 0x2d2d; 0xa641, 0xa641; 0xa643, 0xa643; 0xa645, 0xa645; 0xa647, 0xa647; + 0xa649, 0xa649; 0xa64b, 0xa64b; 0xa64d, 0xa64d; 0xa64f, 0xa64f; 0xa651, 0xa651; + 0xa653, 0xa653; 0xa655, 0xa655; 0xa657, 0xa657; 0xa659, 0xa659; 0xa65b, 0xa65b; + 0xa65d, 0xa65d; 0xa65f, 0xa65f; 0xa661, 0xa661; 0xa663, 0xa663; 0xa665, 0xa665; + 0xa667, 0xa667; 0xa669, 0xa669; 0xa66b, 0xa66b; 0xa66d, 0xa66d; 0xa681, 0xa681; + 0xa683, 0xa683; 0xa685, 0xa685; 0xa687, 0xa687; 0xa689, 0xa689; 0xa68b, 0xa68b; + 0xa68d, 0xa68d; 0xa68f, 0xa68f; 0xa691, 0xa691; 0xa693, 0xa693; 0xa695, 0xa695; + 0xa697, 0xa697; 0xa699, 0xa699; 0xa69b, 0xa69b; 0xa723, 0xa723; 0xa725, 0xa725; + 0xa727, 0xa727; 0xa729, 0xa729; 0xa72b, 0xa72b; 0xa72d, 0xa72d; 0xa72f, 0xa731; + 0xa733, 0xa733; 0xa735, 0xa735; 0xa737, 0xa737; 0xa739, 0xa739; 0xa73b, 0xa73b; + 0xa73d, 0xa73d; 0xa73f, 0xa73f; 0xa741, 0xa741; 0xa743, 0xa743; 0xa745, 0xa745; + 0xa747, 0xa747; 0xa749, 0xa749; 0xa74b, 0xa74b; 0xa74d, 0xa74d; 0xa74f, 0xa74f; + 0xa751, 0xa751; 0xa753, 0xa753; 0xa755, 0xa755; 0xa757, 0xa757; 0xa759, 0xa759; + 0xa75b, 0xa75b; 0xa75d, 0xa75d; 0xa75f, 0xa75f; 0xa761, 0xa761; 0xa763, 0xa763; + 0xa765, 0xa765; 0xa767, 0xa767; 0xa769, 0xa769; 0xa76b, 0xa76b; 0xa76d, 0xa76d; + 0xa76f, 0xa76f; 0xa771, 0xa778; 0xa77a, 0xa77a; 0xa77c, 0xa77c; 0xa77f, 0xa77f; + 0xa781, 0xa781; 0xa783, 0xa783; 0xa785, 0xa785; 0xa787, 0xa787; 0xa78c, 0xa78c; + 0xa78e, 0xa78e; 0xa791, 0xa791; 0xa793, 0xa795; 0xa797, 0xa797; 0xa799, 0xa799; + 0xa79b, 0xa79b; 0xa79d, 0xa79d; 0xa79f, 0xa79f; 0xa7a1, 0xa7a1; 0xa7a3, 0xa7a3; + 0xa7a5, 0xa7a5; 0xa7a7, 0xa7a7; 0xa7a9, 0xa7a9; 0xa7af, 0xa7af; 0xa7b5, 0xa7b5; + 0xa7b7, 0xa7b7; 0xa7b9, 0xa7b9; 0xa7bb, 0xa7bb; 0xa7bd, 0xa7bd; 0xa7bf, 0xa7bf; + 0xa7c1, 0xa7c1; 0xa7c3, 0xa7c3; 0xa7c8, 0xa7c8; 0xa7ca, 0xa7ca; 0xa7d1, 0xa7d1; + 0xa7d3, 0xa7d3; 0xa7d5, 0xa7d5; 0xa7d7, 0xa7d7; 0xa7d9, 0xa7d9; 0xa7f6, 0xa7f6; + 0xa7fa, 0xa7fa; 0xab30, 0xab5a; 0xab60, 0xab68; 0xab70, 0xabbf; 0xfb00, 0xfb06; + 0xfb13, 0xfb17; 0xff41, 0xff5a; 0x10428, 0x1044f; 0x104d8, 0x104fb; 0x10597, 0x105a1; + 0x105a3, 0x105b1; 0x105b3, 0x105b9; 0x105bb, 0x105bc; 0x10cc0, 0x10cf2; 0x118c0, 0x118df; + 0x16e60, 0x16e7f; 0x1d41a, 0x1d433; 0x1d44e, 0x1d454; 0x1d456, 0x1d467; 0x1d482, 0x1d49b; + 0x1d4b6, 0x1d4b9; 0x1d4bb, 0x1d4bb; 0x1d4bd, 0x1d4c3; 0x1d4c5, 0x1d4cf; 0x1d4ea, 0x1d503; + 0x1d51e, 0x1d537; 0x1d552, 0x1d56b; 0x1d586, 0x1d59f; 0x1d5ba, 0x1d5d3; 0x1d5ee, 0x1d607; + 0x1d622, 0x1d63b; 0x1d656, 0x1d66f; 0x1d68a, 0x1d6a5; 0x1d6c2, 0x1d6da; 0x1d6dc, 0x1d6e1; + 0x1d6fc, 0x1d714; 0x1d716, 0x1d71b; 0x1d736, 0x1d74e; 0x1d750, 0x1d755; 0x1d770, 0x1d788; + 0x1d78a, 0x1d78f; 0x1d7aa, 0x1d7c2; 0x1d7c4, 0x1d7c9; 0x1d7cb, 0x1d7cb; 0x1df00, 0x1df09; + 0x1e922, 0x1e943; 0x1df0b, 0x1df1e] let lm = - [ - (0x2b0, 0x2b8); - (0x2b0, 0x2c1); - (0x2b2, 0x2b2); - (0x2c0, 0x2c1); - (0x2c6, 0x2d1); - (0x2d0, 0x2d1); - (0x2e0, 0x2e4); - (0x2ec, 0x2ec); - (0x2ee, 0x2ee); - (0x374, 0x374); - (0x37a, 0x37a); - (0x559, 0x559); - (0x640, 0x640); - (0x6e5, 0x6e6); - (0x7f4, 0x7f5); - (0x7fa, 0x7fa); - (0x81a, 0x81a); - (0x824, 0x824); - (0x828, 0x828); - (0x8c9, 0x8c9); - (0x971, 0x971); - (0xe46, 0xe46); - (0xec6, 0xec6); - (0x10fc, 0x10fc); - (0x17d7, 0x17d7); - (0x1843, 0x1843); - (0x1aa7, 0x1aa7); - (0x1c78, 0x1c7d); - (0x1c7b, 0x1c7b); - (0x1d2c, 0x1d6a); - (0x1d62, 0x1d62); - (0x1d78, 0x1d78); - (0x1d9b, 0x1dbf); - (0x1da4, 0x1da4); - (0x1da8, 0x1da8); - (0x2071, 0x2071); - (0x207f, 0x207f); - (0x2090, 0x209c); - (0x2c7c, 0x2c7c); - (0x2c7c, 0x2c7d); - (0x2d6f, 0x2d6f); - (0x2e2f, 0x2e2f); - (0x3005, 0x3005); - (0x3031, 0x3035); - (0x303b, 0x303b); - (0x309d, 0x309e); - (0x30fc, 0x30fc); - (0x30fc, 0x30fe); - (0xa015, 0xa015); - (0xa4f8, 0xa4fd); - (0xa60c, 0xa60c); - (0xa67f, 0xa67f); - (0xa69c, 0xa69d); - (0xa717, 0xa71f); - (0xa770, 0xa770); - (0xa788, 0xa788); - (0xa7f2, 0xa7f4); - (0xa7f8, 0xa7f9); - (0xa9cf, 0xa9cf); - (0xa9e6, 0xa9e6); - (0xaa70, 0xaa70); - (0xaadd, 0xaadd); - (0xaaf3, 0xaaf4); - (0xab5c, 0xab5f); - (0xab69, 0xab69); - (0xff70, 0xff70); - (0xff9e, 0xff9f); - (0x10780, 0x10780); - (0x10780, 0x10785); - (0x10781, 0x10782); - (0x10783, 0x10785); - (0x10787, 0x107b0); - (0x107b2, 0x107ba); - (0x16b40, 0x16b43); - (0x16b42, 0x16b43); - (0x16f93, 0x16f9f); - (0x16fe0, 0x16fe1); - (0x16fe3, 0x16fe3); - (0x1aff0, 0x1aff3); - (0x1aff5, 0x1affb); - (0x1e94b, 0x1e94b); - (0x1e13c, 0x1e13d); - (0x1e137, 0x1e13d); - (0x1affd, 0x1affe); - ] + [0x2b0, 0x2b8; 0x2b0, 0x2c1; 0x2b2, 0x2b2; 0x2c0, 0x2c1; 0x2c6, 0x2d1; + 0x2d0, 0x2d1; 0x2e0, 0x2e4; 0x2ec, 0x2ec; 0x2ee, 0x2ee; 0x374, 0x374; + 0x37a, 0x37a; 0x559, 0x559; 0x640, 0x640; 0x6e5, 0x6e6; 0x7f4, 0x7f5; + 0x7fa, 0x7fa; 0x81a, 0x81a; 0x824, 0x824; 0x828, 0x828; 0x8c9, 0x8c9; + 0x971, 0x971; 0xe46, 0xe46; 0xec6, 0xec6; 0x10fc, 0x10fc; 0x17d7, 0x17d7; + 0x1843, 0x1843; 0x1aa7, 0x1aa7; 0x1c78, 0x1c7d; 0x1c7b, 0x1c7b; 0x1d2c, 0x1d6a; + 0x1d62, 0x1d62; 0x1d78, 0x1d78; 0x1d9b, 0x1dbf; 0x1da4, 0x1da4; 0x1da8, 0x1da8; + 0x2071, 0x2071; 0x207f, 0x207f; 0x2090, 0x209c; 0x2c7c, 0x2c7c; 0x2c7c, 0x2c7d; + 0x2d6f, 0x2d6f; 0x2e2f, 0x2e2f; 0x3005, 0x3005; 0x3031, 0x3035; 0x303b, 0x303b; + 0x309d, 0x309e; 0x30fc, 0x30fc; 0x30fc, 0x30fe; 0xa015, 0xa015; 0xa4f8, 0xa4fd; + 0xa60c, 0xa60c; 0xa67f, 0xa67f; 0xa69c, 0xa69d; 0xa717, 0xa71f; 0xa770, 0xa770; + 0xa788, 0xa788; 0xa7f2, 0xa7f4; 0xa7f8, 0xa7f9; 0xa9cf, 0xa9cf; 0xa9e6, 0xa9e6; + 0xaa70, 0xaa70; 0xaadd, 0xaadd; 0xaaf3, 0xaaf4; 0xab5c, 0xab5f; 0xab69, 0xab69; + 0xff70, 0xff70; 0xff9e, 0xff9f; 0x10780, 0x10780; 0x10780, 0x10785; 0x10781, 0x10782; + 0x10783, 0x10785; 0x10787, 0x107b0; 0x107b2, 0x107ba; 0x16b40, 0x16b43; 0x16b42, 0x16b43; + 0x16f93, 0x16f9f; 0x16fe0, 0x16fe1; 0x16fe3, 0x16fe3; 0x1aff0, 0x1aff3; 0x1aff5, 0x1affb; + 0x1e94b, 0x1e94b; 0x1e13c, 0x1e13d; 0x1e137, 0x1e13d; 0x1affd, 0x1affe] let lo = - [ - (0xaa, 0xaa); - (0xba, 0xba); - (0x1bb, 0x1bb); - (0x1c0, 0x1c3); - (0x294, 0x294); - (0x5d0, 0x5ea); - (0x5ef, 0x5f2); - (0x620, 0x63f); - (0x641, 0x64a); - (0x66e, 0x66f); - (0x671, 0x6d3); - (0x673, 0x673); - (0x6d5, 0x6d5); - (0x6ee, 0x6ef); - (0x6fa, 0x6fc); - (0x6ff, 0x6ff); - (0x710, 0x710); - (0x712, 0x72f); - (0x74d, 0x7a5); - (0x7b1, 0x7b1); - (0x7ca, 0x7ea); - (0x800, 0x815); - (0x840, 0x858); - (0x860, 0x86a); - (0x870, 0x887); - (0x889, 0x88e); - (0x8a0, 0x8c8); - (0x904, 0x939); - (0x93d, 0x93d); - (0x950, 0x950); - (0x958, 0x961); - (0x972, 0x980); - (0x985, 0x98c); - (0x98f, 0x990); - (0x993, 0x9a8); - (0x9aa, 0x9b0); - (0x9b2, 0x9b2); - (0x9b6, 0x9b9); - (0x9bd, 0x9bd); - (0x9ce, 0x9ce); - (0x9dc, 0x9dd); - (0x9df, 0x9e1); - (0x9f0, 0x9f1); - (0x9fc, 0x9fc); - (0xa05, 0xa0a); - (0xa0f, 0xa10); - (0xa13, 0xa28); - (0xa2a, 0xa30); - (0xa32, 0xa33); - (0xa35, 0xa36); - (0xa38, 0xa39); - (0xa59, 0xa5c); - (0xa5e, 0xa5e); - (0xa72, 0xa74); - (0xa85, 0xa8d); - (0xa8f, 0xa91); - (0xa93, 0xaa8); - (0xaaa, 0xab0); - (0xab2, 0xab3); - (0xab5, 0xab9); - (0xabd, 0xabd); - (0xad0, 0xad0); - (0xae0, 0xae1); - (0xaf9, 0xaf9); - (0xb05, 0xb0c); - (0xb0f, 0xb10); - (0xb13, 0xb28); - (0xb2a, 0xb30); - (0xb32, 0xb33); - (0xb35, 0xb39); - (0xb3d, 0xb3d); - (0xb5c, 0xb5d); - (0xb5f, 0xb61); - (0xb71, 0xb71); - (0xb83, 0xb83); - (0xb85, 0xb8a); - (0xb8e, 0xb90); - (0xb92, 0xb95); - (0xb99, 0xb9a); - (0xb9c, 0xb9c); - (0xb9e, 0xb9f); - (0xba3, 0xba4); - (0xba8, 0xbaa); - (0xbae, 0xbb9); - (0xbd0, 0xbd0); - (0xc05, 0xc0c); - (0xc0e, 0xc10); - (0xc12, 0xc28); - (0xc2a, 0xc39); - (0xc3d, 0xc3d); - (0xc58, 0xc5a); - (0xc5d, 0xc5d); - (0xc60, 0xc61); - (0xc80, 0xc80); - (0xc85, 0xc8c); - (0xc8e, 0xc90); - (0xc92, 0xca8); - (0xcaa, 0xcb3); - (0xcb5, 0xcb9); - (0xcbd, 0xcbd); - (0xcdd, 0xcde); - (0xce0, 0xce1); - (0xcf1, 0xcf2); - (0xd04, 0xd0c); - (0xd0e, 0xd10); - (0xd12, 0xd3a); - (0xd3d, 0xd3d); - (0xd4e, 0xd4e); - (0xd54, 0xd56); - (0xd5f, 0xd61); - (0xd7a, 0xd7f); - (0xd85, 0xd96); - (0xd9a, 0xdb1); - (0xdb3, 0xdbb); - (0xdbd, 0xdbd); - (0xdc0, 0xdc6); - (0xe01, 0xe30); - (0xe32, 0xe32); - (0xe32, 0xe33); - (0xe40, 0xe44); - (0xe40, 0xe45); - (0xe81, 0xe82); - (0xe84, 0xe84); - (0xe86, 0xe8a); - (0xe8c, 0xea3); - (0xea5, 0xea5); - (0xea7, 0xeb0); - (0xeb2, 0xeb2); - (0xeb2, 0xeb3); - (0xebd, 0xebd); - (0xec0, 0xec4); - (0xedc, 0xedf); - (0xf00, 0xf00); - (0xf40, 0xf47); - (0xf49, 0xf6c); - (0xf88, 0xf8c); - (0x1000, 0x102a); - (0x103f, 0x103f); - (0x1050, 0x1055); - (0x105a, 0x105d); - (0x1061, 0x1061); - (0x1065, 0x1066); - (0x106e, 0x1070); - (0x1075, 0x1081); - (0x108e, 0x108e); - (0x1100, 0x1248); - (0x115f, 0x1160); - (0x124a, 0x124d); - (0x1250, 0x1256); - (0x1258, 0x1258); - (0x125a, 0x125d); - (0x1260, 0x1288); - (0x128a, 0x128d); - (0x1290, 0x12b0); - (0x12b2, 0x12b5); - (0x12b8, 0x12be); - (0x12c0, 0x12c0); - (0x12c2, 0x12c5); - (0x12c8, 0x12d6); - (0x12d8, 0x1310); - (0x1312, 0x1315); - (0x1318, 0x135a); - (0x1380, 0x138f); - (0x1401, 0x166c); - (0x166f, 0x167f); - (0x1681, 0x169a); - (0x16a0, 0x16ea); - (0x16f1, 0x16f8); - (0x1700, 0x1711); - (0x171f, 0x1731); - (0x1740, 0x1751); - (0x1760, 0x176c); - (0x176e, 0x1770); - (0x1780, 0x17b3); - (0x17a3, 0x17a4); - (0x17dc, 0x17dc); - (0x1820, 0x1842); - (0x1844, 0x1878); - (0x1880, 0x1884); - (0x1887, 0x18a8); - (0x18aa, 0x18aa); - (0x18b0, 0x18f5); - (0x1900, 0x191e); - (0x1950, 0x196d); - (0x1970, 0x1974); - (0x1980, 0x19ab); - (0x19b0, 0x19c9); - (0x19b5, 0x19b7); - (0x19ba, 0x19ba); - (0x1a00, 0x1a16); - (0x1a20, 0x1a54); - (0x1b05, 0x1b33); - (0x1b45, 0x1b4c); - (0x1b83, 0x1ba0); - (0x1bae, 0x1baf); - (0x1bba, 0x1be5); - (0x1c00, 0x1c23); - (0x1c4d, 0x1c4f); - (0x1c5a, 0x1c77); - (0x1ce9, 0x1cec); - (0x1cee, 0x1cf3); - (0x1cf5, 0x1cf6); - (0x1cfa, 0x1cfa); - (0x2135, 0x2138); - (0x2d30, 0x2d67); - (0x2d80, 0x2d96); - (0x2da0, 0x2da6); - (0x2da8, 0x2dae); - (0x2db0, 0x2db6); - (0x2db8, 0x2dbe); - (0x2dc0, 0x2dc6); - (0x2dc8, 0x2dce); - (0x2dd0, 0x2dd6); - (0x2dd8, 0x2dde); - (0x3006, 0x3006); - (0x303c, 0x303c); - (0x3041, 0x3096); - (0x309f, 0x309f); - (0x30a1, 0x30fa); - (0x30ff, 0x30ff); - (0x3105, 0x312f); - (0x3131, 0x318e); - (0x3164, 0x3164); - (0x31a0, 0x31bf); - (0x31f0, 0x31ff); - (0x3400, 0x4dbf); - (0x4e00, 0x9fff); - (0x4e00, 0xa014); - (0xa016, 0xa48c); - (0xa4d0, 0xa4f7); - (0xa500, 0xa60b); - (0xa610, 0xa61f); - (0xa62a, 0xa62b); - (0xa66e, 0xa66e); - (0xa6a0, 0xa6e5); - (0xa78f, 0xa78f); - (0xa7f7, 0xa7f7); - (0xa7fb, 0xa801); - (0xa803, 0xa805); - (0xa807, 0xa80a); - (0xa80c, 0xa822); - (0xa840, 0xa873); - (0xa882, 0xa8b3); - (0xa8f2, 0xa8f7); - (0xa8fb, 0xa8fb); - (0xa8fd, 0xa8fe); - (0xa90a, 0xa925); - (0xa930, 0xa946); - (0xa960, 0xa97c); - (0xa984, 0xa9b2); - (0xa9e0, 0xa9e4); - (0xa9e7, 0xa9ef); - (0xa9fa, 0xa9fe); - (0xaa00, 0xaa28); - (0xaa40, 0xaa42); - (0xaa44, 0xaa4b); - (0xaa60, 0xaa6f); - (0xaa71, 0xaa76); - (0xaa7a, 0xaa7a); - (0xaa7e, 0xaaaf); - (0xaab1, 0xaab1); - (0xaab5, 0xaab6); - (0xaab9, 0xaab9); - (0xaab9, 0xaabd); - (0xaabb, 0xaabc); - (0xaac0, 0xaac0); - (0xaac2, 0xaac2); - (0xaadb, 0xaadc); - (0xaae0, 0xaaea); - (0xaaf2, 0xaaf2); - (0xab01, 0xab06); - (0xab09, 0xab0e); - (0xab11, 0xab16); - (0xab20, 0xab26); - (0xab28, 0xab2e); - (0xabc0, 0xabe2); - (0xac00, 0xd7a3); - (0xd7b0, 0xd7c6); - (0xd7cb, 0xd7fb); - (0xf900, 0xfa6d); - (0xfa0e, 0xfa0f); - (0xfa11, 0xfa11); - (0xfa13, 0xfa14); - (0xfa1f, 0xfa1f); - (0xfa21, 0xfa21); - (0xfa23, 0xfa24); - (0xfa27, 0xfa29); - (0xfa70, 0xfad9); - (0xfb1d, 0xfb1d); - (0xfb1f, 0xfb28); - (0xfb2a, 0xfb36); - (0xfb38, 0xfb3c); - (0xfb3e, 0xfb3e); - (0xfb40, 0xfb41); - (0xfb43, 0xfb44); - (0xfb46, 0xfbb1); - (0xfbd3, 0xfc5d); - (0xfbd3, 0xfd3d); - (0xfc64, 0xfd3d); - (0xfd50, 0xfd8f); - (0xfd92, 0xfdc7); - (0xfdf0, 0xfdf9); - (0xfdf0, 0xfdfb); - (0xfe70, 0xfe74); - (0xfe71, 0xfe71); - (0xfe73, 0xfe73); - (0xfe76, 0xfefc); - (0xfe77, 0xfe77); - (0xfe79, 0xfe79); - (0xfe7b, 0xfe7b); - (0xfe7d, 0xfe7d); - (0xfe7f, 0xfefc); - (0xff66, 0xff6f); - (0xff71, 0xff9d); - (0xffa0, 0xffa0); - (0xffa0, 0xffbe); - (0xffc2, 0xffc7); - (0xffca, 0xffcf); - (0xffd2, 0xffd7); - (0xffda, 0xffdc); - (0x10000, 0x1000b); - (0x1000d, 0x10026); - (0x10028, 0x1003a); - (0x1003c, 0x1003d); - (0x1003f, 0x1004d); - (0x10050, 0x1005d); - (0x10080, 0x100fa); - (0x10280, 0x1029c); - (0x102a0, 0x102d0); - (0x10300, 0x1031f); - (0x1032d, 0x10340); - (0x10342, 0x10349); - (0x10350, 0x10375); - (0x10380, 0x1039d); - (0x103a0, 0x103c3); - (0x103c8, 0x103cf); - (0x10450, 0x1049d); - (0x10500, 0x10527); - (0x10530, 0x10563); - (0x10600, 0x10736); - (0x10740, 0x10755); - (0x10760, 0x10767); - (0x10800, 0x10805); - (0x10808, 0x10808); - (0x1080a, 0x10835); - (0x10837, 0x10838); - (0x1083c, 0x1083c); - (0x1083f, 0x10855); - (0x10860, 0x10876); - (0x10880, 0x1089e); - (0x108e0, 0x108f2); - (0x108f4, 0x108f5); - (0x10900, 0x10915); - (0x10920, 0x10939); - (0x10980, 0x109b7); - (0x109be, 0x109bf); - (0x10a00, 0x10a00); - (0x10a10, 0x10a13); - (0x10a15, 0x10a17); - (0x10a19, 0x10a35); - (0x10a60, 0x10a7c); - (0x10a80, 0x10a9c); - (0x10ac0, 0x10ac7); - (0x10ac9, 0x10ae4); - (0x10b00, 0x10b35); - (0x10b40, 0x10b55); - (0x10b60, 0x10b72); - (0x10b80, 0x10b91); - (0x10c00, 0x10c48); - (0x10d00, 0x10d23); - (0x10d22, 0x10d23); - (0x10e80, 0x10ea9); - (0x10eb0, 0x10eb1); - (0x10f00, 0x10f1c); - (0x10f27, 0x10f27); - (0x10f30, 0x10f45); - (0x10f70, 0x10f81); - (0x10fb0, 0x10fc4); - (0x10fe0, 0x10ff6); - (0x11003, 0x11037); - (0x11071, 0x11072); - (0x11075, 0x11075); - (0x11083, 0x110af); - (0x110d0, 0x110e8); - (0x11103, 0x11126); - (0x11144, 0x11144); - (0x11147, 0x11147); - (0x11150, 0x11172); - (0x11176, 0x11176); - (0x11183, 0x111b2); - (0x111c1, 0x111c4); - (0x111da, 0x111da); - (0x111dc, 0x111dc); - (0x11200, 0x11211); - (0x11213, 0x1122b); - (0x11280, 0x11286); - (0x11288, 0x11288); - (0x1128a, 0x1128d); - (0x1128f, 0x1129d); - (0x1129f, 0x112a8); - (0x112b0, 0x112de); - (0x11305, 0x1130c); - (0x1130f, 0x11310); - (0x11313, 0x11328); - (0x1132a, 0x11330); - (0x11332, 0x11333); - (0x11335, 0x11339); - (0x1133d, 0x1133d); - (0x11350, 0x11350); - (0x1135d, 0x1135d); - (0x1135d, 0x11361); - (0x11400, 0x11434); - (0x11447, 0x1144a); - (0x1145f, 0x11461); - (0x11480, 0x114af); - (0x114c4, 0x114c5); - (0x114c7, 0x114c7); - (0x11580, 0x115ae); - (0x115d8, 0x115db); - (0x11600, 0x1162f); - (0x11644, 0x11644); - (0x11680, 0x116aa); - (0x116b8, 0x116b8); - (0x11700, 0x1171a); - (0x11740, 0x11746); - (0x11800, 0x1182b); - (0x118ff, 0x11906); - (0x11909, 0x11909); - (0x1190c, 0x11913); - (0x11915, 0x11916); - (0x11918, 0x1192f); - (0x1193f, 0x1193f); - (0x11941, 0x11941); - (0x119a0, 0x119a7); - (0x119aa, 0x119d0); - (0x119e1, 0x119e1); - (0x119e3, 0x119e3); - (0x11a00, 0x11a00); - (0x11a0b, 0x11a32); - (0x11a3a, 0x11a3a); - (0x11a50, 0x11a50); - (0x11a5c, 0x11a89); - (0x11a9d, 0x11a9d); - (0x11ab0, 0x11af8); - (0x11c00, 0x11c08); - (0x11c0a, 0x11c2e); - (0x11c40, 0x11c40); - (0x11c72, 0x11c8f); - (0x11d00, 0x11d06); - (0x11d08, 0x11d09); - (0x11d0b, 0x11d30); - (0x11d46, 0x11d46); - (0x11d60, 0x11d65); - (0x11d67, 0x11d68); - (0x11d6a, 0x11d89); - (0x11d98, 0x11d98); - (0x11ee0, 0x11ef2); - (0x11fb0, 0x11fb0); - (0x12000, 0x12399); - (0x12480, 0x12543); - (0x12f90, 0x12ff0); - (0x13000, 0x1342e); - (0x14400, 0x14646); - (0x16800, 0x16a38); - (0x16a40, 0x16a5e); - (0x16a70, 0x16abe); - (0x16ad0, 0x16aed); - (0x16b00, 0x16b2f); - (0x16b63, 0x16b77); - (0x16b7d, 0x16b8f); - (0x16f00, 0x16f4a); - (0x16f50, 0x16f50); - (0x17000, 0x187f7); - (0x18800, 0x18cd5); - (0x18d00, 0x18d08); - (0x1b000, 0x1b122); - (0x1b150, 0x1b152); - (0x1b164, 0x1b167); - (0x1b170, 0x1b2fb); - (0x1bc00, 0x1bc6a); - (0x1bc70, 0x1bc7c); - (0x1bc80, 0x1bc88); - (0x1bc90, 0x1bc99); - (0x1df0a, 0x1df0a); - (0x1e100, 0x1e12c); - (0x1e14e, 0x1e14e); - (0x1e290, 0x1e2ad); - (0x1e2c0, 0x1e2eb); - (0x1e7e0, 0x1e7e6); - (0x1e7e8, 0x1e7eb); - (0x1e7ed, 0x1e7ee); - (0x1e7f0, 0x1e7fe); - (0x1e800, 0x1e8c4); - (0x1ee00, 0x1ee03); - (0x1ee05, 0x1ee1f); - (0x1ee21, 0x1ee22); - (0x1ee24, 0x1ee24); - (0x1ee27, 0x1ee27); - (0x1ee29, 0x1ee32); - (0x1ee34, 0x1ee37); - (0x1ee39, 0x1ee39); - (0x1ee3b, 0x1ee3b); - (0x1ee42, 0x1ee42); - (0x1ee47, 0x1ee47); - (0x1ee49, 0x1ee49); - (0x1ee4b, 0x1ee4b); - (0x1ee4d, 0x1ee4f); - (0x1ee51, 0x1ee52); - (0x1ee54, 0x1ee54); - (0x1ee57, 0x1ee57); - (0x1ee59, 0x1ee59); - (0x1ee5b, 0x1ee5b); - (0x1ee5d, 0x1ee5d); - (0x1ee5f, 0x1ee5f); - (0x1ee61, 0x1ee62); - (0x1ee64, 0x1ee64); - (0x1ee67, 0x1ee6a); - (0x1ee6c, 0x1ee72); - (0x1ee74, 0x1ee77); - (0x1ee79, 0x1ee7c); - (0x1ee7e, 0x1ee7e); - (0x1ee80, 0x1ee89); - (0x1ee8b, 0x1ee9b); - (0x1eea1, 0x1eea3); - (0x1eea5, 0x1eea9); - (0x1eeab, 0x1eebb); - (0x20000, 0x2a6df); - (0x2a700, 0x2b738); - (0x2b740, 0x2b81d); - (0x2b820, 0x2cea1); - (0x30000, 0x3134a); - (0x2f800, 0x2fa1d); - (0x2ceb0, 0x2ebe0); - ] + [0xaa, 0xaa; 0xba, 0xba; 0x1bb, 0x1bb; 0x1c0, 0x1c3; 0x294, 0x294; + 0x5d0, 0x5ea; 0x5ef, 0x5f2; 0x620, 0x63f; 0x641, 0x64a; 0x66e, 0x66f; + 0x671, 0x6d3; 0x673, 0x673; 0x6d5, 0x6d5; 0x6ee, 0x6ef; 0x6fa, 0x6fc; + 0x6ff, 0x6ff; 0x710, 0x710; 0x712, 0x72f; 0x74d, 0x7a5; 0x7b1, 0x7b1; + 0x7ca, 0x7ea; 0x800, 0x815; 0x840, 0x858; 0x860, 0x86a; 0x870, 0x887; + 0x889, 0x88e; 0x8a0, 0x8c8; 0x904, 0x939; 0x93d, 0x93d; 0x950, 0x950; + 0x958, 0x961; 0x972, 0x980; 0x985, 0x98c; 0x98f, 0x990; 0x993, 0x9a8; + 0x9aa, 0x9b0; 0x9b2, 0x9b2; 0x9b6, 0x9b9; 0x9bd, 0x9bd; 0x9ce, 0x9ce; + 0x9dc, 0x9dd; 0x9df, 0x9e1; 0x9f0, 0x9f1; 0x9fc, 0x9fc; 0xa05, 0xa0a; + 0xa0f, 0xa10; 0xa13, 0xa28; 0xa2a, 0xa30; 0xa32, 0xa33; 0xa35, 0xa36; + 0xa38, 0xa39; 0xa59, 0xa5c; 0xa5e, 0xa5e; 0xa72, 0xa74; 0xa85, 0xa8d; + 0xa8f, 0xa91; 0xa93, 0xaa8; 0xaaa, 0xab0; 0xab2, 0xab3; 0xab5, 0xab9; + 0xabd, 0xabd; 0xad0, 0xad0; 0xae0, 0xae1; 0xaf9, 0xaf9; 0xb05, 0xb0c; + 0xb0f, 0xb10; 0xb13, 0xb28; 0xb2a, 0xb30; 0xb32, 0xb33; 0xb35, 0xb39; + 0xb3d, 0xb3d; 0xb5c, 0xb5d; 0xb5f, 0xb61; 0xb71, 0xb71; 0xb83, 0xb83; + 0xb85, 0xb8a; 0xb8e, 0xb90; 0xb92, 0xb95; 0xb99, 0xb9a; 0xb9c, 0xb9c; + 0xb9e, 0xb9f; 0xba3, 0xba4; 0xba8, 0xbaa; 0xbae, 0xbb9; 0xbd0, 0xbd0; + 0xc05, 0xc0c; 0xc0e, 0xc10; 0xc12, 0xc28; 0xc2a, 0xc39; 0xc3d, 0xc3d; + 0xc58, 0xc5a; 0xc5d, 0xc5d; 0xc60, 0xc61; 0xc80, 0xc80; 0xc85, 0xc8c; + 0xc8e, 0xc90; 0xc92, 0xca8; 0xcaa, 0xcb3; 0xcb5, 0xcb9; 0xcbd, 0xcbd; + 0xcdd, 0xcde; 0xce0, 0xce1; 0xcf1, 0xcf2; 0xd04, 0xd0c; 0xd0e, 0xd10; + 0xd12, 0xd3a; 0xd3d, 0xd3d; 0xd4e, 0xd4e; 0xd54, 0xd56; 0xd5f, 0xd61; + 0xd7a, 0xd7f; 0xd85, 0xd96; 0xd9a, 0xdb1; 0xdb3, 0xdbb; 0xdbd, 0xdbd; + 0xdc0, 0xdc6; 0xe01, 0xe30; 0xe32, 0xe32; 0xe32, 0xe33; 0xe40, 0xe44; + 0xe40, 0xe45; 0xe81, 0xe82; 0xe84, 0xe84; 0xe86, 0xe8a; 0xe8c, 0xea3; + 0xea5, 0xea5; 0xea7, 0xeb0; 0xeb2, 0xeb2; 0xeb2, 0xeb3; 0xebd, 0xebd; + 0xec0, 0xec4; 0xedc, 0xedf; 0xf00, 0xf00; 0xf40, 0xf47; 0xf49, 0xf6c; + 0xf88, 0xf8c; 0x1000, 0x102a; 0x103f, 0x103f; 0x1050, 0x1055; 0x105a, 0x105d; + 0x1061, 0x1061; 0x1065, 0x1066; 0x106e, 0x1070; 0x1075, 0x1081; 0x108e, 0x108e; + 0x1100, 0x1248; 0x115f, 0x1160; 0x124a, 0x124d; 0x1250, 0x1256; 0x1258, 0x1258; + 0x125a, 0x125d; 0x1260, 0x1288; 0x128a, 0x128d; 0x1290, 0x12b0; 0x12b2, 0x12b5; + 0x12b8, 0x12be; 0x12c0, 0x12c0; 0x12c2, 0x12c5; 0x12c8, 0x12d6; 0x12d8, 0x1310; + 0x1312, 0x1315; 0x1318, 0x135a; 0x1380, 0x138f; 0x1401, 0x166c; 0x166f, 0x167f; + 0x1681, 0x169a; 0x16a0, 0x16ea; 0x16f1, 0x16f8; 0x1700, 0x1711; 0x171f, 0x1731; + 0x1740, 0x1751; 0x1760, 0x176c; 0x176e, 0x1770; 0x1780, 0x17b3; 0x17a3, 0x17a4; + 0x17dc, 0x17dc; 0x1820, 0x1842; 0x1844, 0x1878; 0x1880, 0x1884; 0x1887, 0x18a8; + 0x18aa, 0x18aa; 0x18b0, 0x18f5; 0x1900, 0x191e; 0x1950, 0x196d; 0x1970, 0x1974; + 0x1980, 0x19ab; 0x19b0, 0x19c9; 0x19b5, 0x19b7; 0x19ba, 0x19ba; 0x1a00, 0x1a16; + 0x1a20, 0x1a54; 0x1b05, 0x1b33; 0x1b45, 0x1b4c; 0x1b83, 0x1ba0; 0x1bae, 0x1baf; + 0x1bba, 0x1be5; 0x1c00, 0x1c23; 0x1c4d, 0x1c4f; 0x1c5a, 0x1c77; 0x1ce9, 0x1cec; + 0x1cee, 0x1cf3; 0x1cf5, 0x1cf6; 0x1cfa, 0x1cfa; 0x2135, 0x2138; 0x2d30, 0x2d67; + 0x2d80, 0x2d96; 0x2da0, 0x2da6; 0x2da8, 0x2dae; 0x2db0, 0x2db6; 0x2db8, 0x2dbe; + 0x2dc0, 0x2dc6; 0x2dc8, 0x2dce; 0x2dd0, 0x2dd6; 0x2dd8, 0x2dde; 0x3006, 0x3006; + 0x303c, 0x303c; 0x3041, 0x3096; 0x309f, 0x309f; 0x30a1, 0x30fa; 0x30ff, 0x30ff; + 0x3105, 0x312f; 0x3131, 0x318e; 0x3164, 0x3164; 0x31a0, 0x31bf; 0x31f0, 0x31ff; + 0x3400, 0x4dbf; 0x4e00, 0x9fff; 0x4e00, 0xa014; 0xa016, 0xa48c; 0xa4d0, 0xa4f7; + 0xa500, 0xa60b; 0xa610, 0xa61f; 0xa62a, 0xa62b; 0xa66e, 0xa66e; 0xa6a0, 0xa6e5; + 0xa78f, 0xa78f; 0xa7f7, 0xa7f7; 0xa7fb, 0xa801; 0xa803, 0xa805; 0xa807, 0xa80a; + 0xa80c, 0xa822; 0xa840, 0xa873; 0xa882, 0xa8b3; 0xa8f2, 0xa8f7; 0xa8fb, 0xa8fb; + 0xa8fd, 0xa8fe; 0xa90a, 0xa925; 0xa930, 0xa946; 0xa960, 0xa97c; 0xa984, 0xa9b2; + 0xa9e0, 0xa9e4; 0xa9e7, 0xa9ef; 0xa9fa, 0xa9fe; 0xaa00, 0xaa28; 0xaa40, 0xaa42; + 0xaa44, 0xaa4b; 0xaa60, 0xaa6f; 0xaa71, 0xaa76; 0xaa7a, 0xaa7a; 0xaa7e, 0xaaaf; + 0xaab1, 0xaab1; 0xaab5, 0xaab6; 0xaab9, 0xaab9; 0xaab9, 0xaabd; 0xaabb, 0xaabc; + 0xaac0, 0xaac0; 0xaac2, 0xaac2; 0xaadb, 0xaadc; 0xaae0, 0xaaea; 0xaaf2, 0xaaf2; + 0xab01, 0xab06; 0xab09, 0xab0e; 0xab11, 0xab16; 0xab20, 0xab26; 0xab28, 0xab2e; + 0xabc0, 0xabe2; 0xac00, 0xd7a3; 0xd7b0, 0xd7c6; 0xd7cb, 0xd7fb; 0xf900, 0xfa6d; + 0xfa0e, 0xfa0f; 0xfa11, 0xfa11; 0xfa13, 0xfa14; 0xfa1f, 0xfa1f; 0xfa21, 0xfa21; + 0xfa23, 0xfa24; 0xfa27, 0xfa29; 0xfa70, 0xfad9; 0xfb1d, 0xfb1d; 0xfb1f, 0xfb28; + 0xfb2a, 0xfb36; 0xfb38, 0xfb3c; 0xfb3e, 0xfb3e; 0xfb40, 0xfb41; 0xfb43, 0xfb44; + 0xfb46, 0xfbb1; 0xfbd3, 0xfc5d; 0xfbd3, 0xfd3d; 0xfc64, 0xfd3d; 0xfd50, 0xfd8f; + 0xfd92, 0xfdc7; 0xfdf0, 0xfdf9; 0xfdf0, 0xfdfb; 0xfe70, 0xfe74; 0xfe71, 0xfe71; + 0xfe73, 0xfe73; 0xfe76, 0xfefc; 0xfe77, 0xfe77; 0xfe79, 0xfe79; 0xfe7b, 0xfe7b; + 0xfe7d, 0xfe7d; 0xfe7f, 0xfefc; 0xff66, 0xff6f; 0xff71, 0xff9d; 0xffa0, 0xffa0; + 0xffa0, 0xffbe; 0xffc2, 0xffc7; 0xffca, 0xffcf; 0xffd2, 0xffd7; 0xffda, 0xffdc; + 0x10000, 0x1000b; 0x1000d, 0x10026; 0x10028, 0x1003a; 0x1003c, 0x1003d; 0x1003f, 0x1004d; + 0x10050, 0x1005d; 0x10080, 0x100fa; 0x10280, 0x1029c; 0x102a0, 0x102d0; 0x10300, 0x1031f; + 0x1032d, 0x10340; 0x10342, 0x10349; 0x10350, 0x10375; 0x10380, 0x1039d; 0x103a0, 0x103c3; + 0x103c8, 0x103cf; 0x10450, 0x1049d; 0x10500, 0x10527; 0x10530, 0x10563; 0x10600, 0x10736; + 0x10740, 0x10755; 0x10760, 0x10767; 0x10800, 0x10805; 0x10808, 0x10808; 0x1080a, 0x10835; + 0x10837, 0x10838; 0x1083c, 0x1083c; 0x1083f, 0x10855; 0x10860, 0x10876; 0x10880, 0x1089e; + 0x108e0, 0x108f2; 0x108f4, 0x108f5; 0x10900, 0x10915; 0x10920, 0x10939; 0x10980, 0x109b7; + 0x109be, 0x109bf; 0x10a00, 0x10a00; 0x10a10, 0x10a13; 0x10a15, 0x10a17; 0x10a19, 0x10a35; + 0x10a60, 0x10a7c; 0x10a80, 0x10a9c; 0x10ac0, 0x10ac7; 0x10ac9, 0x10ae4; 0x10b00, 0x10b35; + 0x10b40, 0x10b55; 0x10b60, 0x10b72; 0x10b80, 0x10b91; 0x10c00, 0x10c48; 0x10d00, 0x10d23; + 0x10d22, 0x10d23; 0x10e80, 0x10ea9; 0x10eb0, 0x10eb1; 0x10f00, 0x10f1c; 0x10f27, 0x10f27; + 0x10f30, 0x10f45; 0x10f70, 0x10f81; 0x10fb0, 0x10fc4; 0x10fe0, 0x10ff6; 0x11003, 0x11037; + 0x11071, 0x11072; 0x11075, 0x11075; 0x11083, 0x110af; 0x110d0, 0x110e8; 0x11103, 0x11126; + 0x11144, 0x11144; 0x11147, 0x11147; 0x11150, 0x11172; 0x11176, 0x11176; 0x11183, 0x111b2; + 0x111c1, 0x111c4; 0x111da, 0x111da; 0x111dc, 0x111dc; 0x11200, 0x11211; 0x11213, 0x1122b; + 0x11280, 0x11286; 0x11288, 0x11288; 0x1128a, 0x1128d; 0x1128f, 0x1129d; 0x1129f, 0x112a8; + 0x112b0, 0x112de; 0x11305, 0x1130c; 0x1130f, 0x11310; 0x11313, 0x11328; 0x1132a, 0x11330; + 0x11332, 0x11333; 0x11335, 0x11339; 0x1133d, 0x1133d; 0x11350, 0x11350; 0x1135d, 0x1135d; + 0x1135d, 0x11361; 0x11400, 0x11434; 0x11447, 0x1144a; 0x1145f, 0x11461; 0x11480, 0x114af; + 0x114c4, 0x114c5; 0x114c7, 0x114c7; 0x11580, 0x115ae; 0x115d8, 0x115db; 0x11600, 0x1162f; + 0x11644, 0x11644; 0x11680, 0x116aa; 0x116b8, 0x116b8; 0x11700, 0x1171a; 0x11740, 0x11746; + 0x11800, 0x1182b; 0x118ff, 0x11906; 0x11909, 0x11909; 0x1190c, 0x11913; 0x11915, 0x11916; + 0x11918, 0x1192f; 0x1193f, 0x1193f; 0x11941, 0x11941; 0x119a0, 0x119a7; 0x119aa, 0x119d0; + 0x119e1, 0x119e1; 0x119e3, 0x119e3; 0x11a00, 0x11a00; 0x11a0b, 0x11a32; 0x11a3a, 0x11a3a; + 0x11a50, 0x11a50; 0x11a5c, 0x11a89; 0x11a9d, 0x11a9d; 0x11ab0, 0x11af8; 0x11c00, 0x11c08; + 0x11c0a, 0x11c2e; 0x11c40, 0x11c40; 0x11c72, 0x11c8f; 0x11d00, 0x11d06; 0x11d08, 0x11d09; + 0x11d0b, 0x11d30; 0x11d46, 0x11d46; 0x11d60, 0x11d65; 0x11d67, 0x11d68; 0x11d6a, 0x11d89; + 0x11d98, 0x11d98; 0x11ee0, 0x11ef2; 0x11fb0, 0x11fb0; 0x12000, 0x12399; 0x12480, 0x12543; + 0x12f90, 0x12ff0; 0x13000, 0x1342e; 0x14400, 0x14646; 0x16800, 0x16a38; 0x16a40, 0x16a5e; + 0x16a70, 0x16abe; 0x16ad0, 0x16aed; 0x16b00, 0x16b2f; 0x16b63, 0x16b77; 0x16b7d, 0x16b8f; + 0x16f00, 0x16f4a; 0x16f50, 0x16f50; 0x17000, 0x187f7; 0x18800, 0x18cd5; 0x18d00, 0x18d08; + 0x1b000, 0x1b122; 0x1b150, 0x1b152; 0x1b164, 0x1b167; 0x1b170, 0x1b2fb; 0x1bc00, 0x1bc6a; + 0x1bc70, 0x1bc7c; 0x1bc80, 0x1bc88; 0x1bc90, 0x1bc99; 0x1df0a, 0x1df0a; 0x1e100, 0x1e12c; + 0x1e14e, 0x1e14e; 0x1e290, 0x1e2ad; 0x1e2c0, 0x1e2eb; 0x1e7e0, 0x1e7e6; 0x1e7e8, 0x1e7eb; + 0x1e7ed, 0x1e7ee; 0x1e7f0, 0x1e7fe; 0x1e800, 0x1e8c4; 0x1ee00, 0x1ee03; 0x1ee05, 0x1ee1f; + 0x1ee21, 0x1ee22; 0x1ee24, 0x1ee24; 0x1ee27, 0x1ee27; 0x1ee29, 0x1ee32; 0x1ee34, 0x1ee37; + 0x1ee39, 0x1ee39; 0x1ee3b, 0x1ee3b; 0x1ee42, 0x1ee42; 0x1ee47, 0x1ee47; 0x1ee49, 0x1ee49; + 0x1ee4b, 0x1ee4b; 0x1ee4d, 0x1ee4f; 0x1ee51, 0x1ee52; 0x1ee54, 0x1ee54; 0x1ee57, 0x1ee57; + 0x1ee59, 0x1ee59; 0x1ee5b, 0x1ee5b; 0x1ee5d, 0x1ee5d; 0x1ee5f, 0x1ee5f; 0x1ee61, 0x1ee62; + 0x1ee64, 0x1ee64; 0x1ee67, 0x1ee6a; 0x1ee6c, 0x1ee72; 0x1ee74, 0x1ee77; 0x1ee79, 0x1ee7c; + 0x1ee7e, 0x1ee7e; 0x1ee80, 0x1ee89; 0x1ee8b, 0x1ee9b; 0x1eea1, 0x1eea3; 0x1eea5, 0x1eea9; + 0x1eeab, 0x1eebb; 0x20000, 0x2a6df; 0x2a700, 0x2b738; 0x2b740, 0x2b81d; 0x2b820, 0x2cea1; + 0x30000, 0x3134a; 0x2f800, 0x2fa1d; 0x2ceb0, 0x2ebe0] let lt = - [ - (0x1c5, 0x1c5); - (0x1c8, 0x1c8); - (0x1cb, 0x1cb); - (0x1f2, 0x1f2); - (0x1f88, 0x1f8f); - (0x1ffc, 0x1ffc); - (0x1fcc, 0x1fcc); - (0x1fbc, 0x1fbc); - (0x1fa8, 0x1faf); - (0x1f98, 0x1f9f); - ] + [0x1c5, 0x1c5; 0x1c8, 0x1c8; 0x1cb, 0x1cb; 0x1f2, 0x1f2; 0x1f88, 0x1f8f; + 0x1ffc, 0x1ffc; 0x1fcc, 0x1fcc; 0x1fbc, 0x1fbc; 0x1fa8, 0x1faf; 0x1f98, 0x1f9f] let lu = - [ - (0x41, 0x5a); - (0xc0, 0xd6); - (0xd8, 0xde); - (0x100, 0x100); - (0x102, 0x102); - (0x104, 0x104); - (0x106, 0x106); - (0x108, 0x108); - (0x10a, 0x10a); - (0x10c, 0x10c); - (0x10e, 0x10e); - (0x110, 0x110); - (0x112, 0x112); - (0x114, 0x114); - (0x116, 0x116); - (0x118, 0x118); - (0x11a, 0x11a); - (0x11c, 0x11c); - (0x11e, 0x11e); - (0x120, 0x120); - (0x122, 0x122); - (0x124, 0x124); - (0x126, 0x126); - (0x128, 0x128); - (0x12a, 0x12a); - (0x12c, 0x12c); - (0x12e, 0x12e); - (0x130, 0x130); - (0x132, 0x132); - (0x134, 0x134); - (0x136, 0x136); - (0x139, 0x139); - (0x13b, 0x13b); - (0x13d, 0x13d); - (0x13f, 0x13f); - (0x141, 0x141); - (0x143, 0x143); - (0x145, 0x145); - (0x147, 0x147); - (0x14a, 0x14a); - (0x14c, 0x14c); - (0x14e, 0x14e); - (0x150, 0x150); - (0x152, 0x152); - (0x154, 0x154); - (0x156, 0x156); - (0x158, 0x158); - (0x15a, 0x15a); - (0x15c, 0x15c); - (0x15e, 0x15e); - (0x160, 0x160); - (0x162, 0x162); - (0x164, 0x164); - (0x166, 0x166); - (0x168, 0x168); - (0x16a, 0x16a); - (0x16c, 0x16c); - (0x16e, 0x16e); - (0x170, 0x170); - (0x172, 0x172); - (0x174, 0x174); - (0x176, 0x176); - (0x178, 0x179); - (0x17b, 0x17b); - (0x17d, 0x17d); - (0x181, 0x182); - (0x184, 0x184); - (0x186, 0x187); - (0x189, 0x18b); - (0x18e, 0x191); - (0x193, 0x194); - (0x196, 0x198); - (0x19c, 0x19d); - (0x19f, 0x1a0); - (0x1a2, 0x1a2); - (0x1a4, 0x1a4); - (0x1a6, 0x1a7); - (0x1a9, 0x1a9); - (0x1ac, 0x1ac); - (0x1ae, 0x1af); - (0x1b1, 0x1b3); - (0x1b5, 0x1b5); - (0x1b7, 0x1b8); - (0x1bc, 0x1bc); - (0x1c4, 0x1c4); - (0x1c7, 0x1c7); - (0x1ca, 0x1ca); - (0x1cd, 0x1cd); - (0x1cf, 0x1cf); - (0x1d1, 0x1d1); - (0x1d3, 0x1d3); - (0x1d5, 0x1d5); - (0x1d7, 0x1d7); - (0x1d9, 0x1d9); - (0x1db, 0x1db); - (0x1de, 0x1de); - (0x1e0, 0x1e0); - (0x1e2, 0x1e2); - (0x1e4, 0x1e4); - (0x1e6, 0x1e6); - (0x1e8, 0x1e8); - (0x1ea, 0x1ea); - (0x1ec, 0x1ec); - (0x1ee, 0x1ee); - (0x1f1, 0x1f1); - (0x1f4, 0x1f4); - (0x1f6, 0x1f8); - (0x1fa, 0x1fa); - (0x1fc, 0x1fc); - (0x1fe, 0x1fe); - (0x200, 0x200); - (0x202, 0x202); - (0x204, 0x204); - (0x206, 0x206); - (0x208, 0x208); - (0x20a, 0x20a); - (0x20c, 0x20c); - (0x20e, 0x20e); - (0x210, 0x210); - (0x212, 0x212); - (0x214, 0x214); - (0x216, 0x216); - (0x218, 0x218); - (0x21a, 0x21a); - (0x21c, 0x21c); - (0x21e, 0x21e); - (0x220, 0x220); - (0x222, 0x222); - (0x224, 0x224); - (0x226, 0x226); - (0x228, 0x228); - (0x22a, 0x22a); - (0x22c, 0x22c); - (0x22e, 0x22e); - (0x230, 0x230); - (0x232, 0x232); - (0x23a, 0x23b); - (0x23d, 0x23e); - (0x241, 0x241); - (0x243, 0x246); - (0x248, 0x248); - (0x24a, 0x24a); - (0x24c, 0x24c); - (0x24e, 0x24e); - (0x370, 0x370); - (0x372, 0x372); - (0x376, 0x376); - (0x37f, 0x37f); - (0x386, 0x386); - (0x388, 0x38a); - (0x38c, 0x38c); - (0x38e, 0x38f); - (0x391, 0x3a1); - (0x3a3, 0x3ab); - (0x3cf, 0x3cf); - (0x3d2, 0x3d4); - (0x3d8, 0x3d8); - (0x3da, 0x3da); - (0x3dc, 0x3dc); - (0x3de, 0x3de); - (0x3e0, 0x3e0); - (0x3e2, 0x3e2); - (0x3e4, 0x3e4); - (0x3e6, 0x3e6); - (0x3e8, 0x3e8); - (0x3ea, 0x3ea); - (0x3ec, 0x3ec); - (0x3ee, 0x3ee); - (0x3f4, 0x3f4); - (0x3f7, 0x3f7); - (0x3f9, 0x3fa); - (0x3fd, 0x42f); - (0x460, 0x460); - (0x462, 0x462); - (0x464, 0x464); - (0x466, 0x466); - (0x468, 0x468); - (0x46a, 0x46a); - (0x46c, 0x46c); - (0x46e, 0x46e); - (0x470, 0x470); - (0x472, 0x472); - (0x474, 0x474); - (0x476, 0x476); - (0x478, 0x478); - (0x47a, 0x47a); - (0x47c, 0x47c); - (0x47e, 0x47e); - (0x480, 0x480); - (0x48a, 0x48a); - (0x48c, 0x48c); - (0x48e, 0x48e); - (0x490, 0x490); - (0x492, 0x492); - (0x494, 0x494); - (0x496, 0x496); - (0x498, 0x498); - (0x49a, 0x49a); - (0x49c, 0x49c); - (0x49e, 0x49e); - (0x4a0, 0x4a0); - (0x4a2, 0x4a2); - (0x4a4, 0x4a4); - (0x4a6, 0x4a6); - (0x4a8, 0x4a8); - (0x4aa, 0x4aa); - (0x4ac, 0x4ac); - (0x4ae, 0x4ae); - (0x4b0, 0x4b0); - (0x4b2, 0x4b2); - (0x4b4, 0x4b4); - (0x4b6, 0x4b6); - (0x4b8, 0x4b8); - (0x4ba, 0x4ba); - (0x4bc, 0x4bc); - (0x4be, 0x4be); - (0x4c0, 0x4c1); - (0x4c3, 0x4c3); - (0x4c5, 0x4c5); - (0x4c7, 0x4c7); - (0x4c9, 0x4c9); - (0x4cb, 0x4cb); - (0x4cd, 0x4cd); - (0x4d0, 0x4d0); - (0x4d2, 0x4d2); - (0x4d4, 0x4d4); - (0x4d6, 0x4d6); - (0x4d8, 0x4d8); - (0x4da, 0x4da); - (0x4dc, 0x4dc); - (0x4de, 0x4de); - (0x4e0, 0x4e0); - (0x4e2, 0x4e2); - (0x4e4, 0x4e4); - (0x4e6, 0x4e6); - (0x4e8, 0x4e8); - (0x4ea, 0x4ea); - (0x4ec, 0x4ec); - (0x4ee, 0x4ee); - (0x4f0, 0x4f0); - (0x4f2, 0x4f2); - (0x4f4, 0x4f4); - (0x4f6, 0x4f6); - (0x4f8, 0x4f8); - (0x4fa, 0x4fa); - (0x4fc, 0x4fc); - (0x4fe, 0x4fe); - (0x500, 0x500); - (0x502, 0x502); - (0x504, 0x504); - (0x506, 0x506); - (0x508, 0x508); - (0x50a, 0x50a); - (0x50c, 0x50c); - (0x50e, 0x50e); - (0x510, 0x510); - (0x512, 0x512); - (0x514, 0x514); - (0x516, 0x516); - (0x518, 0x518); - (0x51a, 0x51a); - (0x51c, 0x51c); - (0x51e, 0x51e); - (0x520, 0x520); - (0x522, 0x522); - (0x524, 0x524); - (0x526, 0x526); - (0x528, 0x528); - (0x52a, 0x52a); - (0x52c, 0x52c); - (0x52e, 0x52e); - (0x531, 0x556); - (0x10a0, 0x10c5); - (0x10c7, 0x10c7); - (0x10cd, 0x10cd); - (0x13a0, 0x13f5); - (0x1c90, 0x1cba); - (0x1cbd, 0x1cbf); - (0x1e00, 0x1e00); - (0x1e02, 0x1e02); - (0x1e04, 0x1e04); - (0x1e06, 0x1e06); - (0x1e08, 0x1e08); - (0x1e0a, 0x1e0a); - (0x1e0c, 0x1e0c); - (0x1e0e, 0x1e0e); - (0x1e10, 0x1e10); - (0x1e12, 0x1e12); - (0x1e14, 0x1e14); - (0x1e16, 0x1e16); - (0x1e18, 0x1e18); - (0x1e1a, 0x1e1a); - (0x1e1c, 0x1e1c); - (0x1e1e, 0x1e1e); - (0x1e20, 0x1e20); - (0x1e22, 0x1e22); - (0x1e24, 0x1e24); - (0x1e26, 0x1e26); - (0x1e28, 0x1e28); - (0x1e2a, 0x1e2a); - (0x1e2c, 0x1e2c); - (0x1e2e, 0x1e2e); - (0x1e30, 0x1e30); - (0x1e32, 0x1e32); - (0x1e34, 0x1e34); - (0x1e36, 0x1e36); - (0x1e38, 0x1e38); - (0x1e3a, 0x1e3a); - (0x1e3c, 0x1e3c); - (0x1e3e, 0x1e3e); - (0x1e40, 0x1e40); - (0x1e42, 0x1e42); - (0x1e44, 0x1e44); - (0x1e46, 0x1e46); - (0x1e48, 0x1e48); - (0x1e4a, 0x1e4a); - (0x1e4c, 0x1e4c); - (0x1e4e, 0x1e4e); - (0x1e50, 0x1e50); - (0x1e52, 0x1e52); - (0x1e54, 0x1e54); - (0x1e56, 0x1e56); - (0x1e58, 0x1e58); - (0x1e5a, 0x1e5a); - (0x1e5c, 0x1e5c); - (0x1e5e, 0x1e5e); - (0x1e60, 0x1e60); - (0x1e62, 0x1e62); - (0x1e64, 0x1e64); - (0x1e66, 0x1e66); - (0x1e68, 0x1e68); - (0x1e6a, 0x1e6a); - (0x1e6c, 0x1e6c); - (0x1e6e, 0x1e6e); - (0x1e70, 0x1e70); - (0x1e72, 0x1e72); - (0x1e74, 0x1e74); - (0x1e76, 0x1e76); - (0x1e78, 0x1e78); - (0x1e7a, 0x1e7a); - (0x1e7c, 0x1e7c); - (0x1e7e, 0x1e7e); - (0x1e80, 0x1e80); - (0x1e82, 0x1e82); - (0x1e84, 0x1e84); - (0x1e86, 0x1e86); - (0x1e88, 0x1e88); - (0x1e8a, 0x1e8a); - (0x1e8c, 0x1e8c); - (0x1e8e, 0x1e8e); - (0x1e90, 0x1e90); - (0x1e92, 0x1e92); - (0x1e94, 0x1e94); - (0x1e9e, 0x1e9e); - (0x1ea0, 0x1ea0); - (0x1ea2, 0x1ea2); - (0x1ea4, 0x1ea4); - (0x1ea6, 0x1ea6); - (0x1ea8, 0x1ea8); - (0x1eaa, 0x1eaa); - (0x1eac, 0x1eac); - (0x1eae, 0x1eae); - (0x1eb0, 0x1eb0); - (0x1eb2, 0x1eb2); - (0x1eb4, 0x1eb4); - (0x1eb6, 0x1eb6); - (0x1eb8, 0x1eb8); - (0x1eba, 0x1eba); - (0x1ebc, 0x1ebc); - (0x1ebe, 0x1ebe); - (0x1ec0, 0x1ec0); - (0x1ec2, 0x1ec2); - (0x1ec4, 0x1ec4); - (0x1ec6, 0x1ec6); - (0x1ec8, 0x1ec8); - (0x1eca, 0x1eca); - (0x1ecc, 0x1ecc); - (0x1ece, 0x1ece); - (0x1ed0, 0x1ed0); - (0x1ed2, 0x1ed2); - (0x1ed4, 0x1ed4); - (0x1ed6, 0x1ed6); - (0x1ed8, 0x1ed8); - (0x1eda, 0x1eda); - (0x1edc, 0x1edc); - (0x1ede, 0x1ede); - (0x1ee0, 0x1ee0); - (0x1ee2, 0x1ee2); - (0x1ee4, 0x1ee4); - (0x1ee6, 0x1ee6); - (0x1ee8, 0x1ee8); - (0x1eea, 0x1eea); - (0x1eec, 0x1eec); - (0x1eee, 0x1eee); - (0x1ef0, 0x1ef0); - (0x1ef2, 0x1ef2); - (0x1ef4, 0x1ef4); - (0x1ef6, 0x1ef6); - (0x1ef8, 0x1ef8); - (0x1efa, 0x1efa); - (0x1efc, 0x1efc); - (0x1efe, 0x1efe); - (0x1f08, 0x1f0f); - (0x1f18, 0x1f1d); - (0x1f28, 0x1f2f); - (0x1f38, 0x1f3f); - (0x1f48, 0x1f4d); - (0x1f59, 0x1f59); - (0x1f5b, 0x1f5b); - (0x1f5d, 0x1f5d); - (0x1f5f, 0x1f5f); - (0x1f68, 0x1f6f); - (0x1fb8, 0x1fbb); - (0x1fc8, 0x1fcb); - (0x1fd8, 0x1fdb); - (0x1fe8, 0x1fec); - (0x1ff8, 0x1ffb); - (0x2102, 0x2102); - (0x2107, 0x2107); - (0x210b, 0x210d); - (0x2110, 0x2112); - (0x2115, 0x2115); - (0x2119, 0x211d); - (0x2124, 0x2124); - (0x2126, 0x2126); - (0x2128, 0x2128); - (0x212a, 0x212d); - (0x2130, 0x2133); - (0x213e, 0x213f); - (0x2145, 0x2145); - (0x2183, 0x2183); - (0x2c00, 0x2c2f); - (0x2c60, 0x2c60); - (0x2c62, 0x2c64); - (0x2c67, 0x2c67); - (0x2c69, 0x2c69); - (0x2c6b, 0x2c6b); - (0x2c6d, 0x2c70); - (0x2c72, 0x2c72); - (0x2c75, 0x2c75); - (0x2c7e, 0x2c80); - (0x2c82, 0x2c82); - (0x2c84, 0x2c84); - (0x2c86, 0x2c86); - (0x2c88, 0x2c88); - (0x2c8a, 0x2c8a); - (0x2c8c, 0x2c8c); - (0x2c8e, 0x2c8e); - (0x2c90, 0x2c90); - (0x2c92, 0x2c92); - (0x2c94, 0x2c94); - (0x2c96, 0x2c96); - (0x2c98, 0x2c98); - (0x2c9a, 0x2c9a); - (0x2c9c, 0x2c9c); - (0x2c9e, 0x2c9e); - (0x2ca0, 0x2ca0); - (0x2ca2, 0x2ca2); - (0x2ca4, 0x2ca4); - (0x2ca6, 0x2ca6); - (0x2ca8, 0x2ca8); - (0x2caa, 0x2caa); - (0x2cac, 0x2cac); - (0x2cae, 0x2cae); - (0x2cb0, 0x2cb0); - (0x2cb2, 0x2cb2); - (0x2cb4, 0x2cb4); - (0x2cb6, 0x2cb6); - (0x2cb8, 0x2cb8); - (0x2cba, 0x2cba); - (0x2cbc, 0x2cbc); - (0x2cbe, 0x2cbe); - (0x2cc0, 0x2cc0); - (0x2cc2, 0x2cc2); - (0x2cc4, 0x2cc4); - (0x2cc6, 0x2cc6); - (0x2cc8, 0x2cc8); - (0x2cca, 0x2cca); - (0x2ccc, 0x2ccc); - (0x2cce, 0x2cce); - (0x2cd0, 0x2cd0); - (0x2cd2, 0x2cd2); - (0x2cd4, 0x2cd4); - (0x2cd6, 0x2cd6); - (0x2cd8, 0x2cd8); - (0x2cda, 0x2cda); - (0x2cdc, 0x2cdc); - (0x2cde, 0x2cde); - (0x2ce0, 0x2ce0); - (0x2ce2, 0x2ce2); - (0x2ceb, 0x2ceb); - (0x2ced, 0x2ced); - (0x2cf2, 0x2cf2); - (0xa640, 0xa640); - (0xa642, 0xa642); - (0xa644, 0xa644); - (0xa646, 0xa646); - (0xa648, 0xa648); - (0xa64a, 0xa64a); - (0xa64c, 0xa64c); - (0xa64e, 0xa64e); - (0xa650, 0xa650); - (0xa652, 0xa652); - (0xa654, 0xa654); - (0xa656, 0xa656); - (0xa658, 0xa658); - (0xa65a, 0xa65a); - (0xa65c, 0xa65c); - (0xa65e, 0xa65e); - (0xa660, 0xa660); - (0xa662, 0xa662); - (0xa664, 0xa664); - (0xa666, 0xa666); - (0xa668, 0xa668); - (0xa66a, 0xa66a); - (0xa66c, 0xa66c); - (0xa680, 0xa680); - (0xa682, 0xa682); - (0xa684, 0xa684); - (0xa686, 0xa686); - (0xa688, 0xa688); - (0xa68a, 0xa68a); - (0xa68c, 0xa68c); - (0xa68e, 0xa68e); - (0xa690, 0xa690); - (0xa692, 0xa692); - (0xa694, 0xa694); - (0xa696, 0xa696); - (0xa698, 0xa698); - (0xa69a, 0xa69a); - (0xa722, 0xa722); - (0xa724, 0xa724); - (0xa726, 0xa726); - (0xa728, 0xa728); - (0xa72a, 0xa72a); - (0xa72c, 0xa72c); - (0xa72e, 0xa72e); - (0xa732, 0xa732); - (0xa734, 0xa734); - (0xa736, 0xa736); - (0xa738, 0xa738); - (0xa73a, 0xa73a); - (0xa73c, 0xa73c); - (0xa73e, 0xa73e); - (0xa740, 0xa740); - (0xa742, 0xa742); - (0xa744, 0xa744); - (0xa746, 0xa746); - (0xa748, 0xa748); - (0xa74a, 0xa74a); - (0xa74c, 0xa74c); - (0xa74e, 0xa74e); - (0xa750, 0xa750); - (0xa752, 0xa752); - (0xa754, 0xa754); - (0xa756, 0xa756); - (0xa758, 0xa758); - (0xa75a, 0xa75a); - (0xa75c, 0xa75c); - (0xa75e, 0xa75e); - (0xa760, 0xa760); - (0xa762, 0xa762); - (0xa764, 0xa764); - (0xa766, 0xa766); - (0xa768, 0xa768); - (0xa76a, 0xa76a); - (0xa76c, 0xa76c); - (0xa76e, 0xa76e); - (0xa779, 0xa779); - (0xa77b, 0xa77b); - (0xa77d, 0xa77e); - (0xa780, 0xa780); - (0xa782, 0xa782); - (0xa784, 0xa784); - (0xa786, 0xa786); - (0xa78b, 0xa78b); - (0xa78d, 0xa78d); - (0xa790, 0xa790); - (0xa792, 0xa792); - (0xa796, 0xa796); - (0xa798, 0xa798); - (0xa79a, 0xa79a); - (0xa79c, 0xa79c); - (0xa79e, 0xa79e); - (0xa7a0, 0xa7a0); - (0xa7a2, 0xa7a2); - (0xa7a4, 0xa7a4); - (0xa7a6, 0xa7a6); - (0xa7a8, 0xa7a8); - (0xa7aa, 0xa7ae); - (0xa7b0, 0xa7b4); - (0xa7b6, 0xa7b6); - (0xa7b8, 0xa7b8); - (0xa7ba, 0xa7ba); - (0xa7bc, 0xa7bc); - (0xa7be, 0xa7be); - (0xa7c0, 0xa7c0); - (0xa7c2, 0xa7c2); - (0xa7c4, 0xa7c7); - (0xa7c9, 0xa7c9); - (0xa7d0, 0xa7d0); - (0xa7d6, 0xa7d6); - (0xa7d8, 0xa7d8); - (0xa7f5, 0xa7f5); - (0xff21, 0xff3a); - (0x10400, 0x10427); - (0x104b0, 0x104d3); - (0x10570, 0x1057a); - (0x1057c, 0x1058a); - (0x1058c, 0x10592); - (0x10594, 0x10595); - (0x10c80, 0x10cb2); - (0x118a0, 0x118bf); - (0x16e40, 0x16e5f); - (0x1d400, 0x1d419); - (0x1d434, 0x1d44d); - (0x1d468, 0x1d481); - (0x1d49c, 0x1d49c); - (0x1d49e, 0x1d49f); - (0x1d4a2, 0x1d4a2); - (0x1d4a5, 0x1d4a6); - (0x1d4a9, 0x1d4ac); - (0x1d4ae, 0x1d4b5); - (0x1d4d0, 0x1d4e9); - (0x1d504, 0x1d505); - (0x1d507, 0x1d50a); - (0x1d50d, 0x1d514); - (0x1d516, 0x1d51c); - (0x1d538, 0x1d539); - (0x1d53b, 0x1d53e); - (0x1d540, 0x1d544); - (0x1d546, 0x1d546); - (0x1d54a, 0x1d550); - (0x1d56c, 0x1d585); - (0x1d5a0, 0x1d5b9); - (0x1d5d4, 0x1d5ed); - (0x1d608, 0x1d621); - (0x1d63c, 0x1d655); - (0x1d670, 0x1d689); - (0x1d6a8, 0x1d6c0); - (0x1d6e2, 0x1d6fa); - (0x1d71c, 0x1d734); - (0x1d756, 0x1d76e); - (0x1d790, 0x1d7a8); - (0x1d7ca, 0x1d7ca); - (0x1e900, 0x1e921); - ] + [0x41, 0x5a; 0xc0, 0xd6; 0xd8, 0xde; 0x100, 0x100; 0x102, 0x102; + 0x104, 0x104; 0x106, 0x106; 0x108, 0x108; 0x10a, 0x10a; 0x10c, 0x10c; + 0x10e, 0x10e; 0x110, 0x110; 0x112, 0x112; 0x114, 0x114; 0x116, 0x116; + 0x118, 0x118; 0x11a, 0x11a; 0x11c, 0x11c; 0x11e, 0x11e; 0x120, 0x120; + 0x122, 0x122; 0x124, 0x124; 0x126, 0x126; 0x128, 0x128; 0x12a, 0x12a; + 0x12c, 0x12c; 0x12e, 0x12e; 0x130, 0x130; 0x132, 0x132; 0x134, 0x134; + 0x136, 0x136; 0x139, 0x139; 0x13b, 0x13b; 0x13d, 0x13d; 0x13f, 0x13f; + 0x141, 0x141; 0x143, 0x143; 0x145, 0x145; 0x147, 0x147; 0x14a, 0x14a; + 0x14c, 0x14c; 0x14e, 0x14e; 0x150, 0x150; 0x152, 0x152; 0x154, 0x154; + 0x156, 0x156; 0x158, 0x158; 0x15a, 0x15a; 0x15c, 0x15c; 0x15e, 0x15e; + 0x160, 0x160; 0x162, 0x162; 0x164, 0x164; 0x166, 0x166; 0x168, 0x168; + 0x16a, 0x16a; 0x16c, 0x16c; 0x16e, 0x16e; 0x170, 0x170; 0x172, 0x172; + 0x174, 0x174; 0x176, 0x176; 0x178, 0x179; 0x17b, 0x17b; 0x17d, 0x17d; + 0x181, 0x182; 0x184, 0x184; 0x186, 0x187; 0x189, 0x18b; 0x18e, 0x191; + 0x193, 0x194; 0x196, 0x198; 0x19c, 0x19d; 0x19f, 0x1a0; 0x1a2, 0x1a2; + 0x1a4, 0x1a4; 0x1a6, 0x1a7; 0x1a9, 0x1a9; 0x1ac, 0x1ac; 0x1ae, 0x1af; + 0x1b1, 0x1b3; 0x1b5, 0x1b5; 0x1b7, 0x1b8; 0x1bc, 0x1bc; 0x1c4, 0x1c4; + 0x1c7, 0x1c7; 0x1ca, 0x1ca; 0x1cd, 0x1cd; 0x1cf, 0x1cf; 0x1d1, 0x1d1; + 0x1d3, 0x1d3; 0x1d5, 0x1d5; 0x1d7, 0x1d7; 0x1d9, 0x1d9; 0x1db, 0x1db; + 0x1de, 0x1de; 0x1e0, 0x1e0; 0x1e2, 0x1e2; 0x1e4, 0x1e4; 0x1e6, 0x1e6; + 0x1e8, 0x1e8; 0x1ea, 0x1ea; 0x1ec, 0x1ec; 0x1ee, 0x1ee; 0x1f1, 0x1f1; + 0x1f4, 0x1f4; 0x1f6, 0x1f8; 0x1fa, 0x1fa; 0x1fc, 0x1fc; 0x1fe, 0x1fe; + 0x200, 0x200; 0x202, 0x202; 0x204, 0x204; 0x206, 0x206; 0x208, 0x208; + 0x20a, 0x20a; 0x20c, 0x20c; 0x20e, 0x20e; 0x210, 0x210; 0x212, 0x212; + 0x214, 0x214; 0x216, 0x216; 0x218, 0x218; 0x21a, 0x21a; 0x21c, 0x21c; + 0x21e, 0x21e; 0x220, 0x220; 0x222, 0x222; 0x224, 0x224; 0x226, 0x226; + 0x228, 0x228; 0x22a, 0x22a; 0x22c, 0x22c; 0x22e, 0x22e; 0x230, 0x230; + 0x232, 0x232; 0x23a, 0x23b; 0x23d, 0x23e; 0x241, 0x241; 0x243, 0x246; + 0x248, 0x248; 0x24a, 0x24a; 0x24c, 0x24c; 0x24e, 0x24e; 0x370, 0x370; + 0x372, 0x372; 0x376, 0x376; 0x37f, 0x37f; 0x386, 0x386; 0x388, 0x38a; + 0x38c, 0x38c; 0x38e, 0x38f; 0x391, 0x3a1; 0x3a3, 0x3ab; 0x3cf, 0x3cf; + 0x3d2, 0x3d4; 0x3d8, 0x3d8; 0x3da, 0x3da; 0x3dc, 0x3dc; 0x3de, 0x3de; + 0x3e0, 0x3e0; 0x3e2, 0x3e2; 0x3e4, 0x3e4; 0x3e6, 0x3e6; 0x3e8, 0x3e8; + 0x3ea, 0x3ea; 0x3ec, 0x3ec; 0x3ee, 0x3ee; 0x3f4, 0x3f4; 0x3f7, 0x3f7; + 0x3f9, 0x3fa; 0x3fd, 0x42f; 0x460, 0x460; 0x462, 0x462; 0x464, 0x464; + 0x466, 0x466; 0x468, 0x468; 0x46a, 0x46a; 0x46c, 0x46c; 0x46e, 0x46e; + 0x470, 0x470; 0x472, 0x472; 0x474, 0x474; 0x476, 0x476; 0x478, 0x478; + 0x47a, 0x47a; 0x47c, 0x47c; 0x47e, 0x47e; 0x480, 0x480; 0x48a, 0x48a; + 0x48c, 0x48c; 0x48e, 0x48e; 0x490, 0x490; 0x492, 0x492; 0x494, 0x494; + 0x496, 0x496; 0x498, 0x498; 0x49a, 0x49a; 0x49c, 0x49c; 0x49e, 0x49e; + 0x4a0, 0x4a0; 0x4a2, 0x4a2; 0x4a4, 0x4a4; 0x4a6, 0x4a6; 0x4a8, 0x4a8; + 0x4aa, 0x4aa; 0x4ac, 0x4ac; 0x4ae, 0x4ae; 0x4b0, 0x4b0; 0x4b2, 0x4b2; + 0x4b4, 0x4b4; 0x4b6, 0x4b6; 0x4b8, 0x4b8; 0x4ba, 0x4ba; 0x4bc, 0x4bc; + 0x4be, 0x4be; 0x4c0, 0x4c1; 0x4c3, 0x4c3; 0x4c5, 0x4c5; 0x4c7, 0x4c7; + 0x4c9, 0x4c9; 0x4cb, 0x4cb; 0x4cd, 0x4cd; 0x4d0, 0x4d0; 0x4d2, 0x4d2; + 0x4d4, 0x4d4; 0x4d6, 0x4d6; 0x4d8, 0x4d8; 0x4da, 0x4da; 0x4dc, 0x4dc; + 0x4de, 0x4de; 0x4e0, 0x4e0; 0x4e2, 0x4e2; 0x4e4, 0x4e4; 0x4e6, 0x4e6; + 0x4e8, 0x4e8; 0x4ea, 0x4ea; 0x4ec, 0x4ec; 0x4ee, 0x4ee; 0x4f0, 0x4f0; + 0x4f2, 0x4f2; 0x4f4, 0x4f4; 0x4f6, 0x4f6; 0x4f8, 0x4f8; 0x4fa, 0x4fa; + 0x4fc, 0x4fc; 0x4fe, 0x4fe; 0x500, 0x500; 0x502, 0x502; 0x504, 0x504; + 0x506, 0x506; 0x508, 0x508; 0x50a, 0x50a; 0x50c, 0x50c; 0x50e, 0x50e; + 0x510, 0x510; 0x512, 0x512; 0x514, 0x514; 0x516, 0x516; 0x518, 0x518; + 0x51a, 0x51a; 0x51c, 0x51c; 0x51e, 0x51e; 0x520, 0x520; 0x522, 0x522; + 0x524, 0x524; 0x526, 0x526; 0x528, 0x528; 0x52a, 0x52a; 0x52c, 0x52c; + 0x52e, 0x52e; 0x531, 0x556; 0x10a0, 0x10c5; 0x10c7, 0x10c7; 0x10cd, 0x10cd; + 0x13a0, 0x13f5; 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 0x1e00, 0x1e00; 0x1e02, 0x1e02; + 0x1e04, 0x1e04; 0x1e06, 0x1e06; 0x1e08, 0x1e08; 0x1e0a, 0x1e0a; 0x1e0c, 0x1e0c; + 0x1e0e, 0x1e0e; 0x1e10, 0x1e10; 0x1e12, 0x1e12; 0x1e14, 0x1e14; 0x1e16, 0x1e16; + 0x1e18, 0x1e18; 0x1e1a, 0x1e1a; 0x1e1c, 0x1e1c; 0x1e1e, 0x1e1e; 0x1e20, 0x1e20; + 0x1e22, 0x1e22; 0x1e24, 0x1e24; 0x1e26, 0x1e26; 0x1e28, 0x1e28; 0x1e2a, 0x1e2a; + 0x1e2c, 0x1e2c; 0x1e2e, 0x1e2e; 0x1e30, 0x1e30; 0x1e32, 0x1e32; 0x1e34, 0x1e34; + 0x1e36, 0x1e36; 0x1e38, 0x1e38; 0x1e3a, 0x1e3a; 0x1e3c, 0x1e3c; 0x1e3e, 0x1e3e; + 0x1e40, 0x1e40; 0x1e42, 0x1e42; 0x1e44, 0x1e44; 0x1e46, 0x1e46; 0x1e48, 0x1e48; + 0x1e4a, 0x1e4a; 0x1e4c, 0x1e4c; 0x1e4e, 0x1e4e; 0x1e50, 0x1e50; 0x1e52, 0x1e52; + 0x1e54, 0x1e54; 0x1e56, 0x1e56; 0x1e58, 0x1e58; 0x1e5a, 0x1e5a; 0x1e5c, 0x1e5c; + 0x1e5e, 0x1e5e; 0x1e60, 0x1e60; 0x1e62, 0x1e62; 0x1e64, 0x1e64; 0x1e66, 0x1e66; + 0x1e68, 0x1e68; 0x1e6a, 0x1e6a; 0x1e6c, 0x1e6c; 0x1e6e, 0x1e6e; 0x1e70, 0x1e70; + 0x1e72, 0x1e72; 0x1e74, 0x1e74; 0x1e76, 0x1e76; 0x1e78, 0x1e78; 0x1e7a, 0x1e7a; + 0x1e7c, 0x1e7c; 0x1e7e, 0x1e7e; 0x1e80, 0x1e80; 0x1e82, 0x1e82; 0x1e84, 0x1e84; + 0x1e86, 0x1e86; 0x1e88, 0x1e88; 0x1e8a, 0x1e8a; 0x1e8c, 0x1e8c; 0x1e8e, 0x1e8e; + 0x1e90, 0x1e90; 0x1e92, 0x1e92; 0x1e94, 0x1e94; 0x1e9e, 0x1e9e; 0x1ea0, 0x1ea0; + 0x1ea2, 0x1ea2; 0x1ea4, 0x1ea4; 0x1ea6, 0x1ea6; 0x1ea8, 0x1ea8; 0x1eaa, 0x1eaa; + 0x1eac, 0x1eac; 0x1eae, 0x1eae; 0x1eb0, 0x1eb0; 0x1eb2, 0x1eb2; 0x1eb4, 0x1eb4; + 0x1eb6, 0x1eb6; 0x1eb8, 0x1eb8; 0x1eba, 0x1eba; 0x1ebc, 0x1ebc; 0x1ebe, 0x1ebe; + 0x1ec0, 0x1ec0; 0x1ec2, 0x1ec2; 0x1ec4, 0x1ec4; 0x1ec6, 0x1ec6; 0x1ec8, 0x1ec8; + 0x1eca, 0x1eca; 0x1ecc, 0x1ecc; 0x1ece, 0x1ece; 0x1ed0, 0x1ed0; 0x1ed2, 0x1ed2; + 0x1ed4, 0x1ed4; 0x1ed6, 0x1ed6; 0x1ed8, 0x1ed8; 0x1eda, 0x1eda; 0x1edc, 0x1edc; + 0x1ede, 0x1ede; 0x1ee0, 0x1ee0; 0x1ee2, 0x1ee2; 0x1ee4, 0x1ee4; 0x1ee6, 0x1ee6; + 0x1ee8, 0x1ee8; 0x1eea, 0x1eea; 0x1eec, 0x1eec; 0x1eee, 0x1eee; 0x1ef0, 0x1ef0; + 0x1ef2, 0x1ef2; 0x1ef4, 0x1ef4; 0x1ef6, 0x1ef6; 0x1ef8, 0x1ef8; 0x1efa, 0x1efa; + 0x1efc, 0x1efc; 0x1efe, 0x1efe; 0x1f08, 0x1f0f; 0x1f18, 0x1f1d; 0x1f28, 0x1f2f; + 0x1f38, 0x1f3f; 0x1f48, 0x1f4d; 0x1f59, 0x1f59; 0x1f5b, 0x1f5b; 0x1f5d, 0x1f5d; + 0x1f5f, 0x1f5f; 0x1f68, 0x1f6f; 0x1fb8, 0x1fbb; 0x1fc8, 0x1fcb; 0x1fd8, 0x1fdb; + 0x1fe8, 0x1fec; 0x1ff8, 0x1ffb; 0x2102, 0x2102; 0x2107, 0x2107; 0x210b, 0x210d; + 0x2110, 0x2112; 0x2115, 0x2115; 0x2119, 0x211d; 0x2124, 0x2124; 0x2126, 0x2126; + 0x2128, 0x2128; 0x212a, 0x212d; 0x2130, 0x2133; 0x213e, 0x213f; 0x2145, 0x2145; + 0x2183, 0x2183; 0x2c00, 0x2c2f; 0x2c60, 0x2c60; 0x2c62, 0x2c64; 0x2c67, 0x2c67; + 0x2c69, 0x2c69; 0x2c6b, 0x2c6b; 0x2c6d, 0x2c70; 0x2c72, 0x2c72; 0x2c75, 0x2c75; + 0x2c7e, 0x2c80; 0x2c82, 0x2c82; 0x2c84, 0x2c84; 0x2c86, 0x2c86; 0x2c88, 0x2c88; + 0x2c8a, 0x2c8a; 0x2c8c, 0x2c8c; 0x2c8e, 0x2c8e; 0x2c90, 0x2c90; 0x2c92, 0x2c92; + 0x2c94, 0x2c94; 0x2c96, 0x2c96; 0x2c98, 0x2c98; 0x2c9a, 0x2c9a; 0x2c9c, 0x2c9c; + 0x2c9e, 0x2c9e; 0x2ca0, 0x2ca0; 0x2ca2, 0x2ca2; 0x2ca4, 0x2ca4; 0x2ca6, 0x2ca6; + 0x2ca8, 0x2ca8; 0x2caa, 0x2caa; 0x2cac, 0x2cac; 0x2cae, 0x2cae; 0x2cb0, 0x2cb0; + 0x2cb2, 0x2cb2; 0x2cb4, 0x2cb4; 0x2cb6, 0x2cb6; 0x2cb8, 0x2cb8; 0x2cba, 0x2cba; + 0x2cbc, 0x2cbc; 0x2cbe, 0x2cbe; 0x2cc0, 0x2cc0; 0x2cc2, 0x2cc2; 0x2cc4, 0x2cc4; + 0x2cc6, 0x2cc6; 0x2cc8, 0x2cc8; 0x2cca, 0x2cca; 0x2ccc, 0x2ccc; 0x2cce, 0x2cce; + 0x2cd0, 0x2cd0; 0x2cd2, 0x2cd2; 0x2cd4, 0x2cd4; 0x2cd6, 0x2cd6; 0x2cd8, 0x2cd8; + 0x2cda, 0x2cda; 0x2cdc, 0x2cdc; 0x2cde, 0x2cde; 0x2ce0, 0x2ce0; 0x2ce2, 0x2ce2; + 0x2ceb, 0x2ceb; 0x2ced, 0x2ced; 0x2cf2, 0x2cf2; 0xa640, 0xa640; 0xa642, 0xa642; + 0xa644, 0xa644; 0xa646, 0xa646; 0xa648, 0xa648; 0xa64a, 0xa64a; 0xa64c, 0xa64c; + 0xa64e, 0xa64e; 0xa650, 0xa650; 0xa652, 0xa652; 0xa654, 0xa654; 0xa656, 0xa656; + 0xa658, 0xa658; 0xa65a, 0xa65a; 0xa65c, 0xa65c; 0xa65e, 0xa65e; 0xa660, 0xa660; + 0xa662, 0xa662; 0xa664, 0xa664; 0xa666, 0xa666; 0xa668, 0xa668; 0xa66a, 0xa66a; + 0xa66c, 0xa66c; 0xa680, 0xa680; 0xa682, 0xa682; 0xa684, 0xa684; 0xa686, 0xa686; + 0xa688, 0xa688; 0xa68a, 0xa68a; 0xa68c, 0xa68c; 0xa68e, 0xa68e; 0xa690, 0xa690; + 0xa692, 0xa692; 0xa694, 0xa694; 0xa696, 0xa696; 0xa698, 0xa698; 0xa69a, 0xa69a; + 0xa722, 0xa722; 0xa724, 0xa724; 0xa726, 0xa726; 0xa728, 0xa728; 0xa72a, 0xa72a; + 0xa72c, 0xa72c; 0xa72e, 0xa72e; 0xa732, 0xa732; 0xa734, 0xa734; 0xa736, 0xa736; + 0xa738, 0xa738; 0xa73a, 0xa73a; 0xa73c, 0xa73c; 0xa73e, 0xa73e; 0xa740, 0xa740; + 0xa742, 0xa742; 0xa744, 0xa744; 0xa746, 0xa746; 0xa748, 0xa748; 0xa74a, 0xa74a; + 0xa74c, 0xa74c; 0xa74e, 0xa74e; 0xa750, 0xa750; 0xa752, 0xa752; 0xa754, 0xa754; + 0xa756, 0xa756; 0xa758, 0xa758; 0xa75a, 0xa75a; 0xa75c, 0xa75c; 0xa75e, 0xa75e; + 0xa760, 0xa760; 0xa762, 0xa762; 0xa764, 0xa764; 0xa766, 0xa766; 0xa768, 0xa768; + 0xa76a, 0xa76a; 0xa76c, 0xa76c; 0xa76e, 0xa76e; 0xa779, 0xa779; 0xa77b, 0xa77b; + 0xa77d, 0xa77e; 0xa780, 0xa780; 0xa782, 0xa782; 0xa784, 0xa784; 0xa786, 0xa786; + 0xa78b, 0xa78b; 0xa78d, 0xa78d; 0xa790, 0xa790; 0xa792, 0xa792; 0xa796, 0xa796; + 0xa798, 0xa798; 0xa79a, 0xa79a; 0xa79c, 0xa79c; 0xa79e, 0xa79e; 0xa7a0, 0xa7a0; + 0xa7a2, 0xa7a2; 0xa7a4, 0xa7a4; 0xa7a6, 0xa7a6; 0xa7a8, 0xa7a8; 0xa7aa, 0xa7ae; + 0xa7b0, 0xa7b4; 0xa7b6, 0xa7b6; 0xa7b8, 0xa7b8; 0xa7ba, 0xa7ba; 0xa7bc, 0xa7bc; + 0xa7be, 0xa7be; 0xa7c0, 0xa7c0; 0xa7c2, 0xa7c2; 0xa7c4, 0xa7c7; 0xa7c9, 0xa7c9; + 0xa7d0, 0xa7d0; 0xa7d6, 0xa7d6; 0xa7d8, 0xa7d8; 0xa7f5, 0xa7f5; 0xff21, 0xff3a; + 0x10400, 0x10427; 0x104b0, 0x104d3; 0x10570, 0x1057a; 0x1057c, 0x1058a; 0x1058c, 0x10592; + 0x10594, 0x10595; 0x10c80, 0x10cb2; 0x118a0, 0x118bf; 0x16e40, 0x16e5f; 0x1d400, 0x1d419; + 0x1d434, 0x1d44d; 0x1d468, 0x1d481; 0x1d49c, 0x1d49c; 0x1d49e, 0x1d49f; 0x1d4a2, 0x1d4a2; + 0x1d4a5, 0x1d4a6; 0x1d4a9, 0x1d4ac; 0x1d4ae, 0x1d4b5; 0x1d4d0, 0x1d4e9; 0x1d504, 0x1d505; + 0x1d507, 0x1d50a; 0x1d50d, 0x1d514; 0x1d516, 0x1d51c; 0x1d538, 0x1d539; 0x1d53b, 0x1d53e; + 0x1d540, 0x1d544; 0x1d546, 0x1d546; 0x1d54a, 0x1d550; 0x1d56c, 0x1d585; 0x1d5a0, 0x1d5b9; + 0x1d5d4, 0x1d5ed; 0x1d608, 0x1d621; 0x1d63c, 0x1d655; 0x1d670, 0x1d689; 0x1d6a8, 0x1d6c0; + 0x1d6e2, 0x1d6fa; 0x1d71c, 0x1d734; 0x1d756, 0x1d76e; 0x1d790, 0x1d7a8; 0x1d7ca, 0x1d7ca; + 0x1e900, 0x1e921] let mc = - [ - (0x903, 0x903); - (0x93b, 0x93b); - (0x93e, 0x940); - (0x949, 0x94c); - (0x94e, 0x94f); - (0x982, 0x983); - (0x9be, 0x9be); - (0x9be, 0x9c0); - (0x9bf, 0x9c0); - (0x9c7, 0x9c8); - (0x9cb, 0x9cc); - (0x9d7, 0x9d7); - (0xa03, 0xa03); - (0xa3e, 0xa40); - (0xa83, 0xa83); - (0xabe, 0xac0); - (0xac9, 0xac9); - (0xacb, 0xacc); - (0xb02, 0xb03); - (0xb3e, 0xb3e); - (0xb40, 0xb40); - (0xb47, 0xb48); - (0xb4b, 0xb4c); - (0xb57, 0xb57); - (0xbbe, 0xbbe); - (0xbbe, 0xbbf); - (0xbbf, 0xbbf); - (0xbc1, 0xbc2); - (0xbc6, 0xbc8); - (0xbca, 0xbcc); - (0xbd7, 0xbd7); - (0xc01, 0xc03); - (0xc41, 0xc44); - (0xc82, 0xc83); - (0xcbe, 0xcbe); - (0xcc0, 0xcc1); - (0xcc0, 0xcc4); - (0xcc2, 0xcc2); - (0xcc3, 0xcc4); - (0xcc7, 0xcc8); - (0xcca, 0xccb); - (0xcd5, 0xcd6); - (0xd02, 0xd03); - (0xd3e, 0xd3e); - (0xd3e, 0xd40); - (0xd3f, 0xd40); - (0xd46, 0xd48); - (0xd4a, 0xd4c); - (0xd57, 0xd57); - (0xd82, 0xd83); - (0xdcf, 0xdcf); - (0xdcf, 0xdd1); - (0xdd0, 0xdd1); - (0xdd8, 0xdde); - (0xdd8, 0xddf); - (0xddf, 0xddf); - (0xdf2, 0xdf3); - (0xf3e, 0xf3f); - (0xf7f, 0xf7f); - (0x102b, 0x102c); - (0x1031, 0x1031); - (0x1038, 0x1038); - (0x103b, 0x103c); - (0x1056, 0x1057); - (0x1062, 0x1064); - (0x1063, 0x1064); - (0x1067, 0x106d); - (0x1069, 0x106d); - (0x1083, 0x1084); - (0x1087, 0x108c); - (0x108f, 0x108f); - (0x109a, 0x109b); - (0x109a, 0x109c); - (0x1715, 0x1715); - (0x1734, 0x1734); - (0x17b6, 0x17b6); - (0x17be, 0x17c5); - (0x17c7, 0x17c8); - (0x1923, 0x1926); - (0x1929, 0x192b); - (0x1930, 0x1931); - (0x1933, 0x1938); - (0x1a19, 0x1a1a); - (0x1a55, 0x1a55); - (0x1a57, 0x1a57); - (0x1a61, 0x1a61); - (0x1a63, 0x1a64); - (0x1a6d, 0x1a72); - (0x1b04, 0x1b04); - (0x1b35, 0x1b35); - (0x1b3b, 0x1b3b); - (0x1b3d, 0x1b41); - (0x1b43, 0x1b43); - (0x1b43, 0x1b44); - (0x1b44, 0x1b44); - (0x1b82, 0x1b82); - (0x1ba1, 0x1ba1); - (0x1ba6, 0x1ba7); - (0x1baa, 0x1baa); - (0x1be7, 0x1be7); - (0x1bea, 0x1bec); - (0x1bee, 0x1bee); - (0x1bf2, 0x1bf3); - (0x1c24, 0x1c2b); - (0x1c34, 0x1c35); - (0x1ce1, 0x1ce1); - (0x1cf7, 0x1cf7); - (0x302e, 0x302f); - (0xa823, 0xa824); - (0xa827, 0xa827); - (0xa880, 0xa881); - (0xa8b4, 0xa8c3); - (0xa952, 0xa952); - (0xa952, 0xa953); - (0xa953, 0xa953); - (0xa983, 0xa983); - (0xa9b4, 0xa9b5); - (0xa9ba, 0xa9bb); - (0xa9be, 0xa9bf); - (0xa9be, 0xa9c0); - (0xa9c0, 0xa9c0); - (0xaa2f, 0xaa30); - (0xaa33, 0xaa34); - (0xaa4d, 0xaa4d); - (0xaa7b, 0xaa7b); - (0xaa7d, 0xaa7d); - (0xaaeb, 0xaaeb); - (0xaaee, 0xaaef); - (0xaaf5, 0xaaf5); - (0xabe3, 0xabe4); - (0xabe6, 0xabe7); - (0xabe9, 0xabea); - (0xabec, 0xabec); - (0x11000, 0x11000); - (0x11002, 0x11002); - (0x11082, 0x11082); - (0x110b0, 0x110b2); - (0x110b7, 0x110b8); - (0x1112c, 0x1112c); - (0x11145, 0x11146); - (0x11182, 0x11182); - (0x111b3, 0x111b5); - (0x111bf, 0x111bf); - (0x111bf, 0x111c0); - (0x111c0, 0x111c0); - (0x111ce, 0x111ce); - (0x1122c, 0x1122e); - (0x11232, 0x11233); - (0x11235, 0x11235); - (0x112e0, 0x112e2); - (0x11302, 0x11303); - (0x1133e, 0x1133e); - (0x1133e, 0x1133f); - (0x1133f, 0x1133f); - (0x11341, 0x11344); - (0x11347, 0x11348); - (0x1134b, 0x1134c); - (0x1134b, 0x1134d); - (0x1134d, 0x1134d); - (0x11357, 0x11357); - (0x11362, 0x11363); - (0x11435, 0x11437); - (0x11440, 0x11441); - (0x11445, 0x11445); - (0x114b0, 0x114b0); - (0x114b0, 0x114b2); - (0x114b1, 0x114b2); - (0x114b9, 0x114b9); - (0x114bb, 0x114bc); - (0x114bb, 0x114be); - (0x114bd, 0x114bd); - (0x114be, 0x114be); - (0x114c1, 0x114c1); - (0x115af, 0x115af); - (0x115af, 0x115b1); - (0x115b0, 0x115b1); - (0x115b8, 0x115bb); - (0x115be, 0x115be); - (0x11630, 0x11632); - (0x1163b, 0x1163c); - (0x1163e, 0x1163e); - (0x116ac, 0x116ac); - (0x116ae, 0x116af); - (0x116b6, 0x116b6); - (0x11720, 0x11721); - (0x11726, 0x11726); - (0x1182c, 0x1182e); - (0x11838, 0x11838); - (0x11930, 0x11930); - (0x11930, 0x11935); - (0x11931, 0x11935); - (0x11937, 0x11938); - (0x1193d, 0x1193d); - (0x11940, 0x11940); - (0x11942, 0x11942); - (0x119d1, 0x119d3); - (0x119dc, 0x119df); - (0x119e4, 0x119e4); - (0x11a39, 0x11a39); - (0x11a57, 0x11a58); - (0x11a97, 0x11a97); - (0x11c2f, 0x11c2f); - (0x11c3e, 0x11c3e); - (0x11ca9, 0x11ca9); - (0x11cb1, 0x11cb1); - (0x11cb4, 0x11cb4); - (0x11d8a, 0x11d8e); - (0x11d93, 0x11d94); - (0x11d96, 0x11d96); - (0x11ef5, 0x11ef6); - (0x16f51, 0x16f87); - (0x16ff0, 0x16ff1); - (0x1d165, 0x1d165); - (0x1d165, 0x1d166); - (0x1d166, 0x1d166); - (0x1d16e, 0x1d172); - (0x1d16d, 0x1d172); - (0x1d16d, 0x1d16d); - ] + [0x903, 0x903; 0x93b, 0x93b; 0x93e, 0x940; 0x949, 0x94c; 0x94e, 0x94f; + 0x982, 0x983; 0x9be, 0x9be; 0x9be, 0x9c0; 0x9bf, 0x9c0; 0x9c7, 0x9c8; + 0x9cb, 0x9cc; 0x9d7, 0x9d7; 0xa03, 0xa03; 0xa3e, 0xa40; 0xa83, 0xa83; + 0xabe, 0xac0; 0xac9, 0xac9; 0xacb, 0xacc; 0xb02, 0xb03; 0xb3e, 0xb3e; + 0xb40, 0xb40; 0xb47, 0xb48; 0xb4b, 0xb4c; 0xb57, 0xb57; 0xbbe, 0xbbe; + 0xbbe, 0xbbf; 0xbbf, 0xbbf; 0xbc1, 0xbc2; 0xbc6, 0xbc8; 0xbca, 0xbcc; + 0xbd7, 0xbd7; 0xc01, 0xc03; 0xc41, 0xc44; 0xc82, 0xc83; 0xcbe, 0xcbe; + 0xcc0, 0xcc1; 0xcc0, 0xcc4; 0xcc2, 0xcc2; 0xcc3, 0xcc4; 0xcc7, 0xcc8; + 0xcca, 0xccb; 0xcd5, 0xcd6; 0xd02, 0xd03; 0xd3e, 0xd3e; 0xd3e, 0xd40; + 0xd3f, 0xd40; 0xd46, 0xd48; 0xd4a, 0xd4c; 0xd57, 0xd57; 0xd82, 0xd83; + 0xdcf, 0xdcf; 0xdcf, 0xdd1; 0xdd0, 0xdd1; 0xdd8, 0xdde; 0xdd8, 0xddf; + 0xddf, 0xddf; 0xdf2, 0xdf3; 0xf3e, 0xf3f; 0xf7f, 0xf7f; 0x102b, 0x102c; + 0x1031, 0x1031; 0x1038, 0x1038; 0x103b, 0x103c; 0x1056, 0x1057; 0x1062, 0x1064; + 0x1063, 0x1064; 0x1067, 0x106d; 0x1069, 0x106d; 0x1083, 0x1084; 0x1087, 0x108c; + 0x108f, 0x108f; 0x109a, 0x109b; 0x109a, 0x109c; 0x1715, 0x1715; 0x1734, 0x1734; + 0x17b6, 0x17b6; 0x17be, 0x17c5; 0x17c7, 0x17c8; 0x1923, 0x1926; 0x1929, 0x192b; + 0x1930, 0x1931; 0x1933, 0x1938; 0x1a19, 0x1a1a; 0x1a55, 0x1a55; 0x1a57, 0x1a57; + 0x1a61, 0x1a61; 0x1a63, 0x1a64; 0x1a6d, 0x1a72; 0x1b04, 0x1b04; 0x1b35, 0x1b35; + 0x1b3b, 0x1b3b; 0x1b3d, 0x1b41; 0x1b43, 0x1b43; 0x1b43, 0x1b44; 0x1b44, 0x1b44; + 0x1b82, 0x1b82; 0x1ba1, 0x1ba1; 0x1ba6, 0x1ba7; 0x1baa, 0x1baa; 0x1be7, 0x1be7; + 0x1bea, 0x1bec; 0x1bee, 0x1bee; 0x1bf2, 0x1bf3; 0x1c24, 0x1c2b; 0x1c34, 0x1c35; + 0x1ce1, 0x1ce1; 0x1cf7, 0x1cf7; 0x302e, 0x302f; 0xa823, 0xa824; 0xa827, 0xa827; + 0xa880, 0xa881; 0xa8b4, 0xa8c3; 0xa952, 0xa952; 0xa952, 0xa953; 0xa953, 0xa953; + 0xa983, 0xa983; 0xa9b4, 0xa9b5; 0xa9ba, 0xa9bb; 0xa9be, 0xa9bf; 0xa9be, 0xa9c0; + 0xa9c0, 0xa9c0; 0xaa2f, 0xaa30; 0xaa33, 0xaa34; 0xaa4d, 0xaa4d; 0xaa7b, 0xaa7b; + 0xaa7d, 0xaa7d; 0xaaeb, 0xaaeb; 0xaaee, 0xaaef; 0xaaf5, 0xaaf5; 0xabe3, 0xabe4; + 0xabe6, 0xabe7; 0xabe9, 0xabea; 0xabec, 0xabec; 0x11000, 0x11000; 0x11002, 0x11002; + 0x11082, 0x11082; 0x110b0, 0x110b2; 0x110b7, 0x110b8; 0x1112c, 0x1112c; 0x11145, 0x11146; + 0x11182, 0x11182; 0x111b3, 0x111b5; 0x111bf, 0x111bf; 0x111bf, 0x111c0; 0x111c0, 0x111c0; + 0x111ce, 0x111ce; 0x1122c, 0x1122e; 0x11232, 0x11233; 0x11235, 0x11235; 0x112e0, 0x112e2; + 0x11302, 0x11303; 0x1133e, 0x1133e; 0x1133e, 0x1133f; 0x1133f, 0x1133f; 0x11341, 0x11344; + 0x11347, 0x11348; 0x1134b, 0x1134c; 0x1134b, 0x1134d; 0x1134d, 0x1134d; 0x11357, 0x11357; + 0x11362, 0x11363; 0x11435, 0x11437; 0x11440, 0x11441; 0x11445, 0x11445; 0x114b0, 0x114b0; + 0x114b0, 0x114b2; 0x114b1, 0x114b2; 0x114b9, 0x114b9; 0x114bb, 0x114bc; 0x114bb, 0x114be; + 0x114bd, 0x114bd; 0x114be, 0x114be; 0x114c1, 0x114c1; 0x115af, 0x115af; 0x115af, 0x115b1; + 0x115b0, 0x115b1; 0x115b8, 0x115bb; 0x115be, 0x115be; 0x11630, 0x11632; 0x1163b, 0x1163c; + 0x1163e, 0x1163e; 0x116ac, 0x116ac; 0x116ae, 0x116af; 0x116b6, 0x116b6; 0x11720, 0x11721; + 0x11726, 0x11726; 0x1182c, 0x1182e; 0x11838, 0x11838; 0x11930, 0x11930; 0x11930, 0x11935; + 0x11931, 0x11935; 0x11937, 0x11938; 0x1193d, 0x1193d; 0x11940, 0x11940; 0x11942, 0x11942; + 0x119d1, 0x119d3; 0x119dc, 0x119df; 0x119e4, 0x119e4; 0x11a39, 0x11a39; 0x11a57, 0x11a58; + 0x11a97, 0x11a97; 0x11c2f, 0x11c2f; 0x11c3e, 0x11c3e; 0x11ca9, 0x11ca9; 0x11cb1, 0x11cb1; + 0x11cb4, 0x11cb4; 0x11d8a, 0x11d8e; 0x11d93, 0x11d94; 0x11d96, 0x11d96; 0x11ef5, 0x11ef6; + 0x16f51, 0x16f87; 0x16ff0, 0x16ff1; 0x1d165, 0x1d165; 0x1d165, 0x1d166; 0x1d166, 0x1d166; + 0x1d16e, 0x1d172; 0x1d16d, 0x1d172; 0x1d16d, 0x1d16d] let me = - [ - (0xa670, 0xa672); - (0x20e2, 0x20e4); - (0x20dd, 0x20e0); - (0x1abe, 0x1abe); - (0x488, 0x489); - ] + [0xa670, 0xa672; 0x20e2, 0x20e4; 0x20dd, 0x20e0; 0x1abe, 0x1abe; 0x488, 0x489] let mn = - [ - (0x300, 0x34e); - (0x300, 0x36f); - (0x345, 0x345); - (0x34f, 0x34f); - (0x350, 0x357); - (0x35d, 0x362); - (0x483, 0x487); - (0x591, 0x5a1); - (0x591, 0x5bd); - (0x5a3, 0x5bd); - (0x5b0, 0x5bd); - (0x5bf, 0x5bf); - (0x5c1, 0x5c2); - (0x5c4, 0x5c4); - (0x5c4, 0x5c5); - (0x5c7, 0x5c7); - (0x610, 0x61a); - (0x64b, 0x652); - (0x64b, 0x657); - (0x64b, 0x65f); - (0x657, 0x658); - (0x659, 0x65f); - (0x670, 0x670); - (0x6d6, 0x6dc); - (0x6df, 0x6e0); - (0x6df, 0x6e4); - (0x6e1, 0x6e4); - (0x6e7, 0x6e8); - (0x6ea, 0x6ec); - (0x6ea, 0x6ed); - (0x6ed, 0x6ed); - (0x711, 0x711); - (0x730, 0x73f); - (0x730, 0x74a); - (0x7a6, 0x7b0); - (0x7eb, 0x7f3); - (0x7fd, 0x7fd); - (0x816, 0x817); - (0x816, 0x819); - (0x818, 0x819); - (0x81b, 0x823); - (0x825, 0x827); - (0x829, 0x82c); - (0x829, 0x82d); - (0x859, 0x85b); - (0x898, 0x89f); - (0x8ca, 0x8d2); - (0x8ca, 0x8e1); - (0x8d4, 0x8df); - (0x8e3, 0x8e9); - (0x8e3, 0x8fe); - (0x8e3, 0x902); - (0x8f0, 0x902); - (0x93a, 0x93a); - (0x93c, 0x93c); - (0x941, 0x948); - (0x94d, 0x94d); - (0x951, 0x954); - (0x951, 0x957); - (0x955, 0x957); - (0x962, 0x963); - (0x981, 0x981); - (0x9bc, 0x9bc); - (0x9c1, 0x9c4); - (0x9cd, 0x9cd); - (0x9e2, 0x9e3); - (0x9fe, 0x9fe); - (0xa01, 0xa02); - (0xa3c, 0xa3c); - (0xa41, 0xa42); - (0xa47, 0xa48); - (0xa4b, 0xa4c); - (0xa4b, 0xa4d); - (0xa4d, 0xa4d); - (0xa51, 0xa51); - (0xa70, 0xa71); - (0xa75, 0xa75); - (0xa81, 0xa82); - (0xabc, 0xabc); - (0xac1, 0xac5); - (0xac7, 0xac8); - (0xacd, 0xacd); - (0xae2, 0xae3); - (0xafa, 0xafc); - (0xafa, 0xaff); - (0xafd, 0xaff); - (0xb01, 0xb01); - (0xb3c, 0xb3c); - (0xb3f, 0xb3f); - (0xb41, 0xb44); - (0xb4d, 0xb4d); - (0xb55, 0xb55); - (0xb55, 0xb56); - (0xb56, 0xb56); - (0xb62, 0xb63); - (0xb82, 0xb82); - (0xbc0, 0xbc0); - (0xbcd, 0xbcd); - (0xc00, 0xc00); - (0xc04, 0xc04); - (0xc3c, 0xc3c); - (0xc3e, 0xc40); - (0xc46, 0xc48); - (0xc4a, 0xc4c); - (0xc4a, 0xc4d); - (0xc4d, 0xc4d); - (0xc55, 0xc56); - (0xc62, 0xc63); - (0xc81, 0xc81); - (0xcbc, 0xcbc); - (0xcbf, 0xcbf); - (0xcc6, 0xcc6); - (0xccc, 0xccc); - (0xccc, 0xccd); - (0xccd, 0xccd); - (0xce2, 0xce3); - (0xd00, 0xd01); - (0xd3b, 0xd3c); - (0xd41, 0xd44); - (0xd4d, 0xd4d); - (0xd62, 0xd63); - (0xd81, 0xd81); - (0xdca, 0xdca); - (0xdd2, 0xdd4); - (0xdd6, 0xdd6); - (0xe31, 0xe31); - (0xe34, 0xe3a); - (0xe3a, 0xe3a); - (0xe47, 0xe4c); - (0xe47, 0xe4e); - (0xe4d, 0xe4d); - (0xe4e, 0xe4e); - (0xeb1, 0xeb1); - (0xeb4, 0xeb9); - (0xeb4, 0xebc); - (0xeba, 0xeba); - (0xebb, 0xebc); - (0xec8, 0xecc); - (0xec8, 0xecd); - (0xecd, 0xecd); - (0xf18, 0xf19); - (0xf35, 0xf35); - (0xf37, 0xf37); - (0xf39, 0xf39); - (0xf71, 0xf7e); - (0xf77, 0xf77); - (0xf79, 0xf79); - (0xf80, 0xf81); - (0xf80, 0xf84); - (0xf82, 0xf84); - (0xf84, 0xf84); - (0xf86, 0xf87); - (0xf8d, 0xf97); - (0xf99, 0xfbc); - (0xfc6, 0xfc6); - (0x102d, 0x1030); - (0x1032, 0x1036); - (0x1032, 0x1037); - (0x1037, 0x1037); - (0x1039, 0x103a); - (0x103d, 0x103e); - (0x1058, 0x1059); - (0x105e, 0x1060); - (0x1071, 0x1074); - (0x1082, 0x1082); - (0x1085, 0x1086); - (0x108d, 0x108d); - (0x109d, 0x109d); - (0x135d, 0x135f); - (0x1712, 0x1713); - (0x1712, 0x1714); - (0x1714, 0x1714); - (0x1732, 0x1733); - (0x1752, 0x1753); - (0x1772, 0x1773); - (0x17b4, 0x17b5); - (0x17b7, 0x17bd); - (0x17c6, 0x17c6); - (0x17c9, 0x17d3); - (0x17d2, 0x17d2); - (0x17dd, 0x17dd); - (0x180b, 0x180d); - (0x180f, 0x180f); - (0x1885, 0x1886); - (0x18a9, 0x18a9); - (0x1920, 0x1922); - (0x1927, 0x1928); - (0x1932, 0x1932); - (0x1939, 0x193b); - (0x1a17, 0x1a18); - (0x1a1b, 0x1a1b); - (0x1a56, 0x1a56); - (0x1a58, 0x1a5e); - (0x1a60, 0x1a60); - (0x1a62, 0x1a62); - (0x1a65, 0x1a6c); - (0x1a73, 0x1a74); - (0x1a73, 0x1a7c); - (0x1a75, 0x1a7c); - (0x1a7f, 0x1a7f); - (0x1ab0, 0x1abd); - (0x1abf, 0x1ac0); - (0x1abf, 0x1ace); - (0x1ac1, 0x1acb); - (0x1acc, 0x1ace); - (0x1b00, 0x1b03); - (0x1b34, 0x1b34); - (0x1b36, 0x1b3a); - (0x1b3c, 0x1b3c); - (0x1b42, 0x1b42); - (0x1b6b, 0x1b73); - (0x1b80, 0x1b81); - (0x1ba2, 0x1ba5); - (0x1ba8, 0x1ba9); - (0x1bab, 0x1bab); - (0x1bab, 0x1bad); - (0x1bac, 0x1bad); - (0x1be6, 0x1be6); - (0x1be8, 0x1be9); - (0x1bed, 0x1bed); - (0x1bef, 0x1bf1); - (0x1c2c, 0x1c33); - (0x1c36, 0x1c36); - (0x1c36, 0x1c37); - (0x1cd0, 0x1cd2); - (0x1cd4, 0x1ce0); - (0x1ce2, 0x1ce8); - (0x1ced, 0x1ced); - (0x1cf4, 0x1cf4); - (0x1cf8, 0x1cf9); - (0x1dc0, 0x1dff); - (0x1dc4, 0x1dcf); - (0x1de7, 0x1df4); - (0x1df5, 0x1dff); - (0x20d0, 0x20dc); - (0x20e1, 0x20e1); - (0x20e5, 0x20e6); - (0x20e5, 0x20f0); - (0x20eb, 0x20ef); - (0x2cef, 0x2cf1); - (0x2d7f, 0x2d7f); - (0x2de0, 0x2dff); - (0x302a, 0x302d); - (0x3099, 0x309a); - (0xa66f, 0xa66f); - (0xa674, 0xa67b); - (0xa674, 0xa67d); - (0xa67c, 0xa67d); - (0xa69e, 0xa69f); - (0xa6f0, 0xa6f1); - (0xa802, 0xa802); - (0xa806, 0xa806); - (0xa80b, 0xa80b); - (0xa825, 0xa826); - (0xa82c, 0xa82c); - (0xa8c4, 0xa8c4); - (0xa8c4, 0xa8c5); - (0xa8c5, 0xa8c5); - (0xa8e0, 0xa8f1); - (0xa8ff, 0xa8ff); - (0xa926, 0xa92a); - (0xa926, 0xa92d); - (0xa92b, 0xa92d); - (0xa947, 0xa951); - (0xa980, 0xa982); - (0xa9b3, 0xa9b3); - (0xa9b6, 0xa9b9); - (0xa9bc, 0xa9bd); - (0xa9e5, 0xa9e5); - (0xaa29, 0xaa2e); - (0xaa31, 0xaa32); - (0xaa35, 0xaa36); - (0xaa43, 0xaa43); - (0xaa4c, 0xaa4c); - (0xaa7c, 0xaa7c); - (0xaab0, 0xaab0); - (0xaab2, 0xaab4); - (0xaab7, 0xaab8); - (0xaabe, 0xaabe); - (0xaabe, 0xaabf); - (0xaabf, 0xaabf); - (0xaac1, 0xaac1); - (0xaaec, 0xaaed); - (0xaaf6, 0xaaf6); - (0xabe5, 0xabe5); - (0xabe8, 0xabe8); - (0xabed, 0xabed); - (0xfb1e, 0xfb1e); - (0xfe00, 0xfe0f); - (0xfe20, 0xfe2f); - (0x101fd, 0x101fd); - (0x102e0, 0x102e0); - (0x10376, 0x1037a); - (0x10a01, 0x10a03); - (0x10a05, 0x10a06); - (0x10a0c, 0x10a0f); - (0x10a38, 0x10a3a); - (0x10a3f, 0x10a3f); - (0x10ae5, 0x10ae6); - (0x10d24, 0x10d27); - (0x10eab, 0x10eac); - (0x10f46, 0x10f50); - (0x10f82, 0x10f85); - (0x11001, 0x11001); - (0x11038, 0x11045); - (0x11038, 0x11046); - (0x11046, 0x11046); - (0x11070, 0x11070); - (0x11073, 0x11074); - (0x1107f, 0x1107f); - (0x1107f, 0x11081); - (0x110b3, 0x110b6); - (0x110b9, 0x110b9); - (0x110b9, 0x110ba); - (0x110c2, 0x110c2); - (0x11100, 0x11102); - (0x11127, 0x1112b); - (0x1112d, 0x11132); - (0x1112d, 0x11134); - (0x11133, 0x11134); - (0x11173, 0x11173); - (0x11180, 0x11181); - (0x111b6, 0x111be); - (0x111c9, 0x111cc); - (0x111ca, 0x111cc); - (0x111cf, 0x111cf); - (0x1122f, 0x11231); - (0x11234, 0x11234); - (0x11236, 0x11236); - (0x11236, 0x11237); - (0x11237, 0x11237); - (0x1123e, 0x1123e); - (0x112df, 0x112df); - (0x112e3, 0x112e8); - (0x112e3, 0x112ea); - (0x112e9, 0x112ea); - (0x112ea, 0x112ea); - (0x11300, 0x11301); - (0x1133b, 0x1133c); - (0x1133c, 0x1133c); - (0x11340, 0x11340); - (0x11366, 0x1136c); - (0x11370, 0x11374); - (0x11438, 0x1143f); - (0x11442, 0x11442); - (0x11442, 0x11444); - (0x11443, 0x11444); - (0x11446, 0x11446); - (0x1145e, 0x1145e); - (0x114b3, 0x114b8); - (0x114ba, 0x114ba); - (0x114bf, 0x114c0); - (0x114c2, 0x114c2); - (0x114c2, 0x114c3); - (0x115b2, 0x115b5); - (0x115bc, 0x115bd); - (0x115bf, 0x115bf); - (0x115bf, 0x115c0); - (0x115dc, 0x115dd); - (0x11633, 0x1163a); - (0x1163d, 0x1163d); - (0x1163f, 0x1163f); - (0x1163f, 0x11640); - (0x11640, 0x11640); - (0x116ab, 0x116ab); - (0x116ad, 0x116ad); - (0x116b0, 0x116b5); - (0x116b7, 0x116b7); - (0x1171d, 0x1171f); - (0x11722, 0x11725); - (0x11727, 0x1172a); - (0x11727, 0x1172b); - (0x1172b, 0x1172b); - (0x1182f, 0x11837); - (0x11839, 0x11839); - (0x11839, 0x1183a); - (0x1193b, 0x1193c); - (0x1193e, 0x1193e); - (0x11943, 0x11943); - (0x119d4, 0x119d7); - (0x119da, 0x119db); - (0x119e0, 0x119e0); - (0x11a01, 0x11a0a); - (0x11a33, 0x11a38); - (0x11a34, 0x11a34); - (0x11a35, 0x11a38); - (0x11a3b, 0x11a3e); - (0x11a47, 0x11a47); - (0x11a51, 0x11a56); - (0x11a59, 0x11a5b); - (0x11a8a, 0x11a96); - (0x11a98, 0x11a98); - (0x11a98, 0x11a99); - (0x11a99, 0x11a99); - (0x11c30, 0x11c36); - (0x11c38, 0x11c3d); - (0x11c3f, 0x11c3f); - (0x11c92, 0x11ca7); - (0x11caa, 0x11cb0); - (0x11cb2, 0x11cb3); - (0x11cb5, 0x11cb6); - (0x11d31, 0x11d36); - (0x11d3a, 0x11d3a); - (0x11d3c, 0x11d3d); - (0x11d3f, 0x11d41); - (0x11d3f, 0x11d45); - (0x11d42, 0x11d42); - (0x11d43, 0x11d43); - (0x11d44, 0x11d45); - (0x11d47, 0x11d47); - (0x11d90, 0x11d91); - (0x11d95, 0x11d95); - (0x11d97, 0x11d97); - (0x11ef3, 0x11ef4); - (0x16af0, 0x16af4); - (0x16b30, 0x16b36); - (0x16f4f, 0x16f4f); - (0x16f8f, 0x16f92); - (0x16fe4, 0x16fe4); - (0x1bc9d, 0x1bc9e); - (0x1bc9e, 0x1bc9e); - (0x1cf00, 0x1cf2d); - (0x1cf30, 0x1cf46); - (0x1d167, 0x1d169); - (0x1d17b, 0x1d182); - (0x1d185, 0x1d18b); - (0x1d1aa, 0x1d1ad); - (0x1d242, 0x1d244); - (0x1da00, 0x1da36); - (0x1da3b, 0x1da6c); - (0x1da75, 0x1da75); - (0x1da84, 0x1da84); - (0x1da9b, 0x1da9f); - (0x1daa1, 0x1daaf); - (0x1e000, 0x1e006); - (0x1e008, 0x1e018); - (0x1e01b, 0x1e021); - (0x1e023, 0x1e024); - (0x1e026, 0x1e02a); - (0x1e130, 0x1e136); - (0x1e2ae, 0x1e2ae); - (0x1e2ec, 0x1e2ef); - (0x1e8d0, 0x1e8d6); - (0x1e944, 0x1e946); - (0x1e944, 0x1e94a); - (0xe0100, 0xe01ef); - (0x1e948, 0x1e94a); - (0x1e947, 0x1e947); - ] + [0x300, 0x34e; 0x300, 0x36f; 0x345, 0x345; 0x34f, 0x34f; 0x350, 0x357; + 0x35d, 0x362; 0x483, 0x487; 0x591, 0x5a1; 0x591, 0x5bd; 0x5a3, 0x5bd; + 0x5b0, 0x5bd; 0x5bf, 0x5bf; 0x5c1, 0x5c2; 0x5c4, 0x5c4; 0x5c4, 0x5c5; + 0x5c7, 0x5c7; 0x610, 0x61a; 0x64b, 0x652; 0x64b, 0x657; 0x64b, 0x65f; + 0x657, 0x658; 0x659, 0x65f; 0x670, 0x670; 0x6d6, 0x6dc; 0x6df, 0x6e0; + 0x6df, 0x6e4; 0x6e1, 0x6e4; 0x6e7, 0x6e8; 0x6ea, 0x6ec; 0x6ea, 0x6ed; + 0x6ed, 0x6ed; 0x711, 0x711; 0x730, 0x73f; 0x730, 0x74a; 0x7a6, 0x7b0; + 0x7eb, 0x7f3; 0x7fd, 0x7fd; 0x816, 0x817; 0x816, 0x819; 0x818, 0x819; + 0x81b, 0x823; 0x825, 0x827; 0x829, 0x82c; 0x829, 0x82d; 0x859, 0x85b; + 0x898, 0x89f; 0x8ca, 0x8d2; 0x8ca, 0x8e1; 0x8d4, 0x8df; 0x8e3, 0x8e9; + 0x8e3, 0x8fe; 0x8e3, 0x902; 0x8f0, 0x902; 0x93a, 0x93a; 0x93c, 0x93c; + 0x941, 0x948; 0x94d, 0x94d; 0x951, 0x954; 0x951, 0x957; 0x955, 0x957; + 0x962, 0x963; 0x981, 0x981; 0x9bc, 0x9bc; 0x9c1, 0x9c4; 0x9cd, 0x9cd; + 0x9e2, 0x9e3; 0x9fe, 0x9fe; 0xa01, 0xa02; 0xa3c, 0xa3c; 0xa41, 0xa42; + 0xa47, 0xa48; 0xa4b, 0xa4c; 0xa4b, 0xa4d; 0xa4d, 0xa4d; 0xa51, 0xa51; + 0xa70, 0xa71; 0xa75, 0xa75; 0xa81, 0xa82; 0xabc, 0xabc; 0xac1, 0xac5; + 0xac7, 0xac8; 0xacd, 0xacd; 0xae2, 0xae3; 0xafa, 0xafc; 0xafa, 0xaff; + 0xafd, 0xaff; 0xb01, 0xb01; 0xb3c, 0xb3c; 0xb3f, 0xb3f; 0xb41, 0xb44; + 0xb4d, 0xb4d; 0xb55, 0xb55; 0xb55, 0xb56; 0xb56, 0xb56; 0xb62, 0xb63; + 0xb82, 0xb82; 0xbc0, 0xbc0; 0xbcd, 0xbcd; 0xc00, 0xc00; 0xc04, 0xc04; + 0xc3c, 0xc3c; 0xc3e, 0xc40; 0xc46, 0xc48; 0xc4a, 0xc4c; 0xc4a, 0xc4d; + 0xc4d, 0xc4d; 0xc55, 0xc56; 0xc62, 0xc63; 0xc81, 0xc81; 0xcbc, 0xcbc; + 0xcbf, 0xcbf; 0xcc6, 0xcc6; 0xccc, 0xccc; 0xccc, 0xccd; 0xccd, 0xccd; + 0xce2, 0xce3; 0xd00, 0xd01; 0xd3b, 0xd3c; 0xd41, 0xd44; 0xd4d, 0xd4d; + 0xd62, 0xd63; 0xd81, 0xd81; 0xdca, 0xdca; 0xdd2, 0xdd4; 0xdd6, 0xdd6; + 0xe31, 0xe31; 0xe34, 0xe3a; 0xe3a, 0xe3a; 0xe47, 0xe4c; 0xe47, 0xe4e; + 0xe4d, 0xe4d; 0xe4e, 0xe4e; 0xeb1, 0xeb1; 0xeb4, 0xeb9; 0xeb4, 0xebc; + 0xeba, 0xeba; 0xebb, 0xebc; 0xec8, 0xecc; 0xec8, 0xecd; 0xecd, 0xecd; + 0xf18, 0xf19; 0xf35, 0xf35; 0xf37, 0xf37; 0xf39, 0xf39; 0xf71, 0xf7e; + 0xf77, 0xf77; 0xf79, 0xf79; 0xf80, 0xf81; 0xf80, 0xf84; 0xf82, 0xf84; + 0xf84, 0xf84; 0xf86, 0xf87; 0xf8d, 0xf97; 0xf99, 0xfbc; 0xfc6, 0xfc6; + 0x102d, 0x1030; 0x1032, 0x1036; 0x1032, 0x1037; 0x1037, 0x1037; 0x1039, 0x103a; + 0x103d, 0x103e; 0x1058, 0x1059; 0x105e, 0x1060; 0x1071, 0x1074; 0x1082, 0x1082; + 0x1085, 0x1086; 0x108d, 0x108d; 0x109d, 0x109d; 0x135d, 0x135f; 0x1712, 0x1713; + 0x1712, 0x1714; 0x1714, 0x1714; 0x1732, 0x1733; 0x1752, 0x1753; 0x1772, 0x1773; + 0x17b4, 0x17b5; 0x17b7, 0x17bd; 0x17c6, 0x17c6; 0x17c9, 0x17d3; 0x17d2, 0x17d2; + 0x17dd, 0x17dd; 0x180b, 0x180d; 0x180f, 0x180f; 0x1885, 0x1886; 0x18a9, 0x18a9; + 0x1920, 0x1922; 0x1927, 0x1928; 0x1932, 0x1932; 0x1939, 0x193b; 0x1a17, 0x1a18; + 0x1a1b, 0x1a1b; 0x1a56, 0x1a56; 0x1a58, 0x1a5e; 0x1a60, 0x1a60; 0x1a62, 0x1a62; + 0x1a65, 0x1a6c; 0x1a73, 0x1a74; 0x1a73, 0x1a7c; 0x1a75, 0x1a7c; 0x1a7f, 0x1a7f; + 0x1ab0, 0x1abd; 0x1abf, 0x1ac0; 0x1abf, 0x1ace; 0x1ac1, 0x1acb; 0x1acc, 0x1ace; + 0x1b00, 0x1b03; 0x1b34, 0x1b34; 0x1b36, 0x1b3a; 0x1b3c, 0x1b3c; 0x1b42, 0x1b42; + 0x1b6b, 0x1b73; 0x1b80, 0x1b81; 0x1ba2, 0x1ba5; 0x1ba8, 0x1ba9; 0x1bab, 0x1bab; + 0x1bab, 0x1bad; 0x1bac, 0x1bad; 0x1be6, 0x1be6; 0x1be8, 0x1be9; 0x1bed, 0x1bed; + 0x1bef, 0x1bf1; 0x1c2c, 0x1c33; 0x1c36, 0x1c36; 0x1c36, 0x1c37; 0x1cd0, 0x1cd2; + 0x1cd4, 0x1ce0; 0x1ce2, 0x1ce8; 0x1ced, 0x1ced; 0x1cf4, 0x1cf4; 0x1cf8, 0x1cf9; + 0x1dc0, 0x1dff; 0x1dc4, 0x1dcf; 0x1de7, 0x1df4; 0x1df5, 0x1dff; 0x20d0, 0x20dc; + 0x20e1, 0x20e1; 0x20e5, 0x20e6; 0x20e5, 0x20f0; 0x20eb, 0x20ef; 0x2cef, 0x2cf1; + 0x2d7f, 0x2d7f; 0x2de0, 0x2dff; 0x302a, 0x302d; 0x3099, 0x309a; 0xa66f, 0xa66f; + 0xa674, 0xa67b; 0xa674, 0xa67d; 0xa67c, 0xa67d; 0xa69e, 0xa69f; 0xa6f0, 0xa6f1; + 0xa802, 0xa802; 0xa806, 0xa806; 0xa80b, 0xa80b; 0xa825, 0xa826; 0xa82c, 0xa82c; + 0xa8c4, 0xa8c4; 0xa8c4, 0xa8c5; 0xa8c5, 0xa8c5; 0xa8e0, 0xa8f1; 0xa8ff, 0xa8ff; + 0xa926, 0xa92a; 0xa926, 0xa92d; 0xa92b, 0xa92d; 0xa947, 0xa951; 0xa980, 0xa982; + 0xa9b3, 0xa9b3; 0xa9b6, 0xa9b9; 0xa9bc, 0xa9bd; 0xa9e5, 0xa9e5; 0xaa29, 0xaa2e; + 0xaa31, 0xaa32; 0xaa35, 0xaa36; 0xaa43, 0xaa43; 0xaa4c, 0xaa4c; 0xaa7c, 0xaa7c; + 0xaab0, 0xaab0; 0xaab2, 0xaab4; 0xaab7, 0xaab8; 0xaabe, 0xaabe; 0xaabe, 0xaabf; + 0xaabf, 0xaabf; 0xaac1, 0xaac1; 0xaaec, 0xaaed; 0xaaf6, 0xaaf6; 0xabe5, 0xabe5; + 0xabe8, 0xabe8; 0xabed, 0xabed; 0xfb1e, 0xfb1e; 0xfe00, 0xfe0f; 0xfe20, 0xfe2f; + 0x101fd, 0x101fd; 0x102e0, 0x102e0; 0x10376, 0x1037a; 0x10a01, 0x10a03; 0x10a05, 0x10a06; + 0x10a0c, 0x10a0f; 0x10a38, 0x10a3a; 0x10a3f, 0x10a3f; 0x10ae5, 0x10ae6; 0x10d24, 0x10d27; + 0x10eab, 0x10eac; 0x10f46, 0x10f50; 0x10f82, 0x10f85; 0x11001, 0x11001; 0x11038, 0x11045; + 0x11038, 0x11046; 0x11046, 0x11046; 0x11070, 0x11070; 0x11073, 0x11074; 0x1107f, 0x1107f; + 0x1107f, 0x11081; 0x110b3, 0x110b6; 0x110b9, 0x110b9; 0x110b9, 0x110ba; 0x110c2, 0x110c2; + 0x11100, 0x11102; 0x11127, 0x1112b; 0x1112d, 0x11132; 0x1112d, 0x11134; 0x11133, 0x11134; + 0x11173, 0x11173; 0x11180, 0x11181; 0x111b6, 0x111be; 0x111c9, 0x111cc; 0x111ca, 0x111cc; + 0x111cf, 0x111cf; 0x1122f, 0x11231; 0x11234, 0x11234; 0x11236, 0x11236; 0x11236, 0x11237; + 0x11237, 0x11237; 0x1123e, 0x1123e; 0x112df, 0x112df; 0x112e3, 0x112e8; 0x112e3, 0x112ea; + 0x112e9, 0x112ea; 0x112ea, 0x112ea; 0x11300, 0x11301; 0x1133b, 0x1133c; 0x1133c, 0x1133c; + 0x11340, 0x11340; 0x11366, 0x1136c; 0x11370, 0x11374; 0x11438, 0x1143f; 0x11442, 0x11442; + 0x11442, 0x11444; 0x11443, 0x11444; 0x11446, 0x11446; 0x1145e, 0x1145e; 0x114b3, 0x114b8; + 0x114ba, 0x114ba; 0x114bf, 0x114c0; 0x114c2, 0x114c2; 0x114c2, 0x114c3; 0x115b2, 0x115b5; + 0x115bc, 0x115bd; 0x115bf, 0x115bf; 0x115bf, 0x115c0; 0x115dc, 0x115dd; 0x11633, 0x1163a; + 0x1163d, 0x1163d; 0x1163f, 0x1163f; 0x1163f, 0x11640; 0x11640, 0x11640; 0x116ab, 0x116ab; + 0x116ad, 0x116ad; 0x116b0, 0x116b5; 0x116b7, 0x116b7; 0x1171d, 0x1171f; 0x11722, 0x11725; + 0x11727, 0x1172a; 0x11727, 0x1172b; 0x1172b, 0x1172b; 0x1182f, 0x11837; 0x11839, 0x11839; + 0x11839, 0x1183a; 0x1193b, 0x1193c; 0x1193e, 0x1193e; 0x11943, 0x11943; 0x119d4, 0x119d7; + 0x119da, 0x119db; 0x119e0, 0x119e0; 0x11a01, 0x11a0a; 0x11a33, 0x11a38; 0x11a34, 0x11a34; + 0x11a35, 0x11a38; 0x11a3b, 0x11a3e; 0x11a47, 0x11a47; 0x11a51, 0x11a56; 0x11a59, 0x11a5b; + 0x11a8a, 0x11a96; 0x11a98, 0x11a98; 0x11a98, 0x11a99; 0x11a99, 0x11a99; 0x11c30, 0x11c36; + 0x11c38, 0x11c3d; 0x11c3f, 0x11c3f; 0x11c92, 0x11ca7; 0x11caa, 0x11cb0; 0x11cb2, 0x11cb3; + 0x11cb5, 0x11cb6; 0x11d31, 0x11d36; 0x11d3a, 0x11d3a; 0x11d3c, 0x11d3d; 0x11d3f, 0x11d41; + 0x11d3f, 0x11d45; 0x11d42, 0x11d42; 0x11d43, 0x11d43; 0x11d44, 0x11d45; 0x11d47, 0x11d47; + 0x11d90, 0x11d91; 0x11d95, 0x11d95; 0x11d97, 0x11d97; 0x11ef3, 0x11ef4; 0x16af0, 0x16af4; + 0x16b30, 0x16b36; 0x16f4f, 0x16f4f; 0x16f8f, 0x16f92; 0x16fe4, 0x16fe4; 0x1bc9d, 0x1bc9e; + 0x1bc9e, 0x1bc9e; 0x1cf00, 0x1cf2d; 0x1cf30, 0x1cf46; 0x1d167, 0x1d169; 0x1d17b, 0x1d182; + 0x1d185, 0x1d18b; 0x1d1aa, 0x1d1ad; 0x1d242, 0x1d244; 0x1da00, 0x1da36; 0x1da3b, 0x1da6c; + 0x1da75, 0x1da75; 0x1da84, 0x1da84; 0x1da9b, 0x1da9f; 0x1daa1, 0x1daaf; 0x1e000, 0x1e006; + 0x1e008, 0x1e018; 0x1e01b, 0x1e021; 0x1e023, 0x1e024; 0x1e026, 0x1e02a; 0x1e130, 0x1e136; + 0x1e2ae, 0x1e2ae; 0x1e2ec, 0x1e2ef; 0x1e8d0, 0x1e8d6; 0x1e944, 0x1e946; 0x1e944, 0x1e94a; + 0xe0100, 0xe01ef; 0x1e948, 0x1e94a; 0x1e947, 0x1e947] let nd = - [ - (0x30, 0x39); - (0x660, 0x669); - (0x6f0, 0x6f9); - (0x7c0, 0x7c9); - (0x966, 0x96f); - (0x9e6, 0x9ef); - (0xa66, 0xa6f); - (0xae6, 0xaef); - (0xb66, 0xb6f); - (0xbe6, 0xbef); - (0xc66, 0xc6f); - (0xce6, 0xcef); - (0xd66, 0xd6f); - (0xde6, 0xdef); - (0xe50, 0xe59); - (0xed0, 0xed9); - (0xf20, 0xf29); - (0x1040, 0x1049); - (0x1090, 0x1099); - (0x17e0, 0x17e9); - (0x1810, 0x1819); - (0x1946, 0x194f); - (0x19d0, 0x19d9); - (0x1a80, 0x1a89); - (0x1a90, 0x1a99); - (0x1b50, 0x1b59); - (0x1bb0, 0x1bb9); - (0x1c40, 0x1c49); - (0x1c50, 0x1c59); - (0xa620, 0xa629); - (0xa8d0, 0xa8d9); - (0xa900, 0xa909); - (0xa9d0, 0xa9d9); - (0xa9f0, 0xa9f9); - (0xaa50, 0xaa59); - (0xabf0, 0xabf9); - (0xff10, 0xff19); - (0x104a0, 0x104a9); - (0x10d30, 0x10d39); - (0x11066, 0x1106f); - (0x110f0, 0x110f9); - (0x11136, 0x1113f); - (0x111d0, 0x111d9); - (0x112f0, 0x112f9); - (0x11450, 0x11459); - (0x114d0, 0x114d9); - (0x11650, 0x11659); - (0x116c0, 0x116c9); - (0x11730, 0x11739); - (0x118e0, 0x118e9); - (0x11950, 0x11959); - (0x11c50, 0x11c59); - (0x11d50, 0x11d59); - (0x11da0, 0x11da9); - (0x16a60, 0x16a69); - (0x16ac0, 0x16ac9); - (0x16b50, 0x16b59); - (0x1d7ce, 0x1d7ff); - (0x1e140, 0x1e149); - (0x1e2f0, 0x1e2f9); - (0x1fbf0, 0x1fbf9); - (0x1e950, 0x1e959); - ] + [0x30, 0x39; 0x660, 0x669; 0x6f0, 0x6f9; 0x7c0, 0x7c9; 0x966, 0x96f; + 0x9e6, 0x9ef; 0xa66, 0xa6f; 0xae6, 0xaef; 0xb66, 0xb6f; 0xbe6, 0xbef; + 0xc66, 0xc6f; 0xce6, 0xcef; 0xd66, 0xd6f; 0xde6, 0xdef; 0xe50, 0xe59; + 0xed0, 0xed9; 0xf20, 0xf29; 0x1040, 0x1049; 0x1090, 0x1099; 0x17e0, 0x17e9; + 0x1810, 0x1819; 0x1946, 0x194f; 0x19d0, 0x19d9; 0x1a80, 0x1a89; 0x1a90, 0x1a99; + 0x1b50, 0x1b59; 0x1bb0, 0x1bb9; 0x1c40, 0x1c49; 0x1c50, 0x1c59; 0xa620, 0xa629; + 0xa8d0, 0xa8d9; 0xa900, 0xa909; 0xa9d0, 0xa9d9; 0xa9f0, 0xa9f9; 0xaa50, 0xaa59; + 0xabf0, 0xabf9; 0xff10, 0xff19; 0x104a0, 0x104a9; 0x10d30, 0x10d39; 0x11066, 0x1106f; + 0x110f0, 0x110f9; 0x11136, 0x1113f; 0x111d0, 0x111d9; 0x112f0, 0x112f9; 0x11450, 0x11459; + 0x114d0, 0x114d9; 0x11650, 0x11659; 0x116c0, 0x116c9; 0x11730, 0x11739; 0x118e0, 0x118e9; + 0x11950, 0x11959; 0x11c50, 0x11c59; 0x11d50, 0x11d59; 0x11da0, 0x11da9; 0x16a60, 0x16a69; + 0x16ac0, 0x16ac9; 0x16b50, 0x16b59; 0x1d7ce, 0x1d7ff; 0x1e140, 0x1e149; 0x1e2f0, 0x1e2f9; + 0x1fbf0, 0x1fbf9; 0x1e950, 0x1e959] let nl = - [ - (0x16ee, 0x16f0); - (0x2160, 0x216f); - (0x2160, 0x217f); - (0x2160, 0x2182); - (0x2170, 0x217f); - (0x2185, 0x2188); - (0x3007, 0x3007); - (0x3021, 0x3029); - (0x3038, 0x303a); - (0xa6e6, 0xa6ef); - (0x12400, 0x1246e); - (0x103d1, 0x103d5); - (0x1034a, 0x1034a); - (0x10341, 0x10341); - (0x10140, 0x10174); - ] + [0x16ee, 0x16f0; 0x2160, 0x216f; 0x2160, 0x217f; 0x2160, 0x2182; 0x2170, 0x217f; + 0x2185, 0x2188; 0x3007, 0x3007; 0x3021, 0x3029; 0x3038, 0x303a; 0xa6e6, 0xa6ef; + 0x12400, 0x1246e; 0x103d1, 0x103d5; 0x1034a, 0x1034a; 0x10341, 0x10341; 0x10140, 0x10174] let no = - [ - (0xb2, 0xb3); - (0xb9, 0xb9); - (0xbc, 0xbe); - (0x9f4, 0x9f9); - (0xb72, 0xb77); - (0xbf0, 0xbf2); - (0xc78, 0xc7e); - (0xd58, 0xd5e); - (0xd70, 0xd78); - (0xf2a, 0xf33); - (0x1369, 0x1371); - (0x1369, 0x137c); - (0x17f0, 0x17f9); - (0x19da, 0x19da); - (0x2070, 0x2070); - (0x2074, 0x2079); - (0x2080, 0x2089); - (0x2150, 0x215f); - (0x2189, 0x2189); - (0x2460, 0x249b); - (0x24ea, 0x24ff); - (0x2776, 0x2793); - (0x2cfd, 0x2cfd); - (0x3192, 0x3195); - (0x3220, 0x3229); - (0x3248, 0x324f); - (0x3251, 0x325f); - (0x3280, 0x3289); - (0x32b1, 0x32bf); - (0xa830, 0xa835); - (0x10107, 0x10133); - (0x10175, 0x10178); - (0x1018a, 0x1018b); - (0x102e1, 0x102fb); - (0x10320, 0x10323); - (0x10858, 0x1085f); - (0x10879, 0x1087f); - (0x108a7, 0x108af); - (0x108fb, 0x108ff); - (0x10916, 0x1091b); - (0x109bc, 0x109bd); - (0x109c0, 0x109cf); - (0x109d2, 0x109ff); - (0x10a40, 0x10a48); - (0x10a7d, 0x10a7e); - (0x10a9d, 0x10a9f); - (0x10aeb, 0x10aef); - (0x10b58, 0x10b5f); - (0x10b78, 0x10b7f); - (0x10ba9, 0x10baf); - (0x10cfa, 0x10cff); - (0x10e60, 0x10e7e); - (0x10f1d, 0x10f26); - (0x10f51, 0x10f54); - (0x10fc5, 0x10fcb); - (0x11052, 0x11065); - (0x111e1, 0x111f4); - (0x1173a, 0x1173b); - (0x118ea, 0x118f2); - (0x11c5a, 0x11c6c); - (0x11fc0, 0x11fd4); - (0x16b5b, 0x16b61); - (0x16e80, 0x16e96); - (0x1d2e0, 0x1d2f3); - (0x1d360, 0x1d378); - (0x1e8c7, 0x1e8cf); - (0x1ec71, 0x1ecab); - (0x1ecad, 0x1ecaf); - (0x1ecb1, 0x1ecb4); - (0x1ed01, 0x1ed2d); - (0x1f100, 0x1f10c); - (0x1ed2f, 0x1ed3d); - ] + [0xb2, 0xb3; 0xb9, 0xb9; 0xbc, 0xbe; 0x9f4, 0x9f9; 0xb72, 0xb77; + 0xbf0, 0xbf2; 0xc78, 0xc7e; 0xd58, 0xd5e; 0xd70, 0xd78; 0xf2a, 0xf33; + 0x1369, 0x1371; 0x1369, 0x137c; 0x17f0, 0x17f9; 0x19da, 0x19da; 0x2070, 0x2070; + 0x2074, 0x2079; 0x2080, 0x2089; 0x2150, 0x215f; 0x2189, 0x2189; 0x2460, 0x249b; + 0x24ea, 0x24ff; 0x2776, 0x2793; 0x2cfd, 0x2cfd; 0x3192, 0x3195; 0x3220, 0x3229; + 0x3248, 0x324f; 0x3251, 0x325f; 0x3280, 0x3289; 0x32b1, 0x32bf; 0xa830, 0xa835; + 0x10107, 0x10133; 0x10175, 0x10178; 0x1018a, 0x1018b; 0x102e1, 0x102fb; 0x10320, 0x10323; + 0x10858, 0x1085f; 0x10879, 0x1087f; 0x108a7, 0x108af; 0x108fb, 0x108ff; 0x10916, 0x1091b; + 0x109bc, 0x109bd; 0x109c0, 0x109cf; 0x109d2, 0x109ff; 0x10a40, 0x10a48; 0x10a7d, 0x10a7e; + 0x10a9d, 0x10a9f; 0x10aeb, 0x10aef; 0x10b58, 0x10b5f; 0x10b78, 0x10b7f; 0x10ba9, 0x10baf; + 0x10cfa, 0x10cff; 0x10e60, 0x10e7e; 0x10f1d, 0x10f26; 0x10f51, 0x10f54; 0x10fc5, 0x10fcb; + 0x11052, 0x11065; 0x111e1, 0x111f4; 0x1173a, 0x1173b; 0x118ea, 0x118f2; 0x11c5a, 0x11c6c; + 0x11fc0, 0x11fd4; 0x16b5b, 0x16b61; 0x16e80, 0x16e96; 0x1d2e0, 0x1d2f3; 0x1d360, 0x1d378; + 0x1e8c7, 0x1e8cf; 0x1ec71, 0x1ecab; 0x1ecad, 0x1ecaf; 0x1ecb1, 0x1ecb4; 0x1ed01, 0x1ed2d; + 0x1f100, 0x1f10c; 0x1ed2f, 0x1ed3d] let pc = - [ - (0x5f, 0x5f); - (0x203f, 0x2040); - (0x2040, 0x2040); - (0x2054, 0x2054); - (0xfe33, 0xfe34); - (0xff3f, 0xff3f); - (0xfe4d, 0xfe4f); - ] + [0x5f, 0x5f; 0x203f, 0x2040; 0x2040, 0x2040; 0x2054, 0x2054; 0xfe33, 0xfe34; + 0xff3f, 0xff3f; 0xfe4d, 0xfe4f] let pd = - [ - (0x2d, 0x2d); - (0x58a, 0x58a); - (0x5be, 0x5be); - (0x1400, 0x1400); - (0x1806, 0x1806); - (0x2010, 0x2011); - (0x2010, 0x2015); - (0x2e17, 0x2e17); - (0x2e1a, 0x2e1a); - (0x2e3a, 0x2e3b); - (0x2e40, 0x2e40); - (0x2e5d, 0x2e5d); - (0x301c, 0x301c); - (0x3030, 0x3030); - (0x30a0, 0x30a0); - (0x10ead, 0x10ead); - (0xff0d, 0xff0d); - (0xfe63, 0xfe63); - (0xfe58, 0xfe58); - (0xfe31, 0xfe32); - ] + [0x2d, 0x2d; 0x58a, 0x58a; 0x5be, 0x5be; 0x1400, 0x1400; 0x1806, 0x1806; + 0x2010, 0x2011; 0x2010, 0x2015; 0x2e17, 0x2e17; 0x2e1a, 0x2e1a; 0x2e3a, 0x2e3b; + 0x2e40, 0x2e40; 0x2e5d, 0x2e5d; 0x301c, 0x301c; 0x3030, 0x3030; 0x30a0, 0x30a0; + 0x10ead, 0x10ead; 0xff0d, 0xff0d; 0xfe63, 0xfe63; 0xfe58, 0xfe58; 0xfe31, 0xfe32] let pe = - [ - (0x29, 0x29); - (0x5d, 0x5d); - (0x7d, 0x7d); - (0xf3b, 0xf3b); - (0xf3d, 0xf3d); - (0x169c, 0x169c); - (0x2046, 0x2046); - (0x207e, 0x207e); - (0x208e, 0x208e); - (0x2309, 0x2309); - (0x230b, 0x230b); - (0x232a, 0x232a); - (0x2769, 0x2769); - (0x276b, 0x276b); - (0x276d, 0x276d); - (0x276f, 0x276f); - (0x2771, 0x2771); - (0x2773, 0x2773); - (0x2775, 0x2775); - (0x27c6, 0x27c6); - (0x27e7, 0x27e7); - (0x27e9, 0x27e9); - (0x27eb, 0x27eb); - (0x27ed, 0x27ed); - (0x27ef, 0x27ef); - (0x2984, 0x2984); - (0x2986, 0x2986); - (0x2988, 0x2988); - (0x298a, 0x298a); - (0x298c, 0x298c); - (0x298e, 0x298e); - (0x2990, 0x2990); - (0x2992, 0x2992); - (0x2994, 0x2994); - (0x2996, 0x2996); - (0x2998, 0x2998); - (0x29d9, 0x29d9); - (0x29db, 0x29db); - (0x29fd, 0x29fd); - (0x2e23, 0x2e23); - (0x2e25, 0x2e25); - (0x2e27, 0x2e27); - (0x2e29, 0x2e29); - (0x2e56, 0x2e56); - (0x2e58, 0x2e58); - (0x2e5a, 0x2e5a); - (0x2e5c, 0x2e5c); - (0x3009, 0x3009); - (0x300b, 0x300b); - (0x300d, 0x300d); - (0x300f, 0x300f); - (0x3011, 0x3011); - (0x3015, 0x3015); - (0x3017, 0x3017); - (0x3019, 0x3019); - (0x301b, 0x301b); - (0x301e, 0x301f); - (0xfd3e, 0xfd3e); - (0xfe18, 0xfe18); - (0xfe36, 0xfe36); - (0xfe38, 0xfe38); - (0xfe3a, 0xfe3a); - (0xfe3c, 0xfe3c); - (0xfe3e, 0xfe3e); - (0xfe40, 0xfe40); - (0xfe42, 0xfe42); - (0xfe44, 0xfe44); - (0xfe48, 0xfe48); - (0xfe5a, 0xfe5a); - (0xfe5c, 0xfe5c); - (0xfe5e, 0xfe5e); - (0xff09, 0xff09); - (0xff3d, 0xff3d); - (0xff5d, 0xff5d); - (0xff60, 0xff60); - (0xff63, 0xff63); - ] + [0x29, 0x29; 0x5d, 0x5d; 0x7d, 0x7d; 0xf3b, 0xf3b; 0xf3d, 0xf3d; + 0x169c, 0x169c; 0x2046, 0x2046; 0x207e, 0x207e; 0x208e, 0x208e; 0x2309, 0x2309; + 0x230b, 0x230b; 0x232a, 0x232a; 0x2769, 0x2769; 0x276b, 0x276b; 0x276d, 0x276d; + 0x276f, 0x276f; 0x2771, 0x2771; 0x2773, 0x2773; 0x2775, 0x2775; 0x27c6, 0x27c6; + 0x27e7, 0x27e7; 0x27e9, 0x27e9; 0x27eb, 0x27eb; 0x27ed, 0x27ed; 0x27ef, 0x27ef; + 0x2984, 0x2984; 0x2986, 0x2986; 0x2988, 0x2988; 0x298a, 0x298a; 0x298c, 0x298c; + 0x298e, 0x298e; 0x2990, 0x2990; 0x2992, 0x2992; 0x2994, 0x2994; 0x2996, 0x2996; + 0x2998, 0x2998; 0x29d9, 0x29d9; 0x29db, 0x29db; 0x29fd, 0x29fd; 0x2e23, 0x2e23; + 0x2e25, 0x2e25; 0x2e27, 0x2e27; 0x2e29, 0x2e29; 0x2e56, 0x2e56; 0x2e58, 0x2e58; + 0x2e5a, 0x2e5a; 0x2e5c, 0x2e5c; 0x3009, 0x3009; 0x300b, 0x300b; 0x300d, 0x300d; + 0x300f, 0x300f; 0x3011, 0x3011; 0x3015, 0x3015; 0x3017, 0x3017; 0x3019, 0x3019; + 0x301b, 0x301b; 0x301e, 0x301f; 0xfd3e, 0xfd3e; 0xfe18, 0xfe18; 0xfe36, 0xfe36; + 0xfe38, 0xfe38; 0xfe3a, 0xfe3a; 0xfe3c, 0xfe3c; 0xfe3e, 0xfe3e; 0xfe40, 0xfe40; + 0xfe42, 0xfe42; 0xfe44, 0xfe44; 0xfe48, 0xfe48; 0xfe5a, 0xfe5a; 0xfe5c, 0xfe5c; + 0xfe5e, 0xfe5e; 0xff09, 0xff09; 0xff3d, 0xff3d; 0xff5d, 0xff5d; 0xff60, 0xff60; + 0xff63, 0xff63] let pf = - [ - (0xbb, 0xbb); - (0x2019, 0x2019); - (0x201d, 0x201d); - (0x203a, 0x203a); - (0x2e03, 0x2e03); - (0x2e21, 0x2e21); - (0x2e1d, 0x2e1d); - (0x2e0d, 0x2e0d); - (0x2e0a, 0x2e0a); - (0x2e05, 0x2e05); - ] + [0xbb, 0xbb; 0x2019, 0x2019; 0x201d, 0x201d; 0x203a, 0x203a; 0x2e03, 0x2e03; + 0x2e21, 0x2e21; 0x2e1d, 0x2e1d; 0x2e0d, 0x2e0d; 0x2e0a, 0x2e0a; 0x2e05, 0x2e05] let pi = - [ - (0xab, 0xab); - (0x2018, 0x2018); - (0x201b, 0x201c); - (0x201f, 0x201f); - (0x2039, 0x2039); - (0x2e02, 0x2e02); - (0x2e04, 0x2e04); - (0x2e09, 0x2e09); - (0x2e0c, 0x2e0c); - (0x2e1c, 0x2e1c); - (0x2e20, 0x2e20); - ] + [0xab, 0xab; 0x2018, 0x2018; 0x201b, 0x201c; 0x201f, 0x201f; 0x2039, 0x2039; + 0x2e02, 0x2e02; 0x2e04, 0x2e04; 0x2e09, 0x2e09; 0x2e0c, 0x2e0c; 0x2e1c, 0x2e1c; + 0x2e20, 0x2e20] let po = - [ - (0x21, 0x21); - (0x21, 0x23); - (0x22, 0x22); - (0x25, 0x27); - (0x27, 0x27); - (0x2a, 0x2a); - (0x2c, 0x2c); - (0x2e, 0x2e); - (0x2e, 0x2f); - (0x3a, 0x3a); - (0x3a, 0x3b); - (0x3f, 0x3f); - (0x3f, 0x40); - (0x5c, 0x5c); - (0xa1, 0xa1); - (0xa7, 0xa7); - (0xb6, 0xb6); - (0xb6, 0xb7); - (0xb7, 0xb7); - (0xbf, 0xbf); - (0x37e, 0x37e); - (0x387, 0x387); - (0x55a, 0x55f); - (0x55f, 0x55f); - (0x589, 0x589); - (0x5c0, 0x5c0); - (0x5c3, 0x5c3); - (0x5c6, 0x5c6); - (0x5f3, 0x5f4); - (0x5f4, 0x5f4); - (0x609, 0x60a); - (0x60c, 0x60c); - (0x60c, 0x60d); - (0x61b, 0x61b); - (0x61d, 0x61f); - (0x66a, 0x66d); - (0x6d4, 0x6d4); - (0x700, 0x702); - (0x700, 0x70a); - (0x700, 0x70d); - (0x70c, 0x70c); - (0x7f7, 0x7f9); - (0x7f8, 0x7f9); - (0x7f9, 0x7f9); - (0x830, 0x83e); - (0x837, 0x837); - (0x839, 0x839); - (0x83d, 0x83e); - (0x85e, 0x85e); - (0x964, 0x965); - (0x970, 0x970); - (0x9fd, 0x9fd); - (0xa76, 0xa76); - (0xaf0, 0xaf0); - (0xc77, 0xc77); - (0xc84, 0xc84); - (0xdf4, 0xdf4); - (0xe4f, 0xe4f); - (0xe5a, 0xe5b); - (0xf04, 0xf12); - (0xf08, 0xf08); - (0xf0d, 0xf12); - (0xf14, 0xf14); - (0xf85, 0xf85); - (0xfd0, 0xfd4); - (0xfd9, 0xfda); - (0x104a, 0x104b); - (0x104a, 0x104f); - (0x10fb, 0x10fb); - (0x1360, 0x1368); - (0x1361, 0x1368); - (0x1362, 0x1362); - (0x1367, 0x1368); - (0x166e, 0x166e); - (0x16eb, 0x16ed); - (0x1735, 0x1736); - (0x17d4, 0x17d6); - (0x17d8, 0x17da); - (0x17da, 0x17da); - (0x1800, 0x1805); - (0x1802, 0x1805); - (0x1803, 0x1803); - (0x1807, 0x180a); - (0x1808, 0x1809); - (0x1809, 0x1809); - (0x180a, 0x180a); - (0x1944, 0x1945); - (0x1a1e, 0x1a1f); - (0x1aa0, 0x1aa6); - (0x1aa8, 0x1aab); - (0x1aa8, 0x1aad); - (0x1b5a, 0x1b5b); - (0x1b5a, 0x1b60); - (0x1b5d, 0x1b5f); - (0x1b5e, 0x1b5f); - (0x1b7d, 0x1b7e); - (0x1bfc, 0x1bff); - (0x1c3b, 0x1c3c); - (0x1c3b, 0x1c3f); - (0x1c7e, 0x1c7f); - (0x1cc0, 0x1cc7); - (0x1cd3, 0x1cd3); - (0x2016, 0x2016); - (0x2016, 0x2017); - (0x2020, 0x2027); - (0x2024, 0x2024); - (0x2027, 0x2027); - (0x2030, 0x2038); - (0x2032, 0x2034); - (0x203b, 0x203e); - (0x203c, 0x203d); - (0x2041, 0x2043); - (0x2047, 0x2049); - (0x2047, 0x2051); - (0x2053, 0x2053); - (0x2055, 0x205e); - (0x2cf9, 0x2cfc); - (0x2cfe, 0x2cff); - (0x2d70, 0x2d70); - (0x2e00, 0x2e01); - (0x2e06, 0x2e08); - (0x2e0b, 0x2e0b); - (0x2e0e, 0x2e16); - (0x2e18, 0x2e19); - (0x2e1b, 0x2e1b); - (0x2e1e, 0x2e1f); - (0x2e2a, 0x2e2e); - (0x2e2e, 0x2e2e); - (0x2e30, 0x2e39); - (0x2e3c, 0x2e3c); - (0x2e3c, 0x2e3f); - (0x2e41, 0x2e41); - (0x2e43, 0x2e4f); - (0x2e4c, 0x2e4c); - (0x2e4e, 0x2e4f); - (0x2e52, 0x2e54); - (0x2e53, 0x2e54); - (0x3001, 0x3002); - (0x3001, 0x3003); - (0x3002, 0x3002); - (0x303d, 0x303d); - (0x30fb, 0x30fb); - (0xa4fe, 0xa4ff); - (0xa4ff, 0xa4ff); - (0xa60d, 0xa60f); - (0xa60e, 0xa60f); - (0xa673, 0xa673); - (0xa67e, 0xa67e); - (0xa6f2, 0xa6f7); - (0xa6f3, 0xa6f3); - (0xa6f3, 0xa6f7); - (0xa6f7, 0xa6f7); - (0xa874, 0xa877); - (0xa876, 0xa877); - (0xa8ce, 0xa8cf); - (0xa8f8, 0xa8fa); - (0xa8fc, 0xa8fc); - (0xa92e, 0xa92e); - (0xa92e, 0xa92f); - (0xa92f, 0xa92f); - (0xa95f, 0xa95f); - (0xa9c1, 0xa9cd); - (0xa9c7, 0xa9c9); - (0xa9c8, 0xa9c9); - (0xa9de, 0xa9df); - (0xaa5c, 0xaa5f); - (0xaa5d, 0xaa5f); - (0xaade, 0xaadf); - (0xaadf, 0xaadf); - (0xaaf0, 0xaaf1); - (0xabeb, 0xabeb); - (0xfe10, 0xfe16); - (0xfe13, 0xfe13); - (0xfe19, 0xfe19); - (0xfe30, 0xfe30); - (0xfe45, 0xfe46); - (0xfe49, 0xfe4c); - (0xfe50, 0xfe52); - (0xfe52, 0xfe52); - (0xfe54, 0xfe57); - (0xfe55, 0xfe55); - (0xfe56, 0xfe57); - (0xfe5f, 0xfe61); - (0xfe61, 0xfe61); - (0xfe68, 0xfe68); - (0xfe6a, 0xfe6b); - (0xff01, 0xff01); - (0xff01, 0xff03); - (0xff02, 0xff02); - (0xff05, 0xff07); - (0xff07, 0xff07); - (0xff0a, 0xff0a); - (0xff0c, 0xff0c); - (0xff0e, 0xff0e); - (0xff0e, 0xff0f); - (0xff1a, 0xff1a); - (0xff1a, 0xff1b); - (0xff1f, 0xff1f); - (0xff1f, 0xff20); - (0xff3c, 0xff3c); - (0xff61, 0xff61); - (0xff64, 0xff64); - (0xff64, 0xff65); - (0xff65, 0xff65); - (0x10100, 0x10102); - (0x1039f, 0x1039f); - (0x103d0, 0x103d0); - (0x1056f, 0x1056f); - (0x10857, 0x10857); - (0x1091f, 0x1091f); - (0x1093f, 0x1093f); - (0x10a50, 0x10a58); - (0x10a56, 0x10a57); - (0x10a7f, 0x10a7f); - (0x10af0, 0x10af5); - (0x10af0, 0x10af6); - (0x10b39, 0x10b3f); - (0x10b3a, 0x10b3f); - (0x10b99, 0x10b9c); - (0x10f55, 0x10f59); - (0x10f86, 0x10f89); - (0x11047, 0x11048); - (0x11047, 0x1104d); - (0x110bb, 0x110bc); - (0x110be, 0x110c1); - (0x11140, 0x11143); - (0x11141, 0x11143); - (0x11174, 0x11175); - (0x111c5, 0x111c6); - (0x111c5, 0x111c8); - (0x111cd, 0x111cd); - (0x111db, 0x111db); - (0x111dd, 0x111df); - (0x111de, 0x111df); - (0x11238, 0x11239); - (0x11238, 0x1123c); - (0x11238, 0x1123d); - (0x1123b, 0x1123c); - (0x112a9, 0x112a9); - (0x1144b, 0x1144c); - (0x1144b, 0x1144d); - (0x1144b, 0x1144f); - (0x1145a, 0x1145b); - (0x1145d, 0x1145d); - (0x114c6, 0x114c6); - (0x115c1, 0x115d7); - (0x115c2, 0x115c3); - (0x115c2, 0x115c5); - (0x115c6, 0x115c8); - (0x115c9, 0x115d7); - (0x11641, 0x11642); - (0x11641, 0x11643); - (0x11660, 0x1166c); - (0x116b9, 0x116b9); - (0x1173c, 0x1173e); - (0x1183b, 0x1183b); - (0x11944, 0x11944); - (0x11944, 0x11946); - (0x11946, 0x11946); - (0x119e2, 0x119e2); - (0x11a3f, 0x11a46); - (0x11a42, 0x11a43); - (0x11a9a, 0x11a9c); - (0x11a9b, 0x11a9c); - (0x11a9e, 0x11aa2); - (0x11aa1, 0x11aa2); - (0x11c41, 0x11c42); - (0x11c41, 0x11c43); - (0x11c41, 0x11c45); - (0x11c70, 0x11c71); - (0x11c71, 0x11c71); - (0x11ef7, 0x11ef8); - (0x11fff, 0x11fff); - (0x12470, 0x12474); - (0x12ff1, 0x12ff2); - (0x16a6e, 0x16a6f); - (0x16af5, 0x16af5); - (0x16b37, 0x16b38); - (0x16b37, 0x16b39); - (0x16b37, 0x16b3b); - (0x16b44, 0x16b44); - (0x16e97, 0x16e98); - (0x16e97, 0x16e9a); - (0x16e98, 0x16e98); - (0x16fe2, 0x16fe2); - (0x1e95e, 0x1e95f); - (0x1da88, 0x1da88); - (0x1da87, 0x1da8b); - (0x1da87, 0x1da8a); - (0x1bc9f, 0x1bc9f); - ] + [0x21, 0x21; 0x21, 0x23; 0x22, 0x22; 0x25, 0x27; 0x27, 0x27; + 0x2a, 0x2a; 0x2c, 0x2c; 0x2e, 0x2e; 0x2e, 0x2f; 0x3a, 0x3a; + 0x3a, 0x3b; 0x3f, 0x3f; 0x3f, 0x40; 0x5c, 0x5c; 0xa1, 0xa1; + 0xa7, 0xa7; 0xb6, 0xb6; 0xb6, 0xb7; 0xb7, 0xb7; 0xbf, 0xbf; + 0x37e, 0x37e; 0x387, 0x387; 0x55a, 0x55f; 0x55f, 0x55f; 0x589, 0x589; + 0x5c0, 0x5c0; 0x5c3, 0x5c3; 0x5c6, 0x5c6; 0x5f3, 0x5f4; 0x5f4, 0x5f4; + 0x609, 0x60a; 0x60c, 0x60c; 0x60c, 0x60d; 0x61b, 0x61b; 0x61d, 0x61f; + 0x66a, 0x66d; 0x6d4, 0x6d4; 0x700, 0x702; 0x700, 0x70a; 0x700, 0x70d; + 0x70c, 0x70c; 0x7f7, 0x7f9; 0x7f8, 0x7f9; 0x7f9, 0x7f9; 0x830, 0x83e; + 0x837, 0x837; 0x839, 0x839; 0x83d, 0x83e; 0x85e, 0x85e; 0x964, 0x965; + 0x970, 0x970; 0x9fd, 0x9fd; 0xa76, 0xa76; 0xaf0, 0xaf0; 0xc77, 0xc77; + 0xc84, 0xc84; 0xdf4, 0xdf4; 0xe4f, 0xe4f; 0xe5a, 0xe5b; 0xf04, 0xf12; + 0xf08, 0xf08; 0xf0d, 0xf12; 0xf14, 0xf14; 0xf85, 0xf85; 0xfd0, 0xfd4; + 0xfd9, 0xfda; 0x104a, 0x104b; 0x104a, 0x104f; 0x10fb, 0x10fb; 0x1360, 0x1368; + 0x1361, 0x1368; 0x1362, 0x1362; 0x1367, 0x1368; 0x166e, 0x166e; 0x16eb, 0x16ed; + 0x1735, 0x1736; 0x17d4, 0x17d6; 0x17d8, 0x17da; 0x17da, 0x17da; 0x1800, 0x1805; + 0x1802, 0x1805; 0x1803, 0x1803; 0x1807, 0x180a; 0x1808, 0x1809; 0x1809, 0x1809; + 0x180a, 0x180a; 0x1944, 0x1945; 0x1a1e, 0x1a1f; 0x1aa0, 0x1aa6; 0x1aa8, 0x1aab; + 0x1aa8, 0x1aad; 0x1b5a, 0x1b5b; 0x1b5a, 0x1b60; 0x1b5d, 0x1b5f; 0x1b5e, 0x1b5f; + 0x1b7d, 0x1b7e; 0x1bfc, 0x1bff; 0x1c3b, 0x1c3c; 0x1c3b, 0x1c3f; 0x1c7e, 0x1c7f; + 0x1cc0, 0x1cc7; 0x1cd3, 0x1cd3; 0x2016, 0x2016; 0x2016, 0x2017; 0x2020, 0x2027; + 0x2024, 0x2024; 0x2027, 0x2027; 0x2030, 0x2038; 0x2032, 0x2034; 0x203b, 0x203e; + 0x203c, 0x203d; 0x2041, 0x2043; 0x2047, 0x2049; 0x2047, 0x2051; 0x2053, 0x2053; + 0x2055, 0x205e; 0x2cf9, 0x2cfc; 0x2cfe, 0x2cff; 0x2d70, 0x2d70; 0x2e00, 0x2e01; + 0x2e06, 0x2e08; 0x2e0b, 0x2e0b; 0x2e0e, 0x2e16; 0x2e18, 0x2e19; 0x2e1b, 0x2e1b; + 0x2e1e, 0x2e1f; 0x2e2a, 0x2e2e; 0x2e2e, 0x2e2e; 0x2e30, 0x2e39; 0x2e3c, 0x2e3c; + 0x2e3c, 0x2e3f; 0x2e41, 0x2e41; 0x2e43, 0x2e4f; 0x2e4c, 0x2e4c; 0x2e4e, 0x2e4f; + 0x2e52, 0x2e54; 0x2e53, 0x2e54; 0x3001, 0x3002; 0x3001, 0x3003; 0x3002, 0x3002; + 0x303d, 0x303d; 0x30fb, 0x30fb; 0xa4fe, 0xa4ff; 0xa4ff, 0xa4ff; 0xa60d, 0xa60f; + 0xa60e, 0xa60f; 0xa673, 0xa673; 0xa67e, 0xa67e; 0xa6f2, 0xa6f7; 0xa6f3, 0xa6f3; + 0xa6f3, 0xa6f7; 0xa6f7, 0xa6f7; 0xa874, 0xa877; 0xa876, 0xa877; 0xa8ce, 0xa8cf; + 0xa8f8, 0xa8fa; 0xa8fc, 0xa8fc; 0xa92e, 0xa92e; 0xa92e, 0xa92f; 0xa92f, 0xa92f; + 0xa95f, 0xa95f; 0xa9c1, 0xa9cd; 0xa9c7, 0xa9c9; 0xa9c8, 0xa9c9; 0xa9de, 0xa9df; + 0xaa5c, 0xaa5f; 0xaa5d, 0xaa5f; 0xaade, 0xaadf; 0xaadf, 0xaadf; 0xaaf0, 0xaaf1; + 0xabeb, 0xabeb; 0xfe10, 0xfe16; 0xfe13, 0xfe13; 0xfe19, 0xfe19; 0xfe30, 0xfe30; + 0xfe45, 0xfe46; 0xfe49, 0xfe4c; 0xfe50, 0xfe52; 0xfe52, 0xfe52; 0xfe54, 0xfe57; + 0xfe55, 0xfe55; 0xfe56, 0xfe57; 0xfe5f, 0xfe61; 0xfe61, 0xfe61; 0xfe68, 0xfe68; + 0xfe6a, 0xfe6b; 0xff01, 0xff01; 0xff01, 0xff03; 0xff02, 0xff02; 0xff05, 0xff07; + 0xff07, 0xff07; 0xff0a, 0xff0a; 0xff0c, 0xff0c; 0xff0e, 0xff0e; 0xff0e, 0xff0f; + 0xff1a, 0xff1a; 0xff1a, 0xff1b; 0xff1f, 0xff1f; 0xff1f, 0xff20; 0xff3c, 0xff3c; + 0xff61, 0xff61; 0xff64, 0xff64; 0xff64, 0xff65; 0xff65, 0xff65; 0x10100, 0x10102; + 0x1039f, 0x1039f; 0x103d0, 0x103d0; 0x1056f, 0x1056f; 0x10857, 0x10857; 0x1091f, 0x1091f; + 0x1093f, 0x1093f; 0x10a50, 0x10a58; 0x10a56, 0x10a57; 0x10a7f, 0x10a7f; 0x10af0, 0x10af5; + 0x10af0, 0x10af6; 0x10b39, 0x10b3f; 0x10b3a, 0x10b3f; 0x10b99, 0x10b9c; 0x10f55, 0x10f59; + 0x10f86, 0x10f89; 0x11047, 0x11048; 0x11047, 0x1104d; 0x110bb, 0x110bc; 0x110be, 0x110c1; + 0x11140, 0x11143; 0x11141, 0x11143; 0x11174, 0x11175; 0x111c5, 0x111c6; 0x111c5, 0x111c8; + 0x111cd, 0x111cd; 0x111db, 0x111db; 0x111dd, 0x111df; 0x111de, 0x111df; 0x11238, 0x11239; + 0x11238, 0x1123c; 0x11238, 0x1123d; 0x1123b, 0x1123c; 0x112a9, 0x112a9; 0x1144b, 0x1144c; + 0x1144b, 0x1144d; 0x1144b, 0x1144f; 0x1145a, 0x1145b; 0x1145d, 0x1145d; 0x114c6, 0x114c6; + 0x115c1, 0x115d7; 0x115c2, 0x115c3; 0x115c2, 0x115c5; 0x115c6, 0x115c8; 0x115c9, 0x115d7; + 0x11641, 0x11642; 0x11641, 0x11643; 0x11660, 0x1166c; 0x116b9, 0x116b9; 0x1173c, 0x1173e; + 0x1183b, 0x1183b; 0x11944, 0x11944; 0x11944, 0x11946; 0x11946, 0x11946; 0x119e2, 0x119e2; + 0x11a3f, 0x11a46; 0x11a42, 0x11a43; 0x11a9a, 0x11a9c; 0x11a9b, 0x11a9c; 0x11a9e, 0x11aa2; + 0x11aa1, 0x11aa2; 0x11c41, 0x11c42; 0x11c41, 0x11c43; 0x11c41, 0x11c45; 0x11c70, 0x11c71; + 0x11c71, 0x11c71; 0x11ef7, 0x11ef8; 0x11fff, 0x11fff; 0x12470, 0x12474; 0x12ff1, 0x12ff2; + 0x16a6e, 0x16a6f; 0x16af5, 0x16af5; 0x16b37, 0x16b38; 0x16b37, 0x16b39; 0x16b37, 0x16b3b; + 0x16b44, 0x16b44; 0x16e97, 0x16e98; 0x16e97, 0x16e9a; 0x16e98, 0x16e98; 0x16fe2, 0x16fe2; + 0x1e95e, 0x1e95f; 0x1da88, 0x1da88; 0x1da87, 0x1da8b; 0x1da87, 0x1da8a; 0x1bc9f, 0x1bc9f] let ps = - [ - (0x28, 0x28); - (0x5b, 0x5b); - (0x7b, 0x7b); - (0xf3a, 0xf3a); - (0xf3c, 0xf3c); - (0x169b, 0x169b); - (0x201a, 0x201a); - (0x201e, 0x201e); - (0x2045, 0x2045); - (0x207d, 0x207d); - (0x208d, 0x208d); - (0x2308, 0x2308); - (0x230a, 0x230a); - (0x2329, 0x2329); - (0x2768, 0x2768); - (0x276a, 0x276a); - (0x276c, 0x276c); - (0x276e, 0x276e); - (0x2770, 0x2770); - (0x2772, 0x2772); - (0x2774, 0x2774); - (0x27c5, 0x27c5); - (0x27e6, 0x27e6); - (0x27e8, 0x27e8); - (0x27ea, 0x27ea); - (0x27ec, 0x27ec); - (0x27ee, 0x27ee); - (0x2983, 0x2983); - (0x2985, 0x2985); - (0x2987, 0x2987); - (0x2989, 0x2989); - (0x298b, 0x298b); - (0x298d, 0x298d); - (0x298f, 0x298f); - (0x2991, 0x2991); - (0x2993, 0x2993); - (0x2995, 0x2995); - (0x2997, 0x2997); - (0x29d8, 0x29d8); - (0x29da, 0x29da); - (0x29fc, 0x29fc); - (0x2e22, 0x2e22); - (0x2e24, 0x2e24); - (0x2e26, 0x2e26); - (0x2e28, 0x2e28); - (0x2e42, 0x2e42); - (0x2e55, 0x2e55); - (0x2e57, 0x2e57); - (0x2e59, 0x2e59); - (0x2e5b, 0x2e5b); - (0x3008, 0x3008); - (0x300a, 0x300a); - (0x300c, 0x300c); - (0x300e, 0x300e); - (0x3010, 0x3010); - (0x3014, 0x3014); - (0x3016, 0x3016); - (0x3018, 0x3018); - (0x301a, 0x301a); - (0x301d, 0x301d); - (0xfd3f, 0xfd3f); - (0xfe17, 0xfe17); - (0xfe35, 0xfe35); - (0xfe37, 0xfe37); - (0xfe39, 0xfe39); - (0xfe3b, 0xfe3b); - (0xfe3d, 0xfe3d); - (0xfe3f, 0xfe3f); - (0xfe41, 0xfe41); - (0xfe43, 0xfe43); - (0xfe47, 0xfe47); - (0xfe59, 0xfe59); - (0xfe5b, 0xfe5b); - (0xfe5d, 0xfe5d); - (0xff08, 0xff08); - (0xff62, 0xff62); - (0xff5f, 0xff5f); - (0xff5b, 0xff5b); - (0xff3b, 0xff3b); - ] + [0x28, 0x28; 0x5b, 0x5b; 0x7b, 0x7b; 0xf3a, 0xf3a; 0xf3c, 0xf3c; + 0x169b, 0x169b; 0x201a, 0x201a; 0x201e, 0x201e; 0x2045, 0x2045; 0x207d, 0x207d; + 0x208d, 0x208d; 0x2308, 0x2308; 0x230a, 0x230a; 0x2329, 0x2329; 0x2768, 0x2768; + 0x276a, 0x276a; 0x276c, 0x276c; 0x276e, 0x276e; 0x2770, 0x2770; 0x2772, 0x2772; + 0x2774, 0x2774; 0x27c5, 0x27c5; 0x27e6, 0x27e6; 0x27e8, 0x27e8; 0x27ea, 0x27ea; + 0x27ec, 0x27ec; 0x27ee, 0x27ee; 0x2983, 0x2983; 0x2985, 0x2985; 0x2987, 0x2987; + 0x2989, 0x2989; 0x298b, 0x298b; 0x298d, 0x298d; 0x298f, 0x298f; 0x2991, 0x2991; + 0x2993, 0x2993; 0x2995, 0x2995; 0x2997, 0x2997; 0x29d8, 0x29d8; 0x29da, 0x29da; + 0x29fc, 0x29fc; 0x2e22, 0x2e22; 0x2e24, 0x2e24; 0x2e26, 0x2e26; 0x2e28, 0x2e28; + 0x2e42, 0x2e42; 0x2e55, 0x2e55; 0x2e57, 0x2e57; 0x2e59, 0x2e59; 0x2e5b, 0x2e5b; + 0x3008, 0x3008; 0x300a, 0x300a; 0x300c, 0x300c; 0x300e, 0x300e; 0x3010, 0x3010; + 0x3014, 0x3014; 0x3016, 0x3016; 0x3018, 0x3018; 0x301a, 0x301a; 0x301d, 0x301d; + 0xfd3f, 0xfd3f; 0xfe17, 0xfe17; 0xfe35, 0xfe35; 0xfe37, 0xfe37; 0xfe39, 0xfe39; + 0xfe3b, 0xfe3b; 0xfe3d, 0xfe3d; 0xfe3f, 0xfe3f; 0xfe41, 0xfe41; 0xfe43, 0xfe43; + 0xfe47, 0xfe47; 0xfe59, 0xfe59; 0xfe5b, 0xfe5b; 0xfe5d, 0xfe5d; 0xff08, 0xff08; + 0xff62, 0xff62; 0xff5f, 0xff5f; 0xff5b, 0xff5b; 0xff3b, 0xff3b] let sc = - [ - (0x24, 0x24); - (0xa2, 0xa5); - (0x58f, 0x58f); - (0x60b, 0x60b); - (0x7fe, 0x7ff); - (0x9f2, 0x9f3); - (0x9fb, 0x9fb); - (0xaf1, 0xaf1); - (0xbf9, 0xbf9); - (0xe3f, 0xe3f); - (0x17db, 0x17db); - (0x20a0, 0x20c0); - (0xa838, 0xa838); - (0xfdfc, 0xfdfc); - (0xfe69, 0xfe69); - (0xff04, 0xff04); - (0xffe0, 0xffe1); - (0xffe5, 0xffe6); - (0x11fdd, 0x11fe0); - (0x1e2ff, 0x1e2ff); - (0x1ecb0, 0x1ecb0); - ] + [0x24, 0x24; 0xa2, 0xa5; 0x58f, 0x58f; 0x60b, 0x60b; 0x7fe, 0x7ff; + 0x9f2, 0x9f3; 0x9fb, 0x9fb; 0xaf1, 0xaf1; 0xbf9, 0xbf9; 0xe3f, 0xe3f; + 0x17db, 0x17db; 0x20a0, 0x20c0; 0xa838, 0xa838; 0xfdfc, 0xfdfc; 0xfe69, 0xfe69; + 0xff04, 0xff04; 0xffe0, 0xffe1; 0xffe5, 0xffe6; 0x11fdd, 0x11fe0; 0x1e2ff, 0x1e2ff; + 0x1ecb0, 0x1ecb0] let sk = - [ - (0x5e, 0x5e); - (0x60, 0x60); - (0xa8, 0xa8); - (0xaf, 0xaf); - (0xb4, 0xb4); - (0xb8, 0xb8); - (0x2c2, 0x2c5); - (0x2d2, 0x2df); - (0x2e5, 0x2eb); - (0x2ed, 0x2ed); - (0x2ef, 0x2ff); - (0x375, 0x375); - (0x384, 0x385); - (0x888, 0x888); - (0x1fbd, 0x1fbd); - (0x1fbf, 0x1fc1); - (0x1fcd, 0x1fcf); - (0x1fdd, 0x1fdf); - (0x1fed, 0x1fef); - (0x1ffd, 0x1ffe); - (0x309b, 0x309c); - (0xa700, 0xa716); - (0xa720, 0xa721); - (0xa789, 0xa78a); - (0xab5b, 0xab5b); - (0xab6a, 0xab6b); - (0xfbb2, 0xfbc2); - (0xff3e, 0xff3e); - (0xff40, 0xff40); - (0xffe3, 0xffe3); - (0x1f3fb, 0x1f3ff); - ] + [0x5e, 0x5e; 0x60, 0x60; 0xa8, 0xa8; 0xaf, 0xaf; 0xb4, 0xb4; + 0xb8, 0xb8; 0x2c2, 0x2c5; 0x2d2, 0x2df; 0x2e5, 0x2eb; 0x2ed, 0x2ed; + 0x2ef, 0x2ff; 0x375, 0x375; 0x384, 0x385; 0x888, 0x888; 0x1fbd, 0x1fbd; + 0x1fbf, 0x1fc1; 0x1fcd, 0x1fcf; 0x1fdd, 0x1fdf; 0x1fed, 0x1fef; 0x1ffd, 0x1ffe; + 0x309b, 0x309c; 0xa700, 0xa716; 0xa720, 0xa721; 0xa789, 0xa78a; 0xab5b, 0xab5b; + 0xab6a, 0xab6b; 0xfbb2, 0xfbc2; 0xff3e, 0xff3e; 0xff40, 0xff40; 0xffe3, 0xffe3; + 0x1f3fb, 0x1f3ff] let sm = - [ - (0x2b, 0x2b); - (0x3c, 0x3e); - (0x7c, 0x7c); - (0x7e, 0x7e); - (0xac, 0xac); - (0xb1, 0xb1); - (0xd7, 0xd7); - (0xf7, 0xf7); - (0x3f6, 0x3f6); - (0x606, 0x608); - (0x2044, 0x2044); - (0x2052, 0x2052); - (0x207a, 0x207c); - (0x207b, 0x207b); - (0x208a, 0x208c); - (0x208b, 0x208b); - (0x2118, 0x2118); - (0x2140, 0x2144); - (0x214b, 0x214b); - (0x2190, 0x2194); - (0x219a, 0x219b); - (0x21a0, 0x21a0); - (0x21a3, 0x21a3); - (0x21a6, 0x21a6); - (0x21ae, 0x21ae); - (0x21ce, 0x21cf); - (0x21d2, 0x21d2); - (0x21d4, 0x21d4); - (0x21f4, 0x22ff); - (0x2212, 0x2212); - (0x2320, 0x2321); - (0x237c, 0x237c); - (0x239b, 0x23b3); - (0x23dc, 0x23e1); - (0x25b7, 0x25b7); - (0x25c1, 0x25c1); - (0x25f8, 0x25ff); - (0x266f, 0x266f); - (0x27c0, 0x27c4); - (0x27c7, 0x27e5); - (0x27f0, 0x27ff); - (0x2900, 0x2982); - (0x2999, 0x29d7); - (0x29dc, 0x29fb); - (0x29fe, 0x2aff); - (0x2b30, 0x2b44); - (0x2b47, 0x2b4c); - (0xfb29, 0xfb29); - (0xfe62, 0xfe62); - (0xfe64, 0xfe66); - (0xff0b, 0xff0b); - (0xff1c, 0xff1e); - (0xff5c, 0xff5c); - (0xff5e, 0xff5e); - (0xffe2, 0xffe2); - (0xffe9, 0xffec); - (0x1d6c1, 0x1d6c1); - (0x1d6db, 0x1d6db); - (0x1d6fb, 0x1d6fb); - (0x1d715, 0x1d715); - (0x1d735, 0x1d735); - (0x1d74f, 0x1d74f); - (0x1d76f, 0x1d76f); - (0x1d789, 0x1d789); - (0x1d7a9, 0x1d7a9); - (0x1eef0, 0x1eef1); - (0x1d7c3, 0x1d7c3); - ] + [0x2b, 0x2b; 0x3c, 0x3e; 0x7c, 0x7c; 0x7e, 0x7e; 0xac, 0xac; + 0xb1, 0xb1; 0xd7, 0xd7; 0xf7, 0xf7; 0x3f6, 0x3f6; 0x606, 0x608; + 0x2044, 0x2044; 0x2052, 0x2052; 0x207a, 0x207c; 0x207b, 0x207b; 0x208a, 0x208c; + 0x208b, 0x208b; 0x2118, 0x2118; 0x2140, 0x2144; 0x214b, 0x214b; 0x2190, 0x2194; + 0x219a, 0x219b; 0x21a0, 0x21a0; 0x21a3, 0x21a3; 0x21a6, 0x21a6; 0x21ae, 0x21ae; + 0x21ce, 0x21cf; 0x21d2, 0x21d2; 0x21d4, 0x21d4; 0x21f4, 0x22ff; 0x2212, 0x2212; + 0x2320, 0x2321; 0x237c, 0x237c; 0x239b, 0x23b3; 0x23dc, 0x23e1; 0x25b7, 0x25b7; + 0x25c1, 0x25c1; 0x25f8, 0x25ff; 0x266f, 0x266f; 0x27c0, 0x27c4; 0x27c7, 0x27e5; + 0x27f0, 0x27ff; 0x2900, 0x2982; 0x2999, 0x29d7; 0x29dc, 0x29fb; 0x29fe, 0x2aff; + 0x2b30, 0x2b44; 0x2b47, 0x2b4c; 0xfb29, 0xfb29; 0xfe62, 0xfe62; 0xfe64, 0xfe66; + 0xff0b, 0xff0b; 0xff1c, 0xff1e; 0xff5c, 0xff5c; 0xff5e, 0xff5e; 0xffe2, 0xffe2; + 0xffe9, 0xffec; 0x1d6c1, 0x1d6c1; 0x1d6db, 0x1d6db; 0x1d6fb, 0x1d6fb; 0x1d715, 0x1d715; + 0x1d735, 0x1d735; 0x1d74f, 0x1d74f; 0x1d76f, 0x1d76f; 0x1d789, 0x1d789; 0x1d7a9, 0x1d7a9; + 0x1eef0, 0x1eef1; 0x1d7c3, 0x1d7c3] let so = - [ - (0xa6, 0xa6); - (0xa9, 0xa9); - (0xae, 0xae); - (0xb0, 0xb0); - (0x482, 0x482); - (0x58d, 0x58e); - (0x60e, 0x60f); - (0x6de, 0x6de); - (0x6e9, 0x6e9); - (0x6fd, 0x6fe); - (0x7f6, 0x7f6); - (0x9fa, 0x9fa); - (0xb70, 0xb70); - (0xbf3, 0xbf8); - (0xbfa, 0xbfa); - (0xc7f, 0xc7f); - (0xd4f, 0xd4f); - (0xd79, 0xd79); - (0xf01, 0xf03); - (0xf13, 0xf13); - (0xf15, 0xf17); - (0xf1a, 0xf1f); - (0xf34, 0xf34); - (0xf36, 0xf36); - (0xf38, 0xf38); - (0xfbe, 0xfc5); - (0xfc7, 0xfcc); - (0xfce, 0xfcf); - (0xfd5, 0xfd8); - (0x109e, 0x109f); - (0x1390, 0x1399); - (0x166d, 0x166d); - (0x1940, 0x1940); - (0x19de, 0x19ff); - (0x1b61, 0x1b6a); - (0x1b74, 0x1b7c); - (0x2100, 0x2101); - (0x2103, 0x2106); - (0x2108, 0x2109); - (0x2114, 0x2114); - (0x2116, 0x2117); - (0x211e, 0x2123); - (0x2125, 0x2125); - (0x2127, 0x2127); - (0x2129, 0x2129); - (0x212e, 0x212e); - (0x213a, 0x213b); - (0x214a, 0x214a); - (0x214c, 0x214d); - (0x214f, 0x214f); - (0x218a, 0x218b); - (0x2195, 0x2199); - (0x219c, 0x219f); - (0x21a1, 0x21a2); - (0x21a4, 0x21a5); - (0x21a7, 0x21a7); - (0x21a7, 0x21ad); - (0x21a9, 0x21ad); - (0x21af, 0x21cd); - (0x21b0, 0x21b1); - (0x21b6, 0x21b7); - (0x21bc, 0x21cd); - (0x21d0, 0x21d1); - (0x21d3, 0x21d3); - (0x21d5, 0x21db); - (0x21d5, 0x21f3); - (0x21dd, 0x21dd); - (0x21e4, 0x21e5); - (0x2300, 0x2307); - (0x230c, 0x231f); - (0x2322, 0x2328); - (0x232b, 0x237b); - (0x237d, 0x239a); - (0x23b4, 0x23b5); - (0x23b4, 0x23db); - (0x23b7, 0x23b7); - (0x23d0, 0x23d0); - (0x23e2, 0x23e2); - (0x23e2, 0x2426); - (0x2440, 0x244a); - (0x249c, 0x24e9); - (0x24b6, 0x24cf); - (0x24b6, 0x24e9); - (0x24d0, 0x24e9); - (0x2500, 0x25b6); - (0x25a0, 0x25a1); - (0x25ae, 0x25b6); - (0x25b8, 0x25c0); - (0x25bc, 0x25c0); - (0x25c2, 0x25f7); - (0x25c6, 0x25c7); - (0x25ca, 0x25cb); - (0x25cf, 0x25d3); - (0x25e2, 0x25e2); - (0x25e4, 0x25e4); - (0x25e7, 0x25ec); - (0x2600, 0x266e); - (0x2605, 0x2606); - (0x2640, 0x2640); - (0x2642, 0x2642); - (0x2660, 0x2663); - (0x266d, 0x266e); - (0x2670, 0x2767); - (0x2794, 0x27bf); - (0x2800, 0x28ff); - (0x2b00, 0x2b2f); - (0x2b45, 0x2b46); - (0x2b4d, 0x2b73); - (0x2b76, 0x2b95); - (0x2b97, 0x2bff); - (0x2ce5, 0x2cea); - (0x2e50, 0x2e51); - (0x2e80, 0x2e99); - (0x2e9b, 0x2ef3); - (0x2f00, 0x2fd5); - (0x2ff0, 0x2ff1); - (0x2ff0, 0x2ffb); - (0x2ff2, 0x2ff3); - (0x2ff4, 0x2ffb); - (0x3004, 0x3004); - (0x3012, 0x3013); - (0x3020, 0x3020); - (0x3036, 0x3037); - (0x303e, 0x303f); - (0x3190, 0x3191); - (0x3196, 0x319f); - (0x31c0, 0x31e3); - (0x3200, 0x321e); - (0x322a, 0x3247); - (0x3250, 0x3250); - (0x3260, 0x327f); - (0x328a, 0x32b0); - (0x32c0, 0x33ff); - (0x4dc0, 0x4dff); - (0xa490, 0xa4c6); - (0xa828, 0xa82b); - (0xa836, 0xa837); - (0xa839, 0xa839); - (0xaa77, 0xaa79); - (0xfd40, 0xfd4f); - (0xfdcf, 0xfdcf); - (0xfdfd, 0xfdff); - (0xffe4, 0xffe4); - (0xffe8, 0xffe8); - (0xffed, 0xffee); - (0xfffc, 0xfffd); - (0x10137, 0x1013f); - (0x10179, 0x10189); - (0x1018c, 0x1018e); - (0x10190, 0x1019c); - (0x101a0, 0x101a0); - (0x101d0, 0x101fc); - (0x10877, 0x10878); - (0x10ac8, 0x10ac8); - (0x1173f, 0x1173f); - (0x11fd5, 0x11fdc); - (0x11fe1, 0x11ff1); - (0x16b3c, 0x16b3f); - (0x16b45, 0x16b45); - (0x1bc9c, 0x1bc9c); - (0x1cf50, 0x1cfc3); - (0x1d000, 0x1d0f5); - (0x1d100, 0x1d126); - (0x1d129, 0x1d164); - (0x1d16a, 0x1d16c); - (0x1d183, 0x1d184); - (0x1d18c, 0x1d1a9); - (0x1d1ae, 0x1d1ea); - (0x1d200, 0x1d241); - (0x1d245, 0x1d245); - (0x1d300, 0x1d356); - (0x1d800, 0x1d9ff); - (0x1da37, 0x1da3a); - (0x1da6d, 0x1da74); - (0x1da76, 0x1da83); - (0x1da85, 0x1da86); - (0x1e14f, 0x1e14f); - (0x1ecac, 0x1ecac); - (0x1ed2e, 0x1ed2e); - (0x1f000, 0x1f02b); - (0x1f030, 0x1f093); - (0x1f0a0, 0x1f0ae); - (0x1f0b1, 0x1f0bf); - (0x1f0c1, 0x1f0cf); - (0x1f0d1, 0x1f0f5); - (0x1f10d, 0x1f1ad); - (0x1f130, 0x1f149); - (0x1f150, 0x1f169); - (0x1f170, 0x1f189); - (0x1f1e6, 0x1f1ff); - (0x1f1e6, 0x1f202); - (0x1f210, 0x1f23b); - (0x1f240, 0x1f248); - (0x1f250, 0x1f251); - (0x1f260, 0x1f265); - (0x1f300, 0x1f3fa); - (0x1f400, 0x1f6d7); - (0x1f6dd, 0x1f6ec); - (0x1f6f0, 0x1f6fc); - (0x1f700, 0x1f773); - (0x1f780, 0x1f7d8); - (0x1f7e0, 0x1f7eb); - (0x1f7f0, 0x1f7f0); - (0x1f800, 0x1f80b); - (0x1f810, 0x1f847); - (0x1f850, 0x1f859); - (0x1f860, 0x1f887); - (0x1f890, 0x1f8ad); - (0x1f8b0, 0x1f8b1); - (0x1f900, 0x1fa53); - (0x1fa60, 0x1fa6d); - (0x1fa70, 0x1fa74); - (0x1fa78, 0x1fa7c); - (0x1fa80, 0x1fa86); - (0x1fa90, 0x1faac); - (0x1fab0, 0x1faba); - (0x1fac0, 0x1fac5); - (0x1fad0, 0x1fad9); - (0x1fae0, 0x1fae7); - (0x1faf0, 0x1faf6); - (0x1fb94, 0x1fbca); - (0x1fb00, 0x1fb92); - ] + [0xa6, 0xa6; 0xa9, 0xa9; 0xae, 0xae; 0xb0, 0xb0; 0x482, 0x482; + 0x58d, 0x58e; 0x60e, 0x60f; 0x6de, 0x6de; 0x6e9, 0x6e9; 0x6fd, 0x6fe; + 0x7f6, 0x7f6; 0x9fa, 0x9fa; 0xb70, 0xb70; 0xbf3, 0xbf8; 0xbfa, 0xbfa; + 0xc7f, 0xc7f; 0xd4f, 0xd4f; 0xd79, 0xd79; 0xf01, 0xf03; 0xf13, 0xf13; + 0xf15, 0xf17; 0xf1a, 0xf1f; 0xf34, 0xf34; 0xf36, 0xf36; 0xf38, 0xf38; + 0xfbe, 0xfc5; 0xfc7, 0xfcc; 0xfce, 0xfcf; 0xfd5, 0xfd8; 0x109e, 0x109f; + 0x1390, 0x1399; 0x166d, 0x166d; 0x1940, 0x1940; 0x19de, 0x19ff; 0x1b61, 0x1b6a; + 0x1b74, 0x1b7c; 0x2100, 0x2101; 0x2103, 0x2106; 0x2108, 0x2109; 0x2114, 0x2114; + 0x2116, 0x2117; 0x211e, 0x2123; 0x2125, 0x2125; 0x2127, 0x2127; 0x2129, 0x2129; + 0x212e, 0x212e; 0x213a, 0x213b; 0x214a, 0x214a; 0x214c, 0x214d; 0x214f, 0x214f; + 0x218a, 0x218b; 0x2195, 0x2199; 0x219c, 0x219f; 0x21a1, 0x21a2; 0x21a4, 0x21a5; + 0x21a7, 0x21a7; 0x21a7, 0x21ad; 0x21a9, 0x21ad; 0x21af, 0x21cd; 0x21b0, 0x21b1; + 0x21b6, 0x21b7; 0x21bc, 0x21cd; 0x21d0, 0x21d1; 0x21d3, 0x21d3; 0x21d5, 0x21db; + 0x21d5, 0x21f3; 0x21dd, 0x21dd; 0x21e4, 0x21e5; 0x2300, 0x2307; 0x230c, 0x231f; + 0x2322, 0x2328; 0x232b, 0x237b; 0x237d, 0x239a; 0x23b4, 0x23b5; 0x23b4, 0x23db; + 0x23b7, 0x23b7; 0x23d0, 0x23d0; 0x23e2, 0x23e2; 0x23e2, 0x2426; 0x2440, 0x244a; + 0x249c, 0x24e9; 0x24b6, 0x24cf; 0x24b6, 0x24e9; 0x24d0, 0x24e9; 0x2500, 0x25b6; + 0x25a0, 0x25a1; 0x25ae, 0x25b6; 0x25b8, 0x25c0; 0x25bc, 0x25c0; 0x25c2, 0x25f7; + 0x25c6, 0x25c7; 0x25ca, 0x25cb; 0x25cf, 0x25d3; 0x25e2, 0x25e2; 0x25e4, 0x25e4; + 0x25e7, 0x25ec; 0x2600, 0x266e; 0x2605, 0x2606; 0x2640, 0x2640; 0x2642, 0x2642; + 0x2660, 0x2663; 0x266d, 0x266e; 0x2670, 0x2767; 0x2794, 0x27bf; 0x2800, 0x28ff; + 0x2b00, 0x2b2f; 0x2b45, 0x2b46; 0x2b4d, 0x2b73; 0x2b76, 0x2b95; 0x2b97, 0x2bff; + 0x2ce5, 0x2cea; 0x2e50, 0x2e51; 0x2e80, 0x2e99; 0x2e9b, 0x2ef3; 0x2f00, 0x2fd5; + 0x2ff0, 0x2ff1; 0x2ff0, 0x2ffb; 0x2ff2, 0x2ff3; 0x2ff4, 0x2ffb; 0x3004, 0x3004; + 0x3012, 0x3013; 0x3020, 0x3020; 0x3036, 0x3037; 0x303e, 0x303f; 0x3190, 0x3191; + 0x3196, 0x319f; 0x31c0, 0x31e3; 0x3200, 0x321e; 0x322a, 0x3247; 0x3250, 0x3250; + 0x3260, 0x327f; 0x328a, 0x32b0; 0x32c0, 0x33ff; 0x4dc0, 0x4dff; 0xa490, 0xa4c6; + 0xa828, 0xa82b; 0xa836, 0xa837; 0xa839, 0xa839; 0xaa77, 0xaa79; 0xfd40, 0xfd4f; + 0xfdcf, 0xfdcf; 0xfdfd, 0xfdff; 0xffe4, 0xffe4; 0xffe8, 0xffe8; 0xffed, 0xffee; + 0xfffc, 0xfffd; 0x10137, 0x1013f; 0x10179, 0x10189; 0x1018c, 0x1018e; 0x10190, 0x1019c; + 0x101a0, 0x101a0; 0x101d0, 0x101fc; 0x10877, 0x10878; 0x10ac8, 0x10ac8; 0x1173f, 0x1173f; + 0x11fd5, 0x11fdc; 0x11fe1, 0x11ff1; 0x16b3c, 0x16b3f; 0x16b45, 0x16b45; 0x1bc9c, 0x1bc9c; + 0x1cf50, 0x1cfc3; 0x1d000, 0x1d0f5; 0x1d100, 0x1d126; 0x1d129, 0x1d164; 0x1d16a, 0x1d16c; + 0x1d183, 0x1d184; 0x1d18c, 0x1d1a9; 0x1d1ae, 0x1d1ea; 0x1d200, 0x1d241; 0x1d245, 0x1d245; + 0x1d300, 0x1d356; 0x1d800, 0x1d9ff; 0x1da37, 0x1da3a; 0x1da6d, 0x1da74; 0x1da76, 0x1da83; + 0x1da85, 0x1da86; 0x1e14f, 0x1e14f; 0x1ecac, 0x1ecac; 0x1ed2e, 0x1ed2e; 0x1f000, 0x1f02b; + 0x1f030, 0x1f093; 0x1f0a0, 0x1f0ae; 0x1f0b1, 0x1f0bf; 0x1f0c1, 0x1f0cf; 0x1f0d1, 0x1f0f5; + 0x1f10d, 0x1f1ad; 0x1f130, 0x1f149; 0x1f150, 0x1f169; 0x1f170, 0x1f189; 0x1f1e6, 0x1f1ff; + 0x1f1e6, 0x1f202; 0x1f210, 0x1f23b; 0x1f240, 0x1f248; 0x1f250, 0x1f251; 0x1f260, 0x1f265; + 0x1f300, 0x1f3fa; 0x1f400, 0x1f6d7; 0x1f6dd, 0x1f6ec; 0x1f6f0, 0x1f6fc; 0x1f700, 0x1f773; + 0x1f780, 0x1f7d8; 0x1f7e0, 0x1f7eb; 0x1f7f0, 0x1f7f0; 0x1f800, 0x1f80b; 0x1f810, 0x1f847; + 0x1f850, 0x1f859; 0x1f860, 0x1f887; 0x1f890, 0x1f8ad; 0x1f8b0, 0x1f8b1; 0x1f900, 0x1fa53; + 0x1fa60, 0x1fa6d; 0x1fa70, 0x1fa74; 0x1fa78, 0x1fa7c; 0x1fa80, 0x1fa86; 0x1fa90, 0x1faac; + 0x1fab0, 0x1faba; 0x1fac0, 0x1fac5; 0x1fad0, 0x1fad9; 0x1fae0, 0x1fae7; 0x1faf0, 0x1faf6; + 0x1fb94, 0x1fbca; 0x1fb00, 0x1fb92] + + let zl = + [0x2028, 0x2028] - let zl = [(0x2028, 0x2028)] - let zp = [(0x2029, 0x2029)] + let zp = + [0x2029, 0x2029] let zs = - [ - (0x20, 0x20); - (0xa0, 0xa0); - (0x1680, 0x1680); - (0x2000, 0x200a); - (0x202f, 0x202f); - (0x3000, 0x3000); - (0x205f, 0x205f); - ] + [0x20, 0x20; 0xa0, 0xa0; 0x1680, 0x1680; 0x2000, 0x200a; 0x202f, 0x202f; + 0x3000, 0x3000; 0x205f, 0x205f] + + let list = [ + ("cc", cc); + ("cf", cf); + ("cn", cn); + ("co", co); + ("cs", cs); + ("ll", ll); + ("lm", lm); + ("lo", lo); + ("lt", lt); + ("lu", lu); + ("mc", mc); + ("me", me); + ("mn", mn); + ("nd", nd); + ("nl", nl); + ("no", no); + ("pc", pc); + ("pd", pd); + ("pe", pe); + ("pf", pf); + ("pi", pi); + ("po", po); + ("ps", ps); + ("sc", sc); + ("sk", sk); + ("sm", sm); + ("so", so); + ("zl", zl); + ("zp", zp); + ("zs", zs) + ] - let list = - [ - ("cc", cc); - ("cf", cf); - ("cn", cn); - ("co", co); - ("cs", cs); - ("ll", ll); - ("lm", lm); - ("lo", lo); - ("lt", lt); - ("lu", lu); - ("mc", mc); - ("me", me); - ("mn", mn); - ("nd", nd); - ("nl", nl); - ("no", no); - ("pc", pc); - ("pd", pd); - ("pe", pe); - ("pf", pf); - ("pi", pi); - ("po", po); - ("ps", ps); - ("sc", sc); - ("sk", sk); - ("sm", sm); - ("so", so); - ("zl", zl); - ("zp", zp); - ("zs", zs); - ] end module Properties = struct + let alphabetic = - [ - (0x41, 0x5a); - (0x61, 0x7a); - (0xaa, 0xaa); - (0xb5, 0xb5); - (0xba, 0xba); - (0xc0, 0xd6); - (0xd8, 0xf6); - (0xf8, 0x1ba); - (0x1bb, 0x1bb); - (0x1bc, 0x1bf); - (0x1c0, 0x1c3); - (0x1c4, 0x293); - (0x294, 0x294); - (0x295, 0x2af); - (0x2b0, 0x2c1); - (0x2c6, 0x2d1); - (0x2e0, 0x2e4); - (0x2ec, 0x2ec); - (0x2ee, 0x2ee); - (0x345, 0x345); - (0x370, 0x373); - (0x374, 0x374); - (0x376, 0x377); - (0x37a, 0x37a); - (0x37b, 0x37d); - (0x37f, 0x37f); - (0x386, 0x386); - (0x388, 0x38a); - (0x38c, 0x38c); - (0x38e, 0x3a1); - (0x3a3, 0x3f5); - (0x3f7, 0x481); - (0x48a, 0x52f); - (0x531, 0x556); - (0x559, 0x559); - (0x560, 0x588); - (0x5b0, 0x5bd); - (0x5bf, 0x5bf); - (0x5c1, 0x5c2); - (0x5c4, 0x5c5); - (0x5c7, 0x5c7); - (0x5d0, 0x5ea); - (0x5ef, 0x5f2); - (0x610, 0x61a); - (0x620, 0x63f); - (0x640, 0x640); - (0x641, 0x64a); - (0x64b, 0x657); - (0x659, 0x65f); - (0x66e, 0x66f); - (0x670, 0x670); - (0x671, 0x6d3); - (0x6d5, 0x6d5); - (0x6d6, 0x6dc); - (0x6e1, 0x6e4); - (0x6e5, 0x6e6); - (0x6e7, 0x6e8); - (0x6ed, 0x6ed); - (0x6ee, 0x6ef); - (0x6fa, 0x6fc); - (0x6ff, 0x6ff); - (0x710, 0x710); - (0x711, 0x711); - (0x712, 0x72f); - (0x730, 0x73f); - (0x74d, 0x7a5); - (0x7a6, 0x7b0); - (0x7b1, 0x7b1); - (0x7ca, 0x7ea); - (0x7f4, 0x7f5); - (0x7fa, 0x7fa); - (0x800, 0x815); - (0x816, 0x817); - (0x81a, 0x81a); - (0x81b, 0x823); - (0x824, 0x824); - (0x825, 0x827); - (0x828, 0x828); - (0x829, 0x82c); - (0x840, 0x858); - (0x860, 0x86a); - (0x870, 0x887); - (0x889, 0x88e); - (0x8a0, 0x8c8); - (0x8c9, 0x8c9); - (0x8d4, 0x8df); - (0x8e3, 0x8e9); - (0x8f0, 0x902); - (0x903, 0x903); - (0x904, 0x939); - (0x93a, 0x93a); - (0x93b, 0x93b); - (0x93d, 0x93d); - (0x93e, 0x940); - (0x941, 0x948); - (0x949, 0x94c); - (0x94e, 0x94f); - (0x950, 0x950); - (0x955, 0x957); - (0x958, 0x961); - (0x962, 0x963); - (0x971, 0x971); - (0x972, 0x980); - (0x981, 0x981); - (0x982, 0x983); - (0x985, 0x98c); - (0x98f, 0x990); - (0x993, 0x9a8); - (0x9aa, 0x9b0); - (0x9b2, 0x9b2); - (0x9b6, 0x9b9); - (0x9bd, 0x9bd); - (0x9be, 0x9c0); - (0x9c1, 0x9c4); - (0x9c7, 0x9c8); - (0x9cb, 0x9cc); - (0x9ce, 0x9ce); - (0x9d7, 0x9d7); - (0x9dc, 0x9dd); - (0x9df, 0x9e1); - (0x9e2, 0x9e3); - (0x9f0, 0x9f1); - (0x9fc, 0x9fc); - (0xa01, 0xa02); - (0xa03, 0xa03); - (0xa05, 0xa0a); - (0xa0f, 0xa10); - (0xa13, 0xa28); - (0xa2a, 0xa30); - (0xa32, 0xa33); - (0xa35, 0xa36); - (0xa38, 0xa39); - (0xa3e, 0xa40); - (0xa41, 0xa42); - (0xa47, 0xa48); - (0xa4b, 0xa4c); - (0xa51, 0xa51); - (0xa59, 0xa5c); - (0xa5e, 0xa5e); - (0xa70, 0xa71); - (0xa72, 0xa74); - (0xa75, 0xa75); - (0xa81, 0xa82); - (0xa83, 0xa83); - (0xa85, 0xa8d); - (0xa8f, 0xa91); - (0xa93, 0xaa8); - (0xaaa, 0xab0); - (0xab2, 0xab3); - (0xab5, 0xab9); - (0xabd, 0xabd); - (0xabe, 0xac0); - (0xac1, 0xac5); - (0xac7, 0xac8); - (0xac9, 0xac9); - (0xacb, 0xacc); - (0xad0, 0xad0); - (0xae0, 0xae1); - (0xae2, 0xae3); - (0xaf9, 0xaf9); - (0xafa, 0xafc); - (0xb01, 0xb01); - (0xb02, 0xb03); - (0xb05, 0xb0c); - (0xb0f, 0xb10); - (0xb13, 0xb28); - (0xb2a, 0xb30); - (0xb32, 0xb33); - (0xb35, 0xb39); - (0xb3d, 0xb3d); - (0xb3e, 0xb3e); - (0xb3f, 0xb3f); - (0xb40, 0xb40); - (0xb41, 0xb44); - (0xb47, 0xb48); - (0xb4b, 0xb4c); - (0xb56, 0xb56); - (0xb57, 0xb57); - (0xb5c, 0xb5d); - (0xb5f, 0xb61); - (0xb62, 0xb63); - (0xb71, 0xb71); - (0xb82, 0xb82); - (0xb83, 0xb83); - (0xb85, 0xb8a); - (0xb8e, 0xb90); - (0xb92, 0xb95); - (0xb99, 0xb9a); - (0xb9c, 0xb9c); - (0xb9e, 0xb9f); - (0xba3, 0xba4); - (0xba8, 0xbaa); - (0xbae, 0xbb9); - (0xbbe, 0xbbf); - (0xbc0, 0xbc0); - (0xbc1, 0xbc2); - (0xbc6, 0xbc8); - (0xbca, 0xbcc); - (0xbd0, 0xbd0); - (0xbd7, 0xbd7); - (0xc00, 0xc00); - (0xc01, 0xc03); - (0xc05, 0xc0c); - (0xc0e, 0xc10); - (0xc12, 0xc28); - (0xc2a, 0xc39); - (0xc3d, 0xc3d); - (0xc3e, 0xc40); - (0xc41, 0xc44); - (0xc46, 0xc48); - (0xc4a, 0xc4c); - (0xc55, 0xc56); - (0xc58, 0xc5a); - (0xc5d, 0xc5d); - (0xc60, 0xc61); - (0xc62, 0xc63); - (0xc80, 0xc80); - (0xc81, 0xc81); - (0xc82, 0xc83); - (0xc85, 0xc8c); - (0xc8e, 0xc90); - (0xc92, 0xca8); - (0xcaa, 0xcb3); - (0xcb5, 0xcb9); - (0xcbd, 0xcbd); - (0xcbe, 0xcbe); - (0xcbf, 0xcbf); - (0xcc0, 0xcc4); - (0xcc6, 0xcc6); - (0xcc7, 0xcc8); - (0xcca, 0xccb); - (0xccc, 0xccc); - (0xcd5, 0xcd6); - (0xcdd, 0xcde); - (0xce0, 0xce1); - (0xce2, 0xce3); - (0xcf1, 0xcf2); - (0xd00, 0xd01); - (0xd02, 0xd03); - (0xd04, 0xd0c); - (0xd0e, 0xd10); - (0xd12, 0xd3a); - (0xd3d, 0xd3d); - (0xd3e, 0xd40); - (0xd41, 0xd44); - (0xd46, 0xd48); - (0xd4a, 0xd4c); - (0xd4e, 0xd4e); - (0xd54, 0xd56); - (0xd57, 0xd57); - (0xd5f, 0xd61); - (0xd62, 0xd63); - (0xd7a, 0xd7f); - (0xd81, 0xd81); - (0xd82, 0xd83); - (0xd85, 0xd96); - (0xd9a, 0xdb1); - (0xdb3, 0xdbb); - (0xdbd, 0xdbd); - (0xdc0, 0xdc6); - (0xdcf, 0xdd1); - (0xdd2, 0xdd4); - (0xdd6, 0xdd6); - (0xdd8, 0xddf); - (0xdf2, 0xdf3); - (0xe01, 0xe30); - (0xe31, 0xe31); - (0xe32, 0xe33); - (0xe34, 0xe3a); - (0xe40, 0xe45); - (0xe46, 0xe46); - (0xe4d, 0xe4d); - (0xe81, 0xe82); - (0xe84, 0xe84); - (0xe86, 0xe8a); - (0xe8c, 0xea3); - (0xea5, 0xea5); - (0xea7, 0xeb0); - (0xeb1, 0xeb1); - (0xeb2, 0xeb3); - (0xeb4, 0xeb9); - (0xebb, 0xebc); - (0xebd, 0xebd); - (0xec0, 0xec4); - (0xec6, 0xec6); - (0xecd, 0xecd); - (0xedc, 0xedf); - (0xf00, 0xf00); - (0xf40, 0xf47); - (0xf49, 0xf6c); - (0xf71, 0xf7e); - (0xf7f, 0xf7f); - (0xf80, 0xf81); - (0xf88, 0xf8c); - (0xf8d, 0xf97); - (0xf99, 0xfbc); - (0x1000, 0x102a); - (0x102b, 0x102c); - (0x102d, 0x1030); - (0x1031, 0x1031); - (0x1032, 0x1036); - (0x1038, 0x1038); - (0x103b, 0x103c); - (0x103d, 0x103e); - (0x103f, 0x103f); - (0x1050, 0x1055); - (0x1056, 0x1057); - (0x1058, 0x1059); - (0x105a, 0x105d); - (0x105e, 0x1060); - (0x1061, 0x1061); - (0x1062, 0x1064); - (0x1065, 0x1066); - (0x1067, 0x106d); - (0x106e, 0x1070); - (0x1071, 0x1074); - (0x1075, 0x1081); - (0x1082, 0x1082); - (0x1083, 0x1084); - (0x1085, 0x1086); - (0x1087, 0x108c); - (0x108d, 0x108d); - (0x108e, 0x108e); - (0x108f, 0x108f); - (0x109a, 0x109c); - (0x109d, 0x109d); - (0x10a0, 0x10c5); - (0x10c7, 0x10c7); - (0x10cd, 0x10cd); - (0x10d0, 0x10fa); - (0x10fc, 0x10fc); - (0x10fd, 0x10ff); - (0x1100, 0x1248); - (0x124a, 0x124d); - (0x1250, 0x1256); - (0x1258, 0x1258); - (0x125a, 0x125d); - (0x1260, 0x1288); - (0x128a, 0x128d); - (0x1290, 0x12b0); - (0x12b2, 0x12b5); - (0x12b8, 0x12be); - (0x12c0, 0x12c0); - (0x12c2, 0x12c5); - (0x12c8, 0x12d6); - (0x12d8, 0x1310); - (0x1312, 0x1315); - (0x1318, 0x135a); - (0x1380, 0x138f); - (0x13a0, 0x13f5); - (0x13f8, 0x13fd); - (0x1401, 0x166c); - (0x166f, 0x167f); - (0x1681, 0x169a); - (0x16a0, 0x16ea); - (0x16ee, 0x16f0); - (0x16f1, 0x16f8); - (0x1700, 0x1711); - (0x1712, 0x1713); - (0x171f, 0x1731); - (0x1732, 0x1733); - (0x1740, 0x1751); - (0x1752, 0x1753); - (0x1760, 0x176c); - (0x176e, 0x1770); - (0x1772, 0x1773); - (0x1780, 0x17b3); - (0x17b6, 0x17b6); - (0x17b7, 0x17bd); - (0x17be, 0x17c5); - (0x17c6, 0x17c6); - (0x17c7, 0x17c8); - (0x17d7, 0x17d7); - (0x17dc, 0x17dc); - (0x1820, 0x1842); - (0x1843, 0x1843); - (0x1844, 0x1878); - (0x1880, 0x1884); - (0x1885, 0x1886); - (0x1887, 0x18a8); - (0x18a9, 0x18a9); - (0x18aa, 0x18aa); - (0x18b0, 0x18f5); - (0x1900, 0x191e); - (0x1920, 0x1922); - (0x1923, 0x1926); - (0x1927, 0x1928); - (0x1929, 0x192b); - (0x1930, 0x1931); - (0x1932, 0x1932); - (0x1933, 0x1938); - (0x1950, 0x196d); - (0x1970, 0x1974); - (0x1980, 0x19ab); - (0x19b0, 0x19c9); - (0x1a00, 0x1a16); - (0x1a17, 0x1a18); - (0x1a19, 0x1a1a); - (0x1a1b, 0x1a1b); - (0x1a20, 0x1a54); - (0x1a55, 0x1a55); - (0x1a56, 0x1a56); - (0x1a57, 0x1a57); - (0x1a58, 0x1a5e); - (0x1a61, 0x1a61); - (0x1a62, 0x1a62); - (0x1a63, 0x1a64); - (0x1a65, 0x1a6c); - (0x1a6d, 0x1a72); - (0x1a73, 0x1a74); - (0x1aa7, 0x1aa7); - (0x1abf, 0x1ac0); - (0x1acc, 0x1ace); - (0x1b00, 0x1b03); - (0x1b04, 0x1b04); - (0x1b05, 0x1b33); - (0x1b35, 0x1b35); - (0x1b36, 0x1b3a); - (0x1b3b, 0x1b3b); - (0x1b3c, 0x1b3c); - (0x1b3d, 0x1b41); - (0x1b42, 0x1b42); - (0x1b43, 0x1b43); - (0x1b45, 0x1b4c); - (0x1b80, 0x1b81); - (0x1b82, 0x1b82); - (0x1b83, 0x1ba0); - (0x1ba1, 0x1ba1); - (0x1ba2, 0x1ba5); - (0x1ba6, 0x1ba7); - (0x1ba8, 0x1ba9); - (0x1bac, 0x1bad); - (0x1bae, 0x1baf); - (0x1bba, 0x1be5); - (0x1be7, 0x1be7); - (0x1be8, 0x1be9); - (0x1bea, 0x1bec); - (0x1bed, 0x1bed); - (0x1bee, 0x1bee); - (0x1bef, 0x1bf1); - (0x1c00, 0x1c23); - (0x1c24, 0x1c2b); - (0x1c2c, 0x1c33); - (0x1c34, 0x1c35); - (0x1c36, 0x1c36); - (0x1c4d, 0x1c4f); - (0x1c5a, 0x1c77); - (0x1c78, 0x1c7d); - (0x1c80, 0x1c88); - (0x1c90, 0x1cba); - (0x1cbd, 0x1cbf); - (0x1ce9, 0x1cec); - (0x1cee, 0x1cf3); - (0x1cf5, 0x1cf6); - (0x1cfa, 0x1cfa); - (0x1d00, 0x1d2b); - (0x1d2c, 0x1d6a); - (0x1d6b, 0x1d77); - (0x1d78, 0x1d78); - (0x1d79, 0x1d9a); - (0x1d9b, 0x1dbf); - (0x1de7, 0x1df4); - (0x1e00, 0x1f15); - (0x1f18, 0x1f1d); - (0x1f20, 0x1f45); - (0x1f48, 0x1f4d); - (0x1f50, 0x1f57); - (0x1f59, 0x1f59); - (0x1f5b, 0x1f5b); - (0x1f5d, 0x1f5d); - (0x1f5f, 0x1f7d); - (0x1f80, 0x1fb4); - (0x1fb6, 0x1fbc); - (0x1fbe, 0x1fbe); - (0x1fc2, 0x1fc4); - (0x1fc6, 0x1fcc); - (0x1fd0, 0x1fd3); - (0x1fd6, 0x1fdb); - (0x1fe0, 0x1fec); - (0x1ff2, 0x1ff4); - (0x1ff6, 0x1ffc); - (0x2071, 0x2071); - (0x207f, 0x207f); - (0x2090, 0x209c); - (0x2102, 0x2102); - (0x2107, 0x2107); - (0x210a, 0x2113); - (0x2115, 0x2115); - (0x2119, 0x211d); - (0x2124, 0x2124); - (0x2126, 0x2126); - (0x2128, 0x2128); - (0x212a, 0x212d); - (0x212f, 0x2134); - (0x2135, 0x2138); - (0x2139, 0x2139); - (0x213c, 0x213f); - (0x2145, 0x2149); - (0x214e, 0x214e); - (0x2160, 0x2182); - (0x2183, 0x2184); - (0x2185, 0x2188); - (0x24b6, 0x24e9); - (0x2c00, 0x2c7b); - (0x2c7c, 0x2c7d); - (0x2c7e, 0x2ce4); - (0x2ceb, 0x2cee); - (0x2cf2, 0x2cf3); - (0x2d00, 0x2d25); - (0x2d27, 0x2d27); - (0x2d2d, 0x2d2d); - (0x2d30, 0x2d67); - (0x2d6f, 0x2d6f); - (0x2d80, 0x2d96); - (0x2da0, 0x2da6); - (0x2da8, 0x2dae); - (0x2db0, 0x2db6); - (0x2db8, 0x2dbe); - (0x2dc0, 0x2dc6); - (0x2dc8, 0x2dce); - (0x2dd0, 0x2dd6); - (0x2dd8, 0x2dde); - (0x2de0, 0x2dff); - (0x2e2f, 0x2e2f); - (0x3005, 0x3005); - (0x3006, 0x3006); - (0x3007, 0x3007); - (0x3021, 0x3029); - (0x3031, 0x3035); - (0x3038, 0x303a); - (0x303b, 0x303b); - (0x303c, 0x303c); - (0x3041, 0x3096); - (0x309d, 0x309e); - (0x309f, 0x309f); - (0x30a1, 0x30fa); - (0x30fc, 0x30fe); - (0x30ff, 0x30ff); - (0x3105, 0x312f); - (0x3131, 0x318e); - (0x31a0, 0x31bf); - (0x31f0, 0x31ff); - (0x3400, 0x4dbf); - (0x4e00, 0xa014); - (0xa015, 0xa015); - (0xa016, 0xa48c); - (0xa4d0, 0xa4f7); - (0xa4f8, 0xa4fd); - (0xa500, 0xa60b); - (0xa60c, 0xa60c); - (0xa610, 0xa61f); - (0xa62a, 0xa62b); - (0xa640, 0xa66d); - (0xa66e, 0xa66e); - (0xa674, 0xa67b); - (0xa67f, 0xa67f); - (0xa680, 0xa69b); - (0xa69c, 0xa69d); - (0xa69e, 0xa69f); - (0xa6a0, 0xa6e5); - (0xa6e6, 0xa6ef); - (0xa717, 0xa71f); - (0xa722, 0xa76f); - (0xa770, 0xa770); - (0xa771, 0xa787); - (0xa788, 0xa788); - (0xa78b, 0xa78e); - (0xa78f, 0xa78f); - (0xa790, 0xa7ca); - (0xa7d0, 0xa7d1); - (0xa7d3, 0xa7d3); - (0xa7d5, 0xa7d9); - (0xa7f2, 0xa7f4); - (0xa7f5, 0xa7f6); - (0xa7f7, 0xa7f7); - (0xa7f8, 0xa7f9); - (0xa7fa, 0xa7fa); - (0xa7fb, 0xa801); - (0xa802, 0xa802); - (0xa803, 0xa805); - (0xa807, 0xa80a); - (0xa80b, 0xa80b); - (0xa80c, 0xa822); - (0xa823, 0xa824); - (0xa825, 0xa826); - (0xa827, 0xa827); - (0xa840, 0xa873); - (0xa880, 0xa881); - (0xa882, 0xa8b3); - (0xa8b4, 0xa8c3); - (0xa8c5, 0xa8c5); - (0xa8f2, 0xa8f7); - (0xa8fb, 0xa8fb); - (0xa8fd, 0xa8fe); - (0xa8ff, 0xa8ff); - (0xa90a, 0xa925); - (0xa926, 0xa92a); - (0xa930, 0xa946); - (0xa947, 0xa951); - (0xa952, 0xa952); - (0xa960, 0xa97c); - (0xa980, 0xa982); - (0xa983, 0xa983); - (0xa984, 0xa9b2); - (0xa9b4, 0xa9b5); - (0xa9b6, 0xa9b9); - (0xa9ba, 0xa9bb); - (0xa9bc, 0xa9bd); - (0xa9be, 0xa9bf); - (0xa9cf, 0xa9cf); - (0xa9e0, 0xa9e4); - (0xa9e5, 0xa9e5); - (0xa9e6, 0xa9e6); - (0xa9e7, 0xa9ef); - (0xa9fa, 0xa9fe); - (0xaa00, 0xaa28); - (0xaa29, 0xaa2e); - (0xaa2f, 0xaa30); - (0xaa31, 0xaa32); - (0xaa33, 0xaa34); - (0xaa35, 0xaa36); - (0xaa40, 0xaa42); - (0xaa43, 0xaa43); - (0xaa44, 0xaa4b); - (0xaa4c, 0xaa4c); - (0xaa4d, 0xaa4d); - (0xaa60, 0xaa6f); - (0xaa70, 0xaa70); - (0xaa71, 0xaa76); - (0xaa7a, 0xaa7a); - (0xaa7b, 0xaa7b); - (0xaa7c, 0xaa7c); - (0xaa7d, 0xaa7d); - (0xaa7e, 0xaaaf); - (0xaab0, 0xaab0); - (0xaab1, 0xaab1); - (0xaab2, 0xaab4); - (0xaab5, 0xaab6); - (0xaab7, 0xaab8); - (0xaab9, 0xaabd); - (0xaabe, 0xaabe); - (0xaac0, 0xaac0); - (0xaac2, 0xaac2); - (0xaadb, 0xaadc); - (0xaadd, 0xaadd); - (0xaae0, 0xaaea); - (0xaaeb, 0xaaeb); - (0xaaec, 0xaaed); - (0xaaee, 0xaaef); - (0xaaf2, 0xaaf2); - (0xaaf3, 0xaaf4); - (0xaaf5, 0xaaf5); - (0xab01, 0xab06); - (0xab09, 0xab0e); - (0xab11, 0xab16); - (0xab20, 0xab26); - (0xab28, 0xab2e); - (0xab30, 0xab5a); - (0xab5c, 0xab5f); - (0xab60, 0xab68); - (0xab69, 0xab69); - (0xab70, 0xabbf); - (0xabc0, 0xabe2); - (0xabe3, 0xabe4); - (0xabe5, 0xabe5); - (0xabe6, 0xabe7); - (0xabe8, 0xabe8); - (0xabe9, 0xabea); - (0xac00, 0xd7a3); - (0xd7b0, 0xd7c6); - (0xd7cb, 0xd7fb); - (0xf900, 0xfa6d); - (0xfa70, 0xfad9); - (0xfb00, 0xfb06); - (0xfb13, 0xfb17); - (0xfb1d, 0xfb1d); - (0xfb1e, 0xfb1e); - (0xfb1f, 0xfb28); - (0xfb2a, 0xfb36); - (0xfb38, 0xfb3c); - (0xfb3e, 0xfb3e); - (0xfb40, 0xfb41); - (0xfb43, 0xfb44); - (0xfb46, 0xfbb1); - (0xfbd3, 0xfd3d); - (0xfd50, 0xfd8f); - (0xfd92, 0xfdc7); - (0xfdf0, 0xfdfb); - (0xfe70, 0xfe74); - (0xfe76, 0xfefc); - (0xff21, 0xff3a); - (0xff41, 0xff5a); - (0xff66, 0xff6f); - (0xff70, 0xff70); - (0xff71, 0xff9d); - (0xff9e, 0xff9f); - (0xffa0, 0xffbe); - (0xffc2, 0xffc7); - (0xffca, 0xffcf); - (0xffd2, 0xffd7); - (0xffda, 0xffdc); - (0x10000, 0x1000b); - (0x1000d, 0x10026); - (0x10028, 0x1003a); - (0x1003c, 0x1003d); - (0x1003f, 0x1004d); - (0x10050, 0x1005d); - (0x10080, 0x100fa); - (0x10140, 0x10174); - (0x10280, 0x1029c); - (0x102a0, 0x102d0); - (0x10300, 0x1031f); - (0x1032d, 0x10340); - (0x10341, 0x10341); - (0x10342, 0x10349); - (0x1034a, 0x1034a); - (0x10350, 0x10375); - (0x10376, 0x1037a); - (0x10380, 0x1039d); - (0x103a0, 0x103c3); - (0x103c8, 0x103cf); - (0x103d1, 0x103d5); - (0x10400, 0x1044f); - (0x10450, 0x1049d); - (0x104b0, 0x104d3); - (0x104d8, 0x104fb); - (0x10500, 0x10527); - (0x10530, 0x10563); - (0x10570, 0x1057a); - (0x1057c, 0x1058a); - (0x1058c, 0x10592); - (0x10594, 0x10595); - (0x10597, 0x105a1); - (0x105a3, 0x105b1); - (0x105b3, 0x105b9); - (0x105bb, 0x105bc); - (0x10600, 0x10736); - (0x10740, 0x10755); - (0x10760, 0x10767); - (0x10780, 0x10785); - (0x10787, 0x107b0); - (0x107b2, 0x107ba); - (0x10800, 0x10805); - (0x10808, 0x10808); - (0x1080a, 0x10835); - (0x10837, 0x10838); - (0x1083c, 0x1083c); - (0x1083f, 0x10855); - (0x10860, 0x10876); - (0x10880, 0x1089e); - (0x108e0, 0x108f2); - (0x108f4, 0x108f5); - (0x10900, 0x10915); - (0x10920, 0x10939); - (0x10980, 0x109b7); - (0x109be, 0x109bf); - (0x10a00, 0x10a00); - (0x10a01, 0x10a03); - (0x10a05, 0x10a06); - (0x10a0c, 0x10a0f); - (0x10a10, 0x10a13); - (0x10a15, 0x10a17); - (0x10a19, 0x10a35); - (0x10a60, 0x10a7c); - (0x10a80, 0x10a9c); - (0x10ac0, 0x10ac7); - (0x10ac9, 0x10ae4); - (0x10b00, 0x10b35); - (0x10b40, 0x10b55); - (0x10b60, 0x10b72); - (0x10b80, 0x10b91); - (0x10c00, 0x10c48); - (0x10c80, 0x10cb2); - (0x10cc0, 0x10cf2); - (0x10d00, 0x10d23); - (0x10d24, 0x10d27); - (0x10e80, 0x10ea9); - (0x10eab, 0x10eac); - (0x10eb0, 0x10eb1); - (0x10f00, 0x10f1c); - (0x10f27, 0x10f27); - (0x10f30, 0x10f45); - (0x10f70, 0x10f81); - (0x10fb0, 0x10fc4); - (0x10fe0, 0x10ff6); - (0x11000, 0x11000); - (0x11001, 0x11001); - (0x11002, 0x11002); - (0x11003, 0x11037); - (0x11038, 0x11045); - (0x11071, 0x11072); - (0x11073, 0x11074); - (0x11075, 0x11075); - (0x11082, 0x11082); - (0x11083, 0x110af); - (0x110b0, 0x110b2); - (0x110b3, 0x110b6); - (0x110b7, 0x110b8); - (0x110c2, 0x110c2); - (0x110d0, 0x110e8); - (0x11100, 0x11102); - (0x11103, 0x11126); - (0x11127, 0x1112b); - (0x1112c, 0x1112c); - (0x1112d, 0x11132); - (0x11144, 0x11144); - (0x11145, 0x11146); - (0x11147, 0x11147); - (0x11150, 0x11172); - (0x11176, 0x11176); - (0x11180, 0x11181); - (0x11182, 0x11182); - (0x11183, 0x111b2); - (0x111b3, 0x111b5); - (0x111b6, 0x111be); - (0x111bf, 0x111bf); - (0x111c1, 0x111c4); - (0x111ce, 0x111ce); - (0x111cf, 0x111cf); - (0x111da, 0x111da); - (0x111dc, 0x111dc); - (0x11200, 0x11211); - (0x11213, 0x1122b); - (0x1122c, 0x1122e); - (0x1122f, 0x11231); - (0x11232, 0x11233); - (0x11234, 0x11234); - (0x11237, 0x11237); - (0x1123e, 0x1123e); - (0x11280, 0x11286); - (0x11288, 0x11288); - (0x1128a, 0x1128d); - (0x1128f, 0x1129d); - (0x1129f, 0x112a8); - (0x112b0, 0x112de); - (0x112df, 0x112df); - (0x112e0, 0x112e2); - (0x112e3, 0x112e8); - (0x11300, 0x11301); - (0x11302, 0x11303); - (0x11305, 0x1130c); - (0x1130f, 0x11310); - (0x11313, 0x11328); - (0x1132a, 0x11330); - (0x11332, 0x11333); - (0x11335, 0x11339); - (0x1133d, 0x1133d); - (0x1133e, 0x1133f); - (0x11340, 0x11340); - (0x11341, 0x11344); - (0x11347, 0x11348); - (0x1134b, 0x1134c); - (0x11350, 0x11350); - (0x11357, 0x11357); - (0x1135d, 0x11361); - (0x11362, 0x11363); - (0x11400, 0x11434); - (0x11435, 0x11437); - (0x11438, 0x1143f); - (0x11440, 0x11441); - (0x11443, 0x11444); - (0x11445, 0x11445); - (0x11447, 0x1144a); - (0x1145f, 0x11461); - (0x11480, 0x114af); - (0x114b0, 0x114b2); - (0x114b3, 0x114b8); - (0x114b9, 0x114b9); - (0x114ba, 0x114ba); - (0x114bb, 0x114be); - (0x114bf, 0x114c0); - (0x114c1, 0x114c1); - (0x114c4, 0x114c5); - (0x114c7, 0x114c7); - (0x11580, 0x115ae); - (0x115af, 0x115b1); - (0x115b2, 0x115b5); - (0x115b8, 0x115bb); - (0x115bc, 0x115bd); - (0x115be, 0x115be); - (0x115d8, 0x115db); - (0x115dc, 0x115dd); - (0x11600, 0x1162f); - (0x11630, 0x11632); - (0x11633, 0x1163a); - (0x1163b, 0x1163c); - (0x1163d, 0x1163d); - (0x1163e, 0x1163e); - (0x11640, 0x11640); - (0x11644, 0x11644); - (0x11680, 0x116aa); - (0x116ab, 0x116ab); - (0x116ac, 0x116ac); - (0x116ad, 0x116ad); - (0x116ae, 0x116af); - (0x116b0, 0x116b5); - (0x116b8, 0x116b8); - (0x11700, 0x1171a); - (0x1171d, 0x1171f); - (0x11720, 0x11721); - (0x11722, 0x11725); - (0x11726, 0x11726); - (0x11727, 0x1172a); - (0x11740, 0x11746); - (0x11800, 0x1182b); - (0x1182c, 0x1182e); - (0x1182f, 0x11837); - (0x11838, 0x11838); - (0x118a0, 0x118df); - (0x118ff, 0x11906); - (0x11909, 0x11909); - (0x1190c, 0x11913); - (0x11915, 0x11916); - (0x11918, 0x1192f); - (0x11930, 0x11935); - (0x11937, 0x11938); - (0x1193b, 0x1193c); - (0x1193f, 0x1193f); - (0x11940, 0x11940); - (0x11941, 0x11941); - (0x11942, 0x11942); - (0x119a0, 0x119a7); - (0x119aa, 0x119d0); - (0x119d1, 0x119d3); - (0x119d4, 0x119d7); - (0x119da, 0x119db); - (0x119dc, 0x119df); - (0x119e1, 0x119e1); - (0x119e3, 0x119e3); - (0x119e4, 0x119e4); - (0x11a00, 0x11a00); - (0x11a01, 0x11a0a); - (0x11a0b, 0x11a32); - (0x11a35, 0x11a38); - (0x11a39, 0x11a39); - (0x11a3a, 0x11a3a); - (0x11a3b, 0x11a3e); - (0x11a50, 0x11a50); - (0x11a51, 0x11a56); - (0x11a57, 0x11a58); - (0x11a59, 0x11a5b); - (0x11a5c, 0x11a89); - (0x11a8a, 0x11a96); - (0x11a97, 0x11a97); - (0x11a9d, 0x11a9d); - (0x11ab0, 0x11af8); - (0x11c00, 0x11c08); - (0x11c0a, 0x11c2e); - (0x11c2f, 0x11c2f); - (0x11c30, 0x11c36); - (0x11c38, 0x11c3d); - (0x11c3e, 0x11c3e); - (0x11c40, 0x11c40); - (0x11c72, 0x11c8f); - (0x11c92, 0x11ca7); - (0x11ca9, 0x11ca9); - (0x11caa, 0x11cb0); - (0x11cb1, 0x11cb1); - (0x11cb2, 0x11cb3); - (0x11cb4, 0x11cb4); - (0x11cb5, 0x11cb6); - (0x11d00, 0x11d06); - (0x11d08, 0x11d09); - (0x11d0b, 0x11d30); - (0x11d31, 0x11d36); - (0x11d3a, 0x11d3a); - (0x11d3c, 0x11d3d); - (0x11d3f, 0x11d41); - (0x11d43, 0x11d43); - (0x11d46, 0x11d46); - (0x11d47, 0x11d47); - (0x11d60, 0x11d65); - (0x11d67, 0x11d68); - (0x11d6a, 0x11d89); - (0x11d8a, 0x11d8e); - (0x11d90, 0x11d91); - (0x11d93, 0x11d94); - (0x11d95, 0x11d95); - (0x11d96, 0x11d96); - (0x11d98, 0x11d98); - (0x11ee0, 0x11ef2); - (0x11ef3, 0x11ef4); - (0x11ef5, 0x11ef6); - (0x11fb0, 0x11fb0); - (0x12000, 0x12399); - (0x12400, 0x1246e); - (0x12480, 0x12543); - (0x12f90, 0x12ff0); - (0x13000, 0x1342e); - (0x14400, 0x14646); - (0x16800, 0x16a38); - (0x16a40, 0x16a5e); - (0x16a70, 0x16abe); - (0x16ad0, 0x16aed); - (0x16b00, 0x16b2f); - (0x16b40, 0x16b43); - (0x16b63, 0x16b77); - (0x16b7d, 0x16b8f); - (0x16e40, 0x16e7f); - (0x16f00, 0x16f4a); - (0x16f4f, 0x16f4f); - (0x16f50, 0x16f50); - (0x16f51, 0x16f87); - (0x16f8f, 0x16f92); - (0x16f93, 0x16f9f); - (0x16fe0, 0x16fe1); - (0x16fe3, 0x16fe3); - (0x16ff0, 0x16ff1); - (0x17000, 0x187f7); - (0x18800, 0x18cd5); - (0x18d00, 0x18d08); - (0x1aff0, 0x1aff3); - (0x1aff5, 0x1affb); - (0x1affd, 0x1affe); - (0x1b000, 0x1b122); - (0x1b150, 0x1b152); - (0x1b164, 0x1b167); - (0x1b170, 0x1b2fb); - (0x1bc00, 0x1bc6a); - (0x1bc70, 0x1bc7c); - (0x1bc80, 0x1bc88); - (0x1bc90, 0x1bc99); - (0x1bc9e, 0x1bc9e); - (0x1d400, 0x1d454); - (0x1d456, 0x1d49c); - (0x1d49e, 0x1d49f); - (0x1d4a2, 0x1d4a2); - (0x1d4a5, 0x1d4a6); - (0x1d4a9, 0x1d4ac); - (0x1d4ae, 0x1d4b9); - (0x1d4bb, 0x1d4bb); - (0x1d4bd, 0x1d4c3); - (0x1d4c5, 0x1d505); - (0x1d507, 0x1d50a); - (0x1d50d, 0x1d514); - (0x1d516, 0x1d51c); - (0x1d51e, 0x1d539); - (0x1d53b, 0x1d53e); - (0x1d540, 0x1d544); - (0x1d546, 0x1d546); - (0x1d54a, 0x1d550); - (0x1d552, 0x1d6a5); - (0x1d6a8, 0x1d6c0); - (0x1d6c2, 0x1d6da); - (0x1d6dc, 0x1d6fa); - (0x1d6fc, 0x1d714); - (0x1d716, 0x1d734); - (0x1d736, 0x1d74e); - (0x1d750, 0x1d76e); - (0x1d770, 0x1d788); - (0x1d78a, 0x1d7a8); - (0x1d7aa, 0x1d7c2); - (0x1d7c4, 0x1d7cb); - (0x1df00, 0x1df09); - (0x1df0a, 0x1df0a); - (0x1df0b, 0x1df1e); - (0x1e000, 0x1e006); - (0x1e008, 0x1e018); - (0x1e01b, 0x1e021); - (0x1e023, 0x1e024); - (0x1e026, 0x1e02a); - (0x1e100, 0x1e12c); - (0x1e137, 0x1e13d); - (0x1e14e, 0x1e14e); - (0x1e290, 0x1e2ad); - (0x1e2c0, 0x1e2eb); - (0x1e7e0, 0x1e7e6); - (0x1e7e8, 0x1e7eb); - (0x1e7ed, 0x1e7ee); - (0x1e7f0, 0x1e7fe); - (0x1e800, 0x1e8c4); - (0x1e900, 0x1e943); - (0x1e947, 0x1e947); - (0x1e94b, 0x1e94b); - (0x1ee00, 0x1ee03); - (0x1ee05, 0x1ee1f); - (0x1ee21, 0x1ee22); - (0x1ee24, 0x1ee24); - (0x1ee27, 0x1ee27); - (0x1ee29, 0x1ee32); - (0x1ee34, 0x1ee37); - (0x1ee39, 0x1ee39); - (0x1ee3b, 0x1ee3b); - (0x1ee42, 0x1ee42); - (0x1ee47, 0x1ee47); - (0x1ee49, 0x1ee49); - (0x1ee4b, 0x1ee4b); - (0x1ee4d, 0x1ee4f); - (0x1ee51, 0x1ee52); - (0x1ee54, 0x1ee54); - (0x1ee57, 0x1ee57); - (0x1ee59, 0x1ee59); - (0x1ee5b, 0x1ee5b); - (0x1ee5d, 0x1ee5d); - (0x1ee5f, 0x1ee5f); - (0x1ee61, 0x1ee62); - (0x1ee64, 0x1ee64); - (0x1ee67, 0x1ee6a); - (0x1ee6c, 0x1ee72); - (0x1ee74, 0x1ee77); - (0x1ee79, 0x1ee7c); - (0x1ee7e, 0x1ee7e); - (0x1ee80, 0x1ee89); - (0x1ee8b, 0x1ee9b); - (0x1eea1, 0x1eea3); - (0x1eea5, 0x1eea9); - (0x1eeab, 0x1eebb); - (0x1f130, 0x1f149); - (0x1f150, 0x1f169); - (0x1f170, 0x1f189); - (0x20000, 0x2a6df); - (0x2a700, 0x2b738); - (0x2b740, 0x2b81d); - (0x2b820, 0x2cea1); - (0x2ceb0, 0x2ebe0); - (0x30000, 0x3134a); - (0x2f800, 0x2fa1d); - ] + [0x41, 0x5a; 0x61, 0x7a; 0xaa, 0xaa; 0xb5, 0xb5; 0xba, 0xba; + 0xc0, 0xd6; 0xd8, 0xf6; 0xf8, 0x1ba; 0x1bb, 0x1bb; 0x1bc, 0x1bf; + 0x1c0, 0x1c3; 0x1c4, 0x293; 0x294, 0x294; 0x295, 0x2af; 0x2b0, 0x2c1; + 0x2c6, 0x2d1; 0x2e0, 0x2e4; 0x2ec, 0x2ec; 0x2ee, 0x2ee; 0x345, 0x345; + 0x370, 0x373; 0x374, 0x374; 0x376, 0x377; 0x37a, 0x37a; 0x37b, 0x37d; + 0x37f, 0x37f; 0x386, 0x386; 0x388, 0x38a; 0x38c, 0x38c; 0x38e, 0x3a1; + 0x3a3, 0x3f5; 0x3f7, 0x481; 0x48a, 0x52f; 0x531, 0x556; 0x559, 0x559; + 0x560, 0x588; 0x5b0, 0x5bd; 0x5bf, 0x5bf; 0x5c1, 0x5c2; 0x5c4, 0x5c5; + 0x5c7, 0x5c7; 0x5d0, 0x5ea; 0x5ef, 0x5f2; 0x610, 0x61a; 0x620, 0x63f; + 0x640, 0x640; 0x641, 0x64a; 0x64b, 0x657; 0x659, 0x65f; 0x66e, 0x66f; + 0x670, 0x670; 0x671, 0x6d3; 0x6d5, 0x6d5; 0x6d6, 0x6dc; 0x6e1, 0x6e4; + 0x6e5, 0x6e6; 0x6e7, 0x6e8; 0x6ed, 0x6ed; 0x6ee, 0x6ef; 0x6fa, 0x6fc; + 0x6ff, 0x6ff; 0x710, 0x710; 0x711, 0x711; 0x712, 0x72f; 0x730, 0x73f; + 0x74d, 0x7a5; 0x7a6, 0x7b0; 0x7b1, 0x7b1; 0x7ca, 0x7ea; 0x7f4, 0x7f5; + 0x7fa, 0x7fa; 0x800, 0x815; 0x816, 0x817; 0x81a, 0x81a; 0x81b, 0x823; + 0x824, 0x824; 0x825, 0x827; 0x828, 0x828; 0x829, 0x82c; 0x840, 0x858; + 0x860, 0x86a; 0x870, 0x887; 0x889, 0x88e; 0x8a0, 0x8c8; 0x8c9, 0x8c9; + 0x8d4, 0x8df; 0x8e3, 0x8e9; 0x8f0, 0x902; 0x903, 0x903; 0x904, 0x939; + 0x93a, 0x93a; 0x93b, 0x93b; 0x93d, 0x93d; 0x93e, 0x940; 0x941, 0x948; + 0x949, 0x94c; 0x94e, 0x94f; 0x950, 0x950; 0x955, 0x957; 0x958, 0x961; + 0x962, 0x963; 0x971, 0x971; 0x972, 0x980; 0x981, 0x981; 0x982, 0x983; + 0x985, 0x98c; 0x98f, 0x990; 0x993, 0x9a8; 0x9aa, 0x9b0; 0x9b2, 0x9b2; + 0x9b6, 0x9b9; 0x9bd, 0x9bd; 0x9be, 0x9c0; 0x9c1, 0x9c4; 0x9c7, 0x9c8; + 0x9cb, 0x9cc; 0x9ce, 0x9ce; 0x9d7, 0x9d7; 0x9dc, 0x9dd; 0x9df, 0x9e1; + 0x9e2, 0x9e3; 0x9f0, 0x9f1; 0x9fc, 0x9fc; 0xa01, 0xa02; 0xa03, 0xa03; + 0xa05, 0xa0a; 0xa0f, 0xa10; 0xa13, 0xa28; 0xa2a, 0xa30; 0xa32, 0xa33; + 0xa35, 0xa36; 0xa38, 0xa39; 0xa3e, 0xa40; 0xa41, 0xa42; 0xa47, 0xa48; + 0xa4b, 0xa4c; 0xa51, 0xa51; 0xa59, 0xa5c; 0xa5e, 0xa5e; 0xa70, 0xa71; + 0xa72, 0xa74; 0xa75, 0xa75; 0xa81, 0xa82; 0xa83, 0xa83; 0xa85, 0xa8d; + 0xa8f, 0xa91; 0xa93, 0xaa8; 0xaaa, 0xab0; 0xab2, 0xab3; 0xab5, 0xab9; + 0xabd, 0xabd; 0xabe, 0xac0; 0xac1, 0xac5; 0xac7, 0xac8; 0xac9, 0xac9; + 0xacb, 0xacc; 0xad0, 0xad0; 0xae0, 0xae1; 0xae2, 0xae3; 0xaf9, 0xaf9; + 0xafa, 0xafc; 0xb01, 0xb01; 0xb02, 0xb03; 0xb05, 0xb0c; 0xb0f, 0xb10; + 0xb13, 0xb28; 0xb2a, 0xb30; 0xb32, 0xb33; 0xb35, 0xb39; 0xb3d, 0xb3d; + 0xb3e, 0xb3e; 0xb3f, 0xb3f; 0xb40, 0xb40; 0xb41, 0xb44; 0xb47, 0xb48; + 0xb4b, 0xb4c; 0xb56, 0xb56; 0xb57, 0xb57; 0xb5c, 0xb5d; 0xb5f, 0xb61; + 0xb62, 0xb63; 0xb71, 0xb71; 0xb82, 0xb82; 0xb83, 0xb83; 0xb85, 0xb8a; + 0xb8e, 0xb90; 0xb92, 0xb95; 0xb99, 0xb9a; 0xb9c, 0xb9c; 0xb9e, 0xb9f; + 0xba3, 0xba4; 0xba8, 0xbaa; 0xbae, 0xbb9; 0xbbe, 0xbbf; 0xbc0, 0xbc0; + 0xbc1, 0xbc2; 0xbc6, 0xbc8; 0xbca, 0xbcc; 0xbd0, 0xbd0; 0xbd7, 0xbd7; + 0xc00, 0xc00; 0xc01, 0xc03; 0xc05, 0xc0c; 0xc0e, 0xc10; 0xc12, 0xc28; + 0xc2a, 0xc39; 0xc3d, 0xc3d; 0xc3e, 0xc40; 0xc41, 0xc44; 0xc46, 0xc48; + 0xc4a, 0xc4c; 0xc55, 0xc56; 0xc58, 0xc5a; 0xc5d, 0xc5d; 0xc60, 0xc61; + 0xc62, 0xc63; 0xc80, 0xc80; 0xc81, 0xc81; 0xc82, 0xc83; 0xc85, 0xc8c; + 0xc8e, 0xc90; 0xc92, 0xca8; 0xcaa, 0xcb3; 0xcb5, 0xcb9; 0xcbd, 0xcbd; + 0xcbe, 0xcbe; 0xcbf, 0xcbf; 0xcc0, 0xcc4; 0xcc6, 0xcc6; 0xcc7, 0xcc8; + 0xcca, 0xccb; 0xccc, 0xccc; 0xcd5, 0xcd6; 0xcdd, 0xcde; 0xce0, 0xce1; + 0xce2, 0xce3; 0xcf1, 0xcf2; 0xd00, 0xd01; 0xd02, 0xd03; 0xd04, 0xd0c; + 0xd0e, 0xd10; 0xd12, 0xd3a; 0xd3d, 0xd3d; 0xd3e, 0xd40; 0xd41, 0xd44; + 0xd46, 0xd48; 0xd4a, 0xd4c; 0xd4e, 0xd4e; 0xd54, 0xd56; 0xd57, 0xd57; + 0xd5f, 0xd61; 0xd62, 0xd63; 0xd7a, 0xd7f; 0xd81, 0xd81; 0xd82, 0xd83; + 0xd85, 0xd96; 0xd9a, 0xdb1; 0xdb3, 0xdbb; 0xdbd, 0xdbd; 0xdc0, 0xdc6; + 0xdcf, 0xdd1; 0xdd2, 0xdd4; 0xdd6, 0xdd6; 0xdd8, 0xddf; 0xdf2, 0xdf3; + 0xe01, 0xe30; 0xe31, 0xe31; 0xe32, 0xe33; 0xe34, 0xe3a; 0xe40, 0xe45; + 0xe46, 0xe46; 0xe4d, 0xe4d; 0xe81, 0xe82; 0xe84, 0xe84; 0xe86, 0xe8a; + 0xe8c, 0xea3; 0xea5, 0xea5; 0xea7, 0xeb0; 0xeb1, 0xeb1; 0xeb2, 0xeb3; + 0xeb4, 0xeb9; 0xebb, 0xebc; 0xebd, 0xebd; 0xec0, 0xec4; 0xec6, 0xec6; + 0xecd, 0xecd; 0xedc, 0xedf; 0xf00, 0xf00; 0xf40, 0xf47; 0xf49, 0xf6c; + 0xf71, 0xf7e; 0xf7f, 0xf7f; 0xf80, 0xf81; 0xf88, 0xf8c; 0xf8d, 0xf97; + 0xf99, 0xfbc; 0x1000, 0x102a; 0x102b, 0x102c; 0x102d, 0x1030; 0x1031, 0x1031; + 0x1032, 0x1036; 0x1038, 0x1038; 0x103b, 0x103c; 0x103d, 0x103e; 0x103f, 0x103f; + 0x1050, 0x1055; 0x1056, 0x1057; 0x1058, 0x1059; 0x105a, 0x105d; 0x105e, 0x1060; + 0x1061, 0x1061; 0x1062, 0x1064; 0x1065, 0x1066; 0x1067, 0x106d; 0x106e, 0x1070; + 0x1071, 0x1074; 0x1075, 0x1081; 0x1082, 0x1082; 0x1083, 0x1084; 0x1085, 0x1086; + 0x1087, 0x108c; 0x108d, 0x108d; 0x108e, 0x108e; 0x108f, 0x108f; 0x109a, 0x109c; + 0x109d, 0x109d; 0x10a0, 0x10c5; 0x10c7, 0x10c7; 0x10cd, 0x10cd; 0x10d0, 0x10fa; + 0x10fc, 0x10fc; 0x10fd, 0x10ff; 0x1100, 0x1248; 0x124a, 0x124d; 0x1250, 0x1256; + 0x1258, 0x1258; 0x125a, 0x125d; 0x1260, 0x1288; 0x128a, 0x128d; 0x1290, 0x12b0; + 0x12b2, 0x12b5; 0x12b8, 0x12be; 0x12c0, 0x12c0; 0x12c2, 0x12c5; 0x12c8, 0x12d6; + 0x12d8, 0x1310; 0x1312, 0x1315; 0x1318, 0x135a; 0x1380, 0x138f; 0x13a0, 0x13f5; + 0x13f8, 0x13fd; 0x1401, 0x166c; 0x166f, 0x167f; 0x1681, 0x169a; 0x16a0, 0x16ea; + 0x16ee, 0x16f0; 0x16f1, 0x16f8; 0x1700, 0x1711; 0x1712, 0x1713; 0x171f, 0x1731; + 0x1732, 0x1733; 0x1740, 0x1751; 0x1752, 0x1753; 0x1760, 0x176c; 0x176e, 0x1770; + 0x1772, 0x1773; 0x1780, 0x17b3; 0x17b6, 0x17b6; 0x17b7, 0x17bd; 0x17be, 0x17c5; + 0x17c6, 0x17c6; 0x17c7, 0x17c8; 0x17d7, 0x17d7; 0x17dc, 0x17dc; 0x1820, 0x1842; + 0x1843, 0x1843; 0x1844, 0x1878; 0x1880, 0x1884; 0x1885, 0x1886; 0x1887, 0x18a8; + 0x18a9, 0x18a9; 0x18aa, 0x18aa; 0x18b0, 0x18f5; 0x1900, 0x191e; 0x1920, 0x1922; + 0x1923, 0x1926; 0x1927, 0x1928; 0x1929, 0x192b; 0x1930, 0x1931; 0x1932, 0x1932; + 0x1933, 0x1938; 0x1950, 0x196d; 0x1970, 0x1974; 0x1980, 0x19ab; 0x19b0, 0x19c9; + 0x1a00, 0x1a16; 0x1a17, 0x1a18; 0x1a19, 0x1a1a; 0x1a1b, 0x1a1b; 0x1a20, 0x1a54; + 0x1a55, 0x1a55; 0x1a56, 0x1a56; 0x1a57, 0x1a57; 0x1a58, 0x1a5e; 0x1a61, 0x1a61; + 0x1a62, 0x1a62; 0x1a63, 0x1a64; 0x1a65, 0x1a6c; 0x1a6d, 0x1a72; 0x1a73, 0x1a74; + 0x1aa7, 0x1aa7; 0x1abf, 0x1ac0; 0x1acc, 0x1ace; 0x1b00, 0x1b03; 0x1b04, 0x1b04; + 0x1b05, 0x1b33; 0x1b35, 0x1b35; 0x1b36, 0x1b3a; 0x1b3b, 0x1b3b; 0x1b3c, 0x1b3c; + 0x1b3d, 0x1b41; 0x1b42, 0x1b42; 0x1b43, 0x1b43; 0x1b45, 0x1b4c; 0x1b80, 0x1b81; + 0x1b82, 0x1b82; 0x1b83, 0x1ba0; 0x1ba1, 0x1ba1; 0x1ba2, 0x1ba5; 0x1ba6, 0x1ba7; + 0x1ba8, 0x1ba9; 0x1bac, 0x1bad; 0x1bae, 0x1baf; 0x1bba, 0x1be5; 0x1be7, 0x1be7; + 0x1be8, 0x1be9; 0x1bea, 0x1bec; 0x1bed, 0x1bed; 0x1bee, 0x1bee; 0x1bef, 0x1bf1; + 0x1c00, 0x1c23; 0x1c24, 0x1c2b; 0x1c2c, 0x1c33; 0x1c34, 0x1c35; 0x1c36, 0x1c36; + 0x1c4d, 0x1c4f; 0x1c5a, 0x1c77; 0x1c78, 0x1c7d; 0x1c80, 0x1c88; 0x1c90, 0x1cba; + 0x1cbd, 0x1cbf; 0x1ce9, 0x1cec; 0x1cee, 0x1cf3; 0x1cf5, 0x1cf6; 0x1cfa, 0x1cfa; + 0x1d00, 0x1d2b; 0x1d2c, 0x1d6a; 0x1d6b, 0x1d77; 0x1d78, 0x1d78; 0x1d79, 0x1d9a; + 0x1d9b, 0x1dbf; 0x1de7, 0x1df4; 0x1e00, 0x1f15; 0x1f18, 0x1f1d; 0x1f20, 0x1f45; + 0x1f48, 0x1f4d; 0x1f50, 0x1f57; 0x1f59, 0x1f59; 0x1f5b, 0x1f5b; 0x1f5d, 0x1f5d; + 0x1f5f, 0x1f7d; 0x1f80, 0x1fb4; 0x1fb6, 0x1fbc; 0x1fbe, 0x1fbe; 0x1fc2, 0x1fc4; + 0x1fc6, 0x1fcc; 0x1fd0, 0x1fd3; 0x1fd6, 0x1fdb; 0x1fe0, 0x1fec; 0x1ff2, 0x1ff4; + 0x1ff6, 0x1ffc; 0x2071, 0x2071; 0x207f, 0x207f; 0x2090, 0x209c; 0x2102, 0x2102; + 0x2107, 0x2107; 0x210a, 0x2113; 0x2115, 0x2115; 0x2119, 0x211d; 0x2124, 0x2124; + 0x2126, 0x2126; 0x2128, 0x2128; 0x212a, 0x212d; 0x212f, 0x2134; 0x2135, 0x2138; + 0x2139, 0x2139; 0x213c, 0x213f; 0x2145, 0x2149; 0x214e, 0x214e; 0x2160, 0x2182; + 0x2183, 0x2184; 0x2185, 0x2188; 0x24b6, 0x24e9; 0x2c00, 0x2c7b; 0x2c7c, 0x2c7d; + 0x2c7e, 0x2ce4; 0x2ceb, 0x2cee; 0x2cf2, 0x2cf3; 0x2d00, 0x2d25; 0x2d27, 0x2d27; + 0x2d2d, 0x2d2d; 0x2d30, 0x2d67; 0x2d6f, 0x2d6f; 0x2d80, 0x2d96; 0x2da0, 0x2da6; + 0x2da8, 0x2dae; 0x2db0, 0x2db6; 0x2db8, 0x2dbe; 0x2dc0, 0x2dc6; 0x2dc8, 0x2dce; + 0x2dd0, 0x2dd6; 0x2dd8, 0x2dde; 0x2de0, 0x2dff; 0x2e2f, 0x2e2f; 0x3005, 0x3005; + 0x3006, 0x3006; 0x3007, 0x3007; 0x3021, 0x3029; 0x3031, 0x3035; 0x3038, 0x303a; + 0x303b, 0x303b; 0x303c, 0x303c; 0x3041, 0x3096; 0x309d, 0x309e; 0x309f, 0x309f; + 0x30a1, 0x30fa; 0x30fc, 0x30fe; 0x30ff, 0x30ff; 0x3105, 0x312f; 0x3131, 0x318e; + 0x31a0, 0x31bf; 0x31f0, 0x31ff; 0x3400, 0x4dbf; 0x4e00, 0xa014; 0xa015, 0xa015; + 0xa016, 0xa48c; 0xa4d0, 0xa4f7; 0xa4f8, 0xa4fd; 0xa500, 0xa60b; 0xa60c, 0xa60c; + 0xa610, 0xa61f; 0xa62a, 0xa62b; 0xa640, 0xa66d; 0xa66e, 0xa66e; 0xa674, 0xa67b; + 0xa67f, 0xa67f; 0xa680, 0xa69b; 0xa69c, 0xa69d; 0xa69e, 0xa69f; 0xa6a0, 0xa6e5; + 0xa6e6, 0xa6ef; 0xa717, 0xa71f; 0xa722, 0xa76f; 0xa770, 0xa770; 0xa771, 0xa787; + 0xa788, 0xa788; 0xa78b, 0xa78e; 0xa78f, 0xa78f; 0xa790, 0xa7ca; 0xa7d0, 0xa7d1; + 0xa7d3, 0xa7d3; 0xa7d5, 0xa7d9; 0xa7f2, 0xa7f4; 0xa7f5, 0xa7f6; 0xa7f7, 0xa7f7; + 0xa7f8, 0xa7f9; 0xa7fa, 0xa7fa; 0xa7fb, 0xa801; 0xa802, 0xa802; 0xa803, 0xa805; + 0xa807, 0xa80a; 0xa80b, 0xa80b; 0xa80c, 0xa822; 0xa823, 0xa824; 0xa825, 0xa826; + 0xa827, 0xa827; 0xa840, 0xa873; 0xa880, 0xa881; 0xa882, 0xa8b3; 0xa8b4, 0xa8c3; + 0xa8c5, 0xa8c5; 0xa8f2, 0xa8f7; 0xa8fb, 0xa8fb; 0xa8fd, 0xa8fe; 0xa8ff, 0xa8ff; + 0xa90a, 0xa925; 0xa926, 0xa92a; 0xa930, 0xa946; 0xa947, 0xa951; 0xa952, 0xa952; + 0xa960, 0xa97c; 0xa980, 0xa982; 0xa983, 0xa983; 0xa984, 0xa9b2; 0xa9b4, 0xa9b5; + 0xa9b6, 0xa9b9; 0xa9ba, 0xa9bb; 0xa9bc, 0xa9bd; 0xa9be, 0xa9bf; 0xa9cf, 0xa9cf; + 0xa9e0, 0xa9e4; 0xa9e5, 0xa9e5; 0xa9e6, 0xa9e6; 0xa9e7, 0xa9ef; 0xa9fa, 0xa9fe; + 0xaa00, 0xaa28; 0xaa29, 0xaa2e; 0xaa2f, 0xaa30; 0xaa31, 0xaa32; 0xaa33, 0xaa34; + 0xaa35, 0xaa36; 0xaa40, 0xaa42; 0xaa43, 0xaa43; 0xaa44, 0xaa4b; 0xaa4c, 0xaa4c; + 0xaa4d, 0xaa4d; 0xaa60, 0xaa6f; 0xaa70, 0xaa70; 0xaa71, 0xaa76; 0xaa7a, 0xaa7a; + 0xaa7b, 0xaa7b; 0xaa7c, 0xaa7c; 0xaa7d, 0xaa7d; 0xaa7e, 0xaaaf; 0xaab0, 0xaab0; + 0xaab1, 0xaab1; 0xaab2, 0xaab4; 0xaab5, 0xaab6; 0xaab7, 0xaab8; 0xaab9, 0xaabd; + 0xaabe, 0xaabe; 0xaac0, 0xaac0; 0xaac2, 0xaac2; 0xaadb, 0xaadc; 0xaadd, 0xaadd; + 0xaae0, 0xaaea; 0xaaeb, 0xaaeb; 0xaaec, 0xaaed; 0xaaee, 0xaaef; 0xaaf2, 0xaaf2; + 0xaaf3, 0xaaf4; 0xaaf5, 0xaaf5; 0xab01, 0xab06; 0xab09, 0xab0e; 0xab11, 0xab16; + 0xab20, 0xab26; 0xab28, 0xab2e; 0xab30, 0xab5a; 0xab5c, 0xab5f; 0xab60, 0xab68; + 0xab69, 0xab69; 0xab70, 0xabbf; 0xabc0, 0xabe2; 0xabe3, 0xabe4; 0xabe5, 0xabe5; + 0xabe6, 0xabe7; 0xabe8, 0xabe8; 0xabe9, 0xabea; 0xac00, 0xd7a3; 0xd7b0, 0xd7c6; + 0xd7cb, 0xd7fb; 0xf900, 0xfa6d; 0xfa70, 0xfad9; 0xfb00, 0xfb06; 0xfb13, 0xfb17; + 0xfb1d, 0xfb1d; 0xfb1e, 0xfb1e; 0xfb1f, 0xfb28; 0xfb2a, 0xfb36; 0xfb38, 0xfb3c; + 0xfb3e, 0xfb3e; 0xfb40, 0xfb41; 0xfb43, 0xfb44; 0xfb46, 0xfbb1; 0xfbd3, 0xfd3d; + 0xfd50, 0xfd8f; 0xfd92, 0xfdc7; 0xfdf0, 0xfdfb; 0xfe70, 0xfe74; 0xfe76, 0xfefc; + 0xff21, 0xff3a; 0xff41, 0xff5a; 0xff66, 0xff6f; 0xff70, 0xff70; 0xff71, 0xff9d; + 0xff9e, 0xff9f; 0xffa0, 0xffbe; 0xffc2, 0xffc7; 0xffca, 0xffcf; 0xffd2, 0xffd7; + 0xffda, 0xffdc; 0x10000, 0x1000b; 0x1000d, 0x10026; 0x10028, 0x1003a; 0x1003c, 0x1003d; + 0x1003f, 0x1004d; 0x10050, 0x1005d; 0x10080, 0x100fa; 0x10140, 0x10174; 0x10280, 0x1029c; + 0x102a0, 0x102d0; 0x10300, 0x1031f; 0x1032d, 0x10340; 0x10341, 0x10341; 0x10342, 0x10349; + 0x1034a, 0x1034a; 0x10350, 0x10375; 0x10376, 0x1037a; 0x10380, 0x1039d; 0x103a0, 0x103c3; + 0x103c8, 0x103cf; 0x103d1, 0x103d5; 0x10400, 0x1044f; 0x10450, 0x1049d; 0x104b0, 0x104d3; + 0x104d8, 0x104fb; 0x10500, 0x10527; 0x10530, 0x10563; 0x10570, 0x1057a; 0x1057c, 0x1058a; + 0x1058c, 0x10592; 0x10594, 0x10595; 0x10597, 0x105a1; 0x105a3, 0x105b1; 0x105b3, 0x105b9; + 0x105bb, 0x105bc; 0x10600, 0x10736; 0x10740, 0x10755; 0x10760, 0x10767; 0x10780, 0x10785; + 0x10787, 0x107b0; 0x107b2, 0x107ba; 0x10800, 0x10805; 0x10808, 0x10808; 0x1080a, 0x10835; + 0x10837, 0x10838; 0x1083c, 0x1083c; 0x1083f, 0x10855; 0x10860, 0x10876; 0x10880, 0x1089e; + 0x108e0, 0x108f2; 0x108f4, 0x108f5; 0x10900, 0x10915; 0x10920, 0x10939; 0x10980, 0x109b7; + 0x109be, 0x109bf; 0x10a00, 0x10a00; 0x10a01, 0x10a03; 0x10a05, 0x10a06; 0x10a0c, 0x10a0f; + 0x10a10, 0x10a13; 0x10a15, 0x10a17; 0x10a19, 0x10a35; 0x10a60, 0x10a7c; 0x10a80, 0x10a9c; + 0x10ac0, 0x10ac7; 0x10ac9, 0x10ae4; 0x10b00, 0x10b35; 0x10b40, 0x10b55; 0x10b60, 0x10b72; + 0x10b80, 0x10b91; 0x10c00, 0x10c48; 0x10c80, 0x10cb2; 0x10cc0, 0x10cf2; 0x10d00, 0x10d23; + 0x10d24, 0x10d27; 0x10e80, 0x10ea9; 0x10eab, 0x10eac; 0x10eb0, 0x10eb1; 0x10f00, 0x10f1c; + 0x10f27, 0x10f27; 0x10f30, 0x10f45; 0x10f70, 0x10f81; 0x10fb0, 0x10fc4; 0x10fe0, 0x10ff6; + 0x11000, 0x11000; 0x11001, 0x11001; 0x11002, 0x11002; 0x11003, 0x11037; 0x11038, 0x11045; + 0x11071, 0x11072; 0x11073, 0x11074; 0x11075, 0x11075; 0x11082, 0x11082; 0x11083, 0x110af; + 0x110b0, 0x110b2; 0x110b3, 0x110b6; 0x110b7, 0x110b8; 0x110c2, 0x110c2; 0x110d0, 0x110e8; + 0x11100, 0x11102; 0x11103, 0x11126; 0x11127, 0x1112b; 0x1112c, 0x1112c; 0x1112d, 0x11132; + 0x11144, 0x11144; 0x11145, 0x11146; 0x11147, 0x11147; 0x11150, 0x11172; 0x11176, 0x11176; + 0x11180, 0x11181; 0x11182, 0x11182; 0x11183, 0x111b2; 0x111b3, 0x111b5; 0x111b6, 0x111be; + 0x111bf, 0x111bf; 0x111c1, 0x111c4; 0x111ce, 0x111ce; 0x111cf, 0x111cf; 0x111da, 0x111da; + 0x111dc, 0x111dc; 0x11200, 0x11211; 0x11213, 0x1122b; 0x1122c, 0x1122e; 0x1122f, 0x11231; + 0x11232, 0x11233; 0x11234, 0x11234; 0x11237, 0x11237; 0x1123e, 0x1123e; 0x11280, 0x11286; + 0x11288, 0x11288; 0x1128a, 0x1128d; 0x1128f, 0x1129d; 0x1129f, 0x112a8; 0x112b0, 0x112de; + 0x112df, 0x112df; 0x112e0, 0x112e2; 0x112e3, 0x112e8; 0x11300, 0x11301; 0x11302, 0x11303; + 0x11305, 0x1130c; 0x1130f, 0x11310; 0x11313, 0x11328; 0x1132a, 0x11330; 0x11332, 0x11333; + 0x11335, 0x11339; 0x1133d, 0x1133d; 0x1133e, 0x1133f; 0x11340, 0x11340; 0x11341, 0x11344; + 0x11347, 0x11348; 0x1134b, 0x1134c; 0x11350, 0x11350; 0x11357, 0x11357; 0x1135d, 0x11361; + 0x11362, 0x11363; 0x11400, 0x11434; 0x11435, 0x11437; 0x11438, 0x1143f; 0x11440, 0x11441; + 0x11443, 0x11444; 0x11445, 0x11445; 0x11447, 0x1144a; 0x1145f, 0x11461; 0x11480, 0x114af; + 0x114b0, 0x114b2; 0x114b3, 0x114b8; 0x114b9, 0x114b9; 0x114ba, 0x114ba; 0x114bb, 0x114be; + 0x114bf, 0x114c0; 0x114c1, 0x114c1; 0x114c4, 0x114c5; 0x114c7, 0x114c7; 0x11580, 0x115ae; + 0x115af, 0x115b1; 0x115b2, 0x115b5; 0x115b8, 0x115bb; 0x115bc, 0x115bd; 0x115be, 0x115be; + 0x115d8, 0x115db; 0x115dc, 0x115dd; 0x11600, 0x1162f; 0x11630, 0x11632; 0x11633, 0x1163a; + 0x1163b, 0x1163c; 0x1163d, 0x1163d; 0x1163e, 0x1163e; 0x11640, 0x11640; 0x11644, 0x11644; + 0x11680, 0x116aa; 0x116ab, 0x116ab; 0x116ac, 0x116ac; 0x116ad, 0x116ad; 0x116ae, 0x116af; + 0x116b0, 0x116b5; 0x116b8, 0x116b8; 0x11700, 0x1171a; 0x1171d, 0x1171f; 0x11720, 0x11721; + 0x11722, 0x11725; 0x11726, 0x11726; 0x11727, 0x1172a; 0x11740, 0x11746; 0x11800, 0x1182b; + 0x1182c, 0x1182e; 0x1182f, 0x11837; 0x11838, 0x11838; 0x118a0, 0x118df; 0x118ff, 0x11906; + 0x11909, 0x11909; 0x1190c, 0x11913; 0x11915, 0x11916; 0x11918, 0x1192f; 0x11930, 0x11935; + 0x11937, 0x11938; 0x1193b, 0x1193c; 0x1193f, 0x1193f; 0x11940, 0x11940; 0x11941, 0x11941; + 0x11942, 0x11942; 0x119a0, 0x119a7; 0x119aa, 0x119d0; 0x119d1, 0x119d3; 0x119d4, 0x119d7; + 0x119da, 0x119db; 0x119dc, 0x119df; 0x119e1, 0x119e1; 0x119e3, 0x119e3; 0x119e4, 0x119e4; + 0x11a00, 0x11a00; 0x11a01, 0x11a0a; 0x11a0b, 0x11a32; 0x11a35, 0x11a38; 0x11a39, 0x11a39; + 0x11a3a, 0x11a3a; 0x11a3b, 0x11a3e; 0x11a50, 0x11a50; 0x11a51, 0x11a56; 0x11a57, 0x11a58; + 0x11a59, 0x11a5b; 0x11a5c, 0x11a89; 0x11a8a, 0x11a96; 0x11a97, 0x11a97; 0x11a9d, 0x11a9d; + 0x11ab0, 0x11af8; 0x11c00, 0x11c08; 0x11c0a, 0x11c2e; 0x11c2f, 0x11c2f; 0x11c30, 0x11c36; + 0x11c38, 0x11c3d; 0x11c3e, 0x11c3e; 0x11c40, 0x11c40; 0x11c72, 0x11c8f; 0x11c92, 0x11ca7; + 0x11ca9, 0x11ca9; 0x11caa, 0x11cb0; 0x11cb1, 0x11cb1; 0x11cb2, 0x11cb3; 0x11cb4, 0x11cb4; + 0x11cb5, 0x11cb6; 0x11d00, 0x11d06; 0x11d08, 0x11d09; 0x11d0b, 0x11d30; 0x11d31, 0x11d36; + 0x11d3a, 0x11d3a; 0x11d3c, 0x11d3d; 0x11d3f, 0x11d41; 0x11d43, 0x11d43; 0x11d46, 0x11d46; + 0x11d47, 0x11d47; 0x11d60, 0x11d65; 0x11d67, 0x11d68; 0x11d6a, 0x11d89; 0x11d8a, 0x11d8e; + 0x11d90, 0x11d91; 0x11d93, 0x11d94; 0x11d95, 0x11d95; 0x11d96, 0x11d96; 0x11d98, 0x11d98; + 0x11ee0, 0x11ef2; 0x11ef3, 0x11ef4; 0x11ef5, 0x11ef6; 0x11fb0, 0x11fb0; 0x12000, 0x12399; + 0x12400, 0x1246e; 0x12480, 0x12543; 0x12f90, 0x12ff0; 0x13000, 0x1342e; 0x14400, 0x14646; + 0x16800, 0x16a38; 0x16a40, 0x16a5e; 0x16a70, 0x16abe; 0x16ad0, 0x16aed; 0x16b00, 0x16b2f; + 0x16b40, 0x16b43; 0x16b63, 0x16b77; 0x16b7d, 0x16b8f; 0x16e40, 0x16e7f; 0x16f00, 0x16f4a; + 0x16f4f, 0x16f4f; 0x16f50, 0x16f50; 0x16f51, 0x16f87; 0x16f8f, 0x16f92; 0x16f93, 0x16f9f; + 0x16fe0, 0x16fe1; 0x16fe3, 0x16fe3; 0x16ff0, 0x16ff1; 0x17000, 0x187f7; 0x18800, 0x18cd5; + 0x18d00, 0x18d08; 0x1aff0, 0x1aff3; 0x1aff5, 0x1affb; 0x1affd, 0x1affe; 0x1b000, 0x1b122; + 0x1b150, 0x1b152; 0x1b164, 0x1b167; 0x1b170, 0x1b2fb; 0x1bc00, 0x1bc6a; 0x1bc70, 0x1bc7c; + 0x1bc80, 0x1bc88; 0x1bc90, 0x1bc99; 0x1bc9e, 0x1bc9e; 0x1d400, 0x1d454; 0x1d456, 0x1d49c; + 0x1d49e, 0x1d49f; 0x1d4a2, 0x1d4a2; 0x1d4a5, 0x1d4a6; 0x1d4a9, 0x1d4ac; 0x1d4ae, 0x1d4b9; + 0x1d4bb, 0x1d4bb; 0x1d4bd, 0x1d4c3; 0x1d4c5, 0x1d505; 0x1d507, 0x1d50a; 0x1d50d, 0x1d514; + 0x1d516, 0x1d51c; 0x1d51e, 0x1d539; 0x1d53b, 0x1d53e; 0x1d540, 0x1d544; 0x1d546, 0x1d546; + 0x1d54a, 0x1d550; 0x1d552, 0x1d6a5; 0x1d6a8, 0x1d6c0; 0x1d6c2, 0x1d6da; 0x1d6dc, 0x1d6fa; + 0x1d6fc, 0x1d714; 0x1d716, 0x1d734; 0x1d736, 0x1d74e; 0x1d750, 0x1d76e; 0x1d770, 0x1d788; + 0x1d78a, 0x1d7a8; 0x1d7aa, 0x1d7c2; 0x1d7c4, 0x1d7cb; 0x1df00, 0x1df09; 0x1df0a, 0x1df0a; + 0x1df0b, 0x1df1e; 0x1e000, 0x1e006; 0x1e008, 0x1e018; 0x1e01b, 0x1e021; 0x1e023, 0x1e024; + 0x1e026, 0x1e02a; 0x1e100, 0x1e12c; 0x1e137, 0x1e13d; 0x1e14e, 0x1e14e; 0x1e290, 0x1e2ad; + 0x1e2c0, 0x1e2eb; 0x1e7e0, 0x1e7e6; 0x1e7e8, 0x1e7eb; 0x1e7ed, 0x1e7ee; 0x1e7f0, 0x1e7fe; + 0x1e800, 0x1e8c4; 0x1e900, 0x1e943; 0x1e947, 0x1e947; 0x1e94b, 0x1e94b; 0x1ee00, 0x1ee03; + 0x1ee05, 0x1ee1f; 0x1ee21, 0x1ee22; 0x1ee24, 0x1ee24; 0x1ee27, 0x1ee27; 0x1ee29, 0x1ee32; + 0x1ee34, 0x1ee37; 0x1ee39, 0x1ee39; 0x1ee3b, 0x1ee3b; 0x1ee42, 0x1ee42; 0x1ee47, 0x1ee47; + 0x1ee49, 0x1ee49; 0x1ee4b, 0x1ee4b; 0x1ee4d, 0x1ee4f; 0x1ee51, 0x1ee52; 0x1ee54, 0x1ee54; + 0x1ee57, 0x1ee57; 0x1ee59, 0x1ee59; 0x1ee5b, 0x1ee5b; 0x1ee5d, 0x1ee5d; 0x1ee5f, 0x1ee5f; + 0x1ee61, 0x1ee62; 0x1ee64, 0x1ee64; 0x1ee67, 0x1ee6a; 0x1ee6c, 0x1ee72; 0x1ee74, 0x1ee77; + 0x1ee79, 0x1ee7c; 0x1ee7e, 0x1ee7e; 0x1ee80, 0x1ee89; 0x1ee8b, 0x1ee9b; 0x1eea1, 0x1eea3; + 0x1eea5, 0x1eea9; 0x1eeab, 0x1eebb; 0x1f130, 0x1f149; 0x1f150, 0x1f169; 0x1f170, 0x1f189; + 0x20000, 0x2a6df; 0x2a700, 0x2b738; 0x2b740, 0x2b81d; 0x2b820, 0x2cea1; 0x2ceb0, 0x2ebe0; + 0x30000, 0x3134a; 0x2f800, 0x2fa1d] - let ascii_hex_digit = [(0x61, 0x66); (0x41, 0x46); (0x30, 0x39)] + let ascii_hex_digit = + [0x61, 0x66; 0x41, 0x46; 0x30, 0x39] let hex_digit = - [ - (0x30, 0x39); - (0x41, 0x46); - (0x61, 0x66); - (0xff10, 0xff19); - (0xff21, 0xff26); - (0xff41, 0xff46); - ] + [0x30, 0x39; 0x41, 0x46; 0x61, 0x66; 0xff10, 0xff19; 0xff21, 0xff26; + 0xff41, 0xff46] let id_continue = - [ - (0x30, 0x39); - (0x41, 0x5a); - (0x5f, 0x5f); - (0x61, 0x7a); - (0xaa, 0xaa); - (0xb5, 0xb5); - (0xb7, 0xb7); - (0xba, 0xba); - (0xc0, 0xd6); - (0xd8, 0xf6); - (0xf8, 0x1ba); - (0x1bb, 0x1bb); - (0x1bc, 0x1bf); - (0x1c0, 0x1c3); - (0x1c4, 0x293); - (0x294, 0x294); - (0x295, 0x2af); - (0x2b0, 0x2c1); - (0x2c6, 0x2d1); - (0x2e0, 0x2e4); - (0x2ec, 0x2ec); - (0x2ee, 0x2ee); - (0x300, 0x36f); - (0x370, 0x373); - (0x374, 0x374); - (0x376, 0x377); - (0x37a, 0x37a); - (0x37b, 0x37d); - (0x37f, 0x37f); - (0x386, 0x386); - (0x387, 0x387); - (0x388, 0x38a); - (0x38c, 0x38c); - (0x38e, 0x3a1); - (0x3a3, 0x3f5); - (0x3f7, 0x481); - (0x483, 0x487); - (0x48a, 0x52f); - (0x531, 0x556); - (0x559, 0x559); - (0x560, 0x588); - (0x591, 0x5bd); - (0x5bf, 0x5bf); - (0x5c1, 0x5c2); - (0x5c4, 0x5c5); - (0x5c7, 0x5c7); - (0x5d0, 0x5ea); - (0x5ef, 0x5f2); - (0x610, 0x61a); - (0x620, 0x63f); - (0x640, 0x640); - (0x641, 0x64a); - (0x64b, 0x65f); - (0x660, 0x669); - (0x66e, 0x66f); - (0x670, 0x670); - (0x671, 0x6d3); - (0x6d5, 0x6d5); - (0x6d6, 0x6dc); - (0x6df, 0x6e4); - (0x6e5, 0x6e6); - (0x6e7, 0x6e8); - (0x6ea, 0x6ed); - (0x6ee, 0x6ef); - (0x6f0, 0x6f9); - (0x6fa, 0x6fc); - (0x6ff, 0x6ff); - (0x710, 0x710); - (0x711, 0x711); - (0x712, 0x72f); - (0x730, 0x74a); - (0x74d, 0x7a5); - (0x7a6, 0x7b0); - (0x7b1, 0x7b1); - (0x7c0, 0x7c9); - (0x7ca, 0x7ea); - (0x7eb, 0x7f3); - (0x7f4, 0x7f5); - (0x7fa, 0x7fa); - (0x7fd, 0x7fd); - (0x800, 0x815); - (0x816, 0x819); - (0x81a, 0x81a); - (0x81b, 0x823); - (0x824, 0x824); - (0x825, 0x827); - (0x828, 0x828); - (0x829, 0x82d); - (0x840, 0x858); - (0x859, 0x85b); - (0x860, 0x86a); - (0x870, 0x887); - (0x889, 0x88e); - (0x898, 0x89f); - (0x8a0, 0x8c8); - (0x8c9, 0x8c9); - (0x8ca, 0x8e1); - (0x8e3, 0x902); - (0x903, 0x903); - (0x904, 0x939); - (0x93a, 0x93a); - (0x93b, 0x93b); - (0x93c, 0x93c); - (0x93d, 0x93d); - (0x93e, 0x940); - (0x941, 0x948); - (0x949, 0x94c); - (0x94d, 0x94d); - (0x94e, 0x94f); - (0x950, 0x950); - (0x951, 0x957); - (0x958, 0x961); - (0x962, 0x963); - (0x966, 0x96f); - (0x971, 0x971); - (0x972, 0x980); - (0x981, 0x981); - (0x982, 0x983); - (0x985, 0x98c); - (0x98f, 0x990); - (0x993, 0x9a8); - (0x9aa, 0x9b0); - (0x9b2, 0x9b2); - (0x9b6, 0x9b9); - (0x9bc, 0x9bc); - (0x9bd, 0x9bd); - (0x9be, 0x9c0); - (0x9c1, 0x9c4); - (0x9c7, 0x9c8); - (0x9cb, 0x9cc); - (0x9cd, 0x9cd); - (0x9ce, 0x9ce); - (0x9d7, 0x9d7); - (0x9dc, 0x9dd); - (0x9df, 0x9e1); - (0x9e2, 0x9e3); - (0x9e6, 0x9ef); - (0x9f0, 0x9f1); - (0x9fc, 0x9fc); - (0x9fe, 0x9fe); - (0xa01, 0xa02); - (0xa03, 0xa03); - (0xa05, 0xa0a); - (0xa0f, 0xa10); - (0xa13, 0xa28); - (0xa2a, 0xa30); - (0xa32, 0xa33); - (0xa35, 0xa36); - (0xa38, 0xa39); - (0xa3c, 0xa3c); - (0xa3e, 0xa40); - (0xa41, 0xa42); - (0xa47, 0xa48); - (0xa4b, 0xa4d); - (0xa51, 0xa51); - (0xa59, 0xa5c); - (0xa5e, 0xa5e); - (0xa66, 0xa6f); - (0xa70, 0xa71); - (0xa72, 0xa74); - (0xa75, 0xa75); - (0xa81, 0xa82); - (0xa83, 0xa83); - (0xa85, 0xa8d); - (0xa8f, 0xa91); - (0xa93, 0xaa8); - (0xaaa, 0xab0); - (0xab2, 0xab3); - (0xab5, 0xab9); - (0xabc, 0xabc); - (0xabd, 0xabd); - (0xabe, 0xac0); - (0xac1, 0xac5); - (0xac7, 0xac8); - (0xac9, 0xac9); - (0xacb, 0xacc); - (0xacd, 0xacd); - (0xad0, 0xad0); - (0xae0, 0xae1); - (0xae2, 0xae3); - (0xae6, 0xaef); - (0xaf9, 0xaf9); - (0xafa, 0xaff); - (0xb01, 0xb01); - (0xb02, 0xb03); - (0xb05, 0xb0c); - (0xb0f, 0xb10); - (0xb13, 0xb28); - (0xb2a, 0xb30); - (0xb32, 0xb33); - (0xb35, 0xb39); - (0xb3c, 0xb3c); - (0xb3d, 0xb3d); - (0xb3e, 0xb3e); - (0xb3f, 0xb3f); - (0xb40, 0xb40); - (0xb41, 0xb44); - (0xb47, 0xb48); - (0xb4b, 0xb4c); - (0xb4d, 0xb4d); - (0xb55, 0xb56); - (0xb57, 0xb57); - (0xb5c, 0xb5d); - (0xb5f, 0xb61); - (0xb62, 0xb63); - (0xb66, 0xb6f); - (0xb71, 0xb71); - (0xb82, 0xb82); - (0xb83, 0xb83); - (0xb85, 0xb8a); - (0xb8e, 0xb90); - (0xb92, 0xb95); - (0xb99, 0xb9a); - (0xb9c, 0xb9c); - (0xb9e, 0xb9f); - (0xba3, 0xba4); - (0xba8, 0xbaa); - (0xbae, 0xbb9); - (0xbbe, 0xbbf); - (0xbc0, 0xbc0); - (0xbc1, 0xbc2); - (0xbc6, 0xbc8); - (0xbca, 0xbcc); - (0xbcd, 0xbcd); - (0xbd0, 0xbd0); - (0xbd7, 0xbd7); - (0xbe6, 0xbef); - (0xc00, 0xc00); - (0xc01, 0xc03); - (0xc04, 0xc04); - (0xc05, 0xc0c); - (0xc0e, 0xc10); - (0xc12, 0xc28); - (0xc2a, 0xc39); - (0xc3c, 0xc3c); - (0xc3d, 0xc3d); - (0xc3e, 0xc40); - (0xc41, 0xc44); - (0xc46, 0xc48); - (0xc4a, 0xc4d); - (0xc55, 0xc56); - (0xc58, 0xc5a); - (0xc5d, 0xc5d); - (0xc60, 0xc61); - (0xc62, 0xc63); - (0xc66, 0xc6f); - (0xc80, 0xc80); - (0xc81, 0xc81); - (0xc82, 0xc83); - (0xc85, 0xc8c); - (0xc8e, 0xc90); - (0xc92, 0xca8); - (0xcaa, 0xcb3); - (0xcb5, 0xcb9); - (0xcbc, 0xcbc); - (0xcbd, 0xcbd); - (0xcbe, 0xcbe); - (0xcbf, 0xcbf); - (0xcc0, 0xcc4); - (0xcc6, 0xcc6); - (0xcc7, 0xcc8); - (0xcca, 0xccb); - (0xccc, 0xccd); - (0xcd5, 0xcd6); - (0xcdd, 0xcde); - (0xce0, 0xce1); - (0xce2, 0xce3); - (0xce6, 0xcef); - (0xcf1, 0xcf2); - (0xd00, 0xd01); - (0xd02, 0xd03); - (0xd04, 0xd0c); - (0xd0e, 0xd10); - (0xd12, 0xd3a); - (0xd3b, 0xd3c); - (0xd3d, 0xd3d); - (0xd3e, 0xd40); - (0xd41, 0xd44); - (0xd46, 0xd48); - (0xd4a, 0xd4c); - (0xd4d, 0xd4d); - (0xd4e, 0xd4e); - (0xd54, 0xd56); - (0xd57, 0xd57); - (0xd5f, 0xd61); - (0xd62, 0xd63); - (0xd66, 0xd6f); - (0xd7a, 0xd7f); - (0xd81, 0xd81); - (0xd82, 0xd83); - (0xd85, 0xd96); - (0xd9a, 0xdb1); - (0xdb3, 0xdbb); - (0xdbd, 0xdbd); - (0xdc0, 0xdc6); - (0xdca, 0xdca); - (0xdcf, 0xdd1); - (0xdd2, 0xdd4); - (0xdd6, 0xdd6); - (0xdd8, 0xddf); - (0xde6, 0xdef); - (0xdf2, 0xdf3); - (0xe01, 0xe30); - (0xe31, 0xe31); - (0xe32, 0xe33); - (0xe34, 0xe3a); - (0xe40, 0xe45); - (0xe46, 0xe46); - (0xe47, 0xe4e); - (0xe50, 0xe59); - (0xe81, 0xe82); - (0xe84, 0xe84); - (0xe86, 0xe8a); - (0xe8c, 0xea3); - (0xea5, 0xea5); - (0xea7, 0xeb0); - (0xeb1, 0xeb1); - (0xeb2, 0xeb3); - (0xeb4, 0xebc); - (0xebd, 0xebd); - (0xec0, 0xec4); - (0xec6, 0xec6); - (0xec8, 0xecd); - (0xed0, 0xed9); - (0xedc, 0xedf); - (0xf00, 0xf00); - (0xf18, 0xf19); - (0xf20, 0xf29); - (0xf35, 0xf35); - (0xf37, 0xf37); - (0xf39, 0xf39); - (0xf3e, 0xf3f); - (0xf40, 0xf47); - (0xf49, 0xf6c); - (0xf71, 0xf7e); - (0xf7f, 0xf7f); - (0xf80, 0xf84); - (0xf86, 0xf87); - (0xf88, 0xf8c); - (0xf8d, 0xf97); - (0xf99, 0xfbc); - (0xfc6, 0xfc6); - (0x1000, 0x102a); - (0x102b, 0x102c); - (0x102d, 0x1030); - (0x1031, 0x1031); - (0x1032, 0x1037); - (0x1038, 0x1038); - (0x1039, 0x103a); - (0x103b, 0x103c); - (0x103d, 0x103e); - (0x103f, 0x103f); - (0x1040, 0x1049); - (0x1050, 0x1055); - (0x1056, 0x1057); - (0x1058, 0x1059); - (0x105a, 0x105d); - (0x105e, 0x1060); - (0x1061, 0x1061); - (0x1062, 0x1064); - (0x1065, 0x1066); - (0x1067, 0x106d); - (0x106e, 0x1070); - (0x1071, 0x1074); - (0x1075, 0x1081); - (0x1082, 0x1082); - (0x1083, 0x1084); - (0x1085, 0x1086); - (0x1087, 0x108c); - (0x108d, 0x108d); - (0x108e, 0x108e); - (0x108f, 0x108f); - (0x1090, 0x1099); - (0x109a, 0x109c); - (0x109d, 0x109d); - (0x10a0, 0x10c5); - (0x10c7, 0x10c7); - (0x10cd, 0x10cd); - (0x10d0, 0x10fa); - (0x10fc, 0x10fc); - (0x10fd, 0x10ff); - (0x1100, 0x1248); - (0x124a, 0x124d); - (0x1250, 0x1256); - (0x1258, 0x1258); - (0x125a, 0x125d); - (0x1260, 0x1288); - (0x128a, 0x128d); - (0x1290, 0x12b0); - (0x12b2, 0x12b5); - (0x12b8, 0x12be); - (0x12c0, 0x12c0); - (0x12c2, 0x12c5); - (0x12c8, 0x12d6); - (0x12d8, 0x1310); - (0x1312, 0x1315); - (0x1318, 0x135a); - (0x135d, 0x135f); - (0x1369, 0x1371); - (0x1380, 0x138f); - (0x13a0, 0x13f5); - (0x13f8, 0x13fd); - (0x1401, 0x166c); - (0x166f, 0x167f); - (0x1681, 0x169a); - (0x16a0, 0x16ea); - (0x16ee, 0x16f0); - (0x16f1, 0x16f8); - (0x1700, 0x1711); - (0x1712, 0x1714); - (0x1715, 0x1715); - (0x171f, 0x1731); - (0x1732, 0x1733); - (0x1734, 0x1734); - (0x1740, 0x1751); - (0x1752, 0x1753); - (0x1760, 0x176c); - (0x176e, 0x1770); - (0x1772, 0x1773); - (0x1780, 0x17b3); - (0x17b4, 0x17b5); - (0x17b6, 0x17b6); - (0x17b7, 0x17bd); - (0x17be, 0x17c5); - (0x17c6, 0x17c6); - (0x17c7, 0x17c8); - (0x17c9, 0x17d3); - (0x17d7, 0x17d7); - (0x17dc, 0x17dc); - (0x17dd, 0x17dd); - (0x17e0, 0x17e9); - (0x180b, 0x180d); - (0x180f, 0x180f); - (0x1810, 0x1819); - (0x1820, 0x1842); - (0x1843, 0x1843); - (0x1844, 0x1878); - (0x1880, 0x1884); - (0x1885, 0x1886); - (0x1887, 0x18a8); - (0x18a9, 0x18a9); - (0x18aa, 0x18aa); - (0x18b0, 0x18f5); - (0x1900, 0x191e); - (0x1920, 0x1922); - (0x1923, 0x1926); - (0x1927, 0x1928); - (0x1929, 0x192b); - (0x1930, 0x1931); - (0x1932, 0x1932); - (0x1933, 0x1938); - (0x1939, 0x193b); - (0x1946, 0x194f); - (0x1950, 0x196d); - (0x1970, 0x1974); - (0x1980, 0x19ab); - (0x19b0, 0x19c9); - (0x19d0, 0x19d9); - (0x19da, 0x19da); - (0x1a00, 0x1a16); - (0x1a17, 0x1a18); - (0x1a19, 0x1a1a); - (0x1a1b, 0x1a1b); - (0x1a20, 0x1a54); - (0x1a55, 0x1a55); - (0x1a56, 0x1a56); - (0x1a57, 0x1a57); - (0x1a58, 0x1a5e); - (0x1a60, 0x1a60); - (0x1a61, 0x1a61); - (0x1a62, 0x1a62); - (0x1a63, 0x1a64); - (0x1a65, 0x1a6c); - (0x1a6d, 0x1a72); - (0x1a73, 0x1a7c); - (0x1a7f, 0x1a7f); - (0x1a80, 0x1a89); - (0x1a90, 0x1a99); - (0x1aa7, 0x1aa7); - (0x1ab0, 0x1abd); - (0x1abf, 0x1ace); - (0x1b00, 0x1b03); - (0x1b04, 0x1b04); - (0x1b05, 0x1b33); - (0x1b34, 0x1b34); - (0x1b35, 0x1b35); - (0x1b36, 0x1b3a); - (0x1b3b, 0x1b3b); - (0x1b3c, 0x1b3c); - (0x1b3d, 0x1b41); - (0x1b42, 0x1b42); - (0x1b43, 0x1b44); - (0x1b45, 0x1b4c); - (0x1b50, 0x1b59); - (0x1b6b, 0x1b73); - (0x1b80, 0x1b81); - (0x1b82, 0x1b82); - (0x1b83, 0x1ba0); - (0x1ba1, 0x1ba1); - (0x1ba2, 0x1ba5); - (0x1ba6, 0x1ba7); - (0x1ba8, 0x1ba9); - (0x1baa, 0x1baa); - (0x1bab, 0x1bad); - (0x1bae, 0x1baf); - (0x1bb0, 0x1bb9); - (0x1bba, 0x1be5); - (0x1be6, 0x1be6); - (0x1be7, 0x1be7); - (0x1be8, 0x1be9); - (0x1bea, 0x1bec); - (0x1bed, 0x1bed); - (0x1bee, 0x1bee); - (0x1bef, 0x1bf1); - (0x1bf2, 0x1bf3); - (0x1c00, 0x1c23); - (0x1c24, 0x1c2b); - (0x1c2c, 0x1c33); - (0x1c34, 0x1c35); - (0x1c36, 0x1c37); - (0x1c40, 0x1c49); - (0x1c4d, 0x1c4f); - (0x1c50, 0x1c59); - (0x1c5a, 0x1c77); - (0x1c78, 0x1c7d); - (0x1c80, 0x1c88); - (0x1c90, 0x1cba); - (0x1cbd, 0x1cbf); - (0x1cd0, 0x1cd2); - (0x1cd4, 0x1ce0); - (0x1ce1, 0x1ce1); - (0x1ce2, 0x1ce8); - (0x1ce9, 0x1cec); - (0x1ced, 0x1ced); - (0x1cee, 0x1cf3); - (0x1cf4, 0x1cf4); - (0x1cf5, 0x1cf6); - (0x1cf7, 0x1cf7); - (0x1cf8, 0x1cf9); - (0x1cfa, 0x1cfa); - (0x1d00, 0x1d2b); - (0x1d2c, 0x1d6a); - (0x1d6b, 0x1d77); - (0x1d78, 0x1d78); - (0x1d79, 0x1d9a); - (0x1d9b, 0x1dbf); - (0x1dc0, 0x1dff); - (0x1e00, 0x1f15); - (0x1f18, 0x1f1d); - (0x1f20, 0x1f45); - (0x1f48, 0x1f4d); - (0x1f50, 0x1f57); - (0x1f59, 0x1f59); - (0x1f5b, 0x1f5b); - (0x1f5d, 0x1f5d); - (0x1f5f, 0x1f7d); - (0x1f80, 0x1fb4); - (0x1fb6, 0x1fbc); - (0x1fbe, 0x1fbe); - (0x1fc2, 0x1fc4); - (0x1fc6, 0x1fcc); - (0x1fd0, 0x1fd3); - (0x1fd6, 0x1fdb); - (0x1fe0, 0x1fec); - (0x1ff2, 0x1ff4); - (0x1ff6, 0x1ffc); - (0x203f, 0x2040); - (0x2054, 0x2054); - (0x2071, 0x2071); - (0x207f, 0x207f); - (0x2090, 0x209c); - (0x20d0, 0x20dc); - (0x20e1, 0x20e1); - (0x20e5, 0x20f0); - (0x2102, 0x2102); - (0x2107, 0x2107); - (0x210a, 0x2113); - (0x2115, 0x2115); - (0x2118, 0x2118); - (0x2119, 0x211d); - (0x2124, 0x2124); - (0x2126, 0x2126); - (0x2128, 0x2128); - (0x212a, 0x212d); - (0x212e, 0x212e); - (0x212f, 0x2134); - (0x2135, 0x2138); - (0x2139, 0x2139); - (0x213c, 0x213f); - (0x2145, 0x2149); - (0x214e, 0x214e); - (0x2160, 0x2182); - (0x2183, 0x2184); - (0x2185, 0x2188); - (0x2c00, 0x2c7b); - (0x2c7c, 0x2c7d); - (0x2c7e, 0x2ce4); - (0x2ceb, 0x2cee); - (0x2cef, 0x2cf1); - (0x2cf2, 0x2cf3); - (0x2d00, 0x2d25); - (0x2d27, 0x2d27); - (0x2d2d, 0x2d2d); - (0x2d30, 0x2d67); - (0x2d6f, 0x2d6f); - (0x2d7f, 0x2d7f); - (0x2d80, 0x2d96); - (0x2da0, 0x2da6); - (0x2da8, 0x2dae); - (0x2db0, 0x2db6); - (0x2db8, 0x2dbe); - (0x2dc0, 0x2dc6); - (0x2dc8, 0x2dce); - (0x2dd0, 0x2dd6); - (0x2dd8, 0x2dde); - (0x2de0, 0x2dff); - (0x3005, 0x3005); - (0x3006, 0x3006); - (0x3007, 0x3007); - (0x3021, 0x3029); - (0x302a, 0x302d); - (0x302e, 0x302f); - (0x3031, 0x3035); - (0x3038, 0x303a); - (0x303b, 0x303b); - (0x303c, 0x303c); - (0x3041, 0x3096); - (0x3099, 0x309a); - (0x309b, 0x309c); - (0x309d, 0x309e); - (0x309f, 0x309f); - (0x30a1, 0x30fa); - (0x30fc, 0x30fe); - (0x30ff, 0x30ff); - (0x3105, 0x312f); - (0x3131, 0x318e); - (0x31a0, 0x31bf); - (0x31f0, 0x31ff); - (0x3400, 0x4dbf); - (0x4e00, 0xa014); - (0xa015, 0xa015); - (0xa016, 0xa48c); - (0xa4d0, 0xa4f7); - (0xa4f8, 0xa4fd); - (0xa500, 0xa60b); - (0xa60c, 0xa60c); - (0xa610, 0xa61f); - (0xa620, 0xa629); - (0xa62a, 0xa62b); - (0xa640, 0xa66d); - (0xa66e, 0xa66e); - (0xa66f, 0xa66f); - (0xa674, 0xa67d); - (0xa67f, 0xa67f); - (0xa680, 0xa69b); - (0xa69c, 0xa69d); - (0xa69e, 0xa69f); - (0xa6a0, 0xa6e5); - (0xa6e6, 0xa6ef); - (0xa6f0, 0xa6f1); - (0xa717, 0xa71f); - (0xa722, 0xa76f); - (0xa770, 0xa770); - (0xa771, 0xa787); - (0xa788, 0xa788); - (0xa78b, 0xa78e); - (0xa78f, 0xa78f); - (0xa790, 0xa7ca); - (0xa7d0, 0xa7d1); - (0xa7d3, 0xa7d3); - (0xa7d5, 0xa7d9); - (0xa7f2, 0xa7f4); - (0xa7f5, 0xa7f6); - (0xa7f7, 0xa7f7); - (0xa7f8, 0xa7f9); - (0xa7fa, 0xa7fa); - (0xa7fb, 0xa801); - (0xa802, 0xa802); - (0xa803, 0xa805); - (0xa806, 0xa806); - (0xa807, 0xa80a); - (0xa80b, 0xa80b); - (0xa80c, 0xa822); - (0xa823, 0xa824); - (0xa825, 0xa826); - (0xa827, 0xa827); - (0xa82c, 0xa82c); - (0xa840, 0xa873); - (0xa880, 0xa881); - (0xa882, 0xa8b3); - (0xa8b4, 0xa8c3); - (0xa8c4, 0xa8c5); - (0xa8d0, 0xa8d9); - (0xa8e0, 0xa8f1); - (0xa8f2, 0xa8f7); - (0xa8fb, 0xa8fb); - (0xa8fd, 0xa8fe); - (0xa8ff, 0xa8ff); - (0xa900, 0xa909); - (0xa90a, 0xa925); - (0xa926, 0xa92d); - (0xa930, 0xa946); - (0xa947, 0xa951); - (0xa952, 0xa953); - (0xa960, 0xa97c); - (0xa980, 0xa982); - (0xa983, 0xa983); - (0xa984, 0xa9b2); - (0xa9b3, 0xa9b3); - (0xa9b4, 0xa9b5); - (0xa9b6, 0xa9b9); - (0xa9ba, 0xa9bb); - (0xa9bc, 0xa9bd); - (0xa9be, 0xa9c0); - (0xa9cf, 0xa9cf); - (0xa9d0, 0xa9d9); - (0xa9e0, 0xa9e4); - (0xa9e5, 0xa9e5); - (0xa9e6, 0xa9e6); - (0xa9e7, 0xa9ef); - (0xa9f0, 0xa9f9); - (0xa9fa, 0xa9fe); - (0xaa00, 0xaa28); - (0xaa29, 0xaa2e); - (0xaa2f, 0xaa30); - (0xaa31, 0xaa32); - (0xaa33, 0xaa34); - (0xaa35, 0xaa36); - (0xaa40, 0xaa42); - (0xaa43, 0xaa43); - (0xaa44, 0xaa4b); - (0xaa4c, 0xaa4c); - (0xaa4d, 0xaa4d); - (0xaa50, 0xaa59); - (0xaa60, 0xaa6f); - (0xaa70, 0xaa70); - (0xaa71, 0xaa76); - (0xaa7a, 0xaa7a); - (0xaa7b, 0xaa7b); - (0xaa7c, 0xaa7c); - (0xaa7d, 0xaa7d); - (0xaa7e, 0xaaaf); - (0xaab0, 0xaab0); - (0xaab1, 0xaab1); - (0xaab2, 0xaab4); - (0xaab5, 0xaab6); - (0xaab7, 0xaab8); - (0xaab9, 0xaabd); - (0xaabe, 0xaabf); - (0xaac0, 0xaac0); - (0xaac1, 0xaac1); - (0xaac2, 0xaac2); - (0xaadb, 0xaadc); - (0xaadd, 0xaadd); - (0xaae0, 0xaaea); - (0xaaeb, 0xaaeb); - (0xaaec, 0xaaed); - (0xaaee, 0xaaef); - (0xaaf2, 0xaaf2); - (0xaaf3, 0xaaf4); - (0xaaf5, 0xaaf5); - (0xaaf6, 0xaaf6); - (0xab01, 0xab06); - (0xab09, 0xab0e); - (0xab11, 0xab16); - (0xab20, 0xab26); - (0xab28, 0xab2e); - (0xab30, 0xab5a); - (0xab5c, 0xab5f); - (0xab60, 0xab68); - (0xab69, 0xab69); - (0xab70, 0xabbf); - (0xabc0, 0xabe2); - (0xabe3, 0xabe4); - (0xabe5, 0xabe5); - (0xabe6, 0xabe7); - (0xabe8, 0xabe8); - (0xabe9, 0xabea); - (0xabec, 0xabec); - (0xabed, 0xabed); - (0xabf0, 0xabf9); - (0xac00, 0xd7a3); - (0xd7b0, 0xd7c6); - (0xd7cb, 0xd7fb); - (0xf900, 0xfa6d); - (0xfa70, 0xfad9); - (0xfb00, 0xfb06); - (0xfb13, 0xfb17); - (0xfb1d, 0xfb1d); - (0xfb1e, 0xfb1e); - (0xfb1f, 0xfb28); - (0xfb2a, 0xfb36); - (0xfb38, 0xfb3c); - (0xfb3e, 0xfb3e); - (0xfb40, 0xfb41); - (0xfb43, 0xfb44); - (0xfb46, 0xfbb1); - (0xfbd3, 0xfd3d); - (0xfd50, 0xfd8f); - (0xfd92, 0xfdc7); - (0xfdf0, 0xfdfb); - (0xfe00, 0xfe0f); - (0xfe20, 0xfe2f); - (0xfe33, 0xfe34); - (0xfe4d, 0xfe4f); - (0xfe70, 0xfe74); - (0xfe76, 0xfefc); - (0xff10, 0xff19); - (0xff21, 0xff3a); - (0xff3f, 0xff3f); - (0xff41, 0xff5a); - (0xff66, 0xff6f); - (0xff70, 0xff70); - (0xff71, 0xff9d); - (0xff9e, 0xff9f); - (0xffa0, 0xffbe); - (0xffc2, 0xffc7); - (0xffca, 0xffcf); - (0xffd2, 0xffd7); - (0xffda, 0xffdc); - (0x10000, 0x1000b); - (0x1000d, 0x10026); - (0x10028, 0x1003a); - (0x1003c, 0x1003d); - (0x1003f, 0x1004d); - (0x10050, 0x1005d); - (0x10080, 0x100fa); - (0x10140, 0x10174); - (0x101fd, 0x101fd); - (0x10280, 0x1029c); - (0x102a0, 0x102d0); - (0x102e0, 0x102e0); - (0x10300, 0x1031f); - (0x1032d, 0x10340); - (0x10341, 0x10341); - (0x10342, 0x10349); - (0x1034a, 0x1034a); - (0x10350, 0x10375); - (0x10376, 0x1037a); - (0x10380, 0x1039d); - (0x103a0, 0x103c3); - (0x103c8, 0x103cf); - (0x103d1, 0x103d5); - (0x10400, 0x1044f); - (0x10450, 0x1049d); - (0x104a0, 0x104a9); - (0x104b0, 0x104d3); - (0x104d8, 0x104fb); - (0x10500, 0x10527); - (0x10530, 0x10563); - (0x10570, 0x1057a); - (0x1057c, 0x1058a); - (0x1058c, 0x10592); - (0x10594, 0x10595); - (0x10597, 0x105a1); - (0x105a3, 0x105b1); - (0x105b3, 0x105b9); - (0x105bb, 0x105bc); - (0x10600, 0x10736); - (0x10740, 0x10755); - (0x10760, 0x10767); - (0x10780, 0x10785); - (0x10787, 0x107b0); - (0x107b2, 0x107ba); - (0x10800, 0x10805); - (0x10808, 0x10808); - (0x1080a, 0x10835); - (0x10837, 0x10838); - (0x1083c, 0x1083c); - (0x1083f, 0x10855); - (0x10860, 0x10876); - (0x10880, 0x1089e); - (0x108e0, 0x108f2); - (0x108f4, 0x108f5); - (0x10900, 0x10915); - (0x10920, 0x10939); - (0x10980, 0x109b7); - (0x109be, 0x109bf); - (0x10a00, 0x10a00); - (0x10a01, 0x10a03); - (0x10a05, 0x10a06); - (0x10a0c, 0x10a0f); - (0x10a10, 0x10a13); - (0x10a15, 0x10a17); - (0x10a19, 0x10a35); - (0x10a38, 0x10a3a); - (0x10a3f, 0x10a3f); - (0x10a60, 0x10a7c); - (0x10a80, 0x10a9c); - (0x10ac0, 0x10ac7); - (0x10ac9, 0x10ae4); - (0x10ae5, 0x10ae6); - (0x10b00, 0x10b35); - (0x10b40, 0x10b55); - (0x10b60, 0x10b72); - (0x10b80, 0x10b91); - (0x10c00, 0x10c48); - (0x10c80, 0x10cb2); - (0x10cc0, 0x10cf2); - (0x10d00, 0x10d23); - (0x10d24, 0x10d27); - (0x10d30, 0x10d39); - (0x10e80, 0x10ea9); - (0x10eab, 0x10eac); - (0x10eb0, 0x10eb1); - (0x10f00, 0x10f1c); - (0x10f27, 0x10f27); - (0x10f30, 0x10f45); - (0x10f46, 0x10f50); - (0x10f70, 0x10f81); - (0x10f82, 0x10f85); - (0x10fb0, 0x10fc4); - (0x10fe0, 0x10ff6); - (0x11000, 0x11000); - (0x11001, 0x11001); - (0x11002, 0x11002); - (0x11003, 0x11037); - (0x11038, 0x11046); - (0x11066, 0x1106f); - (0x11070, 0x11070); - (0x11071, 0x11072); - (0x11073, 0x11074); - (0x11075, 0x11075); - (0x1107f, 0x11081); - (0x11082, 0x11082); - (0x11083, 0x110af); - (0x110b0, 0x110b2); - (0x110b3, 0x110b6); - (0x110b7, 0x110b8); - (0x110b9, 0x110ba); - (0x110c2, 0x110c2); - (0x110d0, 0x110e8); - (0x110f0, 0x110f9); - (0x11100, 0x11102); - (0x11103, 0x11126); - (0x11127, 0x1112b); - (0x1112c, 0x1112c); - (0x1112d, 0x11134); - (0x11136, 0x1113f); - (0x11144, 0x11144); - (0x11145, 0x11146); - (0x11147, 0x11147); - (0x11150, 0x11172); - (0x11173, 0x11173); - (0x11176, 0x11176); - (0x11180, 0x11181); - (0x11182, 0x11182); - (0x11183, 0x111b2); - (0x111b3, 0x111b5); - (0x111b6, 0x111be); - (0x111bf, 0x111c0); - (0x111c1, 0x111c4); - (0x111c9, 0x111cc); - (0x111ce, 0x111ce); - (0x111cf, 0x111cf); - (0x111d0, 0x111d9); - (0x111da, 0x111da); - (0x111dc, 0x111dc); - (0x11200, 0x11211); - (0x11213, 0x1122b); - (0x1122c, 0x1122e); - (0x1122f, 0x11231); - (0x11232, 0x11233); - (0x11234, 0x11234); - (0x11235, 0x11235); - (0x11236, 0x11237); - (0x1123e, 0x1123e); - (0x11280, 0x11286); - (0x11288, 0x11288); - (0x1128a, 0x1128d); - (0x1128f, 0x1129d); - (0x1129f, 0x112a8); - (0x112b0, 0x112de); - (0x112df, 0x112df); - (0x112e0, 0x112e2); - (0x112e3, 0x112ea); - (0x112f0, 0x112f9); - (0x11300, 0x11301); - (0x11302, 0x11303); - (0x11305, 0x1130c); - (0x1130f, 0x11310); - (0x11313, 0x11328); - (0x1132a, 0x11330); - (0x11332, 0x11333); - (0x11335, 0x11339); - (0x1133b, 0x1133c); - (0x1133d, 0x1133d); - (0x1133e, 0x1133f); - (0x11340, 0x11340); - (0x11341, 0x11344); - (0x11347, 0x11348); - (0x1134b, 0x1134d); - (0x11350, 0x11350); - (0x11357, 0x11357); - (0x1135d, 0x11361); - (0x11362, 0x11363); - (0x11366, 0x1136c); - (0x11370, 0x11374); - (0x11400, 0x11434); - (0x11435, 0x11437); - (0x11438, 0x1143f); - (0x11440, 0x11441); - (0x11442, 0x11444); - (0x11445, 0x11445); - (0x11446, 0x11446); - (0x11447, 0x1144a); - (0x11450, 0x11459); - (0x1145e, 0x1145e); - (0x1145f, 0x11461); - (0x11480, 0x114af); - (0x114b0, 0x114b2); - (0x114b3, 0x114b8); - (0x114b9, 0x114b9); - (0x114ba, 0x114ba); - (0x114bb, 0x114be); - (0x114bf, 0x114c0); - (0x114c1, 0x114c1); - (0x114c2, 0x114c3); - (0x114c4, 0x114c5); - (0x114c7, 0x114c7); - (0x114d0, 0x114d9); - (0x11580, 0x115ae); - (0x115af, 0x115b1); - (0x115b2, 0x115b5); - (0x115b8, 0x115bb); - (0x115bc, 0x115bd); - (0x115be, 0x115be); - (0x115bf, 0x115c0); - (0x115d8, 0x115db); - (0x115dc, 0x115dd); - (0x11600, 0x1162f); - (0x11630, 0x11632); - (0x11633, 0x1163a); - (0x1163b, 0x1163c); - (0x1163d, 0x1163d); - (0x1163e, 0x1163e); - (0x1163f, 0x11640); - (0x11644, 0x11644); - (0x11650, 0x11659); - (0x11680, 0x116aa); - (0x116ab, 0x116ab); - (0x116ac, 0x116ac); - (0x116ad, 0x116ad); - (0x116ae, 0x116af); - (0x116b0, 0x116b5); - (0x116b6, 0x116b6); - (0x116b7, 0x116b7); - (0x116b8, 0x116b8); - (0x116c0, 0x116c9); - (0x11700, 0x1171a); - (0x1171d, 0x1171f); - (0x11720, 0x11721); - (0x11722, 0x11725); - (0x11726, 0x11726); - (0x11727, 0x1172b); - (0x11730, 0x11739); - (0x11740, 0x11746); - (0x11800, 0x1182b); - (0x1182c, 0x1182e); - (0x1182f, 0x11837); - (0x11838, 0x11838); - (0x11839, 0x1183a); - (0x118a0, 0x118df); - (0x118e0, 0x118e9); - (0x118ff, 0x11906); - (0x11909, 0x11909); - (0x1190c, 0x11913); - (0x11915, 0x11916); - (0x11918, 0x1192f); - (0x11930, 0x11935); - (0x11937, 0x11938); - (0x1193b, 0x1193c); - (0x1193d, 0x1193d); - (0x1193e, 0x1193e); - (0x1193f, 0x1193f); - (0x11940, 0x11940); - (0x11941, 0x11941); - (0x11942, 0x11942); - (0x11943, 0x11943); - (0x11950, 0x11959); - (0x119a0, 0x119a7); - (0x119aa, 0x119d0); - (0x119d1, 0x119d3); - (0x119d4, 0x119d7); - (0x119da, 0x119db); - (0x119dc, 0x119df); - (0x119e0, 0x119e0); - (0x119e1, 0x119e1); - (0x119e3, 0x119e3); - (0x119e4, 0x119e4); - (0x11a00, 0x11a00); - (0x11a01, 0x11a0a); - (0x11a0b, 0x11a32); - (0x11a33, 0x11a38); - (0x11a39, 0x11a39); - (0x11a3a, 0x11a3a); - (0x11a3b, 0x11a3e); - (0x11a47, 0x11a47); - (0x11a50, 0x11a50); - (0x11a51, 0x11a56); - (0x11a57, 0x11a58); - (0x11a59, 0x11a5b); - (0x11a5c, 0x11a89); - (0x11a8a, 0x11a96); - (0x11a97, 0x11a97); - (0x11a98, 0x11a99); - (0x11a9d, 0x11a9d); - (0x11ab0, 0x11af8); - (0x11c00, 0x11c08); - (0x11c0a, 0x11c2e); - (0x11c2f, 0x11c2f); - (0x11c30, 0x11c36); - (0x11c38, 0x11c3d); - (0x11c3e, 0x11c3e); - (0x11c3f, 0x11c3f); - (0x11c40, 0x11c40); - (0x11c50, 0x11c59); - (0x11c72, 0x11c8f); - (0x11c92, 0x11ca7); - (0x11ca9, 0x11ca9); - (0x11caa, 0x11cb0); - (0x11cb1, 0x11cb1); - (0x11cb2, 0x11cb3); - (0x11cb4, 0x11cb4); - (0x11cb5, 0x11cb6); - (0x11d00, 0x11d06); - (0x11d08, 0x11d09); - (0x11d0b, 0x11d30); - (0x11d31, 0x11d36); - (0x11d3a, 0x11d3a); - (0x11d3c, 0x11d3d); - (0x11d3f, 0x11d45); - (0x11d46, 0x11d46); - (0x11d47, 0x11d47); - (0x11d50, 0x11d59); - (0x11d60, 0x11d65); - (0x11d67, 0x11d68); - (0x11d6a, 0x11d89); - (0x11d8a, 0x11d8e); - (0x11d90, 0x11d91); - (0x11d93, 0x11d94); - (0x11d95, 0x11d95); - (0x11d96, 0x11d96); - (0x11d97, 0x11d97); - (0x11d98, 0x11d98); - (0x11da0, 0x11da9); - (0x11ee0, 0x11ef2); - (0x11ef3, 0x11ef4); - (0x11ef5, 0x11ef6); - (0x11fb0, 0x11fb0); - (0x12000, 0x12399); - (0x12400, 0x1246e); - (0x12480, 0x12543); - (0x12f90, 0x12ff0); - (0x13000, 0x1342e); - (0x14400, 0x14646); - (0x16800, 0x16a38); - (0x16a40, 0x16a5e); - (0x16a60, 0x16a69); - (0x16a70, 0x16abe); - (0x16ac0, 0x16ac9); - (0x16ad0, 0x16aed); - (0x16af0, 0x16af4); - (0x16b00, 0x16b2f); - (0x16b30, 0x16b36); - (0x16b40, 0x16b43); - (0x16b50, 0x16b59); - (0x16b63, 0x16b77); - (0x16b7d, 0x16b8f); - (0x16e40, 0x16e7f); - (0x16f00, 0x16f4a); - (0x16f4f, 0x16f4f); - (0x16f50, 0x16f50); - (0x16f51, 0x16f87); - (0x16f8f, 0x16f92); - (0x16f93, 0x16f9f); - (0x16fe0, 0x16fe1); - (0x16fe3, 0x16fe3); - (0x16fe4, 0x16fe4); - (0x16ff0, 0x16ff1); - (0x17000, 0x187f7); - (0x18800, 0x18cd5); - (0x18d00, 0x18d08); - (0x1aff0, 0x1aff3); - (0x1aff5, 0x1affb); - (0x1affd, 0x1affe); - (0x1b000, 0x1b122); - (0x1b150, 0x1b152); - (0x1b164, 0x1b167); - (0x1b170, 0x1b2fb); - (0x1bc00, 0x1bc6a); - (0x1bc70, 0x1bc7c); - (0x1bc80, 0x1bc88); - (0x1bc90, 0x1bc99); - (0x1bc9d, 0x1bc9e); - (0x1cf00, 0x1cf2d); - (0x1cf30, 0x1cf46); - (0x1d165, 0x1d166); - (0x1d167, 0x1d169); - (0x1d16d, 0x1d172); - (0x1d17b, 0x1d182); - (0x1d185, 0x1d18b); - (0x1d1aa, 0x1d1ad); - (0x1d242, 0x1d244); - (0x1d400, 0x1d454); - (0x1d456, 0x1d49c); - (0x1d49e, 0x1d49f); - (0x1d4a2, 0x1d4a2); - (0x1d4a5, 0x1d4a6); - (0x1d4a9, 0x1d4ac); - (0x1d4ae, 0x1d4b9); - (0x1d4bb, 0x1d4bb); - (0x1d4bd, 0x1d4c3); - (0x1d4c5, 0x1d505); - (0x1d507, 0x1d50a); - (0x1d50d, 0x1d514); - (0x1d516, 0x1d51c); - (0x1d51e, 0x1d539); - (0x1d53b, 0x1d53e); - (0x1d540, 0x1d544); - (0x1d546, 0x1d546); - (0x1d54a, 0x1d550); - (0x1d552, 0x1d6a5); - (0x1d6a8, 0x1d6c0); - (0x1d6c2, 0x1d6da); - (0x1d6dc, 0x1d6fa); - (0x1d6fc, 0x1d714); - (0x1d716, 0x1d734); - (0x1d736, 0x1d74e); - (0x1d750, 0x1d76e); - (0x1d770, 0x1d788); - (0x1d78a, 0x1d7a8); - (0x1d7aa, 0x1d7c2); - (0x1d7c4, 0x1d7cb); - (0x1d7ce, 0x1d7ff); - (0x1da00, 0x1da36); - (0x1da3b, 0x1da6c); - (0x1da75, 0x1da75); - (0x1da84, 0x1da84); - (0x1da9b, 0x1da9f); - (0x1daa1, 0x1daaf); - (0x1df00, 0x1df09); - (0x1df0a, 0x1df0a); - (0x1df0b, 0x1df1e); - (0x1e000, 0x1e006); - (0x1e008, 0x1e018); - (0x1e01b, 0x1e021); - (0x1e023, 0x1e024); - (0x1e026, 0x1e02a); - (0x1e100, 0x1e12c); - (0x1e130, 0x1e136); - (0x1e137, 0x1e13d); - (0x1e140, 0x1e149); - (0x1e14e, 0x1e14e); - (0x1e290, 0x1e2ad); - (0x1e2ae, 0x1e2ae); - (0x1e2c0, 0x1e2eb); - (0x1e2ec, 0x1e2ef); - (0x1e2f0, 0x1e2f9); - (0x1e7e0, 0x1e7e6); - (0x1e7e8, 0x1e7eb); - (0x1e7ed, 0x1e7ee); - (0x1e7f0, 0x1e7fe); - (0x1e800, 0x1e8c4); - (0x1e8d0, 0x1e8d6); - (0x1e900, 0x1e943); - (0x1e944, 0x1e94a); - (0x1e94b, 0x1e94b); - (0x1e950, 0x1e959); - (0x1ee00, 0x1ee03); - (0x1ee05, 0x1ee1f); - (0x1ee21, 0x1ee22); - (0x1ee24, 0x1ee24); - (0x1ee27, 0x1ee27); - (0x1ee29, 0x1ee32); - (0x1ee34, 0x1ee37); - (0x1ee39, 0x1ee39); - (0x1ee3b, 0x1ee3b); - (0x1ee42, 0x1ee42); - (0x1ee47, 0x1ee47); - (0x1ee49, 0x1ee49); - (0x1ee4b, 0x1ee4b); - (0x1ee4d, 0x1ee4f); - (0x1ee51, 0x1ee52); - (0x1ee54, 0x1ee54); - (0x1ee57, 0x1ee57); - (0x1ee59, 0x1ee59); - (0x1ee5b, 0x1ee5b); - (0x1ee5d, 0x1ee5d); - (0x1ee5f, 0x1ee5f); - (0x1ee61, 0x1ee62); - (0x1ee64, 0x1ee64); - (0x1ee67, 0x1ee6a); - (0x1ee6c, 0x1ee72); - (0x1ee74, 0x1ee77); - (0x1ee79, 0x1ee7c); - (0x1ee7e, 0x1ee7e); - (0x1ee80, 0x1ee89); - (0x1ee8b, 0x1ee9b); - (0x1eea1, 0x1eea3); - (0x1eea5, 0x1eea9); - (0x1eeab, 0x1eebb); - (0x1fbf0, 0x1fbf9); - (0x20000, 0x2a6df); - (0x2a700, 0x2b738); - (0x2b740, 0x2b81d); - (0x2b820, 0x2cea1); - (0x2ceb0, 0x2ebe0); - (0x2f800, 0x2fa1d); - (0x30000, 0x3134a); - (0xe0100, 0xe01ef); - ] + [0x30, 0x39; 0x41, 0x5a; 0x5f, 0x5f; 0x61, 0x7a; 0xaa, 0xaa; + 0xb5, 0xb5; 0xb7, 0xb7; 0xba, 0xba; 0xc0, 0xd6; 0xd8, 0xf6; + 0xf8, 0x1ba; 0x1bb, 0x1bb; 0x1bc, 0x1bf; 0x1c0, 0x1c3; 0x1c4, 0x293; + 0x294, 0x294; 0x295, 0x2af; 0x2b0, 0x2c1; 0x2c6, 0x2d1; 0x2e0, 0x2e4; + 0x2ec, 0x2ec; 0x2ee, 0x2ee; 0x300, 0x36f; 0x370, 0x373; 0x374, 0x374; + 0x376, 0x377; 0x37a, 0x37a; 0x37b, 0x37d; 0x37f, 0x37f; 0x386, 0x386; + 0x387, 0x387; 0x388, 0x38a; 0x38c, 0x38c; 0x38e, 0x3a1; 0x3a3, 0x3f5; + 0x3f7, 0x481; 0x483, 0x487; 0x48a, 0x52f; 0x531, 0x556; 0x559, 0x559; + 0x560, 0x588; 0x591, 0x5bd; 0x5bf, 0x5bf; 0x5c1, 0x5c2; 0x5c4, 0x5c5; + 0x5c7, 0x5c7; 0x5d0, 0x5ea; 0x5ef, 0x5f2; 0x610, 0x61a; 0x620, 0x63f; + 0x640, 0x640; 0x641, 0x64a; 0x64b, 0x65f; 0x660, 0x669; 0x66e, 0x66f; + 0x670, 0x670; 0x671, 0x6d3; 0x6d5, 0x6d5; 0x6d6, 0x6dc; 0x6df, 0x6e4; + 0x6e5, 0x6e6; 0x6e7, 0x6e8; 0x6ea, 0x6ed; 0x6ee, 0x6ef; 0x6f0, 0x6f9; + 0x6fa, 0x6fc; 0x6ff, 0x6ff; 0x710, 0x710; 0x711, 0x711; 0x712, 0x72f; + 0x730, 0x74a; 0x74d, 0x7a5; 0x7a6, 0x7b0; 0x7b1, 0x7b1; 0x7c0, 0x7c9; + 0x7ca, 0x7ea; 0x7eb, 0x7f3; 0x7f4, 0x7f5; 0x7fa, 0x7fa; 0x7fd, 0x7fd; + 0x800, 0x815; 0x816, 0x819; 0x81a, 0x81a; 0x81b, 0x823; 0x824, 0x824; + 0x825, 0x827; 0x828, 0x828; 0x829, 0x82d; 0x840, 0x858; 0x859, 0x85b; + 0x860, 0x86a; 0x870, 0x887; 0x889, 0x88e; 0x898, 0x89f; 0x8a0, 0x8c8; + 0x8c9, 0x8c9; 0x8ca, 0x8e1; 0x8e3, 0x902; 0x903, 0x903; 0x904, 0x939; + 0x93a, 0x93a; 0x93b, 0x93b; 0x93c, 0x93c; 0x93d, 0x93d; 0x93e, 0x940; + 0x941, 0x948; 0x949, 0x94c; 0x94d, 0x94d; 0x94e, 0x94f; 0x950, 0x950; + 0x951, 0x957; 0x958, 0x961; 0x962, 0x963; 0x966, 0x96f; 0x971, 0x971; + 0x972, 0x980; 0x981, 0x981; 0x982, 0x983; 0x985, 0x98c; 0x98f, 0x990; + 0x993, 0x9a8; 0x9aa, 0x9b0; 0x9b2, 0x9b2; 0x9b6, 0x9b9; 0x9bc, 0x9bc; + 0x9bd, 0x9bd; 0x9be, 0x9c0; 0x9c1, 0x9c4; 0x9c7, 0x9c8; 0x9cb, 0x9cc; + 0x9cd, 0x9cd; 0x9ce, 0x9ce; 0x9d7, 0x9d7; 0x9dc, 0x9dd; 0x9df, 0x9e1; + 0x9e2, 0x9e3; 0x9e6, 0x9ef; 0x9f0, 0x9f1; 0x9fc, 0x9fc; 0x9fe, 0x9fe; + 0xa01, 0xa02; 0xa03, 0xa03; 0xa05, 0xa0a; 0xa0f, 0xa10; 0xa13, 0xa28; + 0xa2a, 0xa30; 0xa32, 0xa33; 0xa35, 0xa36; 0xa38, 0xa39; 0xa3c, 0xa3c; + 0xa3e, 0xa40; 0xa41, 0xa42; 0xa47, 0xa48; 0xa4b, 0xa4d; 0xa51, 0xa51; + 0xa59, 0xa5c; 0xa5e, 0xa5e; 0xa66, 0xa6f; 0xa70, 0xa71; 0xa72, 0xa74; + 0xa75, 0xa75; 0xa81, 0xa82; 0xa83, 0xa83; 0xa85, 0xa8d; 0xa8f, 0xa91; + 0xa93, 0xaa8; 0xaaa, 0xab0; 0xab2, 0xab3; 0xab5, 0xab9; 0xabc, 0xabc; + 0xabd, 0xabd; 0xabe, 0xac0; 0xac1, 0xac5; 0xac7, 0xac8; 0xac9, 0xac9; + 0xacb, 0xacc; 0xacd, 0xacd; 0xad0, 0xad0; 0xae0, 0xae1; 0xae2, 0xae3; + 0xae6, 0xaef; 0xaf9, 0xaf9; 0xafa, 0xaff; 0xb01, 0xb01; 0xb02, 0xb03; + 0xb05, 0xb0c; 0xb0f, 0xb10; 0xb13, 0xb28; 0xb2a, 0xb30; 0xb32, 0xb33; + 0xb35, 0xb39; 0xb3c, 0xb3c; 0xb3d, 0xb3d; 0xb3e, 0xb3e; 0xb3f, 0xb3f; + 0xb40, 0xb40; 0xb41, 0xb44; 0xb47, 0xb48; 0xb4b, 0xb4c; 0xb4d, 0xb4d; + 0xb55, 0xb56; 0xb57, 0xb57; 0xb5c, 0xb5d; 0xb5f, 0xb61; 0xb62, 0xb63; + 0xb66, 0xb6f; 0xb71, 0xb71; 0xb82, 0xb82; 0xb83, 0xb83; 0xb85, 0xb8a; + 0xb8e, 0xb90; 0xb92, 0xb95; 0xb99, 0xb9a; 0xb9c, 0xb9c; 0xb9e, 0xb9f; + 0xba3, 0xba4; 0xba8, 0xbaa; 0xbae, 0xbb9; 0xbbe, 0xbbf; 0xbc0, 0xbc0; + 0xbc1, 0xbc2; 0xbc6, 0xbc8; 0xbca, 0xbcc; 0xbcd, 0xbcd; 0xbd0, 0xbd0; + 0xbd7, 0xbd7; 0xbe6, 0xbef; 0xc00, 0xc00; 0xc01, 0xc03; 0xc04, 0xc04; + 0xc05, 0xc0c; 0xc0e, 0xc10; 0xc12, 0xc28; 0xc2a, 0xc39; 0xc3c, 0xc3c; + 0xc3d, 0xc3d; 0xc3e, 0xc40; 0xc41, 0xc44; 0xc46, 0xc48; 0xc4a, 0xc4d; + 0xc55, 0xc56; 0xc58, 0xc5a; 0xc5d, 0xc5d; 0xc60, 0xc61; 0xc62, 0xc63; + 0xc66, 0xc6f; 0xc80, 0xc80; 0xc81, 0xc81; 0xc82, 0xc83; 0xc85, 0xc8c; + 0xc8e, 0xc90; 0xc92, 0xca8; 0xcaa, 0xcb3; 0xcb5, 0xcb9; 0xcbc, 0xcbc; + 0xcbd, 0xcbd; 0xcbe, 0xcbe; 0xcbf, 0xcbf; 0xcc0, 0xcc4; 0xcc6, 0xcc6; + 0xcc7, 0xcc8; 0xcca, 0xccb; 0xccc, 0xccd; 0xcd5, 0xcd6; 0xcdd, 0xcde; + 0xce0, 0xce1; 0xce2, 0xce3; 0xce6, 0xcef; 0xcf1, 0xcf2; 0xd00, 0xd01; + 0xd02, 0xd03; 0xd04, 0xd0c; 0xd0e, 0xd10; 0xd12, 0xd3a; 0xd3b, 0xd3c; + 0xd3d, 0xd3d; 0xd3e, 0xd40; 0xd41, 0xd44; 0xd46, 0xd48; 0xd4a, 0xd4c; + 0xd4d, 0xd4d; 0xd4e, 0xd4e; 0xd54, 0xd56; 0xd57, 0xd57; 0xd5f, 0xd61; + 0xd62, 0xd63; 0xd66, 0xd6f; 0xd7a, 0xd7f; 0xd81, 0xd81; 0xd82, 0xd83; + 0xd85, 0xd96; 0xd9a, 0xdb1; 0xdb3, 0xdbb; 0xdbd, 0xdbd; 0xdc0, 0xdc6; + 0xdca, 0xdca; 0xdcf, 0xdd1; 0xdd2, 0xdd4; 0xdd6, 0xdd6; 0xdd8, 0xddf; + 0xde6, 0xdef; 0xdf2, 0xdf3; 0xe01, 0xe30; 0xe31, 0xe31; 0xe32, 0xe33; + 0xe34, 0xe3a; 0xe40, 0xe45; 0xe46, 0xe46; 0xe47, 0xe4e; 0xe50, 0xe59; + 0xe81, 0xe82; 0xe84, 0xe84; 0xe86, 0xe8a; 0xe8c, 0xea3; 0xea5, 0xea5; + 0xea7, 0xeb0; 0xeb1, 0xeb1; 0xeb2, 0xeb3; 0xeb4, 0xebc; 0xebd, 0xebd; + 0xec0, 0xec4; 0xec6, 0xec6; 0xec8, 0xecd; 0xed0, 0xed9; 0xedc, 0xedf; + 0xf00, 0xf00; 0xf18, 0xf19; 0xf20, 0xf29; 0xf35, 0xf35; 0xf37, 0xf37; + 0xf39, 0xf39; 0xf3e, 0xf3f; 0xf40, 0xf47; 0xf49, 0xf6c; 0xf71, 0xf7e; + 0xf7f, 0xf7f; 0xf80, 0xf84; 0xf86, 0xf87; 0xf88, 0xf8c; 0xf8d, 0xf97; + 0xf99, 0xfbc; 0xfc6, 0xfc6; 0x1000, 0x102a; 0x102b, 0x102c; 0x102d, 0x1030; + 0x1031, 0x1031; 0x1032, 0x1037; 0x1038, 0x1038; 0x1039, 0x103a; 0x103b, 0x103c; + 0x103d, 0x103e; 0x103f, 0x103f; 0x1040, 0x1049; 0x1050, 0x1055; 0x1056, 0x1057; + 0x1058, 0x1059; 0x105a, 0x105d; 0x105e, 0x1060; 0x1061, 0x1061; 0x1062, 0x1064; + 0x1065, 0x1066; 0x1067, 0x106d; 0x106e, 0x1070; 0x1071, 0x1074; 0x1075, 0x1081; + 0x1082, 0x1082; 0x1083, 0x1084; 0x1085, 0x1086; 0x1087, 0x108c; 0x108d, 0x108d; + 0x108e, 0x108e; 0x108f, 0x108f; 0x1090, 0x1099; 0x109a, 0x109c; 0x109d, 0x109d; + 0x10a0, 0x10c5; 0x10c7, 0x10c7; 0x10cd, 0x10cd; 0x10d0, 0x10fa; 0x10fc, 0x10fc; + 0x10fd, 0x10ff; 0x1100, 0x1248; 0x124a, 0x124d; 0x1250, 0x1256; 0x1258, 0x1258; + 0x125a, 0x125d; 0x1260, 0x1288; 0x128a, 0x128d; 0x1290, 0x12b0; 0x12b2, 0x12b5; + 0x12b8, 0x12be; 0x12c0, 0x12c0; 0x12c2, 0x12c5; 0x12c8, 0x12d6; 0x12d8, 0x1310; + 0x1312, 0x1315; 0x1318, 0x135a; 0x135d, 0x135f; 0x1369, 0x1371; 0x1380, 0x138f; + 0x13a0, 0x13f5; 0x13f8, 0x13fd; 0x1401, 0x166c; 0x166f, 0x167f; 0x1681, 0x169a; + 0x16a0, 0x16ea; 0x16ee, 0x16f0; 0x16f1, 0x16f8; 0x1700, 0x1711; 0x1712, 0x1714; + 0x1715, 0x1715; 0x171f, 0x1731; 0x1732, 0x1733; 0x1734, 0x1734; 0x1740, 0x1751; + 0x1752, 0x1753; 0x1760, 0x176c; 0x176e, 0x1770; 0x1772, 0x1773; 0x1780, 0x17b3; + 0x17b4, 0x17b5; 0x17b6, 0x17b6; 0x17b7, 0x17bd; 0x17be, 0x17c5; 0x17c6, 0x17c6; + 0x17c7, 0x17c8; 0x17c9, 0x17d3; 0x17d7, 0x17d7; 0x17dc, 0x17dc; 0x17dd, 0x17dd; + 0x17e0, 0x17e9; 0x180b, 0x180d; 0x180f, 0x180f; 0x1810, 0x1819; 0x1820, 0x1842; + 0x1843, 0x1843; 0x1844, 0x1878; 0x1880, 0x1884; 0x1885, 0x1886; 0x1887, 0x18a8; + 0x18a9, 0x18a9; 0x18aa, 0x18aa; 0x18b0, 0x18f5; 0x1900, 0x191e; 0x1920, 0x1922; + 0x1923, 0x1926; 0x1927, 0x1928; 0x1929, 0x192b; 0x1930, 0x1931; 0x1932, 0x1932; + 0x1933, 0x1938; 0x1939, 0x193b; 0x1946, 0x194f; 0x1950, 0x196d; 0x1970, 0x1974; + 0x1980, 0x19ab; 0x19b0, 0x19c9; 0x19d0, 0x19d9; 0x19da, 0x19da; 0x1a00, 0x1a16; + 0x1a17, 0x1a18; 0x1a19, 0x1a1a; 0x1a1b, 0x1a1b; 0x1a20, 0x1a54; 0x1a55, 0x1a55; + 0x1a56, 0x1a56; 0x1a57, 0x1a57; 0x1a58, 0x1a5e; 0x1a60, 0x1a60; 0x1a61, 0x1a61; + 0x1a62, 0x1a62; 0x1a63, 0x1a64; 0x1a65, 0x1a6c; 0x1a6d, 0x1a72; 0x1a73, 0x1a7c; + 0x1a7f, 0x1a7f; 0x1a80, 0x1a89; 0x1a90, 0x1a99; 0x1aa7, 0x1aa7; 0x1ab0, 0x1abd; + 0x1abf, 0x1ace; 0x1b00, 0x1b03; 0x1b04, 0x1b04; 0x1b05, 0x1b33; 0x1b34, 0x1b34; + 0x1b35, 0x1b35; 0x1b36, 0x1b3a; 0x1b3b, 0x1b3b; 0x1b3c, 0x1b3c; 0x1b3d, 0x1b41; + 0x1b42, 0x1b42; 0x1b43, 0x1b44; 0x1b45, 0x1b4c; 0x1b50, 0x1b59; 0x1b6b, 0x1b73; + 0x1b80, 0x1b81; 0x1b82, 0x1b82; 0x1b83, 0x1ba0; 0x1ba1, 0x1ba1; 0x1ba2, 0x1ba5; + 0x1ba6, 0x1ba7; 0x1ba8, 0x1ba9; 0x1baa, 0x1baa; 0x1bab, 0x1bad; 0x1bae, 0x1baf; + 0x1bb0, 0x1bb9; 0x1bba, 0x1be5; 0x1be6, 0x1be6; 0x1be7, 0x1be7; 0x1be8, 0x1be9; + 0x1bea, 0x1bec; 0x1bed, 0x1bed; 0x1bee, 0x1bee; 0x1bef, 0x1bf1; 0x1bf2, 0x1bf3; + 0x1c00, 0x1c23; 0x1c24, 0x1c2b; 0x1c2c, 0x1c33; 0x1c34, 0x1c35; 0x1c36, 0x1c37; + 0x1c40, 0x1c49; 0x1c4d, 0x1c4f; 0x1c50, 0x1c59; 0x1c5a, 0x1c77; 0x1c78, 0x1c7d; + 0x1c80, 0x1c88; 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 0x1cd0, 0x1cd2; 0x1cd4, 0x1ce0; + 0x1ce1, 0x1ce1; 0x1ce2, 0x1ce8; 0x1ce9, 0x1cec; 0x1ced, 0x1ced; 0x1cee, 0x1cf3; + 0x1cf4, 0x1cf4; 0x1cf5, 0x1cf6; 0x1cf7, 0x1cf7; 0x1cf8, 0x1cf9; 0x1cfa, 0x1cfa; + 0x1d00, 0x1d2b; 0x1d2c, 0x1d6a; 0x1d6b, 0x1d77; 0x1d78, 0x1d78; 0x1d79, 0x1d9a; + 0x1d9b, 0x1dbf; 0x1dc0, 0x1dff; 0x1e00, 0x1f15; 0x1f18, 0x1f1d; 0x1f20, 0x1f45; + 0x1f48, 0x1f4d; 0x1f50, 0x1f57; 0x1f59, 0x1f59; 0x1f5b, 0x1f5b; 0x1f5d, 0x1f5d; + 0x1f5f, 0x1f7d; 0x1f80, 0x1fb4; 0x1fb6, 0x1fbc; 0x1fbe, 0x1fbe; 0x1fc2, 0x1fc4; + 0x1fc6, 0x1fcc; 0x1fd0, 0x1fd3; 0x1fd6, 0x1fdb; 0x1fe0, 0x1fec; 0x1ff2, 0x1ff4; + 0x1ff6, 0x1ffc; 0x203f, 0x2040; 0x2054, 0x2054; 0x2071, 0x2071; 0x207f, 0x207f; + 0x2090, 0x209c; 0x20d0, 0x20dc; 0x20e1, 0x20e1; 0x20e5, 0x20f0; 0x2102, 0x2102; + 0x2107, 0x2107; 0x210a, 0x2113; 0x2115, 0x2115; 0x2118, 0x2118; 0x2119, 0x211d; + 0x2124, 0x2124; 0x2126, 0x2126; 0x2128, 0x2128; 0x212a, 0x212d; 0x212e, 0x212e; + 0x212f, 0x2134; 0x2135, 0x2138; 0x2139, 0x2139; 0x213c, 0x213f; 0x2145, 0x2149; + 0x214e, 0x214e; 0x2160, 0x2182; 0x2183, 0x2184; 0x2185, 0x2188; 0x2c00, 0x2c7b; + 0x2c7c, 0x2c7d; 0x2c7e, 0x2ce4; 0x2ceb, 0x2cee; 0x2cef, 0x2cf1; 0x2cf2, 0x2cf3; + 0x2d00, 0x2d25; 0x2d27, 0x2d27; 0x2d2d, 0x2d2d; 0x2d30, 0x2d67; 0x2d6f, 0x2d6f; + 0x2d7f, 0x2d7f; 0x2d80, 0x2d96; 0x2da0, 0x2da6; 0x2da8, 0x2dae; 0x2db0, 0x2db6; + 0x2db8, 0x2dbe; 0x2dc0, 0x2dc6; 0x2dc8, 0x2dce; 0x2dd0, 0x2dd6; 0x2dd8, 0x2dde; + 0x2de0, 0x2dff; 0x3005, 0x3005; 0x3006, 0x3006; 0x3007, 0x3007; 0x3021, 0x3029; + 0x302a, 0x302d; 0x302e, 0x302f; 0x3031, 0x3035; 0x3038, 0x303a; 0x303b, 0x303b; + 0x303c, 0x303c; 0x3041, 0x3096; 0x3099, 0x309a; 0x309b, 0x309c; 0x309d, 0x309e; + 0x309f, 0x309f; 0x30a1, 0x30fa; 0x30fc, 0x30fe; 0x30ff, 0x30ff; 0x3105, 0x312f; + 0x3131, 0x318e; 0x31a0, 0x31bf; 0x31f0, 0x31ff; 0x3400, 0x4dbf; 0x4e00, 0xa014; + 0xa015, 0xa015; 0xa016, 0xa48c; 0xa4d0, 0xa4f7; 0xa4f8, 0xa4fd; 0xa500, 0xa60b; + 0xa60c, 0xa60c; 0xa610, 0xa61f; 0xa620, 0xa629; 0xa62a, 0xa62b; 0xa640, 0xa66d; + 0xa66e, 0xa66e; 0xa66f, 0xa66f; 0xa674, 0xa67d; 0xa67f, 0xa67f; 0xa680, 0xa69b; + 0xa69c, 0xa69d; 0xa69e, 0xa69f; 0xa6a0, 0xa6e5; 0xa6e6, 0xa6ef; 0xa6f0, 0xa6f1; + 0xa717, 0xa71f; 0xa722, 0xa76f; 0xa770, 0xa770; 0xa771, 0xa787; 0xa788, 0xa788; + 0xa78b, 0xa78e; 0xa78f, 0xa78f; 0xa790, 0xa7ca; 0xa7d0, 0xa7d1; 0xa7d3, 0xa7d3; + 0xa7d5, 0xa7d9; 0xa7f2, 0xa7f4; 0xa7f5, 0xa7f6; 0xa7f7, 0xa7f7; 0xa7f8, 0xa7f9; + 0xa7fa, 0xa7fa; 0xa7fb, 0xa801; 0xa802, 0xa802; 0xa803, 0xa805; 0xa806, 0xa806; + 0xa807, 0xa80a; 0xa80b, 0xa80b; 0xa80c, 0xa822; 0xa823, 0xa824; 0xa825, 0xa826; + 0xa827, 0xa827; 0xa82c, 0xa82c; 0xa840, 0xa873; 0xa880, 0xa881; 0xa882, 0xa8b3; + 0xa8b4, 0xa8c3; 0xa8c4, 0xa8c5; 0xa8d0, 0xa8d9; 0xa8e0, 0xa8f1; 0xa8f2, 0xa8f7; + 0xa8fb, 0xa8fb; 0xa8fd, 0xa8fe; 0xa8ff, 0xa8ff; 0xa900, 0xa909; 0xa90a, 0xa925; + 0xa926, 0xa92d; 0xa930, 0xa946; 0xa947, 0xa951; 0xa952, 0xa953; 0xa960, 0xa97c; + 0xa980, 0xa982; 0xa983, 0xa983; 0xa984, 0xa9b2; 0xa9b3, 0xa9b3; 0xa9b4, 0xa9b5; + 0xa9b6, 0xa9b9; 0xa9ba, 0xa9bb; 0xa9bc, 0xa9bd; 0xa9be, 0xa9c0; 0xa9cf, 0xa9cf; + 0xa9d0, 0xa9d9; 0xa9e0, 0xa9e4; 0xa9e5, 0xa9e5; 0xa9e6, 0xa9e6; 0xa9e7, 0xa9ef; + 0xa9f0, 0xa9f9; 0xa9fa, 0xa9fe; 0xaa00, 0xaa28; 0xaa29, 0xaa2e; 0xaa2f, 0xaa30; + 0xaa31, 0xaa32; 0xaa33, 0xaa34; 0xaa35, 0xaa36; 0xaa40, 0xaa42; 0xaa43, 0xaa43; + 0xaa44, 0xaa4b; 0xaa4c, 0xaa4c; 0xaa4d, 0xaa4d; 0xaa50, 0xaa59; 0xaa60, 0xaa6f; + 0xaa70, 0xaa70; 0xaa71, 0xaa76; 0xaa7a, 0xaa7a; 0xaa7b, 0xaa7b; 0xaa7c, 0xaa7c; + 0xaa7d, 0xaa7d; 0xaa7e, 0xaaaf; 0xaab0, 0xaab0; 0xaab1, 0xaab1; 0xaab2, 0xaab4; + 0xaab5, 0xaab6; 0xaab7, 0xaab8; 0xaab9, 0xaabd; 0xaabe, 0xaabf; 0xaac0, 0xaac0; + 0xaac1, 0xaac1; 0xaac2, 0xaac2; 0xaadb, 0xaadc; 0xaadd, 0xaadd; 0xaae0, 0xaaea; + 0xaaeb, 0xaaeb; 0xaaec, 0xaaed; 0xaaee, 0xaaef; 0xaaf2, 0xaaf2; 0xaaf3, 0xaaf4; + 0xaaf5, 0xaaf5; 0xaaf6, 0xaaf6; 0xab01, 0xab06; 0xab09, 0xab0e; 0xab11, 0xab16; + 0xab20, 0xab26; 0xab28, 0xab2e; 0xab30, 0xab5a; 0xab5c, 0xab5f; 0xab60, 0xab68; + 0xab69, 0xab69; 0xab70, 0xabbf; 0xabc0, 0xabe2; 0xabe3, 0xabe4; 0xabe5, 0xabe5; + 0xabe6, 0xabe7; 0xabe8, 0xabe8; 0xabe9, 0xabea; 0xabec, 0xabec; 0xabed, 0xabed; + 0xabf0, 0xabf9; 0xac00, 0xd7a3; 0xd7b0, 0xd7c6; 0xd7cb, 0xd7fb; 0xf900, 0xfa6d; + 0xfa70, 0xfad9; 0xfb00, 0xfb06; 0xfb13, 0xfb17; 0xfb1d, 0xfb1d; 0xfb1e, 0xfb1e; + 0xfb1f, 0xfb28; 0xfb2a, 0xfb36; 0xfb38, 0xfb3c; 0xfb3e, 0xfb3e; 0xfb40, 0xfb41; + 0xfb43, 0xfb44; 0xfb46, 0xfbb1; 0xfbd3, 0xfd3d; 0xfd50, 0xfd8f; 0xfd92, 0xfdc7; + 0xfdf0, 0xfdfb; 0xfe00, 0xfe0f; 0xfe20, 0xfe2f; 0xfe33, 0xfe34; 0xfe4d, 0xfe4f; + 0xfe70, 0xfe74; 0xfe76, 0xfefc; 0xff10, 0xff19; 0xff21, 0xff3a; 0xff3f, 0xff3f; + 0xff41, 0xff5a; 0xff66, 0xff6f; 0xff70, 0xff70; 0xff71, 0xff9d; 0xff9e, 0xff9f; + 0xffa0, 0xffbe; 0xffc2, 0xffc7; 0xffca, 0xffcf; 0xffd2, 0xffd7; 0xffda, 0xffdc; + 0x10000, 0x1000b; 0x1000d, 0x10026; 0x10028, 0x1003a; 0x1003c, 0x1003d; 0x1003f, 0x1004d; + 0x10050, 0x1005d; 0x10080, 0x100fa; 0x10140, 0x10174; 0x101fd, 0x101fd; 0x10280, 0x1029c; + 0x102a0, 0x102d0; 0x102e0, 0x102e0; 0x10300, 0x1031f; 0x1032d, 0x10340; 0x10341, 0x10341; + 0x10342, 0x10349; 0x1034a, 0x1034a; 0x10350, 0x10375; 0x10376, 0x1037a; 0x10380, 0x1039d; + 0x103a0, 0x103c3; 0x103c8, 0x103cf; 0x103d1, 0x103d5; 0x10400, 0x1044f; 0x10450, 0x1049d; + 0x104a0, 0x104a9; 0x104b0, 0x104d3; 0x104d8, 0x104fb; 0x10500, 0x10527; 0x10530, 0x10563; + 0x10570, 0x1057a; 0x1057c, 0x1058a; 0x1058c, 0x10592; 0x10594, 0x10595; 0x10597, 0x105a1; + 0x105a3, 0x105b1; 0x105b3, 0x105b9; 0x105bb, 0x105bc; 0x10600, 0x10736; 0x10740, 0x10755; + 0x10760, 0x10767; 0x10780, 0x10785; 0x10787, 0x107b0; 0x107b2, 0x107ba; 0x10800, 0x10805; + 0x10808, 0x10808; 0x1080a, 0x10835; 0x10837, 0x10838; 0x1083c, 0x1083c; 0x1083f, 0x10855; + 0x10860, 0x10876; 0x10880, 0x1089e; 0x108e0, 0x108f2; 0x108f4, 0x108f5; 0x10900, 0x10915; + 0x10920, 0x10939; 0x10980, 0x109b7; 0x109be, 0x109bf; 0x10a00, 0x10a00; 0x10a01, 0x10a03; + 0x10a05, 0x10a06; 0x10a0c, 0x10a0f; 0x10a10, 0x10a13; 0x10a15, 0x10a17; 0x10a19, 0x10a35; + 0x10a38, 0x10a3a; 0x10a3f, 0x10a3f; 0x10a60, 0x10a7c; 0x10a80, 0x10a9c; 0x10ac0, 0x10ac7; + 0x10ac9, 0x10ae4; 0x10ae5, 0x10ae6; 0x10b00, 0x10b35; 0x10b40, 0x10b55; 0x10b60, 0x10b72; + 0x10b80, 0x10b91; 0x10c00, 0x10c48; 0x10c80, 0x10cb2; 0x10cc0, 0x10cf2; 0x10d00, 0x10d23; + 0x10d24, 0x10d27; 0x10d30, 0x10d39; 0x10e80, 0x10ea9; 0x10eab, 0x10eac; 0x10eb0, 0x10eb1; + 0x10f00, 0x10f1c; 0x10f27, 0x10f27; 0x10f30, 0x10f45; 0x10f46, 0x10f50; 0x10f70, 0x10f81; + 0x10f82, 0x10f85; 0x10fb0, 0x10fc4; 0x10fe0, 0x10ff6; 0x11000, 0x11000; 0x11001, 0x11001; + 0x11002, 0x11002; 0x11003, 0x11037; 0x11038, 0x11046; 0x11066, 0x1106f; 0x11070, 0x11070; + 0x11071, 0x11072; 0x11073, 0x11074; 0x11075, 0x11075; 0x1107f, 0x11081; 0x11082, 0x11082; + 0x11083, 0x110af; 0x110b0, 0x110b2; 0x110b3, 0x110b6; 0x110b7, 0x110b8; 0x110b9, 0x110ba; + 0x110c2, 0x110c2; 0x110d0, 0x110e8; 0x110f0, 0x110f9; 0x11100, 0x11102; 0x11103, 0x11126; + 0x11127, 0x1112b; 0x1112c, 0x1112c; 0x1112d, 0x11134; 0x11136, 0x1113f; 0x11144, 0x11144; + 0x11145, 0x11146; 0x11147, 0x11147; 0x11150, 0x11172; 0x11173, 0x11173; 0x11176, 0x11176; + 0x11180, 0x11181; 0x11182, 0x11182; 0x11183, 0x111b2; 0x111b3, 0x111b5; 0x111b6, 0x111be; + 0x111bf, 0x111c0; 0x111c1, 0x111c4; 0x111c9, 0x111cc; 0x111ce, 0x111ce; 0x111cf, 0x111cf; + 0x111d0, 0x111d9; 0x111da, 0x111da; 0x111dc, 0x111dc; 0x11200, 0x11211; 0x11213, 0x1122b; + 0x1122c, 0x1122e; 0x1122f, 0x11231; 0x11232, 0x11233; 0x11234, 0x11234; 0x11235, 0x11235; + 0x11236, 0x11237; 0x1123e, 0x1123e; 0x11280, 0x11286; 0x11288, 0x11288; 0x1128a, 0x1128d; + 0x1128f, 0x1129d; 0x1129f, 0x112a8; 0x112b0, 0x112de; 0x112df, 0x112df; 0x112e0, 0x112e2; + 0x112e3, 0x112ea; 0x112f0, 0x112f9; 0x11300, 0x11301; 0x11302, 0x11303; 0x11305, 0x1130c; + 0x1130f, 0x11310; 0x11313, 0x11328; 0x1132a, 0x11330; 0x11332, 0x11333; 0x11335, 0x11339; + 0x1133b, 0x1133c; 0x1133d, 0x1133d; 0x1133e, 0x1133f; 0x11340, 0x11340; 0x11341, 0x11344; + 0x11347, 0x11348; 0x1134b, 0x1134d; 0x11350, 0x11350; 0x11357, 0x11357; 0x1135d, 0x11361; + 0x11362, 0x11363; 0x11366, 0x1136c; 0x11370, 0x11374; 0x11400, 0x11434; 0x11435, 0x11437; + 0x11438, 0x1143f; 0x11440, 0x11441; 0x11442, 0x11444; 0x11445, 0x11445; 0x11446, 0x11446; + 0x11447, 0x1144a; 0x11450, 0x11459; 0x1145e, 0x1145e; 0x1145f, 0x11461; 0x11480, 0x114af; + 0x114b0, 0x114b2; 0x114b3, 0x114b8; 0x114b9, 0x114b9; 0x114ba, 0x114ba; 0x114bb, 0x114be; + 0x114bf, 0x114c0; 0x114c1, 0x114c1; 0x114c2, 0x114c3; 0x114c4, 0x114c5; 0x114c7, 0x114c7; + 0x114d0, 0x114d9; 0x11580, 0x115ae; 0x115af, 0x115b1; 0x115b2, 0x115b5; 0x115b8, 0x115bb; + 0x115bc, 0x115bd; 0x115be, 0x115be; 0x115bf, 0x115c0; 0x115d8, 0x115db; 0x115dc, 0x115dd; + 0x11600, 0x1162f; 0x11630, 0x11632; 0x11633, 0x1163a; 0x1163b, 0x1163c; 0x1163d, 0x1163d; + 0x1163e, 0x1163e; 0x1163f, 0x11640; 0x11644, 0x11644; 0x11650, 0x11659; 0x11680, 0x116aa; + 0x116ab, 0x116ab; 0x116ac, 0x116ac; 0x116ad, 0x116ad; 0x116ae, 0x116af; 0x116b0, 0x116b5; + 0x116b6, 0x116b6; 0x116b7, 0x116b7; 0x116b8, 0x116b8; 0x116c0, 0x116c9; 0x11700, 0x1171a; + 0x1171d, 0x1171f; 0x11720, 0x11721; 0x11722, 0x11725; 0x11726, 0x11726; 0x11727, 0x1172b; + 0x11730, 0x11739; 0x11740, 0x11746; 0x11800, 0x1182b; 0x1182c, 0x1182e; 0x1182f, 0x11837; + 0x11838, 0x11838; 0x11839, 0x1183a; 0x118a0, 0x118df; 0x118e0, 0x118e9; 0x118ff, 0x11906; + 0x11909, 0x11909; 0x1190c, 0x11913; 0x11915, 0x11916; 0x11918, 0x1192f; 0x11930, 0x11935; + 0x11937, 0x11938; 0x1193b, 0x1193c; 0x1193d, 0x1193d; 0x1193e, 0x1193e; 0x1193f, 0x1193f; + 0x11940, 0x11940; 0x11941, 0x11941; 0x11942, 0x11942; 0x11943, 0x11943; 0x11950, 0x11959; + 0x119a0, 0x119a7; 0x119aa, 0x119d0; 0x119d1, 0x119d3; 0x119d4, 0x119d7; 0x119da, 0x119db; + 0x119dc, 0x119df; 0x119e0, 0x119e0; 0x119e1, 0x119e1; 0x119e3, 0x119e3; 0x119e4, 0x119e4; + 0x11a00, 0x11a00; 0x11a01, 0x11a0a; 0x11a0b, 0x11a32; 0x11a33, 0x11a38; 0x11a39, 0x11a39; + 0x11a3a, 0x11a3a; 0x11a3b, 0x11a3e; 0x11a47, 0x11a47; 0x11a50, 0x11a50; 0x11a51, 0x11a56; + 0x11a57, 0x11a58; 0x11a59, 0x11a5b; 0x11a5c, 0x11a89; 0x11a8a, 0x11a96; 0x11a97, 0x11a97; + 0x11a98, 0x11a99; 0x11a9d, 0x11a9d; 0x11ab0, 0x11af8; 0x11c00, 0x11c08; 0x11c0a, 0x11c2e; + 0x11c2f, 0x11c2f; 0x11c30, 0x11c36; 0x11c38, 0x11c3d; 0x11c3e, 0x11c3e; 0x11c3f, 0x11c3f; + 0x11c40, 0x11c40; 0x11c50, 0x11c59; 0x11c72, 0x11c8f; 0x11c92, 0x11ca7; 0x11ca9, 0x11ca9; + 0x11caa, 0x11cb0; 0x11cb1, 0x11cb1; 0x11cb2, 0x11cb3; 0x11cb4, 0x11cb4; 0x11cb5, 0x11cb6; + 0x11d00, 0x11d06; 0x11d08, 0x11d09; 0x11d0b, 0x11d30; 0x11d31, 0x11d36; 0x11d3a, 0x11d3a; + 0x11d3c, 0x11d3d; 0x11d3f, 0x11d45; 0x11d46, 0x11d46; 0x11d47, 0x11d47; 0x11d50, 0x11d59; + 0x11d60, 0x11d65; 0x11d67, 0x11d68; 0x11d6a, 0x11d89; 0x11d8a, 0x11d8e; 0x11d90, 0x11d91; + 0x11d93, 0x11d94; 0x11d95, 0x11d95; 0x11d96, 0x11d96; 0x11d97, 0x11d97; 0x11d98, 0x11d98; + 0x11da0, 0x11da9; 0x11ee0, 0x11ef2; 0x11ef3, 0x11ef4; 0x11ef5, 0x11ef6; 0x11fb0, 0x11fb0; + 0x12000, 0x12399; 0x12400, 0x1246e; 0x12480, 0x12543; 0x12f90, 0x12ff0; 0x13000, 0x1342e; + 0x14400, 0x14646; 0x16800, 0x16a38; 0x16a40, 0x16a5e; 0x16a60, 0x16a69; 0x16a70, 0x16abe; + 0x16ac0, 0x16ac9; 0x16ad0, 0x16aed; 0x16af0, 0x16af4; 0x16b00, 0x16b2f; 0x16b30, 0x16b36; + 0x16b40, 0x16b43; 0x16b50, 0x16b59; 0x16b63, 0x16b77; 0x16b7d, 0x16b8f; 0x16e40, 0x16e7f; + 0x16f00, 0x16f4a; 0x16f4f, 0x16f4f; 0x16f50, 0x16f50; 0x16f51, 0x16f87; 0x16f8f, 0x16f92; + 0x16f93, 0x16f9f; 0x16fe0, 0x16fe1; 0x16fe3, 0x16fe3; 0x16fe4, 0x16fe4; 0x16ff0, 0x16ff1; + 0x17000, 0x187f7; 0x18800, 0x18cd5; 0x18d00, 0x18d08; 0x1aff0, 0x1aff3; 0x1aff5, 0x1affb; + 0x1affd, 0x1affe; 0x1b000, 0x1b122; 0x1b150, 0x1b152; 0x1b164, 0x1b167; 0x1b170, 0x1b2fb; + 0x1bc00, 0x1bc6a; 0x1bc70, 0x1bc7c; 0x1bc80, 0x1bc88; 0x1bc90, 0x1bc99; 0x1bc9d, 0x1bc9e; + 0x1cf00, 0x1cf2d; 0x1cf30, 0x1cf46; 0x1d165, 0x1d166; 0x1d167, 0x1d169; 0x1d16d, 0x1d172; + 0x1d17b, 0x1d182; 0x1d185, 0x1d18b; 0x1d1aa, 0x1d1ad; 0x1d242, 0x1d244; 0x1d400, 0x1d454; + 0x1d456, 0x1d49c; 0x1d49e, 0x1d49f; 0x1d4a2, 0x1d4a2; 0x1d4a5, 0x1d4a6; 0x1d4a9, 0x1d4ac; + 0x1d4ae, 0x1d4b9; 0x1d4bb, 0x1d4bb; 0x1d4bd, 0x1d4c3; 0x1d4c5, 0x1d505; 0x1d507, 0x1d50a; + 0x1d50d, 0x1d514; 0x1d516, 0x1d51c; 0x1d51e, 0x1d539; 0x1d53b, 0x1d53e; 0x1d540, 0x1d544; + 0x1d546, 0x1d546; 0x1d54a, 0x1d550; 0x1d552, 0x1d6a5; 0x1d6a8, 0x1d6c0; 0x1d6c2, 0x1d6da; + 0x1d6dc, 0x1d6fa; 0x1d6fc, 0x1d714; 0x1d716, 0x1d734; 0x1d736, 0x1d74e; 0x1d750, 0x1d76e; + 0x1d770, 0x1d788; 0x1d78a, 0x1d7a8; 0x1d7aa, 0x1d7c2; 0x1d7c4, 0x1d7cb; 0x1d7ce, 0x1d7ff; + 0x1da00, 0x1da36; 0x1da3b, 0x1da6c; 0x1da75, 0x1da75; 0x1da84, 0x1da84; 0x1da9b, 0x1da9f; + 0x1daa1, 0x1daaf; 0x1df00, 0x1df09; 0x1df0a, 0x1df0a; 0x1df0b, 0x1df1e; 0x1e000, 0x1e006; + 0x1e008, 0x1e018; 0x1e01b, 0x1e021; 0x1e023, 0x1e024; 0x1e026, 0x1e02a; 0x1e100, 0x1e12c; + 0x1e130, 0x1e136; 0x1e137, 0x1e13d; 0x1e140, 0x1e149; 0x1e14e, 0x1e14e; 0x1e290, 0x1e2ad; + 0x1e2ae, 0x1e2ae; 0x1e2c0, 0x1e2eb; 0x1e2ec, 0x1e2ef; 0x1e2f0, 0x1e2f9; 0x1e7e0, 0x1e7e6; + 0x1e7e8, 0x1e7eb; 0x1e7ed, 0x1e7ee; 0x1e7f0, 0x1e7fe; 0x1e800, 0x1e8c4; 0x1e8d0, 0x1e8d6; + 0x1e900, 0x1e943; 0x1e944, 0x1e94a; 0x1e94b, 0x1e94b; 0x1e950, 0x1e959; 0x1ee00, 0x1ee03; + 0x1ee05, 0x1ee1f; 0x1ee21, 0x1ee22; 0x1ee24, 0x1ee24; 0x1ee27, 0x1ee27; 0x1ee29, 0x1ee32; + 0x1ee34, 0x1ee37; 0x1ee39, 0x1ee39; 0x1ee3b, 0x1ee3b; 0x1ee42, 0x1ee42; 0x1ee47, 0x1ee47; + 0x1ee49, 0x1ee49; 0x1ee4b, 0x1ee4b; 0x1ee4d, 0x1ee4f; 0x1ee51, 0x1ee52; 0x1ee54, 0x1ee54; + 0x1ee57, 0x1ee57; 0x1ee59, 0x1ee59; 0x1ee5b, 0x1ee5b; 0x1ee5d, 0x1ee5d; 0x1ee5f, 0x1ee5f; + 0x1ee61, 0x1ee62; 0x1ee64, 0x1ee64; 0x1ee67, 0x1ee6a; 0x1ee6c, 0x1ee72; 0x1ee74, 0x1ee77; + 0x1ee79, 0x1ee7c; 0x1ee7e, 0x1ee7e; 0x1ee80, 0x1ee89; 0x1ee8b, 0x1ee9b; 0x1eea1, 0x1eea3; + 0x1eea5, 0x1eea9; 0x1eeab, 0x1eebb; 0x1fbf0, 0x1fbf9; 0x20000, 0x2a6df; 0x2a700, 0x2b738; + 0x2b740, 0x2b81d; 0x2b820, 0x2cea1; 0x2ceb0, 0x2ebe0; 0x2f800, 0x2fa1d; 0x30000, 0x3134a; + 0xe0100, 0xe01ef] let id_start = - [ - (0x41, 0x5a); - (0x61, 0x7a); - (0xaa, 0xaa); - (0xb5, 0xb5); - (0xba, 0xba); - (0xc0, 0xd6); - (0xd8, 0xf6); - (0xf8, 0x1ba); - (0x1bb, 0x1bb); - (0x1bc, 0x1bf); - (0x1c0, 0x1c3); - (0x1c4, 0x293); - (0x294, 0x294); - (0x295, 0x2af); - (0x2b0, 0x2c1); - (0x2c6, 0x2d1); - (0x2e0, 0x2e4); - (0x2ec, 0x2ec); - (0x2ee, 0x2ee); - (0x370, 0x373); - (0x374, 0x374); - (0x376, 0x377); - (0x37a, 0x37a); - (0x37b, 0x37d); - (0x37f, 0x37f); - (0x386, 0x386); - (0x388, 0x38a); - (0x38c, 0x38c); - (0x38e, 0x3a1); - (0x3a3, 0x3f5); - (0x3f7, 0x481); - (0x48a, 0x52f); - (0x531, 0x556); - (0x559, 0x559); - (0x560, 0x588); - (0x5d0, 0x5ea); - (0x5ef, 0x5f2); - (0x620, 0x63f); - (0x640, 0x640); - (0x641, 0x64a); - (0x66e, 0x66f); - (0x671, 0x6d3); - (0x6d5, 0x6d5); - (0x6e5, 0x6e6); - (0x6ee, 0x6ef); - (0x6fa, 0x6fc); - (0x6ff, 0x6ff); - (0x710, 0x710); - (0x712, 0x72f); - (0x74d, 0x7a5); - (0x7b1, 0x7b1); - (0x7ca, 0x7ea); - (0x7f4, 0x7f5); - (0x7fa, 0x7fa); - (0x800, 0x815); - (0x81a, 0x81a); - (0x824, 0x824); - (0x828, 0x828); - (0x840, 0x858); - (0x860, 0x86a); - (0x870, 0x887); - (0x889, 0x88e); - (0x8a0, 0x8c8); - (0x8c9, 0x8c9); - (0x904, 0x939); - (0x93d, 0x93d); - (0x950, 0x950); - (0x958, 0x961); - (0x971, 0x971); - (0x972, 0x980); - (0x985, 0x98c); - (0x98f, 0x990); - (0x993, 0x9a8); - (0x9aa, 0x9b0); - (0x9b2, 0x9b2); - (0x9b6, 0x9b9); - (0x9bd, 0x9bd); - (0x9ce, 0x9ce); - (0x9dc, 0x9dd); - (0x9df, 0x9e1); - (0x9f0, 0x9f1); - (0x9fc, 0x9fc); - (0xa05, 0xa0a); - (0xa0f, 0xa10); - (0xa13, 0xa28); - (0xa2a, 0xa30); - (0xa32, 0xa33); - (0xa35, 0xa36); - (0xa38, 0xa39); - (0xa59, 0xa5c); - (0xa5e, 0xa5e); - (0xa72, 0xa74); - (0xa85, 0xa8d); - (0xa8f, 0xa91); - (0xa93, 0xaa8); - (0xaaa, 0xab0); - (0xab2, 0xab3); - (0xab5, 0xab9); - (0xabd, 0xabd); - (0xad0, 0xad0); - (0xae0, 0xae1); - (0xaf9, 0xaf9); - (0xb05, 0xb0c); - (0xb0f, 0xb10); - (0xb13, 0xb28); - (0xb2a, 0xb30); - (0xb32, 0xb33); - (0xb35, 0xb39); - (0xb3d, 0xb3d); - (0xb5c, 0xb5d); - (0xb5f, 0xb61); - (0xb71, 0xb71); - (0xb83, 0xb83); - (0xb85, 0xb8a); - (0xb8e, 0xb90); - (0xb92, 0xb95); - (0xb99, 0xb9a); - (0xb9c, 0xb9c); - (0xb9e, 0xb9f); - (0xba3, 0xba4); - (0xba8, 0xbaa); - (0xbae, 0xbb9); - (0xbd0, 0xbd0); - (0xc05, 0xc0c); - (0xc0e, 0xc10); - (0xc12, 0xc28); - (0xc2a, 0xc39); - (0xc3d, 0xc3d); - (0xc58, 0xc5a); - (0xc5d, 0xc5d); - (0xc60, 0xc61); - (0xc80, 0xc80); - (0xc85, 0xc8c); - (0xc8e, 0xc90); - (0xc92, 0xca8); - (0xcaa, 0xcb3); - (0xcb5, 0xcb9); - (0xcbd, 0xcbd); - (0xcdd, 0xcde); - (0xce0, 0xce1); - (0xcf1, 0xcf2); - (0xd04, 0xd0c); - (0xd0e, 0xd10); - (0xd12, 0xd3a); - (0xd3d, 0xd3d); - (0xd4e, 0xd4e); - (0xd54, 0xd56); - (0xd5f, 0xd61); - (0xd7a, 0xd7f); - (0xd85, 0xd96); - (0xd9a, 0xdb1); - (0xdb3, 0xdbb); - (0xdbd, 0xdbd); - (0xdc0, 0xdc6); - (0xe01, 0xe30); - (0xe32, 0xe33); - (0xe40, 0xe45); - (0xe46, 0xe46); - (0xe81, 0xe82); - (0xe84, 0xe84); - (0xe86, 0xe8a); - (0xe8c, 0xea3); - (0xea5, 0xea5); - (0xea7, 0xeb0); - (0xeb2, 0xeb3); - (0xebd, 0xebd); - (0xec0, 0xec4); - (0xec6, 0xec6); - (0xedc, 0xedf); - (0xf00, 0xf00); - (0xf40, 0xf47); - (0xf49, 0xf6c); - (0xf88, 0xf8c); - (0x1000, 0x102a); - (0x103f, 0x103f); - (0x1050, 0x1055); - (0x105a, 0x105d); - (0x1061, 0x1061); - (0x1065, 0x1066); - (0x106e, 0x1070); - (0x1075, 0x1081); - (0x108e, 0x108e); - (0x10a0, 0x10c5); - (0x10c7, 0x10c7); - (0x10cd, 0x10cd); - (0x10d0, 0x10fa); - (0x10fc, 0x10fc); - (0x10fd, 0x10ff); - (0x1100, 0x1248); - (0x124a, 0x124d); - (0x1250, 0x1256); - (0x1258, 0x1258); - (0x125a, 0x125d); - (0x1260, 0x1288); - (0x128a, 0x128d); - (0x1290, 0x12b0); - (0x12b2, 0x12b5); - (0x12b8, 0x12be); - (0x12c0, 0x12c0); - (0x12c2, 0x12c5); - (0x12c8, 0x12d6); - (0x12d8, 0x1310); - (0x1312, 0x1315); - (0x1318, 0x135a); - (0x1380, 0x138f); - (0x13a0, 0x13f5); - (0x13f8, 0x13fd); - (0x1401, 0x166c); - (0x166f, 0x167f); - (0x1681, 0x169a); - (0x16a0, 0x16ea); - (0x16ee, 0x16f0); - (0x16f1, 0x16f8); - (0x1700, 0x1711); - (0x171f, 0x1731); - (0x1740, 0x1751); - (0x1760, 0x176c); - (0x176e, 0x1770); - (0x1780, 0x17b3); - (0x17d7, 0x17d7); - (0x17dc, 0x17dc); - (0x1820, 0x1842); - (0x1843, 0x1843); - (0x1844, 0x1878); - (0x1880, 0x1884); - (0x1885, 0x1886); - (0x1887, 0x18a8); - (0x18aa, 0x18aa); - (0x18b0, 0x18f5); - (0x1900, 0x191e); - (0x1950, 0x196d); - (0x1970, 0x1974); - (0x1980, 0x19ab); - (0x19b0, 0x19c9); - (0x1a00, 0x1a16); - (0x1a20, 0x1a54); - (0x1aa7, 0x1aa7); - (0x1b05, 0x1b33); - (0x1b45, 0x1b4c); - (0x1b83, 0x1ba0); - (0x1bae, 0x1baf); - (0x1bba, 0x1be5); - (0x1c00, 0x1c23); - (0x1c4d, 0x1c4f); - (0x1c5a, 0x1c77); - (0x1c78, 0x1c7d); - (0x1c80, 0x1c88); - (0x1c90, 0x1cba); - (0x1cbd, 0x1cbf); - (0x1ce9, 0x1cec); - (0x1cee, 0x1cf3); - (0x1cf5, 0x1cf6); - (0x1cfa, 0x1cfa); - (0x1d00, 0x1d2b); - (0x1d2c, 0x1d6a); - (0x1d6b, 0x1d77); - (0x1d78, 0x1d78); - (0x1d79, 0x1d9a); - (0x1d9b, 0x1dbf); - (0x1e00, 0x1f15); - (0x1f18, 0x1f1d); - (0x1f20, 0x1f45); - (0x1f48, 0x1f4d); - (0x1f50, 0x1f57); - (0x1f59, 0x1f59); - (0x1f5b, 0x1f5b); - (0x1f5d, 0x1f5d); - (0x1f5f, 0x1f7d); - (0x1f80, 0x1fb4); - (0x1fb6, 0x1fbc); - (0x1fbe, 0x1fbe); - (0x1fc2, 0x1fc4); - (0x1fc6, 0x1fcc); - (0x1fd0, 0x1fd3); - (0x1fd6, 0x1fdb); - (0x1fe0, 0x1fec); - (0x1ff2, 0x1ff4); - (0x1ff6, 0x1ffc); - (0x2071, 0x2071); - (0x207f, 0x207f); - (0x2090, 0x209c); - (0x2102, 0x2102); - (0x2107, 0x2107); - (0x210a, 0x2113); - (0x2115, 0x2115); - (0x2118, 0x2118); - (0x2119, 0x211d); - (0x2124, 0x2124); - (0x2126, 0x2126); - (0x2128, 0x2128); - (0x212a, 0x212d); - (0x212e, 0x212e); - (0x212f, 0x2134); - (0x2135, 0x2138); - (0x2139, 0x2139); - (0x213c, 0x213f); - (0x2145, 0x2149); - (0x214e, 0x214e); - (0x2160, 0x2182); - (0x2183, 0x2184); - (0x2185, 0x2188); - (0x2c00, 0x2c7b); - (0x2c7c, 0x2c7d); - (0x2c7e, 0x2ce4); - (0x2ceb, 0x2cee); - (0x2cf2, 0x2cf3); - (0x2d00, 0x2d25); - (0x2d27, 0x2d27); - (0x2d2d, 0x2d2d); - (0x2d30, 0x2d67); - (0x2d6f, 0x2d6f); - (0x2d80, 0x2d96); - (0x2da0, 0x2da6); - (0x2da8, 0x2dae); - (0x2db0, 0x2db6); - (0x2db8, 0x2dbe); - (0x2dc0, 0x2dc6); - (0x2dc8, 0x2dce); - (0x2dd0, 0x2dd6); - (0x2dd8, 0x2dde); - (0x3005, 0x3005); - (0x3006, 0x3006); - (0x3007, 0x3007); - (0x3021, 0x3029); - (0x3031, 0x3035); - (0x3038, 0x303a); - (0x303b, 0x303b); - (0x303c, 0x303c); - (0x3041, 0x3096); - (0x309b, 0x309c); - (0x309d, 0x309e); - (0x309f, 0x309f); - (0x30a1, 0x30fa); - (0x30fc, 0x30fe); - (0x30ff, 0x30ff); - (0x3105, 0x312f); - (0x3131, 0x318e); - (0x31a0, 0x31bf); - (0x31f0, 0x31ff); - (0x3400, 0x4dbf); - (0x4e00, 0xa014); - (0xa015, 0xa015); - (0xa016, 0xa48c); - (0xa4d0, 0xa4f7); - (0xa4f8, 0xa4fd); - (0xa500, 0xa60b); - (0xa60c, 0xa60c); - (0xa610, 0xa61f); - (0xa62a, 0xa62b); - (0xa640, 0xa66d); - (0xa66e, 0xa66e); - (0xa67f, 0xa67f); - (0xa680, 0xa69b); - (0xa69c, 0xa69d); - (0xa6a0, 0xa6e5); - (0xa6e6, 0xa6ef); - (0xa717, 0xa71f); - (0xa722, 0xa76f); - (0xa770, 0xa770); - (0xa771, 0xa787); - (0xa788, 0xa788); - (0xa78b, 0xa78e); - (0xa78f, 0xa78f); - (0xa790, 0xa7ca); - (0xa7d0, 0xa7d1); - (0xa7d3, 0xa7d3); - (0xa7d5, 0xa7d9); - (0xa7f2, 0xa7f4); - (0xa7f5, 0xa7f6); - (0xa7f7, 0xa7f7); - (0xa7f8, 0xa7f9); - (0xa7fa, 0xa7fa); - (0xa7fb, 0xa801); - (0xa803, 0xa805); - (0xa807, 0xa80a); - (0xa80c, 0xa822); - (0xa840, 0xa873); - (0xa882, 0xa8b3); - (0xa8f2, 0xa8f7); - (0xa8fb, 0xa8fb); - (0xa8fd, 0xa8fe); - (0xa90a, 0xa925); - (0xa930, 0xa946); - (0xa960, 0xa97c); - (0xa984, 0xa9b2); - (0xa9cf, 0xa9cf); - (0xa9e0, 0xa9e4); - (0xa9e6, 0xa9e6); - (0xa9e7, 0xa9ef); - (0xa9fa, 0xa9fe); - (0xaa00, 0xaa28); - (0xaa40, 0xaa42); - (0xaa44, 0xaa4b); - (0xaa60, 0xaa6f); - (0xaa70, 0xaa70); - (0xaa71, 0xaa76); - (0xaa7a, 0xaa7a); - (0xaa7e, 0xaaaf); - (0xaab1, 0xaab1); - (0xaab5, 0xaab6); - (0xaab9, 0xaabd); - (0xaac0, 0xaac0); - (0xaac2, 0xaac2); - (0xaadb, 0xaadc); - (0xaadd, 0xaadd); - (0xaae0, 0xaaea); - (0xaaf2, 0xaaf2); - (0xaaf3, 0xaaf4); - (0xab01, 0xab06); - (0xab09, 0xab0e); - (0xab11, 0xab16); - (0xab20, 0xab26); - (0xab28, 0xab2e); - (0xab30, 0xab5a); - (0xab5c, 0xab5f); - (0xab60, 0xab68); - (0xab69, 0xab69); - (0xab70, 0xabbf); - (0xabc0, 0xabe2); - (0xac00, 0xd7a3); - (0xd7b0, 0xd7c6); - (0xd7cb, 0xd7fb); - (0xf900, 0xfa6d); - (0xfa70, 0xfad9); - (0xfb00, 0xfb06); - (0xfb13, 0xfb17); - (0xfb1d, 0xfb1d); - (0xfb1f, 0xfb28); - (0xfb2a, 0xfb36); - (0xfb38, 0xfb3c); - (0xfb3e, 0xfb3e); - (0xfb40, 0xfb41); - (0xfb43, 0xfb44); - (0xfb46, 0xfbb1); - (0xfbd3, 0xfd3d); - (0xfd50, 0xfd8f); - (0xfd92, 0xfdc7); - (0xfdf0, 0xfdfb); - (0xfe70, 0xfe74); - (0xfe76, 0xfefc); - (0xff21, 0xff3a); - (0xff41, 0xff5a); - (0xff66, 0xff6f); - (0xff70, 0xff70); - (0xff71, 0xff9d); - (0xff9e, 0xff9f); - (0xffa0, 0xffbe); - (0xffc2, 0xffc7); - (0xffca, 0xffcf); - (0xffd2, 0xffd7); - (0xffda, 0xffdc); - (0x10000, 0x1000b); - (0x1000d, 0x10026); - (0x10028, 0x1003a); - (0x1003c, 0x1003d); - (0x1003f, 0x1004d); - (0x10050, 0x1005d); - (0x10080, 0x100fa); - (0x10140, 0x10174); - (0x10280, 0x1029c); - (0x102a0, 0x102d0); - (0x10300, 0x1031f); - (0x1032d, 0x10340); - (0x10341, 0x10341); - (0x10342, 0x10349); - (0x1034a, 0x1034a); - (0x10350, 0x10375); - (0x10380, 0x1039d); - (0x103a0, 0x103c3); - (0x103c8, 0x103cf); - (0x103d1, 0x103d5); - (0x10400, 0x1044f); - (0x10450, 0x1049d); - (0x104b0, 0x104d3); - (0x104d8, 0x104fb); - (0x10500, 0x10527); - (0x10530, 0x10563); - (0x10570, 0x1057a); - (0x1057c, 0x1058a); - (0x1058c, 0x10592); - (0x10594, 0x10595); - (0x10597, 0x105a1); - (0x105a3, 0x105b1); - (0x105b3, 0x105b9); - (0x105bb, 0x105bc); - (0x10600, 0x10736); - (0x10740, 0x10755); - (0x10760, 0x10767); - (0x10780, 0x10785); - (0x10787, 0x107b0); - (0x107b2, 0x107ba); - (0x10800, 0x10805); - (0x10808, 0x10808); - (0x1080a, 0x10835); - (0x10837, 0x10838); - (0x1083c, 0x1083c); - (0x1083f, 0x10855); - (0x10860, 0x10876); - (0x10880, 0x1089e); - (0x108e0, 0x108f2); - (0x108f4, 0x108f5); - (0x10900, 0x10915); - (0x10920, 0x10939); - (0x10980, 0x109b7); - (0x109be, 0x109bf); - (0x10a00, 0x10a00); - (0x10a10, 0x10a13); - (0x10a15, 0x10a17); - (0x10a19, 0x10a35); - (0x10a60, 0x10a7c); - (0x10a80, 0x10a9c); - (0x10ac0, 0x10ac7); - (0x10ac9, 0x10ae4); - (0x10b00, 0x10b35); - (0x10b40, 0x10b55); - (0x10b60, 0x10b72); - (0x10b80, 0x10b91); - (0x10c00, 0x10c48); - (0x10c80, 0x10cb2); - (0x10cc0, 0x10cf2); - (0x10d00, 0x10d23); - (0x10e80, 0x10ea9); - (0x10eb0, 0x10eb1); - (0x10f00, 0x10f1c); - (0x10f27, 0x10f27); - (0x10f30, 0x10f45); - (0x10f70, 0x10f81); - (0x10fb0, 0x10fc4); - (0x10fe0, 0x10ff6); - (0x11003, 0x11037); - (0x11071, 0x11072); - (0x11075, 0x11075); - (0x11083, 0x110af); - (0x110d0, 0x110e8); - (0x11103, 0x11126); - (0x11144, 0x11144); - (0x11147, 0x11147); - (0x11150, 0x11172); - (0x11176, 0x11176); - (0x11183, 0x111b2); - (0x111c1, 0x111c4); - (0x111da, 0x111da); - (0x111dc, 0x111dc); - (0x11200, 0x11211); - (0x11213, 0x1122b); - (0x11280, 0x11286); - (0x11288, 0x11288); - (0x1128a, 0x1128d); - (0x1128f, 0x1129d); - (0x1129f, 0x112a8); - (0x112b0, 0x112de); - (0x11305, 0x1130c); - (0x1130f, 0x11310); - (0x11313, 0x11328); - (0x1132a, 0x11330); - (0x11332, 0x11333); - (0x11335, 0x11339); - (0x1133d, 0x1133d); - (0x11350, 0x11350); - (0x1135d, 0x11361); - (0x11400, 0x11434); - (0x11447, 0x1144a); - (0x1145f, 0x11461); - (0x11480, 0x114af); - (0x114c4, 0x114c5); - (0x114c7, 0x114c7); - (0x11580, 0x115ae); - (0x115d8, 0x115db); - (0x11600, 0x1162f); - (0x11644, 0x11644); - (0x11680, 0x116aa); - (0x116b8, 0x116b8); - (0x11700, 0x1171a); - (0x11740, 0x11746); - (0x11800, 0x1182b); - (0x118a0, 0x118df); - (0x118ff, 0x11906); - (0x11909, 0x11909); - (0x1190c, 0x11913); - (0x11915, 0x11916); - (0x11918, 0x1192f); - (0x1193f, 0x1193f); - (0x11941, 0x11941); - (0x119a0, 0x119a7); - (0x119aa, 0x119d0); - (0x119e1, 0x119e1); - (0x119e3, 0x119e3); - (0x11a00, 0x11a00); - (0x11a0b, 0x11a32); - (0x11a3a, 0x11a3a); - (0x11a50, 0x11a50); - (0x11a5c, 0x11a89); - (0x11a9d, 0x11a9d); - (0x11ab0, 0x11af8); - (0x11c00, 0x11c08); - (0x11c0a, 0x11c2e); - (0x11c40, 0x11c40); - (0x11c72, 0x11c8f); - (0x11d00, 0x11d06); - (0x11d08, 0x11d09); - (0x11d0b, 0x11d30); - (0x11d46, 0x11d46); - (0x11d60, 0x11d65); - (0x11d67, 0x11d68); - (0x11d6a, 0x11d89); - (0x11d98, 0x11d98); - (0x11ee0, 0x11ef2); - (0x11fb0, 0x11fb0); - (0x12000, 0x12399); - (0x12400, 0x1246e); - (0x12480, 0x12543); - (0x12f90, 0x12ff0); - (0x13000, 0x1342e); - (0x14400, 0x14646); - (0x16800, 0x16a38); - (0x16a40, 0x16a5e); - (0x16a70, 0x16abe); - (0x16ad0, 0x16aed); - (0x16b00, 0x16b2f); - (0x16b40, 0x16b43); - (0x16b63, 0x16b77); - (0x16b7d, 0x16b8f); - (0x16e40, 0x16e7f); - (0x16f00, 0x16f4a); - (0x16f50, 0x16f50); - (0x16f93, 0x16f9f); - (0x16fe0, 0x16fe1); - (0x16fe3, 0x16fe3); - (0x17000, 0x187f7); - (0x18800, 0x18cd5); - (0x18d00, 0x18d08); - (0x1aff0, 0x1aff3); - (0x1aff5, 0x1affb); - (0x1affd, 0x1affe); - (0x1b000, 0x1b122); - (0x1b150, 0x1b152); - (0x1b164, 0x1b167); - (0x1b170, 0x1b2fb); - (0x1bc00, 0x1bc6a); - (0x1bc70, 0x1bc7c); - (0x1bc80, 0x1bc88); - (0x1bc90, 0x1bc99); - (0x1d400, 0x1d454); - (0x1d456, 0x1d49c); - (0x1d49e, 0x1d49f); - (0x1d4a2, 0x1d4a2); - (0x1d4a5, 0x1d4a6); - (0x1d4a9, 0x1d4ac); - (0x1d4ae, 0x1d4b9); - (0x1d4bb, 0x1d4bb); - (0x1d4bd, 0x1d4c3); - (0x1d4c5, 0x1d505); - (0x1d507, 0x1d50a); - (0x1d50d, 0x1d514); - (0x1d516, 0x1d51c); - (0x1d51e, 0x1d539); - (0x1d53b, 0x1d53e); - (0x1d540, 0x1d544); - (0x1d546, 0x1d546); - (0x1d54a, 0x1d550); - (0x1d552, 0x1d6a5); - (0x1d6a8, 0x1d6c0); - (0x1d6c2, 0x1d6da); - (0x1d6dc, 0x1d6fa); - (0x1d6fc, 0x1d714); - (0x1d716, 0x1d734); - (0x1d736, 0x1d74e); - (0x1d750, 0x1d76e); - (0x1d770, 0x1d788); - (0x1d78a, 0x1d7a8); - (0x1d7aa, 0x1d7c2); - (0x1d7c4, 0x1d7cb); - (0x1df00, 0x1df09); - (0x1df0a, 0x1df0a); - (0x1df0b, 0x1df1e); - (0x1e100, 0x1e12c); - (0x1e137, 0x1e13d); - (0x1e14e, 0x1e14e); - (0x1e290, 0x1e2ad); - (0x1e2c0, 0x1e2eb); - (0x1e7e0, 0x1e7e6); - (0x1e7e8, 0x1e7eb); - (0x1e7ed, 0x1e7ee); - (0x1e7f0, 0x1e7fe); - (0x1e800, 0x1e8c4); - (0x1e900, 0x1e943); - (0x1e94b, 0x1e94b); - (0x1ee00, 0x1ee03); - (0x1ee05, 0x1ee1f); - (0x1ee21, 0x1ee22); - (0x1ee24, 0x1ee24); - (0x1ee27, 0x1ee27); - (0x1ee29, 0x1ee32); - (0x1ee34, 0x1ee37); - (0x1ee39, 0x1ee39); - (0x1ee3b, 0x1ee3b); - (0x1ee42, 0x1ee42); - (0x1ee47, 0x1ee47); - (0x1ee49, 0x1ee49); - (0x1ee4b, 0x1ee4b); - (0x1ee4d, 0x1ee4f); - (0x1ee51, 0x1ee52); - (0x1ee54, 0x1ee54); - (0x1ee57, 0x1ee57); - (0x1ee59, 0x1ee59); - (0x1ee5b, 0x1ee5b); - (0x1ee5d, 0x1ee5d); - (0x1ee5f, 0x1ee5f); - (0x1ee61, 0x1ee62); - (0x1ee64, 0x1ee64); - (0x1ee67, 0x1ee6a); - (0x1ee6c, 0x1ee72); - (0x1ee74, 0x1ee77); - (0x1ee79, 0x1ee7c); - (0x1ee7e, 0x1ee7e); - (0x1ee80, 0x1ee89); - (0x1ee8b, 0x1ee9b); - (0x1eea1, 0x1eea3); - (0x1eea5, 0x1eea9); - (0x1eeab, 0x1eebb); - (0x20000, 0x2a6df); - (0x2a700, 0x2b738); - (0x2b740, 0x2b81d); - (0x2b820, 0x2cea1); - (0x2ceb0, 0x2ebe0); - (0x30000, 0x3134a); - (0x2f800, 0x2fa1d); - ] + [0x41, 0x5a; 0x61, 0x7a; 0xaa, 0xaa; 0xb5, 0xb5; 0xba, 0xba; + 0xc0, 0xd6; 0xd8, 0xf6; 0xf8, 0x1ba; 0x1bb, 0x1bb; 0x1bc, 0x1bf; + 0x1c0, 0x1c3; 0x1c4, 0x293; 0x294, 0x294; 0x295, 0x2af; 0x2b0, 0x2c1; + 0x2c6, 0x2d1; 0x2e0, 0x2e4; 0x2ec, 0x2ec; 0x2ee, 0x2ee; 0x370, 0x373; + 0x374, 0x374; 0x376, 0x377; 0x37a, 0x37a; 0x37b, 0x37d; 0x37f, 0x37f; + 0x386, 0x386; 0x388, 0x38a; 0x38c, 0x38c; 0x38e, 0x3a1; 0x3a3, 0x3f5; + 0x3f7, 0x481; 0x48a, 0x52f; 0x531, 0x556; 0x559, 0x559; 0x560, 0x588; + 0x5d0, 0x5ea; 0x5ef, 0x5f2; 0x620, 0x63f; 0x640, 0x640; 0x641, 0x64a; + 0x66e, 0x66f; 0x671, 0x6d3; 0x6d5, 0x6d5; 0x6e5, 0x6e6; 0x6ee, 0x6ef; + 0x6fa, 0x6fc; 0x6ff, 0x6ff; 0x710, 0x710; 0x712, 0x72f; 0x74d, 0x7a5; + 0x7b1, 0x7b1; 0x7ca, 0x7ea; 0x7f4, 0x7f5; 0x7fa, 0x7fa; 0x800, 0x815; + 0x81a, 0x81a; 0x824, 0x824; 0x828, 0x828; 0x840, 0x858; 0x860, 0x86a; + 0x870, 0x887; 0x889, 0x88e; 0x8a0, 0x8c8; 0x8c9, 0x8c9; 0x904, 0x939; + 0x93d, 0x93d; 0x950, 0x950; 0x958, 0x961; 0x971, 0x971; 0x972, 0x980; + 0x985, 0x98c; 0x98f, 0x990; 0x993, 0x9a8; 0x9aa, 0x9b0; 0x9b2, 0x9b2; + 0x9b6, 0x9b9; 0x9bd, 0x9bd; 0x9ce, 0x9ce; 0x9dc, 0x9dd; 0x9df, 0x9e1; + 0x9f0, 0x9f1; 0x9fc, 0x9fc; 0xa05, 0xa0a; 0xa0f, 0xa10; 0xa13, 0xa28; + 0xa2a, 0xa30; 0xa32, 0xa33; 0xa35, 0xa36; 0xa38, 0xa39; 0xa59, 0xa5c; + 0xa5e, 0xa5e; 0xa72, 0xa74; 0xa85, 0xa8d; 0xa8f, 0xa91; 0xa93, 0xaa8; + 0xaaa, 0xab0; 0xab2, 0xab3; 0xab5, 0xab9; 0xabd, 0xabd; 0xad0, 0xad0; + 0xae0, 0xae1; 0xaf9, 0xaf9; 0xb05, 0xb0c; 0xb0f, 0xb10; 0xb13, 0xb28; + 0xb2a, 0xb30; 0xb32, 0xb33; 0xb35, 0xb39; 0xb3d, 0xb3d; 0xb5c, 0xb5d; + 0xb5f, 0xb61; 0xb71, 0xb71; 0xb83, 0xb83; 0xb85, 0xb8a; 0xb8e, 0xb90; + 0xb92, 0xb95; 0xb99, 0xb9a; 0xb9c, 0xb9c; 0xb9e, 0xb9f; 0xba3, 0xba4; + 0xba8, 0xbaa; 0xbae, 0xbb9; 0xbd0, 0xbd0; 0xc05, 0xc0c; 0xc0e, 0xc10; + 0xc12, 0xc28; 0xc2a, 0xc39; 0xc3d, 0xc3d; 0xc58, 0xc5a; 0xc5d, 0xc5d; + 0xc60, 0xc61; 0xc80, 0xc80; 0xc85, 0xc8c; 0xc8e, 0xc90; 0xc92, 0xca8; + 0xcaa, 0xcb3; 0xcb5, 0xcb9; 0xcbd, 0xcbd; 0xcdd, 0xcde; 0xce0, 0xce1; + 0xcf1, 0xcf2; 0xd04, 0xd0c; 0xd0e, 0xd10; 0xd12, 0xd3a; 0xd3d, 0xd3d; + 0xd4e, 0xd4e; 0xd54, 0xd56; 0xd5f, 0xd61; 0xd7a, 0xd7f; 0xd85, 0xd96; + 0xd9a, 0xdb1; 0xdb3, 0xdbb; 0xdbd, 0xdbd; 0xdc0, 0xdc6; 0xe01, 0xe30; + 0xe32, 0xe33; 0xe40, 0xe45; 0xe46, 0xe46; 0xe81, 0xe82; 0xe84, 0xe84; + 0xe86, 0xe8a; 0xe8c, 0xea3; 0xea5, 0xea5; 0xea7, 0xeb0; 0xeb2, 0xeb3; + 0xebd, 0xebd; 0xec0, 0xec4; 0xec6, 0xec6; 0xedc, 0xedf; 0xf00, 0xf00; + 0xf40, 0xf47; 0xf49, 0xf6c; 0xf88, 0xf8c; 0x1000, 0x102a; 0x103f, 0x103f; + 0x1050, 0x1055; 0x105a, 0x105d; 0x1061, 0x1061; 0x1065, 0x1066; 0x106e, 0x1070; + 0x1075, 0x1081; 0x108e, 0x108e; 0x10a0, 0x10c5; 0x10c7, 0x10c7; 0x10cd, 0x10cd; + 0x10d0, 0x10fa; 0x10fc, 0x10fc; 0x10fd, 0x10ff; 0x1100, 0x1248; 0x124a, 0x124d; + 0x1250, 0x1256; 0x1258, 0x1258; 0x125a, 0x125d; 0x1260, 0x1288; 0x128a, 0x128d; + 0x1290, 0x12b0; 0x12b2, 0x12b5; 0x12b8, 0x12be; 0x12c0, 0x12c0; 0x12c2, 0x12c5; + 0x12c8, 0x12d6; 0x12d8, 0x1310; 0x1312, 0x1315; 0x1318, 0x135a; 0x1380, 0x138f; + 0x13a0, 0x13f5; 0x13f8, 0x13fd; 0x1401, 0x166c; 0x166f, 0x167f; 0x1681, 0x169a; + 0x16a0, 0x16ea; 0x16ee, 0x16f0; 0x16f1, 0x16f8; 0x1700, 0x1711; 0x171f, 0x1731; + 0x1740, 0x1751; 0x1760, 0x176c; 0x176e, 0x1770; 0x1780, 0x17b3; 0x17d7, 0x17d7; + 0x17dc, 0x17dc; 0x1820, 0x1842; 0x1843, 0x1843; 0x1844, 0x1878; 0x1880, 0x1884; + 0x1885, 0x1886; 0x1887, 0x18a8; 0x18aa, 0x18aa; 0x18b0, 0x18f5; 0x1900, 0x191e; + 0x1950, 0x196d; 0x1970, 0x1974; 0x1980, 0x19ab; 0x19b0, 0x19c9; 0x1a00, 0x1a16; + 0x1a20, 0x1a54; 0x1aa7, 0x1aa7; 0x1b05, 0x1b33; 0x1b45, 0x1b4c; 0x1b83, 0x1ba0; + 0x1bae, 0x1baf; 0x1bba, 0x1be5; 0x1c00, 0x1c23; 0x1c4d, 0x1c4f; 0x1c5a, 0x1c77; + 0x1c78, 0x1c7d; 0x1c80, 0x1c88; 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 0x1ce9, 0x1cec; + 0x1cee, 0x1cf3; 0x1cf5, 0x1cf6; 0x1cfa, 0x1cfa; 0x1d00, 0x1d2b; 0x1d2c, 0x1d6a; + 0x1d6b, 0x1d77; 0x1d78, 0x1d78; 0x1d79, 0x1d9a; 0x1d9b, 0x1dbf; 0x1e00, 0x1f15; + 0x1f18, 0x1f1d; 0x1f20, 0x1f45; 0x1f48, 0x1f4d; 0x1f50, 0x1f57; 0x1f59, 0x1f59; + 0x1f5b, 0x1f5b; 0x1f5d, 0x1f5d; 0x1f5f, 0x1f7d; 0x1f80, 0x1fb4; 0x1fb6, 0x1fbc; + 0x1fbe, 0x1fbe; 0x1fc2, 0x1fc4; 0x1fc6, 0x1fcc; 0x1fd0, 0x1fd3; 0x1fd6, 0x1fdb; + 0x1fe0, 0x1fec; 0x1ff2, 0x1ff4; 0x1ff6, 0x1ffc; 0x2071, 0x2071; 0x207f, 0x207f; + 0x2090, 0x209c; 0x2102, 0x2102; 0x2107, 0x2107; 0x210a, 0x2113; 0x2115, 0x2115; + 0x2118, 0x2118; 0x2119, 0x211d; 0x2124, 0x2124; 0x2126, 0x2126; 0x2128, 0x2128; + 0x212a, 0x212d; 0x212e, 0x212e; 0x212f, 0x2134; 0x2135, 0x2138; 0x2139, 0x2139; + 0x213c, 0x213f; 0x2145, 0x2149; 0x214e, 0x214e; 0x2160, 0x2182; 0x2183, 0x2184; + 0x2185, 0x2188; 0x2c00, 0x2c7b; 0x2c7c, 0x2c7d; 0x2c7e, 0x2ce4; 0x2ceb, 0x2cee; + 0x2cf2, 0x2cf3; 0x2d00, 0x2d25; 0x2d27, 0x2d27; 0x2d2d, 0x2d2d; 0x2d30, 0x2d67; + 0x2d6f, 0x2d6f; 0x2d80, 0x2d96; 0x2da0, 0x2da6; 0x2da8, 0x2dae; 0x2db0, 0x2db6; + 0x2db8, 0x2dbe; 0x2dc0, 0x2dc6; 0x2dc8, 0x2dce; 0x2dd0, 0x2dd6; 0x2dd8, 0x2dde; + 0x3005, 0x3005; 0x3006, 0x3006; 0x3007, 0x3007; 0x3021, 0x3029; 0x3031, 0x3035; + 0x3038, 0x303a; 0x303b, 0x303b; 0x303c, 0x303c; 0x3041, 0x3096; 0x309b, 0x309c; + 0x309d, 0x309e; 0x309f, 0x309f; 0x30a1, 0x30fa; 0x30fc, 0x30fe; 0x30ff, 0x30ff; + 0x3105, 0x312f; 0x3131, 0x318e; 0x31a0, 0x31bf; 0x31f0, 0x31ff; 0x3400, 0x4dbf; + 0x4e00, 0xa014; 0xa015, 0xa015; 0xa016, 0xa48c; 0xa4d0, 0xa4f7; 0xa4f8, 0xa4fd; + 0xa500, 0xa60b; 0xa60c, 0xa60c; 0xa610, 0xa61f; 0xa62a, 0xa62b; 0xa640, 0xa66d; + 0xa66e, 0xa66e; 0xa67f, 0xa67f; 0xa680, 0xa69b; 0xa69c, 0xa69d; 0xa6a0, 0xa6e5; + 0xa6e6, 0xa6ef; 0xa717, 0xa71f; 0xa722, 0xa76f; 0xa770, 0xa770; 0xa771, 0xa787; + 0xa788, 0xa788; 0xa78b, 0xa78e; 0xa78f, 0xa78f; 0xa790, 0xa7ca; 0xa7d0, 0xa7d1; + 0xa7d3, 0xa7d3; 0xa7d5, 0xa7d9; 0xa7f2, 0xa7f4; 0xa7f5, 0xa7f6; 0xa7f7, 0xa7f7; + 0xa7f8, 0xa7f9; 0xa7fa, 0xa7fa; 0xa7fb, 0xa801; 0xa803, 0xa805; 0xa807, 0xa80a; + 0xa80c, 0xa822; 0xa840, 0xa873; 0xa882, 0xa8b3; 0xa8f2, 0xa8f7; 0xa8fb, 0xa8fb; + 0xa8fd, 0xa8fe; 0xa90a, 0xa925; 0xa930, 0xa946; 0xa960, 0xa97c; 0xa984, 0xa9b2; + 0xa9cf, 0xa9cf; 0xa9e0, 0xa9e4; 0xa9e6, 0xa9e6; 0xa9e7, 0xa9ef; 0xa9fa, 0xa9fe; + 0xaa00, 0xaa28; 0xaa40, 0xaa42; 0xaa44, 0xaa4b; 0xaa60, 0xaa6f; 0xaa70, 0xaa70; + 0xaa71, 0xaa76; 0xaa7a, 0xaa7a; 0xaa7e, 0xaaaf; 0xaab1, 0xaab1; 0xaab5, 0xaab6; + 0xaab9, 0xaabd; 0xaac0, 0xaac0; 0xaac2, 0xaac2; 0xaadb, 0xaadc; 0xaadd, 0xaadd; + 0xaae0, 0xaaea; 0xaaf2, 0xaaf2; 0xaaf3, 0xaaf4; 0xab01, 0xab06; 0xab09, 0xab0e; + 0xab11, 0xab16; 0xab20, 0xab26; 0xab28, 0xab2e; 0xab30, 0xab5a; 0xab5c, 0xab5f; + 0xab60, 0xab68; 0xab69, 0xab69; 0xab70, 0xabbf; 0xabc0, 0xabe2; 0xac00, 0xd7a3; + 0xd7b0, 0xd7c6; 0xd7cb, 0xd7fb; 0xf900, 0xfa6d; 0xfa70, 0xfad9; 0xfb00, 0xfb06; + 0xfb13, 0xfb17; 0xfb1d, 0xfb1d; 0xfb1f, 0xfb28; 0xfb2a, 0xfb36; 0xfb38, 0xfb3c; + 0xfb3e, 0xfb3e; 0xfb40, 0xfb41; 0xfb43, 0xfb44; 0xfb46, 0xfbb1; 0xfbd3, 0xfd3d; + 0xfd50, 0xfd8f; 0xfd92, 0xfdc7; 0xfdf0, 0xfdfb; 0xfe70, 0xfe74; 0xfe76, 0xfefc; + 0xff21, 0xff3a; 0xff41, 0xff5a; 0xff66, 0xff6f; 0xff70, 0xff70; 0xff71, 0xff9d; + 0xff9e, 0xff9f; 0xffa0, 0xffbe; 0xffc2, 0xffc7; 0xffca, 0xffcf; 0xffd2, 0xffd7; + 0xffda, 0xffdc; 0x10000, 0x1000b; 0x1000d, 0x10026; 0x10028, 0x1003a; 0x1003c, 0x1003d; + 0x1003f, 0x1004d; 0x10050, 0x1005d; 0x10080, 0x100fa; 0x10140, 0x10174; 0x10280, 0x1029c; + 0x102a0, 0x102d0; 0x10300, 0x1031f; 0x1032d, 0x10340; 0x10341, 0x10341; 0x10342, 0x10349; + 0x1034a, 0x1034a; 0x10350, 0x10375; 0x10380, 0x1039d; 0x103a0, 0x103c3; 0x103c8, 0x103cf; + 0x103d1, 0x103d5; 0x10400, 0x1044f; 0x10450, 0x1049d; 0x104b0, 0x104d3; 0x104d8, 0x104fb; + 0x10500, 0x10527; 0x10530, 0x10563; 0x10570, 0x1057a; 0x1057c, 0x1058a; 0x1058c, 0x10592; + 0x10594, 0x10595; 0x10597, 0x105a1; 0x105a3, 0x105b1; 0x105b3, 0x105b9; 0x105bb, 0x105bc; + 0x10600, 0x10736; 0x10740, 0x10755; 0x10760, 0x10767; 0x10780, 0x10785; 0x10787, 0x107b0; + 0x107b2, 0x107ba; 0x10800, 0x10805; 0x10808, 0x10808; 0x1080a, 0x10835; 0x10837, 0x10838; + 0x1083c, 0x1083c; 0x1083f, 0x10855; 0x10860, 0x10876; 0x10880, 0x1089e; 0x108e0, 0x108f2; + 0x108f4, 0x108f5; 0x10900, 0x10915; 0x10920, 0x10939; 0x10980, 0x109b7; 0x109be, 0x109bf; + 0x10a00, 0x10a00; 0x10a10, 0x10a13; 0x10a15, 0x10a17; 0x10a19, 0x10a35; 0x10a60, 0x10a7c; + 0x10a80, 0x10a9c; 0x10ac0, 0x10ac7; 0x10ac9, 0x10ae4; 0x10b00, 0x10b35; 0x10b40, 0x10b55; + 0x10b60, 0x10b72; 0x10b80, 0x10b91; 0x10c00, 0x10c48; 0x10c80, 0x10cb2; 0x10cc0, 0x10cf2; + 0x10d00, 0x10d23; 0x10e80, 0x10ea9; 0x10eb0, 0x10eb1; 0x10f00, 0x10f1c; 0x10f27, 0x10f27; + 0x10f30, 0x10f45; 0x10f70, 0x10f81; 0x10fb0, 0x10fc4; 0x10fe0, 0x10ff6; 0x11003, 0x11037; + 0x11071, 0x11072; 0x11075, 0x11075; 0x11083, 0x110af; 0x110d0, 0x110e8; 0x11103, 0x11126; + 0x11144, 0x11144; 0x11147, 0x11147; 0x11150, 0x11172; 0x11176, 0x11176; 0x11183, 0x111b2; + 0x111c1, 0x111c4; 0x111da, 0x111da; 0x111dc, 0x111dc; 0x11200, 0x11211; 0x11213, 0x1122b; + 0x11280, 0x11286; 0x11288, 0x11288; 0x1128a, 0x1128d; 0x1128f, 0x1129d; 0x1129f, 0x112a8; + 0x112b0, 0x112de; 0x11305, 0x1130c; 0x1130f, 0x11310; 0x11313, 0x11328; 0x1132a, 0x11330; + 0x11332, 0x11333; 0x11335, 0x11339; 0x1133d, 0x1133d; 0x11350, 0x11350; 0x1135d, 0x11361; + 0x11400, 0x11434; 0x11447, 0x1144a; 0x1145f, 0x11461; 0x11480, 0x114af; 0x114c4, 0x114c5; + 0x114c7, 0x114c7; 0x11580, 0x115ae; 0x115d8, 0x115db; 0x11600, 0x1162f; 0x11644, 0x11644; + 0x11680, 0x116aa; 0x116b8, 0x116b8; 0x11700, 0x1171a; 0x11740, 0x11746; 0x11800, 0x1182b; + 0x118a0, 0x118df; 0x118ff, 0x11906; 0x11909, 0x11909; 0x1190c, 0x11913; 0x11915, 0x11916; + 0x11918, 0x1192f; 0x1193f, 0x1193f; 0x11941, 0x11941; 0x119a0, 0x119a7; 0x119aa, 0x119d0; + 0x119e1, 0x119e1; 0x119e3, 0x119e3; 0x11a00, 0x11a00; 0x11a0b, 0x11a32; 0x11a3a, 0x11a3a; + 0x11a50, 0x11a50; 0x11a5c, 0x11a89; 0x11a9d, 0x11a9d; 0x11ab0, 0x11af8; 0x11c00, 0x11c08; + 0x11c0a, 0x11c2e; 0x11c40, 0x11c40; 0x11c72, 0x11c8f; 0x11d00, 0x11d06; 0x11d08, 0x11d09; + 0x11d0b, 0x11d30; 0x11d46, 0x11d46; 0x11d60, 0x11d65; 0x11d67, 0x11d68; 0x11d6a, 0x11d89; + 0x11d98, 0x11d98; 0x11ee0, 0x11ef2; 0x11fb0, 0x11fb0; 0x12000, 0x12399; 0x12400, 0x1246e; + 0x12480, 0x12543; 0x12f90, 0x12ff0; 0x13000, 0x1342e; 0x14400, 0x14646; 0x16800, 0x16a38; + 0x16a40, 0x16a5e; 0x16a70, 0x16abe; 0x16ad0, 0x16aed; 0x16b00, 0x16b2f; 0x16b40, 0x16b43; + 0x16b63, 0x16b77; 0x16b7d, 0x16b8f; 0x16e40, 0x16e7f; 0x16f00, 0x16f4a; 0x16f50, 0x16f50; + 0x16f93, 0x16f9f; 0x16fe0, 0x16fe1; 0x16fe3, 0x16fe3; 0x17000, 0x187f7; 0x18800, 0x18cd5; + 0x18d00, 0x18d08; 0x1aff0, 0x1aff3; 0x1aff5, 0x1affb; 0x1affd, 0x1affe; 0x1b000, 0x1b122; + 0x1b150, 0x1b152; 0x1b164, 0x1b167; 0x1b170, 0x1b2fb; 0x1bc00, 0x1bc6a; 0x1bc70, 0x1bc7c; + 0x1bc80, 0x1bc88; 0x1bc90, 0x1bc99; 0x1d400, 0x1d454; 0x1d456, 0x1d49c; 0x1d49e, 0x1d49f; + 0x1d4a2, 0x1d4a2; 0x1d4a5, 0x1d4a6; 0x1d4a9, 0x1d4ac; 0x1d4ae, 0x1d4b9; 0x1d4bb, 0x1d4bb; + 0x1d4bd, 0x1d4c3; 0x1d4c5, 0x1d505; 0x1d507, 0x1d50a; 0x1d50d, 0x1d514; 0x1d516, 0x1d51c; + 0x1d51e, 0x1d539; 0x1d53b, 0x1d53e; 0x1d540, 0x1d544; 0x1d546, 0x1d546; 0x1d54a, 0x1d550; + 0x1d552, 0x1d6a5; 0x1d6a8, 0x1d6c0; 0x1d6c2, 0x1d6da; 0x1d6dc, 0x1d6fa; 0x1d6fc, 0x1d714; + 0x1d716, 0x1d734; 0x1d736, 0x1d74e; 0x1d750, 0x1d76e; 0x1d770, 0x1d788; 0x1d78a, 0x1d7a8; + 0x1d7aa, 0x1d7c2; 0x1d7c4, 0x1d7cb; 0x1df00, 0x1df09; 0x1df0a, 0x1df0a; 0x1df0b, 0x1df1e; + 0x1e100, 0x1e12c; 0x1e137, 0x1e13d; 0x1e14e, 0x1e14e; 0x1e290, 0x1e2ad; 0x1e2c0, 0x1e2eb; + 0x1e7e0, 0x1e7e6; 0x1e7e8, 0x1e7eb; 0x1e7ed, 0x1e7ee; 0x1e7f0, 0x1e7fe; 0x1e800, 0x1e8c4; + 0x1e900, 0x1e943; 0x1e94b, 0x1e94b; 0x1ee00, 0x1ee03; 0x1ee05, 0x1ee1f; 0x1ee21, 0x1ee22; + 0x1ee24, 0x1ee24; 0x1ee27, 0x1ee27; 0x1ee29, 0x1ee32; 0x1ee34, 0x1ee37; 0x1ee39, 0x1ee39; + 0x1ee3b, 0x1ee3b; 0x1ee42, 0x1ee42; 0x1ee47, 0x1ee47; 0x1ee49, 0x1ee49; 0x1ee4b, 0x1ee4b; + 0x1ee4d, 0x1ee4f; 0x1ee51, 0x1ee52; 0x1ee54, 0x1ee54; 0x1ee57, 0x1ee57; 0x1ee59, 0x1ee59; + 0x1ee5b, 0x1ee5b; 0x1ee5d, 0x1ee5d; 0x1ee5f, 0x1ee5f; 0x1ee61, 0x1ee62; 0x1ee64, 0x1ee64; + 0x1ee67, 0x1ee6a; 0x1ee6c, 0x1ee72; 0x1ee74, 0x1ee77; 0x1ee79, 0x1ee7c; 0x1ee7e, 0x1ee7e; + 0x1ee80, 0x1ee89; 0x1ee8b, 0x1ee9b; 0x1eea1, 0x1eea3; 0x1eea5, 0x1eea9; 0x1eeab, 0x1eebb; + 0x20000, 0x2a6df; 0x2a700, 0x2b738; 0x2b740, 0x2b81d; 0x2b820, 0x2cea1; 0x2ceb0, 0x2ebe0; + 0x30000, 0x3134a; 0x2f800, 0x2fa1d] let lowercase = - [ - (0x61, 0x7a); - (0xaa, 0xaa); - (0xb5, 0xb5); - (0xba, 0xba); - (0xdf, 0xf6); - (0xf8, 0xff); - (0x101, 0x101); - (0x103, 0x103); - (0x105, 0x105); - (0x107, 0x107); - (0x109, 0x109); - (0x10b, 0x10b); - (0x10d, 0x10d); - (0x10f, 0x10f); - (0x111, 0x111); - (0x113, 0x113); - (0x115, 0x115); - (0x117, 0x117); - (0x119, 0x119); - (0x11b, 0x11b); - (0x11d, 0x11d); - (0x11f, 0x11f); - (0x121, 0x121); - (0x123, 0x123); - (0x125, 0x125); - (0x127, 0x127); - (0x129, 0x129); - (0x12b, 0x12b); - (0x12d, 0x12d); - (0x12f, 0x12f); - (0x131, 0x131); - (0x133, 0x133); - (0x135, 0x135); - (0x137, 0x138); - (0x13a, 0x13a); - (0x13c, 0x13c); - (0x13e, 0x13e); - (0x140, 0x140); - (0x142, 0x142); - (0x144, 0x144); - (0x146, 0x146); - (0x148, 0x149); - (0x14b, 0x14b); - (0x14d, 0x14d); - (0x14f, 0x14f); - (0x151, 0x151); - (0x153, 0x153); - (0x155, 0x155); - (0x157, 0x157); - (0x159, 0x159); - (0x15b, 0x15b); - (0x15d, 0x15d); - (0x15f, 0x15f); - (0x161, 0x161); - (0x163, 0x163); - (0x165, 0x165); - (0x167, 0x167); - (0x169, 0x169); - (0x16b, 0x16b); - (0x16d, 0x16d); - (0x16f, 0x16f); - (0x171, 0x171); - (0x173, 0x173); - (0x175, 0x175); - (0x177, 0x177); - (0x17a, 0x17a); - (0x17c, 0x17c); - (0x17e, 0x180); - (0x183, 0x183); - (0x185, 0x185); - (0x188, 0x188); - (0x18c, 0x18d); - (0x192, 0x192); - (0x195, 0x195); - (0x199, 0x19b); - (0x19e, 0x19e); - (0x1a1, 0x1a1); - (0x1a3, 0x1a3); - (0x1a5, 0x1a5); - (0x1a8, 0x1a8); - (0x1aa, 0x1ab); - (0x1ad, 0x1ad); - (0x1b0, 0x1b0); - (0x1b4, 0x1b4); - (0x1b6, 0x1b6); - (0x1b9, 0x1ba); - (0x1bd, 0x1bf); - (0x1c6, 0x1c6); - (0x1c9, 0x1c9); - (0x1cc, 0x1cc); - (0x1ce, 0x1ce); - (0x1d0, 0x1d0); - (0x1d2, 0x1d2); - (0x1d4, 0x1d4); - (0x1d6, 0x1d6); - (0x1d8, 0x1d8); - (0x1da, 0x1da); - (0x1dc, 0x1dd); - (0x1df, 0x1df); - (0x1e1, 0x1e1); - (0x1e3, 0x1e3); - (0x1e5, 0x1e5); - (0x1e7, 0x1e7); - (0x1e9, 0x1e9); - (0x1eb, 0x1eb); - (0x1ed, 0x1ed); - (0x1ef, 0x1f0); - (0x1f3, 0x1f3); - (0x1f5, 0x1f5); - (0x1f9, 0x1f9); - (0x1fb, 0x1fb); - (0x1fd, 0x1fd); - (0x1ff, 0x1ff); - (0x201, 0x201); - (0x203, 0x203); - (0x205, 0x205); - (0x207, 0x207); - (0x209, 0x209); - (0x20b, 0x20b); - (0x20d, 0x20d); - (0x20f, 0x20f); - (0x211, 0x211); - (0x213, 0x213); - (0x215, 0x215); - (0x217, 0x217); - (0x219, 0x219); - (0x21b, 0x21b); - (0x21d, 0x21d); - (0x21f, 0x21f); - (0x221, 0x221); - (0x223, 0x223); - (0x225, 0x225); - (0x227, 0x227); - (0x229, 0x229); - (0x22b, 0x22b); - (0x22d, 0x22d); - (0x22f, 0x22f); - (0x231, 0x231); - (0x233, 0x239); - (0x23c, 0x23c); - (0x23f, 0x240); - (0x242, 0x242); - (0x247, 0x247); - (0x249, 0x249); - (0x24b, 0x24b); - (0x24d, 0x24d); - (0x24f, 0x293); - (0x295, 0x2af); - (0x2b0, 0x2b8); - (0x2c0, 0x2c1); - (0x2e0, 0x2e4); - (0x345, 0x345); - (0x371, 0x371); - (0x373, 0x373); - (0x377, 0x377); - (0x37a, 0x37a); - (0x37b, 0x37d); - (0x390, 0x390); - (0x3ac, 0x3ce); - (0x3d0, 0x3d1); - (0x3d5, 0x3d7); - (0x3d9, 0x3d9); - (0x3db, 0x3db); - (0x3dd, 0x3dd); - (0x3df, 0x3df); - (0x3e1, 0x3e1); - (0x3e3, 0x3e3); - (0x3e5, 0x3e5); - (0x3e7, 0x3e7); - (0x3e9, 0x3e9); - (0x3eb, 0x3eb); - (0x3ed, 0x3ed); - (0x3ef, 0x3f3); - (0x3f5, 0x3f5); - (0x3f8, 0x3f8); - (0x3fb, 0x3fc); - (0x430, 0x45f); - (0x461, 0x461); - (0x463, 0x463); - (0x465, 0x465); - (0x467, 0x467); - (0x469, 0x469); - (0x46b, 0x46b); - (0x46d, 0x46d); - (0x46f, 0x46f); - (0x471, 0x471); - (0x473, 0x473); - (0x475, 0x475); - (0x477, 0x477); - (0x479, 0x479); - (0x47b, 0x47b); - (0x47d, 0x47d); - (0x47f, 0x47f); - (0x481, 0x481); - (0x48b, 0x48b); - (0x48d, 0x48d); - (0x48f, 0x48f); - (0x491, 0x491); - (0x493, 0x493); - (0x495, 0x495); - (0x497, 0x497); - (0x499, 0x499); - (0x49b, 0x49b); - (0x49d, 0x49d); - (0x49f, 0x49f); - (0x4a1, 0x4a1); - (0x4a3, 0x4a3); - (0x4a5, 0x4a5); - (0x4a7, 0x4a7); - (0x4a9, 0x4a9); - (0x4ab, 0x4ab); - (0x4ad, 0x4ad); - (0x4af, 0x4af); - (0x4b1, 0x4b1); - (0x4b3, 0x4b3); - (0x4b5, 0x4b5); - (0x4b7, 0x4b7); - (0x4b9, 0x4b9); - (0x4bb, 0x4bb); - (0x4bd, 0x4bd); - (0x4bf, 0x4bf); - (0x4c2, 0x4c2); - (0x4c4, 0x4c4); - (0x4c6, 0x4c6); - (0x4c8, 0x4c8); - (0x4ca, 0x4ca); - (0x4cc, 0x4cc); - (0x4ce, 0x4cf); - (0x4d1, 0x4d1); - (0x4d3, 0x4d3); - (0x4d5, 0x4d5); - (0x4d7, 0x4d7); - (0x4d9, 0x4d9); - (0x4db, 0x4db); - (0x4dd, 0x4dd); - (0x4df, 0x4df); - (0x4e1, 0x4e1); - (0x4e3, 0x4e3); - (0x4e5, 0x4e5); - (0x4e7, 0x4e7); - (0x4e9, 0x4e9); - (0x4eb, 0x4eb); - (0x4ed, 0x4ed); - (0x4ef, 0x4ef); - (0x4f1, 0x4f1); - (0x4f3, 0x4f3); - (0x4f5, 0x4f5); - (0x4f7, 0x4f7); - (0x4f9, 0x4f9); - (0x4fb, 0x4fb); - (0x4fd, 0x4fd); - (0x4ff, 0x4ff); - (0x501, 0x501); - (0x503, 0x503); - (0x505, 0x505); - (0x507, 0x507); - (0x509, 0x509); - (0x50b, 0x50b); - (0x50d, 0x50d); - (0x50f, 0x50f); - (0x511, 0x511); - (0x513, 0x513); - (0x515, 0x515); - (0x517, 0x517); - (0x519, 0x519); - (0x51b, 0x51b); - (0x51d, 0x51d); - (0x51f, 0x51f); - (0x521, 0x521); - (0x523, 0x523); - (0x525, 0x525); - (0x527, 0x527); - (0x529, 0x529); - (0x52b, 0x52b); - (0x52d, 0x52d); - (0x52f, 0x52f); - (0x560, 0x588); - (0x10d0, 0x10fa); - (0x10fd, 0x10ff); - (0x13f8, 0x13fd); - (0x1c80, 0x1c88); - (0x1d00, 0x1d2b); - (0x1d2c, 0x1d6a); - (0x1d6b, 0x1d77); - (0x1d78, 0x1d78); - (0x1d79, 0x1d9a); - (0x1d9b, 0x1dbf); - (0x1e01, 0x1e01); - (0x1e03, 0x1e03); - (0x1e05, 0x1e05); - (0x1e07, 0x1e07); - (0x1e09, 0x1e09); - (0x1e0b, 0x1e0b); - (0x1e0d, 0x1e0d); - (0x1e0f, 0x1e0f); - (0x1e11, 0x1e11); - (0x1e13, 0x1e13); - (0x1e15, 0x1e15); - (0x1e17, 0x1e17); - (0x1e19, 0x1e19); - (0x1e1b, 0x1e1b); - (0x1e1d, 0x1e1d); - (0x1e1f, 0x1e1f); - (0x1e21, 0x1e21); - (0x1e23, 0x1e23); - (0x1e25, 0x1e25); - (0x1e27, 0x1e27); - (0x1e29, 0x1e29); - (0x1e2b, 0x1e2b); - (0x1e2d, 0x1e2d); - (0x1e2f, 0x1e2f); - (0x1e31, 0x1e31); - (0x1e33, 0x1e33); - (0x1e35, 0x1e35); - (0x1e37, 0x1e37); - (0x1e39, 0x1e39); - (0x1e3b, 0x1e3b); - (0x1e3d, 0x1e3d); - (0x1e3f, 0x1e3f); - (0x1e41, 0x1e41); - (0x1e43, 0x1e43); - (0x1e45, 0x1e45); - (0x1e47, 0x1e47); - (0x1e49, 0x1e49); - (0x1e4b, 0x1e4b); - (0x1e4d, 0x1e4d); - (0x1e4f, 0x1e4f); - (0x1e51, 0x1e51); - (0x1e53, 0x1e53); - (0x1e55, 0x1e55); - (0x1e57, 0x1e57); - (0x1e59, 0x1e59); - (0x1e5b, 0x1e5b); - (0x1e5d, 0x1e5d); - (0x1e5f, 0x1e5f); - (0x1e61, 0x1e61); - (0x1e63, 0x1e63); - (0x1e65, 0x1e65); - (0x1e67, 0x1e67); - (0x1e69, 0x1e69); - (0x1e6b, 0x1e6b); - (0x1e6d, 0x1e6d); - (0x1e6f, 0x1e6f); - (0x1e71, 0x1e71); - (0x1e73, 0x1e73); - (0x1e75, 0x1e75); - (0x1e77, 0x1e77); - (0x1e79, 0x1e79); - (0x1e7b, 0x1e7b); - (0x1e7d, 0x1e7d); - (0x1e7f, 0x1e7f); - (0x1e81, 0x1e81); - (0x1e83, 0x1e83); - (0x1e85, 0x1e85); - (0x1e87, 0x1e87); - (0x1e89, 0x1e89); - (0x1e8b, 0x1e8b); - (0x1e8d, 0x1e8d); - (0x1e8f, 0x1e8f); - (0x1e91, 0x1e91); - (0x1e93, 0x1e93); - (0x1e95, 0x1e9d); - (0x1e9f, 0x1e9f); - (0x1ea1, 0x1ea1); - (0x1ea3, 0x1ea3); - (0x1ea5, 0x1ea5); - (0x1ea7, 0x1ea7); - (0x1ea9, 0x1ea9); - (0x1eab, 0x1eab); - (0x1ead, 0x1ead); - (0x1eaf, 0x1eaf); - (0x1eb1, 0x1eb1); - (0x1eb3, 0x1eb3); - (0x1eb5, 0x1eb5); - (0x1eb7, 0x1eb7); - (0x1eb9, 0x1eb9); - (0x1ebb, 0x1ebb); - (0x1ebd, 0x1ebd); - (0x1ebf, 0x1ebf); - (0x1ec1, 0x1ec1); - (0x1ec3, 0x1ec3); - (0x1ec5, 0x1ec5); - (0x1ec7, 0x1ec7); - (0x1ec9, 0x1ec9); - (0x1ecb, 0x1ecb); - (0x1ecd, 0x1ecd); - (0x1ecf, 0x1ecf); - (0x1ed1, 0x1ed1); - (0x1ed3, 0x1ed3); - (0x1ed5, 0x1ed5); - (0x1ed7, 0x1ed7); - (0x1ed9, 0x1ed9); - (0x1edb, 0x1edb); - (0x1edd, 0x1edd); - (0x1edf, 0x1edf); - (0x1ee1, 0x1ee1); - (0x1ee3, 0x1ee3); - (0x1ee5, 0x1ee5); - (0x1ee7, 0x1ee7); - (0x1ee9, 0x1ee9); - (0x1eeb, 0x1eeb); - (0x1eed, 0x1eed); - (0x1eef, 0x1eef); - (0x1ef1, 0x1ef1); - (0x1ef3, 0x1ef3); - (0x1ef5, 0x1ef5); - (0x1ef7, 0x1ef7); - (0x1ef9, 0x1ef9); - (0x1efb, 0x1efb); - (0x1efd, 0x1efd); - (0x1eff, 0x1f07); - (0x1f10, 0x1f15); - (0x1f20, 0x1f27); - (0x1f30, 0x1f37); - (0x1f40, 0x1f45); - (0x1f50, 0x1f57); - (0x1f60, 0x1f67); - (0x1f70, 0x1f7d); - (0x1f80, 0x1f87); - (0x1f90, 0x1f97); - (0x1fa0, 0x1fa7); - (0x1fb0, 0x1fb4); - (0x1fb6, 0x1fb7); - (0x1fbe, 0x1fbe); - (0x1fc2, 0x1fc4); - (0x1fc6, 0x1fc7); - (0x1fd0, 0x1fd3); - (0x1fd6, 0x1fd7); - (0x1fe0, 0x1fe7); - (0x1ff2, 0x1ff4); - (0x1ff6, 0x1ff7); - (0x2071, 0x2071); - (0x207f, 0x207f); - (0x2090, 0x209c); - (0x210a, 0x210a); - (0x210e, 0x210f); - (0x2113, 0x2113); - (0x212f, 0x212f); - (0x2134, 0x2134); - (0x2139, 0x2139); - (0x213c, 0x213d); - (0x2146, 0x2149); - (0x214e, 0x214e); - (0x2170, 0x217f); - (0x2184, 0x2184); - (0x24d0, 0x24e9); - (0x2c30, 0x2c5f); - (0x2c61, 0x2c61); - (0x2c65, 0x2c66); - (0x2c68, 0x2c68); - (0x2c6a, 0x2c6a); - (0x2c6c, 0x2c6c); - (0x2c71, 0x2c71); - (0x2c73, 0x2c74); - (0x2c76, 0x2c7b); - (0x2c7c, 0x2c7d); - (0x2c81, 0x2c81); - (0x2c83, 0x2c83); - (0x2c85, 0x2c85); - (0x2c87, 0x2c87); - (0x2c89, 0x2c89); - (0x2c8b, 0x2c8b); - (0x2c8d, 0x2c8d); - (0x2c8f, 0x2c8f); - (0x2c91, 0x2c91); - (0x2c93, 0x2c93); - (0x2c95, 0x2c95); - (0x2c97, 0x2c97); - (0x2c99, 0x2c99); - (0x2c9b, 0x2c9b); - (0x2c9d, 0x2c9d); - (0x2c9f, 0x2c9f); - (0x2ca1, 0x2ca1); - (0x2ca3, 0x2ca3); - (0x2ca5, 0x2ca5); - (0x2ca7, 0x2ca7); - (0x2ca9, 0x2ca9); - (0x2cab, 0x2cab); - (0x2cad, 0x2cad); - (0x2caf, 0x2caf); - (0x2cb1, 0x2cb1); - (0x2cb3, 0x2cb3); - (0x2cb5, 0x2cb5); - (0x2cb7, 0x2cb7); - (0x2cb9, 0x2cb9); - (0x2cbb, 0x2cbb); - (0x2cbd, 0x2cbd); - (0x2cbf, 0x2cbf); - (0x2cc1, 0x2cc1); - (0x2cc3, 0x2cc3); - (0x2cc5, 0x2cc5); - (0x2cc7, 0x2cc7); - (0x2cc9, 0x2cc9); - (0x2ccb, 0x2ccb); - (0x2ccd, 0x2ccd); - (0x2ccf, 0x2ccf); - (0x2cd1, 0x2cd1); - (0x2cd3, 0x2cd3); - (0x2cd5, 0x2cd5); - (0x2cd7, 0x2cd7); - (0x2cd9, 0x2cd9); - (0x2cdb, 0x2cdb); - (0x2cdd, 0x2cdd); - (0x2cdf, 0x2cdf); - (0x2ce1, 0x2ce1); - (0x2ce3, 0x2ce4); - (0x2cec, 0x2cec); - (0x2cee, 0x2cee); - (0x2cf3, 0x2cf3); - (0x2d00, 0x2d25); - (0x2d27, 0x2d27); - (0x2d2d, 0x2d2d); - (0xa641, 0xa641); - (0xa643, 0xa643); - (0xa645, 0xa645); - (0xa647, 0xa647); - (0xa649, 0xa649); - (0xa64b, 0xa64b); - (0xa64d, 0xa64d); - (0xa64f, 0xa64f); - (0xa651, 0xa651); - (0xa653, 0xa653); - (0xa655, 0xa655); - (0xa657, 0xa657); - (0xa659, 0xa659); - (0xa65b, 0xa65b); - (0xa65d, 0xa65d); - (0xa65f, 0xa65f); - (0xa661, 0xa661); - (0xa663, 0xa663); - (0xa665, 0xa665); - (0xa667, 0xa667); - (0xa669, 0xa669); - (0xa66b, 0xa66b); - (0xa66d, 0xa66d); - (0xa681, 0xa681); - (0xa683, 0xa683); - (0xa685, 0xa685); - (0xa687, 0xa687); - (0xa689, 0xa689); - (0xa68b, 0xa68b); - (0xa68d, 0xa68d); - (0xa68f, 0xa68f); - (0xa691, 0xa691); - (0xa693, 0xa693); - (0xa695, 0xa695); - (0xa697, 0xa697); - (0xa699, 0xa699); - (0xa69b, 0xa69b); - (0xa69c, 0xa69d); - (0xa723, 0xa723); - (0xa725, 0xa725); - (0xa727, 0xa727); - (0xa729, 0xa729); - (0xa72b, 0xa72b); - (0xa72d, 0xa72d); - (0xa72f, 0xa731); - (0xa733, 0xa733); - (0xa735, 0xa735); - (0xa737, 0xa737); - (0xa739, 0xa739); - (0xa73b, 0xa73b); - (0xa73d, 0xa73d); - (0xa73f, 0xa73f); - (0xa741, 0xa741); - (0xa743, 0xa743); - (0xa745, 0xa745); - (0xa747, 0xa747); - (0xa749, 0xa749); - (0xa74b, 0xa74b); - (0xa74d, 0xa74d); - (0xa74f, 0xa74f); - (0xa751, 0xa751); - (0xa753, 0xa753); - (0xa755, 0xa755); - (0xa757, 0xa757); - (0xa759, 0xa759); - (0xa75b, 0xa75b); - (0xa75d, 0xa75d); - (0xa75f, 0xa75f); - (0xa761, 0xa761); - (0xa763, 0xa763); - (0xa765, 0xa765); - (0xa767, 0xa767); - (0xa769, 0xa769); - (0xa76b, 0xa76b); - (0xa76d, 0xa76d); - (0xa76f, 0xa76f); - (0xa770, 0xa770); - (0xa771, 0xa778); - (0xa77a, 0xa77a); - (0xa77c, 0xa77c); - (0xa77f, 0xa77f); - (0xa781, 0xa781); - (0xa783, 0xa783); - (0xa785, 0xa785); - (0xa787, 0xa787); - (0xa78c, 0xa78c); - (0xa78e, 0xa78e); - (0xa791, 0xa791); - (0xa793, 0xa795); - (0xa797, 0xa797); - (0xa799, 0xa799); - (0xa79b, 0xa79b); - (0xa79d, 0xa79d); - (0xa79f, 0xa79f); - (0xa7a1, 0xa7a1); - (0xa7a3, 0xa7a3); - (0xa7a5, 0xa7a5); - (0xa7a7, 0xa7a7); - (0xa7a9, 0xa7a9); - (0xa7af, 0xa7af); - (0xa7b5, 0xa7b5); - (0xa7b7, 0xa7b7); - (0xa7b9, 0xa7b9); - (0xa7bb, 0xa7bb); - (0xa7bd, 0xa7bd); - (0xa7bf, 0xa7bf); - (0xa7c1, 0xa7c1); - (0xa7c3, 0xa7c3); - (0xa7c8, 0xa7c8); - (0xa7ca, 0xa7ca); - (0xa7d1, 0xa7d1); - (0xa7d3, 0xa7d3); - (0xa7d5, 0xa7d5); - (0xa7d7, 0xa7d7); - (0xa7d9, 0xa7d9); - (0xa7f6, 0xa7f6); - (0xa7f8, 0xa7f9); - (0xa7fa, 0xa7fa); - (0xab30, 0xab5a); - (0xab5c, 0xab5f); - (0xab60, 0xab68); - (0xab70, 0xabbf); - (0xfb00, 0xfb06); - (0xfb13, 0xfb17); - (0xff41, 0xff5a); - (0x10428, 0x1044f); - (0x104d8, 0x104fb); - (0x10597, 0x105a1); - (0x105a3, 0x105b1); - (0x105b3, 0x105b9); - (0x105bb, 0x105bc); - (0x10780, 0x10780); - (0x10783, 0x10785); - (0x10787, 0x107b0); - (0x107b2, 0x107ba); - (0x10cc0, 0x10cf2); - (0x118c0, 0x118df); - (0x16e60, 0x16e7f); - (0x1d41a, 0x1d433); - (0x1d44e, 0x1d454); - (0x1d456, 0x1d467); - (0x1d482, 0x1d49b); - (0x1d4b6, 0x1d4b9); - (0x1d4bb, 0x1d4bb); - (0x1d4bd, 0x1d4c3); - (0x1d4c5, 0x1d4cf); - (0x1d4ea, 0x1d503); - (0x1d51e, 0x1d537); - (0x1d552, 0x1d56b); - (0x1d586, 0x1d59f); - (0x1d5ba, 0x1d5d3); - (0x1d5ee, 0x1d607); - (0x1d622, 0x1d63b); - (0x1d656, 0x1d66f); - (0x1d68a, 0x1d6a5); - (0x1d6c2, 0x1d6da); - (0x1d6dc, 0x1d6e1); - (0x1d6fc, 0x1d714); - (0x1d716, 0x1d71b); - (0x1d736, 0x1d74e); - (0x1d750, 0x1d755); - (0x1d770, 0x1d788); - (0x1d78a, 0x1d78f); - (0x1d7aa, 0x1d7c2); - (0x1d7c4, 0x1d7c9); - (0x1d7cb, 0x1d7cb); - (0x1df00, 0x1df09); - (0x1df0b, 0x1df1e); - (0x1e922, 0x1e943); - ] + [0x61, 0x7a; 0xaa, 0xaa; 0xb5, 0xb5; 0xba, 0xba; 0xdf, 0xf6; + 0xf8, 0xff; 0x101, 0x101; 0x103, 0x103; 0x105, 0x105; 0x107, 0x107; + 0x109, 0x109; 0x10b, 0x10b; 0x10d, 0x10d; 0x10f, 0x10f; 0x111, 0x111; + 0x113, 0x113; 0x115, 0x115; 0x117, 0x117; 0x119, 0x119; 0x11b, 0x11b; + 0x11d, 0x11d; 0x11f, 0x11f; 0x121, 0x121; 0x123, 0x123; 0x125, 0x125; + 0x127, 0x127; 0x129, 0x129; 0x12b, 0x12b; 0x12d, 0x12d; 0x12f, 0x12f; + 0x131, 0x131; 0x133, 0x133; 0x135, 0x135; 0x137, 0x138; 0x13a, 0x13a; + 0x13c, 0x13c; 0x13e, 0x13e; 0x140, 0x140; 0x142, 0x142; 0x144, 0x144; + 0x146, 0x146; 0x148, 0x149; 0x14b, 0x14b; 0x14d, 0x14d; 0x14f, 0x14f; + 0x151, 0x151; 0x153, 0x153; 0x155, 0x155; 0x157, 0x157; 0x159, 0x159; + 0x15b, 0x15b; 0x15d, 0x15d; 0x15f, 0x15f; 0x161, 0x161; 0x163, 0x163; + 0x165, 0x165; 0x167, 0x167; 0x169, 0x169; 0x16b, 0x16b; 0x16d, 0x16d; + 0x16f, 0x16f; 0x171, 0x171; 0x173, 0x173; 0x175, 0x175; 0x177, 0x177; + 0x17a, 0x17a; 0x17c, 0x17c; 0x17e, 0x180; 0x183, 0x183; 0x185, 0x185; + 0x188, 0x188; 0x18c, 0x18d; 0x192, 0x192; 0x195, 0x195; 0x199, 0x19b; + 0x19e, 0x19e; 0x1a1, 0x1a1; 0x1a3, 0x1a3; 0x1a5, 0x1a5; 0x1a8, 0x1a8; + 0x1aa, 0x1ab; 0x1ad, 0x1ad; 0x1b0, 0x1b0; 0x1b4, 0x1b4; 0x1b6, 0x1b6; + 0x1b9, 0x1ba; 0x1bd, 0x1bf; 0x1c6, 0x1c6; 0x1c9, 0x1c9; 0x1cc, 0x1cc; + 0x1ce, 0x1ce; 0x1d0, 0x1d0; 0x1d2, 0x1d2; 0x1d4, 0x1d4; 0x1d6, 0x1d6; + 0x1d8, 0x1d8; 0x1da, 0x1da; 0x1dc, 0x1dd; 0x1df, 0x1df; 0x1e1, 0x1e1; + 0x1e3, 0x1e3; 0x1e5, 0x1e5; 0x1e7, 0x1e7; 0x1e9, 0x1e9; 0x1eb, 0x1eb; + 0x1ed, 0x1ed; 0x1ef, 0x1f0; 0x1f3, 0x1f3; 0x1f5, 0x1f5; 0x1f9, 0x1f9; + 0x1fb, 0x1fb; 0x1fd, 0x1fd; 0x1ff, 0x1ff; 0x201, 0x201; 0x203, 0x203; + 0x205, 0x205; 0x207, 0x207; 0x209, 0x209; 0x20b, 0x20b; 0x20d, 0x20d; + 0x20f, 0x20f; 0x211, 0x211; 0x213, 0x213; 0x215, 0x215; 0x217, 0x217; + 0x219, 0x219; 0x21b, 0x21b; 0x21d, 0x21d; 0x21f, 0x21f; 0x221, 0x221; + 0x223, 0x223; 0x225, 0x225; 0x227, 0x227; 0x229, 0x229; 0x22b, 0x22b; + 0x22d, 0x22d; 0x22f, 0x22f; 0x231, 0x231; 0x233, 0x239; 0x23c, 0x23c; + 0x23f, 0x240; 0x242, 0x242; 0x247, 0x247; 0x249, 0x249; 0x24b, 0x24b; + 0x24d, 0x24d; 0x24f, 0x293; 0x295, 0x2af; 0x2b0, 0x2b8; 0x2c0, 0x2c1; + 0x2e0, 0x2e4; 0x345, 0x345; 0x371, 0x371; 0x373, 0x373; 0x377, 0x377; + 0x37a, 0x37a; 0x37b, 0x37d; 0x390, 0x390; 0x3ac, 0x3ce; 0x3d0, 0x3d1; + 0x3d5, 0x3d7; 0x3d9, 0x3d9; 0x3db, 0x3db; 0x3dd, 0x3dd; 0x3df, 0x3df; + 0x3e1, 0x3e1; 0x3e3, 0x3e3; 0x3e5, 0x3e5; 0x3e7, 0x3e7; 0x3e9, 0x3e9; + 0x3eb, 0x3eb; 0x3ed, 0x3ed; 0x3ef, 0x3f3; 0x3f5, 0x3f5; 0x3f8, 0x3f8; + 0x3fb, 0x3fc; 0x430, 0x45f; 0x461, 0x461; 0x463, 0x463; 0x465, 0x465; + 0x467, 0x467; 0x469, 0x469; 0x46b, 0x46b; 0x46d, 0x46d; 0x46f, 0x46f; + 0x471, 0x471; 0x473, 0x473; 0x475, 0x475; 0x477, 0x477; 0x479, 0x479; + 0x47b, 0x47b; 0x47d, 0x47d; 0x47f, 0x47f; 0x481, 0x481; 0x48b, 0x48b; + 0x48d, 0x48d; 0x48f, 0x48f; 0x491, 0x491; 0x493, 0x493; 0x495, 0x495; + 0x497, 0x497; 0x499, 0x499; 0x49b, 0x49b; 0x49d, 0x49d; 0x49f, 0x49f; + 0x4a1, 0x4a1; 0x4a3, 0x4a3; 0x4a5, 0x4a5; 0x4a7, 0x4a7; 0x4a9, 0x4a9; + 0x4ab, 0x4ab; 0x4ad, 0x4ad; 0x4af, 0x4af; 0x4b1, 0x4b1; 0x4b3, 0x4b3; + 0x4b5, 0x4b5; 0x4b7, 0x4b7; 0x4b9, 0x4b9; 0x4bb, 0x4bb; 0x4bd, 0x4bd; + 0x4bf, 0x4bf; 0x4c2, 0x4c2; 0x4c4, 0x4c4; 0x4c6, 0x4c6; 0x4c8, 0x4c8; + 0x4ca, 0x4ca; 0x4cc, 0x4cc; 0x4ce, 0x4cf; 0x4d1, 0x4d1; 0x4d3, 0x4d3; + 0x4d5, 0x4d5; 0x4d7, 0x4d7; 0x4d9, 0x4d9; 0x4db, 0x4db; 0x4dd, 0x4dd; + 0x4df, 0x4df; 0x4e1, 0x4e1; 0x4e3, 0x4e3; 0x4e5, 0x4e5; 0x4e7, 0x4e7; + 0x4e9, 0x4e9; 0x4eb, 0x4eb; 0x4ed, 0x4ed; 0x4ef, 0x4ef; 0x4f1, 0x4f1; + 0x4f3, 0x4f3; 0x4f5, 0x4f5; 0x4f7, 0x4f7; 0x4f9, 0x4f9; 0x4fb, 0x4fb; + 0x4fd, 0x4fd; 0x4ff, 0x4ff; 0x501, 0x501; 0x503, 0x503; 0x505, 0x505; + 0x507, 0x507; 0x509, 0x509; 0x50b, 0x50b; 0x50d, 0x50d; 0x50f, 0x50f; + 0x511, 0x511; 0x513, 0x513; 0x515, 0x515; 0x517, 0x517; 0x519, 0x519; + 0x51b, 0x51b; 0x51d, 0x51d; 0x51f, 0x51f; 0x521, 0x521; 0x523, 0x523; + 0x525, 0x525; 0x527, 0x527; 0x529, 0x529; 0x52b, 0x52b; 0x52d, 0x52d; + 0x52f, 0x52f; 0x560, 0x588; 0x10d0, 0x10fa; 0x10fd, 0x10ff; 0x13f8, 0x13fd; + 0x1c80, 0x1c88; 0x1d00, 0x1d2b; 0x1d2c, 0x1d6a; 0x1d6b, 0x1d77; 0x1d78, 0x1d78; + 0x1d79, 0x1d9a; 0x1d9b, 0x1dbf; 0x1e01, 0x1e01; 0x1e03, 0x1e03; 0x1e05, 0x1e05; + 0x1e07, 0x1e07; 0x1e09, 0x1e09; 0x1e0b, 0x1e0b; 0x1e0d, 0x1e0d; 0x1e0f, 0x1e0f; + 0x1e11, 0x1e11; 0x1e13, 0x1e13; 0x1e15, 0x1e15; 0x1e17, 0x1e17; 0x1e19, 0x1e19; + 0x1e1b, 0x1e1b; 0x1e1d, 0x1e1d; 0x1e1f, 0x1e1f; 0x1e21, 0x1e21; 0x1e23, 0x1e23; + 0x1e25, 0x1e25; 0x1e27, 0x1e27; 0x1e29, 0x1e29; 0x1e2b, 0x1e2b; 0x1e2d, 0x1e2d; + 0x1e2f, 0x1e2f; 0x1e31, 0x1e31; 0x1e33, 0x1e33; 0x1e35, 0x1e35; 0x1e37, 0x1e37; + 0x1e39, 0x1e39; 0x1e3b, 0x1e3b; 0x1e3d, 0x1e3d; 0x1e3f, 0x1e3f; 0x1e41, 0x1e41; + 0x1e43, 0x1e43; 0x1e45, 0x1e45; 0x1e47, 0x1e47; 0x1e49, 0x1e49; 0x1e4b, 0x1e4b; + 0x1e4d, 0x1e4d; 0x1e4f, 0x1e4f; 0x1e51, 0x1e51; 0x1e53, 0x1e53; 0x1e55, 0x1e55; + 0x1e57, 0x1e57; 0x1e59, 0x1e59; 0x1e5b, 0x1e5b; 0x1e5d, 0x1e5d; 0x1e5f, 0x1e5f; + 0x1e61, 0x1e61; 0x1e63, 0x1e63; 0x1e65, 0x1e65; 0x1e67, 0x1e67; 0x1e69, 0x1e69; + 0x1e6b, 0x1e6b; 0x1e6d, 0x1e6d; 0x1e6f, 0x1e6f; 0x1e71, 0x1e71; 0x1e73, 0x1e73; + 0x1e75, 0x1e75; 0x1e77, 0x1e77; 0x1e79, 0x1e79; 0x1e7b, 0x1e7b; 0x1e7d, 0x1e7d; + 0x1e7f, 0x1e7f; 0x1e81, 0x1e81; 0x1e83, 0x1e83; 0x1e85, 0x1e85; 0x1e87, 0x1e87; + 0x1e89, 0x1e89; 0x1e8b, 0x1e8b; 0x1e8d, 0x1e8d; 0x1e8f, 0x1e8f; 0x1e91, 0x1e91; + 0x1e93, 0x1e93; 0x1e95, 0x1e9d; 0x1e9f, 0x1e9f; 0x1ea1, 0x1ea1; 0x1ea3, 0x1ea3; + 0x1ea5, 0x1ea5; 0x1ea7, 0x1ea7; 0x1ea9, 0x1ea9; 0x1eab, 0x1eab; 0x1ead, 0x1ead; + 0x1eaf, 0x1eaf; 0x1eb1, 0x1eb1; 0x1eb3, 0x1eb3; 0x1eb5, 0x1eb5; 0x1eb7, 0x1eb7; + 0x1eb9, 0x1eb9; 0x1ebb, 0x1ebb; 0x1ebd, 0x1ebd; 0x1ebf, 0x1ebf; 0x1ec1, 0x1ec1; + 0x1ec3, 0x1ec3; 0x1ec5, 0x1ec5; 0x1ec7, 0x1ec7; 0x1ec9, 0x1ec9; 0x1ecb, 0x1ecb; + 0x1ecd, 0x1ecd; 0x1ecf, 0x1ecf; 0x1ed1, 0x1ed1; 0x1ed3, 0x1ed3; 0x1ed5, 0x1ed5; + 0x1ed7, 0x1ed7; 0x1ed9, 0x1ed9; 0x1edb, 0x1edb; 0x1edd, 0x1edd; 0x1edf, 0x1edf; + 0x1ee1, 0x1ee1; 0x1ee3, 0x1ee3; 0x1ee5, 0x1ee5; 0x1ee7, 0x1ee7; 0x1ee9, 0x1ee9; + 0x1eeb, 0x1eeb; 0x1eed, 0x1eed; 0x1eef, 0x1eef; 0x1ef1, 0x1ef1; 0x1ef3, 0x1ef3; + 0x1ef5, 0x1ef5; 0x1ef7, 0x1ef7; 0x1ef9, 0x1ef9; 0x1efb, 0x1efb; 0x1efd, 0x1efd; + 0x1eff, 0x1f07; 0x1f10, 0x1f15; 0x1f20, 0x1f27; 0x1f30, 0x1f37; 0x1f40, 0x1f45; + 0x1f50, 0x1f57; 0x1f60, 0x1f67; 0x1f70, 0x1f7d; 0x1f80, 0x1f87; 0x1f90, 0x1f97; + 0x1fa0, 0x1fa7; 0x1fb0, 0x1fb4; 0x1fb6, 0x1fb7; 0x1fbe, 0x1fbe; 0x1fc2, 0x1fc4; + 0x1fc6, 0x1fc7; 0x1fd0, 0x1fd3; 0x1fd6, 0x1fd7; 0x1fe0, 0x1fe7; 0x1ff2, 0x1ff4; + 0x1ff6, 0x1ff7; 0x2071, 0x2071; 0x207f, 0x207f; 0x2090, 0x209c; 0x210a, 0x210a; + 0x210e, 0x210f; 0x2113, 0x2113; 0x212f, 0x212f; 0x2134, 0x2134; 0x2139, 0x2139; + 0x213c, 0x213d; 0x2146, 0x2149; 0x214e, 0x214e; 0x2170, 0x217f; 0x2184, 0x2184; + 0x24d0, 0x24e9; 0x2c30, 0x2c5f; 0x2c61, 0x2c61; 0x2c65, 0x2c66; 0x2c68, 0x2c68; + 0x2c6a, 0x2c6a; 0x2c6c, 0x2c6c; 0x2c71, 0x2c71; 0x2c73, 0x2c74; 0x2c76, 0x2c7b; + 0x2c7c, 0x2c7d; 0x2c81, 0x2c81; 0x2c83, 0x2c83; 0x2c85, 0x2c85; 0x2c87, 0x2c87; + 0x2c89, 0x2c89; 0x2c8b, 0x2c8b; 0x2c8d, 0x2c8d; 0x2c8f, 0x2c8f; 0x2c91, 0x2c91; + 0x2c93, 0x2c93; 0x2c95, 0x2c95; 0x2c97, 0x2c97; 0x2c99, 0x2c99; 0x2c9b, 0x2c9b; + 0x2c9d, 0x2c9d; 0x2c9f, 0x2c9f; 0x2ca1, 0x2ca1; 0x2ca3, 0x2ca3; 0x2ca5, 0x2ca5; + 0x2ca7, 0x2ca7; 0x2ca9, 0x2ca9; 0x2cab, 0x2cab; 0x2cad, 0x2cad; 0x2caf, 0x2caf; + 0x2cb1, 0x2cb1; 0x2cb3, 0x2cb3; 0x2cb5, 0x2cb5; 0x2cb7, 0x2cb7; 0x2cb9, 0x2cb9; + 0x2cbb, 0x2cbb; 0x2cbd, 0x2cbd; 0x2cbf, 0x2cbf; 0x2cc1, 0x2cc1; 0x2cc3, 0x2cc3; + 0x2cc5, 0x2cc5; 0x2cc7, 0x2cc7; 0x2cc9, 0x2cc9; 0x2ccb, 0x2ccb; 0x2ccd, 0x2ccd; + 0x2ccf, 0x2ccf; 0x2cd1, 0x2cd1; 0x2cd3, 0x2cd3; 0x2cd5, 0x2cd5; 0x2cd7, 0x2cd7; + 0x2cd9, 0x2cd9; 0x2cdb, 0x2cdb; 0x2cdd, 0x2cdd; 0x2cdf, 0x2cdf; 0x2ce1, 0x2ce1; + 0x2ce3, 0x2ce4; 0x2cec, 0x2cec; 0x2cee, 0x2cee; 0x2cf3, 0x2cf3; 0x2d00, 0x2d25; + 0x2d27, 0x2d27; 0x2d2d, 0x2d2d; 0xa641, 0xa641; 0xa643, 0xa643; 0xa645, 0xa645; + 0xa647, 0xa647; 0xa649, 0xa649; 0xa64b, 0xa64b; 0xa64d, 0xa64d; 0xa64f, 0xa64f; + 0xa651, 0xa651; 0xa653, 0xa653; 0xa655, 0xa655; 0xa657, 0xa657; 0xa659, 0xa659; + 0xa65b, 0xa65b; 0xa65d, 0xa65d; 0xa65f, 0xa65f; 0xa661, 0xa661; 0xa663, 0xa663; + 0xa665, 0xa665; 0xa667, 0xa667; 0xa669, 0xa669; 0xa66b, 0xa66b; 0xa66d, 0xa66d; + 0xa681, 0xa681; 0xa683, 0xa683; 0xa685, 0xa685; 0xa687, 0xa687; 0xa689, 0xa689; + 0xa68b, 0xa68b; 0xa68d, 0xa68d; 0xa68f, 0xa68f; 0xa691, 0xa691; 0xa693, 0xa693; + 0xa695, 0xa695; 0xa697, 0xa697; 0xa699, 0xa699; 0xa69b, 0xa69b; 0xa69c, 0xa69d; + 0xa723, 0xa723; 0xa725, 0xa725; 0xa727, 0xa727; 0xa729, 0xa729; 0xa72b, 0xa72b; + 0xa72d, 0xa72d; 0xa72f, 0xa731; 0xa733, 0xa733; 0xa735, 0xa735; 0xa737, 0xa737; + 0xa739, 0xa739; 0xa73b, 0xa73b; 0xa73d, 0xa73d; 0xa73f, 0xa73f; 0xa741, 0xa741; + 0xa743, 0xa743; 0xa745, 0xa745; 0xa747, 0xa747; 0xa749, 0xa749; 0xa74b, 0xa74b; + 0xa74d, 0xa74d; 0xa74f, 0xa74f; 0xa751, 0xa751; 0xa753, 0xa753; 0xa755, 0xa755; + 0xa757, 0xa757; 0xa759, 0xa759; 0xa75b, 0xa75b; 0xa75d, 0xa75d; 0xa75f, 0xa75f; + 0xa761, 0xa761; 0xa763, 0xa763; 0xa765, 0xa765; 0xa767, 0xa767; 0xa769, 0xa769; + 0xa76b, 0xa76b; 0xa76d, 0xa76d; 0xa76f, 0xa76f; 0xa770, 0xa770; 0xa771, 0xa778; + 0xa77a, 0xa77a; 0xa77c, 0xa77c; 0xa77f, 0xa77f; 0xa781, 0xa781; 0xa783, 0xa783; + 0xa785, 0xa785; 0xa787, 0xa787; 0xa78c, 0xa78c; 0xa78e, 0xa78e; 0xa791, 0xa791; + 0xa793, 0xa795; 0xa797, 0xa797; 0xa799, 0xa799; 0xa79b, 0xa79b; 0xa79d, 0xa79d; + 0xa79f, 0xa79f; 0xa7a1, 0xa7a1; 0xa7a3, 0xa7a3; 0xa7a5, 0xa7a5; 0xa7a7, 0xa7a7; + 0xa7a9, 0xa7a9; 0xa7af, 0xa7af; 0xa7b5, 0xa7b5; 0xa7b7, 0xa7b7; 0xa7b9, 0xa7b9; + 0xa7bb, 0xa7bb; 0xa7bd, 0xa7bd; 0xa7bf, 0xa7bf; 0xa7c1, 0xa7c1; 0xa7c3, 0xa7c3; + 0xa7c8, 0xa7c8; 0xa7ca, 0xa7ca; 0xa7d1, 0xa7d1; 0xa7d3, 0xa7d3; 0xa7d5, 0xa7d5; + 0xa7d7, 0xa7d7; 0xa7d9, 0xa7d9; 0xa7f6, 0xa7f6; 0xa7f8, 0xa7f9; 0xa7fa, 0xa7fa; + 0xab30, 0xab5a; 0xab5c, 0xab5f; 0xab60, 0xab68; 0xab70, 0xabbf; 0xfb00, 0xfb06; + 0xfb13, 0xfb17; 0xff41, 0xff5a; 0x10428, 0x1044f; 0x104d8, 0x104fb; 0x10597, 0x105a1; + 0x105a3, 0x105b1; 0x105b3, 0x105b9; 0x105bb, 0x105bc; 0x10780, 0x10780; 0x10783, 0x10785; + 0x10787, 0x107b0; 0x107b2, 0x107ba; 0x10cc0, 0x10cf2; 0x118c0, 0x118df; 0x16e60, 0x16e7f; + 0x1d41a, 0x1d433; 0x1d44e, 0x1d454; 0x1d456, 0x1d467; 0x1d482, 0x1d49b; 0x1d4b6, 0x1d4b9; + 0x1d4bb, 0x1d4bb; 0x1d4bd, 0x1d4c3; 0x1d4c5, 0x1d4cf; 0x1d4ea, 0x1d503; 0x1d51e, 0x1d537; + 0x1d552, 0x1d56b; 0x1d586, 0x1d59f; 0x1d5ba, 0x1d5d3; 0x1d5ee, 0x1d607; 0x1d622, 0x1d63b; + 0x1d656, 0x1d66f; 0x1d68a, 0x1d6a5; 0x1d6c2, 0x1d6da; 0x1d6dc, 0x1d6e1; 0x1d6fc, 0x1d714; + 0x1d716, 0x1d71b; 0x1d736, 0x1d74e; 0x1d750, 0x1d755; 0x1d770, 0x1d788; 0x1d78a, 0x1d78f; + 0x1d7aa, 0x1d7c2; 0x1d7c4, 0x1d7c9; 0x1d7cb, 0x1d7cb; 0x1df00, 0x1df09; 0x1df0b, 0x1df1e; + 0x1e922, 0x1e943] let math = - [ - (0x2b, 0x2b); - (0x3c, 0x3e); - (0x5e, 0x5e); - (0x7c, 0x7c); - (0x7e, 0x7e); - (0xac, 0xac); - (0xb1, 0xb1); - (0xd7, 0xd7); - (0xf7, 0xf7); - (0x3d0, 0x3d2); - (0x3d5, 0x3d5); - (0x3f0, 0x3f1); - (0x3f4, 0x3f5); - (0x3f6, 0x3f6); - (0x606, 0x608); - (0x2016, 0x2016); - (0x2032, 0x2034); - (0x2040, 0x2040); - (0x2044, 0x2044); - (0x2052, 0x2052); - (0x2061, 0x2064); - (0x207a, 0x207c); - (0x207d, 0x207d); - (0x207e, 0x207e); - (0x208a, 0x208c); - (0x208d, 0x208d); - (0x208e, 0x208e); - (0x20d0, 0x20dc); - (0x20e1, 0x20e1); - (0x20e5, 0x20e6); - (0x20eb, 0x20ef); - (0x2102, 0x2102); - (0x2107, 0x2107); - (0x210a, 0x2113); - (0x2115, 0x2115); - (0x2118, 0x2118); - (0x2119, 0x211d); - (0x2124, 0x2124); - (0x2128, 0x2128); - (0x2129, 0x2129); - (0x212c, 0x212d); - (0x212f, 0x2131); - (0x2133, 0x2134); - (0x2135, 0x2138); - (0x213c, 0x213f); - (0x2140, 0x2144); - (0x2145, 0x2149); - (0x214b, 0x214b); - (0x2190, 0x2194); - (0x2195, 0x2199); - (0x219a, 0x219b); - (0x219c, 0x219f); - (0x21a0, 0x21a0); - (0x21a1, 0x21a2); - (0x21a3, 0x21a3); - (0x21a4, 0x21a5); - (0x21a6, 0x21a6); - (0x21a7, 0x21a7); - (0x21a9, 0x21ad); - (0x21ae, 0x21ae); - (0x21b0, 0x21b1); - (0x21b6, 0x21b7); - (0x21bc, 0x21cd); - (0x21ce, 0x21cf); - (0x21d0, 0x21d1); - (0x21d2, 0x21d2); - (0x21d3, 0x21d3); - (0x21d4, 0x21d4); - (0x21d5, 0x21db); - (0x21dd, 0x21dd); - (0x21e4, 0x21e5); - (0x21f4, 0x22ff); - (0x2308, 0x2308); - (0x2309, 0x2309); - (0x230a, 0x230a); - (0x230b, 0x230b); - (0x2320, 0x2321); - (0x237c, 0x237c); - (0x239b, 0x23b3); - (0x23b4, 0x23b5); - (0x23b7, 0x23b7); - (0x23d0, 0x23d0); - (0x23dc, 0x23e1); - (0x23e2, 0x23e2); - (0x25a0, 0x25a1); - (0x25ae, 0x25b6); - (0x25b7, 0x25b7); - (0x25bc, 0x25c0); - (0x25c1, 0x25c1); - (0x25c6, 0x25c7); - (0x25ca, 0x25cb); - (0x25cf, 0x25d3); - (0x25e2, 0x25e2); - (0x25e4, 0x25e4); - (0x25e7, 0x25ec); - (0x25f8, 0x25ff); - (0x2605, 0x2606); - (0x2640, 0x2640); - (0x2642, 0x2642); - (0x2660, 0x2663); - (0x266d, 0x266e); - (0x266f, 0x266f); - (0x27c0, 0x27c4); - (0x27c5, 0x27c5); - (0x27c6, 0x27c6); - (0x27c7, 0x27e5); - (0x27e6, 0x27e6); - (0x27e7, 0x27e7); - (0x27e8, 0x27e8); - (0x27e9, 0x27e9); - (0x27ea, 0x27ea); - (0x27eb, 0x27eb); - (0x27ec, 0x27ec); - (0x27ed, 0x27ed); - (0x27ee, 0x27ee); - (0x27ef, 0x27ef); - (0x27f0, 0x27ff); - (0x2900, 0x2982); - (0x2983, 0x2983); - (0x2984, 0x2984); - (0x2985, 0x2985); - (0x2986, 0x2986); - (0x2987, 0x2987); - (0x2988, 0x2988); - (0x2989, 0x2989); - (0x298a, 0x298a); - (0x298b, 0x298b); - (0x298c, 0x298c); - (0x298d, 0x298d); - (0x298e, 0x298e); - (0x298f, 0x298f); - (0x2990, 0x2990); - (0x2991, 0x2991); - (0x2992, 0x2992); - (0x2993, 0x2993); - (0x2994, 0x2994); - (0x2995, 0x2995); - (0x2996, 0x2996); - (0x2997, 0x2997); - (0x2998, 0x2998); - (0x2999, 0x29d7); - (0x29d8, 0x29d8); - (0x29d9, 0x29d9); - (0x29da, 0x29da); - (0x29db, 0x29db); - (0x29dc, 0x29fb); - (0x29fc, 0x29fc); - (0x29fd, 0x29fd); - (0x29fe, 0x2aff); - (0x2b30, 0x2b44); - (0x2b47, 0x2b4c); - (0xfb29, 0xfb29); - (0xfe61, 0xfe61); - (0xfe62, 0xfe62); - (0xfe63, 0xfe63); - (0xfe64, 0xfe66); - (0xfe68, 0xfe68); - (0xff0b, 0xff0b); - (0xff1c, 0xff1e); - (0xff3c, 0xff3c); - (0xff3e, 0xff3e); - (0xff5c, 0xff5c); - (0xff5e, 0xff5e); - (0xffe2, 0xffe2); - (0xffe9, 0xffec); - (0x1d400, 0x1d454); - (0x1d456, 0x1d49c); - (0x1d49e, 0x1d49f); - (0x1d4a2, 0x1d4a2); - (0x1d4a5, 0x1d4a6); - (0x1d4a9, 0x1d4ac); - (0x1d4ae, 0x1d4b9); - (0x1d4bb, 0x1d4bb); - (0x1d4bd, 0x1d4c3); - (0x1d4c5, 0x1d505); - (0x1d507, 0x1d50a); - (0x1d50d, 0x1d514); - (0x1d516, 0x1d51c); - (0x1d51e, 0x1d539); - (0x1d53b, 0x1d53e); - (0x1d540, 0x1d544); - (0x1d546, 0x1d546); - (0x1d54a, 0x1d550); - (0x1d552, 0x1d6a5); - (0x1d6a8, 0x1d6c0); - (0x1d6c1, 0x1d6c1); - (0x1d6c2, 0x1d6da); - (0x1d6db, 0x1d6db); - (0x1d6dc, 0x1d6fa); - (0x1d6fb, 0x1d6fb); - (0x1d6fc, 0x1d714); - (0x1d715, 0x1d715); - (0x1d716, 0x1d734); - (0x1d735, 0x1d735); - (0x1d736, 0x1d74e); - (0x1d74f, 0x1d74f); - (0x1d750, 0x1d76e); - (0x1d76f, 0x1d76f); - (0x1d770, 0x1d788); - (0x1d789, 0x1d789); - (0x1d78a, 0x1d7a8); - (0x1d7a9, 0x1d7a9); - (0x1d7aa, 0x1d7c2); - (0x1d7c3, 0x1d7c3); - (0x1d7c4, 0x1d7cb); - (0x1d7ce, 0x1d7ff); - (0x1ee00, 0x1ee03); - (0x1ee05, 0x1ee1f); - (0x1ee21, 0x1ee22); - (0x1ee24, 0x1ee24); - (0x1ee27, 0x1ee27); - (0x1ee29, 0x1ee32); - (0x1ee34, 0x1ee37); - (0x1ee39, 0x1ee39); - (0x1ee3b, 0x1ee3b); - (0x1ee42, 0x1ee42); - (0x1ee47, 0x1ee47); - (0x1ee49, 0x1ee49); - (0x1ee4b, 0x1ee4b); - (0x1ee4d, 0x1ee4f); - (0x1ee51, 0x1ee52); - (0x1ee54, 0x1ee54); - (0x1ee57, 0x1ee57); - (0x1ee59, 0x1ee59); - (0x1ee5b, 0x1ee5b); - (0x1ee5d, 0x1ee5d); - (0x1ee5f, 0x1ee5f); - (0x1ee61, 0x1ee62); - (0x1ee64, 0x1ee64); - (0x1ee67, 0x1ee6a); - (0x1ee6c, 0x1ee72); - (0x1ee74, 0x1ee77); - (0x1ee79, 0x1ee7c); - (0x1ee7e, 0x1ee7e); - (0x1ee80, 0x1ee89); - (0x1eef0, 0x1eef1); - (0x1eeab, 0x1eebb); - (0x1eea5, 0x1eea9); - (0x1eea1, 0x1eea3); - (0x1ee8b, 0x1ee9b); - ] + [0x2b, 0x2b; 0x3c, 0x3e; 0x5e, 0x5e; 0x7c, 0x7c; 0x7e, 0x7e; + 0xac, 0xac; 0xb1, 0xb1; 0xd7, 0xd7; 0xf7, 0xf7; 0x3d0, 0x3d2; + 0x3d5, 0x3d5; 0x3f0, 0x3f1; 0x3f4, 0x3f5; 0x3f6, 0x3f6; 0x606, 0x608; + 0x2016, 0x2016; 0x2032, 0x2034; 0x2040, 0x2040; 0x2044, 0x2044; 0x2052, 0x2052; + 0x2061, 0x2064; 0x207a, 0x207c; 0x207d, 0x207d; 0x207e, 0x207e; 0x208a, 0x208c; + 0x208d, 0x208d; 0x208e, 0x208e; 0x20d0, 0x20dc; 0x20e1, 0x20e1; 0x20e5, 0x20e6; + 0x20eb, 0x20ef; 0x2102, 0x2102; 0x2107, 0x2107; 0x210a, 0x2113; 0x2115, 0x2115; + 0x2118, 0x2118; 0x2119, 0x211d; 0x2124, 0x2124; 0x2128, 0x2128; 0x2129, 0x2129; + 0x212c, 0x212d; 0x212f, 0x2131; 0x2133, 0x2134; 0x2135, 0x2138; 0x213c, 0x213f; + 0x2140, 0x2144; 0x2145, 0x2149; 0x214b, 0x214b; 0x2190, 0x2194; 0x2195, 0x2199; + 0x219a, 0x219b; 0x219c, 0x219f; 0x21a0, 0x21a0; 0x21a1, 0x21a2; 0x21a3, 0x21a3; + 0x21a4, 0x21a5; 0x21a6, 0x21a6; 0x21a7, 0x21a7; 0x21a9, 0x21ad; 0x21ae, 0x21ae; + 0x21b0, 0x21b1; 0x21b6, 0x21b7; 0x21bc, 0x21cd; 0x21ce, 0x21cf; 0x21d0, 0x21d1; + 0x21d2, 0x21d2; 0x21d3, 0x21d3; 0x21d4, 0x21d4; 0x21d5, 0x21db; 0x21dd, 0x21dd; + 0x21e4, 0x21e5; 0x21f4, 0x22ff; 0x2308, 0x2308; 0x2309, 0x2309; 0x230a, 0x230a; + 0x230b, 0x230b; 0x2320, 0x2321; 0x237c, 0x237c; 0x239b, 0x23b3; 0x23b4, 0x23b5; + 0x23b7, 0x23b7; 0x23d0, 0x23d0; 0x23dc, 0x23e1; 0x23e2, 0x23e2; 0x25a0, 0x25a1; + 0x25ae, 0x25b6; 0x25b7, 0x25b7; 0x25bc, 0x25c0; 0x25c1, 0x25c1; 0x25c6, 0x25c7; + 0x25ca, 0x25cb; 0x25cf, 0x25d3; 0x25e2, 0x25e2; 0x25e4, 0x25e4; 0x25e7, 0x25ec; + 0x25f8, 0x25ff; 0x2605, 0x2606; 0x2640, 0x2640; 0x2642, 0x2642; 0x2660, 0x2663; + 0x266d, 0x266e; 0x266f, 0x266f; 0x27c0, 0x27c4; 0x27c5, 0x27c5; 0x27c6, 0x27c6; + 0x27c7, 0x27e5; 0x27e6, 0x27e6; 0x27e7, 0x27e7; 0x27e8, 0x27e8; 0x27e9, 0x27e9; + 0x27ea, 0x27ea; 0x27eb, 0x27eb; 0x27ec, 0x27ec; 0x27ed, 0x27ed; 0x27ee, 0x27ee; + 0x27ef, 0x27ef; 0x27f0, 0x27ff; 0x2900, 0x2982; 0x2983, 0x2983; 0x2984, 0x2984; + 0x2985, 0x2985; 0x2986, 0x2986; 0x2987, 0x2987; 0x2988, 0x2988; 0x2989, 0x2989; + 0x298a, 0x298a; 0x298b, 0x298b; 0x298c, 0x298c; 0x298d, 0x298d; 0x298e, 0x298e; + 0x298f, 0x298f; 0x2990, 0x2990; 0x2991, 0x2991; 0x2992, 0x2992; 0x2993, 0x2993; + 0x2994, 0x2994; 0x2995, 0x2995; 0x2996, 0x2996; 0x2997, 0x2997; 0x2998, 0x2998; + 0x2999, 0x29d7; 0x29d8, 0x29d8; 0x29d9, 0x29d9; 0x29da, 0x29da; 0x29db, 0x29db; + 0x29dc, 0x29fb; 0x29fc, 0x29fc; 0x29fd, 0x29fd; 0x29fe, 0x2aff; 0x2b30, 0x2b44; + 0x2b47, 0x2b4c; 0xfb29, 0xfb29; 0xfe61, 0xfe61; 0xfe62, 0xfe62; 0xfe63, 0xfe63; + 0xfe64, 0xfe66; 0xfe68, 0xfe68; 0xff0b, 0xff0b; 0xff1c, 0xff1e; 0xff3c, 0xff3c; + 0xff3e, 0xff3e; 0xff5c, 0xff5c; 0xff5e, 0xff5e; 0xffe2, 0xffe2; 0xffe9, 0xffec; + 0x1d400, 0x1d454; 0x1d456, 0x1d49c; 0x1d49e, 0x1d49f; 0x1d4a2, 0x1d4a2; 0x1d4a5, 0x1d4a6; + 0x1d4a9, 0x1d4ac; 0x1d4ae, 0x1d4b9; 0x1d4bb, 0x1d4bb; 0x1d4bd, 0x1d4c3; 0x1d4c5, 0x1d505; + 0x1d507, 0x1d50a; 0x1d50d, 0x1d514; 0x1d516, 0x1d51c; 0x1d51e, 0x1d539; 0x1d53b, 0x1d53e; + 0x1d540, 0x1d544; 0x1d546, 0x1d546; 0x1d54a, 0x1d550; 0x1d552, 0x1d6a5; 0x1d6a8, 0x1d6c0; + 0x1d6c1, 0x1d6c1; 0x1d6c2, 0x1d6da; 0x1d6db, 0x1d6db; 0x1d6dc, 0x1d6fa; 0x1d6fb, 0x1d6fb; + 0x1d6fc, 0x1d714; 0x1d715, 0x1d715; 0x1d716, 0x1d734; 0x1d735, 0x1d735; 0x1d736, 0x1d74e; + 0x1d74f, 0x1d74f; 0x1d750, 0x1d76e; 0x1d76f, 0x1d76f; 0x1d770, 0x1d788; 0x1d789, 0x1d789; + 0x1d78a, 0x1d7a8; 0x1d7a9, 0x1d7a9; 0x1d7aa, 0x1d7c2; 0x1d7c3, 0x1d7c3; 0x1d7c4, 0x1d7cb; + 0x1d7ce, 0x1d7ff; 0x1ee00, 0x1ee03; 0x1ee05, 0x1ee1f; 0x1ee21, 0x1ee22; 0x1ee24, 0x1ee24; + 0x1ee27, 0x1ee27; 0x1ee29, 0x1ee32; 0x1ee34, 0x1ee37; 0x1ee39, 0x1ee39; 0x1ee3b, 0x1ee3b; + 0x1ee42, 0x1ee42; 0x1ee47, 0x1ee47; 0x1ee49, 0x1ee49; 0x1ee4b, 0x1ee4b; 0x1ee4d, 0x1ee4f; + 0x1ee51, 0x1ee52; 0x1ee54, 0x1ee54; 0x1ee57, 0x1ee57; 0x1ee59, 0x1ee59; 0x1ee5b, 0x1ee5b; + 0x1ee5d, 0x1ee5d; 0x1ee5f, 0x1ee5f; 0x1ee61, 0x1ee62; 0x1ee64, 0x1ee64; 0x1ee67, 0x1ee6a; + 0x1ee6c, 0x1ee72; 0x1ee74, 0x1ee77; 0x1ee79, 0x1ee7c; 0x1ee7e, 0x1ee7e; 0x1ee80, 0x1ee89; + 0x1eef0, 0x1eef1; 0x1eeab, 0x1eebb; 0x1eea5, 0x1eea9; 0x1eea1, 0x1eea3; 0x1ee8b, 0x1ee9b] let other_alphabetic = - [ - (0x345, 0x345); - (0x5b0, 0x5bd); - (0x5bf, 0x5bf); - (0x5c1, 0x5c2); - (0x5c4, 0x5c5); - (0x5c7, 0x5c7); - (0x610, 0x61a); - (0x64b, 0x657); - (0x659, 0x65f); - (0x670, 0x670); - (0x6d6, 0x6dc); - (0x6e1, 0x6e4); - (0x6e7, 0x6e8); - (0x6ed, 0x6ed); - (0x711, 0x711); - (0x730, 0x73f); - (0x7a6, 0x7b0); - (0x816, 0x817); - (0x81b, 0x823); - (0x825, 0x827); - (0x829, 0x82c); - (0x8d4, 0x8df); - (0x8e3, 0x8e9); - (0x8f0, 0x902); - (0x903, 0x903); - (0x93a, 0x93a); - (0x93b, 0x93b); - (0x93e, 0x940); - (0x941, 0x948); - (0x949, 0x94c); - (0x94e, 0x94f); - (0x955, 0x957); - (0x962, 0x963); - (0x981, 0x981); - (0x982, 0x983); - (0x9be, 0x9c0); - (0x9c1, 0x9c4); - (0x9c7, 0x9c8); - (0x9cb, 0x9cc); - (0x9d7, 0x9d7); - (0x9e2, 0x9e3); - (0xa01, 0xa02); - (0xa03, 0xa03); - (0xa3e, 0xa40); - (0xa41, 0xa42); - (0xa47, 0xa48); - (0xa4b, 0xa4c); - (0xa51, 0xa51); - (0xa70, 0xa71); - (0xa75, 0xa75); - (0xa81, 0xa82); - (0xa83, 0xa83); - (0xabe, 0xac0); - (0xac1, 0xac5); - (0xac7, 0xac8); - (0xac9, 0xac9); - (0xacb, 0xacc); - (0xae2, 0xae3); - (0xafa, 0xafc); - (0xb01, 0xb01); - (0xb02, 0xb03); - (0xb3e, 0xb3e); - (0xb3f, 0xb3f); - (0xb40, 0xb40); - (0xb41, 0xb44); - (0xb47, 0xb48); - (0xb4b, 0xb4c); - (0xb56, 0xb56); - (0xb57, 0xb57); - (0xb62, 0xb63); - (0xb82, 0xb82); - (0xbbe, 0xbbf); - (0xbc0, 0xbc0); - (0xbc1, 0xbc2); - (0xbc6, 0xbc8); - (0xbca, 0xbcc); - (0xbd7, 0xbd7); - (0xc00, 0xc00); - (0xc01, 0xc03); - (0xc3e, 0xc40); - (0xc41, 0xc44); - (0xc46, 0xc48); - (0xc4a, 0xc4c); - (0xc55, 0xc56); - (0xc62, 0xc63); - (0xc81, 0xc81); - (0xc82, 0xc83); - (0xcbe, 0xcbe); - (0xcbf, 0xcbf); - (0xcc0, 0xcc4); - (0xcc6, 0xcc6); - (0xcc7, 0xcc8); - (0xcca, 0xccb); - (0xccc, 0xccc); - (0xcd5, 0xcd6); - (0xce2, 0xce3); - (0xd00, 0xd01); - (0xd02, 0xd03); - (0xd3e, 0xd40); - (0xd41, 0xd44); - (0xd46, 0xd48); - (0xd4a, 0xd4c); - (0xd57, 0xd57); - (0xd62, 0xd63); - (0xd81, 0xd81); - (0xd82, 0xd83); - (0xdcf, 0xdd1); - (0xdd2, 0xdd4); - (0xdd6, 0xdd6); - (0xdd8, 0xddf); - (0xdf2, 0xdf3); - (0xe31, 0xe31); - (0xe34, 0xe3a); - (0xe4d, 0xe4d); - (0xeb1, 0xeb1); - (0xeb4, 0xeb9); - (0xebb, 0xebc); - (0xecd, 0xecd); - (0xf71, 0xf7e); - (0xf7f, 0xf7f); - (0xf80, 0xf81); - (0xf8d, 0xf97); - (0xf99, 0xfbc); - (0x102b, 0x102c); - (0x102d, 0x1030); - (0x1031, 0x1031); - (0x1032, 0x1036); - (0x1038, 0x1038); - (0x103b, 0x103c); - (0x103d, 0x103e); - (0x1056, 0x1057); - (0x1058, 0x1059); - (0x105e, 0x1060); - (0x1062, 0x1064); - (0x1067, 0x106d); - (0x1071, 0x1074); - (0x1082, 0x1082); - (0x1083, 0x1084); - (0x1085, 0x1086); - (0x1087, 0x108c); - (0x108d, 0x108d); - (0x108f, 0x108f); - (0x109a, 0x109c); - (0x109d, 0x109d); - (0x1712, 0x1713); - (0x1732, 0x1733); - (0x1752, 0x1753); - (0x1772, 0x1773); - (0x17b6, 0x17b6); - (0x17b7, 0x17bd); - (0x17be, 0x17c5); - (0x17c6, 0x17c6); - (0x17c7, 0x17c8); - (0x1885, 0x1886); - (0x18a9, 0x18a9); - (0x1920, 0x1922); - (0x1923, 0x1926); - (0x1927, 0x1928); - (0x1929, 0x192b); - (0x1930, 0x1931); - (0x1932, 0x1932); - (0x1933, 0x1938); - (0x1a17, 0x1a18); - (0x1a19, 0x1a1a); - (0x1a1b, 0x1a1b); - (0x1a55, 0x1a55); - (0x1a56, 0x1a56); - (0x1a57, 0x1a57); - (0x1a58, 0x1a5e); - (0x1a61, 0x1a61); - (0x1a62, 0x1a62); - (0x1a63, 0x1a64); - (0x1a65, 0x1a6c); - (0x1a6d, 0x1a72); - (0x1a73, 0x1a74); - (0x1abf, 0x1ac0); - (0x1acc, 0x1ace); - (0x1b00, 0x1b03); - (0x1b04, 0x1b04); - (0x1b35, 0x1b35); - (0x1b36, 0x1b3a); - (0x1b3b, 0x1b3b); - (0x1b3c, 0x1b3c); - (0x1b3d, 0x1b41); - (0x1b42, 0x1b42); - (0x1b43, 0x1b43); - (0x1b80, 0x1b81); - (0x1b82, 0x1b82); - (0x1ba1, 0x1ba1); - (0x1ba2, 0x1ba5); - (0x1ba6, 0x1ba7); - (0x1ba8, 0x1ba9); - (0x1bac, 0x1bad); - (0x1be7, 0x1be7); - (0x1be8, 0x1be9); - (0x1bea, 0x1bec); - (0x1bed, 0x1bed); - (0x1bee, 0x1bee); - (0x1bef, 0x1bf1); - (0x1c24, 0x1c2b); - (0x1c2c, 0x1c33); - (0x1c34, 0x1c35); - (0x1c36, 0x1c36); - (0x1de7, 0x1df4); - (0x24b6, 0x24e9); - (0x2de0, 0x2dff); - (0xa674, 0xa67b); - (0xa69e, 0xa69f); - (0xa802, 0xa802); - (0xa80b, 0xa80b); - (0xa823, 0xa824); - (0xa825, 0xa826); - (0xa827, 0xa827); - (0xa880, 0xa881); - (0xa8b4, 0xa8c3); - (0xa8c5, 0xa8c5); - (0xa8ff, 0xa8ff); - (0xa926, 0xa92a); - (0xa947, 0xa951); - (0xa952, 0xa952); - (0xa980, 0xa982); - (0xa983, 0xa983); - (0xa9b4, 0xa9b5); - (0xa9b6, 0xa9b9); - (0xa9ba, 0xa9bb); - (0xa9bc, 0xa9bd); - (0xa9be, 0xa9bf); - (0xa9e5, 0xa9e5); - (0xaa29, 0xaa2e); - (0xaa2f, 0xaa30); - (0xaa31, 0xaa32); - (0xaa33, 0xaa34); - (0xaa35, 0xaa36); - (0xaa43, 0xaa43); - (0xaa4c, 0xaa4c); - (0xaa4d, 0xaa4d); - (0xaa7b, 0xaa7b); - (0xaa7c, 0xaa7c); - (0xaa7d, 0xaa7d); - (0xaab0, 0xaab0); - (0xaab2, 0xaab4); - (0xaab7, 0xaab8); - (0xaabe, 0xaabe); - (0xaaeb, 0xaaeb); - (0xaaec, 0xaaed); - (0xaaee, 0xaaef); - (0xaaf5, 0xaaf5); - (0xabe3, 0xabe4); - (0xabe5, 0xabe5); - (0xabe6, 0xabe7); - (0xabe8, 0xabe8); - (0xabe9, 0xabea); - (0xfb1e, 0xfb1e); - (0x10376, 0x1037a); - (0x10a01, 0x10a03); - (0x10a05, 0x10a06); - (0x10a0c, 0x10a0f); - (0x10d24, 0x10d27); - (0x10eab, 0x10eac); - (0x11000, 0x11000); - (0x11001, 0x11001); - (0x11002, 0x11002); - (0x11038, 0x11045); - (0x11073, 0x11074); - (0x11082, 0x11082); - (0x110b0, 0x110b2); - (0x110b3, 0x110b6); - (0x110b7, 0x110b8); - (0x110c2, 0x110c2); - (0x11100, 0x11102); - (0x11127, 0x1112b); - (0x1112c, 0x1112c); - (0x1112d, 0x11132); - (0x11145, 0x11146); - (0x11180, 0x11181); - (0x11182, 0x11182); - (0x111b3, 0x111b5); - (0x111b6, 0x111be); - (0x111bf, 0x111bf); - (0x111ce, 0x111ce); - (0x111cf, 0x111cf); - (0x1122c, 0x1122e); - (0x1122f, 0x11231); - (0x11232, 0x11233); - (0x11234, 0x11234); - (0x11237, 0x11237); - (0x1123e, 0x1123e); - (0x112df, 0x112df); - (0x112e0, 0x112e2); - (0x112e3, 0x112e8); - (0x11300, 0x11301); - (0x11302, 0x11303); - (0x1133e, 0x1133f); - (0x11340, 0x11340); - (0x11341, 0x11344); - (0x11347, 0x11348); - (0x1134b, 0x1134c); - (0x11357, 0x11357); - (0x11362, 0x11363); - (0x11435, 0x11437); - (0x11438, 0x1143f); - (0x11440, 0x11441); - (0x11443, 0x11444); - (0x11445, 0x11445); - (0x114b0, 0x114b2); - (0x114b3, 0x114b8); - (0x114b9, 0x114b9); - (0x114ba, 0x114ba); - (0x114bb, 0x114be); - (0x114bf, 0x114c0); - (0x114c1, 0x114c1); - (0x115af, 0x115b1); - (0x115b2, 0x115b5); - (0x115b8, 0x115bb); - (0x115bc, 0x115bd); - (0x115be, 0x115be); - (0x115dc, 0x115dd); - (0x11630, 0x11632); - (0x11633, 0x1163a); - (0x1163b, 0x1163c); - (0x1163d, 0x1163d); - (0x1163e, 0x1163e); - (0x11640, 0x11640); - (0x116ab, 0x116ab); - (0x116ac, 0x116ac); - (0x116ad, 0x116ad); - (0x116ae, 0x116af); - (0x116b0, 0x116b5); - (0x1171d, 0x1171f); - (0x11720, 0x11721); - (0x11722, 0x11725); - (0x11726, 0x11726); - (0x11727, 0x1172a); - (0x1182c, 0x1182e); - (0x1182f, 0x11837); - (0x11838, 0x11838); - (0x11930, 0x11935); - (0x11937, 0x11938); - (0x1193b, 0x1193c); - (0x11940, 0x11940); - (0x11942, 0x11942); - (0x119d1, 0x119d3); - (0x119d4, 0x119d7); - (0x119da, 0x119db); - (0x119dc, 0x119df); - (0x119e4, 0x119e4); - (0x11a01, 0x11a0a); - (0x11a35, 0x11a38); - (0x11a39, 0x11a39); - (0x11a3b, 0x11a3e); - (0x11a51, 0x11a56); - (0x11a57, 0x11a58); - (0x11a59, 0x11a5b); - (0x11a8a, 0x11a96); - (0x11a97, 0x11a97); - (0x11c2f, 0x11c2f); - (0x11c30, 0x11c36); - (0x11c38, 0x11c3d); - (0x11c3e, 0x11c3e); - (0x11c92, 0x11ca7); - (0x11ca9, 0x11ca9); - (0x11caa, 0x11cb0); - (0x11cb1, 0x11cb1); - (0x11cb2, 0x11cb3); - (0x11cb4, 0x11cb4); - (0x11cb5, 0x11cb6); - (0x11d31, 0x11d36); - (0x11d3a, 0x11d3a); - (0x11d3c, 0x11d3d); - (0x11d3f, 0x11d41); - (0x11d43, 0x11d43); - (0x11d47, 0x11d47); - (0x11d8a, 0x11d8e); - (0x11d90, 0x11d91); - (0x11d93, 0x11d94); - (0x11d95, 0x11d95); - (0x11d96, 0x11d96); - (0x11ef3, 0x11ef4); - (0x11ef5, 0x11ef6); - (0x16f4f, 0x16f4f); - (0x16f51, 0x16f87); - (0x16f8f, 0x16f92); - (0x16ff0, 0x16ff1); - (0x1bc9e, 0x1bc9e); - (0x1e000, 0x1e006); - (0x1e008, 0x1e018); - (0x1e01b, 0x1e021); - (0x1e023, 0x1e024); - (0x1e026, 0x1e02a); - (0x1e947, 0x1e947); - (0x1f170, 0x1f189); - (0x1f150, 0x1f169); - (0x1f130, 0x1f149); - ] + [0x345, 0x345; 0x5b0, 0x5bd; 0x5bf, 0x5bf; 0x5c1, 0x5c2; 0x5c4, 0x5c5; + 0x5c7, 0x5c7; 0x610, 0x61a; 0x64b, 0x657; 0x659, 0x65f; 0x670, 0x670; + 0x6d6, 0x6dc; 0x6e1, 0x6e4; 0x6e7, 0x6e8; 0x6ed, 0x6ed; 0x711, 0x711; + 0x730, 0x73f; 0x7a6, 0x7b0; 0x816, 0x817; 0x81b, 0x823; 0x825, 0x827; + 0x829, 0x82c; 0x8d4, 0x8df; 0x8e3, 0x8e9; 0x8f0, 0x902; 0x903, 0x903; + 0x93a, 0x93a; 0x93b, 0x93b; 0x93e, 0x940; 0x941, 0x948; 0x949, 0x94c; + 0x94e, 0x94f; 0x955, 0x957; 0x962, 0x963; 0x981, 0x981; 0x982, 0x983; + 0x9be, 0x9c0; 0x9c1, 0x9c4; 0x9c7, 0x9c8; 0x9cb, 0x9cc; 0x9d7, 0x9d7; + 0x9e2, 0x9e3; 0xa01, 0xa02; 0xa03, 0xa03; 0xa3e, 0xa40; 0xa41, 0xa42; + 0xa47, 0xa48; 0xa4b, 0xa4c; 0xa51, 0xa51; 0xa70, 0xa71; 0xa75, 0xa75; + 0xa81, 0xa82; 0xa83, 0xa83; 0xabe, 0xac0; 0xac1, 0xac5; 0xac7, 0xac8; + 0xac9, 0xac9; 0xacb, 0xacc; 0xae2, 0xae3; 0xafa, 0xafc; 0xb01, 0xb01; + 0xb02, 0xb03; 0xb3e, 0xb3e; 0xb3f, 0xb3f; 0xb40, 0xb40; 0xb41, 0xb44; + 0xb47, 0xb48; 0xb4b, 0xb4c; 0xb56, 0xb56; 0xb57, 0xb57; 0xb62, 0xb63; + 0xb82, 0xb82; 0xbbe, 0xbbf; 0xbc0, 0xbc0; 0xbc1, 0xbc2; 0xbc6, 0xbc8; + 0xbca, 0xbcc; 0xbd7, 0xbd7; 0xc00, 0xc00; 0xc01, 0xc03; 0xc3e, 0xc40; + 0xc41, 0xc44; 0xc46, 0xc48; 0xc4a, 0xc4c; 0xc55, 0xc56; 0xc62, 0xc63; + 0xc81, 0xc81; 0xc82, 0xc83; 0xcbe, 0xcbe; 0xcbf, 0xcbf; 0xcc0, 0xcc4; + 0xcc6, 0xcc6; 0xcc7, 0xcc8; 0xcca, 0xccb; 0xccc, 0xccc; 0xcd5, 0xcd6; + 0xce2, 0xce3; 0xd00, 0xd01; 0xd02, 0xd03; 0xd3e, 0xd40; 0xd41, 0xd44; + 0xd46, 0xd48; 0xd4a, 0xd4c; 0xd57, 0xd57; 0xd62, 0xd63; 0xd81, 0xd81; + 0xd82, 0xd83; 0xdcf, 0xdd1; 0xdd2, 0xdd4; 0xdd6, 0xdd6; 0xdd8, 0xddf; + 0xdf2, 0xdf3; 0xe31, 0xe31; 0xe34, 0xe3a; 0xe4d, 0xe4d; 0xeb1, 0xeb1; + 0xeb4, 0xeb9; 0xebb, 0xebc; 0xecd, 0xecd; 0xf71, 0xf7e; 0xf7f, 0xf7f; + 0xf80, 0xf81; 0xf8d, 0xf97; 0xf99, 0xfbc; 0x102b, 0x102c; 0x102d, 0x1030; + 0x1031, 0x1031; 0x1032, 0x1036; 0x1038, 0x1038; 0x103b, 0x103c; 0x103d, 0x103e; + 0x1056, 0x1057; 0x1058, 0x1059; 0x105e, 0x1060; 0x1062, 0x1064; 0x1067, 0x106d; + 0x1071, 0x1074; 0x1082, 0x1082; 0x1083, 0x1084; 0x1085, 0x1086; 0x1087, 0x108c; + 0x108d, 0x108d; 0x108f, 0x108f; 0x109a, 0x109c; 0x109d, 0x109d; 0x1712, 0x1713; + 0x1732, 0x1733; 0x1752, 0x1753; 0x1772, 0x1773; 0x17b6, 0x17b6; 0x17b7, 0x17bd; + 0x17be, 0x17c5; 0x17c6, 0x17c6; 0x17c7, 0x17c8; 0x1885, 0x1886; 0x18a9, 0x18a9; + 0x1920, 0x1922; 0x1923, 0x1926; 0x1927, 0x1928; 0x1929, 0x192b; 0x1930, 0x1931; + 0x1932, 0x1932; 0x1933, 0x1938; 0x1a17, 0x1a18; 0x1a19, 0x1a1a; 0x1a1b, 0x1a1b; + 0x1a55, 0x1a55; 0x1a56, 0x1a56; 0x1a57, 0x1a57; 0x1a58, 0x1a5e; 0x1a61, 0x1a61; + 0x1a62, 0x1a62; 0x1a63, 0x1a64; 0x1a65, 0x1a6c; 0x1a6d, 0x1a72; 0x1a73, 0x1a74; + 0x1abf, 0x1ac0; 0x1acc, 0x1ace; 0x1b00, 0x1b03; 0x1b04, 0x1b04; 0x1b35, 0x1b35; + 0x1b36, 0x1b3a; 0x1b3b, 0x1b3b; 0x1b3c, 0x1b3c; 0x1b3d, 0x1b41; 0x1b42, 0x1b42; + 0x1b43, 0x1b43; 0x1b80, 0x1b81; 0x1b82, 0x1b82; 0x1ba1, 0x1ba1; 0x1ba2, 0x1ba5; + 0x1ba6, 0x1ba7; 0x1ba8, 0x1ba9; 0x1bac, 0x1bad; 0x1be7, 0x1be7; 0x1be8, 0x1be9; + 0x1bea, 0x1bec; 0x1bed, 0x1bed; 0x1bee, 0x1bee; 0x1bef, 0x1bf1; 0x1c24, 0x1c2b; + 0x1c2c, 0x1c33; 0x1c34, 0x1c35; 0x1c36, 0x1c36; 0x1de7, 0x1df4; 0x24b6, 0x24e9; + 0x2de0, 0x2dff; 0xa674, 0xa67b; 0xa69e, 0xa69f; 0xa802, 0xa802; 0xa80b, 0xa80b; + 0xa823, 0xa824; 0xa825, 0xa826; 0xa827, 0xa827; 0xa880, 0xa881; 0xa8b4, 0xa8c3; + 0xa8c5, 0xa8c5; 0xa8ff, 0xa8ff; 0xa926, 0xa92a; 0xa947, 0xa951; 0xa952, 0xa952; + 0xa980, 0xa982; 0xa983, 0xa983; 0xa9b4, 0xa9b5; 0xa9b6, 0xa9b9; 0xa9ba, 0xa9bb; + 0xa9bc, 0xa9bd; 0xa9be, 0xa9bf; 0xa9e5, 0xa9e5; 0xaa29, 0xaa2e; 0xaa2f, 0xaa30; + 0xaa31, 0xaa32; 0xaa33, 0xaa34; 0xaa35, 0xaa36; 0xaa43, 0xaa43; 0xaa4c, 0xaa4c; + 0xaa4d, 0xaa4d; 0xaa7b, 0xaa7b; 0xaa7c, 0xaa7c; 0xaa7d, 0xaa7d; 0xaab0, 0xaab0; + 0xaab2, 0xaab4; 0xaab7, 0xaab8; 0xaabe, 0xaabe; 0xaaeb, 0xaaeb; 0xaaec, 0xaaed; + 0xaaee, 0xaaef; 0xaaf5, 0xaaf5; 0xabe3, 0xabe4; 0xabe5, 0xabe5; 0xabe6, 0xabe7; + 0xabe8, 0xabe8; 0xabe9, 0xabea; 0xfb1e, 0xfb1e; 0x10376, 0x1037a; 0x10a01, 0x10a03; + 0x10a05, 0x10a06; 0x10a0c, 0x10a0f; 0x10d24, 0x10d27; 0x10eab, 0x10eac; 0x11000, 0x11000; + 0x11001, 0x11001; 0x11002, 0x11002; 0x11038, 0x11045; 0x11073, 0x11074; 0x11082, 0x11082; + 0x110b0, 0x110b2; 0x110b3, 0x110b6; 0x110b7, 0x110b8; 0x110c2, 0x110c2; 0x11100, 0x11102; + 0x11127, 0x1112b; 0x1112c, 0x1112c; 0x1112d, 0x11132; 0x11145, 0x11146; 0x11180, 0x11181; + 0x11182, 0x11182; 0x111b3, 0x111b5; 0x111b6, 0x111be; 0x111bf, 0x111bf; 0x111ce, 0x111ce; + 0x111cf, 0x111cf; 0x1122c, 0x1122e; 0x1122f, 0x11231; 0x11232, 0x11233; 0x11234, 0x11234; + 0x11237, 0x11237; 0x1123e, 0x1123e; 0x112df, 0x112df; 0x112e0, 0x112e2; 0x112e3, 0x112e8; + 0x11300, 0x11301; 0x11302, 0x11303; 0x1133e, 0x1133f; 0x11340, 0x11340; 0x11341, 0x11344; + 0x11347, 0x11348; 0x1134b, 0x1134c; 0x11357, 0x11357; 0x11362, 0x11363; 0x11435, 0x11437; + 0x11438, 0x1143f; 0x11440, 0x11441; 0x11443, 0x11444; 0x11445, 0x11445; 0x114b0, 0x114b2; + 0x114b3, 0x114b8; 0x114b9, 0x114b9; 0x114ba, 0x114ba; 0x114bb, 0x114be; 0x114bf, 0x114c0; + 0x114c1, 0x114c1; 0x115af, 0x115b1; 0x115b2, 0x115b5; 0x115b8, 0x115bb; 0x115bc, 0x115bd; + 0x115be, 0x115be; 0x115dc, 0x115dd; 0x11630, 0x11632; 0x11633, 0x1163a; 0x1163b, 0x1163c; + 0x1163d, 0x1163d; 0x1163e, 0x1163e; 0x11640, 0x11640; 0x116ab, 0x116ab; 0x116ac, 0x116ac; + 0x116ad, 0x116ad; 0x116ae, 0x116af; 0x116b0, 0x116b5; 0x1171d, 0x1171f; 0x11720, 0x11721; + 0x11722, 0x11725; 0x11726, 0x11726; 0x11727, 0x1172a; 0x1182c, 0x1182e; 0x1182f, 0x11837; + 0x11838, 0x11838; 0x11930, 0x11935; 0x11937, 0x11938; 0x1193b, 0x1193c; 0x11940, 0x11940; + 0x11942, 0x11942; 0x119d1, 0x119d3; 0x119d4, 0x119d7; 0x119da, 0x119db; 0x119dc, 0x119df; + 0x119e4, 0x119e4; 0x11a01, 0x11a0a; 0x11a35, 0x11a38; 0x11a39, 0x11a39; 0x11a3b, 0x11a3e; + 0x11a51, 0x11a56; 0x11a57, 0x11a58; 0x11a59, 0x11a5b; 0x11a8a, 0x11a96; 0x11a97, 0x11a97; + 0x11c2f, 0x11c2f; 0x11c30, 0x11c36; 0x11c38, 0x11c3d; 0x11c3e, 0x11c3e; 0x11c92, 0x11ca7; + 0x11ca9, 0x11ca9; 0x11caa, 0x11cb0; 0x11cb1, 0x11cb1; 0x11cb2, 0x11cb3; 0x11cb4, 0x11cb4; + 0x11cb5, 0x11cb6; 0x11d31, 0x11d36; 0x11d3a, 0x11d3a; 0x11d3c, 0x11d3d; 0x11d3f, 0x11d41; + 0x11d43, 0x11d43; 0x11d47, 0x11d47; 0x11d8a, 0x11d8e; 0x11d90, 0x11d91; 0x11d93, 0x11d94; + 0x11d95, 0x11d95; 0x11d96, 0x11d96; 0x11ef3, 0x11ef4; 0x11ef5, 0x11ef6; 0x16f4f, 0x16f4f; + 0x16f51, 0x16f87; 0x16f8f, 0x16f92; 0x16ff0, 0x16ff1; 0x1bc9e, 0x1bc9e; 0x1e000, 0x1e006; + 0x1e008, 0x1e018; 0x1e01b, 0x1e021; 0x1e023, 0x1e024; 0x1e026, 0x1e02a; 0x1e947, 0x1e947; + 0x1f170, 0x1f189; 0x1f150, 0x1f169; 0x1f130, 0x1f149] let other_lowercase = - [ - (0xaa, 0xaa); - (0xba, 0xba); - (0x2b0, 0x2b8); - (0x2c0, 0x2c1); - (0x2e0, 0x2e4); - (0x345, 0x345); - (0x37a, 0x37a); - (0x1d2c, 0x1d6a); - (0x1d78, 0x1d78); - (0x1d9b, 0x1dbf); - (0x2071, 0x2071); - (0x207f, 0x207f); - (0x2090, 0x209c); - (0x2170, 0x217f); - (0x24d0, 0x24e9); - (0x2c7c, 0x2c7d); - (0xa69c, 0xa69d); - (0xa770, 0xa770); - (0xa7f8, 0xa7f9); - (0xab5c, 0xab5f); - (0x107b2, 0x107ba); - (0x10787, 0x107b0); - (0x10783, 0x10785); - (0x10780, 0x10780); - ] + [0xaa, 0xaa; 0xba, 0xba; 0x2b0, 0x2b8; 0x2c0, 0x2c1; 0x2e0, 0x2e4; + 0x345, 0x345; 0x37a, 0x37a; 0x1d2c, 0x1d6a; 0x1d78, 0x1d78; 0x1d9b, 0x1dbf; + 0x2071, 0x2071; 0x207f, 0x207f; 0x2090, 0x209c; 0x2170, 0x217f; 0x24d0, 0x24e9; + 0x2c7c, 0x2c7d; 0xa69c, 0xa69d; 0xa770, 0xa770; 0xa7f8, 0xa7f9; 0xab5c, 0xab5f; + 0x107b2, 0x107ba; 0x10787, 0x107b0; 0x10783, 0x10785; 0x10780, 0x10780] let other_math = - [ - (0x5e, 0x5e); - (0x3d0, 0x3d2); - (0x3d5, 0x3d5); - (0x3f0, 0x3f1); - (0x3f4, 0x3f5); - (0x2016, 0x2016); - (0x2032, 0x2034); - (0x2040, 0x2040); - (0x2061, 0x2064); - (0x207d, 0x207d); - (0x207e, 0x207e); - (0x208d, 0x208d); - (0x208e, 0x208e); - (0x20d0, 0x20dc); - (0x20e1, 0x20e1); - (0x20e5, 0x20e6); - (0x20eb, 0x20ef); - (0x2102, 0x2102); - (0x2107, 0x2107); - (0x210a, 0x2113); - (0x2115, 0x2115); - (0x2119, 0x211d); - (0x2124, 0x2124); - (0x2128, 0x2128); - (0x2129, 0x2129); - (0x212c, 0x212d); - (0x212f, 0x2131); - (0x2133, 0x2134); - (0x2135, 0x2138); - (0x213c, 0x213f); - (0x2145, 0x2149); - (0x2195, 0x2199); - (0x219c, 0x219f); - (0x21a1, 0x21a2); - (0x21a4, 0x21a5); - (0x21a7, 0x21a7); - (0x21a9, 0x21ad); - (0x21b0, 0x21b1); - (0x21b6, 0x21b7); - (0x21bc, 0x21cd); - (0x21d0, 0x21d1); - (0x21d3, 0x21d3); - (0x21d5, 0x21db); - (0x21dd, 0x21dd); - (0x21e4, 0x21e5); - (0x2308, 0x2308); - (0x2309, 0x2309); - (0x230a, 0x230a); - (0x230b, 0x230b); - (0x23b4, 0x23b5); - (0x23b7, 0x23b7); - (0x23d0, 0x23d0); - (0x23e2, 0x23e2); - (0x25a0, 0x25a1); - (0x25ae, 0x25b6); - (0x25bc, 0x25c0); - (0x25c6, 0x25c7); - (0x25ca, 0x25cb); - (0x25cf, 0x25d3); - (0x25e2, 0x25e2); - (0x25e4, 0x25e4); - (0x25e7, 0x25ec); - (0x2605, 0x2606); - (0x2640, 0x2640); - (0x2642, 0x2642); - (0x2660, 0x2663); - (0x266d, 0x266e); - (0x27c5, 0x27c5); - (0x27c6, 0x27c6); - (0x27e6, 0x27e6); - (0x27e7, 0x27e7); - (0x27e8, 0x27e8); - (0x27e9, 0x27e9); - (0x27ea, 0x27ea); - (0x27eb, 0x27eb); - (0x27ec, 0x27ec); - (0x27ed, 0x27ed); - (0x27ee, 0x27ee); - (0x27ef, 0x27ef); - (0x2983, 0x2983); - (0x2984, 0x2984); - (0x2985, 0x2985); - (0x2986, 0x2986); - (0x2987, 0x2987); - (0x2988, 0x2988); - (0x2989, 0x2989); - (0x298a, 0x298a); - (0x298b, 0x298b); - (0x298c, 0x298c); - (0x298d, 0x298d); - (0x298e, 0x298e); - (0x298f, 0x298f); - (0x2990, 0x2990); - (0x2991, 0x2991); - (0x2992, 0x2992); - (0x2993, 0x2993); - (0x2994, 0x2994); - (0x2995, 0x2995); - (0x2996, 0x2996); - (0x2997, 0x2997); - (0x2998, 0x2998); - (0x29d8, 0x29d8); - (0x29d9, 0x29d9); - (0x29da, 0x29da); - (0x29db, 0x29db); - (0x29fc, 0x29fc); - (0x29fd, 0x29fd); - (0xfe61, 0xfe61); - (0xfe63, 0xfe63); - (0xfe68, 0xfe68); - (0xff3c, 0xff3c); - (0xff3e, 0xff3e); - (0x1d400, 0x1d454); - (0x1d456, 0x1d49c); - (0x1d49e, 0x1d49f); - (0x1d4a2, 0x1d4a2); - (0x1d4a5, 0x1d4a6); - (0x1d4a9, 0x1d4ac); - (0x1d4ae, 0x1d4b9); - (0x1d4bb, 0x1d4bb); - (0x1d4bd, 0x1d4c3); - (0x1d4c5, 0x1d505); - (0x1d507, 0x1d50a); - (0x1d50d, 0x1d514); - (0x1d516, 0x1d51c); - (0x1d51e, 0x1d539); - (0x1d53b, 0x1d53e); - (0x1d540, 0x1d544); - (0x1d546, 0x1d546); - (0x1d54a, 0x1d550); - (0x1d552, 0x1d6a5); - (0x1d6a8, 0x1d6c0); - (0x1d6c2, 0x1d6da); - (0x1d6dc, 0x1d6fa); - (0x1d6fc, 0x1d714); - (0x1d716, 0x1d734); - (0x1d736, 0x1d74e); - (0x1d750, 0x1d76e); - (0x1d770, 0x1d788); - (0x1d78a, 0x1d7a8); - (0x1d7aa, 0x1d7c2); - (0x1d7c4, 0x1d7cb); - (0x1d7ce, 0x1d7ff); - (0x1ee00, 0x1ee03); - (0x1ee05, 0x1ee1f); - (0x1ee21, 0x1ee22); - (0x1ee24, 0x1ee24); - (0x1ee27, 0x1ee27); - (0x1ee29, 0x1ee32); - (0x1ee34, 0x1ee37); - (0x1ee39, 0x1ee39); - (0x1ee3b, 0x1ee3b); - (0x1ee42, 0x1ee42); - (0x1ee47, 0x1ee47); - (0x1ee49, 0x1ee49); - (0x1ee4b, 0x1ee4b); - (0x1ee4d, 0x1ee4f); - (0x1ee51, 0x1ee52); - (0x1ee54, 0x1ee54); - (0x1ee57, 0x1ee57); - (0x1ee59, 0x1ee59); - (0x1ee5b, 0x1ee5b); - (0x1ee5d, 0x1ee5d); - (0x1ee5f, 0x1ee5f); - (0x1ee61, 0x1ee62); - (0x1ee64, 0x1ee64); - (0x1ee67, 0x1ee6a); - (0x1ee6c, 0x1ee72); - (0x1ee74, 0x1ee77); - (0x1ee79, 0x1ee7c); - (0x1ee7e, 0x1ee7e); - (0x1ee80, 0x1ee89); - (0x1ee8b, 0x1ee9b); - (0x1eea1, 0x1eea3); - (0x1eea5, 0x1eea9); - (0x1eeab, 0x1eebb); - ] + [0x5e, 0x5e; 0x3d0, 0x3d2; 0x3d5, 0x3d5; 0x3f0, 0x3f1; 0x3f4, 0x3f5; + 0x2016, 0x2016; 0x2032, 0x2034; 0x2040, 0x2040; 0x2061, 0x2064; 0x207d, 0x207d; + 0x207e, 0x207e; 0x208d, 0x208d; 0x208e, 0x208e; 0x20d0, 0x20dc; 0x20e1, 0x20e1; + 0x20e5, 0x20e6; 0x20eb, 0x20ef; 0x2102, 0x2102; 0x2107, 0x2107; 0x210a, 0x2113; + 0x2115, 0x2115; 0x2119, 0x211d; 0x2124, 0x2124; 0x2128, 0x2128; 0x2129, 0x2129; + 0x212c, 0x212d; 0x212f, 0x2131; 0x2133, 0x2134; 0x2135, 0x2138; 0x213c, 0x213f; + 0x2145, 0x2149; 0x2195, 0x2199; 0x219c, 0x219f; 0x21a1, 0x21a2; 0x21a4, 0x21a5; + 0x21a7, 0x21a7; 0x21a9, 0x21ad; 0x21b0, 0x21b1; 0x21b6, 0x21b7; 0x21bc, 0x21cd; + 0x21d0, 0x21d1; 0x21d3, 0x21d3; 0x21d5, 0x21db; 0x21dd, 0x21dd; 0x21e4, 0x21e5; + 0x2308, 0x2308; 0x2309, 0x2309; 0x230a, 0x230a; 0x230b, 0x230b; 0x23b4, 0x23b5; + 0x23b7, 0x23b7; 0x23d0, 0x23d0; 0x23e2, 0x23e2; 0x25a0, 0x25a1; 0x25ae, 0x25b6; + 0x25bc, 0x25c0; 0x25c6, 0x25c7; 0x25ca, 0x25cb; 0x25cf, 0x25d3; 0x25e2, 0x25e2; + 0x25e4, 0x25e4; 0x25e7, 0x25ec; 0x2605, 0x2606; 0x2640, 0x2640; 0x2642, 0x2642; + 0x2660, 0x2663; 0x266d, 0x266e; 0x27c5, 0x27c5; 0x27c6, 0x27c6; 0x27e6, 0x27e6; + 0x27e7, 0x27e7; 0x27e8, 0x27e8; 0x27e9, 0x27e9; 0x27ea, 0x27ea; 0x27eb, 0x27eb; + 0x27ec, 0x27ec; 0x27ed, 0x27ed; 0x27ee, 0x27ee; 0x27ef, 0x27ef; 0x2983, 0x2983; + 0x2984, 0x2984; 0x2985, 0x2985; 0x2986, 0x2986; 0x2987, 0x2987; 0x2988, 0x2988; + 0x2989, 0x2989; 0x298a, 0x298a; 0x298b, 0x298b; 0x298c, 0x298c; 0x298d, 0x298d; + 0x298e, 0x298e; 0x298f, 0x298f; 0x2990, 0x2990; 0x2991, 0x2991; 0x2992, 0x2992; + 0x2993, 0x2993; 0x2994, 0x2994; 0x2995, 0x2995; 0x2996, 0x2996; 0x2997, 0x2997; + 0x2998, 0x2998; 0x29d8, 0x29d8; 0x29d9, 0x29d9; 0x29da, 0x29da; 0x29db, 0x29db; + 0x29fc, 0x29fc; 0x29fd, 0x29fd; 0xfe61, 0xfe61; 0xfe63, 0xfe63; 0xfe68, 0xfe68; + 0xff3c, 0xff3c; 0xff3e, 0xff3e; 0x1d400, 0x1d454; 0x1d456, 0x1d49c; 0x1d49e, 0x1d49f; + 0x1d4a2, 0x1d4a2; 0x1d4a5, 0x1d4a6; 0x1d4a9, 0x1d4ac; 0x1d4ae, 0x1d4b9; 0x1d4bb, 0x1d4bb; + 0x1d4bd, 0x1d4c3; 0x1d4c5, 0x1d505; 0x1d507, 0x1d50a; 0x1d50d, 0x1d514; 0x1d516, 0x1d51c; + 0x1d51e, 0x1d539; 0x1d53b, 0x1d53e; 0x1d540, 0x1d544; 0x1d546, 0x1d546; 0x1d54a, 0x1d550; + 0x1d552, 0x1d6a5; 0x1d6a8, 0x1d6c0; 0x1d6c2, 0x1d6da; 0x1d6dc, 0x1d6fa; 0x1d6fc, 0x1d714; + 0x1d716, 0x1d734; 0x1d736, 0x1d74e; 0x1d750, 0x1d76e; 0x1d770, 0x1d788; 0x1d78a, 0x1d7a8; + 0x1d7aa, 0x1d7c2; 0x1d7c4, 0x1d7cb; 0x1d7ce, 0x1d7ff; 0x1ee00, 0x1ee03; 0x1ee05, 0x1ee1f; + 0x1ee21, 0x1ee22; 0x1ee24, 0x1ee24; 0x1ee27, 0x1ee27; 0x1ee29, 0x1ee32; 0x1ee34, 0x1ee37; + 0x1ee39, 0x1ee39; 0x1ee3b, 0x1ee3b; 0x1ee42, 0x1ee42; 0x1ee47, 0x1ee47; 0x1ee49, 0x1ee49; + 0x1ee4b, 0x1ee4b; 0x1ee4d, 0x1ee4f; 0x1ee51, 0x1ee52; 0x1ee54, 0x1ee54; 0x1ee57, 0x1ee57; + 0x1ee59, 0x1ee59; 0x1ee5b, 0x1ee5b; 0x1ee5d, 0x1ee5d; 0x1ee5f, 0x1ee5f; 0x1ee61, 0x1ee62; + 0x1ee64, 0x1ee64; 0x1ee67, 0x1ee6a; 0x1ee6c, 0x1ee72; 0x1ee74, 0x1ee77; 0x1ee79, 0x1ee7c; + 0x1ee7e, 0x1ee7e; 0x1ee80, 0x1ee89; 0x1ee8b, 0x1ee9b; 0x1eea1, 0x1eea3; 0x1eea5, 0x1eea9; + 0x1eeab, 0x1eebb] let other_uppercase = - [ - (0x1f170, 0x1f189); - (0x1f150, 0x1f169); - (0x1f130, 0x1f149); - (0x24b6, 0x24cf); - (0x2160, 0x216f); - ] + [0x1f170, 0x1f189; 0x1f150, 0x1f169; 0x1f130, 0x1f149; 0x24b6, 0x24cf; 0x2160, 0x216f] let uppercase = - [ - (0x41, 0x5a); - (0xc0, 0xd6); - (0xd8, 0xde); - (0x100, 0x100); - (0x102, 0x102); - (0x104, 0x104); - (0x106, 0x106); - (0x108, 0x108); - (0x10a, 0x10a); - (0x10c, 0x10c); - (0x10e, 0x10e); - (0x110, 0x110); - (0x112, 0x112); - (0x114, 0x114); - (0x116, 0x116); - (0x118, 0x118); - (0x11a, 0x11a); - (0x11c, 0x11c); - (0x11e, 0x11e); - (0x120, 0x120); - (0x122, 0x122); - (0x124, 0x124); - (0x126, 0x126); - (0x128, 0x128); - (0x12a, 0x12a); - (0x12c, 0x12c); - (0x12e, 0x12e); - (0x130, 0x130); - (0x132, 0x132); - (0x134, 0x134); - (0x136, 0x136); - (0x139, 0x139); - (0x13b, 0x13b); - (0x13d, 0x13d); - (0x13f, 0x13f); - (0x141, 0x141); - (0x143, 0x143); - (0x145, 0x145); - (0x147, 0x147); - (0x14a, 0x14a); - (0x14c, 0x14c); - (0x14e, 0x14e); - (0x150, 0x150); - (0x152, 0x152); - (0x154, 0x154); - (0x156, 0x156); - (0x158, 0x158); - (0x15a, 0x15a); - (0x15c, 0x15c); - (0x15e, 0x15e); - (0x160, 0x160); - (0x162, 0x162); - (0x164, 0x164); - (0x166, 0x166); - (0x168, 0x168); - (0x16a, 0x16a); - (0x16c, 0x16c); - (0x16e, 0x16e); - (0x170, 0x170); - (0x172, 0x172); - (0x174, 0x174); - (0x176, 0x176); - (0x178, 0x179); - (0x17b, 0x17b); - (0x17d, 0x17d); - (0x181, 0x182); - (0x184, 0x184); - (0x186, 0x187); - (0x189, 0x18b); - (0x18e, 0x191); - (0x193, 0x194); - (0x196, 0x198); - (0x19c, 0x19d); - (0x19f, 0x1a0); - (0x1a2, 0x1a2); - (0x1a4, 0x1a4); - (0x1a6, 0x1a7); - (0x1a9, 0x1a9); - (0x1ac, 0x1ac); - (0x1ae, 0x1af); - (0x1b1, 0x1b3); - (0x1b5, 0x1b5); - (0x1b7, 0x1b8); - (0x1bc, 0x1bc); - (0x1c4, 0x1c4); - (0x1c7, 0x1c7); - (0x1ca, 0x1ca); - (0x1cd, 0x1cd); - (0x1cf, 0x1cf); - (0x1d1, 0x1d1); - (0x1d3, 0x1d3); - (0x1d5, 0x1d5); - (0x1d7, 0x1d7); - (0x1d9, 0x1d9); - (0x1db, 0x1db); - (0x1de, 0x1de); - (0x1e0, 0x1e0); - (0x1e2, 0x1e2); - (0x1e4, 0x1e4); - (0x1e6, 0x1e6); - (0x1e8, 0x1e8); - (0x1ea, 0x1ea); - (0x1ec, 0x1ec); - (0x1ee, 0x1ee); - (0x1f1, 0x1f1); - (0x1f4, 0x1f4); - (0x1f6, 0x1f8); - (0x1fa, 0x1fa); - (0x1fc, 0x1fc); - (0x1fe, 0x1fe); - (0x200, 0x200); - (0x202, 0x202); - (0x204, 0x204); - (0x206, 0x206); - (0x208, 0x208); - (0x20a, 0x20a); - (0x20c, 0x20c); - (0x20e, 0x20e); - (0x210, 0x210); - (0x212, 0x212); - (0x214, 0x214); - (0x216, 0x216); - (0x218, 0x218); - (0x21a, 0x21a); - (0x21c, 0x21c); - (0x21e, 0x21e); - (0x220, 0x220); - (0x222, 0x222); - (0x224, 0x224); - (0x226, 0x226); - (0x228, 0x228); - (0x22a, 0x22a); - (0x22c, 0x22c); - (0x22e, 0x22e); - (0x230, 0x230); - (0x232, 0x232); - (0x23a, 0x23b); - (0x23d, 0x23e); - (0x241, 0x241); - (0x243, 0x246); - (0x248, 0x248); - (0x24a, 0x24a); - (0x24c, 0x24c); - (0x24e, 0x24e); - (0x370, 0x370); - (0x372, 0x372); - (0x376, 0x376); - (0x37f, 0x37f); - (0x386, 0x386); - (0x388, 0x38a); - (0x38c, 0x38c); - (0x38e, 0x38f); - (0x391, 0x3a1); - (0x3a3, 0x3ab); - (0x3cf, 0x3cf); - (0x3d2, 0x3d4); - (0x3d8, 0x3d8); - (0x3da, 0x3da); - (0x3dc, 0x3dc); - (0x3de, 0x3de); - (0x3e0, 0x3e0); - (0x3e2, 0x3e2); - (0x3e4, 0x3e4); - (0x3e6, 0x3e6); - (0x3e8, 0x3e8); - (0x3ea, 0x3ea); - (0x3ec, 0x3ec); - (0x3ee, 0x3ee); - (0x3f4, 0x3f4); - (0x3f7, 0x3f7); - (0x3f9, 0x3fa); - (0x3fd, 0x42f); - (0x460, 0x460); - (0x462, 0x462); - (0x464, 0x464); - (0x466, 0x466); - (0x468, 0x468); - (0x46a, 0x46a); - (0x46c, 0x46c); - (0x46e, 0x46e); - (0x470, 0x470); - (0x472, 0x472); - (0x474, 0x474); - (0x476, 0x476); - (0x478, 0x478); - (0x47a, 0x47a); - (0x47c, 0x47c); - (0x47e, 0x47e); - (0x480, 0x480); - (0x48a, 0x48a); - (0x48c, 0x48c); - (0x48e, 0x48e); - (0x490, 0x490); - (0x492, 0x492); - (0x494, 0x494); - (0x496, 0x496); - (0x498, 0x498); - (0x49a, 0x49a); - (0x49c, 0x49c); - (0x49e, 0x49e); - (0x4a0, 0x4a0); - (0x4a2, 0x4a2); - (0x4a4, 0x4a4); - (0x4a6, 0x4a6); - (0x4a8, 0x4a8); - (0x4aa, 0x4aa); - (0x4ac, 0x4ac); - (0x4ae, 0x4ae); - (0x4b0, 0x4b0); - (0x4b2, 0x4b2); - (0x4b4, 0x4b4); - (0x4b6, 0x4b6); - (0x4b8, 0x4b8); - (0x4ba, 0x4ba); - (0x4bc, 0x4bc); - (0x4be, 0x4be); - (0x4c0, 0x4c1); - (0x4c3, 0x4c3); - (0x4c5, 0x4c5); - (0x4c7, 0x4c7); - (0x4c9, 0x4c9); - (0x4cb, 0x4cb); - (0x4cd, 0x4cd); - (0x4d0, 0x4d0); - (0x4d2, 0x4d2); - (0x4d4, 0x4d4); - (0x4d6, 0x4d6); - (0x4d8, 0x4d8); - (0x4da, 0x4da); - (0x4dc, 0x4dc); - (0x4de, 0x4de); - (0x4e0, 0x4e0); - (0x4e2, 0x4e2); - (0x4e4, 0x4e4); - (0x4e6, 0x4e6); - (0x4e8, 0x4e8); - (0x4ea, 0x4ea); - (0x4ec, 0x4ec); - (0x4ee, 0x4ee); - (0x4f0, 0x4f0); - (0x4f2, 0x4f2); - (0x4f4, 0x4f4); - (0x4f6, 0x4f6); - (0x4f8, 0x4f8); - (0x4fa, 0x4fa); - (0x4fc, 0x4fc); - (0x4fe, 0x4fe); - (0x500, 0x500); - (0x502, 0x502); - (0x504, 0x504); - (0x506, 0x506); - (0x508, 0x508); - (0x50a, 0x50a); - (0x50c, 0x50c); - (0x50e, 0x50e); - (0x510, 0x510); - (0x512, 0x512); - (0x514, 0x514); - (0x516, 0x516); - (0x518, 0x518); - (0x51a, 0x51a); - (0x51c, 0x51c); - (0x51e, 0x51e); - (0x520, 0x520); - (0x522, 0x522); - (0x524, 0x524); - (0x526, 0x526); - (0x528, 0x528); - (0x52a, 0x52a); - (0x52c, 0x52c); - (0x52e, 0x52e); - (0x531, 0x556); - (0x10a0, 0x10c5); - (0x10c7, 0x10c7); - (0x10cd, 0x10cd); - (0x13a0, 0x13f5); - (0x1c90, 0x1cba); - (0x1cbd, 0x1cbf); - (0x1e00, 0x1e00); - (0x1e02, 0x1e02); - (0x1e04, 0x1e04); - (0x1e06, 0x1e06); - (0x1e08, 0x1e08); - (0x1e0a, 0x1e0a); - (0x1e0c, 0x1e0c); - (0x1e0e, 0x1e0e); - (0x1e10, 0x1e10); - (0x1e12, 0x1e12); - (0x1e14, 0x1e14); - (0x1e16, 0x1e16); - (0x1e18, 0x1e18); - (0x1e1a, 0x1e1a); - (0x1e1c, 0x1e1c); - (0x1e1e, 0x1e1e); - (0x1e20, 0x1e20); - (0x1e22, 0x1e22); - (0x1e24, 0x1e24); - (0x1e26, 0x1e26); - (0x1e28, 0x1e28); - (0x1e2a, 0x1e2a); - (0x1e2c, 0x1e2c); - (0x1e2e, 0x1e2e); - (0x1e30, 0x1e30); - (0x1e32, 0x1e32); - (0x1e34, 0x1e34); - (0x1e36, 0x1e36); - (0x1e38, 0x1e38); - (0x1e3a, 0x1e3a); - (0x1e3c, 0x1e3c); - (0x1e3e, 0x1e3e); - (0x1e40, 0x1e40); - (0x1e42, 0x1e42); - (0x1e44, 0x1e44); - (0x1e46, 0x1e46); - (0x1e48, 0x1e48); - (0x1e4a, 0x1e4a); - (0x1e4c, 0x1e4c); - (0x1e4e, 0x1e4e); - (0x1e50, 0x1e50); - (0x1e52, 0x1e52); - (0x1e54, 0x1e54); - (0x1e56, 0x1e56); - (0x1e58, 0x1e58); - (0x1e5a, 0x1e5a); - (0x1e5c, 0x1e5c); - (0x1e5e, 0x1e5e); - (0x1e60, 0x1e60); - (0x1e62, 0x1e62); - (0x1e64, 0x1e64); - (0x1e66, 0x1e66); - (0x1e68, 0x1e68); - (0x1e6a, 0x1e6a); - (0x1e6c, 0x1e6c); - (0x1e6e, 0x1e6e); - (0x1e70, 0x1e70); - (0x1e72, 0x1e72); - (0x1e74, 0x1e74); - (0x1e76, 0x1e76); - (0x1e78, 0x1e78); - (0x1e7a, 0x1e7a); - (0x1e7c, 0x1e7c); - (0x1e7e, 0x1e7e); - (0x1e80, 0x1e80); - (0x1e82, 0x1e82); - (0x1e84, 0x1e84); - (0x1e86, 0x1e86); - (0x1e88, 0x1e88); - (0x1e8a, 0x1e8a); - (0x1e8c, 0x1e8c); - (0x1e8e, 0x1e8e); - (0x1e90, 0x1e90); - (0x1e92, 0x1e92); - (0x1e94, 0x1e94); - (0x1e9e, 0x1e9e); - (0x1ea0, 0x1ea0); - (0x1ea2, 0x1ea2); - (0x1ea4, 0x1ea4); - (0x1ea6, 0x1ea6); - (0x1ea8, 0x1ea8); - (0x1eaa, 0x1eaa); - (0x1eac, 0x1eac); - (0x1eae, 0x1eae); - (0x1eb0, 0x1eb0); - (0x1eb2, 0x1eb2); - (0x1eb4, 0x1eb4); - (0x1eb6, 0x1eb6); - (0x1eb8, 0x1eb8); - (0x1eba, 0x1eba); - (0x1ebc, 0x1ebc); - (0x1ebe, 0x1ebe); - (0x1ec0, 0x1ec0); - (0x1ec2, 0x1ec2); - (0x1ec4, 0x1ec4); - (0x1ec6, 0x1ec6); - (0x1ec8, 0x1ec8); - (0x1eca, 0x1eca); - (0x1ecc, 0x1ecc); - (0x1ece, 0x1ece); - (0x1ed0, 0x1ed0); - (0x1ed2, 0x1ed2); - (0x1ed4, 0x1ed4); - (0x1ed6, 0x1ed6); - (0x1ed8, 0x1ed8); - (0x1eda, 0x1eda); - (0x1edc, 0x1edc); - (0x1ede, 0x1ede); - (0x1ee0, 0x1ee0); - (0x1ee2, 0x1ee2); - (0x1ee4, 0x1ee4); - (0x1ee6, 0x1ee6); - (0x1ee8, 0x1ee8); - (0x1eea, 0x1eea); - (0x1eec, 0x1eec); - (0x1eee, 0x1eee); - (0x1ef0, 0x1ef0); - (0x1ef2, 0x1ef2); - (0x1ef4, 0x1ef4); - (0x1ef6, 0x1ef6); - (0x1ef8, 0x1ef8); - (0x1efa, 0x1efa); - (0x1efc, 0x1efc); - (0x1efe, 0x1efe); - (0x1f08, 0x1f0f); - (0x1f18, 0x1f1d); - (0x1f28, 0x1f2f); - (0x1f38, 0x1f3f); - (0x1f48, 0x1f4d); - (0x1f59, 0x1f59); - (0x1f5b, 0x1f5b); - (0x1f5d, 0x1f5d); - (0x1f5f, 0x1f5f); - (0x1f68, 0x1f6f); - (0x1fb8, 0x1fbb); - (0x1fc8, 0x1fcb); - (0x1fd8, 0x1fdb); - (0x1fe8, 0x1fec); - (0x1ff8, 0x1ffb); - (0x2102, 0x2102); - (0x2107, 0x2107); - (0x210b, 0x210d); - (0x2110, 0x2112); - (0x2115, 0x2115); - (0x2119, 0x211d); - (0x2124, 0x2124); - (0x2126, 0x2126); - (0x2128, 0x2128); - (0x212a, 0x212d); - (0x2130, 0x2133); - (0x213e, 0x213f); - (0x2145, 0x2145); - (0x2160, 0x216f); - (0x2183, 0x2183); - (0x24b6, 0x24cf); - (0x2c00, 0x2c2f); - (0x2c60, 0x2c60); - (0x2c62, 0x2c64); - (0x2c67, 0x2c67); - (0x2c69, 0x2c69); - (0x2c6b, 0x2c6b); - (0x2c6d, 0x2c70); - (0x2c72, 0x2c72); - (0x2c75, 0x2c75); - (0x2c7e, 0x2c80); - (0x2c82, 0x2c82); - (0x2c84, 0x2c84); - (0x2c86, 0x2c86); - (0x2c88, 0x2c88); - (0x2c8a, 0x2c8a); - (0x2c8c, 0x2c8c); - (0x2c8e, 0x2c8e); - (0x2c90, 0x2c90); - (0x2c92, 0x2c92); - (0x2c94, 0x2c94); - (0x2c96, 0x2c96); - (0x2c98, 0x2c98); - (0x2c9a, 0x2c9a); - (0x2c9c, 0x2c9c); - (0x2c9e, 0x2c9e); - (0x2ca0, 0x2ca0); - (0x2ca2, 0x2ca2); - (0x2ca4, 0x2ca4); - (0x2ca6, 0x2ca6); - (0x2ca8, 0x2ca8); - (0x2caa, 0x2caa); - (0x2cac, 0x2cac); - (0x2cae, 0x2cae); - (0x2cb0, 0x2cb0); - (0x2cb2, 0x2cb2); - (0x2cb4, 0x2cb4); - (0x2cb6, 0x2cb6); - (0x2cb8, 0x2cb8); - (0x2cba, 0x2cba); - (0x2cbc, 0x2cbc); - (0x2cbe, 0x2cbe); - (0x2cc0, 0x2cc0); - (0x2cc2, 0x2cc2); - (0x2cc4, 0x2cc4); - (0x2cc6, 0x2cc6); - (0x2cc8, 0x2cc8); - (0x2cca, 0x2cca); - (0x2ccc, 0x2ccc); - (0x2cce, 0x2cce); - (0x2cd0, 0x2cd0); - (0x2cd2, 0x2cd2); - (0x2cd4, 0x2cd4); - (0x2cd6, 0x2cd6); - (0x2cd8, 0x2cd8); - (0x2cda, 0x2cda); - (0x2cdc, 0x2cdc); - (0x2cde, 0x2cde); - (0x2ce0, 0x2ce0); - (0x2ce2, 0x2ce2); - (0x2ceb, 0x2ceb); - (0x2ced, 0x2ced); - (0x2cf2, 0x2cf2); - (0xa640, 0xa640); - (0xa642, 0xa642); - (0xa644, 0xa644); - (0xa646, 0xa646); - (0xa648, 0xa648); - (0xa64a, 0xa64a); - (0xa64c, 0xa64c); - (0xa64e, 0xa64e); - (0xa650, 0xa650); - (0xa652, 0xa652); - (0xa654, 0xa654); - (0xa656, 0xa656); - (0xa658, 0xa658); - (0xa65a, 0xa65a); - (0xa65c, 0xa65c); - (0xa65e, 0xa65e); - (0xa660, 0xa660); - (0xa662, 0xa662); - (0xa664, 0xa664); - (0xa666, 0xa666); - (0xa668, 0xa668); - (0xa66a, 0xa66a); - (0xa66c, 0xa66c); - (0xa680, 0xa680); - (0xa682, 0xa682); - (0xa684, 0xa684); - (0xa686, 0xa686); - (0xa688, 0xa688); - (0xa68a, 0xa68a); - (0xa68c, 0xa68c); - (0xa68e, 0xa68e); - (0xa690, 0xa690); - (0xa692, 0xa692); - (0xa694, 0xa694); - (0xa696, 0xa696); - (0xa698, 0xa698); - (0xa69a, 0xa69a); - (0xa722, 0xa722); - (0xa724, 0xa724); - (0xa726, 0xa726); - (0xa728, 0xa728); - (0xa72a, 0xa72a); - (0xa72c, 0xa72c); - (0xa72e, 0xa72e); - (0xa732, 0xa732); - (0xa734, 0xa734); - (0xa736, 0xa736); - (0xa738, 0xa738); - (0xa73a, 0xa73a); - (0xa73c, 0xa73c); - (0xa73e, 0xa73e); - (0xa740, 0xa740); - (0xa742, 0xa742); - (0xa744, 0xa744); - (0xa746, 0xa746); - (0xa748, 0xa748); - (0xa74a, 0xa74a); - (0xa74c, 0xa74c); - (0xa74e, 0xa74e); - (0xa750, 0xa750); - (0xa752, 0xa752); - (0xa754, 0xa754); - (0xa756, 0xa756); - (0xa758, 0xa758); - (0xa75a, 0xa75a); - (0xa75c, 0xa75c); - (0xa75e, 0xa75e); - (0xa760, 0xa760); - (0xa762, 0xa762); - (0xa764, 0xa764); - (0xa766, 0xa766); - (0xa768, 0xa768); - (0xa76a, 0xa76a); - (0xa76c, 0xa76c); - (0xa76e, 0xa76e); - (0xa779, 0xa779); - (0xa77b, 0xa77b); - (0xa77d, 0xa77e); - (0xa780, 0xa780); - (0xa782, 0xa782); - (0xa784, 0xa784); - (0xa786, 0xa786); - (0xa78b, 0xa78b); - (0xa78d, 0xa78d); - (0xa790, 0xa790); - (0xa792, 0xa792); - (0xa796, 0xa796); - (0xa798, 0xa798); - (0xa79a, 0xa79a); - (0xa79c, 0xa79c); - (0xa79e, 0xa79e); - (0xa7a0, 0xa7a0); - (0xa7a2, 0xa7a2); - (0xa7a4, 0xa7a4); - (0xa7a6, 0xa7a6); - (0xa7a8, 0xa7a8); - (0xa7aa, 0xa7ae); - (0xa7b0, 0xa7b4); - (0xa7b6, 0xa7b6); - (0xa7b8, 0xa7b8); - (0xa7ba, 0xa7ba); - (0xa7bc, 0xa7bc); - (0xa7be, 0xa7be); - (0xa7c0, 0xa7c0); - (0xa7c2, 0xa7c2); - (0xa7c4, 0xa7c7); - (0xa7c9, 0xa7c9); - (0xa7d0, 0xa7d0); - (0xa7d6, 0xa7d6); - (0xa7d8, 0xa7d8); - (0xa7f5, 0xa7f5); - (0xff21, 0xff3a); - (0x10400, 0x10427); - (0x104b0, 0x104d3); - (0x10570, 0x1057a); - (0x1057c, 0x1058a); - (0x1058c, 0x10592); - (0x10594, 0x10595); - (0x10c80, 0x10cb2); - (0x118a0, 0x118bf); - (0x16e40, 0x16e5f); - (0x1d400, 0x1d419); - (0x1d434, 0x1d44d); - (0x1d468, 0x1d481); - (0x1d49c, 0x1d49c); - (0x1d49e, 0x1d49f); - (0x1d4a2, 0x1d4a2); - (0x1d4a5, 0x1d4a6); - (0x1d4a9, 0x1d4ac); - (0x1d4ae, 0x1d4b5); - (0x1d4d0, 0x1d4e9); - (0x1d504, 0x1d505); - (0x1d507, 0x1d50a); - (0x1d50d, 0x1d514); - (0x1d516, 0x1d51c); - (0x1d538, 0x1d539); - (0x1d53b, 0x1d53e); - (0x1d540, 0x1d544); - (0x1d546, 0x1d546); - (0x1d54a, 0x1d550); - (0x1d56c, 0x1d585); - (0x1d5a0, 0x1d5b9); - (0x1d5d4, 0x1d5ed); - (0x1d608, 0x1d621); - (0x1d63c, 0x1d655); - (0x1d670, 0x1d689); - (0x1d6a8, 0x1d6c0); - (0x1d6e2, 0x1d6fa); - (0x1d71c, 0x1d734); - (0x1d756, 0x1d76e); - (0x1d790, 0x1d7a8); - (0x1d7ca, 0x1d7ca); - (0x1e900, 0x1e921); - (0x1f130, 0x1f149); - (0x1f150, 0x1f169); - (0x1f170, 0x1f189); - ] + [0x41, 0x5a; 0xc0, 0xd6; 0xd8, 0xde; 0x100, 0x100; 0x102, 0x102; + 0x104, 0x104; 0x106, 0x106; 0x108, 0x108; 0x10a, 0x10a; 0x10c, 0x10c; + 0x10e, 0x10e; 0x110, 0x110; 0x112, 0x112; 0x114, 0x114; 0x116, 0x116; + 0x118, 0x118; 0x11a, 0x11a; 0x11c, 0x11c; 0x11e, 0x11e; 0x120, 0x120; + 0x122, 0x122; 0x124, 0x124; 0x126, 0x126; 0x128, 0x128; 0x12a, 0x12a; + 0x12c, 0x12c; 0x12e, 0x12e; 0x130, 0x130; 0x132, 0x132; 0x134, 0x134; + 0x136, 0x136; 0x139, 0x139; 0x13b, 0x13b; 0x13d, 0x13d; 0x13f, 0x13f; + 0x141, 0x141; 0x143, 0x143; 0x145, 0x145; 0x147, 0x147; 0x14a, 0x14a; + 0x14c, 0x14c; 0x14e, 0x14e; 0x150, 0x150; 0x152, 0x152; 0x154, 0x154; + 0x156, 0x156; 0x158, 0x158; 0x15a, 0x15a; 0x15c, 0x15c; 0x15e, 0x15e; + 0x160, 0x160; 0x162, 0x162; 0x164, 0x164; 0x166, 0x166; 0x168, 0x168; + 0x16a, 0x16a; 0x16c, 0x16c; 0x16e, 0x16e; 0x170, 0x170; 0x172, 0x172; + 0x174, 0x174; 0x176, 0x176; 0x178, 0x179; 0x17b, 0x17b; 0x17d, 0x17d; + 0x181, 0x182; 0x184, 0x184; 0x186, 0x187; 0x189, 0x18b; 0x18e, 0x191; + 0x193, 0x194; 0x196, 0x198; 0x19c, 0x19d; 0x19f, 0x1a0; 0x1a2, 0x1a2; + 0x1a4, 0x1a4; 0x1a6, 0x1a7; 0x1a9, 0x1a9; 0x1ac, 0x1ac; 0x1ae, 0x1af; + 0x1b1, 0x1b3; 0x1b5, 0x1b5; 0x1b7, 0x1b8; 0x1bc, 0x1bc; 0x1c4, 0x1c4; + 0x1c7, 0x1c7; 0x1ca, 0x1ca; 0x1cd, 0x1cd; 0x1cf, 0x1cf; 0x1d1, 0x1d1; + 0x1d3, 0x1d3; 0x1d5, 0x1d5; 0x1d7, 0x1d7; 0x1d9, 0x1d9; 0x1db, 0x1db; + 0x1de, 0x1de; 0x1e0, 0x1e0; 0x1e2, 0x1e2; 0x1e4, 0x1e4; 0x1e6, 0x1e6; + 0x1e8, 0x1e8; 0x1ea, 0x1ea; 0x1ec, 0x1ec; 0x1ee, 0x1ee; 0x1f1, 0x1f1; + 0x1f4, 0x1f4; 0x1f6, 0x1f8; 0x1fa, 0x1fa; 0x1fc, 0x1fc; 0x1fe, 0x1fe; + 0x200, 0x200; 0x202, 0x202; 0x204, 0x204; 0x206, 0x206; 0x208, 0x208; + 0x20a, 0x20a; 0x20c, 0x20c; 0x20e, 0x20e; 0x210, 0x210; 0x212, 0x212; + 0x214, 0x214; 0x216, 0x216; 0x218, 0x218; 0x21a, 0x21a; 0x21c, 0x21c; + 0x21e, 0x21e; 0x220, 0x220; 0x222, 0x222; 0x224, 0x224; 0x226, 0x226; + 0x228, 0x228; 0x22a, 0x22a; 0x22c, 0x22c; 0x22e, 0x22e; 0x230, 0x230; + 0x232, 0x232; 0x23a, 0x23b; 0x23d, 0x23e; 0x241, 0x241; 0x243, 0x246; + 0x248, 0x248; 0x24a, 0x24a; 0x24c, 0x24c; 0x24e, 0x24e; 0x370, 0x370; + 0x372, 0x372; 0x376, 0x376; 0x37f, 0x37f; 0x386, 0x386; 0x388, 0x38a; + 0x38c, 0x38c; 0x38e, 0x38f; 0x391, 0x3a1; 0x3a3, 0x3ab; 0x3cf, 0x3cf; + 0x3d2, 0x3d4; 0x3d8, 0x3d8; 0x3da, 0x3da; 0x3dc, 0x3dc; 0x3de, 0x3de; + 0x3e0, 0x3e0; 0x3e2, 0x3e2; 0x3e4, 0x3e4; 0x3e6, 0x3e6; 0x3e8, 0x3e8; + 0x3ea, 0x3ea; 0x3ec, 0x3ec; 0x3ee, 0x3ee; 0x3f4, 0x3f4; 0x3f7, 0x3f7; + 0x3f9, 0x3fa; 0x3fd, 0x42f; 0x460, 0x460; 0x462, 0x462; 0x464, 0x464; + 0x466, 0x466; 0x468, 0x468; 0x46a, 0x46a; 0x46c, 0x46c; 0x46e, 0x46e; + 0x470, 0x470; 0x472, 0x472; 0x474, 0x474; 0x476, 0x476; 0x478, 0x478; + 0x47a, 0x47a; 0x47c, 0x47c; 0x47e, 0x47e; 0x480, 0x480; 0x48a, 0x48a; + 0x48c, 0x48c; 0x48e, 0x48e; 0x490, 0x490; 0x492, 0x492; 0x494, 0x494; + 0x496, 0x496; 0x498, 0x498; 0x49a, 0x49a; 0x49c, 0x49c; 0x49e, 0x49e; + 0x4a0, 0x4a0; 0x4a2, 0x4a2; 0x4a4, 0x4a4; 0x4a6, 0x4a6; 0x4a8, 0x4a8; + 0x4aa, 0x4aa; 0x4ac, 0x4ac; 0x4ae, 0x4ae; 0x4b0, 0x4b0; 0x4b2, 0x4b2; + 0x4b4, 0x4b4; 0x4b6, 0x4b6; 0x4b8, 0x4b8; 0x4ba, 0x4ba; 0x4bc, 0x4bc; + 0x4be, 0x4be; 0x4c0, 0x4c1; 0x4c3, 0x4c3; 0x4c5, 0x4c5; 0x4c7, 0x4c7; + 0x4c9, 0x4c9; 0x4cb, 0x4cb; 0x4cd, 0x4cd; 0x4d0, 0x4d0; 0x4d2, 0x4d2; + 0x4d4, 0x4d4; 0x4d6, 0x4d6; 0x4d8, 0x4d8; 0x4da, 0x4da; 0x4dc, 0x4dc; + 0x4de, 0x4de; 0x4e0, 0x4e0; 0x4e2, 0x4e2; 0x4e4, 0x4e4; 0x4e6, 0x4e6; + 0x4e8, 0x4e8; 0x4ea, 0x4ea; 0x4ec, 0x4ec; 0x4ee, 0x4ee; 0x4f0, 0x4f0; + 0x4f2, 0x4f2; 0x4f4, 0x4f4; 0x4f6, 0x4f6; 0x4f8, 0x4f8; 0x4fa, 0x4fa; + 0x4fc, 0x4fc; 0x4fe, 0x4fe; 0x500, 0x500; 0x502, 0x502; 0x504, 0x504; + 0x506, 0x506; 0x508, 0x508; 0x50a, 0x50a; 0x50c, 0x50c; 0x50e, 0x50e; + 0x510, 0x510; 0x512, 0x512; 0x514, 0x514; 0x516, 0x516; 0x518, 0x518; + 0x51a, 0x51a; 0x51c, 0x51c; 0x51e, 0x51e; 0x520, 0x520; 0x522, 0x522; + 0x524, 0x524; 0x526, 0x526; 0x528, 0x528; 0x52a, 0x52a; 0x52c, 0x52c; + 0x52e, 0x52e; 0x531, 0x556; 0x10a0, 0x10c5; 0x10c7, 0x10c7; 0x10cd, 0x10cd; + 0x13a0, 0x13f5; 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 0x1e00, 0x1e00; 0x1e02, 0x1e02; + 0x1e04, 0x1e04; 0x1e06, 0x1e06; 0x1e08, 0x1e08; 0x1e0a, 0x1e0a; 0x1e0c, 0x1e0c; + 0x1e0e, 0x1e0e; 0x1e10, 0x1e10; 0x1e12, 0x1e12; 0x1e14, 0x1e14; 0x1e16, 0x1e16; + 0x1e18, 0x1e18; 0x1e1a, 0x1e1a; 0x1e1c, 0x1e1c; 0x1e1e, 0x1e1e; 0x1e20, 0x1e20; + 0x1e22, 0x1e22; 0x1e24, 0x1e24; 0x1e26, 0x1e26; 0x1e28, 0x1e28; 0x1e2a, 0x1e2a; + 0x1e2c, 0x1e2c; 0x1e2e, 0x1e2e; 0x1e30, 0x1e30; 0x1e32, 0x1e32; 0x1e34, 0x1e34; + 0x1e36, 0x1e36; 0x1e38, 0x1e38; 0x1e3a, 0x1e3a; 0x1e3c, 0x1e3c; 0x1e3e, 0x1e3e; + 0x1e40, 0x1e40; 0x1e42, 0x1e42; 0x1e44, 0x1e44; 0x1e46, 0x1e46; 0x1e48, 0x1e48; + 0x1e4a, 0x1e4a; 0x1e4c, 0x1e4c; 0x1e4e, 0x1e4e; 0x1e50, 0x1e50; 0x1e52, 0x1e52; + 0x1e54, 0x1e54; 0x1e56, 0x1e56; 0x1e58, 0x1e58; 0x1e5a, 0x1e5a; 0x1e5c, 0x1e5c; + 0x1e5e, 0x1e5e; 0x1e60, 0x1e60; 0x1e62, 0x1e62; 0x1e64, 0x1e64; 0x1e66, 0x1e66; + 0x1e68, 0x1e68; 0x1e6a, 0x1e6a; 0x1e6c, 0x1e6c; 0x1e6e, 0x1e6e; 0x1e70, 0x1e70; + 0x1e72, 0x1e72; 0x1e74, 0x1e74; 0x1e76, 0x1e76; 0x1e78, 0x1e78; 0x1e7a, 0x1e7a; + 0x1e7c, 0x1e7c; 0x1e7e, 0x1e7e; 0x1e80, 0x1e80; 0x1e82, 0x1e82; 0x1e84, 0x1e84; + 0x1e86, 0x1e86; 0x1e88, 0x1e88; 0x1e8a, 0x1e8a; 0x1e8c, 0x1e8c; 0x1e8e, 0x1e8e; + 0x1e90, 0x1e90; 0x1e92, 0x1e92; 0x1e94, 0x1e94; 0x1e9e, 0x1e9e; 0x1ea0, 0x1ea0; + 0x1ea2, 0x1ea2; 0x1ea4, 0x1ea4; 0x1ea6, 0x1ea6; 0x1ea8, 0x1ea8; 0x1eaa, 0x1eaa; + 0x1eac, 0x1eac; 0x1eae, 0x1eae; 0x1eb0, 0x1eb0; 0x1eb2, 0x1eb2; 0x1eb4, 0x1eb4; + 0x1eb6, 0x1eb6; 0x1eb8, 0x1eb8; 0x1eba, 0x1eba; 0x1ebc, 0x1ebc; 0x1ebe, 0x1ebe; + 0x1ec0, 0x1ec0; 0x1ec2, 0x1ec2; 0x1ec4, 0x1ec4; 0x1ec6, 0x1ec6; 0x1ec8, 0x1ec8; + 0x1eca, 0x1eca; 0x1ecc, 0x1ecc; 0x1ece, 0x1ece; 0x1ed0, 0x1ed0; 0x1ed2, 0x1ed2; + 0x1ed4, 0x1ed4; 0x1ed6, 0x1ed6; 0x1ed8, 0x1ed8; 0x1eda, 0x1eda; 0x1edc, 0x1edc; + 0x1ede, 0x1ede; 0x1ee0, 0x1ee0; 0x1ee2, 0x1ee2; 0x1ee4, 0x1ee4; 0x1ee6, 0x1ee6; + 0x1ee8, 0x1ee8; 0x1eea, 0x1eea; 0x1eec, 0x1eec; 0x1eee, 0x1eee; 0x1ef0, 0x1ef0; + 0x1ef2, 0x1ef2; 0x1ef4, 0x1ef4; 0x1ef6, 0x1ef6; 0x1ef8, 0x1ef8; 0x1efa, 0x1efa; + 0x1efc, 0x1efc; 0x1efe, 0x1efe; 0x1f08, 0x1f0f; 0x1f18, 0x1f1d; 0x1f28, 0x1f2f; + 0x1f38, 0x1f3f; 0x1f48, 0x1f4d; 0x1f59, 0x1f59; 0x1f5b, 0x1f5b; 0x1f5d, 0x1f5d; + 0x1f5f, 0x1f5f; 0x1f68, 0x1f6f; 0x1fb8, 0x1fbb; 0x1fc8, 0x1fcb; 0x1fd8, 0x1fdb; + 0x1fe8, 0x1fec; 0x1ff8, 0x1ffb; 0x2102, 0x2102; 0x2107, 0x2107; 0x210b, 0x210d; + 0x2110, 0x2112; 0x2115, 0x2115; 0x2119, 0x211d; 0x2124, 0x2124; 0x2126, 0x2126; + 0x2128, 0x2128; 0x212a, 0x212d; 0x2130, 0x2133; 0x213e, 0x213f; 0x2145, 0x2145; + 0x2160, 0x216f; 0x2183, 0x2183; 0x24b6, 0x24cf; 0x2c00, 0x2c2f; 0x2c60, 0x2c60; + 0x2c62, 0x2c64; 0x2c67, 0x2c67; 0x2c69, 0x2c69; 0x2c6b, 0x2c6b; 0x2c6d, 0x2c70; + 0x2c72, 0x2c72; 0x2c75, 0x2c75; 0x2c7e, 0x2c80; 0x2c82, 0x2c82; 0x2c84, 0x2c84; + 0x2c86, 0x2c86; 0x2c88, 0x2c88; 0x2c8a, 0x2c8a; 0x2c8c, 0x2c8c; 0x2c8e, 0x2c8e; + 0x2c90, 0x2c90; 0x2c92, 0x2c92; 0x2c94, 0x2c94; 0x2c96, 0x2c96; 0x2c98, 0x2c98; + 0x2c9a, 0x2c9a; 0x2c9c, 0x2c9c; 0x2c9e, 0x2c9e; 0x2ca0, 0x2ca0; 0x2ca2, 0x2ca2; + 0x2ca4, 0x2ca4; 0x2ca6, 0x2ca6; 0x2ca8, 0x2ca8; 0x2caa, 0x2caa; 0x2cac, 0x2cac; + 0x2cae, 0x2cae; 0x2cb0, 0x2cb0; 0x2cb2, 0x2cb2; 0x2cb4, 0x2cb4; 0x2cb6, 0x2cb6; + 0x2cb8, 0x2cb8; 0x2cba, 0x2cba; 0x2cbc, 0x2cbc; 0x2cbe, 0x2cbe; 0x2cc0, 0x2cc0; + 0x2cc2, 0x2cc2; 0x2cc4, 0x2cc4; 0x2cc6, 0x2cc6; 0x2cc8, 0x2cc8; 0x2cca, 0x2cca; + 0x2ccc, 0x2ccc; 0x2cce, 0x2cce; 0x2cd0, 0x2cd0; 0x2cd2, 0x2cd2; 0x2cd4, 0x2cd4; + 0x2cd6, 0x2cd6; 0x2cd8, 0x2cd8; 0x2cda, 0x2cda; 0x2cdc, 0x2cdc; 0x2cde, 0x2cde; + 0x2ce0, 0x2ce0; 0x2ce2, 0x2ce2; 0x2ceb, 0x2ceb; 0x2ced, 0x2ced; 0x2cf2, 0x2cf2; + 0xa640, 0xa640; 0xa642, 0xa642; 0xa644, 0xa644; 0xa646, 0xa646; 0xa648, 0xa648; + 0xa64a, 0xa64a; 0xa64c, 0xa64c; 0xa64e, 0xa64e; 0xa650, 0xa650; 0xa652, 0xa652; + 0xa654, 0xa654; 0xa656, 0xa656; 0xa658, 0xa658; 0xa65a, 0xa65a; 0xa65c, 0xa65c; + 0xa65e, 0xa65e; 0xa660, 0xa660; 0xa662, 0xa662; 0xa664, 0xa664; 0xa666, 0xa666; + 0xa668, 0xa668; 0xa66a, 0xa66a; 0xa66c, 0xa66c; 0xa680, 0xa680; 0xa682, 0xa682; + 0xa684, 0xa684; 0xa686, 0xa686; 0xa688, 0xa688; 0xa68a, 0xa68a; 0xa68c, 0xa68c; + 0xa68e, 0xa68e; 0xa690, 0xa690; 0xa692, 0xa692; 0xa694, 0xa694; 0xa696, 0xa696; + 0xa698, 0xa698; 0xa69a, 0xa69a; 0xa722, 0xa722; 0xa724, 0xa724; 0xa726, 0xa726; + 0xa728, 0xa728; 0xa72a, 0xa72a; 0xa72c, 0xa72c; 0xa72e, 0xa72e; 0xa732, 0xa732; + 0xa734, 0xa734; 0xa736, 0xa736; 0xa738, 0xa738; 0xa73a, 0xa73a; 0xa73c, 0xa73c; + 0xa73e, 0xa73e; 0xa740, 0xa740; 0xa742, 0xa742; 0xa744, 0xa744; 0xa746, 0xa746; + 0xa748, 0xa748; 0xa74a, 0xa74a; 0xa74c, 0xa74c; 0xa74e, 0xa74e; 0xa750, 0xa750; + 0xa752, 0xa752; 0xa754, 0xa754; 0xa756, 0xa756; 0xa758, 0xa758; 0xa75a, 0xa75a; + 0xa75c, 0xa75c; 0xa75e, 0xa75e; 0xa760, 0xa760; 0xa762, 0xa762; 0xa764, 0xa764; + 0xa766, 0xa766; 0xa768, 0xa768; 0xa76a, 0xa76a; 0xa76c, 0xa76c; 0xa76e, 0xa76e; + 0xa779, 0xa779; 0xa77b, 0xa77b; 0xa77d, 0xa77e; 0xa780, 0xa780; 0xa782, 0xa782; + 0xa784, 0xa784; 0xa786, 0xa786; 0xa78b, 0xa78b; 0xa78d, 0xa78d; 0xa790, 0xa790; + 0xa792, 0xa792; 0xa796, 0xa796; 0xa798, 0xa798; 0xa79a, 0xa79a; 0xa79c, 0xa79c; + 0xa79e, 0xa79e; 0xa7a0, 0xa7a0; 0xa7a2, 0xa7a2; 0xa7a4, 0xa7a4; 0xa7a6, 0xa7a6; + 0xa7a8, 0xa7a8; 0xa7aa, 0xa7ae; 0xa7b0, 0xa7b4; 0xa7b6, 0xa7b6; 0xa7b8, 0xa7b8; + 0xa7ba, 0xa7ba; 0xa7bc, 0xa7bc; 0xa7be, 0xa7be; 0xa7c0, 0xa7c0; 0xa7c2, 0xa7c2; + 0xa7c4, 0xa7c7; 0xa7c9, 0xa7c9; 0xa7d0, 0xa7d0; 0xa7d6, 0xa7d6; 0xa7d8, 0xa7d8; + 0xa7f5, 0xa7f5; 0xff21, 0xff3a; 0x10400, 0x10427; 0x104b0, 0x104d3; 0x10570, 0x1057a; + 0x1057c, 0x1058a; 0x1058c, 0x10592; 0x10594, 0x10595; 0x10c80, 0x10cb2; 0x118a0, 0x118bf; + 0x16e40, 0x16e5f; 0x1d400, 0x1d419; 0x1d434, 0x1d44d; 0x1d468, 0x1d481; 0x1d49c, 0x1d49c; + 0x1d49e, 0x1d49f; 0x1d4a2, 0x1d4a2; 0x1d4a5, 0x1d4a6; 0x1d4a9, 0x1d4ac; 0x1d4ae, 0x1d4b5; + 0x1d4d0, 0x1d4e9; 0x1d504, 0x1d505; 0x1d507, 0x1d50a; 0x1d50d, 0x1d514; 0x1d516, 0x1d51c; + 0x1d538, 0x1d539; 0x1d53b, 0x1d53e; 0x1d540, 0x1d544; 0x1d546, 0x1d546; 0x1d54a, 0x1d550; + 0x1d56c, 0x1d585; 0x1d5a0, 0x1d5b9; 0x1d5d4, 0x1d5ed; 0x1d608, 0x1d621; 0x1d63c, 0x1d655; + 0x1d670, 0x1d689; 0x1d6a8, 0x1d6c0; 0x1d6e2, 0x1d6fa; 0x1d71c, 0x1d734; 0x1d756, 0x1d76e; + 0x1d790, 0x1d7a8; 0x1d7ca, 0x1d7ca; 0x1e900, 0x1e921; 0x1f130, 0x1f149; 0x1f150, 0x1f169; + 0x1f170, 0x1f189] let white_space = - [ - (0x9, 0xd); - (0x20, 0x20); - (0x85, 0x85); - (0xa0, 0xa0); - (0x1680, 0x1680); - (0x2000, 0x200a); - (0x2028, 0x2028); - (0x2029, 0x2029); - (0x202f, 0x202f); - (0x205f, 0x205f); - (0x3000, 0x3000); - ] + [0x9, 0xd; 0x20, 0x20; 0x85, 0x85; 0xa0, 0xa0; 0x1680, 0x1680; + 0x2000, 0x200a; 0x2028, 0x2028; 0x2029, 0x2029; 0x202f, 0x202f; 0x205f, 0x205f; + 0x3000, 0x3000] let xid_continue = - [ - (0x30, 0x39); - (0x41, 0x5a); - (0x5f, 0x5f); - (0x61, 0x7a); - (0xaa, 0xaa); - (0xb5, 0xb5); - (0xb7, 0xb7); - (0xba, 0xba); - (0xc0, 0xd6); - (0xd8, 0xf6); - (0xf8, 0x1ba); - (0x1bb, 0x1bb); - (0x1bc, 0x1bf); - (0x1c0, 0x1c3); - (0x1c4, 0x293); - (0x294, 0x294); - (0x295, 0x2af); - (0x2b0, 0x2c1); - (0x2c6, 0x2d1); - (0x2e0, 0x2e4); - (0x2ec, 0x2ec); - (0x2ee, 0x2ee); - (0x300, 0x36f); - (0x370, 0x373); - (0x374, 0x374); - (0x376, 0x377); - (0x37b, 0x37d); - (0x37f, 0x37f); - (0x386, 0x386); - (0x387, 0x387); - (0x388, 0x38a); - (0x38c, 0x38c); - (0x38e, 0x3a1); - (0x3a3, 0x3f5); - (0x3f7, 0x481); - (0x483, 0x487); - (0x48a, 0x52f); - (0x531, 0x556); - (0x559, 0x559); - (0x560, 0x588); - (0x591, 0x5bd); - (0x5bf, 0x5bf); - (0x5c1, 0x5c2); - (0x5c4, 0x5c5); - (0x5c7, 0x5c7); - (0x5d0, 0x5ea); - (0x5ef, 0x5f2); - (0x610, 0x61a); - (0x620, 0x63f); - (0x640, 0x640); - (0x641, 0x64a); - (0x64b, 0x65f); - (0x660, 0x669); - (0x66e, 0x66f); - (0x670, 0x670); - (0x671, 0x6d3); - (0x6d5, 0x6d5); - (0x6d6, 0x6dc); - (0x6df, 0x6e4); - (0x6e5, 0x6e6); - (0x6e7, 0x6e8); - (0x6ea, 0x6ed); - (0x6ee, 0x6ef); - (0x6f0, 0x6f9); - (0x6fa, 0x6fc); - (0x6ff, 0x6ff); - (0x710, 0x710); - (0x711, 0x711); - (0x712, 0x72f); - (0x730, 0x74a); - (0x74d, 0x7a5); - (0x7a6, 0x7b0); - (0x7b1, 0x7b1); - (0x7c0, 0x7c9); - (0x7ca, 0x7ea); - (0x7eb, 0x7f3); - (0x7f4, 0x7f5); - (0x7fa, 0x7fa); - (0x7fd, 0x7fd); - (0x800, 0x815); - (0x816, 0x819); - (0x81a, 0x81a); - (0x81b, 0x823); - (0x824, 0x824); - (0x825, 0x827); - (0x828, 0x828); - (0x829, 0x82d); - (0x840, 0x858); - (0x859, 0x85b); - (0x860, 0x86a); - (0x870, 0x887); - (0x889, 0x88e); - (0x898, 0x89f); - (0x8a0, 0x8c8); - (0x8c9, 0x8c9); - (0x8ca, 0x8e1); - (0x8e3, 0x902); - (0x903, 0x903); - (0x904, 0x939); - (0x93a, 0x93a); - (0x93b, 0x93b); - (0x93c, 0x93c); - (0x93d, 0x93d); - (0x93e, 0x940); - (0x941, 0x948); - (0x949, 0x94c); - (0x94d, 0x94d); - (0x94e, 0x94f); - (0x950, 0x950); - (0x951, 0x957); - (0x958, 0x961); - (0x962, 0x963); - (0x966, 0x96f); - (0x971, 0x971); - (0x972, 0x980); - (0x981, 0x981); - (0x982, 0x983); - (0x985, 0x98c); - (0x98f, 0x990); - (0x993, 0x9a8); - (0x9aa, 0x9b0); - (0x9b2, 0x9b2); - (0x9b6, 0x9b9); - (0x9bc, 0x9bc); - (0x9bd, 0x9bd); - (0x9be, 0x9c0); - (0x9c1, 0x9c4); - (0x9c7, 0x9c8); - (0x9cb, 0x9cc); - (0x9cd, 0x9cd); - (0x9ce, 0x9ce); - (0x9d7, 0x9d7); - (0x9dc, 0x9dd); - (0x9df, 0x9e1); - (0x9e2, 0x9e3); - (0x9e6, 0x9ef); - (0x9f0, 0x9f1); - (0x9fc, 0x9fc); - (0x9fe, 0x9fe); - (0xa01, 0xa02); - (0xa03, 0xa03); - (0xa05, 0xa0a); - (0xa0f, 0xa10); - (0xa13, 0xa28); - (0xa2a, 0xa30); - (0xa32, 0xa33); - (0xa35, 0xa36); - (0xa38, 0xa39); - (0xa3c, 0xa3c); - (0xa3e, 0xa40); - (0xa41, 0xa42); - (0xa47, 0xa48); - (0xa4b, 0xa4d); - (0xa51, 0xa51); - (0xa59, 0xa5c); - (0xa5e, 0xa5e); - (0xa66, 0xa6f); - (0xa70, 0xa71); - (0xa72, 0xa74); - (0xa75, 0xa75); - (0xa81, 0xa82); - (0xa83, 0xa83); - (0xa85, 0xa8d); - (0xa8f, 0xa91); - (0xa93, 0xaa8); - (0xaaa, 0xab0); - (0xab2, 0xab3); - (0xab5, 0xab9); - (0xabc, 0xabc); - (0xabd, 0xabd); - (0xabe, 0xac0); - (0xac1, 0xac5); - (0xac7, 0xac8); - (0xac9, 0xac9); - (0xacb, 0xacc); - (0xacd, 0xacd); - (0xad0, 0xad0); - (0xae0, 0xae1); - (0xae2, 0xae3); - (0xae6, 0xaef); - (0xaf9, 0xaf9); - (0xafa, 0xaff); - (0xb01, 0xb01); - (0xb02, 0xb03); - (0xb05, 0xb0c); - (0xb0f, 0xb10); - (0xb13, 0xb28); - (0xb2a, 0xb30); - (0xb32, 0xb33); - (0xb35, 0xb39); - (0xb3c, 0xb3c); - (0xb3d, 0xb3d); - (0xb3e, 0xb3e); - (0xb3f, 0xb3f); - (0xb40, 0xb40); - (0xb41, 0xb44); - (0xb47, 0xb48); - (0xb4b, 0xb4c); - (0xb4d, 0xb4d); - (0xb55, 0xb56); - (0xb57, 0xb57); - (0xb5c, 0xb5d); - (0xb5f, 0xb61); - (0xb62, 0xb63); - (0xb66, 0xb6f); - (0xb71, 0xb71); - (0xb82, 0xb82); - (0xb83, 0xb83); - (0xb85, 0xb8a); - (0xb8e, 0xb90); - (0xb92, 0xb95); - (0xb99, 0xb9a); - (0xb9c, 0xb9c); - (0xb9e, 0xb9f); - (0xba3, 0xba4); - (0xba8, 0xbaa); - (0xbae, 0xbb9); - (0xbbe, 0xbbf); - (0xbc0, 0xbc0); - (0xbc1, 0xbc2); - (0xbc6, 0xbc8); - (0xbca, 0xbcc); - (0xbcd, 0xbcd); - (0xbd0, 0xbd0); - (0xbd7, 0xbd7); - (0xbe6, 0xbef); - (0xc00, 0xc00); - (0xc01, 0xc03); - (0xc04, 0xc04); - (0xc05, 0xc0c); - (0xc0e, 0xc10); - (0xc12, 0xc28); - (0xc2a, 0xc39); - (0xc3c, 0xc3c); - (0xc3d, 0xc3d); - (0xc3e, 0xc40); - (0xc41, 0xc44); - (0xc46, 0xc48); - (0xc4a, 0xc4d); - (0xc55, 0xc56); - (0xc58, 0xc5a); - (0xc5d, 0xc5d); - (0xc60, 0xc61); - (0xc62, 0xc63); - (0xc66, 0xc6f); - (0xc80, 0xc80); - (0xc81, 0xc81); - (0xc82, 0xc83); - (0xc85, 0xc8c); - (0xc8e, 0xc90); - (0xc92, 0xca8); - (0xcaa, 0xcb3); - (0xcb5, 0xcb9); - (0xcbc, 0xcbc); - (0xcbd, 0xcbd); - (0xcbe, 0xcbe); - (0xcbf, 0xcbf); - (0xcc0, 0xcc4); - (0xcc6, 0xcc6); - (0xcc7, 0xcc8); - (0xcca, 0xccb); - (0xccc, 0xccd); - (0xcd5, 0xcd6); - (0xcdd, 0xcde); - (0xce0, 0xce1); - (0xce2, 0xce3); - (0xce6, 0xcef); - (0xcf1, 0xcf2); - (0xd00, 0xd01); - (0xd02, 0xd03); - (0xd04, 0xd0c); - (0xd0e, 0xd10); - (0xd12, 0xd3a); - (0xd3b, 0xd3c); - (0xd3d, 0xd3d); - (0xd3e, 0xd40); - (0xd41, 0xd44); - (0xd46, 0xd48); - (0xd4a, 0xd4c); - (0xd4d, 0xd4d); - (0xd4e, 0xd4e); - (0xd54, 0xd56); - (0xd57, 0xd57); - (0xd5f, 0xd61); - (0xd62, 0xd63); - (0xd66, 0xd6f); - (0xd7a, 0xd7f); - (0xd81, 0xd81); - (0xd82, 0xd83); - (0xd85, 0xd96); - (0xd9a, 0xdb1); - (0xdb3, 0xdbb); - (0xdbd, 0xdbd); - (0xdc0, 0xdc6); - (0xdca, 0xdca); - (0xdcf, 0xdd1); - (0xdd2, 0xdd4); - (0xdd6, 0xdd6); - (0xdd8, 0xddf); - (0xde6, 0xdef); - (0xdf2, 0xdf3); - (0xe01, 0xe30); - (0xe31, 0xe31); - (0xe32, 0xe33); - (0xe34, 0xe3a); - (0xe40, 0xe45); - (0xe46, 0xe46); - (0xe47, 0xe4e); - (0xe50, 0xe59); - (0xe81, 0xe82); - (0xe84, 0xe84); - (0xe86, 0xe8a); - (0xe8c, 0xea3); - (0xea5, 0xea5); - (0xea7, 0xeb0); - (0xeb1, 0xeb1); - (0xeb2, 0xeb3); - (0xeb4, 0xebc); - (0xebd, 0xebd); - (0xec0, 0xec4); - (0xec6, 0xec6); - (0xec8, 0xecd); - (0xed0, 0xed9); - (0xedc, 0xedf); - (0xf00, 0xf00); - (0xf18, 0xf19); - (0xf20, 0xf29); - (0xf35, 0xf35); - (0xf37, 0xf37); - (0xf39, 0xf39); - (0xf3e, 0xf3f); - (0xf40, 0xf47); - (0xf49, 0xf6c); - (0xf71, 0xf7e); - (0xf7f, 0xf7f); - (0xf80, 0xf84); - (0xf86, 0xf87); - (0xf88, 0xf8c); - (0xf8d, 0xf97); - (0xf99, 0xfbc); - (0xfc6, 0xfc6); - (0x1000, 0x102a); - (0x102b, 0x102c); - (0x102d, 0x1030); - (0x1031, 0x1031); - (0x1032, 0x1037); - (0x1038, 0x1038); - (0x1039, 0x103a); - (0x103b, 0x103c); - (0x103d, 0x103e); - (0x103f, 0x103f); - (0x1040, 0x1049); - (0x1050, 0x1055); - (0x1056, 0x1057); - (0x1058, 0x1059); - (0x105a, 0x105d); - (0x105e, 0x1060); - (0x1061, 0x1061); - (0x1062, 0x1064); - (0x1065, 0x1066); - (0x1067, 0x106d); - (0x106e, 0x1070); - (0x1071, 0x1074); - (0x1075, 0x1081); - (0x1082, 0x1082); - (0x1083, 0x1084); - (0x1085, 0x1086); - (0x1087, 0x108c); - (0x108d, 0x108d); - (0x108e, 0x108e); - (0x108f, 0x108f); - (0x1090, 0x1099); - (0x109a, 0x109c); - (0x109d, 0x109d); - (0x10a0, 0x10c5); - (0x10c7, 0x10c7); - (0x10cd, 0x10cd); - (0x10d0, 0x10fa); - (0x10fc, 0x10fc); - (0x10fd, 0x10ff); - (0x1100, 0x1248); - (0x124a, 0x124d); - (0x1250, 0x1256); - (0x1258, 0x1258); - (0x125a, 0x125d); - (0x1260, 0x1288); - (0x128a, 0x128d); - (0x1290, 0x12b0); - (0x12b2, 0x12b5); - (0x12b8, 0x12be); - (0x12c0, 0x12c0); - (0x12c2, 0x12c5); - (0x12c8, 0x12d6); - (0x12d8, 0x1310); - (0x1312, 0x1315); - (0x1318, 0x135a); - (0x135d, 0x135f); - (0x1369, 0x1371); - (0x1380, 0x138f); - (0x13a0, 0x13f5); - (0x13f8, 0x13fd); - (0x1401, 0x166c); - (0x166f, 0x167f); - (0x1681, 0x169a); - (0x16a0, 0x16ea); - (0x16ee, 0x16f0); - (0x16f1, 0x16f8); - (0x1700, 0x1711); - (0x1712, 0x1714); - (0x1715, 0x1715); - (0x171f, 0x1731); - (0x1732, 0x1733); - (0x1734, 0x1734); - (0x1740, 0x1751); - (0x1752, 0x1753); - (0x1760, 0x176c); - (0x176e, 0x1770); - (0x1772, 0x1773); - (0x1780, 0x17b3); - (0x17b4, 0x17b5); - (0x17b6, 0x17b6); - (0x17b7, 0x17bd); - (0x17be, 0x17c5); - (0x17c6, 0x17c6); - (0x17c7, 0x17c8); - (0x17c9, 0x17d3); - (0x17d7, 0x17d7); - (0x17dc, 0x17dc); - (0x17dd, 0x17dd); - (0x17e0, 0x17e9); - (0x180b, 0x180d); - (0x180f, 0x180f); - (0x1810, 0x1819); - (0x1820, 0x1842); - (0x1843, 0x1843); - (0x1844, 0x1878); - (0x1880, 0x1884); - (0x1885, 0x1886); - (0x1887, 0x18a8); - (0x18a9, 0x18a9); - (0x18aa, 0x18aa); - (0x18b0, 0x18f5); - (0x1900, 0x191e); - (0x1920, 0x1922); - (0x1923, 0x1926); - (0x1927, 0x1928); - (0x1929, 0x192b); - (0x1930, 0x1931); - (0x1932, 0x1932); - (0x1933, 0x1938); - (0x1939, 0x193b); - (0x1946, 0x194f); - (0x1950, 0x196d); - (0x1970, 0x1974); - (0x1980, 0x19ab); - (0x19b0, 0x19c9); - (0x19d0, 0x19d9); - (0x19da, 0x19da); - (0x1a00, 0x1a16); - (0x1a17, 0x1a18); - (0x1a19, 0x1a1a); - (0x1a1b, 0x1a1b); - (0x1a20, 0x1a54); - (0x1a55, 0x1a55); - (0x1a56, 0x1a56); - (0x1a57, 0x1a57); - (0x1a58, 0x1a5e); - (0x1a60, 0x1a60); - (0x1a61, 0x1a61); - (0x1a62, 0x1a62); - (0x1a63, 0x1a64); - (0x1a65, 0x1a6c); - (0x1a6d, 0x1a72); - (0x1a73, 0x1a7c); - (0x1a7f, 0x1a7f); - (0x1a80, 0x1a89); - (0x1a90, 0x1a99); - (0x1aa7, 0x1aa7); - (0x1ab0, 0x1abd); - (0x1abf, 0x1ace); - (0x1b00, 0x1b03); - (0x1b04, 0x1b04); - (0x1b05, 0x1b33); - (0x1b34, 0x1b34); - (0x1b35, 0x1b35); - (0x1b36, 0x1b3a); - (0x1b3b, 0x1b3b); - (0x1b3c, 0x1b3c); - (0x1b3d, 0x1b41); - (0x1b42, 0x1b42); - (0x1b43, 0x1b44); - (0x1b45, 0x1b4c); - (0x1b50, 0x1b59); - (0x1b6b, 0x1b73); - (0x1b80, 0x1b81); - (0x1b82, 0x1b82); - (0x1b83, 0x1ba0); - (0x1ba1, 0x1ba1); - (0x1ba2, 0x1ba5); - (0x1ba6, 0x1ba7); - (0x1ba8, 0x1ba9); - (0x1baa, 0x1baa); - (0x1bab, 0x1bad); - (0x1bae, 0x1baf); - (0x1bb0, 0x1bb9); - (0x1bba, 0x1be5); - (0x1be6, 0x1be6); - (0x1be7, 0x1be7); - (0x1be8, 0x1be9); - (0x1bea, 0x1bec); - (0x1bed, 0x1bed); - (0x1bee, 0x1bee); - (0x1bef, 0x1bf1); - (0x1bf2, 0x1bf3); - (0x1c00, 0x1c23); - (0x1c24, 0x1c2b); - (0x1c2c, 0x1c33); - (0x1c34, 0x1c35); - (0x1c36, 0x1c37); - (0x1c40, 0x1c49); - (0x1c4d, 0x1c4f); - (0x1c50, 0x1c59); - (0x1c5a, 0x1c77); - (0x1c78, 0x1c7d); - (0x1c80, 0x1c88); - (0x1c90, 0x1cba); - (0x1cbd, 0x1cbf); - (0x1cd0, 0x1cd2); - (0x1cd4, 0x1ce0); - (0x1ce1, 0x1ce1); - (0x1ce2, 0x1ce8); - (0x1ce9, 0x1cec); - (0x1ced, 0x1ced); - (0x1cee, 0x1cf3); - (0x1cf4, 0x1cf4); - (0x1cf5, 0x1cf6); - (0x1cf7, 0x1cf7); - (0x1cf8, 0x1cf9); - (0x1cfa, 0x1cfa); - (0x1d00, 0x1d2b); - (0x1d2c, 0x1d6a); - (0x1d6b, 0x1d77); - (0x1d78, 0x1d78); - (0x1d79, 0x1d9a); - (0x1d9b, 0x1dbf); - (0x1dc0, 0x1dff); - (0x1e00, 0x1f15); - (0x1f18, 0x1f1d); - (0x1f20, 0x1f45); - (0x1f48, 0x1f4d); - (0x1f50, 0x1f57); - (0x1f59, 0x1f59); - (0x1f5b, 0x1f5b); - (0x1f5d, 0x1f5d); - (0x1f5f, 0x1f7d); - (0x1f80, 0x1fb4); - (0x1fb6, 0x1fbc); - (0x1fbe, 0x1fbe); - (0x1fc2, 0x1fc4); - (0x1fc6, 0x1fcc); - (0x1fd0, 0x1fd3); - (0x1fd6, 0x1fdb); - (0x1fe0, 0x1fec); - (0x1ff2, 0x1ff4); - (0x1ff6, 0x1ffc); - (0x203f, 0x2040); - (0x2054, 0x2054); - (0x2071, 0x2071); - (0x207f, 0x207f); - (0x2090, 0x209c); - (0x20d0, 0x20dc); - (0x20e1, 0x20e1); - (0x20e5, 0x20f0); - (0x2102, 0x2102); - (0x2107, 0x2107); - (0x210a, 0x2113); - (0x2115, 0x2115); - (0x2118, 0x2118); - (0x2119, 0x211d); - (0x2124, 0x2124); - (0x2126, 0x2126); - (0x2128, 0x2128); - (0x212a, 0x212d); - (0x212e, 0x212e); - (0x212f, 0x2134); - (0x2135, 0x2138); - (0x2139, 0x2139); - (0x213c, 0x213f); - (0x2145, 0x2149); - (0x214e, 0x214e); - (0x2160, 0x2182); - (0x2183, 0x2184); - (0x2185, 0x2188); - (0x2c00, 0x2c7b); - (0x2c7c, 0x2c7d); - (0x2c7e, 0x2ce4); - (0x2ceb, 0x2cee); - (0x2cef, 0x2cf1); - (0x2cf2, 0x2cf3); - (0x2d00, 0x2d25); - (0x2d27, 0x2d27); - (0x2d2d, 0x2d2d); - (0x2d30, 0x2d67); - (0x2d6f, 0x2d6f); - (0x2d7f, 0x2d7f); - (0x2d80, 0x2d96); - (0x2da0, 0x2da6); - (0x2da8, 0x2dae); - (0x2db0, 0x2db6); - (0x2db8, 0x2dbe); - (0x2dc0, 0x2dc6); - (0x2dc8, 0x2dce); - (0x2dd0, 0x2dd6); - (0x2dd8, 0x2dde); - (0x2de0, 0x2dff); - (0x3005, 0x3005); - (0x3006, 0x3006); - (0x3007, 0x3007); - (0x3021, 0x3029); - (0x302a, 0x302d); - (0x302e, 0x302f); - (0x3031, 0x3035); - (0x3038, 0x303a); - (0x303b, 0x303b); - (0x303c, 0x303c); - (0x3041, 0x3096); - (0x3099, 0x309a); - (0x309d, 0x309e); - (0x309f, 0x309f); - (0x30a1, 0x30fa); - (0x30fc, 0x30fe); - (0x30ff, 0x30ff); - (0x3105, 0x312f); - (0x3131, 0x318e); - (0x31a0, 0x31bf); - (0x31f0, 0x31ff); - (0x3400, 0x4dbf); - (0x4e00, 0xa014); - (0xa015, 0xa015); - (0xa016, 0xa48c); - (0xa4d0, 0xa4f7); - (0xa4f8, 0xa4fd); - (0xa500, 0xa60b); - (0xa60c, 0xa60c); - (0xa610, 0xa61f); - (0xa620, 0xa629); - (0xa62a, 0xa62b); - (0xa640, 0xa66d); - (0xa66e, 0xa66e); - (0xa66f, 0xa66f); - (0xa674, 0xa67d); - (0xa67f, 0xa67f); - (0xa680, 0xa69b); - (0xa69c, 0xa69d); - (0xa69e, 0xa69f); - (0xa6a0, 0xa6e5); - (0xa6e6, 0xa6ef); - (0xa6f0, 0xa6f1); - (0xa717, 0xa71f); - (0xa722, 0xa76f); - (0xa770, 0xa770); - (0xa771, 0xa787); - (0xa788, 0xa788); - (0xa78b, 0xa78e); - (0xa78f, 0xa78f); - (0xa790, 0xa7ca); - (0xa7d0, 0xa7d1); - (0xa7d3, 0xa7d3); - (0xa7d5, 0xa7d9); - (0xa7f2, 0xa7f4); - (0xa7f5, 0xa7f6); - (0xa7f7, 0xa7f7); - (0xa7f8, 0xa7f9); - (0xa7fa, 0xa7fa); - (0xa7fb, 0xa801); - (0xa802, 0xa802); - (0xa803, 0xa805); - (0xa806, 0xa806); - (0xa807, 0xa80a); - (0xa80b, 0xa80b); - (0xa80c, 0xa822); - (0xa823, 0xa824); - (0xa825, 0xa826); - (0xa827, 0xa827); - (0xa82c, 0xa82c); - (0xa840, 0xa873); - (0xa880, 0xa881); - (0xa882, 0xa8b3); - (0xa8b4, 0xa8c3); - (0xa8c4, 0xa8c5); - (0xa8d0, 0xa8d9); - (0xa8e0, 0xa8f1); - (0xa8f2, 0xa8f7); - (0xa8fb, 0xa8fb); - (0xa8fd, 0xa8fe); - (0xa8ff, 0xa8ff); - (0xa900, 0xa909); - (0xa90a, 0xa925); - (0xa926, 0xa92d); - (0xa930, 0xa946); - (0xa947, 0xa951); - (0xa952, 0xa953); - (0xa960, 0xa97c); - (0xa980, 0xa982); - (0xa983, 0xa983); - (0xa984, 0xa9b2); - (0xa9b3, 0xa9b3); - (0xa9b4, 0xa9b5); - (0xa9b6, 0xa9b9); - (0xa9ba, 0xa9bb); - (0xa9bc, 0xa9bd); - (0xa9be, 0xa9c0); - (0xa9cf, 0xa9cf); - (0xa9d0, 0xa9d9); - (0xa9e0, 0xa9e4); - (0xa9e5, 0xa9e5); - (0xa9e6, 0xa9e6); - (0xa9e7, 0xa9ef); - (0xa9f0, 0xa9f9); - (0xa9fa, 0xa9fe); - (0xaa00, 0xaa28); - (0xaa29, 0xaa2e); - (0xaa2f, 0xaa30); - (0xaa31, 0xaa32); - (0xaa33, 0xaa34); - (0xaa35, 0xaa36); - (0xaa40, 0xaa42); - (0xaa43, 0xaa43); - (0xaa44, 0xaa4b); - (0xaa4c, 0xaa4c); - (0xaa4d, 0xaa4d); - (0xaa50, 0xaa59); - (0xaa60, 0xaa6f); - (0xaa70, 0xaa70); - (0xaa71, 0xaa76); - (0xaa7a, 0xaa7a); - (0xaa7b, 0xaa7b); - (0xaa7c, 0xaa7c); - (0xaa7d, 0xaa7d); - (0xaa7e, 0xaaaf); - (0xaab0, 0xaab0); - (0xaab1, 0xaab1); - (0xaab2, 0xaab4); - (0xaab5, 0xaab6); - (0xaab7, 0xaab8); - (0xaab9, 0xaabd); - (0xaabe, 0xaabf); - (0xaac0, 0xaac0); - (0xaac1, 0xaac1); - (0xaac2, 0xaac2); - (0xaadb, 0xaadc); - (0xaadd, 0xaadd); - (0xaae0, 0xaaea); - (0xaaeb, 0xaaeb); - (0xaaec, 0xaaed); - (0xaaee, 0xaaef); - (0xaaf2, 0xaaf2); - (0xaaf3, 0xaaf4); - (0xaaf5, 0xaaf5); - (0xaaf6, 0xaaf6); - (0xab01, 0xab06); - (0xab09, 0xab0e); - (0xab11, 0xab16); - (0xab20, 0xab26); - (0xab28, 0xab2e); - (0xab30, 0xab5a); - (0xab5c, 0xab5f); - (0xab60, 0xab68); - (0xab69, 0xab69); - (0xab70, 0xabbf); - (0xabc0, 0xabe2); - (0xabe3, 0xabe4); - (0xabe5, 0xabe5); - (0xabe6, 0xabe7); - (0xabe8, 0xabe8); - (0xabe9, 0xabea); - (0xabec, 0xabec); - (0xabed, 0xabed); - (0xabf0, 0xabf9); - (0xac00, 0xd7a3); - (0xd7b0, 0xd7c6); - (0xd7cb, 0xd7fb); - (0xf900, 0xfa6d); - (0xfa70, 0xfad9); - (0xfb00, 0xfb06); - (0xfb13, 0xfb17); - (0xfb1d, 0xfb1d); - (0xfb1e, 0xfb1e); - (0xfb1f, 0xfb28); - (0xfb2a, 0xfb36); - (0xfb38, 0xfb3c); - (0xfb3e, 0xfb3e); - (0xfb40, 0xfb41); - (0xfb43, 0xfb44); - (0xfb46, 0xfbb1); - (0xfbd3, 0xfc5d); - (0xfc64, 0xfd3d); - (0xfd50, 0xfd8f); - (0xfd92, 0xfdc7); - (0xfdf0, 0xfdf9); - (0xfe00, 0xfe0f); - (0xfe20, 0xfe2f); - (0xfe33, 0xfe34); - (0xfe4d, 0xfe4f); - (0xfe71, 0xfe71); - (0xfe73, 0xfe73); - (0xfe77, 0xfe77); - (0xfe79, 0xfe79); - (0xfe7b, 0xfe7b); - (0xfe7d, 0xfe7d); - (0xfe7f, 0xfefc); - (0xff10, 0xff19); - (0xff21, 0xff3a); - (0xff3f, 0xff3f); - (0xff41, 0xff5a); - (0xff66, 0xff6f); - (0xff70, 0xff70); - (0xff71, 0xff9d); - (0xff9e, 0xff9f); - (0xffa0, 0xffbe); - (0xffc2, 0xffc7); - (0xffca, 0xffcf); - (0xffd2, 0xffd7); - (0xffda, 0xffdc); - (0x10000, 0x1000b); - (0x1000d, 0x10026); - (0x10028, 0x1003a); - (0x1003c, 0x1003d); - (0x1003f, 0x1004d); - (0x10050, 0x1005d); - (0x10080, 0x100fa); - (0x10140, 0x10174); - (0x101fd, 0x101fd); - (0x10280, 0x1029c); - (0x102a0, 0x102d0); - (0x102e0, 0x102e0); - (0x10300, 0x1031f); - (0x1032d, 0x10340); - (0x10341, 0x10341); - (0x10342, 0x10349); - (0x1034a, 0x1034a); - (0x10350, 0x10375); - (0x10376, 0x1037a); - (0x10380, 0x1039d); - (0x103a0, 0x103c3); - (0x103c8, 0x103cf); - (0x103d1, 0x103d5); - (0x10400, 0x1044f); - (0x10450, 0x1049d); - (0x104a0, 0x104a9); - (0x104b0, 0x104d3); - (0x104d8, 0x104fb); - (0x10500, 0x10527); - (0x10530, 0x10563); - (0x10570, 0x1057a); - (0x1057c, 0x1058a); - (0x1058c, 0x10592); - (0x10594, 0x10595); - (0x10597, 0x105a1); - (0x105a3, 0x105b1); - (0x105b3, 0x105b9); - (0x105bb, 0x105bc); - (0x10600, 0x10736); - (0x10740, 0x10755); - (0x10760, 0x10767); - (0x10780, 0x10785); - (0x10787, 0x107b0); - (0x107b2, 0x107ba); - (0x10800, 0x10805); - (0x10808, 0x10808); - (0x1080a, 0x10835); - (0x10837, 0x10838); - (0x1083c, 0x1083c); - (0x1083f, 0x10855); - (0x10860, 0x10876); - (0x10880, 0x1089e); - (0x108e0, 0x108f2); - (0x108f4, 0x108f5); - (0x10900, 0x10915); - (0x10920, 0x10939); - (0x10980, 0x109b7); - (0x109be, 0x109bf); - (0x10a00, 0x10a00); - (0x10a01, 0x10a03); - (0x10a05, 0x10a06); - (0x10a0c, 0x10a0f); - (0x10a10, 0x10a13); - (0x10a15, 0x10a17); - (0x10a19, 0x10a35); - (0x10a38, 0x10a3a); - (0x10a3f, 0x10a3f); - (0x10a60, 0x10a7c); - (0x10a80, 0x10a9c); - (0x10ac0, 0x10ac7); - (0x10ac9, 0x10ae4); - (0x10ae5, 0x10ae6); - (0x10b00, 0x10b35); - (0x10b40, 0x10b55); - (0x10b60, 0x10b72); - (0x10b80, 0x10b91); - (0x10c00, 0x10c48); - (0x10c80, 0x10cb2); - (0x10cc0, 0x10cf2); - (0x10d00, 0x10d23); - (0x10d24, 0x10d27); - (0x10d30, 0x10d39); - (0x10e80, 0x10ea9); - (0x10eab, 0x10eac); - (0x10eb0, 0x10eb1); - (0x10f00, 0x10f1c); - (0x10f27, 0x10f27); - (0x10f30, 0x10f45); - (0x10f46, 0x10f50); - (0x10f70, 0x10f81); - (0x10f82, 0x10f85); - (0x10fb0, 0x10fc4); - (0x10fe0, 0x10ff6); - (0x11000, 0x11000); - (0x11001, 0x11001); - (0x11002, 0x11002); - (0x11003, 0x11037); - (0x11038, 0x11046); - (0x11066, 0x1106f); - (0x11070, 0x11070); - (0x11071, 0x11072); - (0x11073, 0x11074); - (0x11075, 0x11075); - (0x1107f, 0x11081); - (0x11082, 0x11082); - (0x11083, 0x110af); - (0x110b0, 0x110b2); - (0x110b3, 0x110b6); - (0x110b7, 0x110b8); - (0x110b9, 0x110ba); - (0x110c2, 0x110c2); - (0x110d0, 0x110e8); - (0x110f0, 0x110f9); - (0x11100, 0x11102); - (0x11103, 0x11126); - (0x11127, 0x1112b); - (0x1112c, 0x1112c); - (0x1112d, 0x11134); - (0x11136, 0x1113f); - (0x11144, 0x11144); - (0x11145, 0x11146); - (0x11147, 0x11147); - (0x11150, 0x11172); - (0x11173, 0x11173); - (0x11176, 0x11176); - (0x11180, 0x11181); - (0x11182, 0x11182); - (0x11183, 0x111b2); - (0x111b3, 0x111b5); - (0x111b6, 0x111be); - (0x111bf, 0x111c0); - (0x111c1, 0x111c4); - (0x111c9, 0x111cc); - (0x111ce, 0x111ce); - (0x111cf, 0x111cf); - (0x111d0, 0x111d9); - (0x111da, 0x111da); - (0x111dc, 0x111dc); - (0x11200, 0x11211); - (0x11213, 0x1122b); - (0x1122c, 0x1122e); - (0x1122f, 0x11231); - (0x11232, 0x11233); - (0x11234, 0x11234); - (0x11235, 0x11235); - (0x11236, 0x11237); - (0x1123e, 0x1123e); - (0x11280, 0x11286); - (0x11288, 0x11288); - (0x1128a, 0x1128d); - (0x1128f, 0x1129d); - (0x1129f, 0x112a8); - (0x112b0, 0x112de); - (0x112df, 0x112df); - (0x112e0, 0x112e2); - (0x112e3, 0x112ea); - (0x112f0, 0x112f9); - (0x11300, 0x11301); - (0x11302, 0x11303); - (0x11305, 0x1130c); - (0x1130f, 0x11310); - (0x11313, 0x11328); - (0x1132a, 0x11330); - (0x11332, 0x11333); - (0x11335, 0x11339); - (0x1133b, 0x1133c); - (0x1133d, 0x1133d); - (0x1133e, 0x1133f); - (0x11340, 0x11340); - (0x11341, 0x11344); - (0x11347, 0x11348); - (0x1134b, 0x1134d); - (0x11350, 0x11350); - (0x11357, 0x11357); - (0x1135d, 0x11361); - (0x11362, 0x11363); - (0x11366, 0x1136c); - (0x11370, 0x11374); - (0x11400, 0x11434); - (0x11435, 0x11437); - (0x11438, 0x1143f); - (0x11440, 0x11441); - (0x11442, 0x11444); - (0x11445, 0x11445); - (0x11446, 0x11446); - (0x11447, 0x1144a); - (0x11450, 0x11459); - (0x1145e, 0x1145e); - (0x1145f, 0x11461); - (0x11480, 0x114af); - (0x114b0, 0x114b2); - (0x114b3, 0x114b8); - (0x114b9, 0x114b9); - (0x114ba, 0x114ba); - (0x114bb, 0x114be); - (0x114bf, 0x114c0); - (0x114c1, 0x114c1); - (0x114c2, 0x114c3); - (0x114c4, 0x114c5); - (0x114c7, 0x114c7); - (0x114d0, 0x114d9); - (0x11580, 0x115ae); - (0x115af, 0x115b1); - (0x115b2, 0x115b5); - (0x115b8, 0x115bb); - (0x115bc, 0x115bd); - (0x115be, 0x115be); - (0x115bf, 0x115c0); - (0x115d8, 0x115db); - (0x115dc, 0x115dd); - (0x11600, 0x1162f); - (0x11630, 0x11632); - (0x11633, 0x1163a); - (0x1163b, 0x1163c); - (0x1163d, 0x1163d); - (0x1163e, 0x1163e); - (0x1163f, 0x11640); - (0x11644, 0x11644); - (0x11650, 0x11659); - (0x11680, 0x116aa); - (0x116ab, 0x116ab); - (0x116ac, 0x116ac); - (0x116ad, 0x116ad); - (0x116ae, 0x116af); - (0x116b0, 0x116b5); - (0x116b6, 0x116b6); - (0x116b7, 0x116b7); - (0x116b8, 0x116b8); - (0x116c0, 0x116c9); - (0x11700, 0x1171a); - (0x1171d, 0x1171f); - (0x11720, 0x11721); - (0x11722, 0x11725); - (0x11726, 0x11726); - (0x11727, 0x1172b); - (0x11730, 0x11739); - (0x11740, 0x11746); - (0x11800, 0x1182b); - (0x1182c, 0x1182e); - (0x1182f, 0x11837); - (0x11838, 0x11838); - (0x11839, 0x1183a); - (0x118a0, 0x118df); - (0x118e0, 0x118e9); - (0x118ff, 0x11906); - (0x11909, 0x11909); - (0x1190c, 0x11913); - (0x11915, 0x11916); - (0x11918, 0x1192f); - (0x11930, 0x11935); - (0x11937, 0x11938); - (0x1193b, 0x1193c); - (0x1193d, 0x1193d); - (0x1193e, 0x1193e); - (0x1193f, 0x1193f); - (0x11940, 0x11940); - (0x11941, 0x11941); - (0x11942, 0x11942); - (0x11943, 0x11943); - (0x11950, 0x11959); - (0x119a0, 0x119a7); - (0x119aa, 0x119d0); - (0x119d1, 0x119d3); - (0x119d4, 0x119d7); - (0x119da, 0x119db); - (0x119dc, 0x119df); - (0x119e0, 0x119e0); - (0x119e1, 0x119e1); - (0x119e3, 0x119e3); - (0x119e4, 0x119e4); - (0x11a00, 0x11a00); - (0x11a01, 0x11a0a); - (0x11a0b, 0x11a32); - (0x11a33, 0x11a38); - (0x11a39, 0x11a39); - (0x11a3a, 0x11a3a); - (0x11a3b, 0x11a3e); - (0x11a47, 0x11a47); - (0x11a50, 0x11a50); - (0x11a51, 0x11a56); - (0x11a57, 0x11a58); - (0x11a59, 0x11a5b); - (0x11a5c, 0x11a89); - (0x11a8a, 0x11a96); - (0x11a97, 0x11a97); - (0x11a98, 0x11a99); - (0x11a9d, 0x11a9d); - (0x11ab0, 0x11af8); - (0x11c00, 0x11c08); - (0x11c0a, 0x11c2e); - (0x11c2f, 0x11c2f); - (0x11c30, 0x11c36); - (0x11c38, 0x11c3d); - (0x11c3e, 0x11c3e); - (0x11c3f, 0x11c3f); - (0x11c40, 0x11c40); - (0x11c50, 0x11c59); - (0x11c72, 0x11c8f); - (0x11c92, 0x11ca7); - (0x11ca9, 0x11ca9); - (0x11caa, 0x11cb0); - (0x11cb1, 0x11cb1); - (0x11cb2, 0x11cb3); - (0x11cb4, 0x11cb4); - (0x11cb5, 0x11cb6); - (0x11d00, 0x11d06); - (0x11d08, 0x11d09); - (0x11d0b, 0x11d30); - (0x11d31, 0x11d36); - (0x11d3a, 0x11d3a); - (0x11d3c, 0x11d3d); - (0x11d3f, 0x11d45); - (0x11d46, 0x11d46); - (0x11d47, 0x11d47); - (0x11d50, 0x11d59); - (0x11d60, 0x11d65); - (0x11d67, 0x11d68); - (0x11d6a, 0x11d89); - (0x11d8a, 0x11d8e); - (0x11d90, 0x11d91); - (0x11d93, 0x11d94); - (0x11d95, 0x11d95); - (0x11d96, 0x11d96); - (0x11d97, 0x11d97); - (0x11d98, 0x11d98); - (0x11da0, 0x11da9); - (0x11ee0, 0x11ef2); - (0x11ef3, 0x11ef4); - (0x11ef5, 0x11ef6); - (0x11fb0, 0x11fb0); - (0x12000, 0x12399); - (0x12400, 0x1246e); - (0x12480, 0x12543); - (0x12f90, 0x12ff0); - (0x13000, 0x1342e); - (0x14400, 0x14646); - (0x16800, 0x16a38); - (0x16a40, 0x16a5e); - (0x16a60, 0x16a69); - (0x16a70, 0x16abe); - (0x16ac0, 0x16ac9); - (0x16ad0, 0x16aed); - (0x16af0, 0x16af4); - (0x16b00, 0x16b2f); - (0x16b30, 0x16b36); - (0x16b40, 0x16b43); - (0x16b50, 0x16b59); - (0x16b63, 0x16b77); - (0x16b7d, 0x16b8f); - (0x16e40, 0x16e7f); - (0x16f00, 0x16f4a); - (0x16f4f, 0x16f4f); - (0x16f50, 0x16f50); - (0x16f51, 0x16f87); - (0x16f8f, 0x16f92); - (0x16f93, 0x16f9f); - (0x16fe0, 0x16fe1); - (0x16fe3, 0x16fe3); - (0x16fe4, 0x16fe4); - (0x16ff0, 0x16ff1); - (0x17000, 0x187f7); - (0x18800, 0x18cd5); - (0x18d00, 0x18d08); - (0x1aff0, 0x1aff3); - (0x1aff5, 0x1affb); - (0x1affd, 0x1affe); - (0x1b000, 0x1b122); - (0x1b150, 0x1b152); - (0x1b164, 0x1b167); - (0x1b170, 0x1b2fb); - (0x1bc00, 0x1bc6a); - (0x1bc70, 0x1bc7c); - (0x1bc80, 0x1bc88); - (0x1bc90, 0x1bc99); - (0x1bc9d, 0x1bc9e); - (0x1cf00, 0x1cf2d); - (0x1cf30, 0x1cf46); - (0x1d165, 0x1d166); - (0x1d167, 0x1d169); - (0x1d16d, 0x1d172); - (0x1d17b, 0x1d182); - (0x1d185, 0x1d18b); - (0x1d1aa, 0x1d1ad); - (0x1d242, 0x1d244); - (0x1d400, 0x1d454); - (0x1d456, 0x1d49c); - (0x1d49e, 0x1d49f); - (0x1d4a2, 0x1d4a2); - (0x1d4a5, 0x1d4a6); - (0x1d4a9, 0x1d4ac); - (0x1d4ae, 0x1d4b9); - (0x1d4bb, 0x1d4bb); - (0x1d4bd, 0x1d4c3); - (0x1d4c5, 0x1d505); - (0x1d507, 0x1d50a); - (0x1d50d, 0x1d514); - (0x1d516, 0x1d51c); - (0x1d51e, 0x1d539); - (0x1d53b, 0x1d53e); - (0x1d540, 0x1d544); - (0x1d546, 0x1d546); - (0x1d54a, 0x1d550); - (0x1d552, 0x1d6a5); - (0x1d6a8, 0x1d6c0); - (0x1d6c2, 0x1d6da); - (0x1d6dc, 0x1d6fa); - (0x1d6fc, 0x1d714); - (0x1d716, 0x1d734); - (0x1d736, 0x1d74e); - (0x1d750, 0x1d76e); - (0x1d770, 0x1d788); - (0x1d78a, 0x1d7a8); - (0x1d7aa, 0x1d7c2); - (0x1d7c4, 0x1d7cb); - (0x1d7ce, 0x1d7ff); - (0x1da00, 0x1da36); - (0x1da3b, 0x1da6c); - (0x1da75, 0x1da75); - (0x1da84, 0x1da84); - (0x1da9b, 0x1da9f); - (0x1daa1, 0x1daaf); - (0x1df00, 0x1df09); - (0x1df0a, 0x1df0a); - (0x1df0b, 0x1df1e); - (0x1e000, 0x1e006); - (0x1e008, 0x1e018); - (0x1e01b, 0x1e021); - (0x1e023, 0x1e024); - (0x1e026, 0x1e02a); - (0x1e100, 0x1e12c); - (0x1e130, 0x1e136); - (0x1e137, 0x1e13d); - (0x1e140, 0x1e149); - (0x1e14e, 0x1e14e); - (0x1e290, 0x1e2ad); - (0x1e2ae, 0x1e2ae); - (0x1e2c0, 0x1e2eb); - (0x1e2ec, 0x1e2ef); - (0x1e2f0, 0x1e2f9); - (0x1e7e0, 0x1e7e6); - (0x1e7e8, 0x1e7eb); - (0x1e7ed, 0x1e7ee); - (0x1e7f0, 0x1e7fe); - (0x1e800, 0x1e8c4); - (0x1e8d0, 0x1e8d6); - (0x1e900, 0x1e943); - (0x1e944, 0x1e94a); - (0x1e94b, 0x1e94b); - (0x1e950, 0x1e959); - (0x1ee00, 0x1ee03); - (0x1ee05, 0x1ee1f); - (0x1ee21, 0x1ee22); - (0x1ee24, 0x1ee24); - (0x1ee27, 0x1ee27); - (0x1ee29, 0x1ee32); - (0x1ee34, 0x1ee37); - (0x1ee39, 0x1ee39); - (0x1ee3b, 0x1ee3b); - (0x1ee42, 0x1ee42); - (0x1ee47, 0x1ee47); - (0x1ee49, 0x1ee49); - (0x1ee4b, 0x1ee4b); - (0x1ee4d, 0x1ee4f); - (0x1ee51, 0x1ee52); - (0x1ee54, 0x1ee54); - (0x1ee57, 0x1ee57); - (0x1ee59, 0x1ee59); - (0x1ee5b, 0x1ee5b); - (0x1ee5d, 0x1ee5d); - (0x1ee5f, 0x1ee5f); - (0x1ee61, 0x1ee62); - (0x1ee64, 0x1ee64); - (0x1ee67, 0x1ee6a); - (0x1ee6c, 0x1ee72); - (0x1ee74, 0x1ee77); - (0x1ee79, 0x1ee7c); - (0x1ee7e, 0x1ee7e); - (0x1ee80, 0x1ee89); - (0x1ee8b, 0x1ee9b); - (0x1eea1, 0x1eea3); - (0x1eea5, 0x1eea9); - (0x1eeab, 0x1eebb); - (0x1fbf0, 0x1fbf9); - (0x20000, 0x2a6df); - (0x2a700, 0x2b738); - (0x2b740, 0x2b81d); - (0xe0100, 0xe01ef); - (0x30000, 0x3134a); - (0x2f800, 0x2fa1d); - (0x2ceb0, 0x2ebe0); - (0x2b820, 0x2cea1); - ] + [0x30, 0x39; 0x41, 0x5a; 0x5f, 0x5f; 0x61, 0x7a; 0xaa, 0xaa; + 0xb5, 0xb5; 0xb7, 0xb7; 0xba, 0xba; 0xc0, 0xd6; 0xd8, 0xf6; + 0xf8, 0x1ba; 0x1bb, 0x1bb; 0x1bc, 0x1bf; 0x1c0, 0x1c3; 0x1c4, 0x293; + 0x294, 0x294; 0x295, 0x2af; 0x2b0, 0x2c1; 0x2c6, 0x2d1; 0x2e0, 0x2e4; + 0x2ec, 0x2ec; 0x2ee, 0x2ee; 0x300, 0x36f; 0x370, 0x373; 0x374, 0x374; + 0x376, 0x377; 0x37b, 0x37d; 0x37f, 0x37f; 0x386, 0x386; 0x387, 0x387; + 0x388, 0x38a; 0x38c, 0x38c; 0x38e, 0x3a1; 0x3a3, 0x3f5; 0x3f7, 0x481; + 0x483, 0x487; 0x48a, 0x52f; 0x531, 0x556; 0x559, 0x559; 0x560, 0x588; + 0x591, 0x5bd; 0x5bf, 0x5bf; 0x5c1, 0x5c2; 0x5c4, 0x5c5; 0x5c7, 0x5c7; + 0x5d0, 0x5ea; 0x5ef, 0x5f2; 0x610, 0x61a; 0x620, 0x63f; 0x640, 0x640; + 0x641, 0x64a; 0x64b, 0x65f; 0x660, 0x669; 0x66e, 0x66f; 0x670, 0x670; + 0x671, 0x6d3; 0x6d5, 0x6d5; 0x6d6, 0x6dc; 0x6df, 0x6e4; 0x6e5, 0x6e6; + 0x6e7, 0x6e8; 0x6ea, 0x6ed; 0x6ee, 0x6ef; 0x6f0, 0x6f9; 0x6fa, 0x6fc; + 0x6ff, 0x6ff; 0x710, 0x710; 0x711, 0x711; 0x712, 0x72f; 0x730, 0x74a; + 0x74d, 0x7a5; 0x7a6, 0x7b0; 0x7b1, 0x7b1; 0x7c0, 0x7c9; 0x7ca, 0x7ea; + 0x7eb, 0x7f3; 0x7f4, 0x7f5; 0x7fa, 0x7fa; 0x7fd, 0x7fd; 0x800, 0x815; + 0x816, 0x819; 0x81a, 0x81a; 0x81b, 0x823; 0x824, 0x824; 0x825, 0x827; + 0x828, 0x828; 0x829, 0x82d; 0x840, 0x858; 0x859, 0x85b; 0x860, 0x86a; + 0x870, 0x887; 0x889, 0x88e; 0x898, 0x89f; 0x8a0, 0x8c8; 0x8c9, 0x8c9; + 0x8ca, 0x8e1; 0x8e3, 0x902; 0x903, 0x903; 0x904, 0x939; 0x93a, 0x93a; + 0x93b, 0x93b; 0x93c, 0x93c; 0x93d, 0x93d; 0x93e, 0x940; 0x941, 0x948; + 0x949, 0x94c; 0x94d, 0x94d; 0x94e, 0x94f; 0x950, 0x950; 0x951, 0x957; + 0x958, 0x961; 0x962, 0x963; 0x966, 0x96f; 0x971, 0x971; 0x972, 0x980; + 0x981, 0x981; 0x982, 0x983; 0x985, 0x98c; 0x98f, 0x990; 0x993, 0x9a8; + 0x9aa, 0x9b0; 0x9b2, 0x9b2; 0x9b6, 0x9b9; 0x9bc, 0x9bc; 0x9bd, 0x9bd; + 0x9be, 0x9c0; 0x9c1, 0x9c4; 0x9c7, 0x9c8; 0x9cb, 0x9cc; 0x9cd, 0x9cd; + 0x9ce, 0x9ce; 0x9d7, 0x9d7; 0x9dc, 0x9dd; 0x9df, 0x9e1; 0x9e2, 0x9e3; + 0x9e6, 0x9ef; 0x9f0, 0x9f1; 0x9fc, 0x9fc; 0x9fe, 0x9fe; 0xa01, 0xa02; + 0xa03, 0xa03; 0xa05, 0xa0a; 0xa0f, 0xa10; 0xa13, 0xa28; 0xa2a, 0xa30; + 0xa32, 0xa33; 0xa35, 0xa36; 0xa38, 0xa39; 0xa3c, 0xa3c; 0xa3e, 0xa40; + 0xa41, 0xa42; 0xa47, 0xa48; 0xa4b, 0xa4d; 0xa51, 0xa51; 0xa59, 0xa5c; + 0xa5e, 0xa5e; 0xa66, 0xa6f; 0xa70, 0xa71; 0xa72, 0xa74; 0xa75, 0xa75; + 0xa81, 0xa82; 0xa83, 0xa83; 0xa85, 0xa8d; 0xa8f, 0xa91; 0xa93, 0xaa8; + 0xaaa, 0xab0; 0xab2, 0xab3; 0xab5, 0xab9; 0xabc, 0xabc; 0xabd, 0xabd; + 0xabe, 0xac0; 0xac1, 0xac5; 0xac7, 0xac8; 0xac9, 0xac9; 0xacb, 0xacc; + 0xacd, 0xacd; 0xad0, 0xad0; 0xae0, 0xae1; 0xae2, 0xae3; 0xae6, 0xaef; + 0xaf9, 0xaf9; 0xafa, 0xaff; 0xb01, 0xb01; 0xb02, 0xb03; 0xb05, 0xb0c; + 0xb0f, 0xb10; 0xb13, 0xb28; 0xb2a, 0xb30; 0xb32, 0xb33; 0xb35, 0xb39; + 0xb3c, 0xb3c; 0xb3d, 0xb3d; 0xb3e, 0xb3e; 0xb3f, 0xb3f; 0xb40, 0xb40; + 0xb41, 0xb44; 0xb47, 0xb48; 0xb4b, 0xb4c; 0xb4d, 0xb4d; 0xb55, 0xb56; + 0xb57, 0xb57; 0xb5c, 0xb5d; 0xb5f, 0xb61; 0xb62, 0xb63; 0xb66, 0xb6f; + 0xb71, 0xb71; 0xb82, 0xb82; 0xb83, 0xb83; 0xb85, 0xb8a; 0xb8e, 0xb90; + 0xb92, 0xb95; 0xb99, 0xb9a; 0xb9c, 0xb9c; 0xb9e, 0xb9f; 0xba3, 0xba4; + 0xba8, 0xbaa; 0xbae, 0xbb9; 0xbbe, 0xbbf; 0xbc0, 0xbc0; 0xbc1, 0xbc2; + 0xbc6, 0xbc8; 0xbca, 0xbcc; 0xbcd, 0xbcd; 0xbd0, 0xbd0; 0xbd7, 0xbd7; + 0xbe6, 0xbef; 0xc00, 0xc00; 0xc01, 0xc03; 0xc04, 0xc04; 0xc05, 0xc0c; + 0xc0e, 0xc10; 0xc12, 0xc28; 0xc2a, 0xc39; 0xc3c, 0xc3c; 0xc3d, 0xc3d; + 0xc3e, 0xc40; 0xc41, 0xc44; 0xc46, 0xc48; 0xc4a, 0xc4d; 0xc55, 0xc56; + 0xc58, 0xc5a; 0xc5d, 0xc5d; 0xc60, 0xc61; 0xc62, 0xc63; 0xc66, 0xc6f; + 0xc80, 0xc80; 0xc81, 0xc81; 0xc82, 0xc83; 0xc85, 0xc8c; 0xc8e, 0xc90; + 0xc92, 0xca8; 0xcaa, 0xcb3; 0xcb5, 0xcb9; 0xcbc, 0xcbc; 0xcbd, 0xcbd; + 0xcbe, 0xcbe; 0xcbf, 0xcbf; 0xcc0, 0xcc4; 0xcc6, 0xcc6; 0xcc7, 0xcc8; + 0xcca, 0xccb; 0xccc, 0xccd; 0xcd5, 0xcd6; 0xcdd, 0xcde; 0xce0, 0xce1; + 0xce2, 0xce3; 0xce6, 0xcef; 0xcf1, 0xcf2; 0xd00, 0xd01; 0xd02, 0xd03; + 0xd04, 0xd0c; 0xd0e, 0xd10; 0xd12, 0xd3a; 0xd3b, 0xd3c; 0xd3d, 0xd3d; + 0xd3e, 0xd40; 0xd41, 0xd44; 0xd46, 0xd48; 0xd4a, 0xd4c; 0xd4d, 0xd4d; + 0xd4e, 0xd4e; 0xd54, 0xd56; 0xd57, 0xd57; 0xd5f, 0xd61; 0xd62, 0xd63; + 0xd66, 0xd6f; 0xd7a, 0xd7f; 0xd81, 0xd81; 0xd82, 0xd83; 0xd85, 0xd96; + 0xd9a, 0xdb1; 0xdb3, 0xdbb; 0xdbd, 0xdbd; 0xdc0, 0xdc6; 0xdca, 0xdca; + 0xdcf, 0xdd1; 0xdd2, 0xdd4; 0xdd6, 0xdd6; 0xdd8, 0xddf; 0xde6, 0xdef; + 0xdf2, 0xdf3; 0xe01, 0xe30; 0xe31, 0xe31; 0xe32, 0xe33; 0xe34, 0xe3a; + 0xe40, 0xe45; 0xe46, 0xe46; 0xe47, 0xe4e; 0xe50, 0xe59; 0xe81, 0xe82; + 0xe84, 0xe84; 0xe86, 0xe8a; 0xe8c, 0xea3; 0xea5, 0xea5; 0xea7, 0xeb0; + 0xeb1, 0xeb1; 0xeb2, 0xeb3; 0xeb4, 0xebc; 0xebd, 0xebd; 0xec0, 0xec4; + 0xec6, 0xec6; 0xec8, 0xecd; 0xed0, 0xed9; 0xedc, 0xedf; 0xf00, 0xf00; + 0xf18, 0xf19; 0xf20, 0xf29; 0xf35, 0xf35; 0xf37, 0xf37; 0xf39, 0xf39; + 0xf3e, 0xf3f; 0xf40, 0xf47; 0xf49, 0xf6c; 0xf71, 0xf7e; 0xf7f, 0xf7f; + 0xf80, 0xf84; 0xf86, 0xf87; 0xf88, 0xf8c; 0xf8d, 0xf97; 0xf99, 0xfbc; + 0xfc6, 0xfc6; 0x1000, 0x102a; 0x102b, 0x102c; 0x102d, 0x1030; 0x1031, 0x1031; + 0x1032, 0x1037; 0x1038, 0x1038; 0x1039, 0x103a; 0x103b, 0x103c; 0x103d, 0x103e; + 0x103f, 0x103f; 0x1040, 0x1049; 0x1050, 0x1055; 0x1056, 0x1057; 0x1058, 0x1059; + 0x105a, 0x105d; 0x105e, 0x1060; 0x1061, 0x1061; 0x1062, 0x1064; 0x1065, 0x1066; + 0x1067, 0x106d; 0x106e, 0x1070; 0x1071, 0x1074; 0x1075, 0x1081; 0x1082, 0x1082; + 0x1083, 0x1084; 0x1085, 0x1086; 0x1087, 0x108c; 0x108d, 0x108d; 0x108e, 0x108e; + 0x108f, 0x108f; 0x1090, 0x1099; 0x109a, 0x109c; 0x109d, 0x109d; 0x10a0, 0x10c5; + 0x10c7, 0x10c7; 0x10cd, 0x10cd; 0x10d0, 0x10fa; 0x10fc, 0x10fc; 0x10fd, 0x10ff; + 0x1100, 0x1248; 0x124a, 0x124d; 0x1250, 0x1256; 0x1258, 0x1258; 0x125a, 0x125d; + 0x1260, 0x1288; 0x128a, 0x128d; 0x1290, 0x12b0; 0x12b2, 0x12b5; 0x12b8, 0x12be; + 0x12c0, 0x12c0; 0x12c2, 0x12c5; 0x12c8, 0x12d6; 0x12d8, 0x1310; 0x1312, 0x1315; + 0x1318, 0x135a; 0x135d, 0x135f; 0x1369, 0x1371; 0x1380, 0x138f; 0x13a0, 0x13f5; + 0x13f8, 0x13fd; 0x1401, 0x166c; 0x166f, 0x167f; 0x1681, 0x169a; 0x16a0, 0x16ea; + 0x16ee, 0x16f0; 0x16f1, 0x16f8; 0x1700, 0x1711; 0x1712, 0x1714; 0x1715, 0x1715; + 0x171f, 0x1731; 0x1732, 0x1733; 0x1734, 0x1734; 0x1740, 0x1751; 0x1752, 0x1753; + 0x1760, 0x176c; 0x176e, 0x1770; 0x1772, 0x1773; 0x1780, 0x17b3; 0x17b4, 0x17b5; + 0x17b6, 0x17b6; 0x17b7, 0x17bd; 0x17be, 0x17c5; 0x17c6, 0x17c6; 0x17c7, 0x17c8; + 0x17c9, 0x17d3; 0x17d7, 0x17d7; 0x17dc, 0x17dc; 0x17dd, 0x17dd; 0x17e0, 0x17e9; + 0x180b, 0x180d; 0x180f, 0x180f; 0x1810, 0x1819; 0x1820, 0x1842; 0x1843, 0x1843; + 0x1844, 0x1878; 0x1880, 0x1884; 0x1885, 0x1886; 0x1887, 0x18a8; 0x18a9, 0x18a9; + 0x18aa, 0x18aa; 0x18b0, 0x18f5; 0x1900, 0x191e; 0x1920, 0x1922; 0x1923, 0x1926; + 0x1927, 0x1928; 0x1929, 0x192b; 0x1930, 0x1931; 0x1932, 0x1932; 0x1933, 0x1938; + 0x1939, 0x193b; 0x1946, 0x194f; 0x1950, 0x196d; 0x1970, 0x1974; 0x1980, 0x19ab; + 0x19b0, 0x19c9; 0x19d0, 0x19d9; 0x19da, 0x19da; 0x1a00, 0x1a16; 0x1a17, 0x1a18; + 0x1a19, 0x1a1a; 0x1a1b, 0x1a1b; 0x1a20, 0x1a54; 0x1a55, 0x1a55; 0x1a56, 0x1a56; + 0x1a57, 0x1a57; 0x1a58, 0x1a5e; 0x1a60, 0x1a60; 0x1a61, 0x1a61; 0x1a62, 0x1a62; + 0x1a63, 0x1a64; 0x1a65, 0x1a6c; 0x1a6d, 0x1a72; 0x1a73, 0x1a7c; 0x1a7f, 0x1a7f; + 0x1a80, 0x1a89; 0x1a90, 0x1a99; 0x1aa7, 0x1aa7; 0x1ab0, 0x1abd; 0x1abf, 0x1ace; + 0x1b00, 0x1b03; 0x1b04, 0x1b04; 0x1b05, 0x1b33; 0x1b34, 0x1b34; 0x1b35, 0x1b35; + 0x1b36, 0x1b3a; 0x1b3b, 0x1b3b; 0x1b3c, 0x1b3c; 0x1b3d, 0x1b41; 0x1b42, 0x1b42; + 0x1b43, 0x1b44; 0x1b45, 0x1b4c; 0x1b50, 0x1b59; 0x1b6b, 0x1b73; 0x1b80, 0x1b81; + 0x1b82, 0x1b82; 0x1b83, 0x1ba0; 0x1ba1, 0x1ba1; 0x1ba2, 0x1ba5; 0x1ba6, 0x1ba7; + 0x1ba8, 0x1ba9; 0x1baa, 0x1baa; 0x1bab, 0x1bad; 0x1bae, 0x1baf; 0x1bb0, 0x1bb9; + 0x1bba, 0x1be5; 0x1be6, 0x1be6; 0x1be7, 0x1be7; 0x1be8, 0x1be9; 0x1bea, 0x1bec; + 0x1bed, 0x1bed; 0x1bee, 0x1bee; 0x1bef, 0x1bf1; 0x1bf2, 0x1bf3; 0x1c00, 0x1c23; + 0x1c24, 0x1c2b; 0x1c2c, 0x1c33; 0x1c34, 0x1c35; 0x1c36, 0x1c37; 0x1c40, 0x1c49; + 0x1c4d, 0x1c4f; 0x1c50, 0x1c59; 0x1c5a, 0x1c77; 0x1c78, 0x1c7d; 0x1c80, 0x1c88; + 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 0x1cd0, 0x1cd2; 0x1cd4, 0x1ce0; 0x1ce1, 0x1ce1; + 0x1ce2, 0x1ce8; 0x1ce9, 0x1cec; 0x1ced, 0x1ced; 0x1cee, 0x1cf3; 0x1cf4, 0x1cf4; + 0x1cf5, 0x1cf6; 0x1cf7, 0x1cf7; 0x1cf8, 0x1cf9; 0x1cfa, 0x1cfa; 0x1d00, 0x1d2b; + 0x1d2c, 0x1d6a; 0x1d6b, 0x1d77; 0x1d78, 0x1d78; 0x1d79, 0x1d9a; 0x1d9b, 0x1dbf; + 0x1dc0, 0x1dff; 0x1e00, 0x1f15; 0x1f18, 0x1f1d; 0x1f20, 0x1f45; 0x1f48, 0x1f4d; + 0x1f50, 0x1f57; 0x1f59, 0x1f59; 0x1f5b, 0x1f5b; 0x1f5d, 0x1f5d; 0x1f5f, 0x1f7d; + 0x1f80, 0x1fb4; 0x1fb6, 0x1fbc; 0x1fbe, 0x1fbe; 0x1fc2, 0x1fc4; 0x1fc6, 0x1fcc; + 0x1fd0, 0x1fd3; 0x1fd6, 0x1fdb; 0x1fe0, 0x1fec; 0x1ff2, 0x1ff4; 0x1ff6, 0x1ffc; + 0x203f, 0x2040; 0x2054, 0x2054; 0x2071, 0x2071; 0x207f, 0x207f; 0x2090, 0x209c; + 0x20d0, 0x20dc; 0x20e1, 0x20e1; 0x20e5, 0x20f0; 0x2102, 0x2102; 0x2107, 0x2107; + 0x210a, 0x2113; 0x2115, 0x2115; 0x2118, 0x2118; 0x2119, 0x211d; 0x2124, 0x2124; + 0x2126, 0x2126; 0x2128, 0x2128; 0x212a, 0x212d; 0x212e, 0x212e; 0x212f, 0x2134; + 0x2135, 0x2138; 0x2139, 0x2139; 0x213c, 0x213f; 0x2145, 0x2149; 0x214e, 0x214e; + 0x2160, 0x2182; 0x2183, 0x2184; 0x2185, 0x2188; 0x2c00, 0x2c7b; 0x2c7c, 0x2c7d; + 0x2c7e, 0x2ce4; 0x2ceb, 0x2cee; 0x2cef, 0x2cf1; 0x2cf2, 0x2cf3; 0x2d00, 0x2d25; + 0x2d27, 0x2d27; 0x2d2d, 0x2d2d; 0x2d30, 0x2d67; 0x2d6f, 0x2d6f; 0x2d7f, 0x2d7f; + 0x2d80, 0x2d96; 0x2da0, 0x2da6; 0x2da8, 0x2dae; 0x2db0, 0x2db6; 0x2db8, 0x2dbe; + 0x2dc0, 0x2dc6; 0x2dc8, 0x2dce; 0x2dd0, 0x2dd6; 0x2dd8, 0x2dde; 0x2de0, 0x2dff; + 0x3005, 0x3005; 0x3006, 0x3006; 0x3007, 0x3007; 0x3021, 0x3029; 0x302a, 0x302d; + 0x302e, 0x302f; 0x3031, 0x3035; 0x3038, 0x303a; 0x303b, 0x303b; 0x303c, 0x303c; + 0x3041, 0x3096; 0x3099, 0x309a; 0x309d, 0x309e; 0x309f, 0x309f; 0x30a1, 0x30fa; + 0x30fc, 0x30fe; 0x30ff, 0x30ff; 0x3105, 0x312f; 0x3131, 0x318e; 0x31a0, 0x31bf; + 0x31f0, 0x31ff; 0x3400, 0x4dbf; 0x4e00, 0xa014; 0xa015, 0xa015; 0xa016, 0xa48c; + 0xa4d0, 0xa4f7; 0xa4f8, 0xa4fd; 0xa500, 0xa60b; 0xa60c, 0xa60c; 0xa610, 0xa61f; + 0xa620, 0xa629; 0xa62a, 0xa62b; 0xa640, 0xa66d; 0xa66e, 0xa66e; 0xa66f, 0xa66f; + 0xa674, 0xa67d; 0xa67f, 0xa67f; 0xa680, 0xa69b; 0xa69c, 0xa69d; 0xa69e, 0xa69f; + 0xa6a0, 0xa6e5; 0xa6e6, 0xa6ef; 0xa6f0, 0xa6f1; 0xa717, 0xa71f; 0xa722, 0xa76f; + 0xa770, 0xa770; 0xa771, 0xa787; 0xa788, 0xa788; 0xa78b, 0xa78e; 0xa78f, 0xa78f; + 0xa790, 0xa7ca; 0xa7d0, 0xa7d1; 0xa7d3, 0xa7d3; 0xa7d5, 0xa7d9; 0xa7f2, 0xa7f4; + 0xa7f5, 0xa7f6; 0xa7f7, 0xa7f7; 0xa7f8, 0xa7f9; 0xa7fa, 0xa7fa; 0xa7fb, 0xa801; + 0xa802, 0xa802; 0xa803, 0xa805; 0xa806, 0xa806; 0xa807, 0xa80a; 0xa80b, 0xa80b; + 0xa80c, 0xa822; 0xa823, 0xa824; 0xa825, 0xa826; 0xa827, 0xa827; 0xa82c, 0xa82c; + 0xa840, 0xa873; 0xa880, 0xa881; 0xa882, 0xa8b3; 0xa8b4, 0xa8c3; 0xa8c4, 0xa8c5; + 0xa8d0, 0xa8d9; 0xa8e0, 0xa8f1; 0xa8f2, 0xa8f7; 0xa8fb, 0xa8fb; 0xa8fd, 0xa8fe; + 0xa8ff, 0xa8ff; 0xa900, 0xa909; 0xa90a, 0xa925; 0xa926, 0xa92d; 0xa930, 0xa946; + 0xa947, 0xa951; 0xa952, 0xa953; 0xa960, 0xa97c; 0xa980, 0xa982; 0xa983, 0xa983; + 0xa984, 0xa9b2; 0xa9b3, 0xa9b3; 0xa9b4, 0xa9b5; 0xa9b6, 0xa9b9; 0xa9ba, 0xa9bb; + 0xa9bc, 0xa9bd; 0xa9be, 0xa9c0; 0xa9cf, 0xa9cf; 0xa9d0, 0xa9d9; 0xa9e0, 0xa9e4; + 0xa9e5, 0xa9e5; 0xa9e6, 0xa9e6; 0xa9e7, 0xa9ef; 0xa9f0, 0xa9f9; 0xa9fa, 0xa9fe; + 0xaa00, 0xaa28; 0xaa29, 0xaa2e; 0xaa2f, 0xaa30; 0xaa31, 0xaa32; 0xaa33, 0xaa34; + 0xaa35, 0xaa36; 0xaa40, 0xaa42; 0xaa43, 0xaa43; 0xaa44, 0xaa4b; 0xaa4c, 0xaa4c; + 0xaa4d, 0xaa4d; 0xaa50, 0xaa59; 0xaa60, 0xaa6f; 0xaa70, 0xaa70; 0xaa71, 0xaa76; + 0xaa7a, 0xaa7a; 0xaa7b, 0xaa7b; 0xaa7c, 0xaa7c; 0xaa7d, 0xaa7d; 0xaa7e, 0xaaaf; + 0xaab0, 0xaab0; 0xaab1, 0xaab1; 0xaab2, 0xaab4; 0xaab5, 0xaab6; 0xaab7, 0xaab8; + 0xaab9, 0xaabd; 0xaabe, 0xaabf; 0xaac0, 0xaac0; 0xaac1, 0xaac1; 0xaac2, 0xaac2; + 0xaadb, 0xaadc; 0xaadd, 0xaadd; 0xaae0, 0xaaea; 0xaaeb, 0xaaeb; 0xaaec, 0xaaed; + 0xaaee, 0xaaef; 0xaaf2, 0xaaf2; 0xaaf3, 0xaaf4; 0xaaf5, 0xaaf5; 0xaaf6, 0xaaf6; + 0xab01, 0xab06; 0xab09, 0xab0e; 0xab11, 0xab16; 0xab20, 0xab26; 0xab28, 0xab2e; + 0xab30, 0xab5a; 0xab5c, 0xab5f; 0xab60, 0xab68; 0xab69, 0xab69; 0xab70, 0xabbf; + 0xabc0, 0xabe2; 0xabe3, 0xabe4; 0xabe5, 0xabe5; 0xabe6, 0xabe7; 0xabe8, 0xabe8; + 0xabe9, 0xabea; 0xabec, 0xabec; 0xabed, 0xabed; 0xabf0, 0xabf9; 0xac00, 0xd7a3; + 0xd7b0, 0xd7c6; 0xd7cb, 0xd7fb; 0xf900, 0xfa6d; 0xfa70, 0xfad9; 0xfb00, 0xfb06; + 0xfb13, 0xfb17; 0xfb1d, 0xfb1d; 0xfb1e, 0xfb1e; 0xfb1f, 0xfb28; 0xfb2a, 0xfb36; + 0xfb38, 0xfb3c; 0xfb3e, 0xfb3e; 0xfb40, 0xfb41; 0xfb43, 0xfb44; 0xfb46, 0xfbb1; + 0xfbd3, 0xfc5d; 0xfc64, 0xfd3d; 0xfd50, 0xfd8f; 0xfd92, 0xfdc7; 0xfdf0, 0xfdf9; + 0xfe00, 0xfe0f; 0xfe20, 0xfe2f; 0xfe33, 0xfe34; 0xfe4d, 0xfe4f; 0xfe71, 0xfe71; + 0xfe73, 0xfe73; 0xfe77, 0xfe77; 0xfe79, 0xfe79; 0xfe7b, 0xfe7b; 0xfe7d, 0xfe7d; + 0xfe7f, 0xfefc; 0xff10, 0xff19; 0xff21, 0xff3a; 0xff3f, 0xff3f; 0xff41, 0xff5a; + 0xff66, 0xff6f; 0xff70, 0xff70; 0xff71, 0xff9d; 0xff9e, 0xff9f; 0xffa0, 0xffbe; + 0xffc2, 0xffc7; 0xffca, 0xffcf; 0xffd2, 0xffd7; 0xffda, 0xffdc; 0x10000, 0x1000b; + 0x1000d, 0x10026; 0x10028, 0x1003a; 0x1003c, 0x1003d; 0x1003f, 0x1004d; 0x10050, 0x1005d; + 0x10080, 0x100fa; 0x10140, 0x10174; 0x101fd, 0x101fd; 0x10280, 0x1029c; 0x102a0, 0x102d0; + 0x102e0, 0x102e0; 0x10300, 0x1031f; 0x1032d, 0x10340; 0x10341, 0x10341; 0x10342, 0x10349; + 0x1034a, 0x1034a; 0x10350, 0x10375; 0x10376, 0x1037a; 0x10380, 0x1039d; 0x103a0, 0x103c3; + 0x103c8, 0x103cf; 0x103d1, 0x103d5; 0x10400, 0x1044f; 0x10450, 0x1049d; 0x104a0, 0x104a9; + 0x104b0, 0x104d3; 0x104d8, 0x104fb; 0x10500, 0x10527; 0x10530, 0x10563; 0x10570, 0x1057a; + 0x1057c, 0x1058a; 0x1058c, 0x10592; 0x10594, 0x10595; 0x10597, 0x105a1; 0x105a3, 0x105b1; + 0x105b3, 0x105b9; 0x105bb, 0x105bc; 0x10600, 0x10736; 0x10740, 0x10755; 0x10760, 0x10767; + 0x10780, 0x10785; 0x10787, 0x107b0; 0x107b2, 0x107ba; 0x10800, 0x10805; 0x10808, 0x10808; + 0x1080a, 0x10835; 0x10837, 0x10838; 0x1083c, 0x1083c; 0x1083f, 0x10855; 0x10860, 0x10876; + 0x10880, 0x1089e; 0x108e0, 0x108f2; 0x108f4, 0x108f5; 0x10900, 0x10915; 0x10920, 0x10939; + 0x10980, 0x109b7; 0x109be, 0x109bf; 0x10a00, 0x10a00; 0x10a01, 0x10a03; 0x10a05, 0x10a06; + 0x10a0c, 0x10a0f; 0x10a10, 0x10a13; 0x10a15, 0x10a17; 0x10a19, 0x10a35; 0x10a38, 0x10a3a; + 0x10a3f, 0x10a3f; 0x10a60, 0x10a7c; 0x10a80, 0x10a9c; 0x10ac0, 0x10ac7; 0x10ac9, 0x10ae4; + 0x10ae5, 0x10ae6; 0x10b00, 0x10b35; 0x10b40, 0x10b55; 0x10b60, 0x10b72; 0x10b80, 0x10b91; + 0x10c00, 0x10c48; 0x10c80, 0x10cb2; 0x10cc0, 0x10cf2; 0x10d00, 0x10d23; 0x10d24, 0x10d27; + 0x10d30, 0x10d39; 0x10e80, 0x10ea9; 0x10eab, 0x10eac; 0x10eb0, 0x10eb1; 0x10f00, 0x10f1c; + 0x10f27, 0x10f27; 0x10f30, 0x10f45; 0x10f46, 0x10f50; 0x10f70, 0x10f81; 0x10f82, 0x10f85; + 0x10fb0, 0x10fc4; 0x10fe0, 0x10ff6; 0x11000, 0x11000; 0x11001, 0x11001; 0x11002, 0x11002; + 0x11003, 0x11037; 0x11038, 0x11046; 0x11066, 0x1106f; 0x11070, 0x11070; 0x11071, 0x11072; + 0x11073, 0x11074; 0x11075, 0x11075; 0x1107f, 0x11081; 0x11082, 0x11082; 0x11083, 0x110af; + 0x110b0, 0x110b2; 0x110b3, 0x110b6; 0x110b7, 0x110b8; 0x110b9, 0x110ba; 0x110c2, 0x110c2; + 0x110d0, 0x110e8; 0x110f0, 0x110f9; 0x11100, 0x11102; 0x11103, 0x11126; 0x11127, 0x1112b; + 0x1112c, 0x1112c; 0x1112d, 0x11134; 0x11136, 0x1113f; 0x11144, 0x11144; 0x11145, 0x11146; + 0x11147, 0x11147; 0x11150, 0x11172; 0x11173, 0x11173; 0x11176, 0x11176; 0x11180, 0x11181; + 0x11182, 0x11182; 0x11183, 0x111b2; 0x111b3, 0x111b5; 0x111b6, 0x111be; 0x111bf, 0x111c0; + 0x111c1, 0x111c4; 0x111c9, 0x111cc; 0x111ce, 0x111ce; 0x111cf, 0x111cf; 0x111d0, 0x111d9; + 0x111da, 0x111da; 0x111dc, 0x111dc; 0x11200, 0x11211; 0x11213, 0x1122b; 0x1122c, 0x1122e; + 0x1122f, 0x11231; 0x11232, 0x11233; 0x11234, 0x11234; 0x11235, 0x11235; 0x11236, 0x11237; + 0x1123e, 0x1123e; 0x11280, 0x11286; 0x11288, 0x11288; 0x1128a, 0x1128d; 0x1128f, 0x1129d; + 0x1129f, 0x112a8; 0x112b0, 0x112de; 0x112df, 0x112df; 0x112e0, 0x112e2; 0x112e3, 0x112ea; + 0x112f0, 0x112f9; 0x11300, 0x11301; 0x11302, 0x11303; 0x11305, 0x1130c; 0x1130f, 0x11310; + 0x11313, 0x11328; 0x1132a, 0x11330; 0x11332, 0x11333; 0x11335, 0x11339; 0x1133b, 0x1133c; + 0x1133d, 0x1133d; 0x1133e, 0x1133f; 0x11340, 0x11340; 0x11341, 0x11344; 0x11347, 0x11348; + 0x1134b, 0x1134d; 0x11350, 0x11350; 0x11357, 0x11357; 0x1135d, 0x11361; 0x11362, 0x11363; + 0x11366, 0x1136c; 0x11370, 0x11374; 0x11400, 0x11434; 0x11435, 0x11437; 0x11438, 0x1143f; + 0x11440, 0x11441; 0x11442, 0x11444; 0x11445, 0x11445; 0x11446, 0x11446; 0x11447, 0x1144a; + 0x11450, 0x11459; 0x1145e, 0x1145e; 0x1145f, 0x11461; 0x11480, 0x114af; 0x114b0, 0x114b2; + 0x114b3, 0x114b8; 0x114b9, 0x114b9; 0x114ba, 0x114ba; 0x114bb, 0x114be; 0x114bf, 0x114c0; + 0x114c1, 0x114c1; 0x114c2, 0x114c3; 0x114c4, 0x114c5; 0x114c7, 0x114c7; 0x114d0, 0x114d9; + 0x11580, 0x115ae; 0x115af, 0x115b1; 0x115b2, 0x115b5; 0x115b8, 0x115bb; 0x115bc, 0x115bd; + 0x115be, 0x115be; 0x115bf, 0x115c0; 0x115d8, 0x115db; 0x115dc, 0x115dd; 0x11600, 0x1162f; + 0x11630, 0x11632; 0x11633, 0x1163a; 0x1163b, 0x1163c; 0x1163d, 0x1163d; 0x1163e, 0x1163e; + 0x1163f, 0x11640; 0x11644, 0x11644; 0x11650, 0x11659; 0x11680, 0x116aa; 0x116ab, 0x116ab; + 0x116ac, 0x116ac; 0x116ad, 0x116ad; 0x116ae, 0x116af; 0x116b0, 0x116b5; 0x116b6, 0x116b6; + 0x116b7, 0x116b7; 0x116b8, 0x116b8; 0x116c0, 0x116c9; 0x11700, 0x1171a; 0x1171d, 0x1171f; + 0x11720, 0x11721; 0x11722, 0x11725; 0x11726, 0x11726; 0x11727, 0x1172b; 0x11730, 0x11739; + 0x11740, 0x11746; 0x11800, 0x1182b; 0x1182c, 0x1182e; 0x1182f, 0x11837; 0x11838, 0x11838; + 0x11839, 0x1183a; 0x118a0, 0x118df; 0x118e0, 0x118e9; 0x118ff, 0x11906; 0x11909, 0x11909; + 0x1190c, 0x11913; 0x11915, 0x11916; 0x11918, 0x1192f; 0x11930, 0x11935; 0x11937, 0x11938; + 0x1193b, 0x1193c; 0x1193d, 0x1193d; 0x1193e, 0x1193e; 0x1193f, 0x1193f; 0x11940, 0x11940; + 0x11941, 0x11941; 0x11942, 0x11942; 0x11943, 0x11943; 0x11950, 0x11959; 0x119a0, 0x119a7; + 0x119aa, 0x119d0; 0x119d1, 0x119d3; 0x119d4, 0x119d7; 0x119da, 0x119db; 0x119dc, 0x119df; + 0x119e0, 0x119e0; 0x119e1, 0x119e1; 0x119e3, 0x119e3; 0x119e4, 0x119e4; 0x11a00, 0x11a00; + 0x11a01, 0x11a0a; 0x11a0b, 0x11a32; 0x11a33, 0x11a38; 0x11a39, 0x11a39; 0x11a3a, 0x11a3a; + 0x11a3b, 0x11a3e; 0x11a47, 0x11a47; 0x11a50, 0x11a50; 0x11a51, 0x11a56; 0x11a57, 0x11a58; + 0x11a59, 0x11a5b; 0x11a5c, 0x11a89; 0x11a8a, 0x11a96; 0x11a97, 0x11a97; 0x11a98, 0x11a99; + 0x11a9d, 0x11a9d; 0x11ab0, 0x11af8; 0x11c00, 0x11c08; 0x11c0a, 0x11c2e; 0x11c2f, 0x11c2f; + 0x11c30, 0x11c36; 0x11c38, 0x11c3d; 0x11c3e, 0x11c3e; 0x11c3f, 0x11c3f; 0x11c40, 0x11c40; + 0x11c50, 0x11c59; 0x11c72, 0x11c8f; 0x11c92, 0x11ca7; 0x11ca9, 0x11ca9; 0x11caa, 0x11cb0; + 0x11cb1, 0x11cb1; 0x11cb2, 0x11cb3; 0x11cb4, 0x11cb4; 0x11cb5, 0x11cb6; 0x11d00, 0x11d06; + 0x11d08, 0x11d09; 0x11d0b, 0x11d30; 0x11d31, 0x11d36; 0x11d3a, 0x11d3a; 0x11d3c, 0x11d3d; + 0x11d3f, 0x11d45; 0x11d46, 0x11d46; 0x11d47, 0x11d47; 0x11d50, 0x11d59; 0x11d60, 0x11d65; + 0x11d67, 0x11d68; 0x11d6a, 0x11d89; 0x11d8a, 0x11d8e; 0x11d90, 0x11d91; 0x11d93, 0x11d94; + 0x11d95, 0x11d95; 0x11d96, 0x11d96; 0x11d97, 0x11d97; 0x11d98, 0x11d98; 0x11da0, 0x11da9; + 0x11ee0, 0x11ef2; 0x11ef3, 0x11ef4; 0x11ef5, 0x11ef6; 0x11fb0, 0x11fb0; 0x12000, 0x12399; + 0x12400, 0x1246e; 0x12480, 0x12543; 0x12f90, 0x12ff0; 0x13000, 0x1342e; 0x14400, 0x14646; + 0x16800, 0x16a38; 0x16a40, 0x16a5e; 0x16a60, 0x16a69; 0x16a70, 0x16abe; 0x16ac0, 0x16ac9; + 0x16ad0, 0x16aed; 0x16af0, 0x16af4; 0x16b00, 0x16b2f; 0x16b30, 0x16b36; 0x16b40, 0x16b43; + 0x16b50, 0x16b59; 0x16b63, 0x16b77; 0x16b7d, 0x16b8f; 0x16e40, 0x16e7f; 0x16f00, 0x16f4a; + 0x16f4f, 0x16f4f; 0x16f50, 0x16f50; 0x16f51, 0x16f87; 0x16f8f, 0x16f92; 0x16f93, 0x16f9f; + 0x16fe0, 0x16fe1; 0x16fe3, 0x16fe3; 0x16fe4, 0x16fe4; 0x16ff0, 0x16ff1; 0x17000, 0x187f7; + 0x18800, 0x18cd5; 0x18d00, 0x18d08; 0x1aff0, 0x1aff3; 0x1aff5, 0x1affb; 0x1affd, 0x1affe; + 0x1b000, 0x1b122; 0x1b150, 0x1b152; 0x1b164, 0x1b167; 0x1b170, 0x1b2fb; 0x1bc00, 0x1bc6a; + 0x1bc70, 0x1bc7c; 0x1bc80, 0x1bc88; 0x1bc90, 0x1bc99; 0x1bc9d, 0x1bc9e; 0x1cf00, 0x1cf2d; + 0x1cf30, 0x1cf46; 0x1d165, 0x1d166; 0x1d167, 0x1d169; 0x1d16d, 0x1d172; 0x1d17b, 0x1d182; + 0x1d185, 0x1d18b; 0x1d1aa, 0x1d1ad; 0x1d242, 0x1d244; 0x1d400, 0x1d454; 0x1d456, 0x1d49c; + 0x1d49e, 0x1d49f; 0x1d4a2, 0x1d4a2; 0x1d4a5, 0x1d4a6; 0x1d4a9, 0x1d4ac; 0x1d4ae, 0x1d4b9; + 0x1d4bb, 0x1d4bb; 0x1d4bd, 0x1d4c3; 0x1d4c5, 0x1d505; 0x1d507, 0x1d50a; 0x1d50d, 0x1d514; + 0x1d516, 0x1d51c; 0x1d51e, 0x1d539; 0x1d53b, 0x1d53e; 0x1d540, 0x1d544; 0x1d546, 0x1d546; + 0x1d54a, 0x1d550; 0x1d552, 0x1d6a5; 0x1d6a8, 0x1d6c0; 0x1d6c2, 0x1d6da; 0x1d6dc, 0x1d6fa; + 0x1d6fc, 0x1d714; 0x1d716, 0x1d734; 0x1d736, 0x1d74e; 0x1d750, 0x1d76e; 0x1d770, 0x1d788; + 0x1d78a, 0x1d7a8; 0x1d7aa, 0x1d7c2; 0x1d7c4, 0x1d7cb; 0x1d7ce, 0x1d7ff; 0x1da00, 0x1da36; + 0x1da3b, 0x1da6c; 0x1da75, 0x1da75; 0x1da84, 0x1da84; 0x1da9b, 0x1da9f; 0x1daa1, 0x1daaf; + 0x1df00, 0x1df09; 0x1df0a, 0x1df0a; 0x1df0b, 0x1df1e; 0x1e000, 0x1e006; 0x1e008, 0x1e018; + 0x1e01b, 0x1e021; 0x1e023, 0x1e024; 0x1e026, 0x1e02a; 0x1e100, 0x1e12c; 0x1e130, 0x1e136; + 0x1e137, 0x1e13d; 0x1e140, 0x1e149; 0x1e14e, 0x1e14e; 0x1e290, 0x1e2ad; 0x1e2ae, 0x1e2ae; + 0x1e2c0, 0x1e2eb; 0x1e2ec, 0x1e2ef; 0x1e2f0, 0x1e2f9; 0x1e7e0, 0x1e7e6; 0x1e7e8, 0x1e7eb; + 0x1e7ed, 0x1e7ee; 0x1e7f0, 0x1e7fe; 0x1e800, 0x1e8c4; 0x1e8d0, 0x1e8d6; 0x1e900, 0x1e943; + 0x1e944, 0x1e94a; 0x1e94b, 0x1e94b; 0x1e950, 0x1e959; 0x1ee00, 0x1ee03; 0x1ee05, 0x1ee1f; + 0x1ee21, 0x1ee22; 0x1ee24, 0x1ee24; 0x1ee27, 0x1ee27; 0x1ee29, 0x1ee32; 0x1ee34, 0x1ee37; + 0x1ee39, 0x1ee39; 0x1ee3b, 0x1ee3b; 0x1ee42, 0x1ee42; 0x1ee47, 0x1ee47; 0x1ee49, 0x1ee49; + 0x1ee4b, 0x1ee4b; 0x1ee4d, 0x1ee4f; 0x1ee51, 0x1ee52; 0x1ee54, 0x1ee54; 0x1ee57, 0x1ee57; + 0x1ee59, 0x1ee59; 0x1ee5b, 0x1ee5b; 0x1ee5d, 0x1ee5d; 0x1ee5f, 0x1ee5f; 0x1ee61, 0x1ee62; + 0x1ee64, 0x1ee64; 0x1ee67, 0x1ee6a; 0x1ee6c, 0x1ee72; 0x1ee74, 0x1ee77; 0x1ee79, 0x1ee7c; + 0x1ee7e, 0x1ee7e; 0x1ee80, 0x1ee89; 0x1ee8b, 0x1ee9b; 0x1eea1, 0x1eea3; 0x1eea5, 0x1eea9; + 0x1eeab, 0x1eebb; 0x1fbf0, 0x1fbf9; 0x20000, 0x2a6df; 0x2a700, 0x2b738; 0x2b740, 0x2b81d; + 0xe0100, 0xe01ef; 0x30000, 0x3134a; 0x2f800, 0x2fa1d; 0x2ceb0, 0x2ebe0; 0x2b820, 0x2cea1] let xid_start = - [ - (0x41, 0x5a); - (0x61, 0x7a); - (0xaa, 0xaa); - (0xb5, 0xb5); - (0xba, 0xba); - (0xc0, 0xd6); - (0xd8, 0xf6); - (0xf8, 0x1ba); - (0x1bb, 0x1bb); - (0x1bc, 0x1bf); - (0x1c0, 0x1c3); - (0x1c4, 0x293); - (0x294, 0x294); - (0x295, 0x2af); - (0x2b0, 0x2c1); - (0x2c6, 0x2d1); - (0x2e0, 0x2e4); - (0x2ec, 0x2ec); - (0x2ee, 0x2ee); - (0x370, 0x373); - (0x374, 0x374); - (0x376, 0x377); - (0x37b, 0x37d); - (0x37f, 0x37f); - (0x386, 0x386); - (0x388, 0x38a); - (0x38c, 0x38c); - (0x38e, 0x3a1); - (0x3a3, 0x3f5); - (0x3f7, 0x481); - (0x48a, 0x52f); - (0x531, 0x556); - (0x559, 0x559); - (0x560, 0x588); - (0x5d0, 0x5ea); - (0x5ef, 0x5f2); - (0x620, 0x63f); - (0x640, 0x640); - (0x641, 0x64a); - (0x66e, 0x66f); - (0x671, 0x6d3); - (0x6d5, 0x6d5); - (0x6e5, 0x6e6); - (0x6ee, 0x6ef); - (0x6fa, 0x6fc); - (0x6ff, 0x6ff); - (0x710, 0x710); - (0x712, 0x72f); - (0x74d, 0x7a5); - (0x7b1, 0x7b1); - (0x7ca, 0x7ea); - (0x7f4, 0x7f5); - (0x7fa, 0x7fa); - (0x800, 0x815); - (0x81a, 0x81a); - (0x824, 0x824); - (0x828, 0x828); - (0x840, 0x858); - (0x860, 0x86a); - (0x870, 0x887); - (0x889, 0x88e); - (0x8a0, 0x8c8); - (0x8c9, 0x8c9); - (0x904, 0x939); - (0x93d, 0x93d); - (0x950, 0x950); - (0x958, 0x961); - (0x971, 0x971); - (0x972, 0x980); - (0x985, 0x98c); - (0x98f, 0x990); - (0x993, 0x9a8); - (0x9aa, 0x9b0); - (0x9b2, 0x9b2); - (0x9b6, 0x9b9); - (0x9bd, 0x9bd); - (0x9ce, 0x9ce); - (0x9dc, 0x9dd); - (0x9df, 0x9e1); - (0x9f0, 0x9f1); - (0x9fc, 0x9fc); - (0xa05, 0xa0a); - (0xa0f, 0xa10); - (0xa13, 0xa28); - (0xa2a, 0xa30); - (0xa32, 0xa33); - (0xa35, 0xa36); - (0xa38, 0xa39); - (0xa59, 0xa5c); - (0xa5e, 0xa5e); - (0xa72, 0xa74); - (0xa85, 0xa8d); - (0xa8f, 0xa91); - (0xa93, 0xaa8); - (0xaaa, 0xab0); - (0xab2, 0xab3); - (0xab5, 0xab9); - (0xabd, 0xabd); - (0xad0, 0xad0); - (0xae0, 0xae1); - (0xaf9, 0xaf9); - (0xb05, 0xb0c); - (0xb0f, 0xb10); - (0xb13, 0xb28); - (0xb2a, 0xb30); - (0xb32, 0xb33); - (0xb35, 0xb39); - (0xb3d, 0xb3d); - (0xb5c, 0xb5d); - (0xb5f, 0xb61); - (0xb71, 0xb71); - (0xb83, 0xb83); - (0xb85, 0xb8a); - (0xb8e, 0xb90); - (0xb92, 0xb95); - (0xb99, 0xb9a); - (0xb9c, 0xb9c); - (0xb9e, 0xb9f); - (0xba3, 0xba4); - (0xba8, 0xbaa); - (0xbae, 0xbb9); - (0xbd0, 0xbd0); - (0xc05, 0xc0c); - (0xc0e, 0xc10); - (0xc12, 0xc28); - (0xc2a, 0xc39); - (0xc3d, 0xc3d); - (0xc58, 0xc5a); - (0xc5d, 0xc5d); - (0xc60, 0xc61); - (0xc80, 0xc80); - (0xc85, 0xc8c); - (0xc8e, 0xc90); - (0xc92, 0xca8); - (0xcaa, 0xcb3); - (0xcb5, 0xcb9); - (0xcbd, 0xcbd); - (0xcdd, 0xcde); - (0xce0, 0xce1); - (0xcf1, 0xcf2); - (0xd04, 0xd0c); - (0xd0e, 0xd10); - (0xd12, 0xd3a); - (0xd3d, 0xd3d); - (0xd4e, 0xd4e); - (0xd54, 0xd56); - (0xd5f, 0xd61); - (0xd7a, 0xd7f); - (0xd85, 0xd96); - (0xd9a, 0xdb1); - (0xdb3, 0xdbb); - (0xdbd, 0xdbd); - (0xdc0, 0xdc6); - (0xe01, 0xe30); - (0xe32, 0xe32); - (0xe40, 0xe45); - (0xe46, 0xe46); - (0xe81, 0xe82); - (0xe84, 0xe84); - (0xe86, 0xe8a); - (0xe8c, 0xea3); - (0xea5, 0xea5); - (0xea7, 0xeb0); - (0xeb2, 0xeb2); - (0xebd, 0xebd); - (0xec0, 0xec4); - (0xec6, 0xec6); - (0xedc, 0xedf); - (0xf00, 0xf00); - (0xf40, 0xf47); - (0xf49, 0xf6c); - (0xf88, 0xf8c); - (0x1000, 0x102a); - (0x103f, 0x103f); - (0x1050, 0x1055); - (0x105a, 0x105d); - (0x1061, 0x1061); - (0x1065, 0x1066); - (0x106e, 0x1070); - (0x1075, 0x1081); - (0x108e, 0x108e); - (0x10a0, 0x10c5); - (0x10c7, 0x10c7); - (0x10cd, 0x10cd); - (0x10d0, 0x10fa); - (0x10fc, 0x10fc); - (0x10fd, 0x10ff); - (0x1100, 0x1248); - (0x124a, 0x124d); - (0x1250, 0x1256); - (0x1258, 0x1258); - (0x125a, 0x125d); - (0x1260, 0x1288); - (0x128a, 0x128d); - (0x1290, 0x12b0); - (0x12b2, 0x12b5); - (0x12b8, 0x12be); - (0x12c0, 0x12c0); - (0x12c2, 0x12c5); - (0x12c8, 0x12d6); - (0x12d8, 0x1310); - (0x1312, 0x1315); - (0x1318, 0x135a); - (0x1380, 0x138f); - (0x13a0, 0x13f5); - (0x13f8, 0x13fd); - (0x1401, 0x166c); - (0x166f, 0x167f); - (0x1681, 0x169a); - (0x16a0, 0x16ea); - (0x16ee, 0x16f0); - (0x16f1, 0x16f8); - (0x1700, 0x1711); - (0x171f, 0x1731); - (0x1740, 0x1751); - (0x1760, 0x176c); - (0x176e, 0x1770); - (0x1780, 0x17b3); - (0x17d7, 0x17d7); - (0x17dc, 0x17dc); - (0x1820, 0x1842); - (0x1843, 0x1843); - (0x1844, 0x1878); - (0x1880, 0x1884); - (0x1885, 0x1886); - (0x1887, 0x18a8); - (0x18aa, 0x18aa); - (0x18b0, 0x18f5); - (0x1900, 0x191e); - (0x1950, 0x196d); - (0x1970, 0x1974); - (0x1980, 0x19ab); - (0x19b0, 0x19c9); - (0x1a00, 0x1a16); - (0x1a20, 0x1a54); - (0x1aa7, 0x1aa7); - (0x1b05, 0x1b33); - (0x1b45, 0x1b4c); - (0x1b83, 0x1ba0); - (0x1bae, 0x1baf); - (0x1bba, 0x1be5); - (0x1c00, 0x1c23); - (0x1c4d, 0x1c4f); - (0x1c5a, 0x1c77); - (0x1c78, 0x1c7d); - (0x1c80, 0x1c88); - (0x1c90, 0x1cba); - (0x1cbd, 0x1cbf); - (0x1ce9, 0x1cec); - (0x1cee, 0x1cf3); - (0x1cf5, 0x1cf6); - (0x1cfa, 0x1cfa); - (0x1d00, 0x1d2b); - (0x1d2c, 0x1d6a); - (0x1d6b, 0x1d77); - (0x1d78, 0x1d78); - (0x1d79, 0x1d9a); - (0x1d9b, 0x1dbf); - (0x1e00, 0x1f15); - (0x1f18, 0x1f1d); - (0x1f20, 0x1f45); - (0x1f48, 0x1f4d); - (0x1f50, 0x1f57); - (0x1f59, 0x1f59); - (0x1f5b, 0x1f5b); - (0x1f5d, 0x1f5d); - (0x1f5f, 0x1f7d); - (0x1f80, 0x1fb4); - (0x1fb6, 0x1fbc); - (0x1fbe, 0x1fbe); - (0x1fc2, 0x1fc4); - (0x1fc6, 0x1fcc); - (0x1fd0, 0x1fd3); - (0x1fd6, 0x1fdb); - (0x1fe0, 0x1fec); - (0x1ff2, 0x1ff4); - (0x1ff6, 0x1ffc); - (0x2071, 0x2071); - (0x207f, 0x207f); - (0x2090, 0x209c); - (0x2102, 0x2102); - (0x2107, 0x2107); - (0x210a, 0x2113); - (0x2115, 0x2115); - (0x2118, 0x2118); - (0x2119, 0x211d); - (0x2124, 0x2124); - (0x2126, 0x2126); - (0x2128, 0x2128); - (0x212a, 0x212d); - (0x212e, 0x212e); - (0x212f, 0x2134); - (0x2135, 0x2138); - (0x2139, 0x2139); - (0x213c, 0x213f); - (0x2145, 0x2149); - (0x214e, 0x214e); - (0x2160, 0x2182); - (0x2183, 0x2184); - (0x2185, 0x2188); - (0x2c00, 0x2c7b); - (0x2c7c, 0x2c7d); - (0x2c7e, 0x2ce4); - (0x2ceb, 0x2cee); - (0x2cf2, 0x2cf3); - (0x2d00, 0x2d25); - (0x2d27, 0x2d27); - (0x2d2d, 0x2d2d); - (0x2d30, 0x2d67); - (0x2d6f, 0x2d6f); - (0x2d80, 0x2d96); - (0x2da0, 0x2da6); - (0x2da8, 0x2dae); - (0x2db0, 0x2db6); - (0x2db8, 0x2dbe); - (0x2dc0, 0x2dc6); - (0x2dc8, 0x2dce); - (0x2dd0, 0x2dd6); - (0x2dd8, 0x2dde); - (0x3005, 0x3005); - (0x3006, 0x3006); - (0x3007, 0x3007); - (0x3021, 0x3029); - (0x3031, 0x3035); - (0x3038, 0x303a); - (0x303b, 0x303b); - (0x303c, 0x303c); - (0x3041, 0x3096); - (0x309d, 0x309e); - (0x309f, 0x309f); - (0x30a1, 0x30fa); - (0x30fc, 0x30fe); - (0x30ff, 0x30ff); - (0x3105, 0x312f); - (0x3131, 0x318e); - (0x31a0, 0x31bf); - (0x31f0, 0x31ff); - (0x3400, 0x4dbf); - (0x4e00, 0xa014); - (0xa015, 0xa015); - (0xa016, 0xa48c); - (0xa4d0, 0xa4f7); - (0xa4f8, 0xa4fd); - (0xa500, 0xa60b); - (0xa60c, 0xa60c); - (0xa610, 0xa61f); - (0xa62a, 0xa62b); - (0xa640, 0xa66d); - (0xa66e, 0xa66e); - (0xa67f, 0xa67f); - (0xa680, 0xa69b); - (0xa69c, 0xa69d); - (0xa6a0, 0xa6e5); - (0xa6e6, 0xa6ef); - (0xa717, 0xa71f); - (0xa722, 0xa76f); - (0xa770, 0xa770); - (0xa771, 0xa787); - (0xa788, 0xa788); - (0xa78b, 0xa78e); - (0xa78f, 0xa78f); - (0xa790, 0xa7ca); - (0xa7d0, 0xa7d1); - (0xa7d3, 0xa7d3); - (0xa7d5, 0xa7d9); - (0xa7f2, 0xa7f4); - (0xa7f5, 0xa7f6); - (0xa7f7, 0xa7f7); - (0xa7f8, 0xa7f9); - (0xa7fa, 0xa7fa); - (0xa7fb, 0xa801); - (0xa803, 0xa805); - (0xa807, 0xa80a); - (0xa80c, 0xa822); - (0xa840, 0xa873); - (0xa882, 0xa8b3); - (0xa8f2, 0xa8f7); - (0xa8fb, 0xa8fb); - (0xa8fd, 0xa8fe); - (0xa90a, 0xa925); - (0xa930, 0xa946); - (0xa960, 0xa97c); - (0xa984, 0xa9b2); - (0xa9cf, 0xa9cf); - (0xa9e0, 0xa9e4); - (0xa9e6, 0xa9e6); - (0xa9e7, 0xa9ef); - (0xa9fa, 0xa9fe); - (0xaa00, 0xaa28); - (0xaa40, 0xaa42); - (0xaa44, 0xaa4b); - (0xaa60, 0xaa6f); - (0xaa70, 0xaa70); - (0xaa71, 0xaa76); - (0xaa7a, 0xaa7a); - (0xaa7e, 0xaaaf); - (0xaab1, 0xaab1); - (0xaab5, 0xaab6); - (0xaab9, 0xaabd); - (0xaac0, 0xaac0); - (0xaac2, 0xaac2); - (0xaadb, 0xaadc); - (0xaadd, 0xaadd); - (0xaae0, 0xaaea); - (0xaaf2, 0xaaf2); - (0xaaf3, 0xaaf4); - (0xab01, 0xab06); - (0xab09, 0xab0e); - (0xab11, 0xab16); - (0xab20, 0xab26); - (0xab28, 0xab2e); - (0xab30, 0xab5a); - (0xab5c, 0xab5f); - (0xab60, 0xab68); - (0xab69, 0xab69); - (0xab70, 0xabbf); - (0xabc0, 0xabe2); - (0xac00, 0xd7a3); - (0xd7b0, 0xd7c6); - (0xd7cb, 0xd7fb); - (0xf900, 0xfa6d); - (0xfa70, 0xfad9); - (0xfb00, 0xfb06); - (0xfb13, 0xfb17); - (0xfb1d, 0xfb1d); - (0xfb1f, 0xfb28); - (0xfb2a, 0xfb36); - (0xfb38, 0xfb3c); - (0xfb3e, 0xfb3e); - (0xfb40, 0xfb41); - (0xfb43, 0xfb44); - (0xfb46, 0xfbb1); - (0xfbd3, 0xfc5d); - (0xfc64, 0xfd3d); - (0xfd50, 0xfd8f); - (0xfd92, 0xfdc7); - (0xfdf0, 0xfdf9); - (0xfe71, 0xfe71); - (0xfe73, 0xfe73); - (0xfe77, 0xfe77); - (0xfe79, 0xfe79); - (0xfe7b, 0xfe7b); - (0xfe7d, 0xfe7d); - (0xfe7f, 0xfefc); - (0xff21, 0xff3a); - (0xff41, 0xff5a); - (0xff66, 0xff6f); - (0xff70, 0xff70); - (0xff71, 0xff9d); - (0xffa0, 0xffbe); - (0xffc2, 0xffc7); - (0xffca, 0xffcf); - (0xffd2, 0xffd7); - (0xffda, 0xffdc); - (0x10000, 0x1000b); - (0x1000d, 0x10026); - (0x10028, 0x1003a); - (0x1003c, 0x1003d); - (0x1003f, 0x1004d); - (0x10050, 0x1005d); - (0x10080, 0x100fa); - (0x10140, 0x10174); - (0x10280, 0x1029c); - (0x102a0, 0x102d0); - (0x10300, 0x1031f); - (0x1032d, 0x10340); - (0x10341, 0x10341); - (0x10342, 0x10349); - (0x1034a, 0x1034a); - (0x10350, 0x10375); - (0x10380, 0x1039d); - (0x103a0, 0x103c3); - (0x103c8, 0x103cf); - (0x103d1, 0x103d5); - (0x10400, 0x1044f); - (0x10450, 0x1049d); - (0x104b0, 0x104d3); - (0x104d8, 0x104fb); - (0x10500, 0x10527); - (0x10530, 0x10563); - (0x10570, 0x1057a); - (0x1057c, 0x1058a); - (0x1058c, 0x10592); - (0x10594, 0x10595); - (0x10597, 0x105a1); - (0x105a3, 0x105b1); - (0x105b3, 0x105b9); - (0x105bb, 0x105bc); - (0x10600, 0x10736); - (0x10740, 0x10755); - (0x10760, 0x10767); - (0x10780, 0x10785); - (0x10787, 0x107b0); - (0x107b2, 0x107ba); - (0x10800, 0x10805); - (0x10808, 0x10808); - (0x1080a, 0x10835); - (0x10837, 0x10838); - (0x1083c, 0x1083c); - (0x1083f, 0x10855); - (0x10860, 0x10876); - (0x10880, 0x1089e); - (0x108e0, 0x108f2); - (0x108f4, 0x108f5); - (0x10900, 0x10915); - (0x10920, 0x10939); - (0x10980, 0x109b7); - (0x109be, 0x109bf); - (0x10a00, 0x10a00); - (0x10a10, 0x10a13); - (0x10a15, 0x10a17); - (0x10a19, 0x10a35); - (0x10a60, 0x10a7c); - (0x10a80, 0x10a9c); - (0x10ac0, 0x10ac7); - (0x10ac9, 0x10ae4); - (0x10b00, 0x10b35); - (0x10b40, 0x10b55); - (0x10b60, 0x10b72); - (0x10b80, 0x10b91); - (0x10c00, 0x10c48); - (0x10c80, 0x10cb2); - (0x10cc0, 0x10cf2); - (0x10d00, 0x10d23); - (0x10e80, 0x10ea9); - (0x10eb0, 0x10eb1); - (0x10f00, 0x10f1c); - (0x10f27, 0x10f27); - (0x10f30, 0x10f45); - (0x10f70, 0x10f81); - (0x10fb0, 0x10fc4); - (0x10fe0, 0x10ff6); - (0x11003, 0x11037); - (0x11071, 0x11072); - (0x11075, 0x11075); - (0x11083, 0x110af); - (0x110d0, 0x110e8); - (0x11103, 0x11126); - (0x11144, 0x11144); - (0x11147, 0x11147); - (0x11150, 0x11172); - (0x11176, 0x11176); - (0x11183, 0x111b2); - (0x111c1, 0x111c4); - (0x111da, 0x111da); - (0x111dc, 0x111dc); - (0x11200, 0x11211); - (0x11213, 0x1122b); - (0x11280, 0x11286); - (0x11288, 0x11288); - (0x1128a, 0x1128d); - (0x1128f, 0x1129d); - (0x1129f, 0x112a8); - (0x112b0, 0x112de); - (0x11305, 0x1130c); - (0x1130f, 0x11310); - (0x11313, 0x11328); - (0x1132a, 0x11330); - (0x11332, 0x11333); - (0x11335, 0x11339); - (0x1133d, 0x1133d); - (0x11350, 0x11350); - (0x1135d, 0x11361); - (0x11400, 0x11434); - (0x11447, 0x1144a); - (0x1145f, 0x11461); - (0x11480, 0x114af); - (0x114c4, 0x114c5); - (0x114c7, 0x114c7); - (0x11580, 0x115ae); - (0x115d8, 0x115db); - (0x11600, 0x1162f); - (0x11644, 0x11644); - (0x11680, 0x116aa); - (0x116b8, 0x116b8); - (0x11700, 0x1171a); - (0x11740, 0x11746); - (0x11800, 0x1182b); - (0x118a0, 0x118df); - (0x118ff, 0x11906); - (0x11909, 0x11909); - (0x1190c, 0x11913); - (0x11915, 0x11916); - (0x11918, 0x1192f); - (0x1193f, 0x1193f); - (0x11941, 0x11941); - (0x119a0, 0x119a7); - (0x119aa, 0x119d0); - (0x119e1, 0x119e1); - (0x119e3, 0x119e3); - (0x11a00, 0x11a00); - (0x11a0b, 0x11a32); - (0x11a3a, 0x11a3a); - (0x11a50, 0x11a50); - (0x11a5c, 0x11a89); - (0x11a9d, 0x11a9d); - (0x11ab0, 0x11af8); - (0x11c00, 0x11c08); - (0x11c0a, 0x11c2e); - (0x11c40, 0x11c40); - (0x11c72, 0x11c8f); - (0x11d00, 0x11d06); - (0x11d08, 0x11d09); - (0x11d0b, 0x11d30); - (0x11d46, 0x11d46); - (0x11d60, 0x11d65); - (0x11d67, 0x11d68); - (0x11d6a, 0x11d89); - (0x11d98, 0x11d98); - (0x11ee0, 0x11ef2); - (0x11fb0, 0x11fb0); - (0x12000, 0x12399); - (0x12400, 0x1246e); - (0x12480, 0x12543); - (0x12f90, 0x12ff0); - (0x13000, 0x1342e); - (0x14400, 0x14646); - (0x16800, 0x16a38); - (0x16a40, 0x16a5e); - (0x16a70, 0x16abe); - (0x16ad0, 0x16aed); - (0x16b00, 0x16b2f); - (0x16b40, 0x16b43); - (0x16b63, 0x16b77); - (0x16b7d, 0x16b8f); - (0x16e40, 0x16e7f); - (0x16f00, 0x16f4a); - (0x16f50, 0x16f50); - (0x16f93, 0x16f9f); - (0x16fe0, 0x16fe1); - (0x16fe3, 0x16fe3); - (0x17000, 0x187f7); - (0x18800, 0x18cd5); - (0x18d00, 0x18d08); - (0x1aff0, 0x1aff3); - (0x1aff5, 0x1affb); - (0x1affd, 0x1affe); - (0x1b000, 0x1b122); - (0x1b150, 0x1b152); - (0x1b164, 0x1b167); - (0x1b170, 0x1b2fb); - (0x1bc00, 0x1bc6a); - (0x1bc70, 0x1bc7c); - (0x1bc80, 0x1bc88); - (0x1bc90, 0x1bc99); - (0x1d400, 0x1d454); - (0x1d456, 0x1d49c); - (0x1d49e, 0x1d49f); - (0x1d4a2, 0x1d4a2); - (0x1d4a5, 0x1d4a6); - (0x1d4a9, 0x1d4ac); - (0x1d4ae, 0x1d4b9); - (0x1d4bb, 0x1d4bb); - (0x1d4bd, 0x1d4c3); - (0x1d4c5, 0x1d505); - (0x1d507, 0x1d50a); - (0x1d50d, 0x1d514); - (0x1d516, 0x1d51c); - (0x1d51e, 0x1d539); - (0x1d53b, 0x1d53e); - (0x1d540, 0x1d544); - (0x1d546, 0x1d546); - (0x1d54a, 0x1d550); - (0x1d552, 0x1d6a5); - (0x1d6a8, 0x1d6c0); - (0x1d6c2, 0x1d6da); - (0x1d6dc, 0x1d6fa); - (0x1d6fc, 0x1d714); - (0x1d716, 0x1d734); - (0x1d736, 0x1d74e); - (0x1d750, 0x1d76e); - (0x1d770, 0x1d788); - (0x1d78a, 0x1d7a8); - (0x1d7aa, 0x1d7c2); - (0x1d7c4, 0x1d7cb); - (0x1df00, 0x1df09); - (0x1df0a, 0x1df0a); - (0x1df0b, 0x1df1e); - (0x1e100, 0x1e12c); - (0x1e137, 0x1e13d); - (0x1e14e, 0x1e14e); - (0x1e290, 0x1e2ad); - (0x1e2c0, 0x1e2eb); - (0x1e7e0, 0x1e7e6); - (0x1e7e8, 0x1e7eb); - (0x1e7ed, 0x1e7ee); - (0x1e7f0, 0x1e7fe); - (0x1e800, 0x1e8c4); - (0x1e900, 0x1e943); - (0x1e94b, 0x1e94b); - (0x1ee00, 0x1ee03); - (0x1ee05, 0x1ee1f); - (0x1ee21, 0x1ee22); - (0x1ee24, 0x1ee24); - (0x1ee27, 0x1ee27); - (0x1ee29, 0x1ee32); - (0x1ee34, 0x1ee37); - (0x1ee39, 0x1ee39); - (0x1ee3b, 0x1ee3b); - (0x1ee42, 0x1ee42); - (0x1ee47, 0x1ee47); - (0x1ee49, 0x1ee49); - (0x1ee4b, 0x1ee4b); - (0x1ee4d, 0x1ee4f); - (0x1ee51, 0x1ee52); - (0x1ee54, 0x1ee54); - (0x1ee57, 0x1ee57); - (0x1ee59, 0x1ee59); - (0x1ee5b, 0x1ee5b); - (0x1ee5d, 0x1ee5d); - (0x1ee5f, 0x1ee5f); - (0x1ee61, 0x1ee62); - (0x1ee64, 0x1ee64); - (0x1ee67, 0x1ee6a); - (0x1ee6c, 0x1ee72); - (0x1ee74, 0x1ee77); - (0x1ee79, 0x1ee7c); - (0x1ee7e, 0x1ee7e); - (0x1ee80, 0x1ee89); - (0x1ee8b, 0x1ee9b); - (0x1eea1, 0x1eea3); - (0x1eea5, 0x1eea9); - (0x1eeab, 0x1eebb); - (0x20000, 0x2a6df); - (0x2a700, 0x2b738); - (0x30000, 0x3134a); - (0x2f800, 0x2fa1d); - (0x2ceb0, 0x2ebe0); - (0x2b820, 0x2cea1); - (0x2b740, 0x2b81d); - ] + [0x41, 0x5a; 0x61, 0x7a; 0xaa, 0xaa; 0xb5, 0xb5; 0xba, 0xba; + 0xc0, 0xd6; 0xd8, 0xf6; 0xf8, 0x1ba; 0x1bb, 0x1bb; 0x1bc, 0x1bf; + 0x1c0, 0x1c3; 0x1c4, 0x293; 0x294, 0x294; 0x295, 0x2af; 0x2b0, 0x2c1; + 0x2c6, 0x2d1; 0x2e0, 0x2e4; 0x2ec, 0x2ec; 0x2ee, 0x2ee; 0x370, 0x373; + 0x374, 0x374; 0x376, 0x377; 0x37b, 0x37d; 0x37f, 0x37f; 0x386, 0x386; + 0x388, 0x38a; 0x38c, 0x38c; 0x38e, 0x3a1; 0x3a3, 0x3f5; 0x3f7, 0x481; + 0x48a, 0x52f; 0x531, 0x556; 0x559, 0x559; 0x560, 0x588; 0x5d0, 0x5ea; + 0x5ef, 0x5f2; 0x620, 0x63f; 0x640, 0x640; 0x641, 0x64a; 0x66e, 0x66f; + 0x671, 0x6d3; 0x6d5, 0x6d5; 0x6e5, 0x6e6; 0x6ee, 0x6ef; 0x6fa, 0x6fc; + 0x6ff, 0x6ff; 0x710, 0x710; 0x712, 0x72f; 0x74d, 0x7a5; 0x7b1, 0x7b1; + 0x7ca, 0x7ea; 0x7f4, 0x7f5; 0x7fa, 0x7fa; 0x800, 0x815; 0x81a, 0x81a; + 0x824, 0x824; 0x828, 0x828; 0x840, 0x858; 0x860, 0x86a; 0x870, 0x887; + 0x889, 0x88e; 0x8a0, 0x8c8; 0x8c9, 0x8c9; 0x904, 0x939; 0x93d, 0x93d; + 0x950, 0x950; 0x958, 0x961; 0x971, 0x971; 0x972, 0x980; 0x985, 0x98c; + 0x98f, 0x990; 0x993, 0x9a8; 0x9aa, 0x9b0; 0x9b2, 0x9b2; 0x9b6, 0x9b9; + 0x9bd, 0x9bd; 0x9ce, 0x9ce; 0x9dc, 0x9dd; 0x9df, 0x9e1; 0x9f0, 0x9f1; + 0x9fc, 0x9fc; 0xa05, 0xa0a; 0xa0f, 0xa10; 0xa13, 0xa28; 0xa2a, 0xa30; + 0xa32, 0xa33; 0xa35, 0xa36; 0xa38, 0xa39; 0xa59, 0xa5c; 0xa5e, 0xa5e; + 0xa72, 0xa74; 0xa85, 0xa8d; 0xa8f, 0xa91; 0xa93, 0xaa8; 0xaaa, 0xab0; + 0xab2, 0xab3; 0xab5, 0xab9; 0xabd, 0xabd; 0xad0, 0xad0; 0xae0, 0xae1; + 0xaf9, 0xaf9; 0xb05, 0xb0c; 0xb0f, 0xb10; 0xb13, 0xb28; 0xb2a, 0xb30; + 0xb32, 0xb33; 0xb35, 0xb39; 0xb3d, 0xb3d; 0xb5c, 0xb5d; 0xb5f, 0xb61; + 0xb71, 0xb71; 0xb83, 0xb83; 0xb85, 0xb8a; 0xb8e, 0xb90; 0xb92, 0xb95; + 0xb99, 0xb9a; 0xb9c, 0xb9c; 0xb9e, 0xb9f; 0xba3, 0xba4; 0xba8, 0xbaa; + 0xbae, 0xbb9; 0xbd0, 0xbd0; 0xc05, 0xc0c; 0xc0e, 0xc10; 0xc12, 0xc28; + 0xc2a, 0xc39; 0xc3d, 0xc3d; 0xc58, 0xc5a; 0xc5d, 0xc5d; 0xc60, 0xc61; + 0xc80, 0xc80; 0xc85, 0xc8c; 0xc8e, 0xc90; 0xc92, 0xca8; 0xcaa, 0xcb3; + 0xcb5, 0xcb9; 0xcbd, 0xcbd; 0xcdd, 0xcde; 0xce0, 0xce1; 0xcf1, 0xcf2; + 0xd04, 0xd0c; 0xd0e, 0xd10; 0xd12, 0xd3a; 0xd3d, 0xd3d; 0xd4e, 0xd4e; + 0xd54, 0xd56; 0xd5f, 0xd61; 0xd7a, 0xd7f; 0xd85, 0xd96; 0xd9a, 0xdb1; + 0xdb3, 0xdbb; 0xdbd, 0xdbd; 0xdc0, 0xdc6; 0xe01, 0xe30; 0xe32, 0xe32; + 0xe40, 0xe45; 0xe46, 0xe46; 0xe81, 0xe82; 0xe84, 0xe84; 0xe86, 0xe8a; + 0xe8c, 0xea3; 0xea5, 0xea5; 0xea7, 0xeb0; 0xeb2, 0xeb2; 0xebd, 0xebd; + 0xec0, 0xec4; 0xec6, 0xec6; 0xedc, 0xedf; 0xf00, 0xf00; 0xf40, 0xf47; + 0xf49, 0xf6c; 0xf88, 0xf8c; 0x1000, 0x102a; 0x103f, 0x103f; 0x1050, 0x1055; + 0x105a, 0x105d; 0x1061, 0x1061; 0x1065, 0x1066; 0x106e, 0x1070; 0x1075, 0x1081; + 0x108e, 0x108e; 0x10a0, 0x10c5; 0x10c7, 0x10c7; 0x10cd, 0x10cd; 0x10d0, 0x10fa; + 0x10fc, 0x10fc; 0x10fd, 0x10ff; 0x1100, 0x1248; 0x124a, 0x124d; 0x1250, 0x1256; + 0x1258, 0x1258; 0x125a, 0x125d; 0x1260, 0x1288; 0x128a, 0x128d; 0x1290, 0x12b0; + 0x12b2, 0x12b5; 0x12b8, 0x12be; 0x12c0, 0x12c0; 0x12c2, 0x12c5; 0x12c8, 0x12d6; + 0x12d8, 0x1310; 0x1312, 0x1315; 0x1318, 0x135a; 0x1380, 0x138f; 0x13a0, 0x13f5; + 0x13f8, 0x13fd; 0x1401, 0x166c; 0x166f, 0x167f; 0x1681, 0x169a; 0x16a0, 0x16ea; + 0x16ee, 0x16f0; 0x16f1, 0x16f8; 0x1700, 0x1711; 0x171f, 0x1731; 0x1740, 0x1751; + 0x1760, 0x176c; 0x176e, 0x1770; 0x1780, 0x17b3; 0x17d7, 0x17d7; 0x17dc, 0x17dc; + 0x1820, 0x1842; 0x1843, 0x1843; 0x1844, 0x1878; 0x1880, 0x1884; 0x1885, 0x1886; + 0x1887, 0x18a8; 0x18aa, 0x18aa; 0x18b0, 0x18f5; 0x1900, 0x191e; 0x1950, 0x196d; + 0x1970, 0x1974; 0x1980, 0x19ab; 0x19b0, 0x19c9; 0x1a00, 0x1a16; 0x1a20, 0x1a54; + 0x1aa7, 0x1aa7; 0x1b05, 0x1b33; 0x1b45, 0x1b4c; 0x1b83, 0x1ba0; 0x1bae, 0x1baf; + 0x1bba, 0x1be5; 0x1c00, 0x1c23; 0x1c4d, 0x1c4f; 0x1c5a, 0x1c77; 0x1c78, 0x1c7d; + 0x1c80, 0x1c88; 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 0x1ce9, 0x1cec; 0x1cee, 0x1cf3; + 0x1cf5, 0x1cf6; 0x1cfa, 0x1cfa; 0x1d00, 0x1d2b; 0x1d2c, 0x1d6a; 0x1d6b, 0x1d77; + 0x1d78, 0x1d78; 0x1d79, 0x1d9a; 0x1d9b, 0x1dbf; 0x1e00, 0x1f15; 0x1f18, 0x1f1d; + 0x1f20, 0x1f45; 0x1f48, 0x1f4d; 0x1f50, 0x1f57; 0x1f59, 0x1f59; 0x1f5b, 0x1f5b; + 0x1f5d, 0x1f5d; 0x1f5f, 0x1f7d; 0x1f80, 0x1fb4; 0x1fb6, 0x1fbc; 0x1fbe, 0x1fbe; + 0x1fc2, 0x1fc4; 0x1fc6, 0x1fcc; 0x1fd0, 0x1fd3; 0x1fd6, 0x1fdb; 0x1fe0, 0x1fec; + 0x1ff2, 0x1ff4; 0x1ff6, 0x1ffc; 0x2071, 0x2071; 0x207f, 0x207f; 0x2090, 0x209c; + 0x2102, 0x2102; 0x2107, 0x2107; 0x210a, 0x2113; 0x2115, 0x2115; 0x2118, 0x2118; + 0x2119, 0x211d; 0x2124, 0x2124; 0x2126, 0x2126; 0x2128, 0x2128; 0x212a, 0x212d; + 0x212e, 0x212e; 0x212f, 0x2134; 0x2135, 0x2138; 0x2139, 0x2139; 0x213c, 0x213f; + 0x2145, 0x2149; 0x214e, 0x214e; 0x2160, 0x2182; 0x2183, 0x2184; 0x2185, 0x2188; + 0x2c00, 0x2c7b; 0x2c7c, 0x2c7d; 0x2c7e, 0x2ce4; 0x2ceb, 0x2cee; 0x2cf2, 0x2cf3; + 0x2d00, 0x2d25; 0x2d27, 0x2d27; 0x2d2d, 0x2d2d; 0x2d30, 0x2d67; 0x2d6f, 0x2d6f; + 0x2d80, 0x2d96; 0x2da0, 0x2da6; 0x2da8, 0x2dae; 0x2db0, 0x2db6; 0x2db8, 0x2dbe; + 0x2dc0, 0x2dc6; 0x2dc8, 0x2dce; 0x2dd0, 0x2dd6; 0x2dd8, 0x2dde; 0x3005, 0x3005; + 0x3006, 0x3006; 0x3007, 0x3007; 0x3021, 0x3029; 0x3031, 0x3035; 0x3038, 0x303a; + 0x303b, 0x303b; 0x303c, 0x303c; 0x3041, 0x3096; 0x309d, 0x309e; 0x309f, 0x309f; + 0x30a1, 0x30fa; 0x30fc, 0x30fe; 0x30ff, 0x30ff; 0x3105, 0x312f; 0x3131, 0x318e; + 0x31a0, 0x31bf; 0x31f0, 0x31ff; 0x3400, 0x4dbf; 0x4e00, 0xa014; 0xa015, 0xa015; + 0xa016, 0xa48c; 0xa4d0, 0xa4f7; 0xa4f8, 0xa4fd; 0xa500, 0xa60b; 0xa60c, 0xa60c; + 0xa610, 0xa61f; 0xa62a, 0xa62b; 0xa640, 0xa66d; 0xa66e, 0xa66e; 0xa67f, 0xa67f; + 0xa680, 0xa69b; 0xa69c, 0xa69d; 0xa6a0, 0xa6e5; 0xa6e6, 0xa6ef; 0xa717, 0xa71f; + 0xa722, 0xa76f; 0xa770, 0xa770; 0xa771, 0xa787; 0xa788, 0xa788; 0xa78b, 0xa78e; + 0xa78f, 0xa78f; 0xa790, 0xa7ca; 0xa7d0, 0xa7d1; 0xa7d3, 0xa7d3; 0xa7d5, 0xa7d9; + 0xa7f2, 0xa7f4; 0xa7f5, 0xa7f6; 0xa7f7, 0xa7f7; 0xa7f8, 0xa7f9; 0xa7fa, 0xa7fa; + 0xa7fb, 0xa801; 0xa803, 0xa805; 0xa807, 0xa80a; 0xa80c, 0xa822; 0xa840, 0xa873; + 0xa882, 0xa8b3; 0xa8f2, 0xa8f7; 0xa8fb, 0xa8fb; 0xa8fd, 0xa8fe; 0xa90a, 0xa925; + 0xa930, 0xa946; 0xa960, 0xa97c; 0xa984, 0xa9b2; 0xa9cf, 0xa9cf; 0xa9e0, 0xa9e4; + 0xa9e6, 0xa9e6; 0xa9e7, 0xa9ef; 0xa9fa, 0xa9fe; 0xaa00, 0xaa28; 0xaa40, 0xaa42; + 0xaa44, 0xaa4b; 0xaa60, 0xaa6f; 0xaa70, 0xaa70; 0xaa71, 0xaa76; 0xaa7a, 0xaa7a; + 0xaa7e, 0xaaaf; 0xaab1, 0xaab1; 0xaab5, 0xaab6; 0xaab9, 0xaabd; 0xaac0, 0xaac0; + 0xaac2, 0xaac2; 0xaadb, 0xaadc; 0xaadd, 0xaadd; 0xaae0, 0xaaea; 0xaaf2, 0xaaf2; + 0xaaf3, 0xaaf4; 0xab01, 0xab06; 0xab09, 0xab0e; 0xab11, 0xab16; 0xab20, 0xab26; + 0xab28, 0xab2e; 0xab30, 0xab5a; 0xab5c, 0xab5f; 0xab60, 0xab68; 0xab69, 0xab69; + 0xab70, 0xabbf; 0xabc0, 0xabe2; 0xac00, 0xd7a3; 0xd7b0, 0xd7c6; 0xd7cb, 0xd7fb; + 0xf900, 0xfa6d; 0xfa70, 0xfad9; 0xfb00, 0xfb06; 0xfb13, 0xfb17; 0xfb1d, 0xfb1d; + 0xfb1f, 0xfb28; 0xfb2a, 0xfb36; 0xfb38, 0xfb3c; 0xfb3e, 0xfb3e; 0xfb40, 0xfb41; + 0xfb43, 0xfb44; 0xfb46, 0xfbb1; 0xfbd3, 0xfc5d; 0xfc64, 0xfd3d; 0xfd50, 0xfd8f; + 0xfd92, 0xfdc7; 0xfdf0, 0xfdf9; 0xfe71, 0xfe71; 0xfe73, 0xfe73; 0xfe77, 0xfe77; + 0xfe79, 0xfe79; 0xfe7b, 0xfe7b; 0xfe7d, 0xfe7d; 0xfe7f, 0xfefc; 0xff21, 0xff3a; + 0xff41, 0xff5a; 0xff66, 0xff6f; 0xff70, 0xff70; 0xff71, 0xff9d; 0xffa0, 0xffbe; + 0xffc2, 0xffc7; 0xffca, 0xffcf; 0xffd2, 0xffd7; 0xffda, 0xffdc; 0x10000, 0x1000b; + 0x1000d, 0x10026; 0x10028, 0x1003a; 0x1003c, 0x1003d; 0x1003f, 0x1004d; 0x10050, 0x1005d; + 0x10080, 0x100fa; 0x10140, 0x10174; 0x10280, 0x1029c; 0x102a0, 0x102d0; 0x10300, 0x1031f; + 0x1032d, 0x10340; 0x10341, 0x10341; 0x10342, 0x10349; 0x1034a, 0x1034a; 0x10350, 0x10375; + 0x10380, 0x1039d; 0x103a0, 0x103c3; 0x103c8, 0x103cf; 0x103d1, 0x103d5; 0x10400, 0x1044f; + 0x10450, 0x1049d; 0x104b0, 0x104d3; 0x104d8, 0x104fb; 0x10500, 0x10527; 0x10530, 0x10563; + 0x10570, 0x1057a; 0x1057c, 0x1058a; 0x1058c, 0x10592; 0x10594, 0x10595; 0x10597, 0x105a1; + 0x105a3, 0x105b1; 0x105b3, 0x105b9; 0x105bb, 0x105bc; 0x10600, 0x10736; 0x10740, 0x10755; + 0x10760, 0x10767; 0x10780, 0x10785; 0x10787, 0x107b0; 0x107b2, 0x107ba; 0x10800, 0x10805; + 0x10808, 0x10808; 0x1080a, 0x10835; 0x10837, 0x10838; 0x1083c, 0x1083c; 0x1083f, 0x10855; + 0x10860, 0x10876; 0x10880, 0x1089e; 0x108e0, 0x108f2; 0x108f4, 0x108f5; 0x10900, 0x10915; + 0x10920, 0x10939; 0x10980, 0x109b7; 0x109be, 0x109bf; 0x10a00, 0x10a00; 0x10a10, 0x10a13; + 0x10a15, 0x10a17; 0x10a19, 0x10a35; 0x10a60, 0x10a7c; 0x10a80, 0x10a9c; 0x10ac0, 0x10ac7; + 0x10ac9, 0x10ae4; 0x10b00, 0x10b35; 0x10b40, 0x10b55; 0x10b60, 0x10b72; 0x10b80, 0x10b91; + 0x10c00, 0x10c48; 0x10c80, 0x10cb2; 0x10cc0, 0x10cf2; 0x10d00, 0x10d23; 0x10e80, 0x10ea9; + 0x10eb0, 0x10eb1; 0x10f00, 0x10f1c; 0x10f27, 0x10f27; 0x10f30, 0x10f45; 0x10f70, 0x10f81; + 0x10fb0, 0x10fc4; 0x10fe0, 0x10ff6; 0x11003, 0x11037; 0x11071, 0x11072; 0x11075, 0x11075; + 0x11083, 0x110af; 0x110d0, 0x110e8; 0x11103, 0x11126; 0x11144, 0x11144; 0x11147, 0x11147; + 0x11150, 0x11172; 0x11176, 0x11176; 0x11183, 0x111b2; 0x111c1, 0x111c4; 0x111da, 0x111da; + 0x111dc, 0x111dc; 0x11200, 0x11211; 0x11213, 0x1122b; 0x11280, 0x11286; 0x11288, 0x11288; + 0x1128a, 0x1128d; 0x1128f, 0x1129d; 0x1129f, 0x112a8; 0x112b0, 0x112de; 0x11305, 0x1130c; + 0x1130f, 0x11310; 0x11313, 0x11328; 0x1132a, 0x11330; 0x11332, 0x11333; 0x11335, 0x11339; + 0x1133d, 0x1133d; 0x11350, 0x11350; 0x1135d, 0x11361; 0x11400, 0x11434; 0x11447, 0x1144a; + 0x1145f, 0x11461; 0x11480, 0x114af; 0x114c4, 0x114c5; 0x114c7, 0x114c7; 0x11580, 0x115ae; + 0x115d8, 0x115db; 0x11600, 0x1162f; 0x11644, 0x11644; 0x11680, 0x116aa; 0x116b8, 0x116b8; + 0x11700, 0x1171a; 0x11740, 0x11746; 0x11800, 0x1182b; 0x118a0, 0x118df; 0x118ff, 0x11906; + 0x11909, 0x11909; 0x1190c, 0x11913; 0x11915, 0x11916; 0x11918, 0x1192f; 0x1193f, 0x1193f; + 0x11941, 0x11941; 0x119a0, 0x119a7; 0x119aa, 0x119d0; 0x119e1, 0x119e1; 0x119e3, 0x119e3; + 0x11a00, 0x11a00; 0x11a0b, 0x11a32; 0x11a3a, 0x11a3a; 0x11a50, 0x11a50; 0x11a5c, 0x11a89; + 0x11a9d, 0x11a9d; 0x11ab0, 0x11af8; 0x11c00, 0x11c08; 0x11c0a, 0x11c2e; 0x11c40, 0x11c40; + 0x11c72, 0x11c8f; 0x11d00, 0x11d06; 0x11d08, 0x11d09; 0x11d0b, 0x11d30; 0x11d46, 0x11d46; + 0x11d60, 0x11d65; 0x11d67, 0x11d68; 0x11d6a, 0x11d89; 0x11d98, 0x11d98; 0x11ee0, 0x11ef2; + 0x11fb0, 0x11fb0; 0x12000, 0x12399; 0x12400, 0x1246e; 0x12480, 0x12543; 0x12f90, 0x12ff0; + 0x13000, 0x1342e; 0x14400, 0x14646; 0x16800, 0x16a38; 0x16a40, 0x16a5e; 0x16a70, 0x16abe; + 0x16ad0, 0x16aed; 0x16b00, 0x16b2f; 0x16b40, 0x16b43; 0x16b63, 0x16b77; 0x16b7d, 0x16b8f; + 0x16e40, 0x16e7f; 0x16f00, 0x16f4a; 0x16f50, 0x16f50; 0x16f93, 0x16f9f; 0x16fe0, 0x16fe1; + 0x16fe3, 0x16fe3; 0x17000, 0x187f7; 0x18800, 0x18cd5; 0x18d00, 0x18d08; 0x1aff0, 0x1aff3; + 0x1aff5, 0x1affb; 0x1affd, 0x1affe; 0x1b000, 0x1b122; 0x1b150, 0x1b152; 0x1b164, 0x1b167; + 0x1b170, 0x1b2fb; 0x1bc00, 0x1bc6a; 0x1bc70, 0x1bc7c; 0x1bc80, 0x1bc88; 0x1bc90, 0x1bc99; + 0x1d400, 0x1d454; 0x1d456, 0x1d49c; 0x1d49e, 0x1d49f; 0x1d4a2, 0x1d4a2; 0x1d4a5, 0x1d4a6; + 0x1d4a9, 0x1d4ac; 0x1d4ae, 0x1d4b9; 0x1d4bb, 0x1d4bb; 0x1d4bd, 0x1d4c3; 0x1d4c5, 0x1d505; + 0x1d507, 0x1d50a; 0x1d50d, 0x1d514; 0x1d516, 0x1d51c; 0x1d51e, 0x1d539; 0x1d53b, 0x1d53e; + 0x1d540, 0x1d544; 0x1d546, 0x1d546; 0x1d54a, 0x1d550; 0x1d552, 0x1d6a5; 0x1d6a8, 0x1d6c0; + 0x1d6c2, 0x1d6da; 0x1d6dc, 0x1d6fa; 0x1d6fc, 0x1d714; 0x1d716, 0x1d734; 0x1d736, 0x1d74e; + 0x1d750, 0x1d76e; 0x1d770, 0x1d788; 0x1d78a, 0x1d7a8; 0x1d7aa, 0x1d7c2; 0x1d7c4, 0x1d7cb; + 0x1df00, 0x1df09; 0x1df0a, 0x1df0a; 0x1df0b, 0x1df1e; 0x1e100, 0x1e12c; 0x1e137, 0x1e13d; + 0x1e14e, 0x1e14e; 0x1e290, 0x1e2ad; 0x1e2c0, 0x1e2eb; 0x1e7e0, 0x1e7e6; 0x1e7e8, 0x1e7eb; + 0x1e7ed, 0x1e7ee; 0x1e7f0, 0x1e7fe; 0x1e800, 0x1e8c4; 0x1e900, 0x1e943; 0x1e94b, 0x1e94b; + 0x1ee00, 0x1ee03; 0x1ee05, 0x1ee1f; 0x1ee21, 0x1ee22; 0x1ee24, 0x1ee24; 0x1ee27, 0x1ee27; + 0x1ee29, 0x1ee32; 0x1ee34, 0x1ee37; 0x1ee39, 0x1ee39; 0x1ee3b, 0x1ee3b; 0x1ee42, 0x1ee42; + 0x1ee47, 0x1ee47; 0x1ee49, 0x1ee49; 0x1ee4b, 0x1ee4b; 0x1ee4d, 0x1ee4f; 0x1ee51, 0x1ee52; + 0x1ee54, 0x1ee54; 0x1ee57, 0x1ee57; 0x1ee59, 0x1ee59; 0x1ee5b, 0x1ee5b; 0x1ee5d, 0x1ee5d; + 0x1ee5f, 0x1ee5f; 0x1ee61, 0x1ee62; 0x1ee64, 0x1ee64; 0x1ee67, 0x1ee6a; 0x1ee6c, 0x1ee72; + 0x1ee74, 0x1ee77; 0x1ee79, 0x1ee7c; 0x1ee7e, 0x1ee7e; 0x1ee80, 0x1ee89; 0x1ee8b, 0x1ee9b; + 0x1eea1, 0x1eea3; 0x1eea5, 0x1eea9; 0x1eeab, 0x1eebb; 0x20000, 0x2a6df; 0x2a700, 0x2b738; + 0x30000, 0x3134a; 0x2f800, 0x2fa1d; 0x2ceb0, 0x2ebe0; 0x2b820, 0x2cea1; 0x2b740, 0x2b81d] + + let list = [ + ("alphabetic", alphabetic); + ("ascii_hex_digit", ascii_hex_digit); + ("hex_digit", hex_digit); + ("id_continue", id_continue); + ("id_start", id_start); + ("lowercase", lowercase); + ("math", math); + ("other_alphabetic", other_alphabetic); + ("other_lowercase", other_lowercase); + ("other_math", other_math); + ("other_uppercase", other_uppercase); + ("uppercase", uppercase); + ("white_space", white_space); + ("xid_continue", xid_continue); + ("xid_start", xid_start) + ] - let list = - [ - ("alphabetic", alphabetic); - ("ascii_hex_digit", ascii_hex_digit); - ("hex_digit", hex_digit); - ("id_continue", id_continue); - ("id_start", id_start); - ("lowercase", lowercase); - ("math", math); - ("other_alphabetic", other_alphabetic); - ("other_lowercase", other_lowercase); - ("other_math", other_math); - ("other_uppercase", other_uppercase); - ("uppercase", uppercase); - ("white_space", white_space); - ("xid_continue", xid_continue); - ("xid_start", xid_start); - ] end From 5f3dea9463e4387ef4156b8ccf287e83ec12c980 Mon Sep 17 00:00:00 2001 From: dongyan Date: Mon, 19 Sep 2022 20:42:07 +0800 Subject: [PATCH 06/30] Fix location messages --- examples/tokenizer.ml | 3 +- src/syntax/ppx_sedlex.ml | 63 +- src/syntax/sedlex.ml | 3 +- src/syntax/unicode.ml | 14283 ++++++++++++++++++++++++++++++------- 4 files changed, 11889 insertions(+), 2463 deletions(-) diff --git a/examples/tokenizer.ml b/examples/tokenizer.ml index 0c828c01..e90af0d7 100644 --- a/examples/tokenizer.ml +++ b/examples/tokenizer.ml @@ -7,8 +7,7 @@ let rec token buf = | number -> Printf.printf "Number %s\n" (Sedlexing.Latin1.lexeme buf); token buf - | (letter as initial), Star ('A' .. 'Z' | 'a' .. 'z' | digit) -> - Printf.printf "initial (%i, %i)\n" (fst initial) (snd initial); + | letter, Star ('A' .. 'Z' | 'a' .. 'z' | digit) -> Printf.printf "Ident %s\n" (Sedlexing.Latin1.lexeme buf); token buf | Plus xml_blank -> token buf diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index 84073419..b1e136ed 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -106,8 +106,8 @@ end) (* Lexeme aliases *) -module StringSet = Set.Make (struct - type t = string +module StrLocSet = Set.Make (struct + type t = string loc let compare = compare end) @@ -266,11 +266,12 @@ let gen_recflag auto = let gen_trace lexbuf traces i = function | (_, []), _ -> [] - | (_, aliases), { pexp_loc = loc; _ } -> + | (_, aliases), _ -> + let loc = default_loc in let trans, finals = traces.(i) in let alias_indexes = List.to_seq aliases - |> Seq.mapi (fun i alias -> (alias, i)) + |> Seq.mapi (fun i { txt = alias } -> (alias, i)) |> StringMap.of_seq in let find_index alias = StringMap.find alias alias_indexes in @@ -368,7 +369,7 @@ let gen_trace lexbuf traces i = function let gen_aliases lexbuf i e = function | [] -> e | aliases -> - let loc = e.pexp_loc in + let loc = default_loc in pexp_let ~loc Nonrecursive [ value_binding ~loc @@ -378,7 +379,7 @@ let gen_aliases lexbuf i e = function ] @@ pexp_let ~loc Nonrecursive (List.mapi - (fun i alias -> + (fun i { txt = alias; loc } -> value_binding ~loc ~pat:(pvar ~loc alias) ~expr: [%expr @@ -392,7 +393,7 @@ let gen_definition lexbuf l error = let brs = Array.of_list (List.map - (fun ((r, s), e) -> ((r, List.of_seq (StringSet.to_seq s)), e)) + (fun ((r, s), e) -> ((r, List.of_seq (StrLocSet.to_seq s)), e)) l) in let auto, traces = Sedlex.compile (Array.map (fun ((r, _), _) -> r) brs) in @@ -448,7 +449,7 @@ let regexp_of_pattern allow_alias env = match tuple with | Some { ppat_desc = Ppat_tuple [p0; p1] } -> begin match func (fst @@ aux p0) (fst @@ aux p1) with - | Some r -> (r, StringSet.empty) + | Some r -> (r, StrLocSet.empty) | None -> err p.ppat_loc @@ "the " ^ name ^ " operator can only applied to single-character length \ @@ -464,12 +465,12 @@ let regexp_of_pattern allow_alias env = | Ppat_or (p1, p2) -> let r1, s1 = aux ~allow_alias p1 in let r2, s2 = aux ~allow_alias p2 in - if not (StringSet.equal s1 s2) then begin + if not (StrLocSet.equal s1 s2) then begin let x = - try StringSet.choose (StringSet.diff s1 s2) - with Not_found -> StringSet.choose (StringSet.diff s2 s1) + try StrLocSet.choose (StrLocSet.diff s1 s2) + with Not_found -> StrLocSet.choose (StrLocSet.diff s2 s1) in - err loc @@ "variable " ^ x + err loc @@ "variable " ^ x.txt ^ " must occur on both sides of this | pattern" end; (Sedlex.alt r1 r2, s1) @@ -477,17 +478,17 @@ let regexp_of_pattern allow_alias env = List.fold_left (fun (r1, s1) p -> let r2, s2 = aux ~allow_alias p in - if not (StringSet.disjoint s1 s2) then begin - let x = StringSet.choose (StringSet.inter s1 s2) in - err loc @@ "variable " ^ x + if not (StrLocSet.disjoint s1 s2) then begin + let x = StrLocSet.choose (StrLocSet.inter s1 s2) in + err loc @@ "variable " ^ x.txt ^ " is bound several times in this matching" end; - (Sedlex.seq r1 r2, StringSet.union s1 s2)) + (Sedlex.seq r1 r2, StrLocSet.union s1 s2)) (aux ~allow_alias p) pl | Ppat_construct ({ txt = Lident "Star" }, Some (_, p)) -> - (Sedlex.rep (fst @@ aux p), StringSet.empty) + (Sedlex.rep (fst @@ aux p), StrLocSet.empty) | Ppat_construct ({ txt = Lident "Plus" }, Some (_, p)) -> - (Sedlex.plus (fst @@ aux p), StringSet.empty) + (Sedlex.plus (fst @@ aux p), StrLocSet.empty) | Ppat_construct ( { txt = Lident "Rep" }, Some @@ -508,7 +509,7 @@ let regexp_of_pattern allow_alias env = let i1 = int_of_string i1 in let i2 = int_of_string i2 in if 0 <= i1 && i1 <= i2 then - (repeat (fst @@ aux p0) (i1, i2), StringSet.empty) + (repeat (fst @@ aux p0) (i1, i2), StrLocSet.empty) else err p.ppat_loc "Invalid range for Rep operator" | _ -> err p.ppat_loc "Rep must take an integer constant or interval" @@ -516,12 +517,12 @@ let regexp_of_pattern allow_alias env = | Ppat_construct ({ txt = Lident "Rep" }, _) -> err p.ppat_loc "the Rep operator takes 2 arguments" | Ppat_construct ({ txt = Lident "Opt" }, Some (_, p)) -> - (Sedlex.alt Sedlex.eps (fst @@ aux p), StringSet.empty) + (Sedlex.alt Sedlex.eps (fst @@ aux p), StrLocSet.empty) | Ppat_construct ({ txt = Lident "Compl" }, arg) -> begin match arg with | Some (_, p0) -> begin match Sedlex.compl (fst @@ aux p0) with - | Some r -> (r, StringSet.empty) + | Some r -> (r, StrLocSet.empty) | None -> err p.ppat_loc "the Compl operator can only applied to a \ @@ -547,43 +548,43 @@ let regexp_of_pattern allow_alias env = for i = 0 to String.length s - 1 do c := Cset.union !c (Cset.singleton (Char.code s.[i])) done; - (Sedlex.chars !c, StringSet.empty) + (Sedlex.chars !c, StrLocSet.empty) | _ -> err p.ppat_loc "the Chars operator requires a string argument") | Ppat_interval (i_start, i_end) -> begin match (i_start, i_end) with | Pconst_char c1, Pconst_char c2 -> ( Sedlex.chars (Cset.interval (Char.code c1) (Char.code c2)), - StringSet.empty ) + StrLocSet.empty ) | Pconst_integer (i1, _), Pconst_integer (i2, _) -> ( Sedlex.chars (Cset.interval (codepoint (int_of_string i1)) (codepoint (int_of_string i2))), - StringSet.empty ) + StrLocSet.empty ) | _ -> err p.ppat_loc "this pattern is not a valid interval regexp" end | Ppat_constant const -> begin match const with - | Pconst_string (s, _, _) -> (regexp_for_string s, StringSet.empty) - | Pconst_char c -> (regexp_for_char c, StringSet.empty) + | Pconst_string (s, _, _) -> (regexp_for_string s, StrLocSet.empty) + | Pconst_char c -> (regexp_for_char c, StrLocSet.empty) | Pconst_integer (i, _) -> ( Sedlex.chars (Cset.singleton (codepoint (int_of_string i))), - StringSet.empty ) + StrLocSet.empty ) | _ -> err p.ppat_loc "this pattern is not a valid regexp" end | Ppat_var { txt = x } -> begin - try (StringMap.find x env, StringSet.empty) + try (StringMap.find x env, StrLocSet.empty) with Not_found -> err p.ppat_loc (Printf.sprintf "unbound regexp %s" x) end - | Ppat_alias (p, { txt = x }) when allow_alias -> + | Ppat_alias (p, ({ txt = x } as x_loc)) when allow_alias -> let r, s = aux ~allow_alias p in - if StringSet.mem x s then begin + if StrLocSet.mem x_loc s then begin err loc @@ "variable " ^ x ^ " is bound several times in this matching" end; - (Sedlex.alias r x, StringSet.add x s) + (Sedlex.alias r x, StrLocSet.add x_loc s) | _ -> err p.ppat_loc "this pattern is not a valid regexp" in aux ~allow_alias diff --git a/src/syntax/sedlex.ml b/src/syntax/sedlex.ml index 2d74c519..51668062 100644 --- a/src/syntax/sedlex.ml +++ b/src/syntax/sedlex.ml @@ -140,13 +140,12 @@ let compile_traces states (start, final) = List.iter aux node.eps in aux start; - let final_idx = Hashtbl.find nodes_idx final in let handle_alias (starts, stops) = function | None -> (starts, stops) | Some (alias, flag) -> if flag then (alias :: starts, stops) else (starts, alias :: stops) in - let first_case = (-1, 0, final_idx, [], []) in + let first_case = (-1, 0, Hashtbl.find nodes_idx final, [], []) in let trans_cases = let visited = Array.make !counter false in let cases = Hashtbl.create 31 in diff --git a/src/syntax/unicode.ml b/src/syntax/unicode.ml index 24aae1cc..ed322964 100644 --- a/src/syntax/unicode.ml +++ b/src/syntax/unicode.ml @@ -1,2517 +1,11944 @@ let version = "14.0.0" module Categories = struct - - let cc = - [0x85, 0x85; 0x7f, 0x9f; 0x9, 0xd; 0x0, 0x1f] + let cc = [(0x85, 0x85); (0x7f, 0x9f); (0x9, 0xd); (0x0, 0x1f)] let cf = - [0xad, 0xad; 0x600, 0x605; 0x61c, 0x61c; 0x6dd, 0x6dd; 0x70f, 0x70f; - 0x890, 0x891; 0x8e2, 0x8e2; 0x180e, 0x180e; 0x200b, 0x200f; 0x200c, 0x200c; - 0x200c, 0x200d; 0x200e, 0x200f; 0x202a, 0x202e; 0x2060, 0x2064; 0x2061, 0x2064; - 0x2066, 0x2069; 0x2066, 0x206f; 0x206a, 0x206f; 0xfeff, 0xfeff; 0xfff9, 0xfffb; - 0x110bd, 0x110bd; 0x110cd, 0x110cd; 0x13430, 0x13438; 0x1bca0, 0x1bca3; 0x1d173, 0x1d17a; - 0xe0020, 0xe007f; 0xe0001, 0xe0001] + [ + (0xad, 0xad); + (0x600, 0x605); + (0x61c, 0x61c); + (0x6dd, 0x6dd); + (0x70f, 0x70f); + (0x890, 0x891); + (0x8e2, 0x8e2); + (0x180e, 0x180e); + (0x200b, 0x200f); + (0x200c, 0x200c); + (0x200c, 0x200d); + (0x200e, 0x200f); + (0x202a, 0x202e); + (0x2060, 0x2064); + (0x2061, 0x2064); + (0x2066, 0x2069); + (0x2066, 0x206f); + (0x206a, 0x206f); + (0xfeff, 0xfeff); + (0xfff9, 0xfffb); + (0x110bd, 0x110bd); + (0x110cd, 0x110cd); + (0x13430, 0x13438); + (0x1bca0, 0x1bca3); + (0x1d173, 0x1d17a); + (0xe0020, 0xe007f); + (0xe0001, 0xe0001); + ] let cn = - [0x378, 0x379; 0x380, 0x383; 0x38b, 0x38b; 0x38d, 0x38d; 0x3a2, 0x3a2; - 0x530, 0x530; 0x557, 0x558; 0x58b, 0x58c; 0x590, 0x590; 0x5c8, 0x5cf; - 0x5eb, 0x5ee; 0x5f5, 0x5ff; 0x70e, 0x70e; 0x74b, 0x74c; 0x7b2, 0x7bf; - 0x7fb, 0x7fc; 0x82e, 0x82f; 0x83f, 0x83f; 0x85c, 0x85d; 0x85f, 0x85f; - 0x86b, 0x86f; 0x88f, 0x88f; 0x892, 0x897; 0x984, 0x984; 0x98d, 0x98e; - 0x991, 0x992; 0x9a9, 0x9a9; 0x9b1, 0x9b1; 0x9b3, 0x9b5; 0x9ba, 0x9bb; - 0x9c5, 0x9c6; 0x9c9, 0x9ca; 0x9cf, 0x9d6; 0x9d8, 0x9db; 0x9de, 0x9de; - 0x9e4, 0x9e5; 0x9ff, 0xa00; 0xa04, 0xa04; 0xa0b, 0xa0e; 0xa11, 0xa12; - 0xa29, 0xa29; 0xa31, 0xa31; 0xa34, 0xa34; 0xa37, 0xa37; 0xa3a, 0xa3b; - 0xa3d, 0xa3d; 0xa43, 0xa46; 0xa49, 0xa4a; 0xa4e, 0xa50; 0xa52, 0xa58; - 0xa5d, 0xa5d; 0xa5f, 0xa65; 0xa77, 0xa80; 0xa84, 0xa84; 0xa8e, 0xa8e; - 0xa92, 0xa92; 0xaa9, 0xaa9; 0xab1, 0xab1; 0xab4, 0xab4; 0xaba, 0xabb; - 0xac6, 0xac6; 0xaca, 0xaca; 0xace, 0xacf; 0xad1, 0xadf; 0xae4, 0xae5; - 0xaf2, 0xaf8; 0xb00, 0xb00; 0xb04, 0xb04; 0xb0d, 0xb0e; 0xb11, 0xb12; - 0xb29, 0xb29; 0xb31, 0xb31; 0xb34, 0xb34; 0xb3a, 0xb3b; 0xb45, 0xb46; - 0xb49, 0xb4a; 0xb4e, 0xb54; 0xb58, 0xb5b; 0xb5e, 0xb5e; 0xb64, 0xb65; - 0xb78, 0xb81; 0xb84, 0xb84; 0xb8b, 0xb8d; 0xb91, 0xb91; 0xb96, 0xb98; - 0xb9b, 0xb9b; 0xb9d, 0xb9d; 0xba0, 0xba2; 0xba5, 0xba7; 0xbab, 0xbad; - 0xbba, 0xbbd; 0xbc3, 0xbc5; 0xbc9, 0xbc9; 0xbce, 0xbcf; 0xbd1, 0xbd6; - 0xbd8, 0xbe5; 0xbfb, 0xbff; 0xc0d, 0xc0d; 0xc11, 0xc11; 0xc29, 0xc29; - 0xc3a, 0xc3b; 0xc45, 0xc45; 0xc49, 0xc49; 0xc4e, 0xc54; 0xc57, 0xc57; - 0xc5b, 0xc5c; 0xc5e, 0xc5f; 0xc64, 0xc65; 0xc70, 0xc76; 0xc8d, 0xc8d; - 0xc91, 0xc91; 0xca9, 0xca9; 0xcb4, 0xcb4; 0xcba, 0xcbb; 0xcc5, 0xcc5; - 0xcc9, 0xcc9; 0xcce, 0xcd4; 0xcd7, 0xcdc; 0xcdf, 0xcdf; 0xce4, 0xce5; - 0xcf0, 0xcf0; 0xcf3, 0xcff; 0xd0d, 0xd0d; 0xd11, 0xd11; 0xd45, 0xd45; - 0xd49, 0xd49; 0xd50, 0xd53; 0xd64, 0xd65; 0xd80, 0xd80; 0xd84, 0xd84; - 0xd97, 0xd99; 0xdb2, 0xdb2; 0xdbc, 0xdbc; 0xdbe, 0xdbf; 0xdc7, 0xdc9; - 0xdcb, 0xdce; 0xdd5, 0xdd5; 0xdd7, 0xdd7; 0xde0, 0xde5; 0xdf0, 0xdf1; - 0xdf5, 0xe00; 0xe3b, 0xe3e; 0xe5c, 0xe80; 0xe83, 0xe83; 0xe85, 0xe85; - 0xe8b, 0xe8b; 0xea4, 0xea4; 0xea6, 0xea6; 0xebe, 0xebf; 0xec5, 0xec5; - 0xec7, 0xec7; 0xece, 0xecf; 0xeda, 0xedb; 0xee0, 0xeff; 0xf48, 0xf48; - 0xf6d, 0xf70; 0xf98, 0xf98; 0xfbd, 0xfbd; 0xfcd, 0xfcd; 0xfdb, 0xfff; - 0x10c6, 0x10c6; 0x10c8, 0x10cc; 0x10ce, 0x10cf; 0x1249, 0x1249; 0x124e, 0x124f; - 0x1257, 0x1257; 0x1259, 0x1259; 0x125e, 0x125f; 0x1289, 0x1289; 0x128e, 0x128f; - 0x12b1, 0x12b1; 0x12b6, 0x12b7; 0x12bf, 0x12bf; 0x12c1, 0x12c1; 0x12c6, 0x12c7; - 0x12d7, 0x12d7; 0x1311, 0x1311; 0x1316, 0x1317; 0x135b, 0x135c; 0x137d, 0x137f; - 0x139a, 0x139f; 0x13f6, 0x13f7; 0x13fe, 0x13ff; 0x169d, 0x169f; 0x16f9, 0x16ff; - 0x1716, 0x171e; 0x1737, 0x173f; 0x1754, 0x175f; 0x176d, 0x176d; 0x1771, 0x1771; - 0x1774, 0x177f; 0x17de, 0x17df; 0x17ea, 0x17ef; 0x17fa, 0x17ff; 0x181a, 0x181f; - 0x1879, 0x187f; 0x18ab, 0x18af; 0x18f6, 0x18ff; 0x191f, 0x191f; 0x192c, 0x192f; - 0x193c, 0x193f; 0x1941, 0x1943; 0x196e, 0x196f; 0x1975, 0x197f; 0x19ac, 0x19af; - 0x19ca, 0x19cf; 0x19db, 0x19dd; 0x1a1c, 0x1a1d; 0x1a5f, 0x1a5f; 0x1a7d, 0x1a7e; - 0x1a8a, 0x1a8f; 0x1a9a, 0x1a9f; 0x1aae, 0x1aaf; 0x1acf, 0x1aff; 0x1b4d, 0x1b4f; - 0x1b7f, 0x1b7f; 0x1bf4, 0x1bfb; 0x1c38, 0x1c3a; 0x1c4a, 0x1c4c; 0x1c89, 0x1c8f; - 0x1cbb, 0x1cbc; 0x1cc8, 0x1ccf; 0x1cfb, 0x1cff; 0x1f16, 0x1f17; 0x1f1e, 0x1f1f; - 0x1f46, 0x1f47; 0x1f4e, 0x1f4f; 0x1f58, 0x1f58; 0x1f5a, 0x1f5a; 0x1f5c, 0x1f5c; - 0x1f5e, 0x1f5e; 0x1f7e, 0x1f7f; 0x1fb5, 0x1fb5; 0x1fc5, 0x1fc5; 0x1fd4, 0x1fd5; - 0x1fdc, 0x1fdc; 0x1ff0, 0x1ff1; 0x1ff5, 0x1ff5; 0x1fff, 0x1fff; 0x2065, 0x2065; - 0x2072, 0x2073; 0x208f, 0x208f; 0x209d, 0x209f; 0x20c1, 0x20cf; 0x20f1, 0x20ff; - 0x218c, 0x218f; 0x2427, 0x243f; 0x244b, 0x245f; 0x2b74, 0x2b75; 0x2b96, 0x2b96; - 0x2cf4, 0x2cf8; 0x2d26, 0x2d26; 0x2d28, 0x2d2c; 0x2d2e, 0x2d2f; 0x2d68, 0x2d6e; - 0x2d71, 0x2d7e; 0x2d97, 0x2d9f; 0x2da7, 0x2da7; 0x2daf, 0x2daf; 0x2db7, 0x2db7; - 0x2dbf, 0x2dbf; 0x2dc7, 0x2dc7; 0x2dcf, 0x2dcf; 0x2dd7, 0x2dd7; 0x2ddf, 0x2ddf; - 0x2e5e, 0x2e7f; 0x2e9a, 0x2e9a; 0x2ef4, 0x2eff; 0x2fd6, 0x2fef; 0x2ffc, 0x2fff; - 0x3040, 0x3040; 0x3097, 0x3098; 0x3100, 0x3104; 0x3130, 0x3130; 0x318f, 0x318f; - 0x31e4, 0x31ef; 0x321f, 0x321f; 0xa48d, 0xa48f; 0xa4c7, 0xa4cf; 0xa62c, 0xa63f; - 0xa6f8, 0xa6ff; 0xa7cb, 0xa7cf; 0xa7d2, 0xa7d2; 0xa7d4, 0xa7d4; 0xa7da, 0xa7f1; - 0xa82d, 0xa82f; 0xa83a, 0xa83f; 0xa878, 0xa87f; 0xa8c6, 0xa8cd; 0xa8da, 0xa8df; - 0xa954, 0xa95e; 0xa97d, 0xa97f; 0xa9ce, 0xa9ce; 0xa9da, 0xa9dd; 0xa9ff, 0xa9ff; - 0xaa37, 0xaa3f; 0xaa4e, 0xaa4f; 0xaa5a, 0xaa5b; 0xaac3, 0xaada; 0xaaf7, 0xab00; - 0xab07, 0xab08; 0xab0f, 0xab10; 0xab17, 0xab1f; 0xab27, 0xab27; 0xab2f, 0xab2f; - 0xab6c, 0xab6f; 0xabee, 0xabef; 0xabfa, 0xabff; 0xd7a4, 0xd7af; 0xd7c7, 0xd7ca; - 0xd7fc, 0xd7ff; 0xfa6e, 0xfa6f; 0xfada, 0xfaff; 0xfb07, 0xfb12; 0xfb18, 0xfb1c; - 0xfb37, 0xfb37; 0xfb3d, 0xfb3d; 0xfb3f, 0xfb3f; 0xfb42, 0xfb42; 0xfb45, 0xfb45; - 0xfbc3, 0xfbd2; 0xfd90, 0xfd91; 0xfdc8, 0xfdce; 0xfdd0, 0xfdef; 0xfe1a, 0xfe1f; - 0xfe53, 0xfe53; 0xfe67, 0xfe67; 0xfe6c, 0xfe6f; 0xfe75, 0xfe75; 0xfefd, 0xfefe; - 0xff00, 0xff00; 0xffbf, 0xffc1; 0xffc8, 0xffc9; 0xffd0, 0xffd1; 0xffd8, 0xffd9; - 0xffdd, 0xffdf; 0xffe7, 0xffe7; 0xffef, 0xfff8; 0xfff0, 0xfff8; 0xfffe, 0xffff; - 0x1000c, 0x1000c; 0x10027, 0x10027; 0x1003b, 0x1003b; 0x1003e, 0x1003e; 0x1004e, 0x1004f; - 0x1005e, 0x1007f; 0x100fb, 0x100ff; 0x10103, 0x10106; 0x10134, 0x10136; 0x1018f, 0x1018f; - 0x1019d, 0x1019f; 0x101a1, 0x101cf; 0x101fe, 0x1027f; 0x1029d, 0x1029f; 0x102d1, 0x102df; - 0x102fc, 0x102ff; 0x10324, 0x1032c; 0x1034b, 0x1034f; 0x1037b, 0x1037f; 0x1039e, 0x1039e; - 0x103c4, 0x103c7; 0x103d6, 0x103ff; 0x1049e, 0x1049f; 0x104aa, 0x104af; 0x104d4, 0x104d7; - 0x104fc, 0x104ff; 0x10528, 0x1052f; 0x10564, 0x1056e; 0x1057b, 0x1057b; 0x1058b, 0x1058b; - 0x10593, 0x10593; 0x10596, 0x10596; 0x105a2, 0x105a2; 0x105b2, 0x105b2; 0x105ba, 0x105ba; - 0x105bd, 0x105ff; 0x10737, 0x1073f; 0x10756, 0x1075f; 0x10768, 0x1077f; 0x10786, 0x10786; - 0x107b1, 0x107b1; 0x107bb, 0x107ff; 0x10806, 0x10807; 0x10809, 0x10809; 0x10836, 0x10836; - 0x10839, 0x1083b; 0x1083d, 0x1083e; 0x10856, 0x10856; 0x1089f, 0x108a6; 0x108b0, 0x108df; - 0x108f3, 0x108f3; 0x108f6, 0x108fa; 0x1091c, 0x1091e; 0x1093a, 0x1093e; 0x10940, 0x1097f; - 0x109b8, 0x109bb; 0x109d0, 0x109d1; 0x10a04, 0x10a04; 0x10a07, 0x10a0b; 0x10a14, 0x10a14; - 0x10a18, 0x10a18; 0x10a36, 0x10a37; 0x10a3b, 0x10a3e; 0x10a49, 0x10a4f; 0x10a59, 0x10a5f; - 0x10aa0, 0x10abf; 0x10ae7, 0x10aea; 0x10af7, 0x10aff; 0x10b36, 0x10b38; 0x10b56, 0x10b57; - 0x10b73, 0x10b77; 0x10b92, 0x10b98; 0x10b9d, 0x10ba8; 0x10bb0, 0x10bff; 0x10c49, 0x10c7f; - 0x10cb3, 0x10cbf; 0x10cf3, 0x10cf9; 0x10d28, 0x10d2f; 0x10d3a, 0x10e5f; 0x10e7f, 0x10e7f; - 0x10eaa, 0x10eaa; 0x10eae, 0x10eaf; 0x10eb2, 0x10eff; 0x10f28, 0x10f2f; 0x10f5a, 0x10f6f; - 0x10f8a, 0x10faf; 0x10fcc, 0x10fdf; 0x10ff7, 0x10fff; 0x1104e, 0x11051; 0x11076, 0x1107e; - 0x110c3, 0x110cc; 0x110ce, 0x110cf; 0x110e9, 0x110ef; 0x110fa, 0x110ff; 0x11135, 0x11135; - 0x11148, 0x1114f; 0x11177, 0x1117f; 0x111e0, 0x111e0; 0x111f5, 0x111ff; 0x11212, 0x11212; - 0x1123f, 0x1127f; 0x11287, 0x11287; 0x11289, 0x11289; 0x1128e, 0x1128e; 0x1129e, 0x1129e; - 0x112aa, 0x112af; 0x112eb, 0x112ef; 0x112fa, 0x112ff; 0x11304, 0x11304; 0x1130d, 0x1130e; - 0x11311, 0x11312; 0x11329, 0x11329; 0x11331, 0x11331; 0x11334, 0x11334; 0x1133a, 0x1133a; - 0x11345, 0x11346; 0x11349, 0x1134a; 0x1134e, 0x1134f; 0x11351, 0x11356; 0x11358, 0x1135c; - 0x11364, 0x11365; 0x1136d, 0x1136f; 0x11375, 0x113ff; 0x1145c, 0x1145c; 0x11462, 0x1147f; - 0x114c8, 0x114cf; 0x114da, 0x1157f; 0x115b6, 0x115b7; 0x115de, 0x115ff; 0x11645, 0x1164f; - 0x1165a, 0x1165f; 0x1166d, 0x1167f; 0x116ba, 0x116bf; 0x116ca, 0x116ff; 0x1171b, 0x1171c; - 0x1172c, 0x1172f; 0x11747, 0x117ff; 0x1183c, 0x1189f; 0x118f3, 0x118fe; 0x11907, 0x11908; - 0x1190a, 0x1190b; 0x11914, 0x11914; 0x11917, 0x11917; 0x11936, 0x11936; 0x11939, 0x1193a; - 0x11947, 0x1194f; 0x1195a, 0x1199f; 0x119a8, 0x119a9; 0x119d8, 0x119d9; 0x119e5, 0x119ff; - 0x11a48, 0x11a4f; 0x11aa3, 0x11aaf; 0x11af9, 0x11bff; 0x11c09, 0x11c09; 0x11c37, 0x11c37; - 0x11c46, 0x11c4f; 0x11c6d, 0x11c6f; 0x11c90, 0x11c91; 0x11ca8, 0x11ca8; 0x11cb7, 0x11cff; - 0x11d07, 0x11d07; 0x11d0a, 0x11d0a; 0x11d37, 0x11d39; 0x11d3b, 0x11d3b; 0x11d3e, 0x11d3e; - 0x11d48, 0x11d4f; 0x11d5a, 0x11d5f; 0x11d66, 0x11d66; 0x11d69, 0x11d69; 0x11d8f, 0x11d8f; - 0x11d92, 0x11d92; 0x11d99, 0x11d9f; 0x11daa, 0x11edf; 0x11ef9, 0x11faf; 0x11fb1, 0x11fbf; - 0x11ff2, 0x11ffe; 0x1239a, 0x123ff; 0x1246f, 0x1246f; 0x12475, 0x1247f; 0x12544, 0x12f8f; - 0x12ff3, 0x12fff; 0x1342f, 0x1342f; 0x13439, 0x143ff; 0x14647, 0x167ff; 0x16a39, 0x16a3f; - 0x16a5f, 0x16a5f; 0x16a6a, 0x16a6d; 0x16abf, 0x16abf; 0x16aca, 0x16acf; 0x16aee, 0x16aef; - 0x16af6, 0x16aff; 0x16b46, 0x16b4f; 0x16b5a, 0x16b5a; 0x16b62, 0x16b62; 0x16b78, 0x16b7c; - 0x16b90, 0x16e3f; 0x16e9b, 0x16eff; 0x16f4b, 0x16f4e; 0x16f88, 0x16f8e; 0x16fa0, 0x16fdf; - 0x16fe5, 0x16fef; 0x16ff2, 0x16fff; 0x187f8, 0x187ff; 0x18cd6, 0x18cff; 0x18d09, 0x1afef; - 0x1aff4, 0x1aff4; 0x1affc, 0x1affc; 0x1afff, 0x1afff; 0x1b123, 0x1b14f; 0x1b153, 0x1b163; - 0x1b168, 0x1b16f; 0x1b2fc, 0x1bbff; 0x1bc6b, 0x1bc6f; 0x1bc7d, 0x1bc7f; 0x1bc89, 0x1bc8f; - 0x1bc9a, 0x1bc9b; 0x1bca4, 0x1ceff; 0x1cf2e, 0x1cf2f; 0x1cf47, 0x1cf4f; 0x1cfc4, 0x1cfff; - 0x1d0f6, 0x1d0ff; 0x1d127, 0x1d128; 0x1d1eb, 0x1d1ff; 0x1d246, 0x1d2df; 0x1d2f4, 0x1d2ff; - 0x1d357, 0x1d35f; 0x1d379, 0x1d3ff; 0x1d455, 0x1d455; 0x1d49d, 0x1d49d; 0x1d4a0, 0x1d4a1; - 0x1d4a3, 0x1d4a4; 0x1d4a7, 0x1d4a8; 0x1d4ad, 0x1d4ad; 0x1d4ba, 0x1d4ba; 0x1d4bc, 0x1d4bc; - 0x1d4c4, 0x1d4c4; 0x1d506, 0x1d506; 0x1d50b, 0x1d50c; 0x1d515, 0x1d515; 0x1d51d, 0x1d51d; - 0x1d53a, 0x1d53a; 0x1d53f, 0x1d53f; 0x1d545, 0x1d545; 0x1d547, 0x1d549; 0x1d551, 0x1d551; - 0x1d6a6, 0x1d6a7; 0x1d7cc, 0x1d7cd; 0x1da8c, 0x1da9a; 0x1daa0, 0x1daa0; 0x1dab0, 0x1deff; - 0x1df1f, 0x1dfff; 0x1e007, 0x1e007; 0x1e019, 0x1e01a; 0x1e022, 0x1e022; 0x1e025, 0x1e025; - 0x1e02b, 0x1e0ff; 0x1e12d, 0x1e12f; 0x1e13e, 0x1e13f; 0x1e14a, 0x1e14d; 0x1e150, 0x1e28f; - 0x1e2af, 0x1e2bf; 0x1e2fa, 0x1e2fe; 0x1e300, 0x1e7df; 0x1e7e7, 0x1e7e7; 0x1e7ec, 0x1e7ec; - 0x1e7ef, 0x1e7ef; 0x1e7ff, 0x1e7ff; 0x1e8c5, 0x1e8c6; 0x1e8d7, 0x1e8ff; 0x1e94c, 0x1e94f; - 0x1e95a, 0x1e95d; 0x1e960, 0x1ec70; 0x1ecb5, 0x1ed00; 0x1ed3e, 0x1edff; 0x1ee04, 0x1ee04; - 0x1ee20, 0x1ee20; 0x1ee23, 0x1ee23; 0x1ee25, 0x1ee26; 0x1ee28, 0x1ee28; 0x1ee33, 0x1ee33; - 0x1ee38, 0x1ee38; 0x1ee3a, 0x1ee3a; 0x1ee3c, 0x1ee41; 0x1ee43, 0x1ee46; 0x1ee48, 0x1ee48; - 0x1ee4a, 0x1ee4a; 0x1ee4c, 0x1ee4c; 0x1ee50, 0x1ee50; 0x1ee53, 0x1ee53; 0x1ee55, 0x1ee56; - 0x1ee58, 0x1ee58; 0x1ee5a, 0x1ee5a; 0x1ee5c, 0x1ee5c; 0x1ee5e, 0x1ee5e; 0x1ee60, 0x1ee60; - 0x1ee63, 0x1ee63; 0x1ee65, 0x1ee66; 0x1ee6b, 0x1ee6b; 0x1ee73, 0x1ee73; 0x1ee78, 0x1ee78; - 0x1ee7d, 0x1ee7d; 0x1ee7f, 0x1ee7f; 0x1ee8a, 0x1ee8a; 0x1ee9c, 0x1eea0; 0x1eea4, 0x1eea4; - 0x1eeaa, 0x1eeaa; 0x1eebc, 0x1eeef; 0x1eef2, 0x1efff; 0x1f02c, 0x1f02f; 0x1f094, 0x1f09f; - 0x1f0af, 0x1f0b0; 0x1f0c0, 0x1f0c0; 0x1f0d0, 0x1f0d0; 0x1f0f6, 0x1f0ff; 0x1f1ae, 0x1f1e5; - 0x1f203, 0x1f20f; 0x1f23c, 0x1f23f; 0x1f249, 0x1f24f; 0x1f252, 0x1f25f; 0x1f266, 0x1f2ff; - 0x1f6d8, 0x1f6dc; 0x1f6ed, 0x1f6ef; 0x1f6fd, 0x1f6ff; 0x1f774, 0x1f77f; 0x1f7d9, 0x1f7df; - 0x1f7ec, 0x1f7ef; 0x1f7f1, 0x1f7ff; 0x1f80c, 0x1f80f; 0x1f848, 0x1f84f; 0x1f85a, 0x1f85f; - 0x1f888, 0x1f88f; 0x1f8ae, 0x1f8af; 0x1f8b2, 0x1f8ff; 0x1fa54, 0x1fa5f; 0x1fa6e, 0x1fa6f; - 0x1fa75, 0x1fa77; 0x1fa7d, 0x1fa7f; 0x1fa87, 0x1fa8f; 0x1faad, 0x1faaf; 0x1fabb, 0x1fabf; - 0x1fac6, 0x1facf; 0x1fada, 0x1fadf; 0x1fae8, 0x1faef; 0x1faf7, 0x1faff; 0x1fb93, 0x1fb93; - 0x1fbcb, 0x1fbef; 0x1fbfa, 0x1ffff; 0x1fffe, 0x1ffff; 0x2a6e0, 0x2a6ff; 0x2b739, 0x2b73f; - 0x2b81e, 0x2b81f; 0x2cea2, 0x2ceaf; 0x2ebe1, 0x2f7ff; 0x2fa1e, 0x2ffff; 0x2fffe, 0x2ffff; - 0x3134b, 0xe0000; 0x3fffe, 0x3ffff; 0x4fffe, 0x4ffff; 0x5fffe, 0x5ffff; 0x6fffe, 0x6ffff; - 0x7fffe, 0x7ffff; 0x8fffe, 0x8ffff; 0x9fffe, 0x9ffff; 0xafffe, 0xaffff; 0xbfffe, 0xbffff; - 0xcfffe, 0xcffff; 0xdfffe, 0xdffff; 0xe0000, 0xe0000; 0xe0002, 0xe001f; 0xe0080, 0xe00ff; - 0x10fffe, 0x10ffff; 0xffffe, 0xfffff; 0xefffe, 0xeffff; 0xe01f0, 0xeffff; 0xe01f0, 0xe0fff] - - let co = - [0x100000, 0x10fffd; 0xf0000, 0xffffd; 0xe000, 0xf8ff] + [ + (0x378, 0x379); + (0x380, 0x383); + (0x38b, 0x38b); + (0x38d, 0x38d); + (0x3a2, 0x3a2); + (0x530, 0x530); + (0x557, 0x558); + (0x58b, 0x58c); + (0x590, 0x590); + (0x5c8, 0x5cf); + (0x5eb, 0x5ee); + (0x5f5, 0x5ff); + (0x70e, 0x70e); + (0x74b, 0x74c); + (0x7b2, 0x7bf); + (0x7fb, 0x7fc); + (0x82e, 0x82f); + (0x83f, 0x83f); + (0x85c, 0x85d); + (0x85f, 0x85f); + (0x86b, 0x86f); + (0x88f, 0x88f); + (0x892, 0x897); + (0x984, 0x984); + (0x98d, 0x98e); + (0x991, 0x992); + (0x9a9, 0x9a9); + (0x9b1, 0x9b1); + (0x9b3, 0x9b5); + (0x9ba, 0x9bb); + (0x9c5, 0x9c6); + (0x9c9, 0x9ca); + (0x9cf, 0x9d6); + (0x9d8, 0x9db); + (0x9de, 0x9de); + (0x9e4, 0x9e5); + (0x9ff, 0xa00); + (0xa04, 0xa04); + (0xa0b, 0xa0e); + (0xa11, 0xa12); + (0xa29, 0xa29); + (0xa31, 0xa31); + (0xa34, 0xa34); + (0xa37, 0xa37); + (0xa3a, 0xa3b); + (0xa3d, 0xa3d); + (0xa43, 0xa46); + (0xa49, 0xa4a); + (0xa4e, 0xa50); + (0xa52, 0xa58); + (0xa5d, 0xa5d); + (0xa5f, 0xa65); + (0xa77, 0xa80); + (0xa84, 0xa84); + (0xa8e, 0xa8e); + (0xa92, 0xa92); + (0xaa9, 0xaa9); + (0xab1, 0xab1); + (0xab4, 0xab4); + (0xaba, 0xabb); + (0xac6, 0xac6); + (0xaca, 0xaca); + (0xace, 0xacf); + (0xad1, 0xadf); + (0xae4, 0xae5); + (0xaf2, 0xaf8); + (0xb00, 0xb00); + (0xb04, 0xb04); + (0xb0d, 0xb0e); + (0xb11, 0xb12); + (0xb29, 0xb29); + (0xb31, 0xb31); + (0xb34, 0xb34); + (0xb3a, 0xb3b); + (0xb45, 0xb46); + (0xb49, 0xb4a); + (0xb4e, 0xb54); + (0xb58, 0xb5b); + (0xb5e, 0xb5e); + (0xb64, 0xb65); + (0xb78, 0xb81); + (0xb84, 0xb84); + (0xb8b, 0xb8d); + (0xb91, 0xb91); + (0xb96, 0xb98); + (0xb9b, 0xb9b); + (0xb9d, 0xb9d); + (0xba0, 0xba2); + (0xba5, 0xba7); + (0xbab, 0xbad); + (0xbba, 0xbbd); + (0xbc3, 0xbc5); + (0xbc9, 0xbc9); + (0xbce, 0xbcf); + (0xbd1, 0xbd6); + (0xbd8, 0xbe5); + (0xbfb, 0xbff); + (0xc0d, 0xc0d); + (0xc11, 0xc11); + (0xc29, 0xc29); + (0xc3a, 0xc3b); + (0xc45, 0xc45); + (0xc49, 0xc49); + (0xc4e, 0xc54); + (0xc57, 0xc57); + (0xc5b, 0xc5c); + (0xc5e, 0xc5f); + (0xc64, 0xc65); + (0xc70, 0xc76); + (0xc8d, 0xc8d); + (0xc91, 0xc91); + (0xca9, 0xca9); + (0xcb4, 0xcb4); + (0xcba, 0xcbb); + (0xcc5, 0xcc5); + (0xcc9, 0xcc9); + (0xcce, 0xcd4); + (0xcd7, 0xcdc); + (0xcdf, 0xcdf); + (0xce4, 0xce5); + (0xcf0, 0xcf0); + (0xcf3, 0xcff); + (0xd0d, 0xd0d); + (0xd11, 0xd11); + (0xd45, 0xd45); + (0xd49, 0xd49); + (0xd50, 0xd53); + (0xd64, 0xd65); + (0xd80, 0xd80); + (0xd84, 0xd84); + (0xd97, 0xd99); + (0xdb2, 0xdb2); + (0xdbc, 0xdbc); + (0xdbe, 0xdbf); + (0xdc7, 0xdc9); + (0xdcb, 0xdce); + (0xdd5, 0xdd5); + (0xdd7, 0xdd7); + (0xde0, 0xde5); + (0xdf0, 0xdf1); + (0xdf5, 0xe00); + (0xe3b, 0xe3e); + (0xe5c, 0xe80); + (0xe83, 0xe83); + (0xe85, 0xe85); + (0xe8b, 0xe8b); + (0xea4, 0xea4); + (0xea6, 0xea6); + (0xebe, 0xebf); + (0xec5, 0xec5); + (0xec7, 0xec7); + (0xece, 0xecf); + (0xeda, 0xedb); + (0xee0, 0xeff); + (0xf48, 0xf48); + (0xf6d, 0xf70); + (0xf98, 0xf98); + (0xfbd, 0xfbd); + (0xfcd, 0xfcd); + (0xfdb, 0xfff); + (0x10c6, 0x10c6); + (0x10c8, 0x10cc); + (0x10ce, 0x10cf); + (0x1249, 0x1249); + (0x124e, 0x124f); + (0x1257, 0x1257); + (0x1259, 0x1259); + (0x125e, 0x125f); + (0x1289, 0x1289); + (0x128e, 0x128f); + (0x12b1, 0x12b1); + (0x12b6, 0x12b7); + (0x12bf, 0x12bf); + (0x12c1, 0x12c1); + (0x12c6, 0x12c7); + (0x12d7, 0x12d7); + (0x1311, 0x1311); + (0x1316, 0x1317); + (0x135b, 0x135c); + (0x137d, 0x137f); + (0x139a, 0x139f); + (0x13f6, 0x13f7); + (0x13fe, 0x13ff); + (0x169d, 0x169f); + (0x16f9, 0x16ff); + (0x1716, 0x171e); + (0x1737, 0x173f); + (0x1754, 0x175f); + (0x176d, 0x176d); + (0x1771, 0x1771); + (0x1774, 0x177f); + (0x17de, 0x17df); + (0x17ea, 0x17ef); + (0x17fa, 0x17ff); + (0x181a, 0x181f); + (0x1879, 0x187f); + (0x18ab, 0x18af); + (0x18f6, 0x18ff); + (0x191f, 0x191f); + (0x192c, 0x192f); + (0x193c, 0x193f); + (0x1941, 0x1943); + (0x196e, 0x196f); + (0x1975, 0x197f); + (0x19ac, 0x19af); + (0x19ca, 0x19cf); + (0x19db, 0x19dd); + (0x1a1c, 0x1a1d); + (0x1a5f, 0x1a5f); + (0x1a7d, 0x1a7e); + (0x1a8a, 0x1a8f); + (0x1a9a, 0x1a9f); + (0x1aae, 0x1aaf); + (0x1acf, 0x1aff); + (0x1b4d, 0x1b4f); + (0x1b7f, 0x1b7f); + (0x1bf4, 0x1bfb); + (0x1c38, 0x1c3a); + (0x1c4a, 0x1c4c); + (0x1c89, 0x1c8f); + (0x1cbb, 0x1cbc); + (0x1cc8, 0x1ccf); + (0x1cfb, 0x1cff); + (0x1f16, 0x1f17); + (0x1f1e, 0x1f1f); + (0x1f46, 0x1f47); + (0x1f4e, 0x1f4f); + (0x1f58, 0x1f58); + (0x1f5a, 0x1f5a); + (0x1f5c, 0x1f5c); + (0x1f5e, 0x1f5e); + (0x1f7e, 0x1f7f); + (0x1fb5, 0x1fb5); + (0x1fc5, 0x1fc5); + (0x1fd4, 0x1fd5); + (0x1fdc, 0x1fdc); + (0x1ff0, 0x1ff1); + (0x1ff5, 0x1ff5); + (0x1fff, 0x1fff); + (0x2065, 0x2065); + (0x2072, 0x2073); + (0x208f, 0x208f); + (0x209d, 0x209f); + (0x20c1, 0x20cf); + (0x20f1, 0x20ff); + (0x218c, 0x218f); + (0x2427, 0x243f); + (0x244b, 0x245f); + (0x2b74, 0x2b75); + (0x2b96, 0x2b96); + (0x2cf4, 0x2cf8); + (0x2d26, 0x2d26); + (0x2d28, 0x2d2c); + (0x2d2e, 0x2d2f); + (0x2d68, 0x2d6e); + (0x2d71, 0x2d7e); + (0x2d97, 0x2d9f); + (0x2da7, 0x2da7); + (0x2daf, 0x2daf); + (0x2db7, 0x2db7); + (0x2dbf, 0x2dbf); + (0x2dc7, 0x2dc7); + (0x2dcf, 0x2dcf); + (0x2dd7, 0x2dd7); + (0x2ddf, 0x2ddf); + (0x2e5e, 0x2e7f); + (0x2e9a, 0x2e9a); + (0x2ef4, 0x2eff); + (0x2fd6, 0x2fef); + (0x2ffc, 0x2fff); + (0x3040, 0x3040); + (0x3097, 0x3098); + (0x3100, 0x3104); + (0x3130, 0x3130); + (0x318f, 0x318f); + (0x31e4, 0x31ef); + (0x321f, 0x321f); + (0xa48d, 0xa48f); + (0xa4c7, 0xa4cf); + (0xa62c, 0xa63f); + (0xa6f8, 0xa6ff); + (0xa7cb, 0xa7cf); + (0xa7d2, 0xa7d2); + (0xa7d4, 0xa7d4); + (0xa7da, 0xa7f1); + (0xa82d, 0xa82f); + (0xa83a, 0xa83f); + (0xa878, 0xa87f); + (0xa8c6, 0xa8cd); + (0xa8da, 0xa8df); + (0xa954, 0xa95e); + (0xa97d, 0xa97f); + (0xa9ce, 0xa9ce); + (0xa9da, 0xa9dd); + (0xa9ff, 0xa9ff); + (0xaa37, 0xaa3f); + (0xaa4e, 0xaa4f); + (0xaa5a, 0xaa5b); + (0xaac3, 0xaada); + (0xaaf7, 0xab00); + (0xab07, 0xab08); + (0xab0f, 0xab10); + (0xab17, 0xab1f); + (0xab27, 0xab27); + (0xab2f, 0xab2f); + (0xab6c, 0xab6f); + (0xabee, 0xabef); + (0xabfa, 0xabff); + (0xd7a4, 0xd7af); + (0xd7c7, 0xd7ca); + (0xd7fc, 0xd7ff); + (0xfa6e, 0xfa6f); + (0xfada, 0xfaff); + (0xfb07, 0xfb12); + (0xfb18, 0xfb1c); + (0xfb37, 0xfb37); + (0xfb3d, 0xfb3d); + (0xfb3f, 0xfb3f); + (0xfb42, 0xfb42); + (0xfb45, 0xfb45); + (0xfbc3, 0xfbd2); + (0xfd90, 0xfd91); + (0xfdc8, 0xfdce); + (0xfdd0, 0xfdef); + (0xfe1a, 0xfe1f); + (0xfe53, 0xfe53); + (0xfe67, 0xfe67); + (0xfe6c, 0xfe6f); + (0xfe75, 0xfe75); + (0xfefd, 0xfefe); + (0xff00, 0xff00); + (0xffbf, 0xffc1); + (0xffc8, 0xffc9); + (0xffd0, 0xffd1); + (0xffd8, 0xffd9); + (0xffdd, 0xffdf); + (0xffe7, 0xffe7); + (0xffef, 0xfff8); + (0xfff0, 0xfff8); + (0xfffe, 0xffff); + (0x1000c, 0x1000c); + (0x10027, 0x10027); + (0x1003b, 0x1003b); + (0x1003e, 0x1003e); + (0x1004e, 0x1004f); + (0x1005e, 0x1007f); + (0x100fb, 0x100ff); + (0x10103, 0x10106); + (0x10134, 0x10136); + (0x1018f, 0x1018f); + (0x1019d, 0x1019f); + (0x101a1, 0x101cf); + (0x101fe, 0x1027f); + (0x1029d, 0x1029f); + (0x102d1, 0x102df); + (0x102fc, 0x102ff); + (0x10324, 0x1032c); + (0x1034b, 0x1034f); + (0x1037b, 0x1037f); + (0x1039e, 0x1039e); + (0x103c4, 0x103c7); + (0x103d6, 0x103ff); + (0x1049e, 0x1049f); + (0x104aa, 0x104af); + (0x104d4, 0x104d7); + (0x104fc, 0x104ff); + (0x10528, 0x1052f); + (0x10564, 0x1056e); + (0x1057b, 0x1057b); + (0x1058b, 0x1058b); + (0x10593, 0x10593); + (0x10596, 0x10596); + (0x105a2, 0x105a2); + (0x105b2, 0x105b2); + (0x105ba, 0x105ba); + (0x105bd, 0x105ff); + (0x10737, 0x1073f); + (0x10756, 0x1075f); + (0x10768, 0x1077f); + (0x10786, 0x10786); + (0x107b1, 0x107b1); + (0x107bb, 0x107ff); + (0x10806, 0x10807); + (0x10809, 0x10809); + (0x10836, 0x10836); + (0x10839, 0x1083b); + (0x1083d, 0x1083e); + (0x10856, 0x10856); + (0x1089f, 0x108a6); + (0x108b0, 0x108df); + (0x108f3, 0x108f3); + (0x108f6, 0x108fa); + (0x1091c, 0x1091e); + (0x1093a, 0x1093e); + (0x10940, 0x1097f); + (0x109b8, 0x109bb); + (0x109d0, 0x109d1); + (0x10a04, 0x10a04); + (0x10a07, 0x10a0b); + (0x10a14, 0x10a14); + (0x10a18, 0x10a18); + (0x10a36, 0x10a37); + (0x10a3b, 0x10a3e); + (0x10a49, 0x10a4f); + (0x10a59, 0x10a5f); + (0x10aa0, 0x10abf); + (0x10ae7, 0x10aea); + (0x10af7, 0x10aff); + (0x10b36, 0x10b38); + (0x10b56, 0x10b57); + (0x10b73, 0x10b77); + (0x10b92, 0x10b98); + (0x10b9d, 0x10ba8); + (0x10bb0, 0x10bff); + (0x10c49, 0x10c7f); + (0x10cb3, 0x10cbf); + (0x10cf3, 0x10cf9); + (0x10d28, 0x10d2f); + (0x10d3a, 0x10e5f); + (0x10e7f, 0x10e7f); + (0x10eaa, 0x10eaa); + (0x10eae, 0x10eaf); + (0x10eb2, 0x10eff); + (0x10f28, 0x10f2f); + (0x10f5a, 0x10f6f); + (0x10f8a, 0x10faf); + (0x10fcc, 0x10fdf); + (0x10ff7, 0x10fff); + (0x1104e, 0x11051); + (0x11076, 0x1107e); + (0x110c3, 0x110cc); + (0x110ce, 0x110cf); + (0x110e9, 0x110ef); + (0x110fa, 0x110ff); + (0x11135, 0x11135); + (0x11148, 0x1114f); + (0x11177, 0x1117f); + (0x111e0, 0x111e0); + (0x111f5, 0x111ff); + (0x11212, 0x11212); + (0x1123f, 0x1127f); + (0x11287, 0x11287); + (0x11289, 0x11289); + (0x1128e, 0x1128e); + (0x1129e, 0x1129e); + (0x112aa, 0x112af); + (0x112eb, 0x112ef); + (0x112fa, 0x112ff); + (0x11304, 0x11304); + (0x1130d, 0x1130e); + (0x11311, 0x11312); + (0x11329, 0x11329); + (0x11331, 0x11331); + (0x11334, 0x11334); + (0x1133a, 0x1133a); + (0x11345, 0x11346); + (0x11349, 0x1134a); + (0x1134e, 0x1134f); + (0x11351, 0x11356); + (0x11358, 0x1135c); + (0x11364, 0x11365); + (0x1136d, 0x1136f); + (0x11375, 0x113ff); + (0x1145c, 0x1145c); + (0x11462, 0x1147f); + (0x114c8, 0x114cf); + (0x114da, 0x1157f); + (0x115b6, 0x115b7); + (0x115de, 0x115ff); + (0x11645, 0x1164f); + (0x1165a, 0x1165f); + (0x1166d, 0x1167f); + (0x116ba, 0x116bf); + (0x116ca, 0x116ff); + (0x1171b, 0x1171c); + (0x1172c, 0x1172f); + (0x11747, 0x117ff); + (0x1183c, 0x1189f); + (0x118f3, 0x118fe); + (0x11907, 0x11908); + (0x1190a, 0x1190b); + (0x11914, 0x11914); + (0x11917, 0x11917); + (0x11936, 0x11936); + (0x11939, 0x1193a); + (0x11947, 0x1194f); + (0x1195a, 0x1199f); + (0x119a8, 0x119a9); + (0x119d8, 0x119d9); + (0x119e5, 0x119ff); + (0x11a48, 0x11a4f); + (0x11aa3, 0x11aaf); + (0x11af9, 0x11bff); + (0x11c09, 0x11c09); + (0x11c37, 0x11c37); + (0x11c46, 0x11c4f); + (0x11c6d, 0x11c6f); + (0x11c90, 0x11c91); + (0x11ca8, 0x11ca8); + (0x11cb7, 0x11cff); + (0x11d07, 0x11d07); + (0x11d0a, 0x11d0a); + (0x11d37, 0x11d39); + (0x11d3b, 0x11d3b); + (0x11d3e, 0x11d3e); + (0x11d48, 0x11d4f); + (0x11d5a, 0x11d5f); + (0x11d66, 0x11d66); + (0x11d69, 0x11d69); + (0x11d8f, 0x11d8f); + (0x11d92, 0x11d92); + (0x11d99, 0x11d9f); + (0x11daa, 0x11edf); + (0x11ef9, 0x11faf); + (0x11fb1, 0x11fbf); + (0x11ff2, 0x11ffe); + (0x1239a, 0x123ff); + (0x1246f, 0x1246f); + (0x12475, 0x1247f); + (0x12544, 0x12f8f); + (0x12ff3, 0x12fff); + (0x1342f, 0x1342f); + (0x13439, 0x143ff); + (0x14647, 0x167ff); + (0x16a39, 0x16a3f); + (0x16a5f, 0x16a5f); + (0x16a6a, 0x16a6d); + (0x16abf, 0x16abf); + (0x16aca, 0x16acf); + (0x16aee, 0x16aef); + (0x16af6, 0x16aff); + (0x16b46, 0x16b4f); + (0x16b5a, 0x16b5a); + (0x16b62, 0x16b62); + (0x16b78, 0x16b7c); + (0x16b90, 0x16e3f); + (0x16e9b, 0x16eff); + (0x16f4b, 0x16f4e); + (0x16f88, 0x16f8e); + (0x16fa0, 0x16fdf); + (0x16fe5, 0x16fef); + (0x16ff2, 0x16fff); + (0x187f8, 0x187ff); + (0x18cd6, 0x18cff); + (0x18d09, 0x1afef); + (0x1aff4, 0x1aff4); + (0x1affc, 0x1affc); + (0x1afff, 0x1afff); + (0x1b123, 0x1b14f); + (0x1b153, 0x1b163); + (0x1b168, 0x1b16f); + (0x1b2fc, 0x1bbff); + (0x1bc6b, 0x1bc6f); + (0x1bc7d, 0x1bc7f); + (0x1bc89, 0x1bc8f); + (0x1bc9a, 0x1bc9b); + (0x1bca4, 0x1ceff); + (0x1cf2e, 0x1cf2f); + (0x1cf47, 0x1cf4f); + (0x1cfc4, 0x1cfff); + (0x1d0f6, 0x1d0ff); + (0x1d127, 0x1d128); + (0x1d1eb, 0x1d1ff); + (0x1d246, 0x1d2df); + (0x1d2f4, 0x1d2ff); + (0x1d357, 0x1d35f); + (0x1d379, 0x1d3ff); + (0x1d455, 0x1d455); + (0x1d49d, 0x1d49d); + (0x1d4a0, 0x1d4a1); + (0x1d4a3, 0x1d4a4); + (0x1d4a7, 0x1d4a8); + (0x1d4ad, 0x1d4ad); + (0x1d4ba, 0x1d4ba); + (0x1d4bc, 0x1d4bc); + (0x1d4c4, 0x1d4c4); + (0x1d506, 0x1d506); + (0x1d50b, 0x1d50c); + (0x1d515, 0x1d515); + (0x1d51d, 0x1d51d); + (0x1d53a, 0x1d53a); + (0x1d53f, 0x1d53f); + (0x1d545, 0x1d545); + (0x1d547, 0x1d549); + (0x1d551, 0x1d551); + (0x1d6a6, 0x1d6a7); + (0x1d7cc, 0x1d7cd); + (0x1da8c, 0x1da9a); + (0x1daa0, 0x1daa0); + (0x1dab0, 0x1deff); + (0x1df1f, 0x1dfff); + (0x1e007, 0x1e007); + (0x1e019, 0x1e01a); + (0x1e022, 0x1e022); + (0x1e025, 0x1e025); + (0x1e02b, 0x1e0ff); + (0x1e12d, 0x1e12f); + (0x1e13e, 0x1e13f); + (0x1e14a, 0x1e14d); + (0x1e150, 0x1e28f); + (0x1e2af, 0x1e2bf); + (0x1e2fa, 0x1e2fe); + (0x1e300, 0x1e7df); + (0x1e7e7, 0x1e7e7); + (0x1e7ec, 0x1e7ec); + (0x1e7ef, 0x1e7ef); + (0x1e7ff, 0x1e7ff); + (0x1e8c5, 0x1e8c6); + (0x1e8d7, 0x1e8ff); + (0x1e94c, 0x1e94f); + (0x1e95a, 0x1e95d); + (0x1e960, 0x1ec70); + (0x1ecb5, 0x1ed00); + (0x1ed3e, 0x1edff); + (0x1ee04, 0x1ee04); + (0x1ee20, 0x1ee20); + (0x1ee23, 0x1ee23); + (0x1ee25, 0x1ee26); + (0x1ee28, 0x1ee28); + (0x1ee33, 0x1ee33); + (0x1ee38, 0x1ee38); + (0x1ee3a, 0x1ee3a); + (0x1ee3c, 0x1ee41); + (0x1ee43, 0x1ee46); + (0x1ee48, 0x1ee48); + (0x1ee4a, 0x1ee4a); + (0x1ee4c, 0x1ee4c); + (0x1ee50, 0x1ee50); + (0x1ee53, 0x1ee53); + (0x1ee55, 0x1ee56); + (0x1ee58, 0x1ee58); + (0x1ee5a, 0x1ee5a); + (0x1ee5c, 0x1ee5c); + (0x1ee5e, 0x1ee5e); + (0x1ee60, 0x1ee60); + (0x1ee63, 0x1ee63); + (0x1ee65, 0x1ee66); + (0x1ee6b, 0x1ee6b); + (0x1ee73, 0x1ee73); + (0x1ee78, 0x1ee78); + (0x1ee7d, 0x1ee7d); + (0x1ee7f, 0x1ee7f); + (0x1ee8a, 0x1ee8a); + (0x1ee9c, 0x1eea0); + (0x1eea4, 0x1eea4); + (0x1eeaa, 0x1eeaa); + (0x1eebc, 0x1eeef); + (0x1eef2, 0x1efff); + (0x1f02c, 0x1f02f); + (0x1f094, 0x1f09f); + (0x1f0af, 0x1f0b0); + (0x1f0c0, 0x1f0c0); + (0x1f0d0, 0x1f0d0); + (0x1f0f6, 0x1f0ff); + (0x1f1ae, 0x1f1e5); + (0x1f203, 0x1f20f); + (0x1f23c, 0x1f23f); + (0x1f249, 0x1f24f); + (0x1f252, 0x1f25f); + (0x1f266, 0x1f2ff); + (0x1f6d8, 0x1f6dc); + (0x1f6ed, 0x1f6ef); + (0x1f6fd, 0x1f6ff); + (0x1f774, 0x1f77f); + (0x1f7d9, 0x1f7df); + (0x1f7ec, 0x1f7ef); + (0x1f7f1, 0x1f7ff); + (0x1f80c, 0x1f80f); + (0x1f848, 0x1f84f); + (0x1f85a, 0x1f85f); + (0x1f888, 0x1f88f); + (0x1f8ae, 0x1f8af); + (0x1f8b2, 0x1f8ff); + (0x1fa54, 0x1fa5f); + (0x1fa6e, 0x1fa6f); + (0x1fa75, 0x1fa77); + (0x1fa7d, 0x1fa7f); + (0x1fa87, 0x1fa8f); + (0x1faad, 0x1faaf); + (0x1fabb, 0x1fabf); + (0x1fac6, 0x1facf); + (0x1fada, 0x1fadf); + (0x1fae8, 0x1faef); + (0x1faf7, 0x1faff); + (0x1fb93, 0x1fb93); + (0x1fbcb, 0x1fbef); + (0x1fbfa, 0x1ffff); + (0x1fffe, 0x1ffff); + (0x2a6e0, 0x2a6ff); + (0x2b739, 0x2b73f); + (0x2b81e, 0x2b81f); + (0x2cea2, 0x2ceaf); + (0x2ebe1, 0x2f7ff); + (0x2fa1e, 0x2ffff); + (0x2fffe, 0x2ffff); + (0x3134b, 0xe0000); + (0x3fffe, 0x3ffff); + (0x4fffe, 0x4ffff); + (0x5fffe, 0x5ffff); + (0x6fffe, 0x6ffff); + (0x7fffe, 0x7ffff); + (0x8fffe, 0x8ffff); + (0x9fffe, 0x9ffff); + (0xafffe, 0xaffff); + (0xbfffe, 0xbffff); + (0xcfffe, 0xcffff); + (0xdfffe, 0xdffff); + (0xe0000, 0xe0000); + (0xe0002, 0xe001f); + (0xe0080, 0xe00ff); + (0x10fffe, 0x10ffff); + (0xffffe, 0xfffff); + (0xefffe, 0xeffff); + (0xe01f0, 0xeffff); + (0xe01f0, 0xe0fff); + ] - let cs = - [0xd800, 0xdfff] + let co = [(0x100000, 0x10fffd); (0xf0000, 0xffffd); (0xe000, 0xf8ff)] + let cs = [(0xd800, 0xdfff)] let ll = - [0x61, 0x7a; 0xb5, 0xb5; 0xdf, 0xf6; 0xf8, 0xff; 0x101, 0x101; - 0x103, 0x103; 0x105, 0x105; 0x107, 0x107; 0x109, 0x109; 0x10b, 0x10b; - 0x10d, 0x10d; 0x10f, 0x10f; 0x111, 0x111; 0x113, 0x113; 0x115, 0x115; - 0x117, 0x117; 0x119, 0x119; 0x11b, 0x11b; 0x11d, 0x11d; 0x11f, 0x11f; - 0x121, 0x121; 0x123, 0x123; 0x125, 0x125; 0x127, 0x127; 0x129, 0x129; - 0x12b, 0x12b; 0x12d, 0x12d; 0x12f, 0x12f; 0x131, 0x131; 0x133, 0x133; - 0x135, 0x135; 0x137, 0x138; 0x13a, 0x13a; 0x13c, 0x13c; 0x13e, 0x13e; - 0x140, 0x140; 0x142, 0x142; 0x144, 0x144; 0x146, 0x146; 0x148, 0x149; - 0x14b, 0x14b; 0x14d, 0x14d; 0x14f, 0x14f; 0x151, 0x151; 0x153, 0x153; - 0x155, 0x155; 0x157, 0x157; 0x159, 0x159; 0x15b, 0x15b; 0x15d, 0x15d; - 0x15f, 0x15f; 0x161, 0x161; 0x163, 0x163; 0x165, 0x165; 0x167, 0x167; - 0x169, 0x169; 0x16b, 0x16b; 0x16d, 0x16d; 0x16f, 0x16f; 0x171, 0x171; - 0x173, 0x173; 0x175, 0x175; 0x177, 0x177; 0x17a, 0x17a; 0x17c, 0x17c; - 0x17e, 0x180; 0x183, 0x183; 0x185, 0x185; 0x188, 0x188; 0x18c, 0x18d; - 0x192, 0x192; 0x195, 0x195; 0x199, 0x19b; 0x19e, 0x19e; 0x1a1, 0x1a1; - 0x1a3, 0x1a3; 0x1a5, 0x1a5; 0x1a8, 0x1a8; 0x1aa, 0x1ab; 0x1ad, 0x1ad; - 0x1b0, 0x1b0; 0x1b4, 0x1b4; 0x1b6, 0x1b6; 0x1b9, 0x1ba; 0x1bd, 0x1bf; - 0x1c6, 0x1c6; 0x1c9, 0x1c9; 0x1cc, 0x1cc; 0x1ce, 0x1ce; 0x1d0, 0x1d0; - 0x1d2, 0x1d2; 0x1d4, 0x1d4; 0x1d6, 0x1d6; 0x1d8, 0x1d8; 0x1da, 0x1da; - 0x1dc, 0x1dd; 0x1df, 0x1df; 0x1e1, 0x1e1; 0x1e3, 0x1e3; 0x1e5, 0x1e5; - 0x1e7, 0x1e7; 0x1e9, 0x1e9; 0x1eb, 0x1eb; 0x1ed, 0x1ed; 0x1ef, 0x1f0; - 0x1f3, 0x1f3; 0x1f5, 0x1f5; 0x1f9, 0x1f9; 0x1fb, 0x1fb; 0x1fd, 0x1fd; - 0x1ff, 0x1ff; 0x201, 0x201; 0x203, 0x203; 0x205, 0x205; 0x207, 0x207; - 0x209, 0x209; 0x20b, 0x20b; 0x20d, 0x20d; 0x20f, 0x20f; 0x211, 0x211; - 0x213, 0x213; 0x215, 0x215; 0x217, 0x217; 0x219, 0x219; 0x21b, 0x21b; - 0x21d, 0x21d; 0x21f, 0x21f; 0x221, 0x221; 0x223, 0x223; 0x225, 0x225; - 0x227, 0x227; 0x229, 0x229; 0x22b, 0x22b; 0x22d, 0x22d; 0x22f, 0x22f; - 0x231, 0x231; 0x233, 0x239; 0x23c, 0x23c; 0x23f, 0x240; 0x242, 0x242; - 0x247, 0x247; 0x249, 0x249; 0x24b, 0x24b; 0x24d, 0x24d; 0x24f, 0x293; - 0x295, 0x2af; 0x371, 0x371; 0x373, 0x373; 0x377, 0x377; 0x37b, 0x37d; - 0x390, 0x390; 0x3ac, 0x3ce; 0x3d0, 0x3d1; 0x3d5, 0x3d7; 0x3d9, 0x3d9; - 0x3db, 0x3db; 0x3dd, 0x3dd; 0x3df, 0x3df; 0x3e1, 0x3e1; 0x3e3, 0x3e3; - 0x3e5, 0x3e5; 0x3e7, 0x3e7; 0x3e9, 0x3e9; 0x3eb, 0x3eb; 0x3ed, 0x3ed; - 0x3ef, 0x3f3; 0x3f5, 0x3f5; 0x3f8, 0x3f8; 0x3fb, 0x3fc; 0x430, 0x45f; - 0x461, 0x461; 0x463, 0x463; 0x465, 0x465; 0x467, 0x467; 0x469, 0x469; - 0x46b, 0x46b; 0x46d, 0x46d; 0x46f, 0x46f; 0x471, 0x471; 0x473, 0x473; - 0x475, 0x475; 0x477, 0x477; 0x479, 0x479; 0x47b, 0x47b; 0x47d, 0x47d; - 0x47f, 0x47f; 0x481, 0x481; 0x48b, 0x48b; 0x48d, 0x48d; 0x48f, 0x48f; - 0x491, 0x491; 0x493, 0x493; 0x495, 0x495; 0x497, 0x497; 0x499, 0x499; - 0x49b, 0x49b; 0x49d, 0x49d; 0x49f, 0x49f; 0x4a1, 0x4a1; 0x4a3, 0x4a3; - 0x4a5, 0x4a5; 0x4a7, 0x4a7; 0x4a9, 0x4a9; 0x4ab, 0x4ab; 0x4ad, 0x4ad; - 0x4af, 0x4af; 0x4b1, 0x4b1; 0x4b3, 0x4b3; 0x4b5, 0x4b5; 0x4b7, 0x4b7; - 0x4b9, 0x4b9; 0x4bb, 0x4bb; 0x4bd, 0x4bd; 0x4bf, 0x4bf; 0x4c2, 0x4c2; - 0x4c4, 0x4c4; 0x4c6, 0x4c6; 0x4c8, 0x4c8; 0x4ca, 0x4ca; 0x4cc, 0x4cc; - 0x4ce, 0x4cf; 0x4d1, 0x4d1; 0x4d3, 0x4d3; 0x4d5, 0x4d5; 0x4d7, 0x4d7; - 0x4d9, 0x4d9; 0x4db, 0x4db; 0x4dd, 0x4dd; 0x4df, 0x4df; 0x4e1, 0x4e1; - 0x4e3, 0x4e3; 0x4e5, 0x4e5; 0x4e7, 0x4e7; 0x4e9, 0x4e9; 0x4eb, 0x4eb; - 0x4ed, 0x4ed; 0x4ef, 0x4ef; 0x4f1, 0x4f1; 0x4f3, 0x4f3; 0x4f5, 0x4f5; - 0x4f7, 0x4f7; 0x4f9, 0x4f9; 0x4fb, 0x4fb; 0x4fd, 0x4fd; 0x4ff, 0x4ff; - 0x501, 0x501; 0x503, 0x503; 0x505, 0x505; 0x507, 0x507; 0x509, 0x509; - 0x50b, 0x50b; 0x50d, 0x50d; 0x50f, 0x50f; 0x511, 0x511; 0x513, 0x513; - 0x515, 0x515; 0x517, 0x517; 0x519, 0x519; 0x51b, 0x51b; 0x51d, 0x51d; - 0x51f, 0x51f; 0x521, 0x521; 0x523, 0x523; 0x525, 0x525; 0x527, 0x527; - 0x529, 0x529; 0x52b, 0x52b; 0x52d, 0x52d; 0x52f, 0x52f; 0x560, 0x588; - 0x10d0, 0x10fa; 0x10fd, 0x10ff; 0x13f8, 0x13fd; 0x1c80, 0x1c88; 0x1d00, 0x1d2b; - 0x1d6b, 0x1d77; 0x1d79, 0x1d9a; 0x1e01, 0x1e01; 0x1e03, 0x1e03; 0x1e05, 0x1e05; - 0x1e07, 0x1e07; 0x1e09, 0x1e09; 0x1e0b, 0x1e0b; 0x1e0d, 0x1e0d; 0x1e0f, 0x1e0f; - 0x1e11, 0x1e11; 0x1e13, 0x1e13; 0x1e15, 0x1e15; 0x1e17, 0x1e17; 0x1e19, 0x1e19; - 0x1e1b, 0x1e1b; 0x1e1d, 0x1e1d; 0x1e1f, 0x1e1f; 0x1e21, 0x1e21; 0x1e23, 0x1e23; - 0x1e25, 0x1e25; 0x1e27, 0x1e27; 0x1e29, 0x1e29; 0x1e2b, 0x1e2b; 0x1e2d, 0x1e2d; - 0x1e2f, 0x1e2f; 0x1e31, 0x1e31; 0x1e33, 0x1e33; 0x1e35, 0x1e35; 0x1e37, 0x1e37; - 0x1e39, 0x1e39; 0x1e3b, 0x1e3b; 0x1e3d, 0x1e3d; 0x1e3f, 0x1e3f; 0x1e41, 0x1e41; - 0x1e43, 0x1e43; 0x1e45, 0x1e45; 0x1e47, 0x1e47; 0x1e49, 0x1e49; 0x1e4b, 0x1e4b; - 0x1e4d, 0x1e4d; 0x1e4f, 0x1e4f; 0x1e51, 0x1e51; 0x1e53, 0x1e53; 0x1e55, 0x1e55; - 0x1e57, 0x1e57; 0x1e59, 0x1e59; 0x1e5b, 0x1e5b; 0x1e5d, 0x1e5d; 0x1e5f, 0x1e5f; - 0x1e61, 0x1e61; 0x1e63, 0x1e63; 0x1e65, 0x1e65; 0x1e67, 0x1e67; 0x1e69, 0x1e69; - 0x1e6b, 0x1e6b; 0x1e6d, 0x1e6d; 0x1e6f, 0x1e6f; 0x1e71, 0x1e71; 0x1e73, 0x1e73; - 0x1e75, 0x1e75; 0x1e77, 0x1e77; 0x1e79, 0x1e79; 0x1e7b, 0x1e7b; 0x1e7d, 0x1e7d; - 0x1e7f, 0x1e7f; 0x1e81, 0x1e81; 0x1e83, 0x1e83; 0x1e85, 0x1e85; 0x1e87, 0x1e87; - 0x1e89, 0x1e89; 0x1e8b, 0x1e8b; 0x1e8d, 0x1e8d; 0x1e8f, 0x1e8f; 0x1e91, 0x1e91; - 0x1e93, 0x1e93; 0x1e95, 0x1e9d; 0x1e9f, 0x1e9f; 0x1ea1, 0x1ea1; 0x1ea3, 0x1ea3; - 0x1ea5, 0x1ea5; 0x1ea7, 0x1ea7; 0x1ea9, 0x1ea9; 0x1eab, 0x1eab; 0x1ead, 0x1ead; - 0x1eaf, 0x1eaf; 0x1eb1, 0x1eb1; 0x1eb3, 0x1eb3; 0x1eb5, 0x1eb5; 0x1eb7, 0x1eb7; - 0x1eb9, 0x1eb9; 0x1ebb, 0x1ebb; 0x1ebd, 0x1ebd; 0x1ebf, 0x1ebf; 0x1ec1, 0x1ec1; - 0x1ec3, 0x1ec3; 0x1ec5, 0x1ec5; 0x1ec7, 0x1ec7; 0x1ec9, 0x1ec9; 0x1ecb, 0x1ecb; - 0x1ecd, 0x1ecd; 0x1ecf, 0x1ecf; 0x1ed1, 0x1ed1; 0x1ed3, 0x1ed3; 0x1ed5, 0x1ed5; - 0x1ed7, 0x1ed7; 0x1ed9, 0x1ed9; 0x1edb, 0x1edb; 0x1edd, 0x1edd; 0x1edf, 0x1edf; - 0x1ee1, 0x1ee1; 0x1ee3, 0x1ee3; 0x1ee5, 0x1ee5; 0x1ee7, 0x1ee7; 0x1ee9, 0x1ee9; - 0x1eeb, 0x1eeb; 0x1eed, 0x1eed; 0x1eef, 0x1eef; 0x1ef1, 0x1ef1; 0x1ef3, 0x1ef3; - 0x1ef5, 0x1ef5; 0x1ef7, 0x1ef7; 0x1ef9, 0x1ef9; 0x1efb, 0x1efb; 0x1efd, 0x1efd; - 0x1eff, 0x1f07; 0x1f10, 0x1f15; 0x1f20, 0x1f27; 0x1f30, 0x1f37; 0x1f40, 0x1f45; - 0x1f50, 0x1f57; 0x1f60, 0x1f67; 0x1f70, 0x1f7d; 0x1f80, 0x1f87; 0x1f90, 0x1f97; - 0x1fa0, 0x1fa7; 0x1fb0, 0x1fb4; 0x1fb6, 0x1fb7; 0x1fbe, 0x1fbe; 0x1fc2, 0x1fc4; - 0x1fc6, 0x1fc7; 0x1fd0, 0x1fd3; 0x1fd6, 0x1fd7; 0x1fe0, 0x1fe7; 0x1ff2, 0x1ff4; - 0x1ff6, 0x1ff7; 0x210a, 0x210a; 0x210e, 0x210f; 0x2113, 0x2113; 0x212f, 0x212f; - 0x2134, 0x2134; 0x2139, 0x2139; 0x213c, 0x213d; 0x2146, 0x2149; 0x214e, 0x214e; - 0x2184, 0x2184; 0x2c30, 0x2c5f; 0x2c61, 0x2c61; 0x2c65, 0x2c66; 0x2c68, 0x2c68; - 0x2c6a, 0x2c6a; 0x2c6c, 0x2c6c; 0x2c71, 0x2c71; 0x2c73, 0x2c74; 0x2c76, 0x2c7b; - 0x2c81, 0x2c81; 0x2c83, 0x2c83; 0x2c85, 0x2c85; 0x2c87, 0x2c87; 0x2c89, 0x2c89; - 0x2c8b, 0x2c8b; 0x2c8d, 0x2c8d; 0x2c8f, 0x2c8f; 0x2c91, 0x2c91; 0x2c93, 0x2c93; - 0x2c95, 0x2c95; 0x2c97, 0x2c97; 0x2c99, 0x2c99; 0x2c9b, 0x2c9b; 0x2c9d, 0x2c9d; - 0x2c9f, 0x2c9f; 0x2ca1, 0x2ca1; 0x2ca3, 0x2ca3; 0x2ca5, 0x2ca5; 0x2ca7, 0x2ca7; - 0x2ca9, 0x2ca9; 0x2cab, 0x2cab; 0x2cad, 0x2cad; 0x2caf, 0x2caf; 0x2cb1, 0x2cb1; - 0x2cb3, 0x2cb3; 0x2cb5, 0x2cb5; 0x2cb7, 0x2cb7; 0x2cb9, 0x2cb9; 0x2cbb, 0x2cbb; - 0x2cbd, 0x2cbd; 0x2cbf, 0x2cbf; 0x2cc1, 0x2cc1; 0x2cc3, 0x2cc3; 0x2cc5, 0x2cc5; - 0x2cc7, 0x2cc7; 0x2cc9, 0x2cc9; 0x2ccb, 0x2ccb; 0x2ccd, 0x2ccd; 0x2ccf, 0x2ccf; - 0x2cd1, 0x2cd1; 0x2cd3, 0x2cd3; 0x2cd5, 0x2cd5; 0x2cd7, 0x2cd7; 0x2cd9, 0x2cd9; - 0x2cdb, 0x2cdb; 0x2cdd, 0x2cdd; 0x2cdf, 0x2cdf; 0x2ce1, 0x2ce1; 0x2ce3, 0x2ce4; - 0x2cec, 0x2cec; 0x2cee, 0x2cee; 0x2cf3, 0x2cf3; 0x2d00, 0x2d25; 0x2d27, 0x2d27; - 0x2d2d, 0x2d2d; 0xa641, 0xa641; 0xa643, 0xa643; 0xa645, 0xa645; 0xa647, 0xa647; - 0xa649, 0xa649; 0xa64b, 0xa64b; 0xa64d, 0xa64d; 0xa64f, 0xa64f; 0xa651, 0xa651; - 0xa653, 0xa653; 0xa655, 0xa655; 0xa657, 0xa657; 0xa659, 0xa659; 0xa65b, 0xa65b; - 0xa65d, 0xa65d; 0xa65f, 0xa65f; 0xa661, 0xa661; 0xa663, 0xa663; 0xa665, 0xa665; - 0xa667, 0xa667; 0xa669, 0xa669; 0xa66b, 0xa66b; 0xa66d, 0xa66d; 0xa681, 0xa681; - 0xa683, 0xa683; 0xa685, 0xa685; 0xa687, 0xa687; 0xa689, 0xa689; 0xa68b, 0xa68b; - 0xa68d, 0xa68d; 0xa68f, 0xa68f; 0xa691, 0xa691; 0xa693, 0xa693; 0xa695, 0xa695; - 0xa697, 0xa697; 0xa699, 0xa699; 0xa69b, 0xa69b; 0xa723, 0xa723; 0xa725, 0xa725; - 0xa727, 0xa727; 0xa729, 0xa729; 0xa72b, 0xa72b; 0xa72d, 0xa72d; 0xa72f, 0xa731; - 0xa733, 0xa733; 0xa735, 0xa735; 0xa737, 0xa737; 0xa739, 0xa739; 0xa73b, 0xa73b; - 0xa73d, 0xa73d; 0xa73f, 0xa73f; 0xa741, 0xa741; 0xa743, 0xa743; 0xa745, 0xa745; - 0xa747, 0xa747; 0xa749, 0xa749; 0xa74b, 0xa74b; 0xa74d, 0xa74d; 0xa74f, 0xa74f; - 0xa751, 0xa751; 0xa753, 0xa753; 0xa755, 0xa755; 0xa757, 0xa757; 0xa759, 0xa759; - 0xa75b, 0xa75b; 0xa75d, 0xa75d; 0xa75f, 0xa75f; 0xa761, 0xa761; 0xa763, 0xa763; - 0xa765, 0xa765; 0xa767, 0xa767; 0xa769, 0xa769; 0xa76b, 0xa76b; 0xa76d, 0xa76d; - 0xa76f, 0xa76f; 0xa771, 0xa778; 0xa77a, 0xa77a; 0xa77c, 0xa77c; 0xa77f, 0xa77f; - 0xa781, 0xa781; 0xa783, 0xa783; 0xa785, 0xa785; 0xa787, 0xa787; 0xa78c, 0xa78c; - 0xa78e, 0xa78e; 0xa791, 0xa791; 0xa793, 0xa795; 0xa797, 0xa797; 0xa799, 0xa799; - 0xa79b, 0xa79b; 0xa79d, 0xa79d; 0xa79f, 0xa79f; 0xa7a1, 0xa7a1; 0xa7a3, 0xa7a3; - 0xa7a5, 0xa7a5; 0xa7a7, 0xa7a7; 0xa7a9, 0xa7a9; 0xa7af, 0xa7af; 0xa7b5, 0xa7b5; - 0xa7b7, 0xa7b7; 0xa7b9, 0xa7b9; 0xa7bb, 0xa7bb; 0xa7bd, 0xa7bd; 0xa7bf, 0xa7bf; - 0xa7c1, 0xa7c1; 0xa7c3, 0xa7c3; 0xa7c8, 0xa7c8; 0xa7ca, 0xa7ca; 0xa7d1, 0xa7d1; - 0xa7d3, 0xa7d3; 0xa7d5, 0xa7d5; 0xa7d7, 0xa7d7; 0xa7d9, 0xa7d9; 0xa7f6, 0xa7f6; - 0xa7fa, 0xa7fa; 0xab30, 0xab5a; 0xab60, 0xab68; 0xab70, 0xabbf; 0xfb00, 0xfb06; - 0xfb13, 0xfb17; 0xff41, 0xff5a; 0x10428, 0x1044f; 0x104d8, 0x104fb; 0x10597, 0x105a1; - 0x105a3, 0x105b1; 0x105b3, 0x105b9; 0x105bb, 0x105bc; 0x10cc0, 0x10cf2; 0x118c0, 0x118df; - 0x16e60, 0x16e7f; 0x1d41a, 0x1d433; 0x1d44e, 0x1d454; 0x1d456, 0x1d467; 0x1d482, 0x1d49b; - 0x1d4b6, 0x1d4b9; 0x1d4bb, 0x1d4bb; 0x1d4bd, 0x1d4c3; 0x1d4c5, 0x1d4cf; 0x1d4ea, 0x1d503; - 0x1d51e, 0x1d537; 0x1d552, 0x1d56b; 0x1d586, 0x1d59f; 0x1d5ba, 0x1d5d3; 0x1d5ee, 0x1d607; - 0x1d622, 0x1d63b; 0x1d656, 0x1d66f; 0x1d68a, 0x1d6a5; 0x1d6c2, 0x1d6da; 0x1d6dc, 0x1d6e1; - 0x1d6fc, 0x1d714; 0x1d716, 0x1d71b; 0x1d736, 0x1d74e; 0x1d750, 0x1d755; 0x1d770, 0x1d788; - 0x1d78a, 0x1d78f; 0x1d7aa, 0x1d7c2; 0x1d7c4, 0x1d7c9; 0x1d7cb, 0x1d7cb; 0x1df00, 0x1df09; - 0x1e922, 0x1e943; 0x1df0b, 0x1df1e] + [ + (0x61, 0x7a); + (0xb5, 0xb5); + (0xdf, 0xf6); + (0xf8, 0xff); + (0x101, 0x101); + (0x103, 0x103); + (0x105, 0x105); + (0x107, 0x107); + (0x109, 0x109); + (0x10b, 0x10b); + (0x10d, 0x10d); + (0x10f, 0x10f); + (0x111, 0x111); + (0x113, 0x113); + (0x115, 0x115); + (0x117, 0x117); + (0x119, 0x119); + (0x11b, 0x11b); + (0x11d, 0x11d); + (0x11f, 0x11f); + (0x121, 0x121); + (0x123, 0x123); + (0x125, 0x125); + (0x127, 0x127); + (0x129, 0x129); + (0x12b, 0x12b); + (0x12d, 0x12d); + (0x12f, 0x12f); + (0x131, 0x131); + (0x133, 0x133); + (0x135, 0x135); + (0x137, 0x138); + (0x13a, 0x13a); + (0x13c, 0x13c); + (0x13e, 0x13e); + (0x140, 0x140); + (0x142, 0x142); + (0x144, 0x144); + (0x146, 0x146); + (0x148, 0x149); + (0x14b, 0x14b); + (0x14d, 0x14d); + (0x14f, 0x14f); + (0x151, 0x151); + (0x153, 0x153); + (0x155, 0x155); + (0x157, 0x157); + (0x159, 0x159); + (0x15b, 0x15b); + (0x15d, 0x15d); + (0x15f, 0x15f); + (0x161, 0x161); + (0x163, 0x163); + (0x165, 0x165); + (0x167, 0x167); + (0x169, 0x169); + (0x16b, 0x16b); + (0x16d, 0x16d); + (0x16f, 0x16f); + (0x171, 0x171); + (0x173, 0x173); + (0x175, 0x175); + (0x177, 0x177); + (0x17a, 0x17a); + (0x17c, 0x17c); + (0x17e, 0x180); + (0x183, 0x183); + (0x185, 0x185); + (0x188, 0x188); + (0x18c, 0x18d); + (0x192, 0x192); + (0x195, 0x195); + (0x199, 0x19b); + (0x19e, 0x19e); + (0x1a1, 0x1a1); + (0x1a3, 0x1a3); + (0x1a5, 0x1a5); + (0x1a8, 0x1a8); + (0x1aa, 0x1ab); + (0x1ad, 0x1ad); + (0x1b0, 0x1b0); + (0x1b4, 0x1b4); + (0x1b6, 0x1b6); + (0x1b9, 0x1ba); + (0x1bd, 0x1bf); + (0x1c6, 0x1c6); + (0x1c9, 0x1c9); + (0x1cc, 0x1cc); + (0x1ce, 0x1ce); + (0x1d0, 0x1d0); + (0x1d2, 0x1d2); + (0x1d4, 0x1d4); + (0x1d6, 0x1d6); + (0x1d8, 0x1d8); + (0x1da, 0x1da); + (0x1dc, 0x1dd); + (0x1df, 0x1df); + (0x1e1, 0x1e1); + (0x1e3, 0x1e3); + (0x1e5, 0x1e5); + (0x1e7, 0x1e7); + (0x1e9, 0x1e9); + (0x1eb, 0x1eb); + (0x1ed, 0x1ed); + (0x1ef, 0x1f0); + (0x1f3, 0x1f3); + (0x1f5, 0x1f5); + (0x1f9, 0x1f9); + (0x1fb, 0x1fb); + (0x1fd, 0x1fd); + (0x1ff, 0x1ff); + (0x201, 0x201); + (0x203, 0x203); + (0x205, 0x205); + (0x207, 0x207); + (0x209, 0x209); + (0x20b, 0x20b); + (0x20d, 0x20d); + (0x20f, 0x20f); + (0x211, 0x211); + (0x213, 0x213); + (0x215, 0x215); + (0x217, 0x217); + (0x219, 0x219); + (0x21b, 0x21b); + (0x21d, 0x21d); + (0x21f, 0x21f); + (0x221, 0x221); + (0x223, 0x223); + (0x225, 0x225); + (0x227, 0x227); + (0x229, 0x229); + (0x22b, 0x22b); + (0x22d, 0x22d); + (0x22f, 0x22f); + (0x231, 0x231); + (0x233, 0x239); + (0x23c, 0x23c); + (0x23f, 0x240); + (0x242, 0x242); + (0x247, 0x247); + (0x249, 0x249); + (0x24b, 0x24b); + (0x24d, 0x24d); + (0x24f, 0x293); + (0x295, 0x2af); + (0x371, 0x371); + (0x373, 0x373); + (0x377, 0x377); + (0x37b, 0x37d); + (0x390, 0x390); + (0x3ac, 0x3ce); + (0x3d0, 0x3d1); + (0x3d5, 0x3d7); + (0x3d9, 0x3d9); + (0x3db, 0x3db); + (0x3dd, 0x3dd); + (0x3df, 0x3df); + (0x3e1, 0x3e1); + (0x3e3, 0x3e3); + (0x3e5, 0x3e5); + (0x3e7, 0x3e7); + (0x3e9, 0x3e9); + (0x3eb, 0x3eb); + (0x3ed, 0x3ed); + (0x3ef, 0x3f3); + (0x3f5, 0x3f5); + (0x3f8, 0x3f8); + (0x3fb, 0x3fc); + (0x430, 0x45f); + (0x461, 0x461); + (0x463, 0x463); + (0x465, 0x465); + (0x467, 0x467); + (0x469, 0x469); + (0x46b, 0x46b); + (0x46d, 0x46d); + (0x46f, 0x46f); + (0x471, 0x471); + (0x473, 0x473); + (0x475, 0x475); + (0x477, 0x477); + (0x479, 0x479); + (0x47b, 0x47b); + (0x47d, 0x47d); + (0x47f, 0x47f); + (0x481, 0x481); + (0x48b, 0x48b); + (0x48d, 0x48d); + (0x48f, 0x48f); + (0x491, 0x491); + (0x493, 0x493); + (0x495, 0x495); + (0x497, 0x497); + (0x499, 0x499); + (0x49b, 0x49b); + (0x49d, 0x49d); + (0x49f, 0x49f); + (0x4a1, 0x4a1); + (0x4a3, 0x4a3); + (0x4a5, 0x4a5); + (0x4a7, 0x4a7); + (0x4a9, 0x4a9); + (0x4ab, 0x4ab); + (0x4ad, 0x4ad); + (0x4af, 0x4af); + (0x4b1, 0x4b1); + (0x4b3, 0x4b3); + (0x4b5, 0x4b5); + (0x4b7, 0x4b7); + (0x4b9, 0x4b9); + (0x4bb, 0x4bb); + (0x4bd, 0x4bd); + (0x4bf, 0x4bf); + (0x4c2, 0x4c2); + (0x4c4, 0x4c4); + (0x4c6, 0x4c6); + (0x4c8, 0x4c8); + (0x4ca, 0x4ca); + (0x4cc, 0x4cc); + (0x4ce, 0x4cf); + (0x4d1, 0x4d1); + (0x4d3, 0x4d3); + (0x4d5, 0x4d5); + (0x4d7, 0x4d7); + (0x4d9, 0x4d9); + (0x4db, 0x4db); + (0x4dd, 0x4dd); + (0x4df, 0x4df); + (0x4e1, 0x4e1); + (0x4e3, 0x4e3); + (0x4e5, 0x4e5); + (0x4e7, 0x4e7); + (0x4e9, 0x4e9); + (0x4eb, 0x4eb); + (0x4ed, 0x4ed); + (0x4ef, 0x4ef); + (0x4f1, 0x4f1); + (0x4f3, 0x4f3); + (0x4f5, 0x4f5); + (0x4f7, 0x4f7); + (0x4f9, 0x4f9); + (0x4fb, 0x4fb); + (0x4fd, 0x4fd); + (0x4ff, 0x4ff); + (0x501, 0x501); + (0x503, 0x503); + (0x505, 0x505); + (0x507, 0x507); + (0x509, 0x509); + (0x50b, 0x50b); + (0x50d, 0x50d); + (0x50f, 0x50f); + (0x511, 0x511); + (0x513, 0x513); + (0x515, 0x515); + (0x517, 0x517); + (0x519, 0x519); + (0x51b, 0x51b); + (0x51d, 0x51d); + (0x51f, 0x51f); + (0x521, 0x521); + (0x523, 0x523); + (0x525, 0x525); + (0x527, 0x527); + (0x529, 0x529); + (0x52b, 0x52b); + (0x52d, 0x52d); + (0x52f, 0x52f); + (0x560, 0x588); + (0x10d0, 0x10fa); + (0x10fd, 0x10ff); + (0x13f8, 0x13fd); + (0x1c80, 0x1c88); + (0x1d00, 0x1d2b); + (0x1d6b, 0x1d77); + (0x1d79, 0x1d9a); + (0x1e01, 0x1e01); + (0x1e03, 0x1e03); + (0x1e05, 0x1e05); + (0x1e07, 0x1e07); + (0x1e09, 0x1e09); + (0x1e0b, 0x1e0b); + (0x1e0d, 0x1e0d); + (0x1e0f, 0x1e0f); + (0x1e11, 0x1e11); + (0x1e13, 0x1e13); + (0x1e15, 0x1e15); + (0x1e17, 0x1e17); + (0x1e19, 0x1e19); + (0x1e1b, 0x1e1b); + (0x1e1d, 0x1e1d); + (0x1e1f, 0x1e1f); + (0x1e21, 0x1e21); + (0x1e23, 0x1e23); + (0x1e25, 0x1e25); + (0x1e27, 0x1e27); + (0x1e29, 0x1e29); + (0x1e2b, 0x1e2b); + (0x1e2d, 0x1e2d); + (0x1e2f, 0x1e2f); + (0x1e31, 0x1e31); + (0x1e33, 0x1e33); + (0x1e35, 0x1e35); + (0x1e37, 0x1e37); + (0x1e39, 0x1e39); + (0x1e3b, 0x1e3b); + (0x1e3d, 0x1e3d); + (0x1e3f, 0x1e3f); + (0x1e41, 0x1e41); + (0x1e43, 0x1e43); + (0x1e45, 0x1e45); + (0x1e47, 0x1e47); + (0x1e49, 0x1e49); + (0x1e4b, 0x1e4b); + (0x1e4d, 0x1e4d); + (0x1e4f, 0x1e4f); + (0x1e51, 0x1e51); + (0x1e53, 0x1e53); + (0x1e55, 0x1e55); + (0x1e57, 0x1e57); + (0x1e59, 0x1e59); + (0x1e5b, 0x1e5b); + (0x1e5d, 0x1e5d); + (0x1e5f, 0x1e5f); + (0x1e61, 0x1e61); + (0x1e63, 0x1e63); + (0x1e65, 0x1e65); + (0x1e67, 0x1e67); + (0x1e69, 0x1e69); + (0x1e6b, 0x1e6b); + (0x1e6d, 0x1e6d); + (0x1e6f, 0x1e6f); + (0x1e71, 0x1e71); + (0x1e73, 0x1e73); + (0x1e75, 0x1e75); + (0x1e77, 0x1e77); + (0x1e79, 0x1e79); + (0x1e7b, 0x1e7b); + (0x1e7d, 0x1e7d); + (0x1e7f, 0x1e7f); + (0x1e81, 0x1e81); + (0x1e83, 0x1e83); + (0x1e85, 0x1e85); + (0x1e87, 0x1e87); + (0x1e89, 0x1e89); + (0x1e8b, 0x1e8b); + (0x1e8d, 0x1e8d); + (0x1e8f, 0x1e8f); + (0x1e91, 0x1e91); + (0x1e93, 0x1e93); + (0x1e95, 0x1e9d); + (0x1e9f, 0x1e9f); + (0x1ea1, 0x1ea1); + (0x1ea3, 0x1ea3); + (0x1ea5, 0x1ea5); + (0x1ea7, 0x1ea7); + (0x1ea9, 0x1ea9); + (0x1eab, 0x1eab); + (0x1ead, 0x1ead); + (0x1eaf, 0x1eaf); + (0x1eb1, 0x1eb1); + (0x1eb3, 0x1eb3); + (0x1eb5, 0x1eb5); + (0x1eb7, 0x1eb7); + (0x1eb9, 0x1eb9); + (0x1ebb, 0x1ebb); + (0x1ebd, 0x1ebd); + (0x1ebf, 0x1ebf); + (0x1ec1, 0x1ec1); + (0x1ec3, 0x1ec3); + (0x1ec5, 0x1ec5); + (0x1ec7, 0x1ec7); + (0x1ec9, 0x1ec9); + (0x1ecb, 0x1ecb); + (0x1ecd, 0x1ecd); + (0x1ecf, 0x1ecf); + (0x1ed1, 0x1ed1); + (0x1ed3, 0x1ed3); + (0x1ed5, 0x1ed5); + (0x1ed7, 0x1ed7); + (0x1ed9, 0x1ed9); + (0x1edb, 0x1edb); + (0x1edd, 0x1edd); + (0x1edf, 0x1edf); + (0x1ee1, 0x1ee1); + (0x1ee3, 0x1ee3); + (0x1ee5, 0x1ee5); + (0x1ee7, 0x1ee7); + (0x1ee9, 0x1ee9); + (0x1eeb, 0x1eeb); + (0x1eed, 0x1eed); + (0x1eef, 0x1eef); + (0x1ef1, 0x1ef1); + (0x1ef3, 0x1ef3); + (0x1ef5, 0x1ef5); + (0x1ef7, 0x1ef7); + (0x1ef9, 0x1ef9); + (0x1efb, 0x1efb); + (0x1efd, 0x1efd); + (0x1eff, 0x1f07); + (0x1f10, 0x1f15); + (0x1f20, 0x1f27); + (0x1f30, 0x1f37); + (0x1f40, 0x1f45); + (0x1f50, 0x1f57); + (0x1f60, 0x1f67); + (0x1f70, 0x1f7d); + (0x1f80, 0x1f87); + (0x1f90, 0x1f97); + (0x1fa0, 0x1fa7); + (0x1fb0, 0x1fb4); + (0x1fb6, 0x1fb7); + (0x1fbe, 0x1fbe); + (0x1fc2, 0x1fc4); + (0x1fc6, 0x1fc7); + (0x1fd0, 0x1fd3); + (0x1fd6, 0x1fd7); + (0x1fe0, 0x1fe7); + (0x1ff2, 0x1ff4); + (0x1ff6, 0x1ff7); + (0x210a, 0x210a); + (0x210e, 0x210f); + (0x2113, 0x2113); + (0x212f, 0x212f); + (0x2134, 0x2134); + (0x2139, 0x2139); + (0x213c, 0x213d); + (0x2146, 0x2149); + (0x214e, 0x214e); + (0x2184, 0x2184); + (0x2c30, 0x2c5f); + (0x2c61, 0x2c61); + (0x2c65, 0x2c66); + (0x2c68, 0x2c68); + (0x2c6a, 0x2c6a); + (0x2c6c, 0x2c6c); + (0x2c71, 0x2c71); + (0x2c73, 0x2c74); + (0x2c76, 0x2c7b); + (0x2c81, 0x2c81); + (0x2c83, 0x2c83); + (0x2c85, 0x2c85); + (0x2c87, 0x2c87); + (0x2c89, 0x2c89); + (0x2c8b, 0x2c8b); + (0x2c8d, 0x2c8d); + (0x2c8f, 0x2c8f); + (0x2c91, 0x2c91); + (0x2c93, 0x2c93); + (0x2c95, 0x2c95); + (0x2c97, 0x2c97); + (0x2c99, 0x2c99); + (0x2c9b, 0x2c9b); + (0x2c9d, 0x2c9d); + (0x2c9f, 0x2c9f); + (0x2ca1, 0x2ca1); + (0x2ca3, 0x2ca3); + (0x2ca5, 0x2ca5); + (0x2ca7, 0x2ca7); + (0x2ca9, 0x2ca9); + (0x2cab, 0x2cab); + (0x2cad, 0x2cad); + (0x2caf, 0x2caf); + (0x2cb1, 0x2cb1); + (0x2cb3, 0x2cb3); + (0x2cb5, 0x2cb5); + (0x2cb7, 0x2cb7); + (0x2cb9, 0x2cb9); + (0x2cbb, 0x2cbb); + (0x2cbd, 0x2cbd); + (0x2cbf, 0x2cbf); + (0x2cc1, 0x2cc1); + (0x2cc3, 0x2cc3); + (0x2cc5, 0x2cc5); + (0x2cc7, 0x2cc7); + (0x2cc9, 0x2cc9); + (0x2ccb, 0x2ccb); + (0x2ccd, 0x2ccd); + (0x2ccf, 0x2ccf); + (0x2cd1, 0x2cd1); + (0x2cd3, 0x2cd3); + (0x2cd5, 0x2cd5); + (0x2cd7, 0x2cd7); + (0x2cd9, 0x2cd9); + (0x2cdb, 0x2cdb); + (0x2cdd, 0x2cdd); + (0x2cdf, 0x2cdf); + (0x2ce1, 0x2ce1); + (0x2ce3, 0x2ce4); + (0x2cec, 0x2cec); + (0x2cee, 0x2cee); + (0x2cf3, 0x2cf3); + (0x2d00, 0x2d25); + (0x2d27, 0x2d27); + (0x2d2d, 0x2d2d); + (0xa641, 0xa641); + (0xa643, 0xa643); + (0xa645, 0xa645); + (0xa647, 0xa647); + (0xa649, 0xa649); + (0xa64b, 0xa64b); + (0xa64d, 0xa64d); + (0xa64f, 0xa64f); + (0xa651, 0xa651); + (0xa653, 0xa653); + (0xa655, 0xa655); + (0xa657, 0xa657); + (0xa659, 0xa659); + (0xa65b, 0xa65b); + (0xa65d, 0xa65d); + (0xa65f, 0xa65f); + (0xa661, 0xa661); + (0xa663, 0xa663); + (0xa665, 0xa665); + (0xa667, 0xa667); + (0xa669, 0xa669); + (0xa66b, 0xa66b); + (0xa66d, 0xa66d); + (0xa681, 0xa681); + (0xa683, 0xa683); + (0xa685, 0xa685); + (0xa687, 0xa687); + (0xa689, 0xa689); + (0xa68b, 0xa68b); + (0xa68d, 0xa68d); + (0xa68f, 0xa68f); + (0xa691, 0xa691); + (0xa693, 0xa693); + (0xa695, 0xa695); + (0xa697, 0xa697); + (0xa699, 0xa699); + (0xa69b, 0xa69b); + (0xa723, 0xa723); + (0xa725, 0xa725); + (0xa727, 0xa727); + (0xa729, 0xa729); + (0xa72b, 0xa72b); + (0xa72d, 0xa72d); + (0xa72f, 0xa731); + (0xa733, 0xa733); + (0xa735, 0xa735); + (0xa737, 0xa737); + (0xa739, 0xa739); + (0xa73b, 0xa73b); + (0xa73d, 0xa73d); + (0xa73f, 0xa73f); + (0xa741, 0xa741); + (0xa743, 0xa743); + (0xa745, 0xa745); + (0xa747, 0xa747); + (0xa749, 0xa749); + (0xa74b, 0xa74b); + (0xa74d, 0xa74d); + (0xa74f, 0xa74f); + (0xa751, 0xa751); + (0xa753, 0xa753); + (0xa755, 0xa755); + (0xa757, 0xa757); + (0xa759, 0xa759); + (0xa75b, 0xa75b); + (0xa75d, 0xa75d); + (0xa75f, 0xa75f); + (0xa761, 0xa761); + (0xa763, 0xa763); + (0xa765, 0xa765); + (0xa767, 0xa767); + (0xa769, 0xa769); + (0xa76b, 0xa76b); + (0xa76d, 0xa76d); + (0xa76f, 0xa76f); + (0xa771, 0xa778); + (0xa77a, 0xa77a); + (0xa77c, 0xa77c); + (0xa77f, 0xa77f); + (0xa781, 0xa781); + (0xa783, 0xa783); + (0xa785, 0xa785); + (0xa787, 0xa787); + (0xa78c, 0xa78c); + (0xa78e, 0xa78e); + (0xa791, 0xa791); + (0xa793, 0xa795); + (0xa797, 0xa797); + (0xa799, 0xa799); + (0xa79b, 0xa79b); + (0xa79d, 0xa79d); + (0xa79f, 0xa79f); + (0xa7a1, 0xa7a1); + (0xa7a3, 0xa7a3); + (0xa7a5, 0xa7a5); + (0xa7a7, 0xa7a7); + (0xa7a9, 0xa7a9); + (0xa7af, 0xa7af); + (0xa7b5, 0xa7b5); + (0xa7b7, 0xa7b7); + (0xa7b9, 0xa7b9); + (0xa7bb, 0xa7bb); + (0xa7bd, 0xa7bd); + (0xa7bf, 0xa7bf); + (0xa7c1, 0xa7c1); + (0xa7c3, 0xa7c3); + (0xa7c8, 0xa7c8); + (0xa7ca, 0xa7ca); + (0xa7d1, 0xa7d1); + (0xa7d3, 0xa7d3); + (0xa7d5, 0xa7d5); + (0xa7d7, 0xa7d7); + (0xa7d9, 0xa7d9); + (0xa7f6, 0xa7f6); + (0xa7fa, 0xa7fa); + (0xab30, 0xab5a); + (0xab60, 0xab68); + (0xab70, 0xabbf); + (0xfb00, 0xfb06); + (0xfb13, 0xfb17); + (0xff41, 0xff5a); + (0x10428, 0x1044f); + (0x104d8, 0x104fb); + (0x10597, 0x105a1); + (0x105a3, 0x105b1); + (0x105b3, 0x105b9); + (0x105bb, 0x105bc); + (0x10cc0, 0x10cf2); + (0x118c0, 0x118df); + (0x16e60, 0x16e7f); + (0x1d41a, 0x1d433); + (0x1d44e, 0x1d454); + (0x1d456, 0x1d467); + (0x1d482, 0x1d49b); + (0x1d4b6, 0x1d4b9); + (0x1d4bb, 0x1d4bb); + (0x1d4bd, 0x1d4c3); + (0x1d4c5, 0x1d4cf); + (0x1d4ea, 0x1d503); + (0x1d51e, 0x1d537); + (0x1d552, 0x1d56b); + (0x1d586, 0x1d59f); + (0x1d5ba, 0x1d5d3); + (0x1d5ee, 0x1d607); + (0x1d622, 0x1d63b); + (0x1d656, 0x1d66f); + (0x1d68a, 0x1d6a5); + (0x1d6c2, 0x1d6da); + (0x1d6dc, 0x1d6e1); + (0x1d6fc, 0x1d714); + (0x1d716, 0x1d71b); + (0x1d736, 0x1d74e); + (0x1d750, 0x1d755); + (0x1d770, 0x1d788); + (0x1d78a, 0x1d78f); + (0x1d7aa, 0x1d7c2); + (0x1d7c4, 0x1d7c9); + (0x1d7cb, 0x1d7cb); + (0x1df00, 0x1df09); + (0x1e922, 0x1e943); + (0x1df0b, 0x1df1e); + ] let lm = - [0x2b0, 0x2b8; 0x2b0, 0x2c1; 0x2b2, 0x2b2; 0x2c0, 0x2c1; 0x2c6, 0x2d1; - 0x2d0, 0x2d1; 0x2e0, 0x2e4; 0x2ec, 0x2ec; 0x2ee, 0x2ee; 0x374, 0x374; - 0x37a, 0x37a; 0x559, 0x559; 0x640, 0x640; 0x6e5, 0x6e6; 0x7f4, 0x7f5; - 0x7fa, 0x7fa; 0x81a, 0x81a; 0x824, 0x824; 0x828, 0x828; 0x8c9, 0x8c9; - 0x971, 0x971; 0xe46, 0xe46; 0xec6, 0xec6; 0x10fc, 0x10fc; 0x17d7, 0x17d7; - 0x1843, 0x1843; 0x1aa7, 0x1aa7; 0x1c78, 0x1c7d; 0x1c7b, 0x1c7b; 0x1d2c, 0x1d6a; - 0x1d62, 0x1d62; 0x1d78, 0x1d78; 0x1d9b, 0x1dbf; 0x1da4, 0x1da4; 0x1da8, 0x1da8; - 0x2071, 0x2071; 0x207f, 0x207f; 0x2090, 0x209c; 0x2c7c, 0x2c7c; 0x2c7c, 0x2c7d; - 0x2d6f, 0x2d6f; 0x2e2f, 0x2e2f; 0x3005, 0x3005; 0x3031, 0x3035; 0x303b, 0x303b; - 0x309d, 0x309e; 0x30fc, 0x30fc; 0x30fc, 0x30fe; 0xa015, 0xa015; 0xa4f8, 0xa4fd; - 0xa60c, 0xa60c; 0xa67f, 0xa67f; 0xa69c, 0xa69d; 0xa717, 0xa71f; 0xa770, 0xa770; - 0xa788, 0xa788; 0xa7f2, 0xa7f4; 0xa7f8, 0xa7f9; 0xa9cf, 0xa9cf; 0xa9e6, 0xa9e6; - 0xaa70, 0xaa70; 0xaadd, 0xaadd; 0xaaf3, 0xaaf4; 0xab5c, 0xab5f; 0xab69, 0xab69; - 0xff70, 0xff70; 0xff9e, 0xff9f; 0x10780, 0x10780; 0x10780, 0x10785; 0x10781, 0x10782; - 0x10783, 0x10785; 0x10787, 0x107b0; 0x107b2, 0x107ba; 0x16b40, 0x16b43; 0x16b42, 0x16b43; - 0x16f93, 0x16f9f; 0x16fe0, 0x16fe1; 0x16fe3, 0x16fe3; 0x1aff0, 0x1aff3; 0x1aff5, 0x1affb; - 0x1e94b, 0x1e94b; 0x1e13c, 0x1e13d; 0x1e137, 0x1e13d; 0x1affd, 0x1affe] + [ + (0x2b0, 0x2b8); + (0x2b0, 0x2c1); + (0x2b2, 0x2b2); + (0x2c0, 0x2c1); + (0x2c6, 0x2d1); + (0x2d0, 0x2d1); + (0x2e0, 0x2e4); + (0x2ec, 0x2ec); + (0x2ee, 0x2ee); + (0x374, 0x374); + (0x37a, 0x37a); + (0x559, 0x559); + (0x640, 0x640); + (0x6e5, 0x6e6); + (0x7f4, 0x7f5); + (0x7fa, 0x7fa); + (0x81a, 0x81a); + (0x824, 0x824); + (0x828, 0x828); + (0x8c9, 0x8c9); + (0x971, 0x971); + (0xe46, 0xe46); + (0xec6, 0xec6); + (0x10fc, 0x10fc); + (0x17d7, 0x17d7); + (0x1843, 0x1843); + (0x1aa7, 0x1aa7); + (0x1c78, 0x1c7d); + (0x1c7b, 0x1c7b); + (0x1d2c, 0x1d6a); + (0x1d62, 0x1d62); + (0x1d78, 0x1d78); + (0x1d9b, 0x1dbf); + (0x1da4, 0x1da4); + (0x1da8, 0x1da8); + (0x2071, 0x2071); + (0x207f, 0x207f); + (0x2090, 0x209c); + (0x2c7c, 0x2c7c); + (0x2c7c, 0x2c7d); + (0x2d6f, 0x2d6f); + (0x2e2f, 0x2e2f); + (0x3005, 0x3005); + (0x3031, 0x3035); + (0x303b, 0x303b); + (0x309d, 0x309e); + (0x30fc, 0x30fc); + (0x30fc, 0x30fe); + (0xa015, 0xa015); + (0xa4f8, 0xa4fd); + (0xa60c, 0xa60c); + (0xa67f, 0xa67f); + (0xa69c, 0xa69d); + (0xa717, 0xa71f); + (0xa770, 0xa770); + (0xa788, 0xa788); + (0xa7f2, 0xa7f4); + (0xa7f8, 0xa7f9); + (0xa9cf, 0xa9cf); + (0xa9e6, 0xa9e6); + (0xaa70, 0xaa70); + (0xaadd, 0xaadd); + (0xaaf3, 0xaaf4); + (0xab5c, 0xab5f); + (0xab69, 0xab69); + (0xff70, 0xff70); + (0xff9e, 0xff9f); + (0x10780, 0x10780); + (0x10780, 0x10785); + (0x10781, 0x10782); + (0x10783, 0x10785); + (0x10787, 0x107b0); + (0x107b2, 0x107ba); + (0x16b40, 0x16b43); + (0x16b42, 0x16b43); + (0x16f93, 0x16f9f); + (0x16fe0, 0x16fe1); + (0x16fe3, 0x16fe3); + (0x1aff0, 0x1aff3); + (0x1aff5, 0x1affb); + (0x1e94b, 0x1e94b); + (0x1e13c, 0x1e13d); + (0x1e137, 0x1e13d); + (0x1affd, 0x1affe); + ] let lo = - [0xaa, 0xaa; 0xba, 0xba; 0x1bb, 0x1bb; 0x1c0, 0x1c3; 0x294, 0x294; - 0x5d0, 0x5ea; 0x5ef, 0x5f2; 0x620, 0x63f; 0x641, 0x64a; 0x66e, 0x66f; - 0x671, 0x6d3; 0x673, 0x673; 0x6d5, 0x6d5; 0x6ee, 0x6ef; 0x6fa, 0x6fc; - 0x6ff, 0x6ff; 0x710, 0x710; 0x712, 0x72f; 0x74d, 0x7a5; 0x7b1, 0x7b1; - 0x7ca, 0x7ea; 0x800, 0x815; 0x840, 0x858; 0x860, 0x86a; 0x870, 0x887; - 0x889, 0x88e; 0x8a0, 0x8c8; 0x904, 0x939; 0x93d, 0x93d; 0x950, 0x950; - 0x958, 0x961; 0x972, 0x980; 0x985, 0x98c; 0x98f, 0x990; 0x993, 0x9a8; - 0x9aa, 0x9b0; 0x9b2, 0x9b2; 0x9b6, 0x9b9; 0x9bd, 0x9bd; 0x9ce, 0x9ce; - 0x9dc, 0x9dd; 0x9df, 0x9e1; 0x9f0, 0x9f1; 0x9fc, 0x9fc; 0xa05, 0xa0a; - 0xa0f, 0xa10; 0xa13, 0xa28; 0xa2a, 0xa30; 0xa32, 0xa33; 0xa35, 0xa36; - 0xa38, 0xa39; 0xa59, 0xa5c; 0xa5e, 0xa5e; 0xa72, 0xa74; 0xa85, 0xa8d; - 0xa8f, 0xa91; 0xa93, 0xaa8; 0xaaa, 0xab0; 0xab2, 0xab3; 0xab5, 0xab9; - 0xabd, 0xabd; 0xad0, 0xad0; 0xae0, 0xae1; 0xaf9, 0xaf9; 0xb05, 0xb0c; - 0xb0f, 0xb10; 0xb13, 0xb28; 0xb2a, 0xb30; 0xb32, 0xb33; 0xb35, 0xb39; - 0xb3d, 0xb3d; 0xb5c, 0xb5d; 0xb5f, 0xb61; 0xb71, 0xb71; 0xb83, 0xb83; - 0xb85, 0xb8a; 0xb8e, 0xb90; 0xb92, 0xb95; 0xb99, 0xb9a; 0xb9c, 0xb9c; - 0xb9e, 0xb9f; 0xba3, 0xba4; 0xba8, 0xbaa; 0xbae, 0xbb9; 0xbd0, 0xbd0; - 0xc05, 0xc0c; 0xc0e, 0xc10; 0xc12, 0xc28; 0xc2a, 0xc39; 0xc3d, 0xc3d; - 0xc58, 0xc5a; 0xc5d, 0xc5d; 0xc60, 0xc61; 0xc80, 0xc80; 0xc85, 0xc8c; - 0xc8e, 0xc90; 0xc92, 0xca8; 0xcaa, 0xcb3; 0xcb5, 0xcb9; 0xcbd, 0xcbd; - 0xcdd, 0xcde; 0xce0, 0xce1; 0xcf1, 0xcf2; 0xd04, 0xd0c; 0xd0e, 0xd10; - 0xd12, 0xd3a; 0xd3d, 0xd3d; 0xd4e, 0xd4e; 0xd54, 0xd56; 0xd5f, 0xd61; - 0xd7a, 0xd7f; 0xd85, 0xd96; 0xd9a, 0xdb1; 0xdb3, 0xdbb; 0xdbd, 0xdbd; - 0xdc0, 0xdc6; 0xe01, 0xe30; 0xe32, 0xe32; 0xe32, 0xe33; 0xe40, 0xe44; - 0xe40, 0xe45; 0xe81, 0xe82; 0xe84, 0xe84; 0xe86, 0xe8a; 0xe8c, 0xea3; - 0xea5, 0xea5; 0xea7, 0xeb0; 0xeb2, 0xeb2; 0xeb2, 0xeb3; 0xebd, 0xebd; - 0xec0, 0xec4; 0xedc, 0xedf; 0xf00, 0xf00; 0xf40, 0xf47; 0xf49, 0xf6c; - 0xf88, 0xf8c; 0x1000, 0x102a; 0x103f, 0x103f; 0x1050, 0x1055; 0x105a, 0x105d; - 0x1061, 0x1061; 0x1065, 0x1066; 0x106e, 0x1070; 0x1075, 0x1081; 0x108e, 0x108e; - 0x1100, 0x1248; 0x115f, 0x1160; 0x124a, 0x124d; 0x1250, 0x1256; 0x1258, 0x1258; - 0x125a, 0x125d; 0x1260, 0x1288; 0x128a, 0x128d; 0x1290, 0x12b0; 0x12b2, 0x12b5; - 0x12b8, 0x12be; 0x12c0, 0x12c0; 0x12c2, 0x12c5; 0x12c8, 0x12d6; 0x12d8, 0x1310; - 0x1312, 0x1315; 0x1318, 0x135a; 0x1380, 0x138f; 0x1401, 0x166c; 0x166f, 0x167f; - 0x1681, 0x169a; 0x16a0, 0x16ea; 0x16f1, 0x16f8; 0x1700, 0x1711; 0x171f, 0x1731; - 0x1740, 0x1751; 0x1760, 0x176c; 0x176e, 0x1770; 0x1780, 0x17b3; 0x17a3, 0x17a4; - 0x17dc, 0x17dc; 0x1820, 0x1842; 0x1844, 0x1878; 0x1880, 0x1884; 0x1887, 0x18a8; - 0x18aa, 0x18aa; 0x18b0, 0x18f5; 0x1900, 0x191e; 0x1950, 0x196d; 0x1970, 0x1974; - 0x1980, 0x19ab; 0x19b0, 0x19c9; 0x19b5, 0x19b7; 0x19ba, 0x19ba; 0x1a00, 0x1a16; - 0x1a20, 0x1a54; 0x1b05, 0x1b33; 0x1b45, 0x1b4c; 0x1b83, 0x1ba0; 0x1bae, 0x1baf; - 0x1bba, 0x1be5; 0x1c00, 0x1c23; 0x1c4d, 0x1c4f; 0x1c5a, 0x1c77; 0x1ce9, 0x1cec; - 0x1cee, 0x1cf3; 0x1cf5, 0x1cf6; 0x1cfa, 0x1cfa; 0x2135, 0x2138; 0x2d30, 0x2d67; - 0x2d80, 0x2d96; 0x2da0, 0x2da6; 0x2da8, 0x2dae; 0x2db0, 0x2db6; 0x2db8, 0x2dbe; - 0x2dc0, 0x2dc6; 0x2dc8, 0x2dce; 0x2dd0, 0x2dd6; 0x2dd8, 0x2dde; 0x3006, 0x3006; - 0x303c, 0x303c; 0x3041, 0x3096; 0x309f, 0x309f; 0x30a1, 0x30fa; 0x30ff, 0x30ff; - 0x3105, 0x312f; 0x3131, 0x318e; 0x3164, 0x3164; 0x31a0, 0x31bf; 0x31f0, 0x31ff; - 0x3400, 0x4dbf; 0x4e00, 0x9fff; 0x4e00, 0xa014; 0xa016, 0xa48c; 0xa4d0, 0xa4f7; - 0xa500, 0xa60b; 0xa610, 0xa61f; 0xa62a, 0xa62b; 0xa66e, 0xa66e; 0xa6a0, 0xa6e5; - 0xa78f, 0xa78f; 0xa7f7, 0xa7f7; 0xa7fb, 0xa801; 0xa803, 0xa805; 0xa807, 0xa80a; - 0xa80c, 0xa822; 0xa840, 0xa873; 0xa882, 0xa8b3; 0xa8f2, 0xa8f7; 0xa8fb, 0xa8fb; - 0xa8fd, 0xa8fe; 0xa90a, 0xa925; 0xa930, 0xa946; 0xa960, 0xa97c; 0xa984, 0xa9b2; - 0xa9e0, 0xa9e4; 0xa9e7, 0xa9ef; 0xa9fa, 0xa9fe; 0xaa00, 0xaa28; 0xaa40, 0xaa42; - 0xaa44, 0xaa4b; 0xaa60, 0xaa6f; 0xaa71, 0xaa76; 0xaa7a, 0xaa7a; 0xaa7e, 0xaaaf; - 0xaab1, 0xaab1; 0xaab5, 0xaab6; 0xaab9, 0xaab9; 0xaab9, 0xaabd; 0xaabb, 0xaabc; - 0xaac0, 0xaac0; 0xaac2, 0xaac2; 0xaadb, 0xaadc; 0xaae0, 0xaaea; 0xaaf2, 0xaaf2; - 0xab01, 0xab06; 0xab09, 0xab0e; 0xab11, 0xab16; 0xab20, 0xab26; 0xab28, 0xab2e; - 0xabc0, 0xabe2; 0xac00, 0xd7a3; 0xd7b0, 0xd7c6; 0xd7cb, 0xd7fb; 0xf900, 0xfa6d; - 0xfa0e, 0xfa0f; 0xfa11, 0xfa11; 0xfa13, 0xfa14; 0xfa1f, 0xfa1f; 0xfa21, 0xfa21; - 0xfa23, 0xfa24; 0xfa27, 0xfa29; 0xfa70, 0xfad9; 0xfb1d, 0xfb1d; 0xfb1f, 0xfb28; - 0xfb2a, 0xfb36; 0xfb38, 0xfb3c; 0xfb3e, 0xfb3e; 0xfb40, 0xfb41; 0xfb43, 0xfb44; - 0xfb46, 0xfbb1; 0xfbd3, 0xfc5d; 0xfbd3, 0xfd3d; 0xfc64, 0xfd3d; 0xfd50, 0xfd8f; - 0xfd92, 0xfdc7; 0xfdf0, 0xfdf9; 0xfdf0, 0xfdfb; 0xfe70, 0xfe74; 0xfe71, 0xfe71; - 0xfe73, 0xfe73; 0xfe76, 0xfefc; 0xfe77, 0xfe77; 0xfe79, 0xfe79; 0xfe7b, 0xfe7b; - 0xfe7d, 0xfe7d; 0xfe7f, 0xfefc; 0xff66, 0xff6f; 0xff71, 0xff9d; 0xffa0, 0xffa0; - 0xffa0, 0xffbe; 0xffc2, 0xffc7; 0xffca, 0xffcf; 0xffd2, 0xffd7; 0xffda, 0xffdc; - 0x10000, 0x1000b; 0x1000d, 0x10026; 0x10028, 0x1003a; 0x1003c, 0x1003d; 0x1003f, 0x1004d; - 0x10050, 0x1005d; 0x10080, 0x100fa; 0x10280, 0x1029c; 0x102a0, 0x102d0; 0x10300, 0x1031f; - 0x1032d, 0x10340; 0x10342, 0x10349; 0x10350, 0x10375; 0x10380, 0x1039d; 0x103a0, 0x103c3; - 0x103c8, 0x103cf; 0x10450, 0x1049d; 0x10500, 0x10527; 0x10530, 0x10563; 0x10600, 0x10736; - 0x10740, 0x10755; 0x10760, 0x10767; 0x10800, 0x10805; 0x10808, 0x10808; 0x1080a, 0x10835; - 0x10837, 0x10838; 0x1083c, 0x1083c; 0x1083f, 0x10855; 0x10860, 0x10876; 0x10880, 0x1089e; - 0x108e0, 0x108f2; 0x108f4, 0x108f5; 0x10900, 0x10915; 0x10920, 0x10939; 0x10980, 0x109b7; - 0x109be, 0x109bf; 0x10a00, 0x10a00; 0x10a10, 0x10a13; 0x10a15, 0x10a17; 0x10a19, 0x10a35; - 0x10a60, 0x10a7c; 0x10a80, 0x10a9c; 0x10ac0, 0x10ac7; 0x10ac9, 0x10ae4; 0x10b00, 0x10b35; - 0x10b40, 0x10b55; 0x10b60, 0x10b72; 0x10b80, 0x10b91; 0x10c00, 0x10c48; 0x10d00, 0x10d23; - 0x10d22, 0x10d23; 0x10e80, 0x10ea9; 0x10eb0, 0x10eb1; 0x10f00, 0x10f1c; 0x10f27, 0x10f27; - 0x10f30, 0x10f45; 0x10f70, 0x10f81; 0x10fb0, 0x10fc4; 0x10fe0, 0x10ff6; 0x11003, 0x11037; - 0x11071, 0x11072; 0x11075, 0x11075; 0x11083, 0x110af; 0x110d0, 0x110e8; 0x11103, 0x11126; - 0x11144, 0x11144; 0x11147, 0x11147; 0x11150, 0x11172; 0x11176, 0x11176; 0x11183, 0x111b2; - 0x111c1, 0x111c4; 0x111da, 0x111da; 0x111dc, 0x111dc; 0x11200, 0x11211; 0x11213, 0x1122b; - 0x11280, 0x11286; 0x11288, 0x11288; 0x1128a, 0x1128d; 0x1128f, 0x1129d; 0x1129f, 0x112a8; - 0x112b0, 0x112de; 0x11305, 0x1130c; 0x1130f, 0x11310; 0x11313, 0x11328; 0x1132a, 0x11330; - 0x11332, 0x11333; 0x11335, 0x11339; 0x1133d, 0x1133d; 0x11350, 0x11350; 0x1135d, 0x1135d; - 0x1135d, 0x11361; 0x11400, 0x11434; 0x11447, 0x1144a; 0x1145f, 0x11461; 0x11480, 0x114af; - 0x114c4, 0x114c5; 0x114c7, 0x114c7; 0x11580, 0x115ae; 0x115d8, 0x115db; 0x11600, 0x1162f; - 0x11644, 0x11644; 0x11680, 0x116aa; 0x116b8, 0x116b8; 0x11700, 0x1171a; 0x11740, 0x11746; - 0x11800, 0x1182b; 0x118ff, 0x11906; 0x11909, 0x11909; 0x1190c, 0x11913; 0x11915, 0x11916; - 0x11918, 0x1192f; 0x1193f, 0x1193f; 0x11941, 0x11941; 0x119a0, 0x119a7; 0x119aa, 0x119d0; - 0x119e1, 0x119e1; 0x119e3, 0x119e3; 0x11a00, 0x11a00; 0x11a0b, 0x11a32; 0x11a3a, 0x11a3a; - 0x11a50, 0x11a50; 0x11a5c, 0x11a89; 0x11a9d, 0x11a9d; 0x11ab0, 0x11af8; 0x11c00, 0x11c08; - 0x11c0a, 0x11c2e; 0x11c40, 0x11c40; 0x11c72, 0x11c8f; 0x11d00, 0x11d06; 0x11d08, 0x11d09; - 0x11d0b, 0x11d30; 0x11d46, 0x11d46; 0x11d60, 0x11d65; 0x11d67, 0x11d68; 0x11d6a, 0x11d89; - 0x11d98, 0x11d98; 0x11ee0, 0x11ef2; 0x11fb0, 0x11fb0; 0x12000, 0x12399; 0x12480, 0x12543; - 0x12f90, 0x12ff0; 0x13000, 0x1342e; 0x14400, 0x14646; 0x16800, 0x16a38; 0x16a40, 0x16a5e; - 0x16a70, 0x16abe; 0x16ad0, 0x16aed; 0x16b00, 0x16b2f; 0x16b63, 0x16b77; 0x16b7d, 0x16b8f; - 0x16f00, 0x16f4a; 0x16f50, 0x16f50; 0x17000, 0x187f7; 0x18800, 0x18cd5; 0x18d00, 0x18d08; - 0x1b000, 0x1b122; 0x1b150, 0x1b152; 0x1b164, 0x1b167; 0x1b170, 0x1b2fb; 0x1bc00, 0x1bc6a; - 0x1bc70, 0x1bc7c; 0x1bc80, 0x1bc88; 0x1bc90, 0x1bc99; 0x1df0a, 0x1df0a; 0x1e100, 0x1e12c; - 0x1e14e, 0x1e14e; 0x1e290, 0x1e2ad; 0x1e2c0, 0x1e2eb; 0x1e7e0, 0x1e7e6; 0x1e7e8, 0x1e7eb; - 0x1e7ed, 0x1e7ee; 0x1e7f0, 0x1e7fe; 0x1e800, 0x1e8c4; 0x1ee00, 0x1ee03; 0x1ee05, 0x1ee1f; - 0x1ee21, 0x1ee22; 0x1ee24, 0x1ee24; 0x1ee27, 0x1ee27; 0x1ee29, 0x1ee32; 0x1ee34, 0x1ee37; - 0x1ee39, 0x1ee39; 0x1ee3b, 0x1ee3b; 0x1ee42, 0x1ee42; 0x1ee47, 0x1ee47; 0x1ee49, 0x1ee49; - 0x1ee4b, 0x1ee4b; 0x1ee4d, 0x1ee4f; 0x1ee51, 0x1ee52; 0x1ee54, 0x1ee54; 0x1ee57, 0x1ee57; - 0x1ee59, 0x1ee59; 0x1ee5b, 0x1ee5b; 0x1ee5d, 0x1ee5d; 0x1ee5f, 0x1ee5f; 0x1ee61, 0x1ee62; - 0x1ee64, 0x1ee64; 0x1ee67, 0x1ee6a; 0x1ee6c, 0x1ee72; 0x1ee74, 0x1ee77; 0x1ee79, 0x1ee7c; - 0x1ee7e, 0x1ee7e; 0x1ee80, 0x1ee89; 0x1ee8b, 0x1ee9b; 0x1eea1, 0x1eea3; 0x1eea5, 0x1eea9; - 0x1eeab, 0x1eebb; 0x20000, 0x2a6df; 0x2a700, 0x2b738; 0x2b740, 0x2b81d; 0x2b820, 0x2cea1; - 0x30000, 0x3134a; 0x2f800, 0x2fa1d; 0x2ceb0, 0x2ebe0] + [ + (0xaa, 0xaa); + (0xba, 0xba); + (0x1bb, 0x1bb); + (0x1c0, 0x1c3); + (0x294, 0x294); + (0x5d0, 0x5ea); + (0x5ef, 0x5f2); + (0x620, 0x63f); + (0x641, 0x64a); + (0x66e, 0x66f); + (0x671, 0x6d3); + (0x673, 0x673); + (0x6d5, 0x6d5); + (0x6ee, 0x6ef); + (0x6fa, 0x6fc); + (0x6ff, 0x6ff); + (0x710, 0x710); + (0x712, 0x72f); + (0x74d, 0x7a5); + (0x7b1, 0x7b1); + (0x7ca, 0x7ea); + (0x800, 0x815); + (0x840, 0x858); + (0x860, 0x86a); + (0x870, 0x887); + (0x889, 0x88e); + (0x8a0, 0x8c8); + (0x904, 0x939); + (0x93d, 0x93d); + (0x950, 0x950); + (0x958, 0x961); + (0x972, 0x980); + (0x985, 0x98c); + (0x98f, 0x990); + (0x993, 0x9a8); + (0x9aa, 0x9b0); + (0x9b2, 0x9b2); + (0x9b6, 0x9b9); + (0x9bd, 0x9bd); + (0x9ce, 0x9ce); + (0x9dc, 0x9dd); + (0x9df, 0x9e1); + (0x9f0, 0x9f1); + (0x9fc, 0x9fc); + (0xa05, 0xa0a); + (0xa0f, 0xa10); + (0xa13, 0xa28); + (0xa2a, 0xa30); + (0xa32, 0xa33); + (0xa35, 0xa36); + (0xa38, 0xa39); + (0xa59, 0xa5c); + (0xa5e, 0xa5e); + (0xa72, 0xa74); + (0xa85, 0xa8d); + (0xa8f, 0xa91); + (0xa93, 0xaa8); + (0xaaa, 0xab0); + (0xab2, 0xab3); + (0xab5, 0xab9); + (0xabd, 0xabd); + (0xad0, 0xad0); + (0xae0, 0xae1); + (0xaf9, 0xaf9); + (0xb05, 0xb0c); + (0xb0f, 0xb10); + (0xb13, 0xb28); + (0xb2a, 0xb30); + (0xb32, 0xb33); + (0xb35, 0xb39); + (0xb3d, 0xb3d); + (0xb5c, 0xb5d); + (0xb5f, 0xb61); + (0xb71, 0xb71); + (0xb83, 0xb83); + (0xb85, 0xb8a); + (0xb8e, 0xb90); + (0xb92, 0xb95); + (0xb99, 0xb9a); + (0xb9c, 0xb9c); + (0xb9e, 0xb9f); + (0xba3, 0xba4); + (0xba8, 0xbaa); + (0xbae, 0xbb9); + (0xbd0, 0xbd0); + (0xc05, 0xc0c); + (0xc0e, 0xc10); + (0xc12, 0xc28); + (0xc2a, 0xc39); + (0xc3d, 0xc3d); + (0xc58, 0xc5a); + (0xc5d, 0xc5d); + (0xc60, 0xc61); + (0xc80, 0xc80); + (0xc85, 0xc8c); + (0xc8e, 0xc90); + (0xc92, 0xca8); + (0xcaa, 0xcb3); + (0xcb5, 0xcb9); + (0xcbd, 0xcbd); + (0xcdd, 0xcde); + (0xce0, 0xce1); + (0xcf1, 0xcf2); + (0xd04, 0xd0c); + (0xd0e, 0xd10); + (0xd12, 0xd3a); + (0xd3d, 0xd3d); + (0xd4e, 0xd4e); + (0xd54, 0xd56); + (0xd5f, 0xd61); + (0xd7a, 0xd7f); + (0xd85, 0xd96); + (0xd9a, 0xdb1); + (0xdb3, 0xdbb); + (0xdbd, 0xdbd); + (0xdc0, 0xdc6); + (0xe01, 0xe30); + (0xe32, 0xe32); + (0xe32, 0xe33); + (0xe40, 0xe44); + (0xe40, 0xe45); + (0xe81, 0xe82); + (0xe84, 0xe84); + (0xe86, 0xe8a); + (0xe8c, 0xea3); + (0xea5, 0xea5); + (0xea7, 0xeb0); + (0xeb2, 0xeb2); + (0xeb2, 0xeb3); + (0xebd, 0xebd); + (0xec0, 0xec4); + (0xedc, 0xedf); + (0xf00, 0xf00); + (0xf40, 0xf47); + (0xf49, 0xf6c); + (0xf88, 0xf8c); + (0x1000, 0x102a); + (0x103f, 0x103f); + (0x1050, 0x1055); + (0x105a, 0x105d); + (0x1061, 0x1061); + (0x1065, 0x1066); + (0x106e, 0x1070); + (0x1075, 0x1081); + (0x108e, 0x108e); + (0x1100, 0x1248); + (0x115f, 0x1160); + (0x124a, 0x124d); + (0x1250, 0x1256); + (0x1258, 0x1258); + (0x125a, 0x125d); + (0x1260, 0x1288); + (0x128a, 0x128d); + (0x1290, 0x12b0); + (0x12b2, 0x12b5); + (0x12b8, 0x12be); + (0x12c0, 0x12c0); + (0x12c2, 0x12c5); + (0x12c8, 0x12d6); + (0x12d8, 0x1310); + (0x1312, 0x1315); + (0x1318, 0x135a); + (0x1380, 0x138f); + (0x1401, 0x166c); + (0x166f, 0x167f); + (0x1681, 0x169a); + (0x16a0, 0x16ea); + (0x16f1, 0x16f8); + (0x1700, 0x1711); + (0x171f, 0x1731); + (0x1740, 0x1751); + (0x1760, 0x176c); + (0x176e, 0x1770); + (0x1780, 0x17b3); + (0x17a3, 0x17a4); + (0x17dc, 0x17dc); + (0x1820, 0x1842); + (0x1844, 0x1878); + (0x1880, 0x1884); + (0x1887, 0x18a8); + (0x18aa, 0x18aa); + (0x18b0, 0x18f5); + (0x1900, 0x191e); + (0x1950, 0x196d); + (0x1970, 0x1974); + (0x1980, 0x19ab); + (0x19b0, 0x19c9); + (0x19b5, 0x19b7); + (0x19ba, 0x19ba); + (0x1a00, 0x1a16); + (0x1a20, 0x1a54); + (0x1b05, 0x1b33); + (0x1b45, 0x1b4c); + (0x1b83, 0x1ba0); + (0x1bae, 0x1baf); + (0x1bba, 0x1be5); + (0x1c00, 0x1c23); + (0x1c4d, 0x1c4f); + (0x1c5a, 0x1c77); + (0x1ce9, 0x1cec); + (0x1cee, 0x1cf3); + (0x1cf5, 0x1cf6); + (0x1cfa, 0x1cfa); + (0x2135, 0x2138); + (0x2d30, 0x2d67); + (0x2d80, 0x2d96); + (0x2da0, 0x2da6); + (0x2da8, 0x2dae); + (0x2db0, 0x2db6); + (0x2db8, 0x2dbe); + (0x2dc0, 0x2dc6); + (0x2dc8, 0x2dce); + (0x2dd0, 0x2dd6); + (0x2dd8, 0x2dde); + (0x3006, 0x3006); + (0x303c, 0x303c); + (0x3041, 0x3096); + (0x309f, 0x309f); + (0x30a1, 0x30fa); + (0x30ff, 0x30ff); + (0x3105, 0x312f); + (0x3131, 0x318e); + (0x3164, 0x3164); + (0x31a0, 0x31bf); + (0x31f0, 0x31ff); + (0x3400, 0x4dbf); + (0x4e00, 0x9fff); + (0x4e00, 0xa014); + (0xa016, 0xa48c); + (0xa4d0, 0xa4f7); + (0xa500, 0xa60b); + (0xa610, 0xa61f); + (0xa62a, 0xa62b); + (0xa66e, 0xa66e); + (0xa6a0, 0xa6e5); + (0xa78f, 0xa78f); + (0xa7f7, 0xa7f7); + (0xa7fb, 0xa801); + (0xa803, 0xa805); + (0xa807, 0xa80a); + (0xa80c, 0xa822); + (0xa840, 0xa873); + (0xa882, 0xa8b3); + (0xa8f2, 0xa8f7); + (0xa8fb, 0xa8fb); + (0xa8fd, 0xa8fe); + (0xa90a, 0xa925); + (0xa930, 0xa946); + (0xa960, 0xa97c); + (0xa984, 0xa9b2); + (0xa9e0, 0xa9e4); + (0xa9e7, 0xa9ef); + (0xa9fa, 0xa9fe); + (0xaa00, 0xaa28); + (0xaa40, 0xaa42); + (0xaa44, 0xaa4b); + (0xaa60, 0xaa6f); + (0xaa71, 0xaa76); + (0xaa7a, 0xaa7a); + (0xaa7e, 0xaaaf); + (0xaab1, 0xaab1); + (0xaab5, 0xaab6); + (0xaab9, 0xaab9); + (0xaab9, 0xaabd); + (0xaabb, 0xaabc); + (0xaac0, 0xaac0); + (0xaac2, 0xaac2); + (0xaadb, 0xaadc); + (0xaae0, 0xaaea); + (0xaaf2, 0xaaf2); + (0xab01, 0xab06); + (0xab09, 0xab0e); + (0xab11, 0xab16); + (0xab20, 0xab26); + (0xab28, 0xab2e); + (0xabc0, 0xabe2); + (0xac00, 0xd7a3); + (0xd7b0, 0xd7c6); + (0xd7cb, 0xd7fb); + (0xf900, 0xfa6d); + (0xfa0e, 0xfa0f); + (0xfa11, 0xfa11); + (0xfa13, 0xfa14); + (0xfa1f, 0xfa1f); + (0xfa21, 0xfa21); + (0xfa23, 0xfa24); + (0xfa27, 0xfa29); + (0xfa70, 0xfad9); + (0xfb1d, 0xfb1d); + (0xfb1f, 0xfb28); + (0xfb2a, 0xfb36); + (0xfb38, 0xfb3c); + (0xfb3e, 0xfb3e); + (0xfb40, 0xfb41); + (0xfb43, 0xfb44); + (0xfb46, 0xfbb1); + (0xfbd3, 0xfc5d); + (0xfbd3, 0xfd3d); + (0xfc64, 0xfd3d); + (0xfd50, 0xfd8f); + (0xfd92, 0xfdc7); + (0xfdf0, 0xfdf9); + (0xfdf0, 0xfdfb); + (0xfe70, 0xfe74); + (0xfe71, 0xfe71); + (0xfe73, 0xfe73); + (0xfe76, 0xfefc); + (0xfe77, 0xfe77); + (0xfe79, 0xfe79); + (0xfe7b, 0xfe7b); + (0xfe7d, 0xfe7d); + (0xfe7f, 0xfefc); + (0xff66, 0xff6f); + (0xff71, 0xff9d); + (0xffa0, 0xffa0); + (0xffa0, 0xffbe); + (0xffc2, 0xffc7); + (0xffca, 0xffcf); + (0xffd2, 0xffd7); + (0xffda, 0xffdc); + (0x10000, 0x1000b); + (0x1000d, 0x10026); + (0x10028, 0x1003a); + (0x1003c, 0x1003d); + (0x1003f, 0x1004d); + (0x10050, 0x1005d); + (0x10080, 0x100fa); + (0x10280, 0x1029c); + (0x102a0, 0x102d0); + (0x10300, 0x1031f); + (0x1032d, 0x10340); + (0x10342, 0x10349); + (0x10350, 0x10375); + (0x10380, 0x1039d); + (0x103a0, 0x103c3); + (0x103c8, 0x103cf); + (0x10450, 0x1049d); + (0x10500, 0x10527); + (0x10530, 0x10563); + (0x10600, 0x10736); + (0x10740, 0x10755); + (0x10760, 0x10767); + (0x10800, 0x10805); + (0x10808, 0x10808); + (0x1080a, 0x10835); + (0x10837, 0x10838); + (0x1083c, 0x1083c); + (0x1083f, 0x10855); + (0x10860, 0x10876); + (0x10880, 0x1089e); + (0x108e0, 0x108f2); + (0x108f4, 0x108f5); + (0x10900, 0x10915); + (0x10920, 0x10939); + (0x10980, 0x109b7); + (0x109be, 0x109bf); + (0x10a00, 0x10a00); + (0x10a10, 0x10a13); + (0x10a15, 0x10a17); + (0x10a19, 0x10a35); + (0x10a60, 0x10a7c); + (0x10a80, 0x10a9c); + (0x10ac0, 0x10ac7); + (0x10ac9, 0x10ae4); + (0x10b00, 0x10b35); + (0x10b40, 0x10b55); + (0x10b60, 0x10b72); + (0x10b80, 0x10b91); + (0x10c00, 0x10c48); + (0x10d00, 0x10d23); + (0x10d22, 0x10d23); + (0x10e80, 0x10ea9); + (0x10eb0, 0x10eb1); + (0x10f00, 0x10f1c); + (0x10f27, 0x10f27); + (0x10f30, 0x10f45); + (0x10f70, 0x10f81); + (0x10fb0, 0x10fc4); + (0x10fe0, 0x10ff6); + (0x11003, 0x11037); + (0x11071, 0x11072); + (0x11075, 0x11075); + (0x11083, 0x110af); + (0x110d0, 0x110e8); + (0x11103, 0x11126); + (0x11144, 0x11144); + (0x11147, 0x11147); + (0x11150, 0x11172); + (0x11176, 0x11176); + (0x11183, 0x111b2); + (0x111c1, 0x111c4); + (0x111da, 0x111da); + (0x111dc, 0x111dc); + (0x11200, 0x11211); + (0x11213, 0x1122b); + (0x11280, 0x11286); + (0x11288, 0x11288); + (0x1128a, 0x1128d); + (0x1128f, 0x1129d); + (0x1129f, 0x112a8); + (0x112b0, 0x112de); + (0x11305, 0x1130c); + (0x1130f, 0x11310); + (0x11313, 0x11328); + (0x1132a, 0x11330); + (0x11332, 0x11333); + (0x11335, 0x11339); + (0x1133d, 0x1133d); + (0x11350, 0x11350); + (0x1135d, 0x1135d); + (0x1135d, 0x11361); + (0x11400, 0x11434); + (0x11447, 0x1144a); + (0x1145f, 0x11461); + (0x11480, 0x114af); + (0x114c4, 0x114c5); + (0x114c7, 0x114c7); + (0x11580, 0x115ae); + (0x115d8, 0x115db); + (0x11600, 0x1162f); + (0x11644, 0x11644); + (0x11680, 0x116aa); + (0x116b8, 0x116b8); + (0x11700, 0x1171a); + (0x11740, 0x11746); + (0x11800, 0x1182b); + (0x118ff, 0x11906); + (0x11909, 0x11909); + (0x1190c, 0x11913); + (0x11915, 0x11916); + (0x11918, 0x1192f); + (0x1193f, 0x1193f); + (0x11941, 0x11941); + (0x119a0, 0x119a7); + (0x119aa, 0x119d0); + (0x119e1, 0x119e1); + (0x119e3, 0x119e3); + (0x11a00, 0x11a00); + (0x11a0b, 0x11a32); + (0x11a3a, 0x11a3a); + (0x11a50, 0x11a50); + (0x11a5c, 0x11a89); + (0x11a9d, 0x11a9d); + (0x11ab0, 0x11af8); + (0x11c00, 0x11c08); + (0x11c0a, 0x11c2e); + (0x11c40, 0x11c40); + (0x11c72, 0x11c8f); + (0x11d00, 0x11d06); + (0x11d08, 0x11d09); + (0x11d0b, 0x11d30); + (0x11d46, 0x11d46); + (0x11d60, 0x11d65); + (0x11d67, 0x11d68); + (0x11d6a, 0x11d89); + (0x11d98, 0x11d98); + (0x11ee0, 0x11ef2); + (0x11fb0, 0x11fb0); + (0x12000, 0x12399); + (0x12480, 0x12543); + (0x12f90, 0x12ff0); + (0x13000, 0x1342e); + (0x14400, 0x14646); + (0x16800, 0x16a38); + (0x16a40, 0x16a5e); + (0x16a70, 0x16abe); + (0x16ad0, 0x16aed); + (0x16b00, 0x16b2f); + (0x16b63, 0x16b77); + (0x16b7d, 0x16b8f); + (0x16f00, 0x16f4a); + (0x16f50, 0x16f50); + (0x17000, 0x187f7); + (0x18800, 0x18cd5); + (0x18d00, 0x18d08); + (0x1b000, 0x1b122); + (0x1b150, 0x1b152); + (0x1b164, 0x1b167); + (0x1b170, 0x1b2fb); + (0x1bc00, 0x1bc6a); + (0x1bc70, 0x1bc7c); + (0x1bc80, 0x1bc88); + (0x1bc90, 0x1bc99); + (0x1df0a, 0x1df0a); + (0x1e100, 0x1e12c); + (0x1e14e, 0x1e14e); + (0x1e290, 0x1e2ad); + (0x1e2c0, 0x1e2eb); + (0x1e7e0, 0x1e7e6); + (0x1e7e8, 0x1e7eb); + (0x1e7ed, 0x1e7ee); + (0x1e7f0, 0x1e7fe); + (0x1e800, 0x1e8c4); + (0x1ee00, 0x1ee03); + (0x1ee05, 0x1ee1f); + (0x1ee21, 0x1ee22); + (0x1ee24, 0x1ee24); + (0x1ee27, 0x1ee27); + (0x1ee29, 0x1ee32); + (0x1ee34, 0x1ee37); + (0x1ee39, 0x1ee39); + (0x1ee3b, 0x1ee3b); + (0x1ee42, 0x1ee42); + (0x1ee47, 0x1ee47); + (0x1ee49, 0x1ee49); + (0x1ee4b, 0x1ee4b); + (0x1ee4d, 0x1ee4f); + (0x1ee51, 0x1ee52); + (0x1ee54, 0x1ee54); + (0x1ee57, 0x1ee57); + (0x1ee59, 0x1ee59); + (0x1ee5b, 0x1ee5b); + (0x1ee5d, 0x1ee5d); + (0x1ee5f, 0x1ee5f); + (0x1ee61, 0x1ee62); + (0x1ee64, 0x1ee64); + (0x1ee67, 0x1ee6a); + (0x1ee6c, 0x1ee72); + (0x1ee74, 0x1ee77); + (0x1ee79, 0x1ee7c); + (0x1ee7e, 0x1ee7e); + (0x1ee80, 0x1ee89); + (0x1ee8b, 0x1ee9b); + (0x1eea1, 0x1eea3); + (0x1eea5, 0x1eea9); + (0x1eeab, 0x1eebb); + (0x20000, 0x2a6df); + (0x2a700, 0x2b738); + (0x2b740, 0x2b81d); + (0x2b820, 0x2cea1); + (0x30000, 0x3134a); + (0x2f800, 0x2fa1d); + (0x2ceb0, 0x2ebe0); + ] let lt = - [0x1c5, 0x1c5; 0x1c8, 0x1c8; 0x1cb, 0x1cb; 0x1f2, 0x1f2; 0x1f88, 0x1f8f; - 0x1ffc, 0x1ffc; 0x1fcc, 0x1fcc; 0x1fbc, 0x1fbc; 0x1fa8, 0x1faf; 0x1f98, 0x1f9f] + [ + (0x1c5, 0x1c5); + (0x1c8, 0x1c8); + (0x1cb, 0x1cb); + (0x1f2, 0x1f2); + (0x1f88, 0x1f8f); + (0x1ffc, 0x1ffc); + (0x1fcc, 0x1fcc); + (0x1fbc, 0x1fbc); + (0x1fa8, 0x1faf); + (0x1f98, 0x1f9f); + ] let lu = - [0x41, 0x5a; 0xc0, 0xd6; 0xd8, 0xde; 0x100, 0x100; 0x102, 0x102; - 0x104, 0x104; 0x106, 0x106; 0x108, 0x108; 0x10a, 0x10a; 0x10c, 0x10c; - 0x10e, 0x10e; 0x110, 0x110; 0x112, 0x112; 0x114, 0x114; 0x116, 0x116; - 0x118, 0x118; 0x11a, 0x11a; 0x11c, 0x11c; 0x11e, 0x11e; 0x120, 0x120; - 0x122, 0x122; 0x124, 0x124; 0x126, 0x126; 0x128, 0x128; 0x12a, 0x12a; - 0x12c, 0x12c; 0x12e, 0x12e; 0x130, 0x130; 0x132, 0x132; 0x134, 0x134; - 0x136, 0x136; 0x139, 0x139; 0x13b, 0x13b; 0x13d, 0x13d; 0x13f, 0x13f; - 0x141, 0x141; 0x143, 0x143; 0x145, 0x145; 0x147, 0x147; 0x14a, 0x14a; - 0x14c, 0x14c; 0x14e, 0x14e; 0x150, 0x150; 0x152, 0x152; 0x154, 0x154; - 0x156, 0x156; 0x158, 0x158; 0x15a, 0x15a; 0x15c, 0x15c; 0x15e, 0x15e; - 0x160, 0x160; 0x162, 0x162; 0x164, 0x164; 0x166, 0x166; 0x168, 0x168; - 0x16a, 0x16a; 0x16c, 0x16c; 0x16e, 0x16e; 0x170, 0x170; 0x172, 0x172; - 0x174, 0x174; 0x176, 0x176; 0x178, 0x179; 0x17b, 0x17b; 0x17d, 0x17d; - 0x181, 0x182; 0x184, 0x184; 0x186, 0x187; 0x189, 0x18b; 0x18e, 0x191; - 0x193, 0x194; 0x196, 0x198; 0x19c, 0x19d; 0x19f, 0x1a0; 0x1a2, 0x1a2; - 0x1a4, 0x1a4; 0x1a6, 0x1a7; 0x1a9, 0x1a9; 0x1ac, 0x1ac; 0x1ae, 0x1af; - 0x1b1, 0x1b3; 0x1b5, 0x1b5; 0x1b7, 0x1b8; 0x1bc, 0x1bc; 0x1c4, 0x1c4; - 0x1c7, 0x1c7; 0x1ca, 0x1ca; 0x1cd, 0x1cd; 0x1cf, 0x1cf; 0x1d1, 0x1d1; - 0x1d3, 0x1d3; 0x1d5, 0x1d5; 0x1d7, 0x1d7; 0x1d9, 0x1d9; 0x1db, 0x1db; - 0x1de, 0x1de; 0x1e0, 0x1e0; 0x1e2, 0x1e2; 0x1e4, 0x1e4; 0x1e6, 0x1e6; - 0x1e8, 0x1e8; 0x1ea, 0x1ea; 0x1ec, 0x1ec; 0x1ee, 0x1ee; 0x1f1, 0x1f1; - 0x1f4, 0x1f4; 0x1f6, 0x1f8; 0x1fa, 0x1fa; 0x1fc, 0x1fc; 0x1fe, 0x1fe; - 0x200, 0x200; 0x202, 0x202; 0x204, 0x204; 0x206, 0x206; 0x208, 0x208; - 0x20a, 0x20a; 0x20c, 0x20c; 0x20e, 0x20e; 0x210, 0x210; 0x212, 0x212; - 0x214, 0x214; 0x216, 0x216; 0x218, 0x218; 0x21a, 0x21a; 0x21c, 0x21c; - 0x21e, 0x21e; 0x220, 0x220; 0x222, 0x222; 0x224, 0x224; 0x226, 0x226; - 0x228, 0x228; 0x22a, 0x22a; 0x22c, 0x22c; 0x22e, 0x22e; 0x230, 0x230; - 0x232, 0x232; 0x23a, 0x23b; 0x23d, 0x23e; 0x241, 0x241; 0x243, 0x246; - 0x248, 0x248; 0x24a, 0x24a; 0x24c, 0x24c; 0x24e, 0x24e; 0x370, 0x370; - 0x372, 0x372; 0x376, 0x376; 0x37f, 0x37f; 0x386, 0x386; 0x388, 0x38a; - 0x38c, 0x38c; 0x38e, 0x38f; 0x391, 0x3a1; 0x3a3, 0x3ab; 0x3cf, 0x3cf; - 0x3d2, 0x3d4; 0x3d8, 0x3d8; 0x3da, 0x3da; 0x3dc, 0x3dc; 0x3de, 0x3de; - 0x3e0, 0x3e0; 0x3e2, 0x3e2; 0x3e4, 0x3e4; 0x3e6, 0x3e6; 0x3e8, 0x3e8; - 0x3ea, 0x3ea; 0x3ec, 0x3ec; 0x3ee, 0x3ee; 0x3f4, 0x3f4; 0x3f7, 0x3f7; - 0x3f9, 0x3fa; 0x3fd, 0x42f; 0x460, 0x460; 0x462, 0x462; 0x464, 0x464; - 0x466, 0x466; 0x468, 0x468; 0x46a, 0x46a; 0x46c, 0x46c; 0x46e, 0x46e; - 0x470, 0x470; 0x472, 0x472; 0x474, 0x474; 0x476, 0x476; 0x478, 0x478; - 0x47a, 0x47a; 0x47c, 0x47c; 0x47e, 0x47e; 0x480, 0x480; 0x48a, 0x48a; - 0x48c, 0x48c; 0x48e, 0x48e; 0x490, 0x490; 0x492, 0x492; 0x494, 0x494; - 0x496, 0x496; 0x498, 0x498; 0x49a, 0x49a; 0x49c, 0x49c; 0x49e, 0x49e; - 0x4a0, 0x4a0; 0x4a2, 0x4a2; 0x4a4, 0x4a4; 0x4a6, 0x4a6; 0x4a8, 0x4a8; - 0x4aa, 0x4aa; 0x4ac, 0x4ac; 0x4ae, 0x4ae; 0x4b0, 0x4b0; 0x4b2, 0x4b2; - 0x4b4, 0x4b4; 0x4b6, 0x4b6; 0x4b8, 0x4b8; 0x4ba, 0x4ba; 0x4bc, 0x4bc; - 0x4be, 0x4be; 0x4c0, 0x4c1; 0x4c3, 0x4c3; 0x4c5, 0x4c5; 0x4c7, 0x4c7; - 0x4c9, 0x4c9; 0x4cb, 0x4cb; 0x4cd, 0x4cd; 0x4d0, 0x4d0; 0x4d2, 0x4d2; - 0x4d4, 0x4d4; 0x4d6, 0x4d6; 0x4d8, 0x4d8; 0x4da, 0x4da; 0x4dc, 0x4dc; - 0x4de, 0x4de; 0x4e0, 0x4e0; 0x4e2, 0x4e2; 0x4e4, 0x4e4; 0x4e6, 0x4e6; - 0x4e8, 0x4e8; 0x4ea, 0x4ea; 0x4ec, 0x4ec; 0x4ee, 0x4ee; 0x4f0, 0x4f0; - 0x4f2, 0x4f2; 0x4f4, 0x4f4; 0x4f6, 0x4f6; 0x4f8, 0x4f8; 0x4fa, 0x4fa; - 0x4fc, 0x4fc; 0x4fe, 0x4fe; 0x500, 0x500; 0x502, 0x502; 0x504, 0x504; - 0x506, 0x506; 0x508, 0x508; 0x50a, 0x50a; 0x50c, 0x50c; 0x50e, 0x50e; - 0x510, 0x510; 0x512, 0x512; 0x514, 0x514; 0x516, 0x516; 0x518, 0x518; - 0x51a, 0x51a; 0x51c, 0x51c; 0x51e, 0x51e; 0x520, 0x520; 0x522, 0x522; - 0x524, 0x524; 0x526, 0x526; 0x528, 0x528; 0x52a, 0x52a; 0x52c, 0x52c; - 0x52e, 0x52e; 0x531, 0x556; 0x10a0, 0x10c5; 0x10c7, 0x10c7; 0x10cd, 0x10cd; - 0x13a0, 0x13f5; 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 0x1e00, 0x1e00; 0x1e02, 0x1e02; - 0x1e04, 0x1e04; 0x1e06, 0x1e06; 0x1e08, 0x1e08; 0x1e0a, 0x1e0a; 0x1e0c, 0x1e0c; - 0x1e0e, 0x1e0e; 0x1e10, 0x1e10; 0x1e12, 0x1e12; 0x1e14, 0x1e14; 0x1e16, 0x1e16; - 0x1e18, 0x1e18; 0x1e1a, 0x1e1a; 0x1e1c, 0x1e1c; 0x1e1e, 0x1e1e; 0x1e20, 0x1e20; - 0x1e22, 0x1e22; 0x1e24, 0x1e24; 0x1e26, 0x1e26; 0x1e28, 0x1e28; 0x1e2a, 0x1e2a; - 0x1e2c, 0x1e2c; 0x1e2e, 0x1e2e; 0x1e30, 0x1e30; 0x1e32, 0x1e32; 0x1e34, 0x1e34; - 0x1e36, 0x1e36; 0x1e38, 0x1e38; 0x1e3a, 0x1e3a; 0x1e3c, 0x1e3c; 0x1e3e, 0x1e3e; - 0x1e40, 0x1e40; 0x1e42, 0x1e42; 0x1e44, 0x1e44; 0x1e46, 0x1e46; 0x1e48, 0x1e48; - 0x1e4a, 0x1e4a; 0x1e4c, 0x1e4c; 0x1e4e, 0x1e4e; 0x1e50, 0x1e50; 0x1e52, 0x1e52; - 0x1e54, 0x1e54; 0x1e56, 0x1e56; 0x1e58, 0x1e58; 0x1e5a, 0x1e5a; 0x1e5c, 0x1e5c; - 0x1e5e, 0x1e5e; 0x1e60, 0x1e60; 0x1e62, 0x1e62; 0x1e64, 0x1e64; 0x1e66, 0x1e66; - 0x1e68, 0x1e68; 0x1e6a, 0x1e6a; 0x1e6c, 0x1e6c; 0x1e6e, 0x1e6e; 0x1e70, 0x1e70; - 0x1e72, 0x1e72; 0x1e74, 0x1e74; 0x1e76, 0x1e76; 0x1e78, 0x1e78; 0x1e7a, 0x1e7a; - 0x1e7c, 0x1e7c; 0x1e7e, 0x1e7e; 0x1e80, 0x1e80; 0x1e82, 0x1e82; 0x1e84, 0x1e84; - 0x1e86, 0x1e86; 0x1e88, 0x1e88; 0x1e8a, 0x1e8a; 0x1e8c, 0x1e8c; 0x1e8e, 0x1e8e; - 0x1e90, 0x1e90; 0x1e92, 0x1e92; 0x1e94, 0x1e94; 0x1e9e, 0x1e9e; 0x1ea0, 0x1ea0; - 0x1ea2, 0x1ea2; 0x1ea4, 0x1ea4; 0x1ea6, 0x1ea6; 0x1ea8, 0x1ea8; 0x1eaa, 0x1eaa; - 0x1eac, 0x1eac; 0x1eae, 0x1eae; 0x1eb0, 0x1eb0; 0x1eb2, 0x1eb2; 0x1eb4, 0x1eb4; - 0x1eb6, 0x1eb6; 0x1eb8, 0x1eb8; 0x1eba, 0x1eba; 0x1ebc, 0x1ebc; 0x1ebe, 0x1ebe; - 0x1ec0, 0x1ec0; 0x1ec2, 0x1ec2; 0x1ec4, 0x1ec4; 0x1ec6, 0x1ec6; 0x1ec8, 0x1ec8; - 0x1eca, 0x1eca; 0x1ecc, 0x1ecc; 0x1ece, 0x1ece; 0x1ed0, 0x1ed0; 0x1ed2, 0x1ed2; - 0x1ed4, 0x1ed4; 0x1ed6, 0x1ed6; 0x1ed8, 0x1ed8; 0x1eda, 0x1eda; 0x1edc, 0x1edc; - 0x1ede, 0x1ede; 0x1ee0, 0x1ee0; 0x1ee2, 0x1ee2; 0x1ee4, 0x1ee4; 0x1ee6, 0x1ee6; - 0x1ee8, 0x1ee8; 0x1eea, 0x1eea; 0x1eec, 0x1eec; 0x1eee, 0x1eee; 0x1ef0, 0x1ef0; - 0x1ef2, 0x1ef2; 0x1ef4, 0x1ef4; 0x1ef6, 0x1ef6; 0x1ef8, 0x1ef8; 0x1efa, 0x1efa; - 0x1efc, 0x1efc; 0x1efe, 0x1efe; 0x1f08, 0x1f0f; 0x1f18, 0x1f1d; 0x1f28, 0x1f2f; - 0x1f38, 0x1f3f; 0x1f48, 0x1f4d; 0x1f59, 0x1f59; 0x1f5b, 0x1f5b; 0x1f5d, 0x1f5d; - 0x1f5f, 0x1f5f; 0x1f68, 0x1f6f; 0x1fb8, 0x1fbb; 0x1fc8, 0x1fcb; 0x1fd8, 0x1fdb; - 0x1fe8, 0x1fec; 0x1ff8, 0x1ffb; 0x2102, 0x2102; 0x2107, 0x2107; 0x210b, 0x210d; - 0x2110, 0x2112; 0x2115, 0x2115; 0x2119, 0x211d; 0x2124, 0x2124; 0x2126, 0x2126; - 0x2128, 0x2128; 0x212a, 0x212d; 0x2130, 0x2133; 0x213e, 0x213f; 0x2145, 0x2145; - 0x2183, 0x2183; 0x2c00, 0x2c2f; 0x2c60, 0x2c60; 0x2c62, 0x2c64; 0x2c67, 0x2c67; - 0x2c69, 0x2c69; 0x2c6b, 0x2c6b; 0x2c6d, 0x2c70; 0x2c72, 0x2c72; 0x2c75, 0x2c75; - 0x2c7e, 0x2c80; 0x2c82, 0x2c82; 0x2c84, 0x2c84; 0x2c86, 0x2c86; 0x2c88, 0x2c88; - 0x2c8a, 0x2c8a; 0x2c8c, 0x2c8c; 0x2c8e, 0x2c8e; 0x2c90, 0x2c90; 0x2c92, 0x2c92; - 0x2c94, 0x2c94; 0x2c96, 0x2c96; 0x2c98, 0x2c98; 0x2c9a, 0x2c9a; 0x2c9c, 0x2c9c; - 0x2c9e, 0x2c9e; 0x2ca0, 0x2ca0; 0x2ca2, 0x2ca2; 0x2ca4, 0x2ca4; 0x2ca6, 0x2ca6; - 0x2ca8, 0x2ca8; 0x2caa, 0x2caa; 0x2cac, 0x2cac; 0x2cae, 0x2cae; 0x2cb0, 0x2cb0; - 0x2cb2, 0x2cb2; 0x2cb4, 0x2cb4; 0x2cb6, 0x2cb6; 0x2cb8, 0x2cb8; 0x2cba, 0x2cba; - 0x2cbc, 0x2cbc; 0x2cbe, 0x2cbe; 0x2cc0, 0x2cc0; 0x2cc2, 0x2cc2; 0x2cc4, 0x2cc4; - 0x2cc6, 0x2cc6; 0x2cc8, 0x2cc8; 0x2cca, 0x2cca; 0x2ccc, 0x2ccc; 0x2cce, 0x2cce; - 0x2cd0, 0x2cd0; 0x2cd2, 0x2cd2; 0x2cd4, 0x2cd4; 0x2cd6, 0x2cd6; 0x2cd8, 0x2cd8; - 0x2cda, 0x2cda; 0x2cdc, 0x2cdc; 0x2cde, 0x2cde; 0x2ce0, 0x2ce0; 0x2ce2, 0x2ce2; - 0x2ceb, 0x2ceb; 0x2ced, 0x2ced; 0x2cf2, 0x2cf2; 0xa640, 0xa640; 0xa642, 0xa642; - 0xa644, 0xa644; 0xa646, 0xa646; 0xa648, 0xa648; 0xa64a, 0xa64a; 0xa64c, 0xa64c; - 0xa64e, 0xa64e; 0xa650, 0xa650; 0xa652, 0xa652; 0xa654, 0xa654; 0xa656, 0xa656; - 0xa658, 0xa658; 0xa65a, 0xa65a; 0xa65c, 0xa65c; 0xa65e, 0xa65e; 0xa660, 0xa660; - 0xa662, 0xa662; 0xa664, 0xa664; 0xa666, 0xa666; 0xa668, 0xa668; 0xa66a, 0xa66a; - 0xa66c, 0xa66c; 0xa680, 0xa680; 0xa682, 0xa682; 0xa684, 0xa684; 0xa686, 0xa686; - 0xa688, 0xa688; 0xa68a, 0xa68a; 0xa68c, 0xa68c; 0xa68e, 0xa68e; 0xa690, 0xa690; - 0xa692, 0xa692; 0xa694, 0xa694; 0xa696, 0xa696; 0xa698, 0xa698; 0xa69a, 0xa69a; - 0xa722, 0xa722; 0xa724, 0xa724; 0xa726, 0xa726; 0xa728, 0xa728; 0xa72a, 0xa72a; - 0xa72c, 0xa72c; 0xa72e, 0xa72e; 0xa732, 0xa732; 0xa734, 0xa734; 0xa736, 0xa736; - 0xa738, 0xa738; 0xa73a, 0xa73a; 0xa73c, 0xa73c; 0xa73e, 0xa73e; 0xa740, 0xa740; - 0xa742, 0xa742; 0xa744, 0xa744; 0xa746, 0xa746; 0xa748, 0xa748; 0xa74a, 0xa74a; - 0xa74c, 0xa74c; 0xa74e, 0xa74e; 0xa750, 0xa750; 0xa752, 0xa752; 0xa754, 0xa754; - 0xa756, 0xa756; 0xa758, 0xa758; 0xa75a, 0xa75a; 0xa75c, 0xa75c; 0xa75e, 0xa75e; - 0xa760, 0xa760; 0xa762, 0xa762; 0xa764, 0xa764; 0xa766, 0xa766; 0xa768, 0xa768; - 0xa76a, 0xa76a; 0xa76c, 0xa76c; 0xa76e, 0xa76e; 0xa779, 0xa779; 0xa77b, 0xa77b; - 0xa77d, 0xa77e; 0xa780, 0xa780; 0xa782, 0xa782; 0xa784, 0xa784; 0xa786, 0xa786; - 0xa78b, 0xa78b; 0xa78d, 0xa78d; 0xa790, 0xa790; 0xa792, 0xa792; 0xa796, 0xa796; - 0xa798, 0xa798; 0xa79a, 0xa79a; 0xa79c, 0xa79c; 0xa79e, 0xa79e; 0xa7a0, 0xa7a0; - 0xa7a2, 0xa7a2; 0xa7a4, 0xa7a4; 0xa7a6, 0xa7a6; 0xa7a8, 0xa7a8; 0xa7aa, 0xa7ae; - 0xa7b0, 0xa7b4; 0xa7b6, 0xa7b6; 0xa7b8, 0xa7b8; 0xa7ba, 0xa7ba; 0xa7bc, 0xa7bc; - 0xa7be, 0xa7be; 0xa7c0, 0xa7c0; 0xa7c2, 0xa7c2; 0xa7c4, 0xa7c7; 0xa7c9, 0xa7c9; - 0xa7d0, 0xa7d0; 0xa7d6, 0xa7d6; 0xa7d8, 0xa7d8; 0xa7f5, 0xa7f5; 0xff21, 0xff3a; - 0x10400, 0x10427; 0x104b0, 0x104d3; 0x10570, 0x1057a; 0x1057c, 0x1058a; 0x1058c, 0x10592; - 0x10594, 0x10595; 0x10c80, 0x10cb2; 0x118a0, 0x118bf; 0x16e40, 0x16e5f; 0x1d400, 0x1d419; - 0x1d434, 0x1d44d; 0x1d468, 0x1d481; 0x1d49c, 0x1d49c; 0x1d49e, 0x1d49f; 0x1d4a2, 0x1d4a2; - 0x1d4a5, 0x1d4a6; 0x1d4a9, 0x1d4ac; 0x1d4ae, 0x1d4b5; 0x1d4d0, 0x1d4e9; 0x1d504, 0x1d505; - 0x1d507, 0x1d50a; 0x1d50d, 0x1d514; 0x1d516, 0x1d51c; 0x1d538, 0x1d539; 0x1d53b, 0x1d53e; - 0x1d540, 0x1d544; 0x1d546, 0x1d546; 0x1d54a, 0x1d550; 0x1d56c, 0x1d585; 0x1d5a0, 0x1d5b9; - 0x1d5d4, 0x1d5ed; 0x1d608, 0x1d621; 0x1d63c, 0x1d655; 0x1d670, 0x1d689; 0x1d6a8, 0x1d6c0; - 0x1d6e2, 0x1d6fa; 0x1d71c, 0x1d734; 0x1d756, 0x1d76e; 0x1d790, 0x1d7a8; 0x1d7ca, 0x1d7ca; - 0x1e900, 0x1e921] + [ + (0x41, 0x5a); + (0xc0, 0xd6); + (0xd8, 0xde); + (0x100, 0x100); + (0x102, 0x102); + (0x104, 0x104); + (0x106, 0x106); + (0x108, 0x108); + (0x10a, 0x10a); + (0x10c, 0x10c); + (0x10e, 0x10e); + (0x110, 0x110); + (0x112, 0x112); + (0x114, 0x114); + (0x116, 0x116); + (0x118, 0x118); + (0x11a, 0x11a); + (0x11c, 0x11c); + (0x11e, 0x11e); + (0x120, 0x120); + (0x122, 0x122); + (0x124, 0x124); + (0x126, 0x126); + (0x128, 0x128); + (0x12a, 0x12a); + (0x12c, 0x12c); + (0x12e, 0x12e); + (0x130, 0x130); + (0x132, 0x132); + (0x134, 0x134); + (0x136, 0x136); + (0x139, 0x139); + (0x13b, 0x13b); + (0x13d, 0x13d); + (0x13f, 0x13f); + (0x141, 0x141); + (0x143, 0x143); + (0x145, 0x145); + (0x147, 0x147); + (0x14a, 0x14a); + (0x14c, 0x14c); + (0x14e, 0x14e); + (0x150, 0x150); + (0x152, 0x152); + (0x154, 0x154); + (0x156, 0x156); + (0x158, 0x158); + (0x15a, 0x15a); + (0x15c, 0x15c); + (0x15e, 0x15e); + (0x160, 0x160); + (0x162, 0x162); + (0x164, 0x164); + (0x166, 0x166); + (0x168, 0x168); + (0x16a, 0x16a); + (0x16c, 0x16c); + (0x16e, 0x16e); + (0x170, 0x170); + (0x172, 0x172); + (0x174, 0x174); + (0x176, 0x176); + (0x178, 0x179); + (0x17b, 0x17b); + (0x17d, 0x17d); + (0x181, 0x182); + (0x184, 0x184); + (0x186, 0x187); + (0x189, 0x18b); + (0x18e, 0x191); + (0x193, 0x194); + (0x196, 0x198); + (0x19c, 0x19d); + (0x19f, 0x1a0); + (0x1a2, 0x1a2); + (0x1a4, 0x1a4); + (0x1a6, 0x1a7); + (0x1a9, 0x1a9); + (0x1ac, 0x1ac); + (0x1ae, 0x1af); + (0x1b1, 0x1b3); + (0x1b5, 0x1b5); + (0x1b7, 0x1b8); + (0x1bc, 0x1bc); + (0x1c4, 0x1c4); + (0x1c7, 0x1c7); + (0x1ca, 0x1ca); + (0x1cd, 0x1cd); + (0x1cf, 0x1cf); + (0x1d1, 0x1d1); + (0x1d3, 0x1d3); + (0x1d5, 0x1d5); + (0x1d7, 0x1d7); + (0x1d9, 0x1d9); + (0x1db, 0x1db); + (0x1de, 0x1de); + (0x1e0, 0x1e0); + (0x1e2, 0x1e2); + (0x1e4, 0x1e4); + (0x1e6, 0x1e6); + (0x1e8, 0x1e8); + (0x1ea, 0x1ea); + (0x1ec, 0x1ec); + (0x1ee, 0x1ee); + (0x1f1, 0x1f1); + (0x1f4, 0x1f4); + (0x1f6, 0x1f8); + (0x1fa, 0x1fa); + (0x1fc, 0x1fc); + (0x1fe, 0x1fe); + (0x200, 0x200); + (0x202, 0x202); + (0x204, 0x204); + (0x206, 0x206); + (0x208, 0x208); + (0x20a, 0x20a); + (0x20c, 0x20c); + (0x20e, 0x20e); + (0x210, 0x210); + (0x212, 0x212); + (0x214, 0x214); + (0x216, 0x216); + (0x218, 0x218); + (0x21a, 0x21a); + (0x21c, 0x21c); + (0x21e, 0x21e); + (0x220, 0x220); + (0x222, 0x222); + (0x224, 0x224); + (0x226, 0x226); + (0x228, 0x228); + (0x22a, 0x22a); + (0x22c, 0x22c); + (0x22e, 0x22e); + (0x230, 0x230); + (0x232, 0x232); + (0x23a, 0x23b); + (0x23d, 0x23e); + (0x241, 0x241); + (0x243, 0x246); + (0x248, 0x248); + (0x24a, 0x24a); + (0x24c, 0x24c); + (0x24e, 0x24e); + (0x370, 0x370); + (0x372, 0x372); + (0x376, 0x376); + (0x37f, 0x37f); + (0x386, 0x386); + (0x388, 0x38a); + (0x38c, 0x38c); + (0x38e, 0x38f); + (0x391, 0x3a1); + (0x3a3, 0x3ab); + (0x3cf, 0x3cf); + (0x3d2, 0x3d4); + (0x3d8, 0x3d8); + (0x3da, 0x3da); + (0x3dc, 0x3dc); + (0x3de, 0x3de); + (0x3e0, 0x3e0); + (0x3e2, 0x3e2); + (0x3e4, 0x3e4); + (0x3e6, 0x3e6); + (0x3e8, 0x3e8); + (0x3ea, 0x3ea); + (0x3ec, 0x3ec); + (0x3ee, 0x3ee); + (0x3f4, 0x3f4); + (0x3f7, 0x3f7); + (0x3f9, 0x3fa); + (0x3fd, 0x42f); + (0x460, 0x460); + (0x462, 0x462); + (0x464, 0x464); + (0x466, 0x466); + (0x468, 0x468); + (0x46a, 0x46a); + (0x46c, 0x46c); + (0x46e, 0x46e); + (0x470, 0x470); + (0x472, 0x472); + (0x474, 0x474); + (0x476, 0x476); + (0x478, 0x478); + (0x47a, 0x47a); + (0x47c, 0x47c); + (0x47e, 0x47e); + (0x480, 0x480); + (0x48a, 0x48a); + (0x48c, 0x48c); + (0x48e, 0x48e); + (0x490, 0x490); + (0x492, 0x492); + (0x494, 0x494); + (0x496, 0x496); + (0x498, 0x498); + (0x49a, 0x49a); + (0x49c, 0x49c); + (0x49e, 0x49e); + (0x4a0, 0x4a0); + (0x4a2, 0x4a2); + (0x4a4, 0x4a4); + (0x4a6, 0x4a6); + (0x4a8, 0x4a8); + (0x4aa, 0x4aa); + (0x4ac, 0x4ac); + (0x4ae, 0x4ae); + (0x4b0, 0x4b0); + (0x4b2, 0x4b2); + (0x4b4, 0x4b4); + (0x4b6, 0x4b6); + (0x4b8, 0x4b8); + (0x4ba, 0x4ba); + (0x4bc, 0x4bc); + (0x4be, 0x4be); + (0x4c0, 0x4c1); + (0x4c3, 0x4c3); + (0x4c5, 0x4c5); + (0x4c7, 0x4c7); + (0x4c9, 0x4c9); + (0x4cb, 0x4cb); + (0x4cd, 0x4cd); + (0x4d0, 0x4d0); + (0x4d2, 0x4d2); + (0x4d4, 0x4d4); + (0x4d6, 0x4d6); + (0x4d8, 0x4d8); + (0x4da, 0x4da); + (0x4dc, 0x4dc); + (0x4de, 0x4de); + (0x4e0, 0x4e0); + (0x4e2, 0x4e2); + (0x4e4, 0x4e4); + (0x4e6, 0x4e6); + (0x4e8, 0x4e8); + (0x4ea, 0x4ea); + (0x4ec, 0x4ec); + (0x4ee, 0x4ee); + (0x4f0, 0x4f0); + (0x4f2, 0x4f2); + (0x4f4, 0x4f4); + (0x4f6, 0x4f6); + (0x4f8, 0x4f8); + (0x4fa, 0x4fa); + (0x4fc, 0x4fc); + (0x4fe, 0x4fe); + (0x500, 0x500); + (0x502, 0x502); + (0x504, 0x504); + (0x506, 0x506); + (0x508, 0x508); + (0x50a, 0x50a); + (0x50c, 0x50c); + (0x50e, 0x50e); + (0x510, 0x510); + (0x512, 0x512); + (0x514, 0x514); + (0x516, 0x516); + (0x518, 0x518); + (0x51a, 0x51a); + (0x51c, 0x51c); + (0x51e, 0x51e); + (0x520, 0x520); + (0x522, 0x522); + (0x524, 0x524); + (0x526, 0x526); + (0x528, 0x528); + (0x52a, 0x52a); + (0x52c, 0x52c); + (0x52e, 0x52e); + (0x531, 0x556); + (0x10a0, 0x10c5); + (0x10c7, 0x10c7); + (0x10cd, 0x10cd); + (0x13a0, 0x13f5); + (0x1c90, 0x1cba); + (0x1cbd, 0x1cbf); + (0x1e00, 0x1e00); + (0x1e02, 0x1e02); + (0x1e04, 0x1e04); + (0x1e06, 0x1e06); + (0x1e08, 0x1e08); + (0x1e0a, 0x1e0a); + (0x1e0c, 0x1e0c); + (0x1e0e, 0x1e0e); + (0x1e10, 0x1e10); + (0x1e12, 0x1e12); + (0x1e14, 0x1e14); + (0x1e16, 0x1e16); + (0x1e18, 0x1e18); + (0x1e1a, 0x1e1a); + (0x1e1c, 0x1e1c); + (0x1e1e, 0x1e1e); + (0x1e20, 0x1e20); + (0x1e22, 0x1e22); + (0x1e24, 0x1e24); + (0x1e26, 0x1e26); + (0x1e28, 0x1e28); + (0x1e2a, 0x1e2a); + (0x1e2c, 0x1e2c); + (0x1e2e, 0x1e2e); + (0x1e30, 0x1e30); + (0x1e32, 0x1e32); + (0x1e34, 0x1e34); + (0x1e36, 0x1e36); + (0x1e38, 0x1e38); + (0x1e3a, 0x1e3a); + (0x1e3c, 0x1e3c); + (0x1e3e, 0x1e3e); + (0x1e40, 0x1e40); + (0x1e42, 0x1e42); + (0x1e44, 0x1e44); + (0x1e46, 0x1e46); + (0x1e48, 0x1e48); + (0x1e4a, 0x1e4a); + (0x1e4c, 0x1e4c); + (0x1e4e, 0x1e4e); + (0x1e50, 0x1e50); + (0x1e52, 0x1e52); + (0x1e54, 0x1e54); + (0x1e56, 0x1e56); + (0x1e58, 0x1e58); + (0x1e5a, 0x1e5a); + (0x1e5c, 0x1e5c); + (0x1e5e, 0x1e5e); + (0x1e60, 0x1e60); + (0x1e62, 0x1e62); + (0x1e64, 0x1e64); + (0x1e66, 0x1e66); + (0x1e68, 0x1e68); + (0x1e6a, 0x1e6a); + (0x1e6c, 0x1e6c); + (0x1e6e, 0x1e6e); + (0x1e70, 0x1e70); + (0x1e72, 0x1e72); + (0x1e74, 0x1e74); + (0x1e76, 0x1e76); + (0x1e78, 0x1e78); + (0x1e7a, 0x1e7a); + (0x1e7c, 0x1e7c); + (0x1e7e, 0x1e7e); + (0x1e80, 0x1e80); + (0x1e82, 0x1e82); + (0x1e84, 0x1e84); + (0x1e86, 0x1e86); + (0x1e88, 0x1e88); + (0x1e8a, 0x1e8a); + (0x1e8c, 0x1e8c); + (0x1e8e, 0x1e8e); + (0x1e90, 0x1e90); + (0x1e92, 0x1e92); + (0x1e94, 0x1e94); + (0x1e9e, 0x1e9e); + (0x1ea0, 0x1ea0); + (0x1ea2, 0x1ea2); + (0x1ea4, 0x1ea4); + (0x1ea6, 0x1ea6); + (0x1ea8, 0x1ea8); + (0x1eaa, 0x1eaa); + (0x1eac, 0x1eac); + (0x1eae, 0x1eae); + (0x1eb0, 0x1eb0); + (0x1eb2, 0x1eb2); + (0x1eb4, 0x1eb4); + (0x1eb6, 0x1eb6); + (0x1eb8, 0x1eb8); + (0x1eba, 0x1eba); + (0x1ebc, 0x1ebc); + (0x1ebe, 0x1ebe); + (0x1ec0, 0x1ec0); + (0x1ec2, 0x1ec2); + (0x1ec4, 0x1ec4); + (0x1ec6, 0x1ec6); + (0x1ec8, 0x1ec8); + (0x1eca, 0x1eca); + (0x1ecc, 0x1ecc); + (0x1ece, 0x1ece); + (0x1ed0, 0x1ed0); + (0x1ed2, 0x1ed2); + (0x1ed4, 0x1ed4); + (0x1ed6, 0x1ed6); + (0x1ed8, 0x1ed8); + (0x1eda, 0x1eda); + (0x1edc, 0x1edc); + (0x1ede, 0x1ede); + (0x1ee0, 0x1ee0); + (0x1ee2, 0x1ee2); + (0x1ee4, 0x1ee4); + (0x1ee6, 0x1ee6); + (0x1ee8, 0x1ee8); + (0x1eea, 0x1eea); + (0x1eec, 0x1eec); + (0x1eee, 0x1eee); + (0x1ef0, 0x1ef0); + (0x1ef2, 0x1ef2); + (0x1ef4, 0x1ef4); + (0x1ef6, 0x1ef6); + (0x1ef8, 0x1ef8); + (0x1efa, 0x1efa); + (0x1efc, 0x1efc); + (0x1efe, 0x1efe); + (0x1f08, 0x1f0f); + (0x1f18, 0x1f1d); + (0x1f28, 0x1f2f); + (0x1f38, 0x1f3f); + (0x1f48, 0x1f4d); + (0x1f59, 0x1f59); + (0x1f5b, 0x1f5b); + (0x1f5d, 0x1f5d); + (0x1f5f, 0x1f5f); + (0x1f68, 0x1f6f); + (0x1fb8, 0x1fbb); + (0x1fc8, 0x1fcb); + (0x1fd8, 0x1fdb); + (0x1fe8, 0x1fec); + (0x1ff8, 0x1ffb); + (0x2102, 0x2102); + (0x2107, 0x2107); + (0x210b, 0x210d); + (0x2110, 0x2112); + (0x2115, 0x2115); + (0x2119, 0x211d); + (0x2124, 0x2124); + (0x2126, 0x2126); + (0x2128, 0x2128); + (0x212a, 0x212d); + (0x2130, 0x2133); + (0x213e, 0x213f); + (0x2145, 0x2145); + (0x2183, 0x2183); + (0x2c00, 0x2c2f); + (0x2c60, 0x2c60); + (0x2c62, 0x2c64); + (0x2c67, 0x2c67); + (0x2c69, 0x2c69); + (0x2c6b, 0x2c6b); + (0x2c6d, 0x2c70); + (0x2c72, 0x2c72); + (0x2c75, 0x2c75); + (0x2c7e, 0x2c80); + (0x2c82, 0x2c82); + (0x2c84, 0x2c84); + (0x2c86, 0x2c86); + (0x2c88, 0x2c88); + (0x2c8a, 0x2c8a); + (0x2c8c, 0x2c8c); + (0x2c8e, 0x2c8e); + (0x2c90, 0x2c90); + (0x2c92, 0x2c92); + (0x2c94, 0x2c94); + (0x2c96, 0x2c96); + (0x2c98, 0x2c98); + (0x2c9a, 0x2c9a); + (0x2c9c, 0x2c9c); + (0x2c9e, 0x2c9e); + (0x2ca0, 0x2ca0); + (0x2ca2, 0x2ca2); + (0x2ca4, 0x2ca4); + (0x2ca6, 0x2ca6); + (0x2ca8, 0x2ca8); + (0x2caa, 0x2caa); + (0x2cac, 0x2cac); + (0x2cae, 0x2cae); + (0x2cb0, 0x2cb0); + (0x2cb2, 0x2cb2); + (0x2cb4, 0x2cb4); + (0x2cb6, 0x2cb6); + (0x2cb8, 0x2cb8); + (0x2cba, 0x2cba); + (0x2cbc, 0x2cbc); + (0x2cbe, 0x2cbe); + (0x2cc0, 0x2cc0); + (0x2cc2, 0x2cc2); + (0x2cc4, 0x2cc4); + (0x2cc6, 0x2cc6); + (0x2cc8, 0x2cc8); + (0x2cca, 0x2cca); + (0x2ccc, 0x2ccc); + (0x2cce, 0x2cce); + (0x2cd0, 0x2cd0); + (0x2cd2, 0x2cd2); + (0x2cd4, 0x2cd4); + (0x2cd6, 0x2cd6); + (0x2cd8, 0x2cd8); + (0x2cda, 0x2cda); + (0x2cdc, 0x2cdc); + (0x2cde, 0x2cde); + (0x2ce0, 0x2ce0); + (0x2ce2, 0x2ce2); + (0x2ceb, 0x2ceb); + (0x2ced, 0x2ced); + (0x2cf2, 0x2cf2); + (0xa640, 0xa640); + (0xa642, 0xa642); + (0xa644, 0xa644); + (0xa646, 0xa646); + (0xa648, 0xa648); + (0xa64a, 0xa64a); + (0xa64c, 0xa64c); + (0xa64e, 0xa64e); + (0xa650, 0xa650); + (0xa652, 0xa652); + (0xa654, 0xa654); + (0xa656, 0xa656); + (0xa658, 0xa658); + (0xa65a, 0xa65a); + (0xa65c, 0xa65c); + (0xa65e, 0xa65e); + (0xa660, 0xa660); + (0xa662, 0xa662); + (0xa664, 0xa664); + (0xa666, 0xa666); + (0xa668, 0xa668); + (0xa66a, 0xa66a); + (0xa66c, 0xa66c); + (0xa680, 0xa680); + (0xa682, 0xa682); + (0xa684, 0xa684); + (0xa686, 0xa686); + (0xa688, 0xa688); + (0xa68a, 0xa68a); + (0xa68c, 0xa68c); + (0xa68e, 0xa68e); + (0xa690, 0xa690); + (0xa692, 0xa692); + (0xa694, 0xa694); + (0xa696, 0xa696); + (0xa698, 0xa698); + (0xa69a, 0xa69a); + (0xa722, 0xa722); + (0xa724, 0xa724); + (0xa726, 0xa726); + (0xa728, 0xa728); + (0xa72a, 0xa72a); + (0xa72c, 0xa72c); + (0xa72e, 0xa72e); + (0xa732, 0xa732); + (0xa734, 0xa734); + (0xa736, 0xa736); + (0xa738, 0xa738); + (0xa73a, 0xa73a); + (0xa73c, 0xa73c); + (0xa73e, 0xa73e); + (0xa740, 0xa740); + (0xa742, 0xa742); + (0xa744, 0xa744); + (0xa746, 0xa746); + (0xa748, 0xa748); + (0xa74a, 0xa74a); + (0xa74c, 0xa74c); + (0xa74e, 0xa74e); + (0xa750, 0xa750); + (0xa752, 0xa752); + (0xa754, 0xa754); + (0xa756, 0xa756); + (0xa758, 0xa758); + (0xa75a, 0xa75a); + (0xa75c, 0xa75c); + (0xa75e, 0xa75e); + (0xa760, 0xa760); + (0xa762, 0xa762); + (0xa764, 0xa764); + (0xa766, 0xa766); + (0xa768, 0xa768); + (0xa76a, 0xa76a); + (0xa76c, 0xa76c); + (0xa76e, 0xa76e); + (0xa779, 0xa779); + (0xa77b, 0xa77b); + (0xa77d, 0xa77e); + (0xa780, 0xa780); + (0xa782, 0xa782); + (0xa784, 0xa784); + (0xa786, 0xa786); + (0xa78b, 0xa78b); + (0xa78d, 0xa78d); + (0xa790, 0xa790); + (0xa792, 0xa792); + (0xa796, 0xa796); + (0xa798, 0xa798); + (0xa79a, 0xa79a); + (0xa79c, 0xa79c); + (0xa79e, 0xa79e); + (0xa7a0, 0xa7a0); + (0xa7a2, 0xa7a2); + (0xa7a4, 0xa7a4); + (0xa7a6, 0xa7a6); + (0xa7a8, 0xa7a8); + (0xa7aa, 0xa7ae); + (0xa7b0, 0xa7b4); + (0xa7b6, 0xa7b6); + (0xa7b8, 0xa7b8); + (0xa7ba, 0xa7ba); + (0xa7bc, 0xa7bc); + (0xa7be, 0xa7be); + (0xa7c0, 0xa7c0); + (0xa7c2, 0xa7c2); + (0xa7c4, 0xa7c7); + (0xa7c9, 0xa7c9); + (0xa7d0, 0xa7d0); + (0xa7d6, 0xa7d6); + (0xa7d8, 0xa7d8); + (0xa7f5, 0xa7f5); + (0xff21, 0xff3a); + (0x10400, 0x10427); + (0x104b0, 0x104d3); + (0x10570, 0x1057a); + (0x1057c, 0x1058a); + (0x1058c, 0x10592); + (0x10594, 0x10595); + (0x10c80, 0x10cb2); + (0x118a0, 0x118bf); + (0x16e40, 0x16e5f); + (0x1d400, 0x1d419); + (0x1d434, 0x1d44d); + (0x1d468, 0x1d481); + (0x1d49c, 0x1d49c); + (0x1d49e, 0x1d49f); + (0x1d4a2, 0x1d4a2); + (0x1d4a5, 0x1d4a6); + (0x1d4a9, 0x1d4ac); + (0x1d4ae, 0x1d4b5); + (0x1d4d0, 0x1d4e9); + (0x1d504, 0x1d505); + (0x1d507, 0x1d50a); + (0x1d50d, 0x1d514); + (0x1d516, 0x1d51c); + (0x1d538, 0x1d539); + (0x1d53b, 0x1d53e); + (0x1d540, 0x1d544); + (0x1d546, 0x1d546); + (0x1d54a, 0x1d550); + (0x1d56c, 0x1d585); + (0x1d5a0, 0x1d5b9); + (0x1d5d4, 0x1d5ed); + (0x1d608, 0x1d621); + (0x1d63c, 0x1d655); + (0x1d670, 0x1d689); + (0x1d6a8, 0x1d6c0); + (0x1d6e2, 0x1d6fa); + (0x1d71c, 0x1d734); + (0x1d756, 0x1d76e); + (0x1d790, 0x1d7a8); + (0x1d7ca, 0x1d7ca); + (0x1e900, 0x1e921); + ] let mc = - [0x903, 0x903; 0x93b, 0x93b; 0x93e, 0x940; 0x949, 0x94c; 0x94e, 0x94f; - 0x982, 0x983; 0x9be, 0x9be; 0x9be, 0x9c0; 0x9bf, 0x9c0; 0x9c7, 0x9c8; - 0x9cb, 0x9cc; 0x9d7, 0x9d7; 0xa03, 0xa03; 0xa3e, 0xa40; 0xa83, 0xa83; - 0xabe, 0xac0; 0xac9, 0xac9; 0xacb, 0xacc; 0xb02, 0xb03; 0xb3e, 0xb3e; - 0xb40, 0xb40; 0xb47, 0xb48; 0xb4b, 0xb4c; 0xb57, 0xb57; 0xbbe, 0xbbe; - 0xbbe, 0xbbf; 0xbbf, 0xbbf; 0xbc1, 0xbc2; 0xbc6, 0xbc8; 0xbca, 0xbcc; - 0xbd7, 0xbd7; 0xc01, 0xc03; 0xc41, 0xc44; 0xc82, 0xc83; 0xcbe, 0xcbe; - 0xcc0, 0xcc1; 0xcc0, 0xcc4; 0xcc2, 0xcc2; 0xcc3, 0xcc4; 0xcc7, 0xcc8; - 0xcca, 0xccb; 0xcd5, 0xcd6; 0xd02, 0xd03; 0xd3e, 0xd3e; 0xd3e, 0xd40; - 0xd3f, 0xd40; 0xd46, 0xd48; 0xd4a, 0xd4c; 0xd57, 0xd57; 0xd82, 0xd83; - 0xdcf, 0xdcf; 0xdcf, 0xdd1; 0xdd0, 0xdd1; 0xdd8, 0xdde; 0xdd8, 0xddf; - 0xddf, 0xddf; 0xdf2, 0xdf3; 0xf3e, 0xf3f; 0xf7f, 0xf7f; 0x102b, 0x102c; - 0x1031, 0x1031; 0x1038, 0x1038; 0x103b, 0x103c; 0x1056, 0x1057; 0x1062, 0x1064; - 0x1063, 0x1064; 0x1067, 0x106d; 0x1069, 0x106d; 0x1083, 0x1084; 0x1087, 0x108c; - 0x108f, 0x108f; 0x109a, 0x109b; 0x109a, 0x109c; 0x1715, 0x1715; 0x1734, 0x1734; - 0x17b6, 0x17b6; 0x17be, 0x17c5; 0x17c7, 0x17c8; 0x1923, 0x1926; 0x1929, 0x192b; - 0x1930, 0x1931; 0x1933, 0x1938; 0x1a19, 0x1a1a; 0x1a55, 0x1a55; 0x1a57, 0x1a57; - 0x1a61, 0x1a61; 0x1a63, 0x1a64; 0x1a6d, 0x1a72; 0x1b04, 0x1b04; 0x1b35, 0x1b35; - 0x1b3b, 0x1b3b; 0x1b3d, 0x1b41; 0x1b43, 0x1b43; 0x1b43, 0x1b44; 0x1b44, 0x1b44; - 0x1b82, 0x1b82; 0x1ba1, 0x1ba1; 0x1ba6, 0x1ba7; 0x1baa, 0x1baa; 0x1be7, 0x1be7; - 0x1bea, 0x1bec; 0x1bee, 0x1bee; 0x1bf2, 0x1bf3; 0x1c24, 0x1c2b; 0x1c34, 0x1c35; - 0x1ce1, 0x1ce1; 0x1cf7, 0x1cf7; 0x302e, 0x302f; 0xa823, 0xa824; 0xa827, 0xa827; - 0xa880, 0xa881; 0xa8b4, 0xa8c3; 0xa952, 0xa952; 0xa952, 0xa953; 0xa953, 0xa953; - 0xa983, 0xa983; 0xa9b4, 0xa9b5; 0xa9ba, 0xa9bb; 0xa9be, 0xa9bf; 0xa9be, 0xa9c0; - 0xa9c0, 0xa9c0; 0xaa2f, 0xaa30; 0xaa33, 0xaa34; 0xaa4d, 0xaa4d; 0xaa7b, 0xaa7b; - 0xaa7d, 0xaa7d; 0xaaeb, 0xaaeb; 0xaaee, 0xaaef; 0xaaf5, 0xaaf5; 0xabe3, 0xabe4; - 0xabe6, 0xabe7; 0xabe9, 0xabea; 0xabec, 0xabec; 0x11000, 0x11000; 0x11002, 0x11002; - 0x11082, 0x11082; 0x110b0, 0x110b2; 0x110b7, 0x110b8; 0x1112c, 0x1112c; 0x11145, 0x11146; - 0x11182, 0x11182; 0x111b3, 0x111b5; 0x111bf, 0x111bf; 0x111bf, 0x111c0; 0x111c0, 0x111c0; - 0x111ce, 0x111ce; 0x1122c, 0x1122e; 0x11232, 0x11233; 0x11235, 0x11235; 0x112e0, 0x112e2; - 0x11302, 0x11303; 0x1133e, 0x1133e; 0x1133e, 0x1133f; 0x1133f, 0x1133f; 0x11341, 0x11344; - 0x11347, 0x11348; 0x1134b, 0x1134c; 0x1134b, 0x1134d; 0x1134d, 0x1134d; 0x11357, 0x11357; - 0x11362, 0x11363; 0x11435, 0x11437; 0x11440, 0x11441; 0x11445, 0x11445; 0x114b0, 0x114b0; - 0x114b0, 0x114b2; 0x114b1, 0x114b2; 0x114b9, 0x114b9; 0x114bb, 0x114bc; 0x114bb, 0x114be; - 0x114bd, 0x114bd; 0x114be, 0x114be; 0x114c1, 0x114c1; 0x115af, 0x115af; 0x115af, 0x115b1; - 0x115b0, 0x115b1; 0x115b8, 0x115bb; 0x115be, 0x115be; 0x11630, 0x11632; 0x1163b, 0x1163c; - 0x1163e, 0x1163e; 0x116ac, 0x116ac; 0x116ae, 0x116af; 0x116b6, 0x116b6; 0x11720, 0x11721; - 0x11726, 0x11726; 0x1182c, 0x1182e; 0x11838, 0x11838; 0x11930, 0x11930; 0x11930, 0x11935; - 0x11931, 0x11935; 0x11937, 0x11938; 0x1193d, 0x1193d; 0x11940, 0x11940; 0x11942, 0x11942; - 0x119d1, 0x119d3; 0x119dc, 0x119df; 0x119e4, 0x119e4; 0x11a39, 0x11a39; 0x11a57, 0x11a58; - 0x11a97, 0x11a97; 0x11c2f, 0x11c2f; 0x11c3e, 0x11c3e; 0x11ca9, 0x11ca9; 0x11cb1, 0x11cb1; - 0x11cb4, 0x11cb4; 0x11d8a, 0x11d8e; 0x11d93, 0x11d94; 0x11d96, 0x11d96; 0x11ef5, 0x11ef6; - 0x16f51, 0x16f87; 0x16ff0, 0x16ff1; 0x1d165, 0x1d165; 0x1d165, 0x1d166; 0x1d166, 0x1d166; - 0x1d16e, 0x1d172; 0x1d16d, 0x1d172; 0x1d16d, 0x1d16d] + [ + (0x903, 0x903); + (0x93b, 0x93b); + (0x93e, 0x940); + (0x949, 0x94c); + (0x94e, 0x94f); + (0x982, 0x983); + (0x9be, 0x9be); + (0x9be, 0x9c0); + (0x9bf, 0x9c0); + (0x9c7, 0x9c8); + (0x9cb, 0x9cc); + (0x9d7, 0x9d7); + (0xa03, 0xa03); + (0xa3e, 0xa40); + (0xa83, 0xa83); + (0xabe, 0xac0); + (0xac9, 0xac9); + (0xacb, 0xacc); + (0xb02, 0xb03); + (0xb3e, 0xb3e); + (0xb40, 0xb40); + (0xb47, 0xb48); + (0xb4b, 0xb4c); + (0xb57, 0xb57); + (0xbbe, 0xbbe); + (0xbbe, 0xbbf); + (0xbbf, 0xbbf); + (0xbc1, 0xbc2); + (0xbc6, 0xbc8); + (0xbca, 0xbcc); + (0xbd7, 0xbd7); + (0xc01, 0xc03); + (0xc41, 0xc44); + (0xc82, 0xc83); + (0xcbe, 0xcbe); + (0xcc0, 0xcc1); + (0xcc0, 0xcc4); + (0xcc2, 0xcc2); + (0xcc3, 0xcc4); + (0xcc7, 0xcc8); + (0xcca, 0xccb); + (0xcd5, 0xcd6); + (0xd02, 0xd03); + (0xd3e, 0xd3e); + (0xd3e, 0xd40); + (0xd3f, 0xd40); + (0xd46, 0xd48); + (0xd4a, 0xd4c); + (0xd57, 0xd57); + (0xd82, 0xd83); + (0xdcf, 0xdcf); + (0xdcf, 0xdd1); + (0xdd0, 0xdd1); + (0xdd8, 0xdde); + (0xdd8, 0xddf); + (0xddf, 0xddf); + (0xdf2, 0xdf3); + (0xf3e, 0xf3f); + (0xf7f, 0xf7f); + (0x102b, 0x102c); + (0x1031, 0x1031); + (0x1038, 0x1038); + (0x103b, 0x103c); + (0x1056, 0x1057); + (0x1062, 0x1064); + (0x1063, 0x1064); + (0x1067, 0x106d); + (0x1069, 0x106d); + (0x1083, 0x1084); + (0x1087, 0x108c); + (0x108f, 0x108f); + (0x109a, 0x109b); + (0x109a, 0x109c); + (0x1715, 0x1715); + (0x1734, 0x1734); + (0x17b6, 0x17b6); + (0x17be, 0x17c5); + (0x17c7, 0x17c8); + (0x1923, 0x1926); + (0x1929, 0x192b); + (0x1930, 0x1931); + (0x1933, 0x1938); + (0x1a19, 0x1a1a); + (0x1a55, 0x1a55); + (0x1a57, 0x1a57); + (0x1a61, 0x1a61); + (0x1a63, 0x1a64); + (0x1a6d, 0x1a72); + (0x1b04, 0x1b04); + (0x1b35, 0x1b35); + (0x1b3b, 0x1b3b); + (0x1b3d, 0x1b41); + (0x1b43, 0x1b43); + (0x1b43, 0x1b44); + (0x1b44, 0x1b44); + (0x1b82, 0x1b82); + (0x1ba1, 0x1ba1); + (0x1ba6, 0x1ba7); + (0x1baa, 0x1baa); + (0x1be7, 0x1be7); + (0x1bea, 0x1bec); + (0x1bee, 0x1bee); + (0x1bf2, 0x1bf3); + (0x1c24, 0x1c2b); + (0x1c34, 0x1c35); + (0x1ce1, 0x1ce1); + (0x1cf7, 0x1cf7); + (0x302e, 0x302f); + (0xa823, 0xa824); + (0xa827, 0xa827); + (0xa880, 0xa881); + (0xa8b4, 0xa8c3); + (0xa952, 0xa952); + (0xa952, 0xa953); + (0xa953, 0xa953); + (0xa983, 0xa983); + (0xa9b4, 0xa9b5); + (0xa9ba, 0xa9bb); + (0xa9be, 0xa9bf); + (0xa9be, 0xa9c0); + (0xa9c0, 0xa9c0); + (0xaa2f, 0xaa30); + (0xaa33, 0xaa34); + (0xaa4d, 0xaa4d); + (0xaa7b, 0xaa7b); + (0xaa7d, 0xaa7d); + (0xaaeb, 0xaaeb); + (0xaaee, 0xaaef); + (0xaaf5, 0xaaf5); + (0xabe3, 0xabe4); + (0xabe6, 0xabe7); + (0xabe9, 0xabea); + (0xabec, 0xabec); + (0x11000, 0x11000); + (0x11002, 0x11002); + (0x11082, 0x11082); + (0x110b0, 0x110b2); + (0x110b7, 0x110b8); + (0x1112c, 0x1112c); + (0x11145, 0x11146); + (0x11182, 0x11182); + (0x111b3, 0x111b5); + (0x111bf, 0x111bf); + (0x111bf, 0x111c0); + (0x111c0, 0x111c0); + (0x111ce, 0x111ce); + (0x1122c, 0x1122e); + (0x11232, 0x11233); + (0x11235, 0x11235); + (0x112e0, 0x112e2); + (0x11302, 0x11303); + (0x1133e, 0x1133e); + (0x1133e, 0x1133f); + (0x1133f, 0x1133f); + (0x11341, 0x11344); + (0x11347, 0x11348); + (0x1134b, 0x1134c); + (0x1134b, 0x1134d); + (0x1134d, 0x1134d); + (0x11357, 0x11357); + (0x11362, 0x11363); + (0x11435, 0x11437); + (0x11440, 0x11441); + (0x11445, 0x11445); + (0x114b0, 0x114b0); + (0x114b0, 0x114b2); + (0x114b1, 0x114b2); + (0x114b9, 0x114b9); + (0x114bb, 0x114bc); + (0x114bb, 0x114be); + (0x114bd, 0x114bd); + (0x114be, 0x114be); + (0x114c1, 0x114c1); + (0x115af, 0x115af); + (0x115af, 0x115b1); + (0x115b0, 0x115b1); + (0x115b8, 0x115bb); + (0x115be, 0x115be); + (0x11630, 0x11632); + (0x1163b, 0x1163c); + (0x1163e, 0x1163e); + (0x116ac, 0x116ac); + (0x116ae, 0x116af); + (0x116b6, 0x116b6); + (0x11720, 0x11721); + (0x11726, 0x11726); + (0x1182c, 0x1182e); + (0x11838, 0x11838); + (0x11930, 0x11930); + (0x11930, 0x11935); + (0x11931, 0x11935); + (0x11937, 0x11938); + (0x1193d, 0x1193d); + (0x11940, 0x11940); + (0x11942, 0x11942); + (0x119d1, 0x119d3); + (0x119dc, 0x119df); + (0x119e4, 0x119e4); + (0x11a39, 0x11a39); + (0x11a57, 0x11a58); + (0x11a97, 0x11a97); + (0x11c2f, 0x11c2f); + (0x11c3e, 0x11c3e); + (0x11ca9, 0x11ca9); + (0x11cb1, 0x11cb1); + (0x11cb4, 0x11cb4); + (0x11d8a, 0x11d8e); + (0x11d93, 0x11d94); + (0x11d96, 0x11d96); + (0x11ef5, 0x11ef6); + (0x16f51, 0x16f87); + (0x16ff0, 0x16ff1); + (0x1d165, 0x1d165); + (0x1d165, 0x1d166); + (0x1d166, 0x1d166); + (0x1d16e, 0x1d172); + (0x1d16d, 0x1d172); + (0x1d16d, 0x1d16d); + ] let me = - [0xa670, 0xa672; 0x20e2, 0x20e4; 0x20dd, 0x20e0; 0x1abe, 0x1abe; 0x488, 0x489] + [ + (0xa670, 0xa672); + (0x20e2, 0x20e4); + (0x20dd, 0x20e0); + (0x1abe, 0x1abe); + (0x488, 0x489); + ] let mn = - [0x300, 0x34e; 0x300, 0x36f; 0x345, 0x345; 0x34f, 0x34f; 0x350, 0x357; - 0x35d, 0x362; 0x483, 0x487; 0x591, 0x5a1; 0x591, 0x5bd; 0x5a3, 0x5bd; - 0x5b0, 0x5bd; 0x5bf, 0x5bf; 0x5c1, 0x5c2; 0x5c4, 0x5c4; 0x5c4, 0x5c5; - 0x5c7, 0x5c7; 0x610, 0x61a; 0x64b, 0x652; 0x64b, 0x657; 0x64b, 0x65f; - 0x657, 0x658; 0x659, 0x65f; 0x670, 0x670; 0x6d6, 0x6dc; 0x6df, 0x6e0; - 0x6df, 0x6e4; 0x6e1, 0x6e4; 0x6e7, 0x6e8; 0x6ea, 0x6ec; 0x6ea, 0x6ed; - 0x6ed, 0x6ed; 0x711, 0x711; 0x730, 0x73f; 0x730, 0x74a; 0x7a6, 0x7b0; - 0x7eb, 0x7f3; 0x7fd, 0x7fd; 0x816, 0x817; 0x816, 0x819; 0x818, 0x819; - 0x81b, 0x823; 0x825, 0x827; 0x829, 0x82c; 0x829, 0x82d; 0x859, 0x85b; - 0x898, 0x89f; 0x8ca, 0x8d2; 0x8ca, 0x8e1; 0x8d4, 0x8df; 0x8e3, 0x8e9; - 0x8e3, 0x8fe; 0x8e3, 0x902; 0x8f0, 0x902; 0x93a, 0x93a; 0x93c, 0x93c; - 0x941, 0x948; 0x94d, 0x94d; 0x951, 0x954; 0x951, 0x957; 0x955, 0x957; - 0x962, 0x963; 0x981, 0x981; 0x9bc, 0x9bc; 0x9c1, 0x9c4; 0x9cd, 0x9cd; - 0x9e2, 0x9e3; 0x9fe, 0x9fe; 0xa01, 0xa02; 0xa3c, 0xa3c; 0xa41, 0xa42; - 0xa47, 0xa48; 0xa4b, 0xa4c; 0xa4b, 0xa4d; 0xa4d, 0xa4d; 0xa51, 0xa51; - 0xa70, 0xa71; 0xa75, 0xa75; 0xa81, 0xa82; 0xabc, 0xabc; 0xac1, 0xac5; - 0xac7, 0xac8; 0xacd, 0xacd; 0xae2, 0xae3; 0xafa, 0xafc; 0xafa, 0xaff; - 0xafd, 0xaff; 0xb01, 0xb01; 0xb3c, 0xb3c; 0xb3f, 0xb3f; 0xb41, 0xb44; - 0xb4d, 0xb4d; 0xb55, 0xb55; 0xb55, 0xb56; 0xb56, 0xb56; 0xb62, 0xb63; - 0xb82, 0xb82; 0xbc0, 0xbc0; 0xbcd, 0xbcd; 0xc00, 0xc00; 0xc04, 0xc04; - 0xc3c, 0xc3c; 0xc3e, 0xc40; 0xc46, 0xc48; 0xc4a, 0xc4c; 0xc4a, 0xc4d; - 0xc4d, 0xc4d; 0xc55, 0xc56; 0xc62, 0xc63; 0xc81, 0xc81; 0xcbc, 0xcbc; - 0xcbf, 0xcbf; 0xcc6, 0xcc6; 0xccc, 0xccc; 0xccc, 0xccd; 0xccd, 0xccd; - 0xce2, 0xce3; 0xd00, 0xd01; 0xd3b, 0xd3c; 0xd41, 0xd44; 0xd4d, 0xd4d; - 0xd62, 0xd63; 0xd81, 0xd81; 0xdca, 0xdca; 0xdd2, 0xdd4; 0xdd6, 0xdd6; - 0xe31, 0xe31; 0xe34, 0xe3a; 0xe3a, 0xe3a; 0xe47, 0xe4c; 0xe47, 0xe4e; - 0xe4d, 0xe4d; 0xe4e, 0xe4e; 0xeb1, 0xeb1; 0xeb4, 0xeb9; 0xeb4, 0xebc; - 0xeba, 0xeba; 0xebb, 0xebc; 0xec8, 0xecc; 0xec8, 0xecd; 0xecd, 0xecd; - 0xf18, 0xf19; 0xf35, 0xf35; 0xf37, 0xf37; 0xf39, 0xf39; 0xf71, 0xf7e; - 0xf77, 0xf77; 0xf79, 0xf79; 0xf80, 0xf81; 0xf80, 0xf84; 0xf82, 0xf84; - 0xf84, 0xf84; 0xf86, 0xf87; 0xf8d, 0xf97; 0xf99, 0xfbc; 0xfc6, 0xfc6; - 0x102d, 0x1030; 0x1032, 0x1036; 0x1032, 0x1037; 0x1037, 0x1037; 0x1039, 0x103a; - 0x103d, 0x103e; 0x1058, 0x1059; 0x105e, 0x1060; 0x1071, 0x1074; 0x1082, 0x1082; - 0x1085, 0x1086; 0x108d, 0x108d; 0x109d, 0x109d; 0x135d, 0x135f; 0x1712, 0x1713; - 0x1712, 0x1714; 0x1714, 0x1714; 0x1732, 0x1733; 0x1752, 0x1753; 0x1772, 0x1773; - 0x17b4, 0x17b5; 0x17b7, 0x17bd; 0x17c6, 0x17c6; 0x17c9, 0x17d3; 0x17d2, 0x17d2; - 0x17dd, 0x17dd; 0x180b, 0x180d; 0x180f, 0x180f; 0x1885, 0x1886; 0x18a9, 0x18a9; - 0x1920, 0x1922; 0x1927, 0x1928; 0x1932, 0x1932; 0x1939, 0x193b; 0x1a17, 0x1a18; - 0x1a1b, 0x1a1b; 0x1a56, 0x1a56; 0x1a58, 0x1a5e; 0x1a60, 0x1a60; 0x1a62, 0x1a62; - 0x1a65, 0x1a6c; 0x1a73, 0x1a74; 0x1a73, 0x1a7c; 0x1a75, 0x1a7c; 0x1a7f, 0x1a7f; - 0x1ab0, 0x1abd; 0x1abf, 0x1ac0; 0x1abf, 0x1ace; 0x1ac1, 0x1acb; 0x1acc, 0x1ace; - 0x1b00, 0x1b03; 0x1b34, 0x1b34; 0x1b36, 0x1b3a; 0x1b3c, 0x1b3c; 0x1b42, 0x1b42; - 0x1b6b, 0x1b73; 0x1b80, 0x1b81; 0x1ba2, 0x1ba5; 0x1ba8, 0x1ba9; 0x1bab, 0x1bab; - 0x1bab, 0x1bad; 0x1bac, 0x1bad; 0x1be6, 0x1be6; 0x1be8, 0x1be9; 0x1bed, 0x1bed; - 0x1bef, 0x1bf1; 0x1c2c, 0x1c33; 0x1c36, 0x1c36; 0x1c36, 0x1c37; 0x1cd0, 0x1cd2; - 0x1cd4, 0x1ce0; 0x1ce2, 0x1ce8; 0x1ced, 0x1ced; 0x1cf4, 0x1cf4; 0x1cf8, 0x1cf9; - 0x1dc0, 0x1dff; 0x1dc4, 0x1dcf; 0x1de7, 0x1df4; 0x1df5, 0x1dff; 0x20d0, 0x20dc; - 0x20e1, 0x20e1; 0x20e5, 0x20e6; 0x20e5, 0x20f0; 0x20eb, 0x20ef; 0x2cef, 0x2cf1; - 0x2d7f, 0x2d7f; 0x2de0, 0x2dff; 0x302a, 0x302d; 0x3099, 0x309a; 0xa66f, 0xa66f; - 0xa674, 0xa67b; 0xa674, 0xa67d; 0xa67c, 0xa67d; 0xa69e, 0xa69f; 0xa6f0, 0xa6f1; - 0xa802, 0xa802; 0xa806, 0xa806; 0xa80b, 0xa80b; 0xa825, 0xa826; 0xa82c, 0xa82c; - 0xa8c4, 0xa8c4; 0xa8c4, 0xa8c5; 0xa8c5, 0xa8c5; 0xa8e0, 0xa8f1; 0xa8ff, 0xa8ff; - 0xa926, 0xa92a; 0xa926, 0xa92d; 0xa92b, 0xa92d; 0xa947, 0xa951; 0xa980, 0xa982; - 0xa9b3, 0xa9b3; 0xa9b6, 0xa9b9; 0xa9bc, 0xa9bd; 0xa9e5, 0xa9e5; 0xaa29, 0xaa2e; - 0xaa31, 0xaa32; 0xaa35, 0xaa36; 0xaa43, 0xaa43; 0xaa4c, 0xaa4c; 0xaa7c, 0xaa7c; - 0xaab0, 0xaab0; 0xaab2, 0xaab4; 0xaab7, 0xaab8; 0xaabe, 0xaabe; 0xaabe, 0xaabf; - 0xaabf, 0xaabf; 0xaac1, 0xaac1; 0xaaec, 0xaaed; 0xaaf6, 0xaaf6; 0xabe5, 0xabe5; - 0xabe8, 0xabe8; 0xabed, 0xabed; 0xfb1e, 0xfb1e; 0xfe00, 0xfe0f; 0xfe20, 0xfe2f; - 0x101fd, 0x101fd; 0x102e0, 0x102e0; 0x10376, 0x1037a; 0x10a01, 0x10a03; 0x10a05, 0x10a06; - 0x10a0c, 0x10a0f; 0x10a38, 0x10a3a; 0x10a3f, 0x10a3f; 0x10ae5, 0x10ae6; 0x10d24, 0x10d27; - 0x10eab, 0x10eac; 0x10f46, 0x10f50; 0x10f82, 0x10f85; 0x11001, 0x11001; 0x11038, 0x11045; - 0x11038, 0x11046; 0x11046, 0x11046; 0x11070, 0x11070; 0x11073, 0x11074; 0x1107f, 0x1107f; - 0x1107f, 0x11081; 0x110b3, 0x110b6; 0x110b9, 0x110b9; 0x110b9, 0x110ba; 0x110c2, 0x110c2; - 0x11100, 0x11102; 0x11127, 0x1112b; 0x1112d, 0x11132; 0x1112d, 0x11134; 0x11133, 0x11134; - 0x11173, 0x11173; 0x11180, 0x11181; 0x111b6, 0x111be; 0x111c9, 0x111cc; 0x111ca, 0x111cc; - 0x111cf, 0x111cf; 0x1122f, 0x11231; 0x11234, 0x11234; 0x11236, 0x11236; 0x11236, 0x11237; - 0x11237, 0x11237; 0x1123e, 0x1123e; 0x112df, 0x112df; 0x112e3, 0x112e8; 0x112e3, 0x112ea; - 0x112e9, 0x112ea; 0x112ea, 0x112ea; 0x11300, 0x11301; 0x1133b, 0x1133c; 0x1133c, 0x1133c; - 0x11340, 0x11340; 0x11366, 0x1136c; 0x11370, 0x11374; 0x11438, 0x1143f; 0x11442, 0x11442; - 0x11442, 0x11444; 0x11443, 0x11444; 0x11446, 0x11446; 0x1145e, 0x1145e; 0x114b3, 0x114b8; - 0x114ba, 0x114ba; 0x114bf, 0x114c0; 0x114c2, 0x114c2; 0x114c2, 0x114c3; 0x115b2, 0x115b5; - 0x115bc, 0x115bd; 0x115bf, 0x115bf; 0x115bf, 0x115c0; 0x115dc, 0x115dd; 0x11633, 0x1163a; - 0x1163d, 0x1163d; 0x1163f, 0x1163f; 0x1163f, 0x11640; 0x11640, 0x11640; 0x116ab, 0x116ab; - 0x116ad, 0x116ad; 0x116b0, 0x116b5; 0x116b7, 0x116b7; 0x1171d, 0x1171f; 0x11722, 0x11725; - 0x11727, 0x1172a; 0x11727, 0x1172b; 0x1172b, 0x1172b; 0x1182f, 0x11837; 0x11839, 0x11839; - 0x11839, 0x1183a; 0x1193b, 0x1193c; 0x1193e, 0x1193e; 0x11943, 0x11943; 0x119d4, 0x119d7; - 0x119da, 0x119db; 0x119e0, 0x119e0; 0x11a01, 0x11a0a; 0x11a33, 0x11a38; 0x11a34, 0x11a34; - 0x11a35, 0x11a38; 0x11a3b, 0x11a3e; 0x11a47, 0x11a47; 0x11a51, 0x11a56; 0x11a59, 0x11a5b; - 0x11a8a, 0x11a96; 0x11a98, 0x11a98; 0x11a98, 0x11a99; 0x11a99, 0x11a99; 0x11c30, 0x11c36; - 0x11c38, 0x11c3d; 0x11c3f, 0x11c3f; 0x11c92, 0x11ca7; 0x11caa, 0x11cb0; 0x11cb2, 0x11cb3; - 0x11cb5, 0x11cb6; 0x11d31, 0x11d36; 0x11d3a, 0x11d3a; 0x11d3c, 0x11d3d; 0x11d3f, 0x11d41; - 0x11d3f, 0x11d45; 0x11d42, 0x11d42; 0x11d43, 0x11d43; 0x11d44, 0x11d45; 0x11d47, 0x11d47; - 0x11d90, 0x11d91; 0x11d95, 0x11d95; 0x11d97, 0x11d97; 0x11ef3, 0x11ef4; 0x16af0, 0x16af4; - 0x16b30, 0x16b36; 0x16f4f, 0x16f4f; 0x16f8f, 0x16f92; 0x16fe4, 0x16fe4; 0x1bc9d, 0x1bc9e; - 0x1bc9e, 0x1bc9e; 0x1cf00, 0x1cf2d; 0x1cf30, 0x1cf46; 0x1d167, 0x1d169; 0x1d17b, 0x1d182; - 0x1d185, 0x1d18b; 0x1d1aa, 0x1d1ad; 0x1d242, 0x1d244; 0x1da00, 0x1da36; 0x1da3b, 0x1da6c; - 0x1da75, 0x1da75; 0x1da84, 0x1da84; 0x1da9b, 0x1da9f; 0x1daa1, 0x1daaf; 0x1e000, 0x1e006; - 0x1e008, 0x1e018; 0x1e01b, 0x1e021; 0x1e023, 0x1e024; 0x1e026, 0x1e02a; 0x1e130, 0x1e136; - 0x1e2ae, 0x1e2ae; 0x1e2ec, 0x1e2ef; 0x1e8d0, 0x1e8d6; 0x1e944, 0x1e946; 0x1e944, 0x1e94a; - 0xe0100, 0xe01ef; 0x1e948, 0x1e94a; 0x1e947, 0x1e947] + [ + (0x300, 0x34e); + (0x300, 0x36f); + (0x345, 0x345); + (0x34f, 0x34f); + (0x350, 0x357); + (0x35d, 0x362); + (0x483, 0x487); + (0x591, 0x5a1); + (0x591, 0x5bd); + (0x5a3, 0x5bd); + (0x5b0, 0x5bd); + (0x5bf, 0x5bf); + (0x5c1, 0x5c2); + (0x5c4, 0x5c4); + (0x5c4, 0x5c5); + (0x5c7, 0x5c7); + (0x610, 0x61a); + (0x64b, 0x652); + (0x64b, 0x657); + (0x64b, 0x65f); + (0x657, 0x658); + (0x659, 0x65f); + (0x670, 0x670); + (0x6d6, 0x6dc); + (0x6df, 0x6e0); + (0x6df, 0x6e4); + (0x6e1, 0x6e4); + (0x6e7, 0x6e8); + (0x6ea, 0x6ec); + (0x6ea, 0x6ed); + (0x6ed, 0x6ed); + (0x711, 0x711); + (0x730, 0x73f); + (0x730, 0x74a); + (0x7a6, 0x7b0); + (0x7eb, 0x7f3); + (0x7fd, 0x7fd); + (0x816, 0x817); + (0x816, 0x819); + (0x818, 0x819); + (0x81b, 0x823); + (0x825, 0x827); + (0x829, 0x82c); + (0x829, 0x82d); + (0x859, 0x85b); + (0x898, 0x89f); + (0x8ca, 0x8d2); + (0x8ca, 0x8e1); + (0x8d4, 0x8df); + (0x8e3, 0x8e9); + (0x8e3, 0x8fe); + (0x8e3, 0x902); + (0x8f0, 0x902); + (0x93a, 0x93a); + (0x93c, 0x93c); + (0x941, 0x948); + (0x94d, 0x94d); + (0x951, 0x954); + (0x951, 0x957); + (0x955, 0x957); + (0x962, 0x963); + (0x981, 0x981); + (0x9bc, 0x9bc); + (0x9c1, 0x9c4); + (0x9cd, 0x9cd); + (0x9e2, 0x9e3); + (0x9fe, 0x9fe); + (0xa01, 0xa02); + (0xa3c, 0xa3c); + (0xa41, 0xa42); + (0xa47, 0xa48); + (0xa4b, 0xa4c); + (0xa4b, 0xa4d); + (0xa4d, 0xa4d); + (0xa51, 0xa51); + (0xa70, 0xa71); + (0xa75, 0xa75); + (0xa81, 0xa82); + (0xabc, 0xabc); + (0xac1, 0xac5); + (0xac7, 0xac8); + (0xacd, 0xacd); + (0xae2, 0xae3); + (0xafa, 0xafc); + (0xafa, 0xaff); + (0xafd, 0xaff); + (0xb01, 0xb01); + (0xb3c, 0xb3c); + (0xb3f, 0xb3f); + (0xb41, 0xb44); + (0xb4d, 0xb4d); + (0xb55, 0xb55); + (0xb55, 0xb56); + (0xb56, 0xb56); + (0xb62, 0xb63); + (0xb82, 0xb82); + (0xbc0, 0xbc0); + (0xbcd, 0xbcd); + (0xc00, 0xc00); + (0xc04, 0xc04); + (0xc3c, 0xc3c); + (0xc3e, 0xc40); + (0xc46, 0xc48); + (0xc4a, 0xc4c); + (0xc4a, 0xc4d); + (0xc4d, 0xc4d); + (0xc55, 0xc56); + (0xc62, 0xc63); + (0xc81, 0xc81); + (0xcbc, 0xcbc); + (0xcbf, 0xcbf); + (0xcc6, 0xcc6); + (0xccc, 0xccc); + (0xccc, 0xccd); + (0xccd, 0xccd); + (0xce2, 0xce3); + (0xd00, 0xd01); + (0xd3b, 0xd3c); + (0xd41, 0xd44); + (0xd4d, 0xd4d); + (0xd62, 0xd63); + (0xd81, 0xd81); + (0xdca, 0xdca); + (0xdd2, 0xdd4); + (0xdd6, 0xdd6); + (0xe31, 0xe31); + (0xe34, 0xe3a); + (0xe3a, 0xe3a); + (0xe47, 0xe4c); + (0xe47, 0xe4e); + (0xe4d, 0xe4d); + (0xe4e, 0xe4e); + (0xeb1, 0xeb1); + (0xeb4, 0xeb9); + (0xeb4, 0xebc); + (0xeba, 0xeba); + (0xebb, 0xebc); + (0xec8, 0xecc); + (0xec8, 0xecd); + (0xecd, 0xecd); + (0xf18, 0xf19); + (0xf35, 0xf35); + (0xf37, 0xf37); + (0xf39, 0xf39); + (0xf71, 0xf7e); + (0xf77, 0xf77); + (0xf79, 0xf79); + (0xf80, 0xf81); + (0xf80, 0xf84); + (0xf82, 0xf84); + (0xf84, 0xf84); + (0xf86, 0xf87); + (0xf8d, 0xf97); + (0xf99, 0xfbc); + (0xfc6, 0xfc6); + (0x102d, 0x1030); + (0x1032, 0x1036); + (0x1032, 0x1037); + (0x1037, 0x1037); + (0x1039, 0x103a); + (0x103d, 0x103e); + (0x1058, 0x1059); + (0x105e, 0x1060); + (0x1071, 0x1074); + (0x1082, 0x1082); + (0x1085, 0x1086); + (0x108d, 0x108d); + (0x109d, 0x109d); + (0x135d, 0x135f); + (0x1712, 0x1713); + (0x1712, 0x1714); + (0x1714, 0x1714); + (0x1732, 0x1733); + (0x1752, 0x1753); + (0x1772, 0x1773); + (0x17b4, 0x17b5); + (0x17b7, 0x17bd); + (0x17c6, 0x17c6); + (0x17c9, 0x17d3); + (0x17d2, 0x17d2); + (0x17dd, 0x17dd); + (0x180b, 0x180d); + (0x180f, 0x180f); + (0x1885, 0x1886); + (0x18a9, 0x18a9); + (0x1920, 0x1922); + (0x1927, 0x1928); + (0x1932, 0x1932); + (0x1939, 0x193b); + (0x1a17, 0x1a18); + (0x1a1b, 0x1a1b); + (0x1a56, 0x1a56); + (0x1a58, 0x1a5e); + (0x1a60, 0x1a60); + (0x1a62, 0x1a62); + (0x1a65, 0x1a6c); + (0x1a73, 0x1a74); + (0x1a73, 0x1a7c); + (0x1a75, 0x1a7c); + (0x1a7f, 0x1a7f); + (0x1ab0, 0x1abd); + (0x1abf, 0x1ac0); + (0x1abf, 0x1ace); + (0x1ac1, 0x1acb); + (0x1acc, 0x1ace); + (0x1b00, 0x1b03); + (0x1b34, 0x1b34); + (0x1b36, 0x1b3a); + (0x1b3c, 0x1b3c); + (0x1b42, 0x1b42); + (0x1b6b, 0x1b73); + (0x1b80, 0x1b81); + (0x1ba2, 0x1ba5); + (0x1ba8, 0x1ba9); + (0x1bab, 0x1bab); + (0x1bab, 0x1bad); + (0x1bac, 0x1bad); + (0x1be6, 0x1be6); + (0x1be8, 0x1be9); + (0x1bed, 0x1bed); + (0x1bef, 0x1bf1); + (0x1c2c, 0x1c33); + (0x1c36, 0x1c36); + (0x1c36, 0x1c37); + (0x1cd0, 0x1cd2); + (0x1cd4, 0x1ce0); + (0x1ce2, 0x1ce8); + (0x1ced, 0x1ced); + (0x1cf4, 0x1cf4); + (0x1cf8, 0x1cf9); + (0x1dc0, 0x1dff); + (0x1dc4, 0x1dcf); + (0x1de7, 0x1df4); + (0x1df5, 0x1dff); + (0x20d0, 0x20dc); + (0x20e1, 0x20e1); + (0x20e5, 0x20e6); + (0x20e5, 0x20f0); + (0x20eb, 0x20ef); + (0x2cef, 0x2cf1); + (0x2d7f, 0x2d7f); + (0x2de0, 0x2dff); + (0x302a, 0x302d); + (0x3099, 0x309a); + (0xa66f, 0xa66f); + (0xa674, 0xa67b); + (0xa674, 0xa67d); + (0xa67c, 0xa67d); + (0xa69e, 0xa69f); + (0xa6f0, 0xa6f1); + (0xa802, 0xa802); + (0xa806, 0xa806); + (0xa80b, 0xa80b); + (0xa825, 0xa826); + (0xa82c, 0xa82c); + (0xa8c4, 0xa8c4); + (0xa8c4, 0xa8c5); + (0xa8c5, 0xa8c5); + (0xa8e0, 0xa8f1); + (0xa8ff, 0xa8ff); + (0xa926, 0xa92a); + (0xa926, 0xa92d); + (0xa92b, 0xa92d); + (0xa947, 0xa951); + (0xa980, 0xa982); + (0xa9b3, 0xa9b3); + (0xa9b6, 0xa9b9); + (0xa9bc, 0xa9bd); + (0xa9e5, 0xa9e5); + (0xaa29, 0xaa2e); + (0xaa31, 0xaa32); + (0xaa35, 0xaa36); + (0xaa43, 0xaa43); + (0xaa4c, 0xaa4c); + (0xaa7c, 0xaa7c); + (0xaab0, 0xaab0); + (0xaab2, 0xaab4); + (0xaab7, 0xaab8); + (0xaabe, 0xaabe); + (0xaabe, 0xaabf); + (0xaabf, 0xaabf); + (0xaac1, 0xaac1); + (0xaaec, 0xaaed); + (0xaaf6, 0xaaf6); + (0xabe5, 0xabe5); + (0xabe8, 0xabe8); + (0xabed, 0xabed); + (0xfb1e, 0xfb1e); + (0xfe00, 0xfe0f); + (0xfe20, 0xfe2f); + (0x101fd, 0x101fd); + (0x102e0, 0x102e0); + (0x10376, 0x1037a); + (0x10a01, 0x10a03); + (0x10a05, 0x10a06); + (0x10a0c, 0x10a0f); + (0x10a38, 0x10a3a); + (0x10a3f, 0x10a3f); + (0x10ae5, 0x10ae6); + (0x10d24, 0x10d27); + (0x10eab, 0x10eac); + (0x10f46, 0x10f50); + (0x10f82, 0x10f85); + (0x11001, 0x11001); + (0x11038, 0x11045); + (0x11038, 0x11046); + (0x11046, 0x11046); + (0x11070, 0x11070); + (0x11073, 0x11074); + (0x1107f, 0x1107f); + (0x1107f, 0x11081); + (0x110b3, 0x110b6); + (0x110b9, 0x110b9); + (0x110b9, 0x110ba); + (0x110c2, 0x110c2); + (0x11100, 0x11102); + (0x11127, 0x1112b); + (0x1112d, 0x11132); + (0x1112d, 0x11134); + (0x11133, 0x11134); + (0x11173, 0x11173); + (0x11180, 0x11181); + (0x111b6, 0x111be); + (0x111c9, 0x111cc); + (0x111ca, 0x111cc); + (0x111cf, 0x111cf); + (0x1122f, 0x11231); + (0x11234, 0x11234); + (0x11236, 0x11236); + (0x11236, 0x11237); + (0x11237, 0x11237); + (0x1123e, 0x1123e); + (0x112df, 0x112df); + (0x112e3, 0x112e8); + (0x112e3, 0x112ea); + (0x112e9, 0x112ea); + (0x112ea, 0x112ea); + (0x11300, 0x11301); + (0x1133b, 0x1133c); + (0x1133c, 0x1133c); + (0x11340, 0x11340); + (0x11366, 0x1136c); + (0x11370, 0x11374); + (0x11438, 0x1143f); + (0x11442, 0x11442); + (0x11442, 0x11444); + (0x11443, 0x11444); + (0x11446, 0x11446); + (0x1145e, 0x1145e); + (0x114b3, 0x114b8); + (0x114ba, 0x114ba); + (0x114bf, 0x114c0); + (0x114c2, 0x114c2); + (0x114c2, 0x114c3); + (0x115b2, 0x115b5); + (0x115bc, 0x115bd); + (0x115bf, 0x115bf); + (0x115bf, 0x115c0); + (0x115dc, 0x115dd); + (0x11633, 0x1163a); + (0x1163d, 0x1163d); + (0x1163f, 0x1163f); + (0x1163f, 0x11640); + (0x11640, 0x11640); + (0x116ab, 0x116ab); + (0x116ad, 0x116ad); + (0x116b0, 0x116b5); + (0x116b7, 0x116b7); + (0x1171d, 0x1171f); + (0x11722, 0x11725); + (0x11727, 0x1172a); + (0x11727, 0x1172b); + (0x1172b, 0x1172b); + (0x1182f, 0x11837); + (0x11839, 0x11839); + (0x11839, 0x1183a); + (0x1193b, 0x1193c); + (0x1193e, 0x1193e); + (0x11943, 0x11943); + (0x119d4, 0x119d7); + (0x119da, 0x119db); + (0x119e0, 0x119e0); + (0x11a01, 0x11a0a); + (0x11a33, 0x11a38); + (0x11a34, 0x11a34); + (0x11a35, 0x11a38); + (0x11a3b, 0x11a3e); + (0x11a47, 0x11a47); + (0x11a51, 0x11a56); + (0x11a59, 0x11a5b); + (0x11a8a, 0x11a96); + (0x11a98, 0x11a98); + (0x11a98, 0x11a99); + (0x11a99, 0x11a99); + (0x11c30, 0x11c36); + (0x11c38, 0x11c3d); + (0x11c3f, 0x11c3f); + (0x11c92, 0x11ca7); + (0x11caa, 0x11cb0); + (0x11cb2, 0x11cb3); + (0x11cb5, 0x11cb6); + (0x11d31, 0x11d36); + (0x11d3a, 0x11d3a); + (0x11d3c, 0x11d3d); + (0x11d3f, 0x11d41); + (0x11d3f, 0x11d45); + (0x11d42, 0x11d42); + (0x11d43, 0x11d43); + (0x11d44, 0x11d45); + (0x11d47, 0x11d47); + (0x11d90, 0x11d91); + (0x11d95, 0x11d95); + (0x11d97, 0x11d97); + (0x11ef3, 0x11ef4); + (0x16af0, 0x16af4); + (0x16b30, 0x16b36); + (0x16f4f, 0x16f4f); + (0x16f8f, 0x16f92); + (0x16fe4, 0x16fe4); + (0x1bc9d, 0x1bc9e); + (0x1bc9e, 0x1bc9e); + (0x1cf00, 0x1cf2d); + (0x1cf30, 0x1cf46); + (0x1d167, 0x1d169); + (0x1d17b, 0x1d182); + (0x1d185, 0x1d18b); + (0x1d1aa, 0x1d1ad); + (0x1d242, 0x1d244); + (0x1da00, 0x1da36); + (0x1da3b, 0x1da6c); + (0x1da75, 0x1da75); + (0x1da84, 0x1da84); + (0x1da9b, 0x1da9f); + (0x1daa1, 0x1daaf); + (0x1e000, 0x1e006); + (0x1e008, 0x1e018); + (0x1e01b, 0x1e021); + (0x1e023, 0x1e024); + (0x1e026, 0x1e02a); + (0x1e130, 0x1e136); + (0x1e2ae, 0x1e2ae); + (0x1e2ec, 0x1e2ef); + (0x1e8d0, 0x1e8d6); + (0x1e944, 0x1e946); + (0x1e944, 0x1e94a); + (0xe0100, 0xe01ef); + (0x1e948, 0x1e94a); + (0x1e947, 0x1e947); + ] let nd = - [0x30, 0x39; 0x660, 0x669; 0x6f0, 0x6f9; 0x7c0, 0x7c9; 0x966, 0x96f; - 0x9e6, 0x9ef; 0xa66, 0xa6f; 0xae6, 0xaef; 0xb66, 0xb6f; 0xbe6, 0xbef; - 0xc66, 0xc6f; 0xce6, 0xcef; 0xd66, 0xd6f; 0xde6, 0xdef; 0xe50, 0xe59; - 0xed0, 0xed9; 0xf20, 0xf29; 0x1040, 0x1049; 0x1090, 0x1099; 0x17e0, 0x17e9; - 0x1810, 0x1819; 0x1946, 0x194f; 0x19d0, 0x19d9; 0x1a80, 0x1a89; 0x1a90, 0x1a99; - 0x1b50, 0x1b59; 0x1bb0, 0x1bb9; 0x1c40, 0x1c49; 0x1c50, 0x1c59; 0xa620, 0xa629; - 0xa8d0, 0xa8d9; 0xa900, 0xa909; 0xa9d0, 0xa9d9; 0xa9f0, 0xa9f9; 0xaa50, 0xaa59; - 0xabf0, 0xabf9; 0xff10, 0xff19; 0x104a0, 0x104a9; 0x10d30, 0x10d39; 0x11066, 0x1106f; - 0x110f0, 0x110f9; 0x11136, 0x1113f; 0x111d0, 0x111d9; 0x112f0, 0x112f9; 0x11450, 0x11459; - 0x114d0, 0x114d9; 0x11650, 0x11659; 0x116c0, 0x116c9; 0x11730, 0x11739; 0x118e0, 0x118e9; - 0x11950, 0x11959; 0x11c50, 0x11c59; 0x11d50, 0x11d59; 0x11da0, 0x11da9; 0x16a60, 0x16a69; - 0x16ac0, 0x16ac9; 0x16b50, 0x16b59; 0x1d7ce, 0x1d7ff; 0x1e140, 0x1e149; 0x1e2f0, 0x1e2f9; - 0x1fbf0, 0x1fbf9; 0x1e950, 0x1e959] + [ + (0x30, 0x39); + (0x660, 0x669); + (0x6f0, 0x6f9); + (0x7c0, 0x7c9); + (0x966, 0x96f); + (0x9e6, 0x9ef); + (0xa66, 0xa6f); + (0xae6, 0xaef); + (0xb66, 0xb6f); + (0xbe6, 0xbef); + (0xc66, 0xc6f); + (0xce6, 0xcef); + (0xd66, 0xd6f); + (0xde6, 0xdef); + (0xe50, 0xe59); + (0xed0, 0xed9); + (0xf20, 0xf29); + (0x1040, 0x1049); + (0x1090, 0x1099); + (0x17e0, 0x17e9); + (0x1810, 0x1819); + (0x1946, 0x194f); + (0x19d0, 0x19d9); + (0x1a80, 0x1a89); + (0x1a90, 0x1a99); + (0x1b50, 0x1b59); + (0x1bb0, 0x1bb9); + (0x1c40, 0x1c49); + (0x1c50, 0x1c59); + (0xa620, 0xa629); + (0xa8d0, 0xa8d9); + (0xa900, 0xa909); + (0xa9d0, 0xa9d9); + (0xa9f0, 0xa9f9); + (0xaa50, 0xaa59); + (0xabf0, 0xabf9); + (0xff10, 0xff19); + (0x104a0, 0x104a9); + (0x10d30, 0x10d39); + (0x11066, 0x1106f); + (0x110f0, 0x110f9); + (0x11136, 0x1113f); + (0x111d0, 0x111d9); + (0x112f0, 0x112f9); + (0x11450, 0x11459); + (0x114d0, 0x114d9); + (0x11650, 0x11659); + (0x116c0, 0x116c9); + (0x11730, 0x11739); + (0x118e0, 0x118e9); + (0x11950, 0x11959); + (0x11c50, 0x11c59); + (0x11d50, 0x11d59); + (0x11da0, 0x11da9); + (0x16a60, 0x16a69); + (0x16ac0, 0x16ac9); + (0x16b50, 0x16b59); + (0x1d7ce, 0x1d7ff); + (0x1e140, 0x1e149); + (0x1e2f0, 0x1e2f9); + (0x1fbf0, 0x1fbf9); + (0x1e950, 0x1e959); + ] let nl = - [0x16ee, 0x16f0; 0x2160, 0x216f; 0x2160, 0x217f; 0x2160, 0x2182; 0x2170, 0x217f; - 0x2185, 0x2188; 0x3007, 0x3007; 0x3021, 0x3029; 0x3038, 0x303a; 0xa6e6, 0xa6ef; - 0x12400, 0x1246e; 0x103d1, 0x103d5; 0x1034a, 0x1034a; 0x10341, 0x10341; 0x10140, 0x10174] + [ + (0x16ee, 0x16f0); + (0x2160, 0x216f); + (0x2160, 0x217f); + (0x2160, 0x2182); + (0x2170, 0x217f); + (0x2185, 0x2188); + (0x3007, 0x3007); + (0x3021, 0x3029); + (0x3038, 0x303a); + (0xa6e6, 0xa6ef); + (0x12400, 0x1246e); + (0x103d1, 0x103d5); + (0x1034a, 0x1034a); + (0x10341, 0x10341); + (0x10140, 0x10174); + ] let no = - [0xb2, 0xb3; 0xb9, 0xb9; 0xbc, 0xbe; 0x9f4, 0x9f9; 0xb72, 0xb77; - 0xbf0, 0xbf2; 0xc78, 0xc7e; 0xd58, 0xd5e; 0xd70, 0xd78; 0xf2a, 0xf33; - 0x1369, 0x1371; 0x1369, 0x137c; 0x17f0, 0x17f9; 0x19da, 0x19da; 0x2070, 0x2070; - 0x2074, 0x2079; 0x2080, 0x2089; 0x2150, 0x215f; 0x2189, 0x2189; 0x2460, 0x249b; - 0x24ea, 0x24ff; 0x2776, 0x2793; 0x2cfd, 0x2cfd; 0x3192, 0x3195; 0x3220, 0x3229; - 0x3248, 0x324f; 0x3251, 0x325f; 0x3280, 0x3289; 0x32b1, 0x32bf; 0xa830, 0xa835; - 0x10107, 0x10133; 0x10175, 0x10178; 0x1018a, 0x1018b; 0x102e1, 0x102fb; 0x10320, 0x10323; - 0x10858, 0x1085f; 0x10879, 0x1087f; 0x108a7, 0x108af; 0x108fb, 0x108ff; 0x10916, 0x1091b; - 0x109bc, 0x109bd; 0x109c0, 0x109cf; 0x109d2, 0x109ff; 0x10a40, 0x10a48; 0x10a7d, 0x10a7e; - 0x10a9d, 0x10a9f; 0x10aeb, 0x10aef; 0x10b58, 0x10b5f; 0x10b78, 0x10b7f; 0x10ba9, 0x10baf; - 0x10cfa, 0x10cff; 0x10e60, 0x10e7e; 0x10f1d, 0x10f26; 0x10f51, 0x10f54; 0x10fc5, 0x10fcb; - 0x11052, 0x11065; 0x111e1, 0x111f4; 0x1173a, 0x1173b; 0x118ea, 0x118f2; 0x11c5a, 0x11c6c; - 0x11fc0, 0x11fd4; 0x16b5b, 0x16b61; 0x16e80, 0x16e96; 0x1d2e0, 0x1d2f3; 0x1d360, 0x1d378; - 0x1e8c7, 0x1e8cf; 0x1ec71, 0x1ecab; 0x1ecad, 0x1ecaf; 0x1ecb1, 0x1ecb4; 0x1ed01, 0x1ed2d; - 0x1f100, 0x1f10c; 0x1ed2f, 0x1ed3d] + [ + (0xb2, 0xb3); + (0xb9, 0xb9); + (0xbc, 0xbe); + (0x9f4, 0x9f9); + (0xb72, 0xb77); + (0xbf0, 0xbf2); + (0xc78, 0xc7e); + (0xd58, 0xd5e); + (0xd70, 0xd78); + (0xf2a, 0xf33); + (0x1369, 0x1371); + (0x1369, 0x137c); + (0x17f0, 0x17f9); + (0x19da, 0x19da); + (0x2070, 0x2070); + (0x2074, 0x2079); + (0x2080, 0x2089); + (0x2150, 0x215f); + (0x2189, 0x2189); + (0x2460, 0x249b); + (0x24ea, 0x24ff); + (0x2776, 0x2793); + (0x2cfd, 0x2cfd); + (0x3192, 0x3195); + (0x3220, 0x3229); + (0x3248, 0x324f); + (0x3251, 0x325f); + (0x3280, 0x3289); + (0x32b1, 0x32bf); + (0xa830, 0xa835); + (0x10107, 0x10133); + (0x10175, 0x10178); + (0x1018a, 0x1018b); + (0x102e1, 0x102fb); + (0x10320, 0x10323); + (0x10858, 0x1085f); + (0x10879, 0x1087f); + (0x108a7, 0x108af); + (0x108fb, 0x108ff); + (0x10916, 0x1091b); + (0x109bc, 0x109bd); + (0x109c0, 0x109cf); + (0x109d2, 0x109ff); + (0x10a40, 0x10a48); + (0x10a7d, 0x10a7e); + (0x10a9d, 0x10a9f); + (0x10aeb, 0x10aef); + (0x10b58, 0x10b5f); + (0x10b78, 0x10b7f); + (0x10ba9, 0x10baf); + (0x10cfa, 0x10cff); + (0x10e60, 0x10e7e); + (0x10f1d, 0x10f26); + (0x10f51, 0x10f54); + (0x10fc5, 0x10fcb); + (0x11052, 0x11065); + (0x111e1, 0x111f4); + (0x1173a, 0x1173b); + (0x118ea, 0x118f2); + (0x11c5a, 0x11c6c); + (0x11fc0, 0x11fd4); + (0x16b5b, 0x16b61); + (0x16e80, 0x16e96); + (0x1d2e0, 0x1d2f3); + (0x1d360, 0x1d378); + (0x1e8c7, 0x1e8cf); + (0x1ec71, 0x1ecab); + (0x1ecad, 0x1ecaf); + (0x1ecb1, 0x1ecb4); + (0x1ed01, 0x1ed2d); + (0x1f100, 0x1f10c); + (0x1ed2f, 0x1ed3d); + ] let pc = - [0x5f, 0x5f; 0x203f, 0x2040; 0x2040, 0x2040; 0x2054, 0x2054; 0xfe33, 0xfe34; - 0xff3f, 0xff3f; 0xfe4d, 0xfe4f] + [ + (0x5f, 0x5f); + (0x203f, 0x2040); + (0x2040, 0x2040); + (0x2054, 0x2054); + (0xfe33, 0xfe34); + (0xff3f, 0xff3f); + (0xfe4d, 0xfe4f); + ] let pd = - [0x2d, 0x2d; 0x58a, 0x58a; 0x5be, 0x5be; 0x1400, 0x1400; 0x1806, 0x1806; - 0x2010, 0x2011; 0x2010, 0x2015; 0x2e17, 0x2e17; 0x2e1a, 0x2e1a; 0x2e3a, 0x2e3b; - 0x2e40, 0x2e40; 0x2e5d, 0x2e5d; 0x301c, 0x301c; 0x3030, 0x3030; 0x30a0, 0x30a0; - 0x10ead, 0x10ead; 0xff0d, 0xff0d; 0xfe63, 0xfe63; 0xfe58, 0xfe58; 0xfe31, 0xfe32] + [ + (0x2d, 0x2d); + (0x58a, 0x58a); + (0x5be, 0x5be); + (0x1400, 0x1400); + (0x1806, 0x1806); + (0x2010, 0x2011); + (0x2010, 0x2015); + (0x2e17, 0x2e17); + (0x2e1a, 0x2e1a); + (0x2e3a, 0x2e3b); + (0x2e40, 0x2e40); + (0x2e5d, 0x2e5d); + (0x301c, 0x301c); + (0x3030, 0x3030); + (0x30a0, 0x30a0); + (0x10ead, 0x10ead); + (0xff0d, 0xff0d); + (0xfe63, 0xfe63); + (0xfe58, 0xfe58); + (0xfe31, 0xfe32); + ] let pe = - [0x29, 0x29; 0x5d, 0x5d; 0x7d, 0x7d; 0xf3b, 0xf3b; 0xf3d, 0xf3d; - 0x169c, 0x169c; 0x2046, 0x2046; 0x207e, 0x207e; 0x208e, 0x208e; 0x2309, 0x2309; - 0x230b, 0x230b; 0x232a, 0x232a; 0x2769, 0x2769; 0x276b, 0x276b; 0x276d, 0x276d; - 0x276f, 0x276f; 0x2771, 0x2771; 0x2773, 0x2773; 0x2775, 0x2775; 0x27c6, 0x27c6; - 0x27e7, 0x27e7; 0x27e9, 0x27e9; 0x27eb, 0x27eb; 0x27ed, 0x27ed; 0x27ef, 0x27ef; - 0x2984, 0x2984; 0x2986, 0x2986; 0x2988, 0x2988; 0x298a, 0x298a; 0x298c, 0x298c; - 0x298e, 0x298e; 0x2990, 0x2990; 0x2992, 0x2992; 0x2994, 0x2994; 0x2996, 0x2996; - 0x2998, 0x2998; 0x29d9, 0x29d9; 0x29db, 0x29db; 0x29fd, 0x29fd; 0x2e23, 0x2e23; - 0x2e25, 0x2e25; 0x2e27, 0x2e27; 0x2e29, 0x2e29; 0x2e56, 0x2e56; 0x2e58, 0x2e58; - 0x2e5a, 0x2e5a; 0x2e5c, 0x2e5c; 0x3009, 0x3009; 0x300b, 0x300b; 0x300d, 0x300d; - 0x300f, 0x300f; 0x3011, 0x3011; 0x3015, 0x3015; 0x3017, 0x3017; 0x3019, 0x3019; - 0x301b, 0x301b; 0x301e, 0x301f; 0xfd3e, 0xfd3e; 0xfe18, 0xfe18; 0xfe36, 0xfe36; - 0xfe38, 0xfe38; 0xfe3a, 0xfe3a; 0xfe3c, 0xfe3c; 0xfe3e, 0xfe3e; 0xfe40, 0xfe40; - 0xfe42, 0xfe42; 0xfe44, 0xfe44; 0xfe48, 0xfe48; 0xfe5a, 0xfe5a; 0xfe5c, 0xfe5c; - 0xfe5e, 0xfe5e; 0xff09, 0xff09; 0xff3d, 0xff3d; 0xff5d, 0xff5d; 0xff60, 0xff60; - 0xff63, 0xff63] + [ + (0x29, 0x29); + (0x5d, 0x5d); + (0x7d, 0x7d); + (0xf3b, 0xf3b); + (0xf3d, 0xf3d); + (0x169c, 0x169c); + (0x2046, 0x2046); + (0x207e, 0x207e); + (0x208e, 0x208e); + (0x2309, 0x2309); + (0x230b, 0x230b); + (0x232a, 0x232a); + (0x2769, 0x2769); + (0x276b, 0x276b); + (0x276d, 0x276d); + (0x276f, 0x276f); + (0x2771, 0x2771); + (0x2773, 0x2773); + (0x2775, 0x2775); + (0x27c6, 0x27c6); + (0x27e7, 0x27e7); + (0x27e9, 0x27e9); + (0x27eb, 0x27eb); + (0x27ed, 0x27ed); + (0x27ef, 0x27ef); + (0x2984, 0x2984); + (0x2986, 0x2986); + (0x2988, 0x2988); + (0x298a, 0x298a); + (0x298c, 0x298c); + (0x298e, 0x298e); + (0x2990, 0x2990); + (0x2992, 0x2992); + (0x2994, 0x2994); + (0x2996, 0x2996); + (0x2998, 0x2998); + (0x29d9, 0x29d9); + (0x29db, 0x29db); + (0x29fd, 0x29fd); + (0x2e23, 0x2e23); + (0x2e25, 0x2e25); + (0x2e27, 0x2e27); + (0x2e29, 0x2e29); + (0x2e56, 0x2e56); + (0x2e58, 0x2e58); + (0x2e5a, 0x2e5a); + (0x2e5c, 0x2e5c); + (0x3009, 0x3009); + (0x300b, 0x300b); + (0x300d, 0x300d); + (0x300f, 0x300f); + (0x3011, 0x3011); + (0x3015, 0x3015); + (0x3017, 0x3017); + (0x3019, 0x3019); + (0x301b, 0x301b); + (0x301e, 0x301f); + (0xfd3e, 0xfd3e); + (0xfe18, 0xfe18); + (0xfe36, 0xfe36); + (0xfe38, 0xfe38); + (0xfe3a, 0xfe3a); + (0xfe3c, 0xfe3c); + (0xfe3e, 0xfe3e); + (0xfe40, 0xfe40); + (0xfe42, 0xfe42); + (0xfe44, 0xfe44); + (0xfe48, 0xfe48); + (0xfe5a, 0xfe5a); + (0xfe5c, 0xfe5c); + (0xfe5e, 0xfe5e); + (0xff09, 0xff09); + (0xff3d, 0xff3d); + (0xff5d, 0xff5d); + (0xff60, 0xff60); + (0xff63, 0xff63); + ] let pf = - [0xbb, 0xbb; 0x2019, 0x2019; 0x201d, 0x201d; 0x203a, 0x203a; 0x2e03, 0x2e03; - 0x2e21, 0x2e21; 0x2e1d, 0x2e1d; 0x2e0d, 0x2e0d; 0x2e0a, 0x2e0a; 0x2e05, 0x2e05] + [ + (0xbb, 0xbb); + (0x2019, 0x2019); + (0x201d, 0x201d); + (0x203a, 0x203a); + (0x2e03, 0x2e03); + (0x2e21, 0x2e21); + (0x2e1d, 0x2e1d); + (0x2e0d, 0x2e0d); + (0x2e0a, 0x2e0a); + (0x2e05, 0x2e05); + ] let pi = - [0xab, 0xab; 0x2018, 0x2018; 0x201b, 0x201c; 0x201f, 0x201f; 0x2039, 0x2039; - 0x2e02, 0x2e02; 0x2e04, 0x2e04; 0x2e09, 0x2e09; 0x2e0c, 0x2e0c; 0x2e1c, 0x2e1c; - 0x2e20, 0x2e20] + [ + (0xab, 0xab); + (0x2018, 0x2018); + (0x201b, 0x201c); + (0x201f, 0x201f); + (0x2039, 0x2039); + (0x2e02, 0x2e02); + (0x2e04, 0x2e04); + (0x2e09, 0x2e09); + (0x2e0c, 0x2e0c); + (0x2e1c, 0x2e1c); + (0x2e20, 0x2e20); + ] let po = - [0x21, 0x21; 0x21, 0x23; 0x22, 0x22; 0x25, 0x27; 0x27, 0x27; - 0x2a, 0x2a; 0x2c, 0x2c; 0x2e, 0x2e; 0x2e, 0x2f; 0x3a, 0x3a; - 0x3a, 0x3b; 0x3f, 0x3f; 0x3f, 0x40; 0x5c, 0x5c; 0xa1, 0xa1; - 0xa7, 0xa7; 0xb6, 0xb6; 0xb6, 0xb7; 0xb7, 0xb7; 0xbf, 0xbf; - 0x37e, 0x37e; 0x387, 0x387; 0x55a, 0x55f; 0x55f, 0x55f; 0x589, 0x589; - 0x5c0, 0x5c0; 0x5c3, 0x5c3; 0x5c6, 0x5c6; 0x5f3, 0x5f4; 0x5f4, 0x5f4; - 0x609, 0x60a; 0x60c, 0x60c; 0x60c, 0x60d; 0x61b, 0x61b; 0x61d, 0x61f; - 0x66a, 0x66d; 0x6d4, 0x6d4; 0x700, 0x702; 0x700, 0x70a; 0x700, 0x70d; - 0x70c, 0x70c; 0x7f7, 0x7f9; 0x7f8, 0x7f9; 0x7f9, 0x7f9; 0x830, 0x83e; - 0x837, 0x837; 0x839, 0x839; 0x83d, 0x83e; 0x85e, 0x85e; 0x964, 0x965; - 0x970, 0x970; 0x9fd, 0x9fd; 0xa76, 0xa76; 0xaf0, 0xaf0; 0xc77, 0xc77; - 0xc84, 0xc84; 0xdf4, 0xdf4; 0xe4f, 0xe4f; 0xe5a, 0xe5b; 0xf04, 0xf12; - 0xf08, 0xf08; 0xf0d, 0xf12; 0xf14, 0xf14; 0xf85, 0xf85; 0xfd0, 0xfd4; - 0xfd9, 0xfda; 0x104a, 0x104b; 0x104a, 0x104f; 0x10fb, 0x10fb; 0x1360, 0x1368; - 0x1361, 0x1368; 0x1362, 0x1362; 0x1367, 0x1368; 0x166e, 0x166e; 0x16eb, 0x16ed; - 0x1735, 0x1736; 0x17d4, 0x17d6; 0x17d8, 0x17da; 0x17da, 0x17da; 0x1800, 0x1805; - 0x1802, 0x1805; 0x1803, 0x1803; 0x1807, 0x180a; 0x1808, 0x1809; 0x1809, 0x1809; - 0x180a, 0x180a; 0x1944, 0x1945; 0x1a1e, 0x1a1f; 0x1aa0, 0x1aa6; 0x1aa8, 0x1aab; - 0x1aa8, 0x1aad; 0x1b5a, 0x1b5b; 0x1b5a, 0x1b60; 0x1b5d, 0x1b5f; 0x1b5e, 0x1b5f; - 0x1b7d, 0x1b7e; 0x1bfc, 0x1bff; 0x1c3b, 0x1c3c; 0x1c3b, 0x1c3f; 0x1c7e, 0x1c7f; - 0x1cc0, 0x1cc7; 0x1cd3, 0x1cd3; 0x2016, 0x2016; 0x2016, 0x2017; 0x2020, 0x2027; - 0x2024, 0x2024; 0x2027, 0x2027; 0x2030, 0x2038; 0x2032, 0x2034; 0x203b, 0x203e; - 0x203c, 0x203d; 0x2041, 0x2043; 0x2047, 0x2049; 0x2047, 0x2051; 0x2053, 0x2053; - 0x2055, 0x205e; 0x2cf9, 0x2cfc; 0x2cfe, 0x2cff; 0x2d70, 0x2d70; 0x2e00, 0x2e01; - 0x2e06, 0x2e08; 0x2e0b, 0x2e0b; 0x2e0e, 0x2e16; 0x2e18, 0x2e19; 0x2e1b, 0x2e1b; - 0x2e1e, 0x2e1f; 0x2e2a, 0x2e2e; 0x2e2e, 0x2e2e; 0x2e30, 0x2e39; 0x2e3c, 0x2e3c; - 0x2e3c, 0x2e3f; 0x2e41, 0x2e41; 0x2e43, 0x2e4f; 0x2e4c, 0x2e4c; 0x2e4e, 0x2e4f; - 0x2e52, 0x2e54; 0x2e53, 0x2e54; 0x3001, 0x3002; 0x3001, 0x3003; 0x3002, 0x3002; - 0x303d, 0x303d; 0x30fb, 0x30fb; 0xa4fe, 0xa4ff; 0xa4ff, 0xa4ff; 0xa60d, 0xa60f; - 0xa60e, 0xa60f; 0xa673, 0xa673; 0xa67e, 0xa67e; 0xa6f2, 0xa6f7; 0xa6f3, 0xa6f3; - 0xa6f3, 0xa6f7; 0xa6f7, 0xa6f7; 0xa874, 0xa877; 0xa876, 0xa877; 0xa8ce, 0xa8cf; - 0xa8f8, 0xa8fa; 0xa8fc, 0xa8fc; 0xa92e, 0xa92e; 0xa92e, 0xa92f; 0xa92f, 0xa92f; - 0xa95f, 0xa95f; 0xa9c1, 0xa9cd; 0xa9c7, 0xa9c9; 0xa9c8, 0xa9c9; 0xa9de, 0xa9df; - 0xaa5c, 0xaa5f; 0xaa5d, 0xaa5f; 0xaade, 0xaadf; 0xaadf, 0xaadf; 0xaaf0, 0xaaf1; - 0xabeb, 0xabeb; 0xfe10, 0xfe16; 0xfe13, 0xfe13; 0xfe19, 0xfe19; 0xfe30, 0xfe30; - 0xfe45, 0xfe46; 0xfe49, 0xfe4c; 0xfe50, 0xfe52; 0xfe52, 0xfe52; 0xfe54, 0xfe57; - 0xfe55, 0xfe55; 0xfe56, 0xfe57; 0xfe5f, 0xfe61; 0xfe61, 0xfe61; 0xfe68, 0xfe68; - 0xfe6a, 0xfe6b; 0xff01, 0xff01; 0xff01, 0xff03; 0xff02, 0xff02; 0xff05, 0xff07; - 0xff07, 0xff07; 0xff0a, 0xff0a; 0xff0c, 0xff0c; 0xff0e, 0xff0e; 0xff0e, 0xff0f; - 0xff1a, 0xff1a; 0xff1a, 0xff1b; 0xff1f, 0xff1f; 0xff1f, 0xff20; 0xff3c, 0xff3c; - 0xff61, 0xff61; 0xff64, 0xff64; 0xff64, 0xff65; 0xff65, 0xff65; 0x10100, 0x10102; - 0x1039f, 0x1039f; 0x103d0, 0x103d0; 0x1056f, 0x1056f; 0x10857, 0x10857; 0x1091f, 0x1091f; - 0x1093f, 0x1093f; 0x10a50, 0x10a58; 0x10a56, 0x10a57; 0x10a7f, 0x10a7f; 0x10af0, 0x10af5; - 0x10af0, 0x10af6; 0x10b39, 0x10b3f; 0x10b3a, 0x10b3f; 0x10b99, 0x10b9c; 0x10f55, 0x10f59; - 0x10f86, 0x10f89; 0x11047, 0x11048; 0x11047, 0x1104d; 0x110bb, 0x110bc; 0x110be, 0x110c1; - 0x11140, 0x11143; 0x11141, 0x11143; 0x11174, 0x11175; 0x111c5, 0x111c6; 0x111c5, 0x111c8; - 0x111cd, 0x111cd; 0x111db, 0x111db; 0x111dd, 0x111df; 0x111de, 0x111df; 0x11238, 0x11239; - 0x11238, 0x1123c; 0x11238, 0x1123d; 0x1123b, 0x1123c; 0x112a9, 0x112a9; 0x1144b, 0x1144c; - 0x1144b, 0x1144d; 0x1144b, 0x1144f; 0x1145a, 0x1145b; 0x1145d, 0x1145d; 0x114c6, 0x114c6; - 0x115c1, 0x115d7; 0x115c2, 0x115c3; 0x115c2, 0x115c5; 0x115c6, 0x115c8; 0x115c9, 0x115d7; - 0x11641, 0x11642; 0x11641, 0x11643; 0x11660, 0x1166c; 0x116b9, 0x116b9; 0x1173c, 0x1173e; - 0x1183b, 0x1183b; 0x11944, 0x11944; 0x11944, 0x11946; 0x11946, 0x11946; 0x119e2, 0x119e2; - 0x11a3f, 0x11a46; 0x11a42, 0x11a43; 0x11a9a, 0x11a9c; 0x11a9b, 0x11a9c; 0x11a9e, 0x11aa2; - 0x11aa1, 0x11aa2; 0x11c41, 0x11c42; 0x11c41, 0x11c43; 0x11c41, 0x11c45; 0x11c70, 0x11c71; - 0x11c71, 0x11c71; 0x11ef7, 0x11ef8; 0x11fff, 0x11fff; 0x12470, 0x12474; 0x12ff1, 0x12ff2; - 0x16a6e, 0x16a6f; 0x16af5, 0x16af5; 0x16b37, 0x16b38; 0x16b37, 0x16b39; 0x16b37, 0x16b3b; - 0x16b44, 0x16b44; 0x16e97, 0x16e98; 0x16e97, 0x16e9a; 0x16e98, 0x16e98; 0x16fe2, 0x16fe2; - 0x1e95e, 0x1e95f; 0x1da88, 0x1da88; 0x1da87, 0x1da8b; 0x1da87, 0x1da8a; 0x1bc9f, 0x1bc9f] + [ + (0x21, 0x21); + (0x21, 0x23); + (0x22, 0x22); + (0x25, 0x27); + (0x27, 0x27); + (0x2a, 0x2a); + (0x2c, 0x2c); + (0x2e, 0x2e); + (0x2e, 0x2f); + (0x3a, 0x3a); + (0x3a, 0x3b); + (0x3f, 0x3f); + (0x3f, 0x40); + (0x5c, 0x5c); + (0xa1, 0xa1); + (0xa7, 0xa7); + (0xb6, 0xb6); + (0xb6, 0xb7); + (0xb7, 0xb7); + (0xbf, 0xbf); + (0x37e, 0x37e); + (0x387, 0x387); + (0x55a, 0x55f); + (0x55f, 0x55f); + (0x589, 0x589); + (0x5c0, 0x5c0); + (0x5c3, 0x5c3); + (0x5c6, 0x5c6); + (0x5f3, 0x5f4); + (0x5f4, 0x5f4); + (0x609, 0x60a); + (0x60c, 0x60c); + (0x60c, 0x60d); + (0x61b, 0x61b); + (0x61d, 0x61f); + (0x66a, 0x66d); + (0x6d4, 0x6d4); + (0x700, 0x702); + (0x700, 0x70a); + (0x700, 0x70d); + (0x70c, 0x70c); + (0x7f7, 0x7f9); + (0x7f8, 0x7f9); + (0x7f9, 0x7f9); + (0x830, 0x83e); + (0x837, 0x837); + (0x839, 0x839); + (0x83d, 0x83e); + (0x85e, 0x85e); + (0x964, 0x965); + (0x970, 0x970); + (0x9fd, 0x9fd); + (0xa76, 0xa76); + (0xaf0, 0xaf0); + (0xc77, 0xc77); + (0xc84, 0xc84); + (0xdf4, 0xdf4); + (0xe4f, 0xe4f); + (0xe5a, 0xe5b); + (0xf04, 0xf12); + (0xf08, 0xf08); + (0xf0d, 0xf12); + (0xf14, 0xf14); + (0xf85, 0xf85); + (0xfd0, 0xfd4); + (0xfd9, 0xfda); + (0x104a, 0x104b); + (0x104a, 0x104f); + (0x10fb, 0x10fb); + (0x1360, 0x1368); + (0x1361, 0x1368); + (0x1362, 0x1362); + (0x1367, 0x1368); + (0x166e, 0x166e); + (0x16eb, 0x16ed); + (0x1735, 0x1736); + (0x17d4, 0x17d6); + (0x17d8, 0x17da); + (0x17da, 0x17da); + (0x1800, 0x1805); + (0x1802, 0x1805); + (0x1803, 0x1803); + (0x1807, 0x180a); + (0x1808, 0x1809); + (0x1809, 0x1809); + (0x180a, 0x180a); + (0x1944, 0x1945); + (0x1a1e, 0x1a1f); + (0x1aa0, 0x1aa6); + (0x1aa8, 0x1aab); + (0x1aa8, 0x1aad); + (0x1b5a, 0x1b5b); + (0x1b5a, 0x1b60); + (0x1b5d, 0x1b5f); + (0x1b5e, 0x1b5f); + (0x1b7d, 0x1b7e); + (0x1bfc, 0x1bff); + (0x1c3b, 0x1c3c); + (0x1c3b, 0x1c3f); + (0x1c7e, 0x1c7f); + (0x1cc0, 0x1cc7); + (0x1cd3, 0x1cd3); + (0x2016, 0x2016); + (0x2016, 0x2017); + (0x2020, 0x2027); + (0x2024, 0x2024); + (0x2027, 0x2027); + (0x2030, 0x2038); + (0x2032, 0x2034); + (0x203b, 0x203e); + (0x203c, 0x203d); + (0x2041, 0x2043); + (0x2047, 0x2049); + (0x2047, 0x2051); + (0x2053, 0x2053); + (0x2055, 0x205e); + (0x2cf9, 0x2cfc); + (0x2cfe, 0x2cff); + (0x2d70, 0x2d70); + (0x2e00, 0x2e01); + (0x2e06, 0x2e08); + (0x2e0b, 0x2e0b); + (0x2e0e, 0x2e16); + (0x2e18, 0x2e19); + (0x2e1b, 0x2e1b); + (0x2e1e, 0x2e1f); + (0x2e2a, 0x2e2e); + (0x2e2e, 0x2e2e); + (0x2e30, 0x2e39); + (0x2e3c, 0x2e3c); + (0x2e3c, 0x2e3f); + (0x2e41, 0x2e41); + (0x2e43, 0x2e4f); + (0x2e4c, 0x2e4c); + (0x2e4e, 0x2e4f); + (0x2e52, 0x2e54); + (0x2e53, 0x2e54); + (0x3001, 0x3002); + (0x3001, 0x3003); + (0x3002, 0x3002); + (0x303d, 0x303d); + (0x30fb, 0x30fb); + (0xa4fe, 0xa4ff); + (0xa4ff, 0xa4ff); + (0xa60d, 0xa60f); + (0xa60e, 0xa60f); + (0xa673, 0xa673); + (0xa67e, 0xa67e); + (0xa6f2, 0xa6f7); + (0xa6f3, 0xa6f3); + (0xa6f3, 0xa6f7); + (0xa6f7, 0xa6f7); + (0xa874, 0xa877); + (0xa876, 0xa877); + (0xa8ce, 0xa8cf); + (0xa8f8, 0xa8fa); + (0xa8fc, 0xa8fc); + (0xa92e, 0xa92e); + (0xa92e, 0xa92f); + (0xa92f, 0xa92f); + (0xa95f, 0xa95f); + (0xa9c1, 0xa9cd); + (0xa9c7, 0xa9c9); + (0xa9c8, 0xa9c9); + (0xa9de, 0xa9df); + (0xaa5c, 0xaa5f); + (0xaa5d, 0xaa5f); + (0xaade, 0xaadf); + (0xaadf, 0xaadf); + (0xaaf0, 0xaaf1); + (0xabeb, 0xabeb); + (0xfe10, 0xfe16); + (0xfe13, 0xfe13); + (0xfe19, 0xfe19); + (0xfe30, 0xfe30); + (0xfe45, 0xfe46); + (0xfe49, 0xfe4c); + (0xfe50, 0xfe52); + (0xfe52, 0xfe52); + (0xfe54, 0xfe57); + (0xfe55, 0xfe55); + (0xfe56, 0xfe57); + (0xfe5f, 0xfe61); + (0xfe61, 0xfe61); + (0xfe68, 0xfe68); + (0xfe6a, 0xfe6b); + (0xff01, 0xff01); + (0xff01, 0xff03); + (0xff02, 0xff02); + (0xff05, 0xff07); + (0xff07, 0xff07); + (0xff0a, 0xff0a); + (0xff0c, 0xff0c); + (0xff0e, 0xff0e); + (0xff0e, 0xff0f); + (0xff1a, 0xff1a); + (0xff1a, 0xff1b); + (0xff1f, 0xff1f); + (0xff1f, 0xff20); + (0xff3c, 0xff3c); + (0xff61, 0xff61); + (0xff64, 0xff64); + (0xff64, 0xff65); + (0xff65, 0xff65); + (0x10100, 0x10102); + (0x1039f, 0x1039f); + (0x103d0, 0x103d0); + (0x1056f, 0x1056f); + (0x10857, 0x10857); + (0x1091f, 0x1091f); + (0x1093f, 0x1093f); + (0x10a50, 0x10a58); + (0x10a56, 0x10a57); + (0x10a7f, 0x10a7f); + (0x10af0, 0x10af5); + (0x10af0, 0x10af6); + (0x10b39, 0x10b3f); + (0x10b3a, 0x10b3f); + (0x10b99, 0x10b9c); + (0x10f55, 0x10f59); + (0x10f86, 0x10f89); + (0x11047, 0x11048); + (0x11047, 0x1104d); + (0x110bb, 0x110bc); + (0x110be, 0x110c1); + (0x11140, 0x11143); + (0x11141, 0x11143); + (0x11174, 0x11175); + (0x111c5, 0x111c6); + (0x111c5, 0x111c8); + (0x111cd, 0x111cd); + (0x111db, 0x111db); + (0x111dd, 0x111df); + (0x111de, 0x111df); + (0x11238, 0x11239); + (0x11238, 0x1123c); + (0x11238, 0x1123d); + (0x1123b, 0x1123c); + (0x112a9, 0x112a9); + (0x1144b, 0x1144c); + (0x1144b, 0x1144d); + (0x1144b, 0x1144f); + (0x1145a, 0x1145b); + (0x1145d, 0x1145d); + (0x114c6, 0x114c6); + (0x115c1, 0x115d7); + (0x115c2, 0x115c3); + (0x115c2, 0x115c5); + (0x115c6, 0x115c8); + (0x115c9, 0x115d7); + (0x11641, 0x11642); + (0x11641, 0x11643); + (0x11660, 0x1166c); + (0x116b9, 0x116b9); + (0x1173c, 0x1173e); + (0x1183b, 0x1183b); + (0x11944, 0x11944); + (0x11944, 0x11946); + (0x11946, 0x11946); + (0x119e2, 0x119e2); + (0x11a3f, 0x11a46); + (0x11a42, 0x11a43); + (0x11a9a, 0x11a9c); + (0x11a9b, 0x11a9c); + (0x11a9e, 0x11aa2); + (0x11aa1, 0x11aa2); + (0x11c41, 0x11c42); + (0x11c41, 0x11c43); + (0x11c41, 0x11c45); + (0x11c70, 0x11c71); + (0x11c71, 0x11c71); + (0x11ef7, 0x11ef8); + (0x11fff, 0x11fff); + (0x12470, 0x12474); + (0x12ff1, 0x12ff2); + (0x16a6e, 0x16a6f); + (0x16af5, 0x16af5); + (0x16b37, 0x16b38); + (0x16b37, 0x16b39); + (0x16b37, 0x16b3b); + (0x16b44, 0x16b44); + (0x16e97, 0x16e98); + (0x16e97, 0x16e9a); + (0x16e98, 0x16e98); + (0x16fe2, 0x16fe2); + (0x1e95e, 0x1e95f); + (0x1da88, 0x1da88); + (0x1da87, 0x1da8b); + (0x1da87, 0x1da8a); + (0x1bc9f, 0x1bc9f); + ] let ps = - [0x28, 0x28; 0x5b, 0x5b; 0x7b, 0x7b; 0xf3a, 0xf3a; 0xf3c, 0xf3c; - 0x169b, 0x169b; 0x201a, 0x201a; 0x201e, 0x201e; 0x2045, 0x2045; 0x207d, 0x207d; - 0x208d, 0x208d; 0x2308, 0x2308; 0x230a, 0x230a; 0x2329, 0x2329; 0x2768, 0x2768; - 0x276a, 0x276a; 0x276c, 0x276c; 0x276e, 0x276e; 0x2770, 0x2770; 0x2772, 0x2772; - 0x2774, 0x2774; 0x27c5, 0x27c5; 0x27e6, 0x27e6; 0x27e8, 0x27e8; 0x27ea, 0x27ea; - 0x27ec, 0x27ec; 0x27ee, 0x27ee; 0x2983, 0x2983; 0x2985, 0x2985; 0x2987, 0x2987; - 0x2989, 0x2989; 0x298b, 0x298b; 0x298d, 0x298d; 0x298f, 0x298f; 0x2991, 0x2991; - 0x2993, 0x2993; 0x2995, 0x2995; 0x2997, 0x2997; 0x29d8, 0x29d8; 0x29da, 0x29da; - 0x29fc, 0x29fc; 0x2e22, 0x2e22; 0x2e24, 0x2e24; 0x2e26, 0x2e26; 0x2e28, 0x2e28; - 0x2e42, 0x2e42; 0x2e55, 0x2e55; 0x2e57, 0x2e57; 0x2e59, 0x2e59; 0x2e5b, 0x2e5b; - 0x3008, 0x3008; 0x300a, 0x300a; 0x300c, 0x300c; 0x300e, 0x300e; 0x3010, 0x3010; - 0x3014, 0x3014; 0x3016, 0x3016; 0x3018, 0x3018; 0x301a, 0x301a; 0x301d, 0x301d; - 0xfd3f, 0xfd3f; 0xfe17, 0xfe17; 0xfe35, 0xfe35; 0xfe37, 0xfe37; 0xfe39, 0xfe39; - 0xfe3b, 0xfe3b; 0xfe3d, 0xfe3d; 0xfe3f, 0xfe3f; 0xfe41, 0xfe41; 0xfe43, 0xfe43; - 0xfe47, 0xfe47; 0xfe59, 0xfe59; 0xfe5b, 0xfe5b; 0xfe5d, 0xfe5d; 0xff08, 0xff08; - 0xff62, 0xff62; 0xff5f, 0xff5f; 0xff5b, 0xff5b; 0xff3b, 0xff3b] + [ + (0x28, 0x28); + (0x5b, 0x5b); + (0x7b, 0x7b); + (0xf3a, 0xf3a); + (0xf3c, 0xf3c); + (0x169b, 0x169b); + (0x201a, 0x201a); + (0x201e, 0x201e); + (0x2045, 0x2045); + (0x207d, 0x207d); + (0x208d, 0x208d); + (0x2308, 0x2308); + (0x230a, 0x230a); + (0x2329, 0x2329); + (0x2768, 0x2768); + (0x276a, 0x276a); + (0x276c, 0x276c); + (0x276e, 0x276e); + (0x2770, 0x2770); + (0x2772, 0x2772); + (0x2774, 0x2774); + (0x27c5, 0x27c5); + (0x27e6, 0x27e6); + (0x27e8, 0x27e8); + (0x27ea, 0x27ea); + (0x27ec, 0x27ec); + (0x27ee, 0x27ee); + (0x2983, 0x2983); + (0x2985, 0x2985); + (0x2987, 0x2987); + (0x2989, 0x2989); + (0x298b, 0x298b); + (0x298d, 0x298d); + (0x298f, 0x298f); + (0x2991, 0x2991); + (0x2993, 0x2993); + (0x2995, 0x2995); + (0x2997, 0x2997); + (0x29d8, 0x29d8); + (0x29da, 0x29da); + (0x29fc, 0x29fc); + (0x2e22, 0x2e22); + (0x2e24, 0x2e24); + (0x2e26, 0x2e26); + (0x2e28, 0x2e28); + (0x2e42, 0x2e42); + (0x2e55, 0x2e55); + (0x2e57, 0x2e57); + (0x2e59, 0x2e59); + (0x2e5b, 0x2e5b); + (0x3008, 0x3008); + (0x300a, 0x300a); + (0x300c, 0x300c); + (0x300e, 0x300e); + (0x3010, 0x3010); + (0x3014, 0x3014); + (0x3016, 0x3016); + (0x3018, 0x3018); + (0x301a, 0x301a); + (0x301d, 0x301d); + (0xfd3f, 0xfd3f); + (0xfe17, 0xfe17); + (0xfe35, 0xfe35); + (0xfe37, 0xfe37); + (0xfe39, 0xfe39); + (0xfe3b, 0xfe3b); + (0xfe3d, 0xfe3d); + (0xfe3f, 0xfe3f); + (0xfe41, 0xfe41); + (0xfe43, 0xfe43); + (0xfe47, 0xfe47); + (0xfe59, 0xfe59); + (0xfe5b, 0xfe5b); + (0xfe5d, 0xfe5d); + (0xff08, 0xff08); + (0xff62, 0xff62); + (0xff5f, 0xff5f); + (0xff5b, 0xff5b); + (0xff3b, 0xff3b); + ] let sc = - [0x24, 0x24; 0xa2, 0xa5; 0x58f, 0x58f; 0x60b, 0x60b; 0x7fe, 0x7ff; - 0x9f2, 0x9f3; 0x9fb, 0x9fb; 0xaf1, 0xaf1; 0xbf9, 0xbf9; 0xe3f, 0xe3f; - 0x17db, 0x17db; 0x20a0, 0x20c0; 0xa838, 0xa838; 0xfdfc, 0xfdfc; 0xfe69, 0xfe69; - 0xff04, 0xff04; 0xffe0, 0xffe1; 0xffe5, 0xffe6; 0x11fdd, 0x11fe0; 0x1e2ff, 0x1e2ff; - 0x1ecb0, 0x1ecb0] + [ + (0x24, 0x24); + (0xa2, 0xa5); + (0x58f, 0x58f); + (0x60b, 0x60b); + (0x7fe, 0x7ff); + (0x9f2, 0x9f3); + (0x9fb, 0x9fb); + (0xaf1, 0xaf1); + (0xbf9, 0xbf9); + (0xe3f, 0xe3f); + (0x17db, 0x17db); + (0x20a0, 0x20c0); + (0xa838, 0xa838); + (0xfdfc, 0xfdfc); + (0xfe69, 0xfe69); + (0xff04, 0xff04); + (0xffe0, 0xffe1); + (0xffe5, 0xffe6); + (0x11fdd, 0x11fe0); + (0x1e2ff, 0x1e2ff); + (0x1ecb0, 0x1ecb0); + ] let sk = - [0x5e, 0x5e; 0x60, 0x60; 0xa8, 0xa8; 0xaf, 0xaf; 0xb4, 0xb4; - 0xb8, 0xb8; 0x2c2, 0x2c5; 0x2d2, 0x2df; 0x2e5, 0x2eb; 0x2ed, 0x2ed; - 0x2ef, 0x2ff; 0x375, 0x375; 0x384, 0x385; 0x888, 0x888; 0x1fbd, 0x1fbd; - 0x1fbf, 0x1fc1; 0x1fcd, 0x1fcf; 0x1fdd, 0x1fdf; 0x1fed, 0x1fef; 0x1ffd, 0x1ffe; - 0x309b, 0x309c; 0xa700, 0xa716; 0xa720, 0xa721; 0xa789, 0xa78a; 0xab5b, 0xab5b; - 0xab6a, 0xab6b; 0xfbb2, 0xfbc2; 0xff3e, 0xff3e; 0xff40, 0xff40; 0xffe3, 0xffe3; - 0x1f3fb, 0x1f3ff] + [ + (0x5e, 0x5e); + (0x60, 0x60); + (0xa8, 0xa8); + (0xaf, 0xaf); + (0xb4, 0xb4); + (0xb8, 0xb8); + (0x2c2, 0x2c5); + (0x2d2, 0x2df); + (0x2e5, 0x2eb); + (0x2ed, 0x2ed); + (0x2ef, 0x2ff); + (0x375, 0x375); + (0x384, 0x385); + (0x888, 0x888); + (0x1fbd, 0x1fbd); + (0x1fbf, 0x1fc1); + (0x1fcd, 0x1fcf); + (0x1fdd, 0x1fdf); + (0x1fed, 0x1fef); + (0x1ffd, 0x1ffe); + (0x309b, 0x309c); + (0xa700, 0xa716); + (0xa720, 0xa721); + (0xa789, 0xa78a); + (0xab5b, 0xab5b); + (0xab6a, 0xab6b); + (0xfbb2, 0xfbc2); + (0xff3e, 0xff3e); + (0xff40, 0xff40); + (0xffe3, 0xffe3); + (0x1f3fb, 0x1f3ff); + ] let sm = - [0x2b, 0x2b; 0x3c, 0x3e; 0x7c, 0x7c; 0x7e, 0x7e; 0xac, 0xac; - 0xb1, 0xb1; 0xd7, 0xd7; 0xf7, 0xf7; 0x3f6, 0x3f6; 0x606, 0x608; - 0x2044, 0x2044; 0x2052, 0x2052; 0x207a, 0x207c; 0x207b, 0x207b; 0x208a, 0x208c; - 0x208b, 0x208b; 0x2118, 0x2118; 0x2140, 0x2144; 0x214b, 0x214b; 0x2190, 0x2194; - 0x219a, 0x219b; 0x21a0, 0x21a0; 0x21a3, 0x21a3; 0x21a6, 0x21a6; 0x21ae, 0x21ae; - 0x21ce, 0x21cf; 0x21d2, 0x21d2; 0x21d4, 0x21d4; 0x21f4, 0x22ff; 0x2212, 0x2212; - 0x2320, 0x2321; 0x237c, 0x237c; 0x239b, 0x23b3; 0x23dc, 0x23e1; 0x25b7, 0x25b7; - 0x25c1, 0x25c1; 0x25f8, 0x25ff; 0x266f, 0x266f; 0x27c0, 0x27c4; 0x27c7, 0x27e5; - 0x27f0, 0x27ff; 0x2900, 0x2982; 0x2999, 0x29d7; 0x29dc, 0x29fb; 0x29fe, 0x2aff; - 0x2b30, 0x2b44; 0x2b47, 0x2b4c; 0xfb29, 0xfb29; 0xfe62, 0xfe62; 0xfe64, 0xfe66; - 0xff0b, 0xff0b; 0xff1c, 0xff1e; 0xff5c, 0xff5c; 0xff5e, 0xff5e; 0xffe2, 0xffe2; - 0xffe9, 0xffec; 0x1d6c1, 0x1d6c1; 0x1d6db, 0x1d6db; 0x1d6fb, 0x1d6fb; 0x1d715, 0x1d715; - 0x1d735, 0x1d735; 0x1d74f, 0x1d74f; 0x1d76f, 0x1d76f; 0x1d789, 0x1d789; 0x1d7a9, 0x1d7a9; - 0x1eef0, 0x1eef1; 0x1d7c3, 0x1d7c3] + [ + (0x2b, 0x2b); + (0x3c, 0x3e); + (0x7c, 0x7c); + (0x7e, 0x7e); + (0xac, 0xac); + (0xb1, 0xb1); + (0xd7, 0xd7); + (0xf7, 0xf7); + (0x3f6, 0x3f6); + (0x606, 0x608); + (0x2044, 0x2044); + (0x2052, 0x2052); + (0x207a, 0x207c); + (0x207b, 0x207b); + (0x208a, 0x208c); + (0x208b, 0x208b); + (0x2118, 0x2118); + (0x2140, 0x2144); + (0x214b, 0x214b); + (0x2190, 0x2194); + (0x219a, 0x219b); + (0x21a0, 0x21a0); + (0x21a3, 0x21a3); + (0x21a6, 0x21a6); + (0x21ae, 0x21ae); + (0x21ce, 0x21cf); + (0x21d2, 0x21d2); + (0x21d4, 0x21d4); + (0x21f4, 0x22ff); + (0x2212, 0x2212); + (0x2320, 0x2321); + (0x237c, 0x237c); + (0x239b, 0x23b3); + (0x23dc, 0x23e1); + (0x25b7, 0x25b7); + (0x25c1, 0x25c1); + (0x25f8, 0x25ff); + (0x266f, 0x266f); + (0x27c0, 0x27c4); + (0x27c7, 0x27e5); + (0x27f0, 0x27ff); + (0x2900, 0x2982); + (0x2999, 0x29d7); + (0x29dc, 0x29fb); + (0x29fe, 0x2aff); + (0x2b30, 0x2b44); + (0x2b47, 0x2b4c); + (0xfb29, 0xfb29); + (0xfe62, 0xfe62); + (0xfe64, 0xfe66); + (0xff0b, 0xff0b); + (0xff1c, 0xff1e); + (0xff5c, 0xff5c); + (0xff5e, 0xff5e); + (0xffe2, 0xffe2); + (0xffe9, 0xffec); + (0x1d6c1, 0x1d6c1); + (0x1d6db, 0x1d6db); + (0x1d6fb, 0x1d6fb); + (0x1d715, 0x1d715); + (0x1d735, 0x1d735); + (0x1d74f, 0x1d74f); + (0x1d76f, 0x1d76f); + (0x1d789, 0x1d789); + (0x1d7a9, 0x1d7a9); + (0x1eef0, 0x1eef1); + (0x1d7c3, 0x1d7c3); + ] let so = - [0xa6, 0xa6; 0xa9, 0xa9; 0xae, 0xae; 0xb0, 0xb0; 0x482, 0x482; - 0x58d, 0x58e; 0x60e, 0x60f; 0x6de, 0x6de; 0x6e9, 0x6e9; 0x6fd, 0x6fe; - 0x7f6, 0x7f6; 0x9fa, 0x9fa; 0xb70, 0xb70; 0xbf3, 0xbf8; 0xbfa, 0xbfa; - 0xc7f, 0xc7f; 0xd4f, 0xd4f; 0xd79, 0xd79; 0xf01, 0xf03; 0xf13, 0xf13; - 0xf15, 0xf17; 0xf1a, 0xf1f; 0xf34, 0xf34; 0xf36, 0xf36; 0xf38, 0xf38; - 0xfbe, 0xfc5; 0xfc7, 0xfcc; 0xfce, 0xfcf; 0xfd5, 0xfd8; 0x109e, 0x109f; - 0x1390, 0x1399; 0x166d, 0x166d; 0x1940, 0x1940; 0x19de, 0x19ff; 0x1b61, 0x1b6a; - 0x1b74, 0x1b7c; 0x2100, 0x2101; 0x2103, 0x2106; 0x2108, 0x2109; 0x2114, 0x2114; - 0x2116, 0x2117; 0x211e, 0x2123; 0x2125, 0x2125; 0x2127, 0x2127; 0x2129, 0x2129; - 0x212e, 0x212e; 0x213a, 0x213b; 0x214a, 0x214a; 0x214c, 0x214d; 0x214f, 0x214f; - 0x218a, 0x218b; 0x2195, 0x2199; 0x219c, 0x219f; 0x21a1, 0x21a2; 0x21a4, 0x21a5; - 0x21a7, 0x21a7; 0x21a7, 0x21ad; 0x21a9, 0x21ad; 0x21af, 0x21cd; 0x21b0, 0x21b1; - 0x21b6, 0x21b7; 0x21bc, 0x21cd; 0x21d0, 0x21d1; 0x21d3, 0x21d3; 0x21d5, 0x21db; - 0x21d5, 0x21f3; 0x21dd, 0x21dd; 0x21e4, 0x21e5; 0x2300, 0x2307; 0x230c, 0x231f; - 0x2322, 0x2328; 0x232b, 0x237b; 0x237d, 0x239a; 0x23b4, 0x23b5; 0x23b4, 0x23db; - 0x23b7, 0x23b7; 0x23d0, 0x23d0; 0x23e2, 0x23e2; 0x23e2, 0x2426; 0x2440, 0x244a; - 0x249c, 0x24e9; 0x24b6, 0x24cf; 0x24b6, 0x24e9; 0x24d0, 0x24e9; 0x2500, 0x25b6; - 0x25a0, 0x25a1; 0x25ae, 0x25b6; 0x25b8, 0x25c0; 0x25bc, 0x25c0; 0x25c2, 0x25f7; - 0x25c6, 0x25c7; 0x25ca, 0x25cb; 0x25cf, 0x25d3; 0x25e2, 0x25e2; 0x25e4, 0x25e4; - 0x25e7, 0x25ec; 0x2600, 0x266e; 0x2605, 0x2606; 0x2640, 0x2640; 0x2642, 0x2642; - 0x2660, 0x2663; 0x266d, 0x266e; 0x2670, 0x2767; 0x2794, 0x27bf; 0x2800, 0x28ff; - 0x2b00, 0x2b2f; 0x2b45, 0x2b46; 0x2b4d, 0x2b73; 0x2b76, 0x2b95; 0x2b97, 0x2bff; - 0x2ce5, 0x2cea; 0x2e50, 0x2e51; 0x2e80, 0x2e99; 0x2e9b, 0x2ef3; 0x2f00, 0x2fd5; - 0x2ff0, 0x2ff1; 0x2ff0, 0x2ffb; 0x2ff2, 0x2ff3; 0x2ff4, 0x2ffb; 0x3004, 0x3004; - 0x3012, 0x3013; 0x3020, 0x3020; 0x3036, 0x3037; 0x303e, 0x303f; 0x3190, 0x3191; - 0x3196, 0x319f; 0x31c0, 0x31e3; 0x3200, 0x321e; 0x322a, 0x3247; 0x3250, 0x3250; - 0x3260, 0x327f; 0x328a, 0x32b0; 0x32c0, 0x33ff; 0x4dc0, 0x4dff; 0xa490, 0xa4c6; - 0xa828, 0xa82b; 0xa836, 0xa837; 0xa839, 0xa839; 0xaa77, 0xaa79; 0xfd40, 0xfd4f; - 0xfdcf, 0xfdcf; 0xfdfd, 0xfdff; 0xffe4, 0xffe4; 0xffe8, 0xffe8; 0xffed, 0xffee; - 0xfffc, 0xfffd; 0x10137, 0x1013f; 0x10179, 0x10189; 0x1018c, 0x1018e; 0x10190, 0x1019c; - 0x101a0, 0x101a0; 0x101d0, 0x101fc; 0x10877, 0x10878; 0x10ac8, 0x10ac8; 0x1173f, 0x1173f; - 0x11fd5, 0x11fdc; 0x11fe1, 0x11ff1; 0x16b3c, 0x16b3f; 0x16b45, 0x16b45; 0x1bc9c, 0x1bc9c; - 0x1cf50, 0x1cfc3; 0x1d000, 0x1d0f5; 0x1d100, 0x1d126; 0x1d129, 0x1d164; 0x1d16a, 0x1d16c; - 0x1d183, 0x1d184; 0x1d18c, 0x1d1a9; 0x1d1ae, 0x1d1ea; 0x1d200, 0x1d241; 0x1d245, 0x1d245; - 0x1d300, 0x1d356; 0x1d800, 0x1d9ff; 0x1da37, 0x1da3a; 0x1da6d, 0x1da74; 0x1da76, 0x1da83; - 0x1da85, 0x1da86; 0x1e14f, 0x1e14f; 0x1ecac, 0x1ecac; 0x1ed2e, 0x1ed2e; 0x1f000, 0x1f02b; - 0x1f030, 0x1f093; 0x1f0a0, 0x1f0ae; 0x1f0b1, 0x1f0bf; 0x1f0c1, 0x1f0cf; 0x1f0d1, 0x1f0f5; - 0x1f10d, 0x1f1ad; 0x1f130, 0x1f149; 0x1f150, 0x1f169; 0x1f170, 0x1f189; 0x1f1e6, 0x1f1ff; - 0x1f1e6, 0x1f202; 0x1f210, 0x1f23b; 0x1f240, 0x1f248; 0x1f250, 0x1f251; 0x1f260, 0x1f265; - 0x1f300, 0x1f3fa; 0x1f400, 0x1f6d7; 0x1f6dd, 0x1f6ec; 0x1f6f0, 0x1f6fc; 0x1f700, 0x1f773; - 0x1f780, 0x1f7d8; 0x1f7e0, 0x1f7eb; 0x1f7f0, 0x1f7f0; 0x1f800, 0x1f80b; 0x1f810, 0x1f847; - 0x1f850, 0x1f859; 0x1f860, 0x1f887; 0x1f890, 0x1f8ad; 0x1f8b0, 0x1f8b1; 0x1f900, 0x1fa53; - 0x1fa60, 0x1fa6d; 0x1fa70, 0x1fa74; 0x1fa78, 0x1fa7c; 0x1fa80, 0x1fa86; 0x1fa90, 0x1faac; - 0x1fab0, 0x1faba; 0x1fac0, 0x1fac5; 0x1fad0, 0x1fad9; 0x1fae0, 0x1fae7; 0x1faf0, 0x1faf6; - 0x1fb94, 0x1fbca; 0x1fb00, 0x1fb92] - - let zl = - [0x2028, 0x2028] + [ + (0xa6, 0xa6); + (0xa9, 0xa9); + (0xae, 0xae); + (0xb0, 0xb0); + (0x482, 0x482); + (0x58d, 0x58e); + (0x60e, 0x60f); + (0x6de, 0x6de); + (0x6e9, 0x6e9); + (0x6fd, 0x6fe); + (0x7f6, 0x7f6); + (0x9fa, 0x9fa); + (0xb70, 0xb70); + (0xbf3, 0xbf8); + (0xbfa, 0xbfa); + (0xc7f, 0xc7f); + (0xd4f, 0xd4f); + (0xd79, 0xd79); + (0xf01, 0xf03); + (0xf13, 0xf13); + (0xf15, 0xf17); + (0xf1a, 0xf1f); + (0xf34, 0xf34); + (0xf36, 0xf36); + (0xf38, 0xf38); + (0xfbe, 0xfc5); + (0xfc7, 0xfcc); + (0xfce, 0xfcf); + (0xfd5, 0xfd8); + (0x109e, 0x109f); + (0x1390, 0x1399); + (0x166d, 0x166d); + (0x1940, 0x1940); + (0x19de, 0x19ff); + (0x1b61, 0x1b6a); + (0x1b74, 0x1b7c); + (0x2100, 0x2101); + (0x2103, 0x2106); + (0x2108, 0x2109); + (0x2114, 0x2114); + (0x2116, 0x2117); + (0x211e, 0x2123); + (0x2125, 0x2125); + (0x2127, 0x2127); + (0x2129, 0x2129); + (0x212e, 0x212e); + (0x213a, 0x213b); + (0x214a, 0x214a); + (0x214c, 0x214d); + (0x214f, 0x214f); + (0x218a, 0x218b); + (0x2195, 0x2199); + (0x219c, 0x219f); + (0x21a1, 0x21a2); + (0x21a4, 0x21a5); + (0x21a7, 0x21a7); + (0x21a7, 0x21ad); + (0x21a9, 0x21ad); + (0x21af, 0x21cd); + (0x21b0, 0x21b1); + (0x21b6, 0x21b7); + (0x21bc, 0x21cd); + (0x21d0, 0x21d1); + (0x21d3, 0x21d3); + (0x21d5, 0x21db); + (0x21d5, 0x21f3); + (0x21dd, 0x21dd); + (0x21e4, 0x21e5); + (0x2300, 0x2307); + (0x230c, 0x231f); + (0x2322, 0x2328); + (0x232b, 0x237b); + (0x237d, 0x239a); + (0x23b4, 0x23b5); + (0x23b4, 0x23db); + (0x23b7, 0x23b7); + (0x23d0, 0x23d0); + (0x23e2, 0x23e2); + (0x23e2, 0x2426); + (0x2440, 0x244a); + (0x249c, 0x24e9); + (0x24b6, 0x24cf); + (0x24b6, 0x24e9); + (0x24d0, 0x24e9); + (0x2500, 0x25b6); + (0x25a0, 0x25a1); + (0x25ae, 0x25b6); + (0x25b8, 0x25c0); + (0x25bc, 0x25c0); + (0x25c2, 0x25f7); + (0x25c6, 0x25c7); + (0x25ca, 0x25cb); + (0x25cf, 0x25d3); + (0x25e2, 0x25e2); + (0x25e4, 0x25e4); + (0x25e7, 0x25ec); + (0x2600, 0x266e); + (0x2605, 0x2606); + (0x2640, 0x2640); + (0x2642, 0x2642); + (0x2660, 0x2663); + (0x266d, 0x266e); + (0x2670, 0x2767); + (0x2794, 0x27bf); + (0x2800, 0x28ff); + (0x2b00, 0x2b2f); + (0x2b45, 0x2b46); + (0x2b4d, 0x2b73); + (0x2b76, 0x2b95); + (0x2b97, 0x2bff); + (0x2ce5, 0x2cea); + (0x2e50, 0x2e51); + (0x2e80, 0x2e99); + (0x2e9b, 0x2ef3); + (0x2f00, 0x2fd5); + (0x2ff0, 0x2ff1); + (0x2ff0, 0x2ffb); + (0x2ff2, 0x2ff3); + (0x2ff4, 0x2ffb); + (0x3004, 0x3004); + (0x3012, 0x3013); + (0x3020, 0x3020); + (0x3036, 0x3037); + (0x303e, 0x303f); + (0x3190, 0x3191); + (0x3196, 0x319f); + (0x31c0, 0x31e3); + (0x3200, 0x321e); + (0x322a, 0x3247); + (0x3250, 0x3250); + (0x3260, 0x327f); + (0x328a, 0x32b0); + (0x32c0, 0x33ff); + (0x4dc0, 0x4dff); + (0xa490, 0xa4c6); + (0xa828, 0xa82b); + (0xa836, 0xa837); + (0xa839, 0xa839); + (0xaa77, 0xaa79); + (0xfd40, 0xfd4f); + (0xfdcf, 0xfdcf); + (0xfdfd, 0xfdff); + (0xffe4, 0xffe4); + (0xffe8, 0xffe8); + (0xffed, 0xffee); + (0xfffc, 0xfffd); + (0x10137, 0x1013f); + (0x10179, 0x10189); + (0x1018c, 0x1018e); + (0x10190, 0x1019c); + (0x101a0, 0x101a0); + (0x101d0, 0x101fc); + (0x10877, 0x10878); + (0x10ac8, 0x10ac8); + (0x1173f, 0x1173f); + (0x11fd5, 0x11fdc); + (0x11fe1, 0x11ff1); + (0x16b3c, 0x16b3f); + (0x16b45, 0x16b45); + (0x1bc9c, 0x1bc9c); + (0x1cf50, 0x1cfc3); + (0x1d000, 0x1d0f5); + (0x1d100, 0x1d126); + (0x1d129, 0x1d164); + (0x1d16a, 0x1d16c); + (0x1d183, 0x1d184); + (0x1d18c, 0x1d1a9); + (0x1d1ae, 0x1d1ea); + (0x1d200, 0x1d241); + (0x1d245, 0x1d245); + (0x1d300, 0x1d356); + (0x1d800, 0x1d9ff); + (0x1da37, 0x1da3a); + (0x1da6d, 0x1da74); + (0x1da76, 0x1da83); + (0x1da85, 0x1da86); + (0x1e14f, 0x1e14f); + (0x1ecac, 0x1ecac); + (0x1ed2e, 0x1ed2e); + (0x1f000, 0x1f02b); + (0x1f030, 0x1f093); + (0x1f0a0, 0x1f0ae); + (0x1f0b1, 0x1f0bf); + (0x1f0c1, 0x1f0cf); + (0x1f0d1, 0x1f0f5); + (0x1f10d, 0x1f1ad); + (0x1f130, 0x1f149); + (0x1f150, 0x1f169); + (0x1f170, 0x1f189); + (0x1f1e6, 0x1f1ff); + (0x1f1e6, 0x1f202); + (0x1f210, 0x1f23b); + (0x1f240, 0x1f248); + (0x1f250, 0x1f251); + (0x1f260, 0x1f265); + (0x1f300, 0x1f3fa); + (0x1f400, 0x1f6d7); + (0x1f6dd, 0x1f6ec); + (0x1f6f0, 0x1f6fc); + (0x1f700, 0x1f773); + (0x1f780, 0x1f7d8); + (0x1f7e0, 0x1f7eb); + (0x1f7f0, 0x1f7f0); + (0x1f800, 0x1f80b); + (0x1f810, 0x1f847); + (0x1f850, 0x1f859); + (0x1f860, 0x1f887); + (0x1f890, 0x1f8ad); + (0x1f8b0, 0x1f8b1); + (0x1f900, 0x1fa53); + (0x1fa60, 0x1fa6d); + (0x1fa70, 0x1fa74); + (0x1fa78, 0x1fa7c); + (0x1fa80, 0x1fa86); + (0x1fa90, 0x1faac); + (0x1fab0, 0x1faba); + (0x1fac0, 0x1fac5); + (0x1fad0, 0x1fad9); + (0x1fae0, 0x1fae7); + (0x1faf0, 0x1faf6); + (0x1fb94, 0x1fbca); + (0x1fb00, 0x1fb92); + ] - let zp = - [0x2029, 0x2029] + let zl = [(0x2028, 0x2028)] + let zp = [(0x2029, 0x2029)] let zs = - [0x20, 0x20; 0xa0, 0xa0; 0x1680, 0x1680; 0x2000, 0x200a; 0x202f, 0x202f; - 0x3000, 0x3000; 0x205f, 0x205f] - - let list = [ - ("cc", cc); - ("cf", cf); - ("cn", cn); - ("co", co); - ("cs", cs); - ("ll", ll); - ("lm", lm); - ("lo", lo); - ("lt", lt); - ("lu", lu); - ("mc", mc); - ("me", me); - ("mn", mn); - ("nd", nd); - ("nl", nl); - ("no", no); - ("pc", pc); - ("pd", pd); - ("pe", pe); - ("pf", pf); - ("pi", pi); - ("po", po); - ("ps", ps); - ("sc", sc); - ("sk", sk); - ("sm", sm); - ("so", so); - ("zl", zl); - ("zp", zp); - ("zs", zs) - ] + [ + (0x20, 0x20); + (0xa0, 0xa0); + (0x1680, 0x1680); + (0x2000, 0x200a); + (0x202f, 0x202f); + (0x3000, 0x3000); + (0x205f, 0x205f); + ] + let list = + [ + ("cc", cc); + ("cf", cf); + ("cn", cn); + ("co", co); + ("cs", cs); + ("ll", ll); + ("lm", lm); + ("lo", lo); + ("lt", lt); + ("lu", lu); + ("mc", mc); + ("me", me); + ("mn", mn); + ("nd", nd); + ("nl", nl); + ("no", no); + ("pc", pc); + ("pd", pd); + ("pe", pe); + ("pf", pf); + ("pi", pi); + ("po", po); + ("ps", ps); + ("sc", sc); + ("sk", sk); + ("sm", sm); + ("so", so); + ("zl", zl); + ("zp", zp); + ("zs", zs); + ] end module Properties = struct - let alphabetic = - [0x41, 0x5a; 0x61, 0x7a; 0xaa, 0xaa; 0xb5, 0xb5; 0xba, 0xba; - 0xc0, 0xd6; 0xd8, 0xf6; 0xf8, 0x1ba; 0x1bb, 0x1bb; 0x1bc, 0x1bf; - 0x1c0, 0x1c3; 0x1c4, 0x293; 0x294, 0x294; 0x295, 0x2af; 0x2b0, 0x2c1; - 0x2c6, 0x2d1; 0x2e0, 0x2e4; 0x2ec, 0x2ec; 0x2ee, 0x2ee; 0x345, 0x345; - 0x370, 0x373; 0x374, 0x374; 0x376, 0x377; 0x37a, 0x37a; 0x37b, 0x37d; - 0x37f, 0x37f; 0x386, 0x386; 0x388, 0x38a; 0x38c, 0x38c; 0x38e, 0x3a1; - 0x3a3, 0x3f5; 0x3f7, 0x481; 0x48a, 0x52f; 0x531, 0x556; 0x559, 0x559; - 0x560, 0x588; 0x5b0, 0x5bd; 0x5bf, 0x5bf; 0x5c1, 0x5c2; 0x5c4, 0x5c5; - 0x5c7, 0x5c7; 0x5d0, 0x5ea; 0x5ef, 0x5f2; 0x610, 0x61a; 0x620, 0x63f; - 0x640, 0x640; 0x641, 0x64a; 0x64b, 0x657; 0x659, 0x65f; 0x66e, 0x66f; - 0x670, 0x670; 0x671, 0x6d3; 0x6d5, 0x6d5; 0x6d6, 0x6dc; 0x6e1, 0x6e4; - 0x6e5, 0x6e6; 0x6e7, 0x6e8; 0x6ed, 0x6ed; 0x6ee, 0x6ef; 0x6fa, 0x6fc; - 0x6ff, 0x6ff; 0x710, 0x710; 0x711, 0x711; 0x712, 0x72f; 0x730, 0x73f; - 0x74d, 0x7a5; 0x7a6, 0x7b0; 0x7b1, 0x7b1; 0x7ca, 0x7ea; 0x7f4, 0x7f5; - 0x7fa, 0x7fa; 0x800, 0x815; 0x816, 0x817; 0x81a, 0x81a; 0x81b, 0x823; - 0x824, 0x824; 0x825, 0x827; 0x828, 0x828; 0x829, 0x82c; 0x840, 0x858; - 0x860, 0x86a; 0x870, 0x887; 0x889, 0x88e; 0x8a0, 0x8c8; 0x8c9, 0x8c9; - 0x8d4, 0x8df; 0x8e3, 0x8e9; 0x8f0, 0x902; 0x903, 0x903; 0x904, 0x939; - 0x93a, 0x93a; 0x93b, 0x93b; 0x93d, 0x93d; 0x93e, 0x940; 0x941, 0x948; - 0x949, 0x94c; 0x94e, 0x94f; 0x950, 0x950; 0x955, 0x957; 0x958, 0x961; - 0x962, 0x963; 0x971, 0x971; 0x972, 0x980; 0x981, 0x981; 0x982, 0x983; - 0x985, 0x98c; 0x98f, 0x990; 0x993, 0x9a8; 0x9aa, 0x9b0; 0x9b2, 0x9b2; - 0x9b6, 0x9b9; 0x9bd, 0x9bd; 0x9be, 0x9c0; 0x9c1, 0x9c4; 0x9c7, 0x9c8; - 0x9cb, 0x9cc; 0x9ce, 0x9ce; 0x9d7, 0x9d7; 0x9dc, 0x9dd; 0x9df, 0x9e1; - 0x9e2, 0x9e3; 0x9f0, 0x9f1; 0x9fc, 0x9fc; 0xa01, 0xa02; 0xa03, 0xa03; - 0xa05, 0xa0a; 0xa0f, 0xa10; 0xa13, 0xa28; 0xa2a, 0xa30; 0xa32, 0xa33; - 0xa35, 0xa36; 0xa38, 0xa39; 0xa3e, 0xa40; 0xa41, 0xa42; 0xa47, 0xa48; - 0xa4b, 0xa4c; 0xa51, 0xa51; 0xa59, 0xa5c; 0xa5e, 0xa5e; 0xa70, 0xa71; - 0xa72, 0xa74; 0xa75, 0xa75; 0xa81, 0xa82; 0xa83, 0xa83; 0xa85, 0xa8d; - 0xa8f, 0xa91; 0xa93, 0xaa8; 0xaaa, 0xab0; 0xab2, 0xab3; 0xab5, 0xab9; - 0xabd, 0xabd; 0xabe, 0xac0; 0xac1, 0xac5; 0xac7, 0xac8; 0xac9, 0xac9; - 0xacb, 0xacc; 0xad0, 0xad0; 0xae0, 0xae1; 0xae2, 0xae3; 0xaf9, 0xaf9; - 0xafa, 0xafc; 0xb01, 0xb01; 0xb02, 0xb03; 0xb05, 0xb0c; 0xb0f, 0xb10; - 0xb13, 0xb28; 0xb2a, 0xb30; 0xb32, 0xb33; 0xb35, 0xb39; 0xb3d, 0xb3d; - 0xb3e, 0xb3e; 0xb3f, 0xb3f; 0xb40, 0xb40; 0xb41, 0xb44; 0xb47, 0xb48; - 0xb4b, 0xb4c; 0xb56, 0xb56; 0xb57, 0xb57; 0xb5c, 0xb5d; 0xb5f, 0xb61; - 0xb62, 0xb63; 0xb71, 0xb71; 0xb82, 0xb82; 0xb83, 0xb83; 0xb85, 0xb8a; - 0xb8e, 0xb90; 0xb92, 0xb95; 0xb99, 0xb9a; 0xb9c, 0xb9c; 0xb9e, 0xb9f; - 0xba3, 0xba4; 0xba8, 0xbaa; 0xbae, 0xbb9; 0xbbe, 0xbbf; 0xbc0, 0xbc0; - 0xbc1, 0xbc2; 0xbc6, 0xbc8; 0xbca, 0xbcc; 0xbd0, 0xbd0; 0xbd7, 0xbd7; - 0xc00, 0xc00; 0xc01, 0xc03; 0xc05, 0xc0c; 0xc0e, 0xc10; 0xc12, 0xc28; - 0xc2a, 0xc39; 0xc3d, 0xc3d; 0xc3e, 0xc40; 0xc41, 0xc44; 0xc46, 0xc48; - 0xc4a, 0xc4c; 0xc55, 0xc56; 0xc58, 0xc5a; 0xc5d, 0xc5d; 0xc60, 0xc61; - 0xc62, 0xc63; 0xc80, 0xc80; 0xc81, 0xc81; 0xc82, 0xc83; 0xc85, 0xc8c; - 0xc8e, 0xc90; 0xc92, 0xca8; 0xcaa, 0xcb3; 0xcb5, 0xcb9; 0xcbd, 0xcbd; - 0xcbe, 0xcbe; 0xcbf, 0xcbf; 0xcc0, 0xcc4; 0xcc6, 0xcc6; 0xcc7, 0xcc8; - 0xcca, 0xccb; 0xccc, 0xccc; 0xcd5, 0xcd6; 0xcdd, 0xcde; 0xce0, 0xce1; - 0xce2, 0xce3; 0xcf1, 0xcf2; 0xd00, 0xd01; 0xd02, 0xd03; 0xd04, 0xd0c; - 0xd0e, 0xd10; 0xd12, 0xd3a; 0xd3d, 0xd3d; 0xd3e, 0xd40; 0xd41, 0xd44; - 0xd46, 0xd48; 0xd4a, 0xd4c; 0xd4e, 0xd4e; 0xd54, 0xd56; 0xd57, 0xd57; - 0xd5f, 0xd61; 0xd62, 0xd63; 0xd7a, 0xd7f; 0xd81, 0xd81; 0xd82, 0xd83; - 0xd85, 0xd96; 0xd9a, 0xdb1; 0xdb3, 0xdbb; 0xdbd, 0xdbd; 0xdc0, 0xdc6; - 0xdcf, 0xdd1; 0xdd2, 0xdd4; 0xdd6, 0xdd6; 0xdd8, 0xddf; 0xdf2, 0xdf3; - 0xe01, 0xe30; 0xe31, 0xe31; 0xe32, 0xe33; 0xe34, 0xe3a; 0xe40, 0xe45; - 0xe46, 0xe46; 0xe4d, 0xe4d; 0xe81, 0xe82; 0xe84, 0xe84; 0xe86, 0xe8a; - 0xe8c, 0xea3; 0xea5, 0xea5; 0xea7, 0xeb0; 0xeb1, 0xeb1; 0xeb2, 0xeb3; - 0xeb4, 0xeb9; 0xebb, 0xebc; 0xebd, 0xebd; 0xec0, 0xec4; 0xec6, 0xec6; - 0xecd, 0xecd; 0xedc, 0xedf; 0xf00, 0xf00; 0xf40, 0xf47; 0xf49, 0xf6c; - 0xf71, 0xf7e; 0xf7f, 0xf7f; 0xf80, 0xf81; 0xf88, 0xf8c; 0xf8d, 0xf97; - 0xf99, 0xfbc; 0x1000, 0x102a; 0x102b, 0x102c; 0x102d, 0x1030; 0x1031, 0x1031; - 0x1032, 0x1036; 0x1038, 0x1038; 0x103b, 0x103c; 0x103d, 0x103e; 0x103f, 0x103f; - 0x1050, 0x1055; 0x1056, 0x1057; 0x1058, 0x1059; 0x105a, 0x105d; 0x105e, 0x1060; - 0x1061, 0x1061; 0x1062, 0x1064; 0x1065, 0x1066; 0x1067, 0x106d; 0x106e, 0x1070; - 0x1071, 0x1074; 0x1075, 0x1081; 0x1082, 0x1082; 0x1083, 0x1084; 0x1085, 0x1086; - 0x1087, 0x108c; 0x108d, 0x108d; 0x108e, 0x108e; 0x108f, 0x108f; 0x109a, 0x109c; - 0x109d, 0x109d; 0x10a0, 0x10c5; 0x10c7, 0x10c7; 0x10cd, 0x10cd; 0x10d0, 0x10fa; - 0x10fc, 0x10fc; 0x10fd, 0x10ff; 0x1100, 0x1248; 0x124a, 0x124d; 0x1250, 0x1256; - 0x1258, 0x1258; 0x125a, 0x125d; 0x1260, 0x1288; 0x128a, 0x128d; 0x1290, 0x12b0; - 0x12b2, 0x12b5; 0x12b8, 0x12be; 0x12c0, 0x12c0; 0x12c2, 0x12c5; 0x12c8, 0x12d6; - 0x12d8, 0x1310; 0x1312, 0x1315; 0x1318, 0x135a; 0x1380, 0x138f; 0x13a0, 0x13f5; - 0x13f8, 0x13fd; 0x1401, 0x166c; 0x166f, 0x167f; 0x1681, 0x169a; 0x16a0, 0x16ea; - 0x16ee, 0x16f0; 0x16f1, 0x16f8; 0x1700, 0x1711; 0x1712, 0x1713; 0x171f, 0x1731; - 0x1732, 0x1733; 0x1740, 0x1751; 0x1752, 0x1753; 0x1760, 0x176c; 0x176e, 0x1770; - 0x1772, 0x1773; 0x1780, 0x17b3; 0x17b6, 0x17b6; 0x17b7, 0x17bd; 0x17be, 0x17c5; - 0x17c6, 0x17c6; 0x17c7, 0x17c8; 0x17d7, 0x17d7; 0x17dc, 0x17dc; 0x1820, 0x1842; - 0x1843, 0x1843; 0x1844, 0x1878; 0x1880, 0x1884; 0x1885, 0x1886; 0x1887, 0x18a8; - 0x18a9, 0x18a9; 0x18aa, 0x18aa; 0x18b0, 0x18f5; 0x1900, 0x191e; 0x1920, 0x1922; - 0x1923, 0x1926; 0x1927, 0x1928; 0x1929, 0x192b; 0x1930, 0x1931; 0x1932, 0x1932; - 0x1933, 0x1938; 0x1950, 0x196d; 0x1970, 0x1974; 0x1980, 0x19ab; 0x19b0, 0x19c9; - 0x1a00, 0x1a16; 0x1a17, 0x1a18; 0x1a19, 0x1a1a; 0x1a1b, 0x1a1b; 0x1a20, 0x1a54; - 0x1a55, 0x1a55; 0x1a56, 0x1a56; 0x1a57, 0x1a57; 0x1a58, 0x1a5e; 0x1a61, 0x1a61; - 0x1a62, 0x1a62; 0x1a63, 0x1a64; 0x1a65, 0x1a6c; 0x1a6d, 0x1a72; 0x1a73, 0x1a74; - 0x1aa7, 0x1aa7; 0x1abf, 0x1ac0; 0x1acc, 0x1ace; 0x1b00, 0x1b03; 0x1b04, 0x1b04; - 0x1b05, 0x1b33; 0x1b35, 0x1b35; 0x1b36, 0x1b3a; 0x1b3b, 0x1b3b; 0x1b3c, 0x1b3c; - 0x1b3d, 0x1b41; 0x1b42, 0x1b42; 0x1b43, 0x1b43; 0x1b45, 0x1b4c; 0x1b80, 0x1b81; - 0x1b82, 0x1b82; 0x1b83, 0x1ba0; 0x1ba1, 0x1ba1; 0x1ba2, 0x1ba5; 0x1ba6, 0x1ba7; - 0x1ba8, 0x1ba9; 0x1bac, 0x1bad; 0x1bae, 0x1baf; 0x1bba, 0x1be5; 0x1be7, 0x1be7; - 0x1be8, 0x1be9; 0x1bea, 0x1bec; 0x1bed, 0x1bed; 0x1bee, 0x1bee; 0x1bef, 0x1bf1; - 0x1c00, 0x1c23; 0x1c24, 0x1c2b; 0x1c2c, 0x1c33; 0x1c34, 0x1c35; 0x1c36, 0x1c36; - 0x1c4d, 0x1c4f; 0x1c5a, 0x1c77; 0x1c78, 0x1c7d; 0x1c80, 0x1c88; 0x1c90, 0x1cba; - 0x1cbd, 0x1cbf; 0x1ce9, 0x1cec; 0x1cee, 0x1cf3; 0x1cf5, 0x1cf6; 0x1cfa, 0x1cfa; - 0x1d00, 0x1d2b; 0x1d2c, 0x1d6a; 0x1d6b, 0x1d77; 0x1d78, 0x1d78; 0x1d79, 0x1d9a; - 0x1d9b, 0x1dbf; 0x1de7, 0x1df4; 0x1e00, 0x1f15; 0x1f18, 0x1f1d; 0x1f20, 0x1f45; - 0x1f48, 0x1f4d; 0x1f50, 0x1f57; 0x1f59, 0x1f59; 0x1f5b, 0x1f5b; 0x1f5d, 0x1f5d; - 0x1f5f, 0x1f7d; 0x1f80, 0x1fb4; 0x1fb6, 0x1fbc; 0x1fbe, 0x1fbe; 0x1fc2, 0x1fc4; - 0x1fc6, 0x1fcc; 0x1fd0, 0x1fd3; 0x1fd6, 0x1fdb; 0x1fe0, 0x1fec; 0x1ff2, 0x1ff4; - 0x1ff6, 0x1ffc; 0x2071, 0x2071; 0x207f, 0x207f; 0x2090, 0x209c; 0x2102, 0x2102; - 0x2107, 0x2107; 0x210a, 0x2113; 0x2115, 0x2115; 0x2119, 0x211d; 0x2124, 0x2124; - 0x2126, 0x2126; 0x2128, 0x2128; 0x212a, 0x212d; 0x212f, 0x2134; 0x2135, 0x2138; - 0x2139, 0x2139; 0x213c, 0x213f; 0x2145, 0x2149; 0x214e, 0x214e; 0x2160, 0x2182; - 0x2183, 0x2184; 0x2185, 0x2188; 0x24b6, 0x24e9; 0x2c00, 0x2c7b; 0x2c7c, 0x2c7d; - 0x2c7e, 0x2ce4; 0x2ceb, 0x2cee; 0x2cf2, 0x2cf3; 0x2d00, 0x2d25; 0x2d27, 0x2d27; - 0x2d2d, 0x2d2d; 0x2d30, 0x2d67; 0x2d6f, 0x2d6f; 0x2d80, 0x2d96; 0x2da0, 0x2da6; - 0x2da8, 0x2dae; 0x2db0, 0x2db6; 0x2db8, 0x2dbe; 0x2dc0, 0x2dc6; 0x2dc8, 0x2dce; - 0x2dd0, 0x2dd6; 0x2dd8, 0x2dde; 0x2de0, 0x2dff; 0x2e2f, 0x2e2f; 0x3005, 0x3005; - 0x3006, 0x3006; 0x3007, 0x3007; 0x3021, 0x3029; 0x3031, 0x3035; 0x3038, 0x303a; - 0x303b, 0x303b; 0x303c, 0x303c; 0x3041, 0x3096; 0x309d, 0x309e; 0x309f, 0x309f; - 0x30a1, 0x30fa; 0x30fc, 0x30fe; 0x30ff, 0x30ff; 0x3105, 0x312f; 0x3131, 0x318e; - 0x31a0, 0x31bf; 0x31f0, 0x31ff; 0x3400, 0x4dbf; 0x4e00, 0xa014; 0xa015, 0xa015; - 0xa016, 0xa48c; 0xa4d0, 0xa4f7; 0xa4f8, 0xa4fd; 0xa500, 0xa60b; 0xa60c, 0xa60c; - 0xa610, 0xa61f; 0xa62a, 0xa62b; 0xa640, 0xa66d; 0xa66e, 0xa66e; 0xa674, 0xa67b; - 0xa67f, 0xa67f; 0xa680, 0xa69b; 0xa69c, 0xa69d; 0xa69e, 0xa69f; 0xa6a0, 0xa6e5; - 0xa6e6, 0xa6ef; 0xa717, 0xa71f; 0xa722, 0xa76f; 0xa770, 0xa770; 0xa771, 0xa787; - 0xa788, 0xa788; 0xa78b, 0xa78e; 0xa78f, 0xa78f; 0xa790, 0xa7ca; 0xa7d0, 0xa7d1; - 0xa7d3, 0xa7d3; 0xa7d5, 0xa7d9; 0xa7f2, 0xa7f4; 0xa7f5, 0xa7f6; 0xa7f7, 0xa7f7; - 0xa7f8, 0xa7f9; 0xa7fa, 0xa7fa; 0xa7fb, 0xa801; 0xa802, 0xa802; 0xa803, 0xa805; - 0xa807, 0xa80a; 0xa80b, 0xa80b; 0xa80c, 0xa822; 0xa823, 0xa824; 0xa825, 0xa826; - 0xa827, 0xa827; 0xa840, 0xa873; 0xa880, 0xa881; 0xa882, 0xa8b3; 0xa8b4, 0xa8c3; - 0xa8c5, 0xa8c5; 0xa8f2, 0xa8f7; 0xa8fb, 0xa8fb; 0xa8fd, 0xa8fe; 0xa8ff, 0xa8ff; - 0xa90a, 0xa925; 0xa926, 0xa92a; 0xa930, 0xa946; 0xa947, 0xa951; 0xa952, 0xa952; - 0xa960, 0xa97c; 0xa980, 0xa982; 0xa983, 0xa983; 0xa984, 0xa9b2; 0xa9b4, 0xa9b5; - 0xa9b6, 0xa9b9; 0xa9ba, 0xa9bb; 0xa9bc, 0xa9bd; 0xa9be, 0xa9bf; 0xa9cf, 0xa9cf; - 0xa9e0, 0xa9e4; 0xa9e5, 0xa9e5; 0xa9e6, 0xa9e6; 0xa9e7, 0xa9ef; 0xa9fa, 0xa9fe; - 0xaa00, 0xaa28; 0xaa29, 0xaa2e; 0xaa2f, 0xaa30; 0xaa31, 0xaa32; 0xaa33, 0xaa34; - 0xaa35, 0xaa36; 0xaa40, 0xaa42; 0xaa43, 0xaa43; 0xaa44, 0xaa4b; 0xaa4c, 0xaa4c; - 0xaa4d, 0xaa4d; 0xaa60, 0xaa6f; 0xaa70, 0xaa70; 0xaa71, 0xaa76; 0xaa7a, 0xaa7a; - 0xaa7b, 0xaa7b; 0xaa7c, 0xaa7c; 0xaa7d, 0xaa7d; 0xaa7e, 0xaaaf; 0xaab0, 0xaab0; - 0xaab1, 0xaab1; 0xaab2, 0xaab4; 0xaab5, 0xaab6; 0xaab7, 0xaab8; 0xaab9, 0xaabd; - 0xaabe, 0xaabe; 0xaac0, 0xaac0; 0xaac2, 0xaac2; 0xaadb, 0xaadc; 0xaadd, 0xaadd; - 0xaae0, 0xaaea; 0xaaeb, 0xaaeb; 0xaaec, 0xaaed; 0xaaee, 0xaaef; 0xaaf2, 0xaaf2; - 0xaaf3, 0xaaf4; 0xaaf5, 0xaaf5; 0xab01, 0xab06; 0xab09, 0xab0e; 0xab11, 0xab16; - 0xab20, 0xab26; 0xab28, 0xab2e; 0xab30, 0xab5a; 0xab5c, 0xab5f; 0xab60, 0xab68; - 0xab69, 0xab69; 0xab70, 0xabbf; 0xabc0, 0xabe2; 0xabe3, 0xabe4; 0xabe5, 0xabe5; - 0xabe6, 0xabe7; 0xabe8, 0xabe8; 0xabe9, 0xabea; 0xac00, 0xd7a3; 0xd7b0, 0xd7c6; - 0xd7cb, 0xd7fb; 0xf900, 0xfa6d; 0xfa70, 0xfad9; 0xfb00, 0xfb06; 0xfb13, 0xfb17; - 0xfb1d, 0xfb1d; 0xfb1e, 0xfb1e; 0xfb1f, 0xfb28; 0xfb2a, 0xfb36; 0xfb38, 0xfb3c; - 0xfb3e, 0xfb3e; 0xfb40, 0xfb41; 0xfb43, 0xfb44; 0xfb46, 0xfbb1; 0xfbd3, 0xfd3d; - 0xfd50, 0xfd8f; 0xfd92, 0xfdc7; 0xfdf0, 0xfdfb; 0xfe70, 0xfe74; 0xfe76, 0xfefc; - 0xff21, 0xff3a; 0xff41, 0xff5a; 0xff66, 0xff6f; 0xff70, 0xff70; 0xff71, 0xff9d; - 0xff9e, 0xff9f; 0xffa0, 0xffbe; 0xffc2, 0xffc7; 0xffca, 0xffcf; 0xffd2, 0xffd7; - 0xffda, 0xffdc; 0x10000, 0x1000b; 0x1000d, 0x10026; 0x10028, 0x1003a; 0x1003c, 0x1003d; - 0x1003f, 0x1004d; 0x10050, 0x1005d; 0x10080, 0x100fa; 0x10140, 0x10174; 0x10280, 0x1029c; - 0x102a0, 0x102d0; 0x10300, 0x1031f; 0x1032d, 0x10340; 0x10341, 0x10341; 0x10342, 0x10349; - 0x1034a, 0x1034a; 0x10350, 0x10375; 0x10376, 0x1037a; 0x10380, 0x1039d; 0x103a0, 0x103c3; - 0x103c8, 0x103cf; 0x103d1, 0x103d5; 0x10400, 0x1044f; 0x10450, 0x1049d; 0x104b0, 0x104d3; - 0x104d8, 0x104fb; 0x10500, 0x10527; 0x10530, 0x10563; 0x10570, 0x1057a; 0x1057c, 0x1058a; - 0x1058c, 0x10592; 0x10594, 0x10595; 0x10597, 0x105a1; 0x105a3, 0x105b1; 0x105b3, 0x105b9; - 0x105bb, 0x105bc; 0x10600, 0x10736; 0x10740, 0x10755; 0x10760, 0x10767; 0x10780, 0x10785; - 0x10787, 0x107b0; 0x107b2, 0x107ba; 0x10800, 0x10805; 0x10808, 0x10808; 0x1080a, 0x10835; - 0x10837, 0x10838; 0x1083c, 0x1083c; 0x1083f, 0x10855; 0x10860, 0x10876; 0x10880, 0x1089e; - 0x108e0, 0x108f2; 0x108f4, 0x108f5; 0x10900, 0x10915; 0x10920, 0x10939; 0x10980, 0x109b7; - 0x109be, 0x109bf; 0x10a00, 0x10a00; 0x10a01, 0x10a03; 0x10a05, 0x10a06; 0x10a0c, 0x10a0f; - 0x10a10, 0x10a13; 0x10a15, 0x10a17; 0x10a19, 0x10a35; 0x10a60, 0x10a7c; 0x10a80, 0x10a9c; - 0x10ac0, 0x10ac7; 0x10ac9, 0x10ae4; 0x10b00, 0x10b35; 0x10b40, 0x10b55; 0x10b60, 0x10b72; - 0x10b80, 0x10b91; 0x10c00, 0x10c48; 0x10c80, 0x10cb2; 0x10cc0, 0x10cf2; 0x10d00, 0x10d23; - 0x10d24, 0x10d27; 0x10e80, 0x10ea9; 0x10eab, 0x10eac; 0x10eb0, 0x10eb1; 0x10f00, 0x10f1c; - 0x10f27, 0x10f27; 0x10f30, 0x10f45; 0x10f70, 0x10f81; 0x10fb0, 0x10fc4; 0x10fe0, 0x10ff6; - 0x11000, 0x11000; 0x11001, 0x11001; 0x11002, 0x11002; 0x11003, 0x11037; 0x11038, 0x11045; - 0x11071, 0x11072; 0x11073, 0x11074; 0x11075, 0x11075; 0x11082, 0x11082; 0x11083, 0x110af; - 0x110b0, 0x110b2; 0x110b3, 0x110b6; 0x110b7, 0x110b8; 0x110c2, 0x110c2; 0x110d0, 0x110e8; - 0x11100, 0x11102; 0x11103, 0x11126; 0x11127, 0x1112b; 0x1112c, 0x1112c; 0x1112d, 0x11132; - 0x11144, 0x11144; 0x11145, 0x11146; 0x11147, 0x11147; 0x11150, 0x11172; 0x11176, 0x11176; - 0x11180, 0x11181; 0x11182, 0x11182; 0x11183, 0x111b2; 0x111b3, 0x111b5; 0x111b6, 0x111be; - 0x111bf, 0x111bf; 0x111c1, 0x111c4; 0x111ce, 0x111ce; 0x111cf, 0x111cf; 0x111da, 0x111da; - 0x111dc, 0x111dc; 0x11200, 0x11211; 0x11213, 0x1122b; 0x1122c, 0x1122e; 0x1122f, 0x11231; - 0x11232, 0x11233; 0x11234, 0x11234; 0x11237, 0x11237; 0x1123e, 0x1123e; 0x11280, 0x11286; - 0x11288, 0x11288; 0x1128a, 0x1128d; 0x1128f, 0x1129d; 0x1129f, 0x112a8; 0x112b0, 0x112de; - 0x112df, 0x112df; 0x112e0, 0x112e2; 0x112e3, 0x112e8; 0x11300, 0x11301; 0x11302, 0x11303; - 0x11305, 0x1130c; 0x1130f, 0x11310; 0x11313, 0x11328; 0x1132a, 0x11330; 0x11332, 0x11333; - 0x11335, 0x11339; 0x1133d, 0x1133d; 0x1133e, 0x1133f; 0x11340, 0x11340; 0x11341, 0x11344; - 0x11347, 0x11348; 0x1134b, 0x1134c; 0x11350, 0x11350; 0x11357, 0x11357; 0x1135d, 0x11361; - 0x11362, 0x11363; 0x11400, 0x11434; 0x11435, 0x11437; 0x11438, 0x1143f; 0x11440, 0x11441; - 0x11443, 0x11444; 0x11445, 0x11445; 0x11447, 0x1144a; 0x1145f, 0x11461; 0x11480, 0x114af; - 0x114b0, 0x114b2; 0x114b3, 0x114b8; 0x114b9, 0x114b9; 0x114ba, 0x114ba; 0x114bb, 0x114be; - 0x114bf, 0x114c0; 0x114c1, 0x114c1; 0x114c4, 0x114c5; 0x114c7, 0x114c7; 0x11580, 0x115ae; - 0x115af, 0x115b1; 0x115b2, 0x115b5; 0x115b8, 0x115bb; 0x115bc, 0x115bd; 0x115be, 0x115be; - 0x115d8, 0x115db; 0x115dc, 0x115dd; 0x11600, 0x1162f; 0x11630, 0x11632; 0x11633, 0x1163a; - 0x1163b, 0x1163c; 0x1163d, 0x1163d; 0x1163e, 0x1163e; 0x11640, 0x11640; 0x11644, 0x11644; - 0x11680, 0x116aa; 0x116ab, 0x116ab; 0x116ac, 0x116ac; 0x116ad, 0x116ad; 0x116ae, 0x116af; - 0x116b0, 0x116b5; 0x116b8, 0x116b8; 0x11700, 0x1171a; 0x1171d, 0x1171f; 0x11720, 0x11721; - 0x11722, 0x11725; 0x11726, 0x11726; 0x11727, 0x1172a; 0x11740, 0x11746; 0x11800, 0x1182b; - 0x1182c, 0x1182e; 0x1182f, 0x11837; 0x11838, 0x11838; 0x118a0, 0x118df; 0x118ff, 0x11906; - 0x11909, 0x11909; 0x1190c, 0x11913; 0x11915, 0x11916; 0x11918, 0x1192f; 0x11930, 0x11935; - 0x11937, 0x11938; 0x1193b, 0x1193c; 0x1193f, 0x1193f; 0x11940, 0x11940; 0x11941, 0x11941; - 0x11942, 0x11942; 0x119a0, 0x119a7; 0x119aa, 0x119d0; 0x119d1, 0x119d3; 0x119d4, 0x119d7; - 0x119da, 0x119db; 0x119dc, 0x119df; 0x119e1, 0x119e1; 0x119e3, 0x119e3; 0x119e4, 0x119e4; - 0x11a00, 0x11a00; 0x11a01, 0x11a0a; 0x11a0b, 0x11a32; 0x11a35, 0x11a38; 0x11a39, 0x11a39; - 0x11a3a, 0x11a3a; 0x11a3b, 0x11a3e; 0x11a50, 0x11a50; 0x11a51, 0x11a56; 0x11a57, 0x11a58; - 0x11a59, 0x11a5b; 0x11a5c, 0x11a89; 0x11a8a, 0x11a96; 0x11a97, 0x11a97; 0x11a9d, 0x11a9d; - 0x11ab0, 0x11af8; 0x11c00, 0x11c08; 0x11c0a, 0x11c2e; 0x11c2f, 0x11c2f; 0x11c30, 0x11c36; - 0x11c38, 0x11c3d; 0x11c3e, 0x11c3e; 0x11c40, 0x11c40; 0x11c72, 0x11c8f; 0x11c92, 0x11ca7; - 0x11ca9, 0x11ca9; 0x11caa, 0x11cb0; 0x11cb1, 0x11cb1; 0x11cb2, 0x11cb3; 0x11cb4, 0x11cb4; - 0x11cb5, 0x11cb6; 0x11d00, 0x11d06; 0x11d08, 0x11d09; 0x11d0b, 0x11d30; 0x11d31, 0x11d36; - 0x11d3a, 0x11d3a; 0x11d3c, 0x11d3d; 0x11d3f, 0x11d41; 0x11d43, 0x11d43; 0x11d46, 0x11d46; - 0x11d47, 0x11d47; 0x11d60, 0x11d65; 0x11d67, 0x11d68; 0x11d6a, 0x11d89; 0x11d8a, 0x11d8e; - 0x11d90, 0x11d91; 0x11d93, 0x11d94; 0x11d95, 0x11d95; 0x11d96, 0x11d96; 0x11d98, 0x11d98; - 0x11ee0, 0x11ef2; 0x11ef3, 0x11ef4; 0x11ef5, 0x11ef6; 0x11fb0, 0x11fb0; 0x12000, 0x12399; - 0x12400, 0x1246e; 0x12480, 0x12543; 0x12f90, 0x12ff0; 0x13000, 0x1342e; 0x14400, 0x14646; - 0x16800, 0x16a38; 0x16a40, 0x16a5e; 0x16a70, 0x16abe; 0x16ad0, 0x16aed; 0x16b00, 0x16b2f; - 0x16b40, 0x16b43; 0x16b63, 0x16b77; 0x16b7d, 0x16b8f; 0x16e40, 0x16e7f; 0x16f00, 0x16f4a; - 0x16f4f, 0x16f4f; 0x16f50, 0x16f50; 0x16f51, 0x16f87; 0x16f8f, 0x16f92; 0x16f93, 0x16f9f; - 0x16fe0, 0x16fe1; 0x16fe3, 0x16fe3; 0x16ff0, 0x16ff1; 0x17000, 0x187f7; 0x18800, 0x18cd5; - 0x18d00, 0x18d08; 0x1aff0, 0x1aff3; 0x1aff5, 0x1affb; 0x1affd, 0x1affe; 0x1b000, 0x1b122; - 0x1b150, 0x1b152; 0x1b164, 0x1b167; 0x1b170, 0x1b2fb; 0x1bc00, 0x1bc6a; 0x1bc70, 0x1bc7c; - 0x1bc80, 0x1bc88; 0x1bc90, 0x1bc99; 0x1bc9e, 0x1bc9e; 0x1d400, 0x1d454; 0x1d456, 0x1d49c; - 0x1d49e, 0x1d49f; 0x1d4a2, 0x1d4a2; 0x1d4a5, 0x1d4a6; 0x1d4a9, 0x1d4ac; 0x1d4ae, 0x1d4b9; - 0x1d4bb, 0x1d4bb; 0x1d4bd, 0x1d4c3; 0x1d4c5, 0x1d505; 0x1d507, 0x1d50a; 0x1d50d, 0x1d514; - 0x1d516, 0x1d51c; 0x1d51e, 0x1d539; 0x1d53b, 0x1d53e; 0x1d540, 0x1d544; 0x1d546, 0x1d546; - 0x1d54a, 0x1d550; 0x1d552, 0x1d6a5; 0x1d6a8, 0x1d6c0; 0x1d6c2, 0x1d6da; 0x1d6dc, 0x1d6fa; - 0x1d6fc, 0x1d714; 0x1d716, 0x1d734; 0x1d736, 0x1d74e; 0x1d750, 0x1d76e; 0x1d770, 0x1d788; - 0x1d78a, 0x1d7a8; 0x1d7aa, 0x1d7c2; 0x1d7c4, 0x1d7cb; 0x1df00, 0x1df09; 0x1df0a, 0x1df0a; - 0x1df0b, 0x1df1e; 0x1e000, 0x1e006; 0x1e008, 0x1e018; 0x1e01b, 0x1e021; 0x1e023, 0x1e024; - 0x1e026, 0x1e02a; 0x1e100, 0x1e12c; 0x1e137, 0x1e13d; 0x1e14e, 0x1e14e; 0x1e290, 0x1e2ad; - 0x1e2c0, 0x1e2eb; 0x1e7e0, 0x1e7e6; 0x1e7e8, 0x1e7eb; 0x1e7ed, 0x1e7ee; 0x1e7f0, 0x1e7fe; - 0x1e800, 0x1e8c4; 0x1e900, 0x1e943; 0x1e947, 0x1e947; 0x1e94b, 0x1e94b; 0x1ee00, 0x1ee03; - 0x1ee05, 0x1ee1f; 0x1ee21, 0x1ee22; 0x1ee24, 0x1ee24; 0x1ee27, 0x1ee27; 0x1ee29, 0x1ee32; - 0x1ee34, 0x1ee37; 0x1ee39, 0x1ee39; 0x1ee3b, 0x1ee3b; 0x1ee42, 0x1ee42; 0x1ee47, 0x1ee47; - 0x1ee49, 0x1ee49; 0x1ee4b, 0x1ee4b; 0x1ee4d, 0x1ee4f; 0x1ee51, 0x1ee52; 0x1ee54, 0x1ee54; - 0x1ee57, 0x1ee57; 0x1ee59, 0x1ee59; 0x1ee5b, 0x1ee5b; 0x1ee5d, 0x1ee5d; 0x1ee5f, 0x1ee5f; - 0x1ee61, 0x1ee62; 0x1ee64, 0x1ee64; 0x1ee67, 0x1ee6a; 0x1ee6c, 0x1ee72; 0x1ee74, 0x1ee77; - 0x1ee79, 0x1ee7c; 0x1ee7e, 0x1ee7e; 0x1ee80, 0x1ee89; 0x1ee8b, 0x1ee9b; 0x1eea1, 0x1eea3; - 0x1eea5, 0x1eea9; 0x1eeab, 0x1eebb; 0x1f130, 0x1f149; 0x1f150, 0x1f169; 0x1f170, 0x1f189; - 0x20000, 0x2a6df; 0x2a700, 0x2b738; 0x2b740, 0x2b81d; 0x2b820, 0x2cea1; 0x2ceb0, 0x2ebe0; - 0x30000, 0x3134a; 0x2f800, 0x2fa1d] + [ + (0x41, 0x5a); + (0x61, 0x7a); + (0xaa, 0xaa); + (0xb5, 0xb5); + (0xba, 0xba); + (0xc0, 0xd6); + (0xd8, 0xf6); + (0xf8, 0x1ba); + (0x1bb, 0x1bb); + (0x1bc, 0x1bf); + (0x1c0, 0x1c3); + (0x1c4, 0x293); + (0x294, 0x294); + (0x295, 0x2af); + (0x2b0, 0x2c1); + (0x2c6, 0x2d1); + (0x2e0, 0x2e4); + (0x2ec, 0x2ec); + (0x2ee, 0x2ee); + (0x345, 0x345); + (0x370, 0x373); + (0x374, 0x374); + (0x376, 0x377); + (0x37a, 0x37a); + (0x37b, 0x37d); + (0x37f, 0x37f); + (0x386, 0x386); + (0x388, 0x38a); + (0x38c, 0x38c); + (0x38e, 0x3a1); + (0x3a3, 0x3f5); + (0x3f7, 0x481); + (0x48a, 0x52f); + (0x531, 0x556); + (0x559, 0x559); + (0x560, 0x588); + (0x5b0, 0x5bd); + (0x5bf, 0x5bf); + (0x5c1, 0x5c2); + (0x5c4, 0x5c5); + (0x5c7, 0x5c7); + (0x5d0, 0x5ea); + (0x5ef, 0x5f2); + (0x610, 0x61a); + (0x620, 0x63f); + (0x640, 0x640); + (0x641, 0x64a); + (0x64b, 0x657); + (0x659, 0x65f); + (0x66e, 0x66f); + (0x670, 0x670); + (0x671, 0x6d3); + (0x6d5, 0x6d5); + (0x6d6, 0x6dc); + (0x6e1, 0x6e4); + (0x6e5, 0x6e6); + (0x6e7, 0x6e8); + (0x6ed, 0x6ed); + (0x6ee, 0x6ef); + (0x6fa, 0x6fc); + (0x6ff, 0x6ff); + (0x710, 0x710); + (0x711, 0x711); + (0x712, 0x72f); + (0x730, 0x73f); + (0x74d, 0x7a5); + (0x7a6, 0x7b0); + (0x7b1, 0x7b1); + (0x7ca, 0x7ea); + (0x7f4, 0x7f5); + (0x7fa, 0x7fa); + (0x800, 0x815); + (0x816, 0x817); + (0x81a, 0x81a); + (0x81b, 0x823); + (0x824, 0x824); + (0x825, 0x827); + (0x828, 0x828); + (0x829, 0x82c); + (0x840, 0x858); + (0x860, 0x86a); + (0x870, 0x887); + (0x889, 0x88e); + (0x8a0, 0x8c8); + (0x8c9, 0x8c9); + (0x8d4, 0x8df); + (0x8e3, 0x8e9); + (0x8f0, 0x902); + (0x903, 0x903); + (0x904, 0x939); + (0x93a, 0x93a); + (0x93b, 0x93b); + (0x93d, 0x93d); + (0x93e, 0x940); + (0x941, 0x948); + (0x949, 0x94c); + (0x94e, 0x94f); + (0x950, 0x950); + (0x955, 0x957); + (0x958, 0x961); + (0x962, 0x963); + (0x971, 0x971); + (0x972, 0x980); + (0x981, 0x981); + (0x982, 0x983); + (0x985, 0x98c); + (0x98f, 0x990); + (0x993, 0x9a8); + (0x9aa, 0x9b0); + (0x9b2, 0x9b2); + (0x9b6, 0x9b9); + (0x9bd, 0x9bd); + (0x9be, 0x9c0); + (0x9c1, 0x9c4); + (0x9c7, 0x9c8); + (0x9cb, 0x9cc); + (0x9ce, 0x9ce); + (0x9d7, 0x9d7); + (0x9dc, 0x9dd); + (0x9df, 0x9e1); + (0x9e2, 0x9e3); + (0x9f0, 0x9f1); + (0x9fc, 0x9fc); + (0xa01, 0xa02); + (0xa03, 0xa03); + (0xa05, 0xa0a); + (0xa0f, 0xa10); + (0xa13, 0xa28); + (0xa2a, 0xa30); + (0xa32, 0xa33); + (0xa35, 0xa36); + (0xa38, 0xa39); + (0xa3e, 0xa40); + (0xa41, 0xa42); + (0xa47, 0xa48); + (0xa4b, 0xa4c); + (0xa51, 0xa51); + (0xa59, 0xa5c); + (0xa5e, 0xa5e); + (0xa70, 0xa71); + (0xa72, 0xa74); + (0xa75, 0xa75); + (0xa81, 0xa82); + (0xa83, 0xa83); + (0xa85, 0xa8d); + (0xa8f, 0xa91); + (0xa93, 0xaa8); + (0xaaa, 0xab0); + (0xab2, 0xab3); + (0xab5, 0xab9); + (0xabd, 0xabd); + (0xabe, 0xac0); + (0xac1, 0xac5); + (0xac7, 0xac8); + (0xac9, 0xac9); + (0xacb, 0xacc); + (0xad0, 0xad0); + (0xae0, 0xae1); + (0xae2, 0xae3); + (0xaf9, 0xaf9); + (0xafa, 0xafc); + (0xb01, 0xb01); + (0xb02, 0xb03); + (0xb05, 0xb0c); + (0xb0f, 0xb10); + (0xb13, 0xb28); + (0xb2a, 0xb30); + (0xb32, 0xb33); + (0xb35, 0xb39); + (0xb3d, 0xb3d); + (0xb3e, 0xb3e); + (0xb3f, 0xb3f); + (0xb40, 0xb40); + (0xb41, 0xb44); + (0xb47, 0xb48); + (0xb4b, 0xb4c); + (0xb56, 0xb56); + (0xb57, 0xb57); + (0xb5c, 0xb5d); + (0xb5f, 0xb61); + (0xb62, 0xb63); + (0xb71, 0xb71); + (0xb82, 0xb82); + (0xb83, 0xb83); + (0xb85, 0xb8a); + (0xb8e, 0xb90); + (0xb92, 0xb95); + (0xb99, 0xb9a); + (0xb9c, 0xb9c); + (0xb9e, 0xb9f); + (0xba3, 0xba4); + (0xba8, 0xbaa); + (0xbae, 0xbb9); + (0xbbe, 0xbbf); + (0xbc0, 0xbc0); + (0xbc1, 0xbc2); + (0xbc6, 0xbc8); + (0xbca, 0xbcc); + (0xbd0, 0xbd0); + (0xbd7, 0xbd7); + (0xc00, 0xc00); + (0xc01, 0xc03); + (0xc05, 0xc0c); + (0xc0e, 0xc10); + (0xc12, 0xc28); + (0xc2a, 0xc39); + (0xc3d, 0xc3d); + (0xc3e, 0xc40); + (0xc41, 0xc44); + (0xc46, 0xc48); + (0xc4a, 0xc4c); + (0xc55, 0xc56); + (0xc58, 0xc5a); + (0xc5d, 0xc5d); + (0xc60, 0xc61); + (0xc62, 0xc63); + (0xc80, 0xc80); + (0xc81, 0xc81); + (0xc82, 0xc83); + (0xc85, 0xc8c); + (0xc8e, 0xc90); + (0xc92, 0xca8); + (0xcaa, 0xcb3); + (0xcb5, 0xcb9); + (0xcbd, 0xcbd); + (0xcbe, 0xcbe); + (0xcbf, 0xcbf); + (0xcc0, 0xcc4); + (0xcc6, 0xcc6); + (0xcc7, 0xcc8); + (0xcca, 0xccb); + (0xccc, 0xccc); + (0xcd5, 0xcd6); + (0xcdd, 0xcde); + (0xce0, 0xce1); + (0xce2, 0xce3); + (0xcf1, 0xcf2); + (0xd00, 0xd01); + (0xd02, 0xd03); + (0xd04, 0xd0c); + (0xd0e, 0xd10); + (0xd12, 0xd3a); + (0xd3d, 0xd3d); + (0xd3e, 0xd40); + (0xd41, 0xd44); + (0xd46, 0xd48); + (0xd4a, 0xd4c); + (0xd4e, 0xd4e); + (0xd54, 0xd56); + (0xd57, 0xd57); + (0xd5f, 0xd61); + (0xd62, 0xd63); + (0xd7a, 0xd7f); + (0xd81, 0xd81); + (0xd82, 0xd83); + (0xd85, 0xd96); + (0xd9a, 0xdb1); + (0xdb3, 0xdbb); + (0xdbd, 0xdbd); + (0xdc0, 0xdc6); + (0xdcf, 0xdd1); + (0xdd2, 0xdd4); + (0xdd6, 0xdd6); + (0xdd8, 0xddf); + (0xdf2, 0xdf3); + (0xe01, 0xe30); + (0xe31, 0xe31); + (0xe32, 0xe33); + (0xe34, 0xe3a); + (0xe40, 0xe45); + (0xe46, 0xe46); + (0xe4d, 0xe4d); + (0xe81, 0xe82); + (0xe84, 0xe84); + (0xe86, 0xe8a); + (0xe8c, 0xea3); + (0xea5, 0xea5); + (0xea7, 0xeb0); + (0xeb1, 0xeb1); + (0xeb2, 0xeb3); + (0xeb4, 0xeb9); + (0xebb, 0xebc); + (0xebd, 0xebd); + (0xec0, 0xec4); + (0xec6, 0xec6); + (0xecd, 0xecd); + (0xedc, 0xedf); + (0xf00, 0xf00); + (0xf40, 0xf47); + (0xf49, 0xf6c); + (0xf71, 0xf7e); + (0xf7f, 0xf7f); + (0xf80, 0xf81); + (0xf88, 0xf8c); + (0xf8d, 0xf97); + (0xf99, 0xfbc); + (0x1000, 0x102a); + (0x102b, 0x102c); + (0x102d, 0x1030); + (0x1031, 0x1031); + (0x1032, 0x1036); + (0x1038, 0x1038); + (0x103b, 0x103c); + (0x103d, 0x103e); + (0x103f, 0x103f); + (0x1050, 0x1055); + (0x1056, 0x1057); + (0x1058, 0x1059); + (0x105a, 0x105d); + (0x105e, 0x1060); + (0x1061, 0x1061); + (0x1062, 0x1064); + (0x1065, 0x1066); + (0x1067, 0x106d); + (0x106e, 0x1070); + (0x1071, 0x1074); + (0x1075, 0x1081); + (0x1082, 0x1082); + (0x1083, 0x1084); + (0x1085, 0x1086); + (0x1087, 0x108c); + (0x108d, 0x108d); + (0x108e, 0x108e); + (0x108f, 0x108f); + (0x109a, 0x109c); + (0x109d, 0x109d); + (0x10a0, 0x10c5); + (0x10c7, 0x10c7); + (0x10cd, 0x10cd); + (0x10d0, 0x10fa); + (0x10fc, 0x10fc); + (0x10fd, 0x10ff); + (0x1100, 0x1248); + (0x124a, 0x124d); + (0x1250, 0x1256); + (0x1258, 0x1258); + (0x125a, 0x125d); + (0x1260, 0x1288); + (0x128a, 0x128d); + (0x1290, 0x12b0); + (0x12b2, 0x12b5); + (0x12b8, 0x12be); + (0x12c0, 0x12c0); + (0x12c2, 0x12c5); + (0x12c8, 0x12d6); + (0x12d8, 0x1310); + (0x1312, 0x1315); + (0x1318, 0x135a); + (0x1380, 0x138f); + (0x13a0, 0x13f5); + (0x13f8, 0x13fd); + (0x1401, 0x166c); + (0x166f, 0x167f); + (0x1681, 0x169a); + (0x16a0, 0x16ea); + (0x16ee, 0x16f0); + (0x16f1, 0x16f8); + (0x1700, 0x1711); + (0x1712, 0x1713); + (0x171f, 0x1731); + (0x1732, 0x1733); + (0x1740, 0x1751); + (0x1752, 0x1753); + (0x1760, 0x176c); + (0x176e, 0x1770); + (0x1772, 0x1773); + (0x1780, 0x17b3); + (0x17b6, 0x17b6); + (0x17b7, 0x17bd); + (0x17be, 0x17c5); + (0x17c6, 0x17c6); + (0x17c7, 0x17c8); + (0x17d7, 0x17d7); + (0x17dc, 0x17dc); + (0x1820, 0x1842); + (0x1843, 0x1843); + (0x1844, 0x1878); + (0x1880, 0x1884); + (0x1885, 0x1886); + (0x1887, 0x18a8); + (0x18a9, 0x18a9); + (0x18aa, 0x18aa); + (0x18b0, 0x18f5); + (0x1900, 0x191e); + (0x1920, 0x1922); + (0x1923, 0x1926); + (0x1927, 0x1928); + (0x1929, 0x192b); + (0x1930, 0x1931); + (0x1932, 0x1932); + (0x1933, 0x1938); + (0x1950, 0x196d); + (0x1970, 0x1974); + (0x1980, 0x19ab); + (0x19b0, 0x19c9); + (0x1a00, 0x1a16); + (0x1a17, 0x1a18); + (0x1a19, 0x1a1a); + (0x1a1b, 0x1a1b); + (0x1a20, 0x1a54); + (0x1a55, 0x1a55); + (0x1a56, 0x1a56); + (0x1a57, 0x1a57); + (0x1a58, 0x1a5e); + (0x1a61, 0x1a61); + (0x1a62, 0x1a62); + (0x1a63, 0x1a64); + (0x1a65, 0x1a6c); + (0x1a6d, 0x1a72); + (0x1a73, 0x1a74); + (0x1aa7, 0x1aa7); + (0x1abf, 0x1ac0); + (0x1acc, 0x1ace); + (0x1b00, 0x1b03); + (0x1b04, 0x1b04); + (0x1b05, 0x1b33); + (0x1b35, 0x1b35); + (0x1b36, 0x1b3a); + (0x1b3b, 0x1b3b); + (0x1b3c, 0x1b3c); + (0x1b3d, 0x1b41); + (0x1b42, 0x1b42); + (0x1b43, 0x1b43); + (0x1b45, 0x1b4c); + (0x1b80, 0x1b81); + (0x1b82, 0x1b82); + (0x1b83, 0x1ba0); + (0x1ba1, 0x1ba1); + (0x1ba2, 0x1ba5); + (0x1ba6, 0x1ba7); + (0x1ba8, 0x1ba9); + (0x1bac, 0x1bad); + (0x1bae, 0x1baf); + (0x1bba, 0x1be5); + (0x1be7, 0x1be7); + (0x1be8, 0x1be9); + (0x1bea, 0x1bec); + (0x1bed, 0x1bed); + (0x1bee, 0x1bee); + (0x1bef, 0x1bf1); + (0x1c00, 0x1c23); + (0x1c24, 0x1c2b); + (0x1c2c, 0x1c33); + (0x1c34, 0x1c35); + (0x1c36, 0x1c36); + (0x1c4d, 0x1c4f); + (0x1c5a, 0x1c77); + (0x1c78, 0x1c7d); + (0x1c80, 0x1c88); + (0x1c90, 0x1cba); + (0x1cbd, 0x1cbf); + (0x1ce9, 0x1cec); + (0x1cee, 0x1cf3); + (0x1cf5, 0x1cf6); + (0x1cfa, 0x1cfa); + (0x1d00, 0x1d2b); + (0x1d2c, 0x1d6a); + (0x1d6b, 0x1d77); + (0x1d78, 0x1d78); + (0x1d79, 0x1d9a); + (0x1d9b, 0x1dbf); + (0x1de7, 0x1df4); + (0x1e00, 0x1f15); + (0x1f18, 0x1f1d); + (0x1f20, 0x1f45); + (0x1f48, 0x1f4d); + (0x1f50, 0x1f57); + (0x1f59, 0x1f59); + (0x1f5b, 0x1f5b); + (0x1f5d, 0x1f5d); + (0x1f5f, 0x1f7d); + (0x1f80, 0x1fb4); + (0x1fb6, 0x1fbc); + (0x1fbe, 0x1fbe); + (0x1fc2, 0x1fc4); + (0x1fc6, 0x1fcc); + (0x1fd0, 0x1fd3); + (0x1fd6, 0x1fdb); + (0x1fe0, 0x1fec); + (0x1ff2, 0x1ff4); + (0x1ff6, 0x1ffc); + (0x2071, 0x2071); + (0x207f, 0x207f); + (0x2090, 0x209c); + (0x2102, 0x2102); + (0x2107, 0x2107); + (0x210a, 0x2113); + (0x2115, 0x2115); + (0x2119, 0x211d); + (0x2124, 0x2124); + (0x2126, 0x2126); + (0x2128, 0x2128); + (0x212a, 0x212d); + (0x212f, 0x2134); + (0x2135, 0x2138); + (0x2139, 0x2139); + (0x213c, 0x213f); + (0x2145, 0x2149); + (0x214e, 0x214e); + (0x2160, 0x2182); + (0x2183, 0x2184); + (0x2185, 0x2188); + (0x24b6, 0x24e9); + (0x2c00, 0x2c7b); + (0x2c7c, 0x2c7d); + (0x2c7e, 0x2ce4); + (0x2ceb, 0x2cee); + (0x2cf2, 0x2cf3); + (0x2d00, 0x2d25); + (0x2d27, 0x2d27); + (0x2d2d, 0x2d2d); + (0x2d30, 0x2d67); + (0x2d6f, 0x2d6f); + (0x2d80, 0x2d96); + (0x2da0, 0x2da6); + (0x2da8, 0x2dae); + (0x2db0, 0x2db6); + (0x2db8, 0x2dbe); + (0x2dc0, 0x2dc6); + (0x2dc8, 0x2dce); + (0x2dd0, 0x2dd6); + (0x2dd8, 0x2dde); + (0x2de0, 0x2dff); + (0x2e2f, 0x2e2f); + (0x3005, 0x3005); + (0x3006, 0x3006); + (0x3007, 0x3007); + (0x3021, 0x3029); + (0x3031, 0x3035); + (0x3038, 0x303a); + (0x303b, 0x303b); + (0x303c, 0x303c); + (0x3041, 0x3096); + (0x309d, 0x309e); + (0x309f, 0x309f); + (0x30a1, 0x30fa); + (0x30fc, 0x30fe); + (0x30ff, 0x30ff); + (0x3105, 0x312f); + (0x3131, 0x318e); + (0x31a0, 0x31bf); + (0x31f0, 0x31ff); + (0x3400, 0x4dbf); + (0x4e00, 0xa014); + (0xa015, 0xa015); + (0xa016, 0xa48c); + (0xa4d0, 0xa4f7); + (0xa4f8, 0xa4fd); + (0xa500, 0xa60b); + (0xa60c, 0xa60c); + (0xa610, 0xa61f); + (0xa62a, 0xa62b); + (0xa640, 0xa66d); + (0xa66e, 0xa66e); + (0xa674, 0xa67b); + (0xa67f, 0xa67f); + (0xa680, 0xa69b); + (0xa69c, 0xa69d); + (0xa69e, 0xa69f); + (0xa6a0, 0xa6e5); + (0xa6e6, 0xa6ef); + (0xa717, 0xa71f); + (0xa722, 0xa76f); + (0xa770, 0xa770); + (0xa771, 0xa787); + (0xa788, 0xa788); + (0xa78b, 0xa78e); + (0xa78f, 0xa78f); + (0xa790, 0xa7ca); + (0xa7d0, 0xa7d1); + (0xa7d3, 0xa7d3); + (0xa7d5, 0xa7d9); + (0xa7f2, 0xa7f4); + (0xa7f5, 0xa7f6); + (0xa7f7, 0xa7f7); + (0xa7f8, 0xa7f9); + (0xa7fa, 0xa7fa); + (0xa7fb, 0xa801); + (0xa802, 0xa802); + (0xa803, 0xa805); + (0xa807, 0xa80a); + (0xa80b, 0xa80b); + (0xa80c, 0xa822); + (0xa823, 0xa824); + (0xa825, 0xa826); + (0xa827, 0xa827); + (0xa840, 0xa873); + (0xa880, 0xa881); + (0xa882, 0xa8b3); + (0xa8b4, 0xa8c3); + (0xa8c5, 0xa8c5); + (0xa8f2, 0xa8f7); + (0xa8fb, 0xa8fb); + (0xa8fd, 0xa8fe); + (0xa8ff, 0xa8ff); + (0xa90a, 0xa925); + (0xa926, 0xa92a); + (0xa930, 0xa946); + (0xa947, 0xa951); + (0xa952, 0xa952); + (0xa960, 0xa97c); + (0xa980, 0xa982); + (0xa983, 0xa983); + (0xa984, 0xa9b2); + (0xa9b4, 0xa9b5); + (0xa9b6, 0xa9b9); + (0xa9ba, 0xa9bb); + (0xa9bc, 0xa9bd); + (0xa9be, 0xa9bf); + (0xa9cf, 0xa9cf); + (0xa9e0, 0xa9e4); + (0xa9e5, 0xa9e5); + (0xa9e6, 0xa9e6); + (0xa9e7, 0xa9ef); + (0xa9fa, 0xa9fe); + (0xaa00, 0xaa28); + (0xaa29, 0xaa2e); + (0xaa2f, 0xaa30); + (0xaa31, 0xaa32); + (0xaa33, 0xaa34); + (0xaa35, 0xaa36); + (0xaa40, 0xaa42); + (0xaa43, 0xaa43); + (0xaa44, 0xaa4b); + (0xaa4c, 0xaa4c); + (0xaa4d, 0xaa4d); + (0xaa60, 0xaa6f); + (0xaa70, 0xaa70); + (0xaa71, 0xaa76); + (0xaa7a, 0xaa7a); + (0xaa7b, 0xaa7b); + (0xaa7c, 0xaa7c); + (0xaa7d, 0xaa7d); + (0xaa7e, 0xaaaf); + (0xaab0, 0xaab0); + (0xaab1, 0xaab1); + (0xaab2, 0xaab4); + (0xaab5, 0xaab6); + (0xaab7, 0xaab8); + (0xaab9, 0xaabd); + (0xaabe, 0xaabe); + (0xaac0, 0xaac0); + (0xaac2, 0xaac2); + (0xaadb, 0xaadc); + (0xaadd, 0xaadd); + (0xaae0, 0xaaea); + (0xaaeb, 0xaaeb); + (0xaaec, 0xaaed); + (0xaaee, 0xaaef); + (0xaaf2, 0xaaf2); + (0xaaf3, 0xaaf4); + (0xaaf5, 0xaaf5); + (0xab01, 0xab06); + (0xab09, 0xab0e); + (0xab11, 0xab16); + (0xab20, 0xab26); + (0xab28, 0xab2e); + (0xab30, 0xab5a); + (0xab5c, 0xab5f); + (0xab60, 0xab68); + (0xab69, 0xab69); + (0xab70, 0xabbf); + (0xabc0, 0xabe2); + (0xabe3, 0xabe4); + (0xabe5, 0xabe5); + (0xabe6, 0xabe7); + (0xabe8, 0xabe8); + (0xabe9, 0xabea); + (0xac00, 0xd7a3); + (0xd7b0, 0xd7c6); + (0xd7cb, 0xd7fb); + (0xf900, 0xfa6d); + (0xfa70, 0xfad9); + (0xfb00, 0xfb06); + (0xfb13, 0xfb17); + (0xfb1d, 0xfb1d); + (0xfb1e, 0xfb1e); + (0xfb1f, 0xfb28); + (0xfb2a, 0xfb36); + (0xfb38, 0xfb3c); + (0xfb3e, 0xfb3e); + (0xfb40, 0xfb41); + (0xfb43, 0xfb44); + (0xfb46, 0xfbb1); + (0xfbd3, 0xfd3d); + (0xfd50, 0xfd8f); + (0xfd92, 0xfdc7); + (0xfdf0, 0xfdfb); + (0xfe70, 0xfe74); + (0xfe76, 0xfefc); + (0xff21, 0xff3a); + (0xff41, 0xff5a); + (0xff66, 0xff6f); + (0xff70, 0xff70); + (0xff71, 0xff9d); + (0xff9e, 0xff9f); + (0xffa0, 0xffbe); + (0xffc2, 0xffc7); + (0xffca, 0xffcf); + (0xffd2, 0xffd7); + (0xffda, 0xffdc); + (0x10000, 0x1000b); + (0x1000d, 0x10026); + (0x10028, 0x1003a); + (0x1003c, 0x1003d); + (0x1003f, 0x1004d); + (0x10050, 0x1005d); + (0x10080, 0x100fa); + (0x10140, 0x10174); + (0x10280, 0x1029c); + (0x102a0, 0x102d0); + (0x10300, 0x1031f); + (0x1032d, 0x10340); + (0x10341, 0x10341); + (0x10342, 0x10349); + (0x1034a, 0x1034a); + (0x10350, 0x10375); + (0x10376, 0x1037a); + (0x10380, 0x1039d); + (0x103a0, 0x103c3); + (0x103c8, 0x103cf); + (0x103d1, 0x103d5); + (0x10400, 0x1044f); + (0x10450, 0x1049d); + (0x104b0, 0x104d3); + (0x104d8, 0x104fb); + (0x10500, 0x10527); + (0x10530, 0x10563); + (0x10570, 0x1057a); + (0x1057c, 0x1058a); + (0x1058c, 0x10592); + (0x10594, 0x10595); + (0x10597, 0x105a1); + (0x105a3, 0x105b1); + (0x105b3, 0x105b9); + (0x105bb, 0x105bc); + (0x10600, 0x10736); + (0x10740, 0x10755); + (0x10760, 0x10767); + (0x10780, 0x10785); + (0x10787, 0x107b0); + (0x107b2, 0x107ba); + (0x10800, 0x10805); + (0x10808, 0x10808); + (0x1080a, 0x10835); + (0x10837, 0x10838); + (0x1083c, 0x1083c); + (0x1083f, 0x10855); + (0x10860, 0x10876); + (0x10880, 0x1089e); + (0x108e0, 0x108f2); + (0x108f4, 0x108f5); + (0x10900, 0x10915); + (0x10920, 0x10939); + (0x10980, 0x109b7); + (0x109be, 0x109bf); + (0x10a00, 0x10a00); + (0x10a01, 0x10a03); + (0x10a05, 0x10a06); + (0x10a0c, 0x10a0f); + (0x10a10, 0x10a13); + (0x10a15, 0x10a17); + (0x10a19, 0x10a35); + (0x10a60, 0x10a7c); + (0x10a80, 0x10a9c); + (0x10ac0, 0x10ac7); + (0x10ac9, 0x10ae4); + (0x10b00, 0x10b35); + (0x10b40, 0x10b55); + (0x10b60, 0x10b72); + (0x10b80, 0x10b91); + (0x10c00, 0x10c48); + (0x10c80, 0x10cb2); + (0x10cc0, 0x10cf2); + (0x10d00, 0x10d23); + (0x10d24, 0x10d27); + (0x10e80, 0x10ea9); + (0x10eab, 0x10eac); + (0x10eb0, 0x10eb1); + (0x10f00, 0x10f1c); + (0x10f27, 0x10f27); + (0x10f30, 0x10f45); + (0x10f70, 0x10f81); + (0x10fb0, 0x10fc4); + (0x10fe0, 0x10ff6); + (0x11000, 0x11000); + (0x11001, 0x11001); + (0x11002, 0x11002); + (0x11003, 0x11037); + (0x11038, 0x11045); + (0x11071, 0x11072); + (0x11073, 0x11074); + (0x11075, 0x11075); + (0x11082, 0x11082); + (0x11083, 0x110af); + (0x110b0, 0x110b2); + (0x110b3, 0x110b6); + (0x110b7, 0x110b8); + (0x110c2, 0x110c2); + (0x110d0, 0x110e8); + (0x11100, 0x11102); + (0x11103, 0x11126); + (0x11127, 0x1112b); + (0x1112c, 0x1112c); + (0x1112d, 0x11132); + (0x11144, 0x11144); + (0x11145, 0x11146); + (0x11147, 0x11147); + (0x11150, 0x11172); + (0x11176, 0x11176); + (0x11180, 0x11181); + (0x11182, 0x11182); + (0x11183, 0x111b2); + (0x111b3, 0x111b5); + (0x111b6, 0x111be); + (0x111bf, 0x111bf); + (0x111c1, 0x111c4); + (0x111ce, 0x111ce); + (0x111cf, 0x111cf); + (0x111da, 0x111da); + (0x111dc, 0x111dc); + (0x11200, 0x11211); + (0x11213, 0x1122b); + (0x1122c, 0x1122e); + (0x1122f, 0x11231); + (0x11232, 0x11233); + (0x11234, 0x11234); + (0x11237, 0x11237); + (0x1123e, 0x1123e); + (0x11280, 0x11286); + (0x11288, 0x11288); + (0x1128a, 0x1128d); + (0x1128f, 0x1129d); + (0x1129f, 0x112a8); + (0x112b0, 0x112de); + (0x112df, 0x112df); + (0x112e0, 0x112e2); + (0x112e3, 0x112e8); + (0x11300, 0x11301); + (0x11302, 0x11303); + (0x11305, 0x1130c); + (0x1130f, 0x11310); + (0x11313, 0x11328); + (0x1132a, 0x11330); + (0x11332, 0x11333); + (0x11335, 0x11339); + (0x1133d, 0x1133d); + (0x1133e, 0x1133f); + (0x11340, 0x11340); + (0x11341, 0x11344); + (0x11347, 0x11348); + (0x1134b, 0x1134c); + (0x11350, 0x11350); + (0x11357, 0x11357); + (0x1135d, 0x11361); + (0x11362, 0x11363); + (0x11400, 0x11434); + (0x11435, 0x11437); + (0x11438, 0x1143f); + (0x11440, 0x11441); + (0x11443, 0x11444); + (0x11445, 0x11445); + (0x11447, 0x1144a); + (0x1145f, 0x11461); + (0x11480, 0x114af); + (0x114b0, 0x114b2); + (0x114b3, 0x114b8); + (0x114b9, 0x114b9); + (0x114ba, 0x114ba); + (0x114bb, 0x114be); + (0x114bf, 0x114c0); + (0x114c1, 0x114c1); + (0x114c4, 0x114c5); + (0x114c7, 0x114c7); + (0x11580, 0x115ae); + (0x115af, 0x115b1); + (0x115b2, 0x115b5); + (0x115b8, 0x115bb); + (0x115bc, 0x115bd); + (0x115be, 0x115be); + (0x115d8, 0x115db); + (0x115dc, 0x115dd); + (0x11600, 0x1162f); + (0x11630, 0x11632); + (0x11633, 0x1163a); + (0x1163b, 0x1163c); + (0x1163d, 0x1163d); + (0x1163e, 0x1163e); + (0x11640, 0x11640); + (0x11644, 0x11644); + (0x11680, 0x116aa); + (0x116ab, 0x116ab); + (0x116ac, 0x116ac); + (0x116ad, 0x116ad); + (0x116ae, 0x116af); + (0x116b0, 0x116b5); + (0x116b8, 0x116b8); + (0x11700, 0x1171a); + (0x1171d, 0x1171f); + (0x11720, 0x11721); + (0x11722, 0x11725); + (0x11726, 0x11726); + (0x11727, 0x1172a); + (0x11740, 0x11746); + (0x11800, 0x1182b); + (0x1182c, 0x1182e); + (0x1182f, 0x11837); + (0x11838, 0x11838); + (0x118a0, 0x118df); + (0x118ff, 0x11906); + (0x11909, 0x11909); + (0x1190c, 0x11913); + (0x11915, 0x11916); + (0x11918, 0x1192f); + (0x11930, 0x11935); + (0x11937, 0x11938); + (0x1193b, 0x1193c); + (0x1193f, 0x1193f); + (0x11940, 0x11940); + (0x11941, 0x11941); + (0x11942, 0x11942); + (0x119a0, 0x119a7); + (0x119aa, 0x119d0); + (0x119d1, 0x119d3); + (0x119d4, 0x119d7); + (0x119da, 0x119db); + (0x119dc, 0x119df); + (0x119e1, 0x119e1); + (0x119e3, 0x119e3); + (0x119e4, 0x119e4); + (0x11a00, 0x11a00); + (0x11a01, 0x11a0a); + (0x11a0b, 0x11a32); + (0x11a35, 0x11a38); + (0x11a39, 0x11a39); + (0x11a3a, 0x11a3a); + (0x11a3b, 0x11a3e); + (0x11a50, 0x11a50); + (0x11a51, 0x11a56); + (0x11a57, 0x11a58); + (0x11a59, 0x11a5b); + (0x11a5c, 0x11a89); + (0x11a8a, 0x11a96); + (0x11a97, 0x11a97); + (0x11a9d, 0x11a9d); + (0x11ab0, 0x11af8); + (0x11c00, 0x11c08); + (0x11c0a, 0x11c2e); + (0x11c2f, 0x11c2f); + (0x11c30, 0x11c36); + (0x11c38, 0x11c3d); + (0x11c3e, 0x11c3e); + (0x11c40, 0x11c40); + (0x11c72, 0x11c8f); + (0x11c92, 0x11ca7); + (0x11ca9, 0x11ca9); + (0x11caa, 0x11cb0); + (0x11cb1, 0x11cb1); + (0x11cb2, 0x11cb3); + (0x11cb4, 0x11cb4); + (0x11cb5, 0x11cb6); + (0x11d00, 0x11d06); + (0x11d08, 0x11d09); + (0x11d0b, 0x11d30); + (0x11d31, 0x11d36); + (0x11d3a, 0x11d3a); + (0x11d3c, 0x11d3d); + (0x11d3f, 0x11d41); + (0x11d43, 0x11d43); + (0x11d46, 0x11d46); + (0x11d47, 0x11d47); + (0x11d60, 0x11d65); + (0x11d67, 0x11d68); + (0x11d6a, 0x11d89); + (0x11d8a, 0x11d8e); + (0x11d90, 0x11d91); + (0x11d93, 0x11d94); + (0x11d95, 0x11d95); + (0x11d96, 0x11d96); + (0x11d98, 0x11d98); + (0x11ee0, 0x11ef2); + (0x11ef3, 0x11ef4); + (0x11ef5, 0x11ef6); + (0x11fb0, 0x11fb0); + (0x12000, 0x12399); + (0x12400, 0x1246e); + (0x12480, 0x12543); + (0x12f90, 0x12ff0); + (0x13000, 0x1342e); + (0x14400, 0x14646); + (0x16800, 0x16a38); + (0x16a40, 0x16a5e); + (0x16a70, 0x16abe); + (0x16ad0, 0x16aed); + (0x16b00, 0x16b2f); + (0x16b40, 0x16b43); + (0x16b63, 0x16b77); + (0x16b7d, 0x16b8f); + (0x16e40, 0x16e7f); + (0x16f00, 0x16f4a); + (0x16f4f, 0x16f4f); + (0x16f50, 0x16f50); + (0x16f51, 0x16f87); + (0x16f8f, 0x16f92); + (0x16f93, 0x16f9f); + (0x16fe0, 0x16fe1); + (0x16fe3, 0x16fe3); + (0x16ff0, 0x16ff1); + (0x17000, 0x187f7); + (0x18800, 0x18cd5); + (0x18d00, 0x18d08); + (0x1aff0, 0x1aff3); + (0x1aff5, 0x1affb); + (0x1affd, 0x1affe); + (0x1b000, 0x1b122); + (0x1b150, 0x1b152); + (0x1b164, 0x1b167); + (0x1b170, 0x1b2fb); + (0x1bc00, 0x1bc6a); + (0x1bc70, 0x1bc7c); + (0x1bc80, 0x1bc88); + (0x1bc90, 0x1bc99); + (0x1bc9e, 0x1bc9e); + (0x1d400, 0x1d454); + (0x1d456, 0x1d49c); + (0x1d49e, 0x1d49f); + (0x1d4a2, 0x1d4a2); + (0x1d4a5, 0x1d4a6); + (0x1d4a9, 0x1d4ac); + (0x1d4ae, 0x1d4b9); + (0x1d4bb, 0x1d4bb); + (0x1d4bd, 0x1d4c3); + (0x1d4c5, 0x1d505); + (0x1d507, 0x1d50a); + (0x1d50d, 0x1d514); + (0x1d516, 0x1d51c); + (0x1d51e, 0x1d539); + (0x1d53b, 0x1d53e); + (0x1d540, 0x1d544); + (0x1d546, 0x1d546); + (0x1d54a, 0x1d550); + (0x1d552, 0x1d6a5); + (0x1d6a8, 0x1d6c0); + (0x1d6c2, 0x1d6da); + (0x1d6dc, 0x1d6fa); + (0x1d6fc, 0x1d714); + (0x1d716, 0x1d734); + (0x1d736, 0x1d74e); + (0x1d750, 0x1d76e); + (0x1d770, 0x1d788); + (0x1d78a, 0x1d7a8); + (0x1d7aa, 0x1d7c2); + (0x1d7c4, 0x1d7cb); + (0x1df00, 0x1df09); + (0x1df0a, 0x1df0a); + (0x1df0b, 0x1df1e); + (0x1e000, 0x1e006); + (0x1e008, 0x1e018); + (0x1e01b, 0x1e021); + (0x1e023, 0x1e024); + (0x1e026, 0x1e02a); + (0x1e100, 0x1e12c); + (0x1e137, 0x1e13d); + (0x1e14e, 0x1e14e); + (0x1e290, 0x1e2ad); + (0x1e2c0, 0x1e2eb); + (0x1e7e0, 0x1e7e6); + (0x1e7e8, 0x1e7eb); + (0x1e7ed, 0x1e7ee); + (0x1e7f0, 0x1e7fe); + (0x1e800, 0x1e8c4); + (0x1e900, 0x1e943); + (0x1e947, 0x1e947); + (0x1e94b, 0x1e94b); + (0x1ee00, 0x1ee03); + (0x1ee05, 0x1ee1f); + (0x1ee21, 0x1ee22); + (0x1ee24, 0x1ee24); + (0x1ee27, 0x1ee27); + (0x1ee29, 0x1ee32); + (0x1ee34, 0x1ee37); + (0x1ee39, 0x1ee39); + (0x1ee3b, 0x1ee3b); + (0x1ee42, 0x1ee42); + (0x1ee47, 0x1ee47); + (0x1ee49, 0x1ee49); + (0x1ee4b, 0x1ee4b); + (0x1ee4d, 0x1ee4f); + (0x1ee51, 0x1ee52); + (0x1ee54, 0x1ee54); + (0x1ee57, 0x1ee57); + (0x1ee59, 0x1ee59); + (0x1ee5b, 0x1ee5b); + (0x1ee5d, 0x1ee5d); + (0x1ee5f, 0x1ee5f); + (0x1ee61, 0x1ee62); + (0x1ee64, 0x1ee64); + (0x1ee67, 0x1ee6a); + (0x1ee6c, 0x1ee72); + (0x1ee74, 0x1ee77); + (0x1ee79, 0x1ee7c); + (0x1ee7e, 0x1ee7e); + (0x1ee80, 0x1ee89); + (0x1ee8b, 0x1ee9b); + (0x1eea1, 0x1eea3); + (0x1eea5, 0x1eea9); + (0x1eeab, 0x1eebb); + (0x1f130, 0x1f149); + (0x1f150, 0x1f169); + (0x1f170, 0x1f189); + (0x20000, 0x2a6df); + (0x2a700, 0x2b738); + (0x2b740, 0x2b81d); + (0x2b820, 0x2cea1); + (0x2ceb0, 0x2ebe0); + (0x30000, 0x3134a); + (0x2f800, 0x2fa1d); + ] - let ascii_hex_digit = - [0x61, 0x66; 0x41, 0x46; 0x30, 0x39] + let ascii_hex_digit = [(0x61, 0x66); (0x41, 0x46); (0x30, 0x39)] let hex_digit = - [0x30, 0x39; 0x41, 0x46; 0x61, 0x66; 0xff10, 0xff19; 0xff21, 0xff26; - 0xff41, 0xff46] + [ + (0x30, 0x39); + (0x41, 0x46); + (0x61, 0x66); + (0xff10, 0xff19); + (0xff21, 0xff26); + (0xff41, 0xff46); + ] let id_continue = - [0x30, 0x39; 0x41, 0x5a; 0x5f, 0x5f; 0x61, 0x7a; 0xaa, 0xaa; - 0xb5, 0xb5; 0xb7, 0xb7; 0xba, 0xba; 0xc0, 0xd6; 0xd8, 0xf6; - 0xf8, 0x1ba; 0x1bb, 0x1bb; 0x1bc, 0x1bf; 0x1c0, 0x1c3; 0x1c4, 0x293; - 0x294, 0x294; 0x295, 0x2af; 0x2b0, 0x2c1; 0x2c6, 0x2d1; 0x2e0, 0x2e4; - 0x2ec, 0x2ec; 0x2ee, 0x2ee; 0x300, 0x36f; 0x370, 0x373; 0x374, 0x374; - 0x376, 0x377; 0x37a, 0x37a; 0x37b, 0x37d; 0x37f, 0x37f; 0x386, 0x386; - 0x387, 0x387; 0x388, 0x38a; 0x38c, 0x38c; 0x38e, 0x3a1; 0x3a3, 0x3f5; - 0x3f7, 0x481; 0x483, 0x487; 0x48a, 0x52f; 0x531, 0x556; 0x559, 0x559; - 0x560, 0x588; 0x591, 0x5bd; 0x5bf, 0x5bf; 0x5c1, 0x5c2; 0x5c4, 0x5c5; - 0x5c7, 0x5c7; 0x5d0, 0x5ea; 0x5ef, 0x5f2; 0x610, 0x61a; 0x620, 0x63f; - 0x640, 0x640; 0x641, 0x64a; 0x64b, 0x65f; 0x660, 0x669; 0x66e, 0x66f; - 0x670, 0x670; 0x671, 0x6d3; 0x6d5, 0x6d5; 0x6d6, 0x6dc; 0x6df, 0x6e4; - 0x6e5, 0x6e6; 0x6e7, 0x6e8; 0x6ea, 0x6ed; 0x6ee, 0x6ef; 0x6f0, 0x6f9; - 0x6fa, 0x6fc; 0x6ff, 0x6ff; 0x710, 0x710; 0x711, 0x711; 0x712, 0x72f; - 0x730, 0x74a; 0x74d, 0x7a5; 0x7a6, 0x7b0; 0x7b1, 0x7b1; 0x7c0, 0x7c9; - 0x7ca, 0x7ea; 0x7eb, 0x7f3; 0x7f4, 0x7f5; 0x7fa, 0x7fa; 0x7fd, 0x7fd; - 0x800, 0x815; 0x816, 0x819; 0x81a, 0x81a; 0x81b, 0x823; 0x824, 0x824; - 0x825, 0x827; 0x828, 0x828; 0x829, 0x82d; 0x840, 0x858; 0x859, 0x85b; - 0x860, 0x86a; 0x870, 0x887; 0x889, 0x88e; 0x898, 0x89f; 0x8a0, 0x8c8; - 0x8c9, 0x8c9; 0x8ca, 0x8e1; 0x8e3, 0x902; 0x903, 0x903; 0x904, 0x939; - 0x93a, 0x93a; 0x93b, 0x93b; 0x93c, 0x93c; 0x93d, 0x93d; 0x93e, 0x940; - 0x941, 0x948; 0x949, 0x94c; 0x94d, 0x94d; 0x94e, 0x94f; 0x950, 0x950; - 0x951, 0x957; 0x958, 0x961; 0x962, 0x963; 0x966, 0x96f; 0x971, 0x971; - 0x972, 0x980; 0x981, 0x981; 0x982, 0x983; 0x985, 0x98c; 0x98f, 0x990; - 0x993, 0x9a8; 0x9aa, 0x9b0; 0x9b2, 0x9b2; 0x9b6, 0x9b9; 0x9bc, 0x9bc; - 0x9bd, 0x9bd; 0x9be, 0x9c0; 0x9c1, 0x9c4; 0x9c7, 0x9c8; 0x9cb, 0x9cc; - 0x9cd, 0x9cd; 0x9ce, 0x9ce; 0x9d7, 0x9d7; 0x9dc, 0x9dd; 0x9df, 0x9e1; - 0x9e2, 0x9e3; 0x9e6, 0x9ef; 0x9f0, 0x9f1; 0x9fc, 0x9fc; 0x9fe, 0x9fe; - 0xa01, 0xa02; 0xa03, 0xa03; 0xa05, 0xa0a; 0xa0f, 0xa10; 0xa13, 0xa28; - 0xa2a, 0xa30; 0xa32, 0xa33; 0xa35, 0xa36; 0xa38, 0xa39; 0xa3c, 0xa3c; - 0xa3e, 0xa40; 0xa41, 0xa42; 0xa47, 0xa48; 0xa4b, 0xa4d; 0xa51, 0xa51; - 0xa59, 0xa5c; 0xa5e, 0xa5e; 0xa66, 0xa6f; 0xa70, 0xa71; 0xa72, 0xa74; - 0xa75, 0xa75; 0xa81, 0xa82; 0xa83, 0xa83; 0xa85, 0xa8d; 0xa8f, 0xa91; - 0xa93, 0xaa8; 0xaaa, 0xab0; 0xab2, 0xab3; 0xab5, 0xab9; 0xabc, 0xabc; - 0xabd, 0xabd; 0xabe, 0xac0; 0xac1, 0xac5; 0xac7, 0xac8; 0xac9, 0xac9; - 0xacb, 0xacc; 0xacd, 0xacd; 0xad0, 0xad0; 0xae0, 0xae1; 0xae2, 0xae3; - 0xae6, 0xaef; 0xaf9, 0xaf9; 0xafa, 0xaff; 0xb01, 0xb01; 0xb02, 0xb03; - 0xb05, 0xb0c; 0xb0f, 0xb10; 0xb13, 0xb28; 0xb2a, 0xb30; 0xb32, 0xb33; - 0xb35, 0xb39; 0xb3c, 0xb3c; 0xb3d, 0xb3d; 0xb3e, 0xb3e; 0xb3f, 0xb3f; - 0xb40, 0xb40; 0xb41, 0xb44; 0xb47, 0xb48; 0xb4b, 0xb4c; 0xb4d, 0xb4d; - 0xb55, 0xb56; 0xb57, 0xb57; 0xb5c, 0xb5d; 0xb5f, 0xb61; 0xb62, 0xb63; - 0xb66, 0xb6f; 0xb71, 0xb71; 0xb82, 0xb82; 0xb83, 0xb83; 0xb85, 0xb8a; - 0xb8e, 0xb90; 0xb92, 0xb95; 0xb99, 0xb9a; 0xb9c, 0xb9c; 0xb9e, 0xb9f; - 0xba3, 0xba4; 0xba8, 0xbaa; 0xbae, 0xbb9; 0xbbe, 0xbbf; 0xbc0, 0xbc0; - 0xbc1, 0xbc2; 0xbc6, 0xbc8; 0xbca, 0xbcc; 0xbcd, 0xbcd; 0xbd0, 0xbd0; - 0xbd7, 0xbd7; 0xbe6, 0xbef; 0xc00, 0xc00; 0xc01, 0xc03; 0xc04, 0xc04; - 0xc05, 0xc0c; 0xc0e, 0xc10; 0xc12, 0xc28; 0xc2a, 0xc39; 0xc3c, 0xc3c; - 0xc3d, 0xc3d; 0xc3e, 0xc40; 0xc41, 0xc44; 0xc46, 0xc48; 0xc4a, 0xc4d; - 0xc55, 0xc56; 0xc58, 0xc5a; 0xc5d, 0xc5d; 0xc60, 0xc61; 0xc62, 0xc63; - 0xc66, 0xc6f; 0xc80, 0xc80; 0xc81, 0xc81; 0xc82, 0xc83; 0xc85, 0xc8c; - 0xc8e, 0xc90; 0xc92, 0xca8; 0xcaa, 0xcb3; 0xcb5, 0xcb9; 0xcbc, 0xcbc; - 0xcbd, 0xcbd; 0xcbe, 0xcbe; 0xcbf, 0xcbf; 0xcc0, 0xcc4; 0xcc6, 0xcc6; - 0xcc7, 0xcc8; 0xcca, 0xccb; 0xccc, 0xccd; 0xcd5, 0xcd6; 0xcdd, 0xcde; - 0xce0, 0xce1; 0xce2, 0xce3; 0xce6, 0xcef; 0xcf1, 0xcf2; 0xd00, 0xd01; - 0xd02, 0xd03; 0xd04, 0xd0c; 0xd0e, 0xd10; 0xd12, 0xd3a; 0xd3b, 0xd3c; - 0xd3d, 0xd3d; 0xd3e, 0xd40; 0xd41, 0xd44; 0xd46, 0xd48; 0xd4a, 0xd4c; - 0xd4d, 0xd4d; 0xd4e, 0xd4e; 0xd54, 0xd56; 0xd57, 0xd57; 0xd5f, 0xd61; - 0xd62, 0xd63; 0xd66, 0xd6f; 0xd7a, 0xd7f; 0xd81, 0xd81; 0xd82, 0xd83; - 0xd85, 0xd96; 0xd9a, 0xdb1; 0xdb3, 0xdbb; 0xdbd, 0xdbd; 0xdc0, 0xdc6; - 0xdca, 0xdca; 0xdcf, 0xdd1; 0xdd2, 0xdd4; 0xdd6, 0xdd6; 0xdd8, 0xddf; - 0xde6, 0xdef; 0xdf2, 0xdf3; 0xe01, 0xe30; 0xe31, 0xe31; 0xe32, 0xe33; - 0xe34, 0xe3a; 0xe40, 0xe45; 0xe46, 0xe46; 0xe47, 0xe4e; 0xe50, 0xe59; - 0xe81, 0xe82; 0xe84, 0xe84; 0xe86, 0xe8a; 0xe8c, 0xea3; 0xea5, 0xea5; - 0xea7, 0xeb0; 0xeb1, 0xeb1; 0xeb2, 0xeb3; 0xeb4, 0xebc; 0xebd, 0xebd; - 0xec0, 0xec4; 0xec6, 0xec6; 0xec8, 0xecd; 0xed0, 0xed9; 0xedc, 0xedf; - 0xf00, 0xf00; 0xf18, 0xf19; 0xf20, 0xf29; 0xf35, 0xf35; 0xf37, 0xf37; - 0xf39, 0xf39; 0xf3e, 0xf3f; 0xf40, 0xf47; 0xf49, 0xf6c; 0xf71, 0xf7e; - 0xf7f, 0xf7f; 0xf80, 0xf84; 0xf86, 0xf87; 0xf88, 0xf8c; 0xf8d, 0xf97; - 0xf99, 0xfbc; 0xfc6, 0xfc6; 0x1000, 0x102a; 0x102b, 0x102c; 0x102d, 0x1030; - 0x1031, 0x1031; 0x1032, 0x1037; 0x1038, 0x1038; 0x1039, 0x103a; 0x103b, 0x103c; - 0x103d, 0x103e; 0x103f, 0x103f; 0x1040, 0x1049; 0x1050, 0x1055; 0x1056, 0x1057; - 0x1058, 0x1059; 0x105a, 0x105d; 0x105e, 0x1060; 0x1061, 0x1061; 0x1062, 0x1064; - 0x1065, 0x1066; 0x1067, 0x106d; 0x106e, 0x1070; 0x1071, 0x1074; 0x1075, 0x1081; - 0x1082, 0x1082; 0x1083, 0x1084; 0x1085, 0x1086; 0x1087, 0x108c; 0x108d, 0x108d; - 0x108e, 0x108e; 0x108f, 0x108f; 0x1090, 0x1099; 0x109a, 0x109c; 0x109d, 0x109d; - 0x10a0, 0x10c5; 0x10c7, 0x10c7; 0x10cd, 0x10cd; 0x10d0, 0x10fa; 0x10fc, 0x10fc; - 0x10fd, 0x10ff; 0x1100, 0x1248; 0x124a, 0x124d; 0x1250, 0x1256; 0x1258, 0x1258; - 0x125a, 0x125d; 0x1260, 0x1288; 0x128a, 0x128d; 0x1290, 0x12b0; 0x12b2, 0x12b5; - 0x12b8, 0x12be; 0x12c0, 0x12c0; 0x12c2, 0x12c5; 0x12c8, 0x12d6; 0x12d8, 0x1310; - 0x1312, 0x1315; 0x1318, 0x135a; 0x135d, 0x135f; 0x1369, 0x1371; 0x1380, 0x138f; - 0x13a0, 0x13f5; 0x13f8, 0x13fd; 0x1401, 0x166c; 0x166f, 0x167f; 0x1681, 0x169a; - 0x16a0, 0x16ea; 0x16ee, 0x16f0; 0x16f1, 0x16f8; 0x1700, 0x1711; 0x1712, 0x1714; - 0x1715, 0x1715; 0x171f, 0x1731; 0x1732, 0x1733; 0x1734, 0x1734; 0x1740, 0x1751; - 0x1752, 0x1753; 0x1760, 0x176c; 0x176e, 0x1770; 0x1772, 0x1773; 0x1780, 0x17b3; - 0x17b4, 0x17b5; 0x17b6, 0x17b6; 0x17b7, 0x17bd; 0x17be, 0x17c5; 0x17c6, 0x17c6; - 0x17c7, 0x17c8; 0x17c9, 0x17d3; 0x17d7, 0x17d7; 0x17dc, 0x17dc; 0x17dd, 0x17dd; - 0x17e0, 0x17e9; 0x180b, 0x180d; 0x180f, 0x180f; 0x1810, 0x1819; 0x1820, 0x1842; - 0x1843, 0x1843; 0x1844, 0x1878; 0x1880, 0x1884; 0x1885, 0x1886; 0x1887, 0x18a8; - 0x18a9, 0x18a9; 0x18aa, 0x18aa; 0x18b0, 0x18f5; 0x1900, 0x191e; 0x1920, 0x1922; - 0x1923, 0x1926; 0x1927, 0x1928; 0x1929, 0x192b; 0x1930, 0x1931; 0x1932, 0x1932; - 0x1933, 0x1938; 0x1939, 0x193b; 0x1946, 0x194f; 0x1950, 0x196d; 0x1970, 0x1974; - 0x1980, 0x19ab; 0x19b0, 0x19c9; 0x19d0, 0x19d9; 0x19da, 0x19da; 0x1a00, 0x1a16; - 0x1a17, 0x1a18; 0x1a19, 0x1a1a; 0x1a1b, 0x1a1b; 0x1a20, 0x1a54; 0x1a55, 0x1a55; - 0x1a56, 0x1a56; 0x1a57, 0x1a57; 0x1a58, 0x1a5e; 0x1a60, 0x1a60; 0x1a61, 0x1a61; - 0x1a62, 0x1a62; 0x1a63, 0x1a64; 0x1a65, 0x1a6c; 0x1a6d, 0x1a72; 0x1a73, 0x1a7c; - 0x1a7f, 0x1a7f; 0x1a80, 0x1a89; 0x1a90, 0x1a99; 0x1aa7, 0x1aa7; 0x1ab0, 0x1abd; - 0x1abf, 0x1ace; 0x1b00, 0x1b03; 0x1b04, 0x1b04; 0x1b05, 0x1b33; 0x1b34, 0x1b34; - 0x1b35, 0x1b35; 0x1b36, 0x1b3a; 0x1b3b, 0x1b3b; 0x1b3c, 0x1b3c; 0x1b3d, 0x1b41; - 0x1b42, 0x1b42; 0x1b43, 0x1b44; 0x1b45, 0x1b4c; 0x1b50, 0x1b59; 0x1b6b, 0x1b73; - 0x1b80, 0x1b81; 0x1b82, 0x1b82; 0x1b83, 0x1ba0; 0x1ba1, 0x1ba1; 0x1ba2, 0x1ba5; - 0x1ba6, 0x1ba7; 0x1ba8, 0x1ba9; 0x1baa, 0x1baa; 0x1bab, 0x1bad; 0x1bae, 0x1baf; - 0x1bb0, 0x1bb9; 0x1bba, 0x1be5; 0x1be6, 0x1be6; 0x1be7, 0x1be7; 0x1be8, 0x1be9; - 0x1bea, 0x1bec; 0x1bed, 0x1bed; 0x1bee, 0x1bee; 0x1bef, 0x1bf1; 0x1bf2, 0x1bf3; - 0x1c00, 0x1c23; 0x1c24, 0x1c2b; 0x1c2c, 0x1c33; 0x1c34, 0x1c35; 0x1c36, 0x1c37; - 0x1c40, 0x1c49; 0x1c4d, 0x1c4f; 0x1c50, 0x1c59; 0x1c5a, 0x1c77; 0x1c78, 0x1c7d; - 0x1c80, 0x1c88; 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 0x1cd0, 0x1cd2; 0x1cd4, 0x1ce0; - 0x1ce1, 0x1ce1; 0x1ce2, 0x1ce8; 0x1ce9, 0x1cec; 0x1ced, 0x1ced; 0x1cee, 0x1cf3; - 0x1cf4, 0x1cf4; 0x1cf5, 0x1cf6; 0x1cf7, 0x1cf7; 0x1cf8, 0x1cf9; 0x1cfa, 0x1cfa; - 0x1d00, 0x1d2b; 0x1d2c, 0x1d6a; 0x1d6b, 0x1d77; 0x1d78, 0x1d78; 0x1d79, 0x1d9a; - 0x1d9b, 0x1dbf; 0x1dc0, 0x1dff; 0x1e00, 0x1f15; 0x1f18, 0x1f1d; 0x1f20, 0x1f45; - 0x1f48, 0x1f4d; 0x1f50, 0x1f57; 0x1f59, 0x1f59; 0x1f5b, 0x1f5b; 0x1f5d, 0x1f5d; - 0x1f5f, 0x1f7d; 0x1f80, 0x1fb4; 0x1fb6, 0x1fbc; 0x1fbe, 0x1fbe; 0x1fc2, 0x1fc4; - 0x1fc6, 0x1fcc; 0x1fd0, 0x1fd3; 0x1fd6, 0x1fdb; 0x1fe0, 0x1fec; 0x1ff2, 0x1ff4; - 0x1ff6, 0x1ffc; 0x203f, 0x2040; 0x2054, 0x2054; 0x2071, 0x2071; 0x207f, 0x207f; - 0x2090, 0x209c; 0x20d0, 0x20dc; 0x20e1, 0x20e1; 0x20e5, 0x20f0; 0x2102, 0x2102; - 0x2107, 0x2107; 0x210a, 0x2113; 0x2115, 0x2115; 0x2118, 0x2118; 0x2119, 0x211d; - 0x2124, 0x2124; 0x2126, 0x2126; 0x2128, 0x2128; 0x212a, 0x212d; 0x212e, 0x212e; - 0x212f, 0x2134; 0x2135, 0x2138; 0x2139, 0x2139; 0x213c, 0x213f; 0x2145, 0x2149; - 0x214e, 0x214e; 0x2160, 0x2182; 0x2183, 0x2184; 0x2185, 0x2188; 0x2c00, 0x2c7b; - 0x2c7c, 0x2c7d; 0x2c7e, 0x2ce4; 0x2ceb, 0x2cee; 0x2cef, 0x2cf1; 0x2cf2, 0x2cf3; - 0x2d00, 0x2d25; 0x2d27, 0x2d27; 0x2d2d, 0x2d2d; 0x2d30, 0x2d67; 0x2d6f, 0x2d6f; - 0x2d7f, 0x2d7f; 0x2d80, 0x2d96; 0x2da0, 0x2da6; 0x2da8, 0x2dae; 0x2db0, 0x2db6; - 0x2db8, 0x2dbe; 0x2dc0, 0x2dc6; 0x2dc8, 0x2dce; 0x2dd0, 0x2dd6; 0x2dd8, 0x2dde; - 0x2de0, 0x2dff; 0x3005, 0x3005; 0x3006, 0x3006; 0x3007, 0x3007; 0x3021, 0x3029; - 0x302a, 0x302d; 0x302e, 0x302f; 0x3031, 0x3035; 0x3038, 0x303a; 0x303b, 0x303b; - 0x303c, 0x303c; 0x3041, 0x3096; 0x3099, 0x309a; 0x309b, 0x309c; 0x309d, 0x309e; - 0x309f, 0x309f; 0x30a1, 0x30fa; 0x30fc, 0x30fe; 0x30ff, 0x30ff; 0x3105, 0x312f; - 0x3131, 0x318e; 0x31a0, 0x31bf; 0x31f0, 0x31ff; 0x3400, 0x4dbf; 0x4e00, 0xa014; - 0xa015, 0xa015; 0xa016, 0xa48c; 0xa4d0, 0xa4f7; 0xa4f8, 0xa4fd; 0xa500, 0xa60b; - 0xa60c, 0xa60c; 0xa610, 0xa61f; 0xa620, 0xa629; 0xa62a, 0xa62b; 0xa640, 0xa66d; - 0xa66e, 0xa66e; 0xa66f, 0xa66f; 0xa674, 0xa67d; 0xa67f, 0xa67f; 0xa680, 0xa69b; - 0xa69c, 0xa69d; 0xa69e, 0xa69f; 0xa6a0, 0xa6e5; 0xa6e6, 0xa6ef; 0xa6f0, 0xa6f1; - 0xa717, 0xa71f; 0xa722, 0xa76f; 0xa770, 0xa770; 0xa771, 0xa787; 0xa788, 0xa788; - 0xa78b, 0xa78e; 0xa78f, 0xa78f; 0xa790, 0xa7ca; 0xa7d0, 0xa7d1; 0xa7d3, 0xa7d3; - 0xa7d5, 0xa7d9; 0xa7f2, 0xa7f4; 0xa7f5, 0xa7f6; 0xa7f7, 0xa7f7; 0xa7f8, 0xa7f9; - 0xa7fa, 0xa7fa; 0xa7fb, 0xa801; 0xa802, 0xa802; 0xa803, 0xa805; 0xa806, 0xa806; - 0xa807, 0xa80a; 0xa80b, 0xa80b; 0xa80c, 0xa822; 0xa823, 0xa824; 0xa825, 0xa826; - 0xa827, 0xa827; 0xa82c, 0xa82c; 0xa840, 0xa873; 0xa880, 0xa881; 0xa882, 0xa8b3; - 0xa8b4, 0xa8c3; 0xa8c4, 0xa8c5; 0xa8d0, 0xa8d9; 0xa8e0, 0xa8f1; 0xa8f2, 0xa8f7; - 0xa8fb, 0xa8fb; 0xa8fd, 0xa8fe; 0xa8ff, 0xa8ff; 0xa900, 0xa909; 0xa90a, 0xa925; - 0xa926, 0xa92d; 0xa930, 0xa946; 0xa947, 0xa951; 0xa952, 0xa953; 0xa960, 0xa97c; - 0xa980, 0xa982; 0xa983, 0xa983; 0xa984, 0xa9b2; 0xa9b3, 0xa9b3; 0xa9b4, 0xa9b5; - 0xa9b6, 0xa9b9; 0xa9ba, 0xa9bb; 0xa9bc, 0xa9bd; 0xa9be, 0xa9c0; 0xa9cf, 0xa9cf; - 0xa9d0, 0xa9d9; 0xa9e0, 0xa9e4; 0xa9e5, 0xa9e5; 0xa9e6, 0xa9e6; 0xa9e7, 0xa9ef; - 0xa9f0, 0xa9f9; 0xa9fa, 0xa9fe; 0xaa00, 0xaa28; 0xaa29, 0xaa2e; 0xaa2f, 0xaa30; - 0xaa31, 0xaa32; 0xaa33, 0xaa34; 0xaa35, 0xaa36; 0xaa40, 0xaa42; 0xaa43, 0xaa43; - 0xaa44, 0xaa4b; 0xaa4c, 0xaa4c; 0xaa4d, 0xaa4d; 0xaa50, 0xaa59; 0xaa60, 0xaa6f; - 0xaa70, 0xaa70; 0xaa71, 0xaa76; 0xaa7a, 0xaa7a; 0xaa7b, 0xaa7b; 0xaa7c, 0xaa7c; - 0xaa7d, 0xaa7d; 0xaa7e, 0xaaaf; 0xaab0, 0xaab0; 0xaab1, 0xaab1; 0xaab2, 0xaab4; - 0xaab5, 0xaab6; 0xaab7, 0xaab8; 0xaab9, 0xaabd; 0xaabe, 0xaabf; 0xaac0, 0xaac0; - 0xaac1, 0xaac1; 0xaac2, 0xaac2; 0xaadb, 0xaadc; 0xaadd, 0xaadd; 0xaae0, 0xaaea; - 0xaaeb, 0xaaeb; 0xaaec, 0xaaed; 0xaaee, 0xaaef; 0xaaf2, 0xaaf2; 0xaaf3, 0xaaf4; - 0xaaf5, 0xaaf5; 0xaaf6, 0xaaf6; 0xab01, 0xab06; 0xab09, 0xab0e; 0xab11, 0xab16; - 0xab20, 0xab26; 0xab28, 0xab2e; 0xab30, 0xab5a; 0xab5c, 0xab5f; 0xab60, 0xab68; - 0xab69, 0xab69; 0xab70, 0xabbf; 0xabc0, 0xabe2; 0xabe3, 0xabe4; 0xabe5, 0xabe5; - 0xabe6, 0xabe7; 0xabe8, 0xabe8; 0xabe9, 0xabea; 0xabec, 0xabec; 0xabed, 0xabed; - 0xabf0, 0xabf9; 0xac00, 0xd7a3; 0xd7b0, 0xd7c6; 0xd7cb, 0xd7fb; 0xf900, 0xfa6d; - 0xfa70, 0xfad9; 0xfb00, 0xfb06; 0xfb13, 0xfb17; 0xfb1d, 0xfb1d; 0xfb1e, 0xfb1e; - 0xfb1f, 0xfb28; 0xfb2a, 0xfb36; 0xfb38, 0xfb3c; 0xfb3e, 0xfb3e; 0xfb40, 0xfb41; - 0xfb43, 0xfb44; 0xfb46, 0xfbb1; 0xfbd3, 0xfd3d; 0xfd50, 0xfd8f; 0xfd92, 0xfdc7; - 0xfdf0, 0xfdfb; 0xfe00, 0xfe0f; 0xfe20, 0xfe2f; 0xfe33, 0xfe34; 0xfe4d, 0xfe4f; - 0xfe70, 0xfe74; 0xfe76, 0xfefc; 0xff10, 0xff19; 0xff21, 0xff3a; 0xff3f, 0xff3f; - 0xff41, 0xff5a; 0xff66, 0xff6f; 0xff70, 0xff70; 0xff71, 0xff9d; 0xff9e, 0xff9f; - 0xffa0, 0xffbe; 0xffc2, 0xffc7; 0xffca, 0xffcf; 0xffd2, 0xffd7; 0xffda, 0xffdc; - 0x10000, 0x1000b; 0x1000d, 0x10026; 0x10028, 0x1003a; 0x1003c, 0x1003d; 0x1003f, 0x1004d; - 0x10050, 0x1005d; 0x10080, 0x100fa; 0x10140, 0x10174; 0x101fd, 0x101fd; 0x10280, 0x1029c; - 0x102a0, 0x102d0; 0x102e0, 0x102e0; 0x10300, 0x1031f; 0x1032d, 0x10340; 0x10341, 0x10341; - 0x10342, 0x10349; 0x1034a, 0x1034a; 0x10350, 0x10375; 0x10376, 0x1037a; 0x10380, 0x1039d; - 0x103a0, 0x103c3; 0x103c8, 0x103cf; 0x103d1, 0x103d5; 0x10400, 0x1044f; 0x10450, 0x1049d; - 0x104a0, 0x104a9; 0x104b0, 0x104d3; 0x104d8, 0x104fb; 0x10500, 0x10527; 0x10530, 0x10563; - 0x10570, 0x1057a; 0x1057c, 0x1058a; 0x1058c, 0x10592; 0x10594, 0x10595; 0x10597, 0x105a1; - 0x105a3, 0x105b1; 0x105b3, 0x105b9; 0x105bb, 0x105bc; 0x10600, 0x10736; 0x10740, 0x10755; - 0x10760, 0x10767; 0x10780, 0x10785; 0x10787, 0x107b0; 0x107b2, 0x107ba; 0x10800, 0x10805; - 0x10808, 0x10808; 0x1080a, 0x10835; 0x10837, 0x10838; 0x1083c, 0x1083c; 0x1083f, 0x10855; - 0x10860, 0x10876; 0x10880, 0x1089e; 0x108e0, 0x108f2; 0x108f4, 0x108f5; 0x10900, 0x10915; - 0x10920, 0x10939; 0x10980, 0x109b7; 0x109be, 0x109bf; 0x10a00, 0x10a00; 0x10a01, 0x10a03; - 0x10a05, 0x10a06; 0x10a0c, 0x10a0f; 0x10a10, 0x10a13; 0x10a15, 0x10a17; 0x10a19, 0x10a35; - 0x10a38, 0x10a3a; 0x10a3f, 0x10a3f; 0x10a60, 0x10a7c; 0x10a80, 0x10a9c; 0x10ac0, 0x10ac7; - 0x10ac9, 0x10ae4; 0x10ae5, 0x10ae6; 0x10b00, 0x10b35; 0x10b40, 0x10b55; 0x10b60, 0x10b72; - 0x10b80, 0x10b91; 0x10c00, 0x10c48; 0x10c80, 0x10cb2; 0x10cc0, 0x10cf2; 0x10d00, 0x10d23; - 0x10d24, 0x10d27; 0x10d30, 0x10d39; 0x10e80, 0x10ea9; 0x10eab, 0x10eac; 0x10eb0, 0x10eb1; - 0x10f00, 0x10f1c; 0x10f27, 0x10f27; 0x10f30, 0x10f45; 0x10f46, 0x10f50; 0x10f70, 0x10f81; - 0x10f82, 0x10f85; 0x10fb0, 0x10fc4; 0x10fe0, 0x10ff6; 0x11000, 0x11000; 0x11001, 0x11001; - 0x11002, 0x11002; 0x11003, 0x11037; 0x11038, 0x11046; 0x11066, 0x1106f; 0x11070, 0x11070; - 0x11071, 0x11072; 0x11073, 0x11074; 0x11075, 0x11075; 0x1107f, 0x11081; 0x11082, 0x11082; - 0x11083, 0x110af; 0x110b0, 0x110b2; 0x110b3, 0x110b6; 0x110b7, 0x110b8; 0x110b9, 0x110ba; - 0x110c2, 0x110c2; 0x110d0, 0x110e8; 0x110f0, 0x110f9; 0x11100, 0x11102; 0x11103, 0x11126; - 0x11127, 0x1112b; 0x1112c, 0x1112c; 0x1112d, 0x11134; 0x11136, 0x1113f; 0x11144, 0x11144; - 0x11145, 0x11146; 0x11147, 0x11147; 0x11150, 0x11172; 0x11173, 0x11173; 0x11176, 0x11176; - 0x11180, 0x11181; 0x11182, 0x11182; 0x11183, 0x111b2; 0x111b3, 0x111b5; 0x111b6, 0x111be; - 0x111bf, 0x111c0; 0x111c1, 0x111c4; 0x111c9, 0x111cc; 0x111ce, 0x111ce; 0x111cf, 0x111cf; - 0x111d0, 0x111d9; 0x111da, 0x111da; 0x111dc, 0x111dc; 0x11200, 0x11211; 0x11213, 0x1122b; - 0x1122c, 0x1122e; 0x1122f, 0x11231; 0x11232, 0x11233; 0x11234, 0x11234; 0x11235, 0x11235; - 0x11236, 0x11237; 0x1123e, 0x1123e; 0x11280, 0x11286; 0x11288, 0x11288; 0x1128a, 0x1128d; - 0x1128f, 0x1129d; 0x1129f, 0x112a8; 0x112b0, 0x112de; 0x112df, 0x112df; 0x112e0, 0x112e2; - 0x112e3, 0x112ea; 0x112f0, 0x112f9; 0x11300, 0x11301; 0x11302, 0x11303; 0x11305, 0x1130c; - 0x1130f, 0x11310; 0x11313, 0x11328; 0x1132a, 0x11330; 0x11332, 0x11333; 0x11335, 0x11339; - 0x1133b, 0x1133c; 0x1133d, 0x1133d; 0x1133e, 0x1133f; 0x11340, 0x11340; 0x11341, 0x11344; - 0x11347, 0x11348; 0x1134b, 0x1134d; 0x11350, 0x11350; 0x11357, 0x11357; 0x1135d, 0x11361; - 0x11362, 0x11363; 0x11366, 0x1136c; 0x11370, 0x11374; 0x11400, 0x11434; 0x11435, 0x11437; - 0x11438, 0x1143f; 0x11440, 0x11441; 0x11442, 0x11444; 0x11445, 0x11445; 0x11446, 0x11446; - 0x11447, 0x1144a; 0x11450, 0x11459; 0x1145e, 0x1145e; 0x1145f, 0x11461; 0x11480, 0x114af; - 0x114b0, 0x114b2; 0x114b3, 0x114b8; 0x114b9, 0x114b9; 0x114ba, 0x114ba; 0x114bb, 0x114be; - 0x114bf, 0x114c0; 0x114c1, 0x114c1; 0x114c2, 0x114c3; 0x114c4, 0x114c5; 0x114c7, 0x114c7; - 0x114d0, 0x114d9; 0x11580, 0x115ae; 0x115af, 0x115b1; 0x115b2, 0x115b5; 0x115b8, 0x115bb; - 0x115bc, 0x115bd; 0x115be, 0x115be; 0x115bf, 0x115c0; 0x115d8, 0x115db; 0x115dc, 0x115dd; - 0x11600, 0x1162f; 0x11630, 0x11632; 0x11633, 0x1163a; 0x1163b, 0x1163c; 0x1163d, 0x1163d; - 0x1163e, 0x1163e; 0x1163f, 0x11640; 0x11644, 0x11644; 0x11650, 0x11659; 0x11680, 0x116aa; - 0x116ab, 0x116ab; 0x116ac, 0x116ac; 0x116ad, 0x116ad; 0x116ae, 0x116af; 0x116b0, 0x116b5; - 0x116b6, 0x116b6; 0x116b7, 0x116b7; 0x116b8, 0x116b8; 0x116c0, 0x116c9; 0x11700, 0x1171a; - 0x1171d, 0x1171f; 0x11720, 0x11721; 0x11722, 0x11725; 0x11726, 0x11726; 0x11727, 0x1172b; - 0x11730, 0x11739; 0x11740, 0x11746; 0x11800, 0x1182b; 0x1182c, 0x1182e; 0x1182f, 0x11837; - 0x11838, 0x11838; 0x11839, 0x1183a; 0x118a0, 0x118df; 0x118e0, 0x118e9; 0x118ff, 0x11906; - 0x11909, 0x11909; 0x1190c, 0x11913; 0x11915, 0x11916; 0x11918, 0x1192f; 0x11930, 0x11935; - 0x11937, 0x11938; 0x1193b, 0x1193c; 0x1193d, 0x1193d; 0x1193e, 0x1193e; 0x1193f, 0x1193f; - 0x11940, 0x11940; 0x11941, 0x11941; 0x11942, 0x11942; 0x11943, 0x11943; 0x11950, 0x11959; - 0x119a0, 0x119a7; 0x119aa, 0x119d0; 0x119d1, 0x119d3; 0x119d4, 0x119d7; 0x119da, 0x119db; - 0x119dc, 0x119df; 0x119e0, 0x119e0; 0x119e1, 0x119e1; 0x119e3, 0x119e3; 0x119e4, 0x119e4; - 0x11a00, 0x11a00; 0x11a01, 0x11a0a; 0x11a0b, 0x11a32; 0x11a33, 0x11a38; 0x11a39, 0x11a39; - 0x11a3a, 0x11a3a; 0x11a3b, 0x11a3e; 0x11a47, 0x11a47; 0x11a50, 0x11a50; 0x11a51, 0x11a56; - 0x11a57, 0x11a58; 0x11a59, 0x11a5b; 0x11a5c, 0x11a89; 0x11a8a, 0x11a96; 0x11a97, 0x11a97; - 0x11a98, 0x11a99; 0x11a9d, 0x11a9d; 0x11ab0, 0x11af8; 0x11c00, 0x11c08; 0x11c0a, 0x11c2e; - 0x11c2f, 0x11c2f; 0x11c30, 0x11c36; 0x11c38, 0x11c3d; 0x11c3e, 0x11c3e; 0x11c3f, 0x11c3f; - 0x11c40, 0x11c40; 0x11c50, 0x11c59; 0x11c72, 0x11c8f; 0x11c92, 0x11ca7; 0x11ca9, 0x11ca9; - 0x11caa, 0x11cb0; 0x11cb1, 0x11cb1; 0x11cb2, 0x11cb3; 0x11cb4, 0x11cb4; 0x11cb5, 0x11cb6; - 0x11d00, 0x11d06; 0x11d08, 0x11d09; 0x11d0b, 0x11d30; 0x11d31, 0x11d36; 0x11d3a, 0x11d3a; - 0x11d3c, 0x11d3d; 0x11d3f, 0x11d45; 0x11d46, 0x11d46; 0x11d47, 0x11d47; 0x11d50, 0x11d59; - 0x11d60, 0x11d65; 0x11d67, 0x11d68; 0x11d6a, 0x11d89; 0x11d8a, 0x11d8e; 0x11d90, 0x11d91; - 0x11d93, 0x11d94; 0x11d95, 0x11d95; 0x11d96, 0x11d96; 0x11d97, 0x11d97; 0x11d98, 0x11d98; - 0x11da0, 0x11da9; 0x11ee0, 0x11ef2; 0x11ef3, 0x11ef4; 0x11ef5, 0x11ef6; 0x11fb0, 0x11fb0; - 0x12000, 0x12399; 0x12400, 0x1246e; 0x12480, 0x12543; 0x12f90, 0x12ff0; 0x13000, 0x1342e; - 0x14400, 0x14646; 0x16800, 0x16a38; 0x16a40, 0x16a5e; 0x16a60, 0x16a69; 0x16a70, 0x16abe; - 0x16ac0, 0x16ac9; 0x16ad0, 0x16aed; 0x16af0, 0x16af4; 0x16b00, 0x16b2f; 0x16b30, 0x16b36; - 0x16b40, 0x16b43; 0x16b50, 0x16b59; 0x16b63, 0x16b77; 0x16b7d, 0x16b8f; 0x16e40, 0x16e7f; - 0x16f00, 0x16f4a; 0x16f4f, 0x16f4f; 0x16f50, 0x16f50; 0x16f51, 0x16f87; 0x16f8f, 0x16f92; - 0x16f93, 0x16f9f; 0x16fe0, 0x16fe1; 0x16fe3, 0x16fe3; 0x16fe4, 0x16fe4; 0x16ff0, 0x16ff1; - 0x17000, 0x187f7; 0x18800, 0x18cd5; 0x18d00, 0x18d08; 0x1aff0, 0x1aff3; 0x1aff5, 0x1affb; - 0x1affd, 0x1affe; 0x1b000, 0x1b122; 0x1b150, 0x1b152; 0x1b164, 0x1b167; 0x1b170, 0x1b2fb; - 0x1bc00, 0x1bc6a; 0x1bc70, 0x1bc7c; 0x1bc80, 0x1bc88; 0x1bc90, 0x1bc99; 0x1bc9d, 0x1bc9e; - 0x1cf00, 0x1cf2d; 0x1cf30, 0x1cf46; 0x1d165, 0x1d166; 0x1d167, 0x1d169; 0x1d16d, 0x1d172; - 0x1d17b, 0x1d182; 0x1d185, 0x1d18b; 0x1d1aa, 0x1d1ad; 0x1d242, 0x1d244; 0x1d400, 0x1d454; - 0x1d456, 0x1d49c; 0x1d49e, 0x1d49f; 0x1d4a2, 0x1d4a2; 0x1d4a5, 0x1d4a6; 0x1d4a9, 0x1d4ac; - 0x1d4ae, 0x1d4b9; 0x1d4bb, 0x1d4bb; 0x1d4bd, 0x1d4c3; 0x1d4c5, 0x1d505; 0x1d507, 0x1d50a; - 0x1d50d, 0x1d514; 0x1d516, 0x1d51c; 0x1d51e, 0x1d539; 0x1d53b, 0x1d53e; 0x1d540, 0x1d544; - 0x1d546, 0x1d546; 0x1d54a, 0x1d550; 0x1d552, 0x1d6a5; 0x1d6a8, 0x1d6c0; 0x1d6c2, 0x1d6da; - 0x1d6dc, 0x1d6fa; 0x1d6fc, 0x1d714; 0x1d716, 0x1d734; 0x1d736, 0x1d74e; 0x1d750, 0x1d76e; - 0x1d770, 0x1d788; 0x1d78a, 0x1d7a8; 0x1d7aa, 0x1d7c2; 0x1d7c4, 0x1d7cb; 0x1d7ce, 0x1d7ff; - 0x1da00, 0x1da36; 0x1da3b, 0x1da6c; 0x1da75, 0x1da75; 0x1da84, 0x1da84; 0x1da9b, 0x1da9f; - 0x1daa1, 0x1daaf; 0x1df00, 0x1df09; 0x1df0a, 0x1df0a; 0x1df0b, 0x1df1e; 0x1e000, 0x1e006; - 0x1e008, 0x1e018; 0x1e01b, 0x1e021; 0x1e023, 0x1e024; 0x1e026, 0x1e02a; 0x1e100, 0x1e12c; - 0x1e130, 0x1e136; 0x1e137, 0x1e13d; 0x1e140, 0x1e149; 0x1e14e, 0x1e14e; 0x1e290, 0x1e2ad; - 0x1e2ae, 0x1e2ae; 0x1e2c0, 0x1e2eb; 0x1e2ec, 0x1e2ef; 0x1e2f0, 0x1e2f9; 0x1e7e0, 0x1e7e6; - 0x1e7e8, 0x1e7eb; 0x1e7ed, 0x1e7ee; 0x1e7f0, 0x1e7fe; 0x1e800, 0x1e8c4; 0x1e8d0, 0x1e8d6; - 0x1e900, 0x1e943; 0x1e944, 0x1e94a; 0x1e94b, 0x1e94b; 0x1e950, 0x1e959; 0x1ee00, 0x1ee03; - 0x1ee05, 0x1ee1f; 0x1ee21, 0x1ee22; 0x1ee24, 0x1ee24; 0x1ee27, 0x1ee27; 0x1ee29, 0x1ee32; - 0x1ee34, 0x1ee37; 0x1ee39, 0x1ee39; 0x1ee3b, 0x1ee3b; 0x1ee42, 0x1ee42; 0x1ee47, 0x1ee47; - 0x1ee49, 0x1ee49; 0x1ee4b, 0x1ee4b; 0x1ee4d, 0x1ee4f; 0x1ee51, 0x1ee52; 0x1ee54, 0x1ee54; - 0x1ee57, 0x1ee57; 0x1ee59, 0x1ee59; 0x1ee5b, 0x1ee5b; 0x1ee5d, 0x1ee5d; 0x1ee5f, 0x1ee5f; - 0x1ee61, 0x1ee62; 0x1ee64, 0x1ee64; 0x1ee67, 0x1ee6a; 0x1ee6c, 0x1ee72; 0x1ee74, 0x1ee77; - 0x1ee79, 0x1ee7c; 0x1ee7e, 0x1ee7e; 0x1ee80, 0x1ee89; 0x1ee8b, 0x1ee9b; 0x1eea1, 0x1eea3; - 0x1eea5, 0x1eea9; 0x1eeab, 0x1eebb; 0x1fbf0, 0x1fbf9; 0x20000, 0x2a6df; 0x2a700, 0x2b738; - 0x2b740, 0x2b81d; 0x2b820, 0x2cea1; 0x2ceb0, 0x2ebe0; 0x2f800, 0x2fa1d; 0x30000, 0x3134a; - 0xe0100, 0xe01ef] + [ + (0x30, 0x39); + (0x41, 0x5a); + (0x5f, 0x5f); + (0x61, 0x7a); + (0xaa, 0xaa); + (0xb5, 0xb5); + (0xb7, 0xb7); + (0xba, 0xba); + (0xc0, 0xd6); + (0xd8, 0xf6); + (0xf8, 0x1ba); + (0x1bb, 0x1bb); + (0x1bc, 0x1bf); + (0x1c0, 0x1c3); + (0x1c4, 0x293); + (0x294, 0x294); + (0x295, 0x2af); + (0x2b0, 0x2c1); + (0x2c6, 0x2d1); + (0x2e0, 0x2e4); + (0x2ec, 0x2ec); + (0x2ee, 0x2ee); + (0x300, 0x36f); + (0x370, 0x373); + (0x374, 0x374); + (0x376, 0x377); + (0x37a, 0x37a); + (0x37b, 0x37d); + (0x37f, 0x37f); + (0x386, 0x386); + (0x387, 0x387); + (0x388, 0x38a); + (0x38c, 0x38c); + (0x38e, 0x3a1); + (0x3a3, 0x3f5); + (0x3f7, 0x481); + (0x483, 0x487); + (0x48a, 0x52f); + (0x531, 0x556); + (0x559, 0x559); + (0x560, 0x588); + (0x591, 0x5bd); + (0x5bf, 0x5bf); + (0x5c1, 0x5c2); + (0x5c4, 0x5c5); + (0x5c7, 0x5c7); + (0x5d0, 0x5ea); + (0x5ef, 0x5f2); + (0x610, 0x61a); + (0x620, 0x63f); + (0x640, 0x640); + (0x641, 0x64a); + (0x64b, 0x65f); + (0x660, 0x669); + (0x66e, 0x66f); + (0x670, 0x670); + (0x671, 0x6d3); + (0x6d5, 0x6d5); + (0x6d6, 0x6dc); + (0x6df, 0x6e4); + (0x6e5, 0x6e6); + (0x6e7, 0x6e8); + (0x6ea, 0x6ed); + (0x6ee, 0x6ef); + (0x6f0, 0x6f9); + (0x6fa, 0x6fc); + (0x6ff, 0x6ff); + (0x710, 0x710); + (0x711, 0x711); + (0x712, 0x72f); + (0x730, 0x74a); + (0x74d, 0x7a5); + (0x7a6, 0x7b0); + (0x7b1, 0x7b1); + (0x7c0, 0x7c9); + (0x7ca, 0x7ea); + (0x7eb, 0x7f3); + (0x7f4, 0x7f5); + (0x7fa, 0x7fa); + (0x7fd, 0x7fd); + (0x800, 0x815); + (0x816, 0x819); + (0x81a, 0x81a); + (0x81b, 0x823); + (0x824, 0x824); + (0x825, 0x827); + (0x828, 0x828); + (0x829, 0x82d); + (0x840, 0x858); + (0x859, 0x85b); + (0x860, 0x86a); + (0x870, 0x887); + (0x889, 0x88e); + (0x898, 0x89f); + (0x8a0, 0x8c8); + (0x8c9, 0x8c9); + (0x8ca, 0x8e1); + (0x8e3, 0x902); + (0x903, 0x903); + (0x904, 0x939); + (0x93a, 0x93a); + (0x93b, 0x93b); + (0x93c, 0x93c); + (0x93d, 0x93d); + (0x93e, 0x940); + (0x941, 0x948); + (0x949, 0x94c); + (0x94d, 0x94d); + (0x94e, 0x94f); + (0x950, 0x950); + (0x951, 0x957); + (0x958, 0x961); + (0x962, 0x963); + (0x966, 0x96f); + (0x971, 0x971); + (0x972, 0x980); + (0x981, 0x981); + (0x982, 0x983); + (0x985, 0x98c); + (0x98f, 0x990); + (0x993, 0x9a8); + (0x9aa, 0x9b0); + (0x9b2, 0x9b2); + (0x9b6, 0x9b9); + (0x9bc, 0x9bc); + (0x9bd, 0x9bd); + (0x9be, 0x9c0); + (0x9c1, 0x9c4); + (0x9c7, 0x9c8); + (0x9cb, 0x9cc); + (0x9cd, 0x9cd); + (0x9ce, 0x9ce); + (0x9d7, 0x9d7); + (0x9dc, 0x9dd); + (0x9df, 0x9e1); + (0x9e2, 0x9e3); + (0x9e6, 0x9ef); + (0x9f0, 0x9f1); + (0x9fc, 0x9fc); + (0x9fe, 0x9fe); + (0xa01, 0xa02); + (0xa03, 0xa03); + (0xa05, 0xa0a); + (0xa0f, 0xa10); + (0xa13, 0xa28); + (0xa2a, 0xa30); + (0xa32, 0xa33); + (0xa35, 0xa36); + (0xa38, 0xa39); + (0xa3c, 0xa3c); + (0xa3e, 0xa40); + (0xa41, 0xa42); + (0xa47, 0xa48); + (0xa4b, 0xa4d); + (0xa51, 0xa51); + (0xa59, 0xa5c); + (0xa5e, 0xa5e); + (0xa66, 0xa6f); + (0xa70, 0xa71); + (0xa72, 0xa74); + (0xa75, 0xa75); + (0xa81, 0xa82); + (0xa83, 0xa83); + (0xa85, 0xa8d); + (0xa8f, 0xa91); + (0xa93, 0xaa8); + (0xaaa, 0xab0); + (0xab2, 0xab3); + (0xab5, 0xab9); + (0xabc, 0xabc); + (0xabd, 0xabd); + (0xabe, 0xac0); + (0xac1, 0xac5); + (0xac7, 0xac8); + (0xac9, 0xac9); + (0xacb, 0xacc); + (0xacd, 0xacd); + (0xad0, 0xad0); + (0xae0, 0xae1); + (0xae2, 0xae3); + (0xae6, 0xaef); + (0xaf9, 0xaf9); + (0xafa, 0xaff); + (0xb01, 0xb01); + (0xb02, 0xb03); + (0xb05, 0xb0c); + (0xb0f, 0xb10); + (0xb13, 0xb28); + (0xb2a, 0xb30); + (0xb32, 0xb33); + (0xb35, 0xb39); + (0xb3c, 0xb3c); + (0xb3d, 0xb3d); + (0xb3e, 0xb3e); + (0xb3f, 0xb3f); + (0xb40, 0xb40); + (0xb41, 0xb44); + (0xb47, 0xb48); + (0xb4b, 0xb4c); + (0xb4d, 0xb4d); + (0xb55, 0xb56); + (0xb57, 0xb57); + (0xb5c, 0xb5d); + (0xb5f, 0xb61); + (0xb62, 0xb63); + (0xb66, 0xb6f); + (0xb71, 0xb71); + (0xb82, 0xb82); + (0xb83, 0xb83); + (0xb85, 0xb8a); + (0xb8e, 0xb90); + (0xb92, 0xb95); + (0xb99, 0xb9a); + (0xb9c, 0xb9c); + (0xb9e, 0xb9f); + (0xba3, 0xba4); + (0xba8, 0xbaa); + (0xbae, 0xbb9); + (0xbbe, 0xbbf); + (0xbc0, 0xbc0); + (0xbc1, 0xbc2); + (0xbc6, 0xbc8); + (0xbca, 0xbcc); + (0xbcd, 0xbcd); + (0xbd0, 0xbd0); + (0xbd7, 0xbd7); + (0xbe6, 0xbef); + (0xc00, 0xc00); + (0xc01, 0xc03); + (0xc04, 0xc04); + (0xc05, 0xc0c); + (0xc0e, 0xc10); + (0xc12, 0xc28); + (0xc2a, 0xc39); + (0xc3c, 0xc3c); + (0xc3d, 0xc3d); + (0xc3e, 0xc40); + (0xc41, 0xc44); + (0xc46, 0xc48); + (0xc4a, 0xc4d); + (0xc55, 0xc56); + (0xc58, 0xc5a); + (0xc5d, 0xc5d); + (0xc60, 0xc61); + (0xc62, 0xc63); + (0xc66, 0xc6f); + (0xc80, 0xc80); + (0xc81, 0xc81); + (0xc82, 0xc83); + (0xc85, 0xc8c); + (0xc8e, 0xc90); + (0xc92, 0xca8); + (0xcaa, 0xcb3); + (0xcb5, 0xcb9); + (0xcbc, 0xcbc); + (0xcbd, 0xcbd); + (0xcbe, 0xcbe); + (0xcbf, 0xcbf); + (0xcc0, 0xcc4); + (0xcc6, 0xcc6); + (0xcc7, 0xcc8); + (0xcca, 0xccb); + (0xccc, 0xccd); + (0xcd5, 0xcd6); + (0xcdd, 0xcde); + (0xce0, 0xce1); + (0xce2, 0xce3); + (0xce6, 0xcef); + (0xcf1, 0xcf2); + (0xd00, 0xd01); + (0xd02, 0xd03); + (0xd04, 0xd0c); + (0xd0e, 0xd10); + (0xd12, 0xd3a); + (0xd3b, 0xd3c); + (0xd3d, 0xd3d); + (0xd3e, 0xd40); + (0xd41, 0xd44); + (0xd46, 0xd48); + (0xd4a, 0xd4c); + (0xd4d, 0xd4d); + (0xd4e, 0xd4e); + (0xd54, 0xd56); + (0xd57, 0xd57); + (0xd5f, 0xd61); + (0xd62, 0xd63); + (0xd66, 0xd6f); + (0xd7a, 0xd7f); + (0xd81, 0xd81); + (0xd82, 0xd83); + (0xd85, 0xd96); + (0xd9a, 0xdb1); + (0xdb3, 0xdbb); + (0xdbd, 0xdbd); + (0xdc0, 0xdc6); + (0xdca, 0xdca); + (0xdcf, 0xdd1); + (0xdd2, 0xdd4); + (0xdd6, 0xdd6); + (0xdd8, 0xddf); + (0xde6, 0xdef); + (0xdf2, 0xdf3); + (0xe01, 0xe30); + (0xe31, 0xe31); + (0xe32, 0xe33); + (0xe34, 0xe3a); + (0xe40, 0xe45); + (0xe46, 0xe46); + (0xe47, 0xe4e); + (0xe50, 0xe59); + (0xe81, 0xe82); + (0xe84, 0xe84); + (0xe86, 0xe8a); + (0xe8c, 0xea3); + (0xea5, 0xea5); + (0xea7, 0xeb0); + (0xeb1, 0xeb1); + (0xeb2, 0xeb3); + (0xeb4, 0xebc); + (0xebd, 0xebd); + (0xec0, 0xec4); + (0xec6, 0xec6); + (0xec8, 0xecd); + (0xed0, 0xed9); + (0xedc, 0xedf); + (0xf00, 0xf00); + (0xf18, 0xf19); + (0xf20, 0xf29); + (0xf35, 0xf35); + (0xf37, 0xf37); + (0xf39, 0xf39); + (0xf3e, 0xf3f); + (0xf40, 0xf47); + (0xf49, 0xf6c); + (0xf71, 0xf7e); + (0xf7f, 0xf7f); + (0xf80, 0xf84); + (0xf86, 0xf87); + (0xf88, 0xf8c); + (0xf8d, 0xf97); + (0xf99, 0xfbc); + (0xfc6, 0xfc6); + (0x1000, 0x102a); + (0x102b, 0x102c); + (0x102d, 0x1030); + (0x1031, 0x1031); + (0x1032, 0x1037); + (0x1038, 0x1038); + (0x1039, 0x103a); + (0x103b, 0x103c); + (0x103d, 0x103e); + (0x103f, 0x103f); + (0x1040, 0x1049); + (0x1050, 0x1055); + (0x1056, 0x1057); + (0x1058, 0x1059); + (0x105a, 0x105d); + (0x105e, 0x1060); + (0x1061, 0x1061); + (0x1062, 0x1064); + (0x1065, 0x1066); + (0x1067, 0x106d); + (0x106e, 0x1070); + (0x1071, 0x1074); + (0x1075, 0x1081); + (0x1082, 0x1082); + (0x1083, 0x1084); + (0x1085, 0x1086); + (0x1087, 0x108c); + (0x108d, 0x108d); + (0x108e, 0x108e); + (0x108f, 0x108f); + (0x1090, 0x1099); + (0x109a, 0x109c); + (0x109d, 0x109d); + (0x10a0, 0x10c5); + (0x10c7, 0x10c7); + (0x10cd, 0x10cd); + (0x10d0, 0x10fa); + (0x10fc, 0x10fc); + (0x10fd, 0x10ff); + (0x1100, 0x1248); + (0x124a, 0x124d); + (0x1250, 0x1256); + (0x1258, 0x1258); + (0x125a, 0x125d); + (0x1260, 0x1288); + (0x128a, 0x128d); + (0x1290, 0x12b0); + (0x12b2, 0x12b5); + (0x12b8, 0x12be); + (0x12c0, 0x12c0); + (0x12c2, 0x12c5); + (0x12c8, 0x12d6); + (0x12d8, 0x1310); + (0x1312, 0x1315); + (0x1318, 0x135a); + (0x135d, 0x135f); + (0x1369, 0x1371); + (0x1380, 0x138f); + (0x13a0, 0x13f5); + (0x13f8, 0x13fd); + (0x1401, 0x166c); + (0x166f, 0x167f); + (0x1681, 0x169a); + (0x16a0, 0x16ea); + (0x16ee, 0x16f0); + (0x16f1, 0x16f8); + (0x1700, 0x1711); + (0x1712, 0x1714); + (0x1715, 0x1715); + (0x171f, 0x1731); + (0x1732, 0x1733); + (0x1734, 0x1734); + (0x1740, 0x1751); + (0x1752, 0x1753); + (0x1760, 0x176c); + (0x176e, 0x1770); + (0x1772, 0x1773); + (0x1780, 0x17b3); + (0x17b4, 0x17b5); + (0x17b6, 0x17b6); + (0x17b7, 0x17bd); + (0x17be, 0x17c5); + (0x17c6, 0x17c6); + (0x17c7, 0x17c8); + (0x17c9, 0x17d3); + (0x17d7, 0x17d7); + (0x17dc, 0x17dc); + (0x17dd, 0x17dd); + (0x17e0, 0x17e9); + (0x180b, 0x180d); + (0x180f, 0x180f); + (0x1810, 0x1819); + (0x1820, 0x1842); + (0x1843, 0x1843); + (0x1844, 0x1878); + (0x1880, 0x1884); + (0x1885, 0x1886); + (0x1887, 0x18a8); + (0x18a9, 0x18a9); + (0x18aa, 0x18aa); + (0x18b0, 0x18f5); + (0x1900, 0x191e); + (0x1920, 0x1922); + (0x1923, 0x1926); + (0x1927, 0x1928); + (0x1929, 0x192b); + (0x1930, 0x1931); + (0x1932, 0x1932); + (0x1933, 0x1938); + (0x1939, 0x193b); + (0x1946, 0x194f); + (0x1950, 0x196d); + (0x1970, 0x1974); + (0x1980, 0x19ab); + (0x19b0, 0x19c9); + (0x19d0, 0x19d9); + (0x19da, 0x19da); + (0x1a00, 0x1a16); + (0x1a17, 0x1a18); + (0x1a19, 0x1a1a); + (0x1a1b, 0x1a1b); + (0x1a20, 0x1a54); + (0x1a55, 0x1a55); + (0x1a56, 0x1a56); + (0x1a57, 0x1a57); + (0x1a58, 0x1a5e); + (0x1a60, 0x1a60); + (0x1a61, 0x1a61); + (0x1a62, 0x1a62); + (0x1a63, 0x1a64); + (0x1a65, 0x1a6c); + (0x1a6d, 0x1a72); + (0x1a73, 0x1a7c); + (0x1a7f, 0x1a7f); + (0x1a80, 0x1a89); + (0x1a90, 0x1a99); + (0x1aa7, 0x1aa7); + (0x1ab0, 0x1abd); + (0x1abf, 0x1ace); + (0x1b00, 0x1b03); + (0x1b04, 0x1b04); + (0x1b05, 0x1b33); + (0x1b34, 0x1b34); + (0x1b35, 0x1b35); + (0x1b36, 0x1b3a); + (0x1b3b, 0x1b3b); + (0x1b3c, 0x1b3c); + (0x1b3d, 0x1b41); + (0x1b42, 0x1b42); + (0x1b43, 0x1b44); + (0x1b45, 0x1b4c); + (0x1b50, 0x1b59); + (0x1b6b, 0x1b73); + (0x1b80, 0x1b81); + (0x1b82, 0x1b82); + (0x1b83, 0x1ba0); + (0x1ba1, 0x1ba1); + (0x1ba2, 0x1ba5); + (0x1ba6, 0x1ba7); + (0x1ba8, 0x1ba9); + (0x1baa, 0x1baa); + (0x1bab, 0x1bad); + (0x1bae, 0x1baf); + (0x1bb0, 0x1bb9); + (0x1bba, 0x1be5); + (0x1be6, 0x1be6); + (0x1be7, 0x1be7); + (0x1be8, 0x1be9); + (0x1bea, 0x1bec); + (0x1bed, 0x1bed); + (0x1bee, 0x1bee); + (0x1bef, 0x1bf1); + (0x1bf2, 0x1bf3); + (0x1c00, 0x1c23); + (0x1c24, 0x1c2b); + (0x1c2c, 0x1c33); + (0x1c34, 0x1c35); + (0x1c36, 0x1c37); + (0x1c40, 0x1c49); + (0x1c4d, 0x1c4f); + (0x1c50, 0x1c59); + (0x1c5a, 0x1c77); + (0x1c78, 0x1c7d); + (0x1c80, 0x1c88); + (0x1c90, 0x1cba); + (0x1cbd, 0x1cbf); + (0x1cd0, 0x1cd2); + (0x1cd4, 0x1ce0); + (0x1ce1, 0x1ce1); + (0x1ce2, 0x1ce8); + (0x1ce9, 0x1cec); + (0x1ced, 0x1ced); + (0x1cee, 0x1cf3); + (0x1cf4, 0x1cf4); + (0x1cf5, 0x1cf6); + (0x1cf7, 0x1cf7); + (0x1cf8, 0x1cf9); + (0x1cfa, 0x1cfa); + (0x1d00, 0x1d2b); + (0x1d2c, 0x1d6a); + (0x1d6b, 0x1d77); + (0x1d78, 0x1d78); + (0x1d79, 0x1d9a); + (0x1d9b, 0x1dbf); + (0x1dc0, 0x1dff); + (0x1e00, 0x1f15); + (0x1f18, 0x1f1d); + (0x1f20, 0x1f45); + (0x1f48, 0x1f4d); + (0x1f50, 0x1f57); + (0x1f59, 0x1f59); + (0x1f5b, 0x1f5b); + (0x1f5d, 0x1f5d); + (0x1f5f, 0x1f7d); + (0x1f80, 0x1fb4); + (0x1fb6, 0x1fbc); + (0x1fbe, 0x1fbe); + (0x1fc2, 0x1fc4); + (0x1fc6, 0x1fcc); + (0x1fd0, 0x1fd3); + (0x1fd6, 0x1fdb); + (0x1fe0, 0x1fec); + (0x1ff2, 0x1ff4); + (0x1ff6, 0x1ffc); + (0x203f, 0x2040); + (0x2054, 0x2054); + (0x2071, 0x2071); + (0x207f, 0x207f); + (0x2090, 0x209c); + (0x20d0, 0x20dc); + (0x20e1, 0x20e1); + (0x20e5, 0x20f0); + (0x2102, 0x2102); + (0x2107, 0x2107); + (0x210a, 0x2113); + (0x2115, 0x2115); + (0x2118, 0x2118); + (0x2119, 0x211d); + (0x2124, 0x2124); + (0x2126, 0x2126); + (0x2128, 0x2128); + (0x212a, 0x212d); + (0x212e, 0x212e); + (0x212f, 0x2134); + (0x2135, 0x2138); + (0x2139, 0x2139); + (0x213c, 0x213f); + (0x2145, 0x2149); + (0x214e, 0x214e); + (0x2160, 0x2182); + (0x2183, 0x2184); + (0x2185, 0x2188); + (0x2c00, 0x2c7b); + (0x2c7c, 0x2c7d); + (0x2c7e, 0x2ce4); + (0x2ceb, 0x2cee); + (0x2cef, 0x2cf1); + (0x2cf2, 0x2cf3); + (0x2d00, 0x2d25); + (0x2d27, 0x2d27); + (0x2d2d, 0x2d2d); + (0x2d30, 0x2d67); + (0x2d6f, 0x2d6f); + (0x2d7f, 0x2d7f); + (0x2d80, 0x2d96); + (0x2da0, 0x2da6); + (0x2da8, 0x2dae); + (0x2db0, 0x2db6); + (0x2db8, 0x2dbe); + (0x2dc0, 0x2dc6); + (0x2dc8, 0x2dce); + (0x2dd0, 0x2dd6); + (0x2dd8, 0x2dde); + (0x2de0, 0x2dff); + (0x3005, 0x3005); + (0x3006, 0x3006); + (0x3007, 0x3007); + (0x3021, 0x3029); + (0x302a, 0x302d); + (0x302e, 0x302f); + (0x3031, 0x3035); + (0x3038, 0x303a); + (0x303b, 0x303b); + (0x303c, 0x303c); + (0x3041, 0x3096); + (0x3099, 0x309a); + (0x309b, 0x309c); + (0x309d, 0x309e); + (0x309f, 0x309f); + (0x30a1, 0x30fa); + (0x30fc, 0x30fe); + (0x30ff, 0x30ff); + (0x3105, 0x312f); + (0x3131, 0x318e); + (0x31a0, 0x31bf); + (0x31f0, 0x31ff); + (0x3400, 0x4dbf); + (0x4e00, 0xa014); + (0xa015, 0xa015); + (0xa016, 0xa48c); + (0xa4d0, 0xa4f7); + (0xa4f8, 0xa4fd); + (0xa500, 0xa60b); + (0xa60c, 0xa60c); + (0xa610, 0xa61f); + (0xa620, 0xa629); + (0xa62a, 0xa62b); + (0xa640, 0xa66d); + (0xa66e, 0xa66e); + (0xa66f, 0xa66f); + (0xa674, 0xa67d); + (0xa67f, 0xa67f); + (0xa680, 0xa69b); + (0xa69c, 0xa69d); + (0xa69e, 0xa69f); + (0xa6a0, 0xa6e5); + (0xa6e6, 0xa6ef); + (0xa6f0, 0xa6f1); + (0xa717, 0xa71f); + (0xa722, 0xa76f); + (0xa770, 0xa770); + (0xa771, 0xa787); + (0xa788, 0xa788); + (0xa78b, 0xa78e); + (0xa78f, 0xa78f); + (0xa790, 0xa7ca); + (0xa7d0, 0xa7d1); + (0xa7d3, 0xa7d3); + (0xa7d5, 0xa7d9); + (0xa7f2, 0xa7f4); + (0xa7f5, 0xa7f6); + (0xa7f7, 0xa7f7); + (0xa7f8, 0xa7f9); + (0xa7fa, 0xa7fa); + (0xa7fb, 0xa801); + (0xa802, 0xa802); + (0xa803, 0xa805); + (0xa806, 0xa806); + (0xa807, 0xa80a); + (0xa80b, 0xa80b); + (0xa80c, 0xa822); + (0xa823, 0xa824); + (0xa825, 0xa826); + (0xa827, 0xa827); + (0xa82c, 0xa82c); + (0xa840, 0xa873); + (0xa880, 0xa881); + (0xa882, 0xa8b3); + (0xa8b4, 0xa8c3); + (0xa8c4, 0xa8c5); + (0xa8d0, 0xa8d9); + (0xa8e0, 0xa8f1); + (0xa8f2, 0xa8f7); + (0xa8fb, 0xa8fb); + (0xa8fd, 0xa8fe); + (0xa8ff, 0xa8ff); + (0xa900, 0xa909); + (0xa90a, 0xa925); + (0xa926, 0xa92d); + (0xa930, 0xa946); + (0xa947, 0xa951); + (0xa952, 0xa953); + (0xa960, 0xa97c); + (0xa980, 0xa982); + (0xa983, 0xa983); + (0xa984, 0xa9b2); + (0xa9b3, 0xa9b3); + (0xa9b4, 0xa9b5); + (0xa9b6, 0xa9b9); + (0xa9ba, 0xa9bb); + (0xa9bc, 0xa9bd); + (0xa9be, 0xa9c0); + (0xa9cf, 0xa9cf); + (0xa9d0, 0xa9d9); + (0xa9e0, 0xa9e4); + (0xa9e5, 0xa9e5); + (0xa9e6, 0xa9e6); + (0xa9e7, 0xa9ef); + (0xa9f0, 0xa9f9); + (0xa9fa, 0xa9fe); + (0xaa00, 0xaa28); + (0xaa29, 0xaa2e); + (0xaa2f, 0xaa30); + (0xaa31, 0xaa32); + (0xaa33, 0xaa34); + (0xaa35, 0xaa36); + (0xaa40, 0xaa42); + (0xaa43, 0xaa43); + (0xaa44, 0xaa4b); + (0xaa4c, 0xaa4c); + (0xaa4d, 0xaa4d); + (0xaa50, 0xaa59); + (0xaa60, 0xaa6f); + (0xaa70, 0xaa70); + (0xaa71, 0xaa76); + (0xaa7a, 0xaa7a); + (0xaa7b, 0xaa7b); + (0xaa7c, 0xaa7c); + (0xaa7d, 0xaa7d); + (0xaa7e, 0xaaaf); + (0xaab0, 0xaab0); + (0xaab1, 0xaab1); + (0xaab2, 0xaab4); + (0xaab5, 0xaab6); + (0xaab7, 0xaab8); + (0xaab9, 0xaabd); + (0xaabe, 0xaabf); + (0xaac0, 0xaac0); + (0xaac1, 0xaac1); + (0xaac2, 0xaac2); + (0xaadb, 0xaadc); + (0xaadd, 0xaadd); + (0xaae0, 0xaaea); + (0xaaeb, 0xaaeb); + (0xaaec, 0xaaed); + (0xaaee, 0xaaef); + (0xaaf2, 0xaaf2); + (0xaaf3, 0xaaf4); + (0xaaf5, 0xaaf5); + (0xaaf6, 0xaaf6); + (0xab01, 0xab06); + (0xab09, 0xab0e); + (0xab11, 0xab16); + (0xab20, 0xab26); + (0xab28, 0xab2e); + (0xab30, 0xab5a); + (0xab5c, 0xab5f); + (0xab60, 0xab68); + (0xab69, 0xab69); + (0xab70, 0xabbf); + (0xabc0, 0xabe2); + (0xabe3, 0xabe4); + (0xabe5, 0xabe5); + (0xabe6, 0xabe7); + (0xabe8, 0xabe8); + (0xabe9, 0xabea); + (0xabec, 0xabec); + (0xabed, 0xabed); + (0xabf0, 0xabf9); + (0xac00, 0xd7a3); + (0xd7b0, 0xd7c6); + (0xd7cb, 0xd7fb); + (0xf900, 0xfa6d); + (0xfa70, 0xfad9); + (0xfb00, 0xfb06); + (0xfb13, 0xfb17); + (0xfb1d, 0xfb1d); + (0xfb1e, 0xfb1e); + (0xfb1f, 0xfb28); + (0xfb2a, 0xfb36); + (0xfb38, 0xfb3c); + (0xfb3e, 0xfb3e); + (0xfb40, 0xfb41); + (0xfb43, 0xfb44); + (0xfb46, 0xfbb1); + (0xfbd3, 0xfd3d); + (0xfd50, 0xfd8f); + (0xfd92, 0xfdc7); + (0xfdf0, 0xfdfb); + (0xfe00, 0xfe0f); + (0xfe20, 0xfe2f); + (0xfe33, 0xfe34); + (0xfe4d, 0xfe4f); + (0xfe70, 0xfe74); + (0xfe76, 0xfefc); + (0xff10, 0xff19); + (0xff21, 0xff3a); + (0xff3f, 0xff3f); + (0xff41, 0xff5a); + (0xff66, 0xff6f); + (0xff70, 0xff70); + (0xff71, 0xff9d); + (0xff9e, 0xff9f); + (0xffa0, 0xffbe); + (0xffc2, 0xffc7); + (0xffca, 0xffcf); + (0xffd2, 0xffd7); + (0xffda, 0xffdc); + (0x10000, 0x1000b); + (0x1000d, 0x10026); + (0x10028, 0x1003a); + (0x1003c, 0x1003d); + (0x1003f, 0x1004d); + (0x10050, 0x1005d); + (0x10080, 0x100fa); + (0x10140, 0x10174); + (0x101fd, 0x101fd); + (0x10280, 0x1029c); + (0x102a0, 0x102d0); + (0x102e0, 0x102e0); + (0x10300, 0x1031f); + (0x1032d, 0x10340); + (0x10341, 0x10341); + (0x10342, 0x10349); + (0x1034a, 0x1034a); + (0x10350, 0x10375); + (0x10376, 0x1037a); + (0x10380, 0x1039d); + (0x103a0, 0x103c3); + (0x103c8, 0x103cf); + (0x103d1, 0x103d5); + (0x10400, 0x1044f); + (0x10450, 0x1049d); + (0x104a0, 0x104a9); + (0x104b0, 0x104d3); + (0x104d8, 0x104fb); + (0x10500, 0x10527); + (0x10530, 0x10563); + (0x10570, 0x1057a); + (0x1057c, 0x1058a); + (0x1058c, 0x10592); + (0x10594, 0x10595); + (0x10597, 0x105a1); + (0x105a3, 0x105b1); + (0x105b3, 0x105b9); + (0x105bb, 0x105bc); + (0x10600, 0x10736); + (0x10740, 0x10755); + (0x10760, 0x10767); + (0x10780, 0x10785); + (0x10787, 0x107b0); + (0x107b2, 0x107ba); + (0x10800, 0x10805); + (0x10808, 0x10808); + (0x1080a, 0x10835); + (0x10837, 0x10838); + (0x1083c, 0x1083c); + (0x1083f, 0x10855); + (0x10860, 0x10876); + (0x10880, 0x1089e); + (0x108e0, 0x108f2); + (0x108f4, 0x108f5); + (0x10900, 0x10915); + (0x10920, 0x10939); + (0x10980, 0x109b7); + (0x109be, 0x109bf); + (0x10a00, 0x10a00); + (0x10a01, 0x10a03); + (0x10a05, 0x10a06); + (0x10a0c, 0x10a0f); + (0x10a10, 0x10a13); + (0x10a15, 0x10a17); + (0x10a19, 0x10a35); + (0x10a38, 0x10a3a); + (0x10a3f, 0x10a3f); + (0x10a60, 0x10a7c); + (0x10a80, 0x10a9c); + (0x10ac0, 0x10ac7); + (0x10ac9, 0x10ae4); + (0x10ae5, 0x10ae6); + (0x10b00, 0x10b35); + (0x10b40, 0x10b55); + (0x10b60, 0x10b72); + (0x10b80, 0x10b91); + (0x10c00, 0x10c48); + (0x10c80, 0x10cb2); + (0x10cc0, 0x10cf2); + (0x10d00, 0x10d23); + (0x10d24, 0x10d27); + (0x10d30, 0x10d39); + (0x10e80, 0x10ea9); + (0x10eab, 0x10eac); + (0x10eb0, 0x10eb1); + (0x10f00, 0x10f1c); + (0x10f27, 0x10f27); + (0x10f30, 0x10f45); + (0x10f46, 0x10f50); + (0x10f70, 0x10f81); + (0x10f82, 0x10f85); + (0x10fb0, 0x10fc4); + (0x10fe0, 0x10ff6); + (0x11000, 0x11000); + (0x11001, 0x11001); + (0x11002, 0x11002); + (0x11003, 0x11037); + (0x11038, 0x11046); + (0x11066, 0x1106f); + (0x11070, 0x11070); + (0x11071, 0x11072); + (0x11073, 0x11074); + (0x11075, 0x11075); + (0x1107f, 0x11081); + (0x11082, 0x11082); + (0x11083, 0x110af); + (0x110b0, 0x110b2); + (0x110b3, 0x110b6); + (0x110b7, 0x110b8); + (0x110b9, 0x110ba); + (0x110c2, 0x110c2); + (0x110d0, 0x110e8); + (0x110f0, 0x110f9); + (0x11100, 0x11102); + (0x11103, 0x11126); + (0x11127, 0x1112b); + (0x1112c, 0x1112c); + (0x1112d, 0x11134); + (0x11136, 0x1113f); + (0x11144, 0x11144); + (0x11145, 0x11146); + (0x11147, 0x11147); + (0x11150, 0x11172); + (0x11173, 0x11173); + (0x11176, 0x11176); + (0x11180, 0x11181); + (0x11182, 0x11182); + (0x11183, 0x111b2); + (0x111b3, 0x111b5); + (0x111b6, 0x111be); + (0x111bf, 0x111c0); + (0x111c1, 0x111c4); + (0x111c9, 0x111cc); + (0x111ce, 0x111ce); + (0x111cf, 0x111cf); + (0x111d0, 0x111d9); + (0x111da, 0x111da); + (0x111dc, 0x111dc); + (0x11200, 0x11211); + (0x11213, 0x1122b); + (0x1122c, 0x1122e); + (0x1122f, 0x11231); + (0x11232, 0x11233); + (0x11234, 0x11234); + (0x11235, 0x11235); + (0x11236, 0x11237); + (0x1123e, 0x1123e); + (0x11280, 0x11286); + (0x11288, 0x11288); + (0x1128a, 0x1128d); + (0x1128f, 0x1129d); + (0x1129f, 0x112a8); + (0x112b0, 0x112de); + (0x112df, 0x112df); + (0x112e0, 0x112e2); + (0x112e3, 0x112ea); + (0x112f0, 0x112f9); + (0x11300, 0x11301); + (0x11302, 0x11303); + (0x11305, 0x1130c); + (0x1130f, 0x11310); + (0x11313, 0x11328); + (0x1132a, 0x11330); + (0x11332, 0x11333); + (0x11335, 0x11339); + (0x1133b, 0x1133c); + (0x1133d, 0x1133d); + (0x1133e, 0x1133f); + (0x11340, 0x11340); + (0x11341, 0x11344); + (0x11347, 0x11348); + (0x1134b, 0x1134d); + (0x11350, 0x11350); + (0x11357, 0x11357); + (0x1135d, 0x11361); + (0x11362, 0x11363); + (0x11366, 0x1136c); + (0x11370, 0x11374); + (0x11400, 0x11434); + (0x11435, 0x11437); + (0x11438, 0x1143f); + (0x11440, 0x11441); + (0x11442, 0x11444); + (0x11445, 0x11445); + (0x11446, 0x11446); + (0x11447, 0x1144a); + (0x11450, 0x11459); + (0x1145e, 0x1145e); + (0x1145f, 0x11461); + (0x11480, 0x114af); + (0x114b0, 0x114b2); + (0x114b3, 0x114b8); + (0x114b9, 0x114b9); + (0x114ba, 0x114ba); + (0x114bb, 0x114be); + (0x114bf, 0x114c0); + (0x114c1, 0x114c1); + (0x114c2, 0x114c3); + (0x114c4, 0x114c5); + (0x114c7, 0x114c7); + (0x114d0, 0x114d9); + (0x11580, 0x115ae); + (0x115af, 0x115b1); + (0x115b2, 0x115b5); + (0x115b8, 0x115bb); + (0x115bc, 0x115bd); + (0x115be, 0x115be); + (0x115bf, 0x115c0); + (0x115d8, 0x115db); + (0x115dc, 0x115dd); + (0x11600, 0x1162f); + (0x11630, 0x11632); + (0x11633, 0x1163a); + (0x1163b, 0x1163c); + (0x1163d, 0x1163d); + (0x1163e, 0x1163e); + (0x1163f, 0x11640); + (0x11644, 0x11644); + (0x11650, 0x11659); + (0x11680, 0x116aa); + (0x116ab, 0x116ab); + (0x116ac, 0x116ac); + (0x116ad, 0x116ad); + (0x116ae, 0x116af); + (0x116b0, 0x116b5); + (0x116b6, 0x116b6); + (0x116b7, 0x116b7); + (0x116b8, 0x116b8); + (0x116c0, 0x116c9); + (0x11700, 0x1171a); + (0x1171d, 0x1171f); + (0x11720, 0x11721); + (0x11722, 0x11725); + (0x11726, 0x11726); + (0x11727, 0x1172b); + (0x11730, 0x11739); + (0x11740, 0x11746); + (0x11800, 0x1182b); + (0x1182c, 0x1182e); + (0x1182f, 0x11837); + (0x11838, 0x11838); + (0x11839, 0x1183a); + (0x118a0, 0x118df); + (0x118e0, 0x118e9); + (0x118ff, 0x11906); + (0x11909, 0x11909); + (0x1190c, 0x11913); + (0x11915, 0x11916); + (0x11918, 0x1192f); + (0x11930, 0x11935); + (0x11937, 0x11938); + (0x1193b, 0x1193c); + (0x1193d, 0x1193d); + (0x1193e, 0x1193e); + (0x1193f, 0x1193f); + (0x11940, 0x11940); + (0x11941, 0x11941); + (0x11942, 0x11942); + (0x11943, 0x11943); + (0x11950, 0x11959); + (0x119a0, 0x119a7); + (0x119aa, 0x119d0); + (0x119d1, 0x119d3); + (0x119d4, 0x119d7); + (0x119da, 0x119db); + (0x119dc, 0x119df); + (0x119e0, 0x119e0); + (0x119e1, 0x119e1); + (0x119e3, 0x119e3); + (0x119e4, 0x119e4); + (0x11a00, 0x11a00); + (0x11a01, 0x11a0a); + (0x11a0b, 0x11a32); + (0x11a33, 0x11a38); + (0x11a39, 0x11a39); + (0x11a3a, 0x11a3a); + (0x11a3b, 0x11a3e); + (0x11a47, 0x11a47); + (0x11a50, 0x11a50); + (0x11a51, 0x11a56); + (0x11a57, 0x11a58); + (0x11a59, 0x11a5b); + (0x11a5c, 0x11a89); + (0x11a8a, 0x11a96); + (0x11a97, 0x11a97); + (0x11a98, 0x11a99); + (0x11a9d, 0x11a9d); + (0x11ab0, 0x11af8); + (0x11c00, 0x11c08); + (0x11c0a, 0x11c2e); + (0x11c2f, 0x11c2f); + (0x11c30, 0x11c36); + (0x11c38, 0x11c3d); + (0x11c3e, 0x11c3e); + (0x11c3f, 0x11c3f); + (0x11c40, 0x11c40); + (0x11c50, 0x11c59); + (0x11c72, 0x11c8f); + (0x11c92, 0x11ca7); + (0x11ca9, 0x11ca9); + (0x11caa, 0x11cb0); + (0x11cb1, 0x11cb1); + (0x11cb2, 0x11cb3); + (0x11cb4, 0x11cb4); + (0x11cb5, 0x11cb6); + (0x11d00, 0x11d06); + (0x11d08, 0x11d09); + (0x11d0b, 0x11d30); + (0x11d31, 0x11d36); + (0x11d3a, 0x11d3a); + (0x11d3c, 0x11d3d); + (0x11d3f, 0x11d45); + (0x11d46, 0x11d46); + (0x11d47, 0x11d47); + (0x11d50, 0x11d59); + (0x11d60, 0x11d65); + (0x11d67, 0x11d68); + (0x11d6a, 0x11d89); + (0x11d8a, 0x11d8e); + (0x11d90, 0x11d91); + (0x11d93, 0x11d94); + (0x11d95, 0x11d95); + (0x11d96, 0x11d96); + (0x11d97, 0x11d97); + (0x11d98, 0x11d98); + (0x11da0, 0x11da9); + (0x11ee0, 0x11ef2); + (0x11ef3, 0x11ef4); + (0x11ef5, 0x11ef6); + (0x11fb0, 0x11fb0); + (0x12000, 0x12399); + (0x12400, 0x1246e); + (0x12480, 0x12543); + (0x12f90, 0x12ff0); + (0x13000, 0x1342e); + (0x14400, 0x14646); + (0x16800, 0x16a38); + (0x16a40, 0x16a5e); + (0x16a60, 0x16a69); + (0x16a70, 0x16abe); + (0x16ac0, 0x16ac9); + (0x16ad0, 0x16aed); + (0x16af0, 0x16af4); + (0x16b00, 0x16b2f); + (0x16b30, 0x16b36); + (0x16b40, 0x16b43); + (0x16b50, 0x16b59); + (0x16b63, 0x16b77); + (0x16b7d, 0x16b8f); + (0x16e40, 0x16e7f); + (0x16f00, 0x16f4a); + (0x16f4f, 0x16f4f); + (0x16f50, 0x16f50); + (0x16f51, 0x16f87); + (0x16f8f, 0x16f92); + (0x16f93, 0x16f9f); + (0x16fe0, 0x16fe1); + (0x16fe3, 0x16fe3); + (0x16fe4, 0x16fe4); + (0x16ff0, 0x16ff1); + (0x17000, 0x187f7); + (0x18800, 0x18cd5); + (0x18d00, 0x18d08); + (0x1aff0, 0x1aff3); + (0x1aff5, 0x1affb); + (0x1affd, 0x1affe); + (0x1b000, 0x1b122); + (0x1b150, 0x1b152); + (0x1b164, 0x1b167); + (0x1b170, 0x1b2fb); + (0x1bc00, 0x1bc6a); + (0x1bc70, 0x1bc7c); + (0x1bc80, 0x1bc88); + (0x1bc90, 0x1bc99); + (0x1bc9d, 0x1bc9e); + (0x1cf00, 0x1cf2d); + (0x1cf30, 0x1cf46); + (0x1d165, 0x1d166); + (0x1d167, 0x1d169); + (0x1d16d, 0x1d172); + (0x1d17b, 0x1d182); + (0x1d185, 0x1d18b); + (0x1d1aa, 0x1d1ad); + (0x1d242, 0x1d244); + (0x1d400, 0x1d454); + (0x1d456, 0x1d49c); + (0x1d49e, 0x1d49f); + (0x1d4a2, 0x1d4a2); + (0x1d4a5, 0x1d4a6); + (0x1d4a9, 0x1d4ac); + (0x1d4ae, 0x1d4b9); + (0x1d4bb, 0x1d4bb); + (0x1d4bd, 0x1d4c3); + (0x1d4c5, 0x1d505); + (0x1d507, 0x1d50a); + (0x1d50d, 0x1d514); + (0x1d516, 0x1d51c); + (0x1d51e, 0x1d539); + (0x1d53b, 0x1d53e); + (0x1d540, 0x1d544); + (0x1d546, 0x1d546); + (0x1d54a, 0x1d550); + (0x1d552, 0x1d6a5); + (0x1d6a8, 0x1d6c0); + (0x1d6c2, 0x1d6da); + (0x1d6dc, 0x1d6fa); + (0x1d6fc, 0x1d714); + (0x1d716, 0x1d734); + (0x1d736, 0x1d74e); + (0x1d750, 0x1d76e); + (0x1d770, 0x1d788); + (0x1d78a, 0x1d7a8); + (0x1d7aa, 0x1d7c2); + (0x1d7c4, 0x1d7cb); + (0x1d7ce, 0x1d7ff); + (0x1da00, 0x1da36); + (0x1da3b, 0x1da6c); + (0x1da75, 0x1da75); + (0x1da84, 0x1da84); + (0x1da9b, 0x1da9f); + (0x1daa1, 0x1daaf); + (0x1df00, 0x1df09); + (0x1df0a, 0x1df0a); + (0x1df0b, 0x1df1e); + (0x1e000, 0x1e006); + (0x1e008, 0x1e018); + (0x1e01b, 0x1e021); + (0x1e023, 0x1e024); + (0x1e026, 0x1e02a); + (0x1e100, 0x1e12c); + (0x1e130, 0x1e136); + (0x1e137, 0x1e13d); + (0x1e140, 0x1e149); + (0x1e14e, 0x1e14e); + (0x1e290, 0x1e2ad); + (0x1e2ae, 0x1e2ae); + (0x1e2c0, 0x1e2eb); + (0x1e2ec, 0x1e2ef); + (0x1e2f0, 0x1e2f9); + (0x1e7e0, 0x1e7e6); + (0x1e7e8, 0x1e7eb); + (0x1e7ed, 0x1e7ee); + (0x1e7f0, 0x1e7fe); + (0x1e800, 0x1e8c4); + (0x1e8d0, 0x1e8d6); + (0x1e900, 0x1e943); + (0x1e944, 0x1e94a); + (0x1e94b, 0x1e94b); + (0x1e950, 0x1e959); + (0x1ee00, 0x1ee03); + (0x1ee05, 0x1ee1f); + (0x1ee21, 0x1ee22); + (0x1ee24, 0x1ee24); + (0x1ee27, 0x1ee27); + (0x1ee29, 0x1ee32); + (0x1ee34, 0x1ee37); + (0x1ee39, 0x1ee39); + (0x1ee3b, 0x1ee3b); + (0x1ee42, 0x1ee42); + (0x1ee47, 0x1ee47); + (0x1ee49, 0x1ee49); + (0x1ee4b, 0x1ee4b); + (0x1ee4d, 0x1ee4f); + (0x1ee51, 0x1ee52); + (0x1ee54, 0x1ee54); + (0x1ee57, 0x1ee57); + (0x1ee59, 0x1ee59); + (0x1ee5b, 0x1ee5b); + (0x1ee5d, 0x1ee5d); + (0x1ee5f, 0x1ee5f); + (0x1ee61, 0x1ee62); + (0x1ee64, 0x1ee64); + (0x1ee67, 0x1ee6a); + (0x1ee6c, 0x1ee72); + (0x1ee74, 0x1ee77); + (0x1ee79, 0x1ee7c); + (0x1ee7e, 0x1ee7e); + (0x1ee80, 0x1ee89); + (0x1ee8b, 0x1ee9b); + (0x1eea1, 0x1eea3); + (0x1eea5, 0x1eea9); + (0x1eeab, 0x1eebb); + (0x1fbf0, 0x1fbf9); + (0x20000, 0x2a6df); + (0x2a700, 0x2b738); + (0x2b740, 0x2b81d); + (0x2b820, 0x2cea1); + (0x2ceb0, 0x2ebe0); + (0x2f800, 0x2fa1d); + (0x30000, 0x3134a); + (0xe0100, 0xe01ef); + ] let id_start = - [0x41, 0x5a; 0x61, 0x7a; 0xaa, 0xaa; 0xb5, 0xb5; 0xba, 0xba; - 0xc0, 0xd6; 0xd8, 0xf6; 0xf8, 0x1ba; 0x1bb, 0x1bb; 0x1bc, 0x1bf; - 0x1c0, 0x1c3; 0x1c4, 0x293; 0x294, 0x294; 0x295, 0x2af; 0x2b0, 0x2c1; - 0x2c6, 0x2d1; 0x2e0, 0x2e4; 0x2ec, 0x2ec; 0x2ee, 0x2ee; 0x370, 0x373; - 0x374, 0x374; 0x376, 0x377; 0x37a, 0x37a; 0x37b, 0x37d; 0x37f, 0x37f; - 0x386, 0x386; 0x388, 0x38a; 0x38c, 0x38c; 0x38e, 0x3a1; 0x3a3, 0x3f5; - 0x3f7, 0x481; 0x48a, 0x52f; 0x531, 0x556; 0x559, 0x559; 0x560, 0x588; - 0x5d0, 0x5ea; 0x5ef, 0x5f2; 0x620, 0x63f; 0x640, 0x640; 0x641, 0x64a; - 0x66e, 0x66f; 0x671, 0x6d3; 0x6d5, 0x6d5; 0x6e5, 0x6e6; 0x6ee, 0x6ef; - 0x6fa, 0x6fc; 0x6ff, 0x6ff; 0x710, 0x710; 0x712, 0x72f; 0x74d, 0x7a5; - 0x7b1, 0x7b1; 0x7ca, 0x7ea; 0x7f4, 0x7f5; 0x7fa, 0x7fa; 0x800, 0x815; - 0x81a, 0x81a; 0x824, 0x824; 0x828, 0x828; 0x840, 0x858; 0x860, 0x86a; - 0x870, 0x887; 0x889, 0x88e; 0x8a0, 0x8c8; 0x8c9, 0x8c9; 0x904, 0x939; - 0x93d, 0x93d; 0x950, 0x950; 0x958, 0x961; 0x971, 0x971; 0x972, 0x980; - 0x985, 0x98c; 0x98f, 0x990; 0x993, 0x9a8; 0x9aa, 0x9b0; 0x9b2, 0x9b2; - 0x9b6, 0x9b9; 0x9bd, 0x9bd; 0x9ce, 0x9ce; 0x9dc, 0x9dd; 0x9df, 0x9e1; - 0x9f0, 0x9f1; 0x9fc, 0x9fc; 0xa05, 0xa0a; 0xa0f, 0xa10; 0xa13, 0xa28; - 0xa2a, 0xa30; 0xa32, 0xa33; 0xa35, 0xa36; 0xa38, 0xa39; 0xa59, 0xa5c; - 0xa5e, 0xa5e; 0xa72, 0xa74; 0xa85, 0xa8d; 0xa8f, 0xa91; 0xa93, 0xaa8; - 0xaaa, 0xab0; 0xab2, 0xab3; 0xab5, 0xab9; 0xabd, 0xabd; 0xad0, 0xad0; - 0xae0, 0xae1; 0xaf9, 0xaf9; 0xb05, 0xb0c; 0xb0f, 0xb10; 0xb13, 0xb28; - 0xb2a, 0xb30; 0xb32, 0xb33; 0xb35, 0xb39; 0xb3d, 0xb3d; 0xb5c, 0xb5d; - 0xb5f, 0xb61; 0xb71, 0xb71; 0xb83, 0xb83; 0xb85, 0xb8a; 0xb8e, 0xb90; - 0xb92, 0xb95; 0xb99, 0xb9a; 0xb9c, 0xb9c; 0xb9e, 0xb9f; 0xba3, 0xba4; - 0xba8, 0xbaa; 0xbae, 0xbb9; 0xbd0, 0xbd0; 0xc05, 0xc0c; 0xc0e, 0xc10; - 0xc12, 0xc28; 0xc2a, 0xc39; 0xc3d, 0xc3d; 0xc58, 0xc5a; 0xc5d, 0xc5d; - 0xc60, 0xc61; 0xc80, 0xc80; 0xc85, 0xc8c; 0xc8e, 0xc90; 0xc92, 0xca8; - 0xcaa, 0xcb3; 0xcb5, 0xcb9; 0xcbd, 0xcbd; 0xcdd, 0xcde; 0xce0, 0xce1; - 0xcf1, 0xcf2; 0xd04, 0xd0c; 0xd0e, 0xd10; 0xd12, 0xd3a; 0xd3d, 0xd3d; - 0xd4e, 0xd4e; 0xd54, 0xd56; 0xd5f, 0xd61; 0xd7a, 0xd7f; 0xd85, 0xd96; - 0xd9a, 0xdb1; 0xdb3, 0xdbb; 0xdbd, 0xdbd; 0xdc0, 0xdc6; 0xe01, 0xe30; - 0xe32, 0xe33; 0xe40, 0xe45; 0xe46, 0xe46; 0xe81, 0xe82; 0xe84, 0xe84; - 0xe86, 0xe8a; 0xe8c, 0xea3; 0xea5, 0xea5; 0xea7, 0xeb0; 0xeb2, 0xeb3; - 0xebd, 0xebd; 0xec0, 0xec4; 0xec6, 0xec6; 0xedc, 0xedf; 0xf00, 0xf00; - 0xf40, 0xf47; 0xf49, 0xf6c; 0xf88, 0xf8c; 0x1000, 0x102a; 0x103f, 0x103f; - 0x1050, 0x1055; 0x105a, 0x105d; 0x1061, 0x1061; 0x1065, 0x1066; 0x106e, 0x1070; - 0x1075, 0x1081; 0x108e, 0x108e; 0x10a0, 0x10c5; 0x10c7, 0x10c7; 0x10cd, 0x10cd; - 0x10d0, 0x10fa; 0x10fc, 0x10fc; 0x10fd, 0x10ff; 0x1100, 0x1248; 0x124a, 0x124d; - 0x1250, 0x1256; 0x1258, 0x1258; 0x125a, 0x125d; 0x1260, 0x1288; 0x128a, 0x128d; - 0x1290, 0x12b0; 0x12b2, 0x12b5; 0x12b8, 0x12be; 0x12c0, 0x12c0; 0x12c2, 0x12c5; - 0x12c8, 0x12d6; 0x12d8, 0x1310; 0x1312, 0x1315; 0x1318, 0x135a; 0x1380, 0x138f; - 0x13a0, 0x13f5; 0x13f8, 0x13fd; 0x1401, 0x166c; 0x166f, 0x167f; 0x1681, 0x169a; - 0x16a0, 0x16ea; 0x16ee, 0x16f0; 0x16f1, 0x16f8; 0x1700, 0x1711; 0x171f, 0x1731; - 0x1740, 0x1751; 0x1760, 0x176c; 0x176e, 0x1770; 0x1780, 0x17b3; 0x17d7, 0x17d7; - 0x17dc, 0x17dc; 0x1820, 0x1842; 0x1843, 0x1843; 0x1844, 0x1878; 0x1880, 0x1884; - 0x1885, 0x1886; 0x1887, 0x18a8; 0x18aa, 0x18aa; 0x18b0, 0x18f5; 0x1900, 0x191e; - 0x1950, 0x196d; 0x1970, 0x1974; 0x1980, 0x19ab; 0x19b0, 0x19c9; 0x1a00, 0x1a16; - 0x1a20, 0x1a54; 0x1aa7, 0x1aa7; 0x1b05, 0x1b33; 0x1b45, 0x1b4c; 0x1b83, 0x1ba0; - 0x1bae, 0x1baf; 0x1bba, 0x1be5; 0x1c00, 0x1c23; 0x1c4d, 0x1c4f; 0x1c5a, 0x1c77; - 0x1c78, 0x1c7d; 0x1c80, 0x1c88; 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 0x1ce9, 0x1cec; - 0x1cee, 0x1cf3; 0x1cf5, 0x1cf6; 0x1cfa, 0x1cfa; 0x1d00, 0x1d2b; 0x1d2c, 0x1d6a; - 0x1d6b, 0x1d77; 0x1d78, 0x1d78; 0x1d79, 0x1d9a; 0x1d9b, 0x1dbf; 0x1e00, 0x1f15; - 0x1f18, 0x1f1d; 0x1f20, 0x1f45; 0x1f48, 0x1f4d; 0x1f50, 0x1f57; 0x1f59, 0x1f59; - 0x1f5b, 0x1f5b; 0x1f5d, 0x1f5d; 0x1f5f, 0x1f7d; 0x1f80, 0x1fb4; 0x1fb6, 0x1fbc; - 0x1fbe, 0x1fbe; 0x1fc2, 0x1fc4; 0x1fc6, 0x1fcc; 0x1fd0, 0x1fd3; 0x1fd6, 0x1fdb; - 0x1fe0, 0x1fec; 0x1ff2, 0x1ff4; 0x1ff6, 0x1ffc; 0x2071, 0x2071; 0x207f, 0x207f; - 0x2090, 0x209c; 0x2102, 0x2102; 0x2107, 0x2107; 0x210a, 0x2113; 0x2115, 0x2115; - 0x2118, 0x2118; 0x2119, 0x211d; 0x2124, 0x2124; 0x2126, 0x2126; 0x2128, 0x2128; - 0x212a, 0x212d; 0x212e, 0x212e; 0x212f, 0x2134; 0x2135, 0x2138; 0x2139, 0x2139; - 0x213c, 0x213f; 0x2145, 0x2149; 0x214e, 0x214e; 0x2160, 0x2182; 0x2183, 0x2184; - 0x2185, 0x2188; 0x2c00, 0x2c7b; 0x2c7c, 0x2c7d; 0x2c7e, 0x2ce4; 0x2ceb, 0x2cee; - 0x2cf2, 0x2cf3; 0x2d00, 0x2d25; 0x2d27, 0x2d27; 0x2d2d, 0x2d2d; 0x2d30, 0x2d67; - 0x2d6f, 0x2d6f; 0x2d80, 0x2d96; 0x2da0, 0x2da6; 0x2da8, 0x2dae; 0x2db0, 0x2db6; - 0x2db8, 0x2dbe; 0x2dc0, 0x2dc6; 0x2dc8, 0x2dce; 0x2dd0, 0x2dd6; 0x2dd8, 0x2dde; - 0x3005, 0x3005; 0x3006, 0x3006; 0x3007, 0x3007; 0x3021, 0x3029; 0x3031, 0x3035; - 0x3038, 0x303a; 0x303b, 0x303b; 0x303c, 0x303c; 0x3041, 0x3096; 0x309b, 0x309c; - 0x309d, 0x309e; 0x309f, 0x309f; 0x30a1, 0x30fa; 0x30fc, 0x30fe; 0x30ff, 0x30ff; - 0x3105, 0x312f; 0x3131, 0x318e; 0x31a0, 0x31bf; 0x31f0, 0x31ff; 0x3400, 0x4dbf; - 0x4e00, 0xa014; 0xa015, 0xa015; 0xa016, 0xa48c; 0xa4d0, 0xa4f7; 0xa4f8, 0xa4fd; - 0xa500, 0xa60b; 0xa60c, 0xa60c; 0xa610, 0xa61f; 0xa62a, 0xa62b; 0xa640, 0xa66d; - 0xa66e, 0xa66e; 0xa67f, 0xa67f; 0xa680, 0xa69b; 0xa69c, 0xa69d; 0xa6a0, 0xa6e5; - 0xa6e6, 0xa6ef; 0xa717, 0xa71f; 0xa722, 0xa76f; 0xa770, 0xa770; 0xa771, 0xa787; - 0xa788, 0xa788; 0xa78b, 0xa78e; 0xa78f, 0xa78f; 0xa790, 0xa7ca; 0xa7d0, 0xa7d1; - 0xa7d3, 0xa7d3; 0xa7d5, 0xa7d9; 0xa7f2, 0xa7f4; 0xa7f5, 0xa7f6; 0xa7f7, 0xa7f7; - 0xa7f8, 0xa7f9; 0xa7fa, 0xa7fa; 0xa7fb, 0xa801; 0xa803, 0xa805; 0xa807, 0xa80a; - 0xa80c, 0xa822; 0xa840, 0xa873; 0xa882, 0xa8b3; 0xa8f2, 0xa8f7; 0xa8fb, 0xa8fb; - 0xa8fd, 0xa8fe; 0xa90a, 0xa925; 0xa930, 0xa946; 0xa960, 0xa97c; 0xa984, 0xa9b2; - 0xa9cf, 0xa9cf; 0xa9e0, 0xa9e4; 0xa9e6, 0xa9e6; 0xa9e7, 0xa9ef; 0xa9fa, 0xa9fe; - 0xaa00, 0xaa28; 0xaa40, 0xaa42; 0xaa44, 0xaa4b; 0xaa60, 0xaa6f; 0xaa70, 0xaa70; - 0xaa71, 0xaa76; 0xaa7a, 0xaa7a; 0xaa7e, 0xaaaf; 0xaab1, 0xaab1; 0xaab5, 0xaab6; - 0xaab9, 0xaabd; 0xaac0, 0xaac0; 0xaac2, 0xaac2; 0xaadb, 0xaadc; 0xaadd, 0xaadd; - 0xaae0, 0xaaea; 0xaaf2, 0xaaf2; 0xaaf3, 0xaaf4; 0xab01, 0xab06; 0xab09, 0xab0e; - 0xab11, 0xab16; 0xab20, 0xab26; 0xab28, 0xab2e; 0xab30, 0xab5a; 0xab5c, 0xab5f; - 0xab60, 0xab68; 0xab69, 0xab69; 0xab70, 0xabbf; 0xabc0, 0xabe2; 0xac00, 0xd7a3; - 0xd7b0, 0xd7c6; 0xd7cb, 0xd7fb; 0xf900, 0xfa6d; 0xfa70, 0xfad9; 0xfb00, 0xfb06; - 0xfb13, 0xfb17; 0xfb1d, 0xfb1d; 0xfb1f, 0xfb28; 0xfb2a, 0xfb36; 0xfb38, 0xfb3c; - 0xfb3e, 0xfb3e; 0xfb40, 0xfb41; 0xfb43, 0xfb44; 0xfb46, 0xfbb1; 0xfbd3, 0xfd3d; - 0xfd50, 0xfd8f; 0xfd92, 0xfdc7; 0xfdf0, 0xfdfb; 0xfe70, 0xfe74; 0xfe76, 0xfefc; - 0xff21, 0xff3a; 0xff41, 0xff5a; 0xff66, 0xff6f; 0xff70, 0xff70; 0xff71, 0xff9d; - 0xff9e, 0xff9f; 0xffa0, 0xffbe; 0xffc2, 0xffc7; 0xffca, 0xffcf; 0xffd2, 0xffd7; - 0xffda, 0xffdc; 0x10000, 0x1000b; 0x1000d, 0x10026; 0x10028, 0x1003a; 0x1003c, 0x1003d; - 0x1003f, 0x1004d; 0x10050, 0x1005d; 0x10080, 0x100fa; 0x10140, 0x10174; 0x10280, 0x1029c; - 0x102a0, 0x102d0; 0x10300, 0x1031f; 0x1032d, 0x10340; 0x10341, 0x10341; 0x10342, 0x10349; - 0x1034a, 0x1034a; 0x10350, 0x10375; 0x10380, 0x1039d; 0x103a0, 0x103c3; 0x103c8, 0x103cf; - 0x103d1, 0x103d5; 0x10400, 0x1044f; 0x10450, 0x1049d; 0x104b0, 0x104d3; 0x104d8, 0x104fb; - 0x10500, 0x10527; 0x10530, 0x10563; 0x10570, 0x1057a; 0x1057c, 0x1058a; 0x1058c, 0x10592; - 0x10594, 0x10595; 0x10597, 0x105a1; 0x105a3, 0x105b1; 0x105b3, 0x105b9; 0x105bb, 0x105bc; - 0x10600, 0x10736; 0x10740, 0x10755; 0x10760, 0x10767; 0x10780, 0x10785; 0x10787, 0x107b0; - 0x107b2, 0x107ba; 0x10800, 0x10805; 0x10808, 0x10808; 0x1080a, 0x10835; 0x10837, 0x10838; - 0x1083c, 0x1083c; 0x1083f, 0x10855; 0x10860, 0x10876; 0x10880, 0x1089e; 0x108e0, 0x108f2; - 0x108f4, 0x108f5; 0x10900, 0x10915; 0x10920, 0x10939; 0x10980, 0x109b7; 0x109be, 0x109bf; - 0x10a00, 0x10a00; 0x10a10, 0x10a13; 0x10a15, 0x10a17; 0x10a19, 0x10a35; 0x10a60, 0x10a7c; - 0x10a80, 0x10a9c; 0x10ac0, 0x10ac7; 0x10ac9, 0x10ae4; 0x10b00, 0x10b35; 0x10b40, 0x10b55; - 0x10b60, 0x10b72; 0x10b80, 0x10b91; 0x10c00, 0x10c48; 0x10c80, 0x10cb2; 0x10cc0, 0x10cf2; - 0x10d00, 0x10d23; 0x10e80, 0x10ea9; 0x10eb0, 0x10eb1; 0x10f00, 0x10f1c; 0x10f27, 0x10f27; - 0x10f30, 0x10f45; 0x10f70, 0x10f81; 0x10fb0, 0x10fc4; 0x10fe0, 0x10ff6; 0x11003, 0x11037; - 0x11071, 0x11072; 0x11075, 0x11075; 0x11083, 0x110af; 0x110d0, 0x110e8; 0x11103, 0x11126; - 0x11144, 0x11144; 0x11147, 0x11147; 0x11150, 0x11172; 0x11176, 0x11176; 0x11183, 0x111b2; - 0x111c1, 0x111c4; 0x111da, 0x111da; 0x111dc, 0x111dc; 0x11200, 0x11211; 0x11213, 0x1122b; - 0x11280, 0x11286; 0x11288, 0x11288; 0x1128a, 0x1128d; 0x1128f, 0x1129d; 0x1129f, 0x112a8; - 0x112b0, 0x112de; 0x11305, 0x1130c; 0x1130f, 0x11310; 0x11313, 0x11328; 0x1132a, 0x11330; - 0x11332, 0x11333; 0x11335, 0x11339; 0x1133d, 0x1133d; 0x11350, 0x11350; 0x1135d, 0x11361; - 0x11400, 0x11434; 0x11447, 0x1144a; 0x1145f, 0x11461; 0x11480, 0x114af; 0x114c4, 0x114c5; - 0x114c7, 0x114c7; 0x11580, 0x115ae; 0x115d8, 0x115db; 0x11600, 0x1162f; 0x11644, 0x11644; - 0x11680, 0x116aa; 0x116b8, 0x116b8; 0x11700, 0x1171a; 0x11740, 0x11746; 0x11800, 0x1182b; - 0x118a0, 0x118df; 0x118ff, 0x11906; 0x11909, 0x11909; 0x1190c, 0x11913; 0x11915, 0x11916; - 0x11918, 0x1192f; 0x1193f, 0x1193f; 0x11941, 0x11941; 0x119a0, 0x119a7; 0x119aa, 0x119d0; - 0x119e1, 0x119e1; 0x119e3, 0x119e3; 0x11a00, 0x11a00; 0x11a0b, 0x11a32; 0x11a3a, 0x11a3a; - 0x11a50, 0x11a50; 0x11a5c, 0x11a89; 0x11a9d, 0x11a9d; 0x11ab0, 0x11af8; 0x11c00, 0x11c08; - 0x11c0a, 0x11c2e; 0x11c40, 0x11c40; 0x11c72, 0x11c8f; 0x11d00, 0x11d06; 0x11d08, 0x11d09; - 0x11d0b, 0x11d30; 0x11d46, 0x11d46; 0x11d60, 0x11d65; 0x11d67, 0x11d68; 0x11d6a, 0x11d89; - 0x11d98, 0x11d98; 0x11ee0, 0x11ef2; 0x11fb0, 0x11fb0; 0x12000, 0x12399; 0x12400, 0x1246e; - 0x12480, 0x12543; 0x12f90, 0x12ff0; 0x13000, 0x1342e; 0x14400, 0x14646; 0x16800, 0x16a38; - 0x16a40, 0x16a5e; 0x16a70, 0x16abe; 0x16ad0, 0x16aed; 0x16b00, 0x16b2f; 0x16b40, 0x16b43; - 0x16b63, 0x16b77; 0x16b7d, 0x16b8f; 0x16e40, 0x16e7f; 0x16f00, 0x16f4a; 0x16f50, 0x16f50; - 0x16f93, 0x16f9f; 0x16fe0, 0x16fe1; 0x16fe3, 0x16fe3; 0x17000, 0x187f7; 0x18800, 0x18cd5; - 0x18d00, 0x18d08; 0x1aff0, 0x1aff3; 0x1aff5, 0x1affb; 0x1affd, 0x1affe; 0x1b000, 0x1b122; - 0x1b150, 0x1b152; 0x1b164, 0x1b167; 0x1b170, 0x1b2fb; 0x1bc00, 0x1bc6a; 0x1bc70, 0x1bc7c; - 0x1bc80, 0x1bc88; 0x1bc90, 0x1bc99; 0x1d400, 0x1d454; 0x1d456, 0x1d49c; 0x1d49e, 0x1d49f; - 0x1d4a2, 0x1d4a2; 0x1d4a5, 0x1d4a6; 0x1d4a9, 0x1d4ac; 0x1d4ae, 0x1d4b9; 0x1d4bb, 0x1d4bb; - 0x1d4bd, 0x1d4c3; 0x1d4c5, 0x1d505; 0x1d507, 0x1d50a; 0x1d50d, 0x1d514; 0x1d516, 0x1d51c; - 0x1d51e, 0x1d539; 0x1d53b, 0x1d53e; 0x1d540, 0x1d544; 0x1d546, 0x1d546; 0x1d54a, 0x1d550; - 0x1d552, 0x1d6a5; 0x1d6a8, 0x1d6c0; 0x1d6c2, 0x1d6da; 0x1d6dc, 0x1d6fa; 0x1d6fc, 0x1d714; - 0x1d716, 0x1d734; 0x1d736, 0x1d74e; 0x1d750, 0x1d76e; 0x1d770, 0x1d788; 0x1d78a, 0x1d7a8; - 0x1d7aa, 0x1d7c2; 0x1d7c4, 0x1d7cb; 0x1df00, 0x1df09; 0x1df0a, 0x1df0a; 0x1df0b, 0x1df1e; - 0x1e100, 0x1e12c; 0x1e137, 0x1e13d; 0x1e14e, 0x1e14e; 0x1e290, 0x1e2ad; 0x1e2c0, 0x1e2eb; - 0x1e7e0, 0x1e7e6; 0x1e7e8, 0x1e7eb; 0x1e7ed, 0x1e7ee; 0x1e7f0, 0x1e7fe; 0x1e800, 0x1e8c4; - 0x1e900, 0x1e943; 0x1e94b, 0x1e94b; 0x1ee00, 0x1ee03; 0x1ee05, 0x1ee1f; 0x1ee21, 0x1ee22; - 0x1ee24, 0x1ee24; 0x1ee27, 0x1ee27; 0x1ee29, 0x1ee32; 0x1ee34, 0x1ee37; 0x1ee39, 0x1ee39; - 0x1ee3b, 0x1ee3b; 0x1ee42, 0x1ee42; 0x1ee47, 0x1ee47; 0x1ee49, 0x1ee49; 0x1ee4b, 0x1ee4b; - 0x1ee4d, 0x1ee4f; 0x1ee51, 0x1ee52; 0x1ee54, 0x1ee54; 0x1ee57, 0x1ee57; 0x1ee59, 0x1ee59; - 0x1ee5b, 0x1ee5b; 0x1ee5d, 0x1ee5d; 0x1ee5f, 0x1ee5f; 0x1ee61, 0x1ee62; 0x1ee64, 0x1ee64; - 0x1ee67, 0x1ee6a; 0x1ee6c, 0x1ee72; 0x1ee74, 0x1ee77; 0x1ee79, 0x1ee7c; 0x1ee7e, 0x1ee7e; - 0x1ee80, 0x1ee89; 0x1ee8b, 0x1ee9b; 0x1eea1, 0x1eea3; 0x1eea5, 0x1eea9; 0x1eeab, 0x1eebb; - 0x20000, 0x2a6df; 0x2a700, 0x2b738; 0x2b740, 0x2b81d; 0x2b820, 0x2cea1; 0x2ceb0, 0x2ebe0; - 0x30000, 0x3134a; 0x2f800, 0x2fa1d] + [ + (0x41, 0x5a); + (0x61, 0x7a); + (0xaa, 0xaa); + (0xb5, 0xb5); + (0xba, 0xba); + (0xc0, 0xd6); + (0xd8, 0xf6); + (0xf8, 0x1ba); + (0x1bb, 0x1bb); + (0x1bc, 0x1bf); + (0x1c0, 0x1c3); + (0x1c4, 0x293); + (0x294, 0x294); + (0x295, 0x2af); + (0x2b0, 0x2c1); + (0x2c6, 0x2d1); + (0x2e0, 0x2e4); + (0x2ec, 0x2ec); + (0x2ee, 0x2ee); + (0x370, 0x373); + (0x374, 0x374); + (0x376, 0x377); + (0x37a, 0x37a); + (0x37b, 0x37d); + (0x37f, 0x37f); + (0x386, 0x386); + (0x388, 0x38a); + (0x38c, 0x38c); + (0x38e, 0x3a1); + (0x3a3, 0x3f5); + (0x3f7, 0x481); + (0x48a, 0x52f); + (0x531, 0x556); + (0x559, 0x559); + (0x560, 0x588); + (0x5d0, 0x5ea); + (0x5ef, 0x5f2); + (0x620, 0x63f); + (0x640, 0x640); + (0x641, 0x64a); + (0x66e, 0x66f); + (0x671, 0x6d3); + (0x6d5, 0x6d5); + (0x6e5, 0x6e6); + (0x6ee, 0x6ef); + (0x6fa, 0x6fc); + (0x6ff, 0x6ff); + (0x710, 0x710); + (0x712, 0x72f); + (0x74d, 0x7a5); + (0x7b1, 0x7b1); + (0x7ca, 0x7ea); + (0x7f4, 0x7f5); + (0x7fa, 0x7fa); + (0x800, 0x815); + (0x81a, 0x81a); + (0x824, 0x824); + (0x828, 0x828); + (0x840, 0x858); + (0x860, 0x86a); + (0x870, 0x887); + (0x889, 0x88e); + (0x8a0, 0x8c8); + (0x8c9, 0x8c9); + (0x904, 0x939); + (0x93d, 0x93d); + (0x950, 0x950); + (0x958, 0x961); + (0x971, 0x971); + (0x972, 0x980); + (0x985, 0x98c); + (0x98f, 0x990); + (0x993, 0x9a8); + (0x9aa, 0x9b0); + (0x9b2, 0x9b2); + (0x9b6, 0x9b9); + (0x9bd, 0x9bd); + (0x9ce, 0x9ce); + (0x9dc, 0x9dd); + (0x9df, 0x9e1); + (0x9f0, 0x9f1); + (0x9fc, 0x9fc); + (0xa05, 0xa0a); + (0xa0f, 0xa10); + (0xa13, 0xa28); + (0xa2a, 0xa30); + (0xa32, 0xa33); + (0xa35, 0xa36); + (0xa38, 0xa39); + (0xa59, 0xa5c); + (0xa5e, 0xa5e); + (0xa72, 0xa74); + (0xa85, 0xa8d); + (0xa8f, 0xa91); + (0xa93, 0xaa8); + (0xaaa, 0xab0); + (0xab2, 0xab3); + (0xab5, 0xab9); + (0xabd, 0xabd); + (0xad0, 0xad0); + (0xae0, 0xae1); + (0xaf9, 0xaf9); + (0xb05, 0xb0c); + (0xb0f, 0xb10); + (0xb13, 0xb28); + (0xb2a, 0xb30); + (0xb32, 0xb33); + (0xb35, 0xb39); + (0xb3d, 0xb3d); + (0xb5c, 0xb5d); + (0xb5f, 0xb61); + (0xb71, 0xb71); + (0xb83, 0xb83); + (0xb85, 0xb8a); + (0xb8e, 0xb90); + (0xb92, 0xb95); + (0xb99, 0xb9a); + (0xb9c, 0xb9c); + (0xb9e, 0xb9f); + (0xba3, 0xba4); + (0xba8, 0xbaa); + (0xbae, 0xbb9); + (0xbd0, 0xbd0); + (0xc05, 0xc0c); + (0xc0e, 0xc10); + (0xc12, 0xc28); + (0xc2a, 0xc39); + (0xc3d, 0xc3d); + (0xc58, 0xc5a); + (0xc5d, 0xc5d); + (0xc60, 0xc61); + (0xc80, 0xc80); + (0xc85, 0xc8c); + (0xc8e, 0xc90); + (0xc92, 0xca8); + (0xcaa, 0xcb3); + (0xcb5, 0xcb9); + (0xcbd, 0xcbd); + (0xcdd, 0xcde); + (0xce0, 0xce1); + (0xcf1, 0xcf2); + (0xd04, 0xd0c); + (0xd0e, 0xd10); + (0xd12, 0xd3a); + (0xd3d, 0xd3d); + (0xd4e, 0xd4e); + (0xd54, 0xd56); + (0xd5f, 0xd61); + (0xd7a, 0xd7f); + (0xd85, 0xd96); + (0xd9a, 0xdb1); + (0xdb3, 0xdbb); + (0xdbd, 0xdbd); + (0xdc0, 0xdc6); + (0xe01, 0xe30); + (0xe32, 0xe33); + (0xe40, 0xe45); + (0xe46, 0xe46); + (0xe81, 0xe82); + (0xe84, 0xe84); + (0xe86, 0xe8a); + (0xe8c, 0xea3); + (0xea5, 0xea5); + (0xea7, 0xeb0); + (0xeb2, 0xeb3); + (0xebd, 0xebd); + (0xec0, 0xec4); + (0xec6, 0xec6); + (0xedc, 0xedf); + (0xf00, 0xf00); + (0xf40, 0xf47); + (0xf49, 0xf6c); + (0xf88, 0xf8c); + (0x1000, 0x102a); + (0x103f, 0x103f); + (0x1050, 0x1055); + (0x105a, 0x105d); + (0x1061, 0x1061); + (0x1065, 0x1066); + (0x106e, 0x1070); + (0x1075, 0x1081); + (0x108e, 0x108e); + (0x10a0, 0x10c5); + (0x10c7, 0x10c7); + (0x10cd, 0x10cd); + (0x10d0, 0x10fa); + (0x10fc, 0x10fc); + (0x10fd, 0x10ff); + (0x1100, 0x1248); + (0x124a, 0x124d); + (0x1250, 0x1256); + (0x1258, 0x1258); + (0x125a, 0x125d); + (0x1260, 0x1288); + (0x128a, 0x128d); + (0x1290, 0x12b0); + (0x12b2, 0x12b5); + (0x12b8, 0x12be); + (0x12c0, 0x12c0); + (0x12c2, 0x12c5); + (0x12c8, 0x12d6); + (0x12d8, 0x1310); + (0x1312, 0x1315); + (0x1318, 0x135a); + (0x1380, 0x138f); + (0x13a0, 0x13f5); + (0x13f8, 0x13fd); + (0x1401, 0x166c); + (0x166f, 0x167f); + (0x1681, 0x169a); + (0x16a0, 0x16ea); + (0x16ee, 0x16f0); + (0x16f1, 0x16f8); + (0x1700, 0x1711); + (0x171f, 0x1731); + (0x1740, 0x1751); + (0x1760, 0x176c); + (0x176e, 0x1770); + (0x1780, 0x17b3); + (0x17d7, 0x17d7); + (0x17dc, 0x17dc); + (0x1820, 0x1842); + (0x1843, 0x1843); + (0x1844, 0x1878); + (0x1880, 0x1884); + (0x1885, 0x1886); + (0x1887, 0x18a8); + (0x18aa, 0x18aa); + (0x18b0, 0x18f5); + (0x1900, 0x191e); + (0x1950, 0x196d); + (0x1970, 0x1974); + (0x1980, 0x19ab); + (0x19b0, 0x19c9); + (0x1a00, 0x1a16); + (0x1a20, 0x1a54); + (0x1aa7, 0x1aa7); + (0x1b05, 0x1b33); + (0x1b45, 0x1b4c); + (0x1b83, 0x1ba0); + (0x1bae, 0x1baf); + (0x1bba, 0x1be5); + (0x1c00, 0x1c23); + (0x1c4d, 0x1c4f); + (0x1c5a, 0x1c77); + (0x1c78, 0x1c7d); + (0x1c80, 0x1c88); + (0x1c90, 0x1cba); + (0x1cbd, 0x1cbf); + (0x1ce9, 0x1cec); + (0x1cee, 0x1cf3); + (0x1cf5, 0x1cf6); + (0x1cfa, 0x1cfa); + (0x1d00, 0x1d2b); + (0x1d2c, 0x1d6a); + (0x1d6b, 0x1d77); + (0x1d78, 0x1d78); + (0x1d79, 0x1d9a); + (0x1d9b, 0x1dbf); + (0x1e00, 0x1f15); + (0x1f18, 0x1f1d); + (0x1f20, 0x1f45); + (0x1f48, 0x1f4d); + (0x1f50, 0x1f57); + (0x1f59, 0x1f59); + (0x1f5b, 0x1f5b); + (0x1f5d, 0x1f5d); + (0x1f5f, 0x1f7d); + (0x1f80, 0x1fb4); + (0x1fb6, 0x1fbc); + (0x1fbe, 0x1fbe); + (0x1fc2, 0x1fc4); + (0x1fc6, 0x1fcc); + (0x1fd0, 0x1fd3); + (0x1fd6, 0x1fdb); + (0x1fe0, 0x1fec); + (0x1ff2, 0x1ff4); + (0x1ff6, 0x1ffc); + (0x2071, 0x2071); + (0x207f, 0x207f); + (0x2090, 0x209c); + (0x2102, 0x2102); + (0x2107, 0x2107); + (0x210a, 0x2113); + (0x2115, 0x2115); + (0x2118, 0x2118); + (0x2119, 0x211d); + (0x2124, 0x2124); + (0x2126, 0x2126); + (0x2128, 0x2128); + (0x212a, 0x212d); + (0x212e, 0x212e); + (0x212f, 0x2134); + (0x2135, 0x2138); + (0x2139, 0x2139); + (0x213c, 0x213f); + (0x2145, 0x2149); + (0x214e, 0x214e); + (0x2160, 0x2182); + (0x2183, 0x2184); + (0x2185, 0x2188); + (0x2c00, 0x2c7b); + (0x2c7c, 0x2c7d); + (0x2c7e, 0x2ce4); + (0x2ceb, 0x2cee); + (0x2cf2, 0x2cf3); + (0x2d00, 0x2d25); + (0x2d27, 0x2d27); + (0x2d2d, 0x2d2d); + (0x2d30, 0x2d67); + (0x2d6f, 0x2d6f); + (0x2d80, 0x2d96); + (0x2da0, 0x2da6); + (0x2da8, 0x2dae); + (0x2db0, 0x2db6); + (0x2db8, 0x2dbe); + (0x2dc0, 0x2dc6); + (0x2dc8, 0x2dce); + (0x2dd0, 0x2dd6); + (0x2dd8, 0x2dde); + (0x3005, 0x3005); + (0x3006, 0x3006); + (0x3007, 0x3007); + (0x3021, 0x3029); + (0x3031, 0x3035); + (0x3038, 0x303a); + (0x303b, 0x303b); + (0x303c, 0x303c); + (0x3041, 0x3096); + (0x309b, 0x309c); + (0x309d, 0x309e); + (0x309f, 0x309f); + (0x30a1, 0x30fa); + (0x30fc, 0x30fe); + (0x30ff, 0x30ff); + (0x3105, 0x312f); + (0x3131, 0x318e); + (0x31a0, 0x31bf); + (0x31f0, 0x31ff); + (0x3400, 0x4dbf); + (0x4e00, 0xa014); + (0xa015, 0xa015); + (0xa016, 0xa48c); + (0xa4d0, 0xa4f7); + (0xa4f8, 0xa4fd); + (0xa500, 0xa60b); + (0xa60c, 0xa60c); + (0xa610, 0xa61f); + (0xa62a, 0xa62b); + (0xa640, 0xa66d); + (0xa66e, 0xa66e); + (0xa67f, 0xa67f); + (0xa680, 0xa69b); + (0xa69c, 0xa69d); + (0xa6a0, 0xa6e5); + (0xa6e6, 0xa6ef); + (0xa717, 0xa71f); + (0xa722, 0xa76f); + (0xa770, 0xa770); + (0xa771, 0xa787); + (0xa788, 0xa788); + (0xa78b, 0xa78e); + (0xa78f, 0xa78f); + (0xa790, 0xa7ca); + (0xa7d0, 0xa7d1); + (0xa7d3, 0xa7d3); + (0xa7d5, 0xa7d9); + (0xa7f2, 0xa7f4); + (0xa7f5, 0xa7f6); + (0xa7f7, 0xa7f7); + (0xa7f8, 0xa7f9); + (0xa7fa, 0xa7fa); + (0xa7fb, 0xa801); + (0xa803, 0xa805); + (0xa807, 0xa80a); + (0xa80c, 0xa822); + (0xa840, 0xa873); + (0xa882, 0xa8b3); + (0xa8f2, 0xa8f7); + (0xa8fb, 0xa8fb); + (0xa8fd, 0xa8fe); + (0xa90a, 0xa925); + (0xa930, 0xa946); + (0xa960, 0xa97c); + (0xa984, 0xa9b2); + (0xa9cf, 0xa9cf); + (0xa9e0, 0xa9e4); + (0xa9e6, 0xa9e6); + (0xa9e7, 0xa9ef); + (0xa9fa, 0xa9fe); + (0xaa00, 0xaa28); + (0xaa40, 0xaa42); + (0xaa44, 0xaa4b); + (0xaa60, 0xaa6f); + (0xaa70, 0xaa70); + (0xaa71, 0xaa76); + (0xaa7a, 0xaa7a); + (0xaa7e, 0xaaaf); + (0xaab1, 0xaab1); + (0xaab5, 0xaab6); + (0xaab9, 0xaabd); + (0xaac0, 0xaac0); + (0xaac2, 0xaac2); + (0xaadb, 0xaadc); + (0xaadd, 0xaadd); + (0xaae0, 0xaaea); + (0xaaf2, 0xaaf2); + (0xaaf3, 0xaaf4); + (0xab01, 0xab06); + (0xab09, 0xab0e); + (0xab11, 0xab16); + (0xab20, 0xab26); + (0xab28, 0xab2e); + (0xab30, 0xab5a); + (0xab5c, 0xab5f); + (0xab60, 0xab68); + (0xab69, 0xab69); + (0xab70, 0xabbf); + (0xabc0, 0xabe2); + (0xac00, 0xd7a3); + (0xd7b0, 0xd7c6); + (0xd7cb, 0xd7fb); + (0xf900, 0xfa6d); + (0xfa70, 0xfad9); + (0xfb00, 0xfb06); + (0xfb13, 0xfb17); + (0xfb1d, 0xfb1d); + (0xfb1f, 0xfb28); + (0xfb2a, 0xfb36); + (0xfb38, 0xfb3c); + (0xfb3e, 0xfb3e); + (0xfb40, 0xfb41); + (0xfb43, 0xfb44); + (0xfb46, 0xfbb1); + (0xfbd3, 0xfd3d); + (0xfd50, 0xfd8f); + (0xfd92, 0xfdc7); + (0xfdf0, 0xfdfb); + (0xfe70, 0xfe74); + (0xfe76, 0xfefc); + (0xff21, 0xff3a); + (0xff41, 0xff5a); + (0xff66, 0xff6f); + (0xff70, 0xff70); + (0xff71, 0xff9d); + (0xff9e, 0xff9f); + (0xffa0, 0xffbe); + (0xffc2, 0xffc7); + (0xffca, 0xffcf); + (0xffd2, 0xffd7); + (0xffda, 0xffdc); + (0x10000, 0x1000b); + (0x1000d, 0x10026); + (0x10028, 0x1003a); + (0x1003c, 0x1003d); + (0x1003f, 0x1004d); + (0x10050, 0x1005d); + (0x10080, 0x100fa); + (0x10140, 0x10174); + (0x10280, 0x1029c); + (0x102a0, 0x102d0); + (0x10300, 0x1031f); + (0x1032d, 0x10340); + (0x10341, 0x10341); + (0x10342, 0x10349); + (0x1034a, 0x1034a); + (0x10350, 0x10375); + (0x10380, 0x1039d); + (0x103a0, 0x103c3); + (0x103c8, 0x103cf); + (0x103d1, 0x103d5); + (0x10400, 0x1044f); + (0x10450, 0x1049d); + (0x104b0, 0x104d3); + (0x104d8, 0x104fb); + (0x10500, 0x10527); + (0x10530, 0x10563); + (0x10570, 0x1057a); + (0x1057c, 0x1058a); + (0x1058c, 0x10592); + (0x10594, 0x10595); + (0x10597, 0x105a1); + (0x105a3, 0x105b1); + (0x105b3, 0x105b9); + (0x105bb, 0x105bc); + (0x10600, 0x10736); + (0x10740, 0x10755); + (0x10760, 0x10767); + (0x10780, 0x10785); + (0x10787, 0x107b0); + (0x107b2, 0x107ba); + (0x10800, 0x10805); + (0x10808, 0x10808); + (0x1080a, 0x10835); + (0x10837, 0x10838); + (0x1083c, 0x1083c); + (0x1083f, 0x10855); + (0x10860, 0x10876); + (0x10880, 0x1089e); + (0x108e0, 0x108f2); + (0x108f4, 0x108f5); + (0x10900, 0x10915); + (0x10920, 0x10939); + (0x10980, 0x109b7); + (0x109be, 0x109bf); + (0x10a00, 0x10a00); + (0x10a10, 0x10a13); + (0x10a15, 0x10a17); + (0x10a19, 0x10a35); + (0x10a60, 0x10a7c); + (0x10a80, 0x10a9c); + (0x10ac0, 0x10ac7); + (0x10ac9, 0x10ae4); + (0x10b00, 0x10b35); + (0x10b40, 0x10b55); + (0x10b60, 0x10b72); + (0x10b80, 0x10b91); + (0x10c00, 0x10c48); + (0x10c80, 0x10cb2); + (0x10cc0, 0x10cf2); + (0x10d00, 0x10d23); + (0x10e80, 0x10ea9); + (0x10eb0, 0x10eb1); + (0x10f00, 0x10f1c); + (0x10f27, 0x10f27); + (0x10f30, 0x10f45); + (0x10f70, 0x10f81); + (0x10fb0, 0x10fc4); + (0x10fe0, 0x10ff6); + (0x11003, 0x11037); + (0x11071, 0x11072); + (0x11075, 0x11075); + (0x11083, 0x110af); + (0x110d0, 0x110e8); + (0x11103, 0x11126); + (0x11144, 0x11144); + (0x11147, 0x11147); + (0x11150, 0x11172); + (0x11176, 0x11176); + (0x11183, 0x111b2); + (0x111c1, 0x111c4); + (0x111da, 0x111da); + (0x111dc, 0x111dc); + (0x11200, 0x11211); + (0x11213, 0x1122b); + (0x11280, 0x11286); + (0x11288, 0x11288); + (0x1128a, 0x1128d); + (0x1128f, 0x1129d); + (0x1129f, 0x112a8); + (0x112b0, 0x112de); + (0x11305, 0x1130c); + (0x1130f, 0x11310); + (0x11313, 0x11328); + (0x1132a, 0x11330); + (0x11332, 0x11333); + (0x11335, 0x11339); + (0x1133d, 0x1133d); + (0x11350, 0x11350); + (0x1135d, 0x11361); + (0x11400, 0x11434); + (0x11447, 0x1144a); + (0x1145f, 0x11461); + (0x11480, 0x114af); + (0x114c4, 0x114c5); + (0x114c7, 0x114c7); + (0x11580, 0x115ae); + (0x115d8, 0x115db); + (0x11600, 0x1162f); + (0x11644, 0x11644); + (0x11680, 0x116aa); + (0x116b8, 0x116b8); + (0x11700, 0x1171a); + (0x11740, 0x11746); + (0x11800, 0x1182b); + (0x118a0, 0x118df); + (0x118ff, 0x11906); + (0x11909, 0x11909); + (0x1190c, 0x11913); + (0x11915, 0x11916); + (0x11918, 0x1192f); + (0x1193f, 0x1193f); + (0x11941, 0x11941); + (0x119a0, 0x119a7); + (0x119aa, 0x119d0); + (0x119e1, 0x119e1); + (0x119e3, 0x119e3); + (0x11a00, 0x11a00); + (0x11a0b, 0x11a32); + (0x11a3a, 0x11a3a); + (0x11a50, 0x11a50); + (0x11a5c, 0x11a89); + (0x11a9d, 0x11a9d); + (0x11ab0, 0x11af8); + (0x11c00, 0x11c08); + (0x11c0a, 0x11c2e); + (0x11c40, 0x11c40); + (0x11c72, 0x11c8f); + (0x11d00, 0x11d06); + (0x11d08, 0x11d09); + (0x11d0b, 0x11d30); + (0x11d46, 0x11d46); + (0x11d60, 0x11d65); + (0x11d67, 0x11d68); + (0x11d6a, 0x11d89); + (0x11d98, 0x11d98); + (0x11ee0, 0x11ef2); + (0x11fb0, 0x11fb0); + (0x12000, 0x12399); + (0x12400, 0x1246e); + (0x12480, 0x12543); + (0x12f90, 0x12ff0); + (0x13000, 0x1342e); + (0x14400, 0x14646); + (0x16800, 0x16a38); + (0x16a40, 0x16a5e); + (0x16a70, 0x16abe); + (0x16ad0, 0x16aed); + (0x16b00, 0x16b2f); + (0x16b40, 0x16b43); + (0x16b63, 0x16b77); + (0x16b7d, 0x16b8f); + (0x16e40, 0x16e7f); + (0x16f00, 0x16f4a); + (0x16f50, 0x16f50); + (0x16f93, 0x16f9f); + (0x16fe0, 0x16fe1); + (0x16fe3, 0x16fe3); + (0x17000, 0x187f7); + (0x18800, 0x18cd5); + (0x18d00, 0x18d08); + (0x1aff0, 0x1aff3); + (0x1aff5, 0x1affb); + (0x1affd, 0x1affe); + (0x1b000, 0x1b122); + (0x1b150, 0x1b152); + (0x1b164, 0x1b167); + (0x1b170, 0x1b2fb); + (0x1bc00, 0x1bc6a); + (0x1bc70, 0x1bc7c); + (0x1bc80, 0x1bc88); + (0x1bc90, 0x1bc99); + (0x1d400, 0x1d454); + (0x1d456, 0x1d49c); + (0x1d49e, 0x1d49f); + (0x1d4a2, 0x1d4a2); + (0x1d4a5, 0x1d4a6); + (0x1d4a9, 0x1d4ac); + (0x1d4ae, 0x1d4b9); + (0x1d4bb, 0x1d4bb); + (0x1d4bd, 0x1d4c3); + (0x1d4c5, 0x1d505); + (0x1d507, 0x1d50a); + (0x1d50d, 0x1d514); + (0x1d516, 0x1d51c); + (0x1d51e, 0x1d539); + (0x1d53b, 0x1d53e); + (0x1d540, 0x1d544); + (0x1d546, 0x1d546); + (0x1d54a, 0x1d550); + (0x1d552, 0x1d6a5); + (0x1d6a8, 0x1d6c0); + (0x1d6c2, 0x1d6da); + (0x1d6dc, 0x1d6fa); + (0x1d6fc, 0x1d714); + (0x1d716, 0x1d734); + (0x1d736, 0x1d74e); + (0x1d750, 0x1d76e); + (0x1d770, 0x1d788); + (0x1d78a, 0x1d7a8); + (0x1d7aa, 0x1d7c2); + (0x1d7c4, 0x1d7cb); + (0x1df00, 0x1df09); + (0x1df0a, 0x1df0a); + (0x1df0b, 0x1df1e); + (0x1e100, 0x1e12c); + (0x1e137, 0x1e13d); + (0x1e14e, 0x1e14e); + (0x1e290, 0x1e2ad); + (0x1e2c0, 0x1e2eb); + (0x1e7e0, 0x1e7e6); + (0x1e7e8, 0x1e7eb); + (0x1e7ed, 0x1e7ee); + (0x1e7f0, 0x1e7fe); + (0x1e800, 0x1e8c4); + (0x1e900, 0x1e943); + (0x1e94b, 0x1e94b); + (0x1ee00, 0x1ee03); + (0x1ee05, 0x1ee1f); + (0x1ee21, 0x1ee22); + (0x1ee24, 0x1ee24); + (0x1ee27, 0x1ee27); + (0x1ee29, 0x1ee32); + (0x1ee34, 0x1ee37); + (0x1ee39, 0x1ee39); + (0x1ee3b, 0x1ee3b); + (0x1ee42, 0x1ee42); + (0x1ee47, 0x1ee47); + (0x1ee49, 0x1ee49); + (0x1ee4b, 0x1ee4b); + (0x1ee4d, 0x1ee4f); + (0x1ee51, 0x1ee52); + (0x1ee54, 0x1ee54); + (0x1ee57, 0x1ee57); + (0x1ee59, 0x1ee59); + (0x1ee5b, 0x1ee5b); + (0x1ee5d, 0x1ee5d); + (0x1ee5f, 0x1ee5f); + (0x1ee61, 0x1ee62); + (0x1ee64, 0x1ee64); + (0x1ee67, 0x1ee6a); + (0x1ee6c, 0x1ee72); + (0x1ee74, 0x1ee77); + (0x1ee79, 0x1ee7c); + (0x1ee7e, 0x1ee7e); + (0x1ee80, 0x1ee89); + (0x1ee8b, 0x1ee9b); + (0x1eea1, 0x1eea3); + (0x1eea5, 0x1eea9); + (0x1eeab, 0x1eebb); + (0x20000, 0x2a6df); + (0x2a700, 0x2b738); + (0x2b740, 0x2b81d); + (0x2b820, 0x2cea1); + (0x2ceb0, 0x2ebe0); + (0x30000, 0x3134a); + (0x2f800, 0x2fa1d); + ] let lowercase = - [0x61, 0x7a; 0xaa, 0xaa; 0xb5, 0xb5; 0xba, 0xba; 0xdf, 0xf6; - 0xf8, 0xff; 0x101, 0x101; 0x103, 0x103; 0x105, 0x105; 0x107, 0x107; - 0x109, 0x109; 0x10b, 0x10b; 0x10d, 0x10d; 0x10f, 0x10f; 0x111, 0x111; - 0x113, 0x113; 0x115, 0x115; 0x117, 0x117; 0x119, 0x119; 0x11b, 0x11b; - 0x11d, 0x11d; 0x11f, 0x11f; 0x121, 0x121; 0x123, 0x123; 0x125, 0x125; - 0x127, 0x127; 0x129, 0x129; 0x12b, 0x12b; 0x12d, 0x12d; 0x12f, 0x12f; - 0x131, 0x131; 0x133, 0x133; 0x135, 0x135; 0x137, 0x138; 0x13a, 0x13a; - 0x13c, 0x13c; 0x13e, 0x13e; 0x140, 0x140; 0x142, 0x142; 0x144, 0x144; - 0x146, 0x146; 0x148, 0x149; 0x14b, 0x14b; 0x14d, 0x14d; 0x14f, 0x14f; - 0x151, 0x151; 0x153, 0x153; 0x155, 0x155; 0x157, 0x157; 0x159, 0x159; - 0x15b, 0x15b; 0x15d, 0x15d; 0x15f, 0x15f; 0x161, 0x161; 0x163, 0x163; - 0x165, 0x165; 0x167, 0x167; 0x169, 0x169; 0x16b, 0x16b; 0x16d, 0x16d; - 0x16f, 0x16f; 0x171, 0x171; 0x173, 0x173; 0x175, 0x175; 0x177, 0x177; - 0x17a, 0x17a; 0x17c, 0x17c; 0x17e, 0x180; 0x183, 0x183; 0x185, 0x185; - 0x188, 0x188; 0x18c, 0x18d; 0x192, 0x192; 0x195, 0x195; 0x199, 0x19b; - 0x19e, 0x19e; 0x1a1, 0x1a1; 0x1a3, 0x1a3; 0x1a5, 0x1a5; 0x1a8, 0x1a8; - 0x1aa, 0x1ab; 0x1ad, 0x1ad; 0x1b0, 0x1b0; 0x1b4, 0x1b4; 0x1b6, 0x1b6; - 0x1b9, 0x1ba; 0x1bd, 0x1bf; 0x1c6, 0x1c6; 0x1c9, 0x1c9; 0x1cc, 0x1cc; - 0x1ce, 0x1ce; 0x1d0, 0x1d0; 0x1d2, 0x1d2; 0x1d4, 0x1d4; 0x1d6, 0x1d6; - 0x1d8, 0x1d8; 0x1da, 0x1da; 0x1dc, 0x1dd; 0x1df, 0x1df; 0x1e1, 0x1e1; - 0x1e3, 0x1e3; 0x1e5, 0x1e5; 0x1e7, 0x1e7; 0x1e9, 0x1e9; 0x1eb, 0x1eb; - 0x1ed, 0x1ed; 0x1ef, 0x1f0; 0x1f3, 0x1f3; 0x1f5, 0x1f5; 0x1f9, 0x1f9; - 0x1fb, 0x1fb; 0x1fd, 0x1fd; 0x1ff, 0x1ff; 0x201, 0x201; 0x203, 0x203; - 0x205, 0x205; 0x207, 0x207; 0x209, 0x209; 0x20b, 0x20b; 0x20d, 0x20d; - 0x20f, 0x20f; 0x211, 0x211; 0x213, 0x213; 0x215, 0x215; 0x217, 0x217; - 0x219, 0x219; 0x21b, 0x21b; 0x21d, 0x21d; 0x21f, 0x21f; 0x221, 0x221; - 0x223, 0x223; 0x225, 0x225; 0x227, 0x227; 0x229, 0x229; 0x22b, 0x22b; - 0x22d, 0x22d; 0x22f, 0x22f; 0x231, 0x231; 0x233, 0x239; 0x23c, 0x23c; - 0x23f, 0x240; 0x242, 0x242; 0x247, 0x247; 0x249, 0x249; 0x24b, 0x24b; - 0x24d, 0x24d; 0x24f, 0x293; 0x295, 0x2af; 0x2b0, 0x2b8; 0x2c0, 0x2c1; - 0x2e0, 0x2e4; 0x345, 0x345; 0x371, 0x371; 0x373, 0x373; 0x377, 0x377; - 0x37a, 0x37a; 0x37b, 0x37d; 0x390, 0x390; 0x3ac, 0x3ce; 0x3d0, 0x3d1; - 0x3d5, 0x3d7; 0x3d9, 0x3d9; 0x3db, 0x3db; 0x3dd, 0x3dd; 0x3df, 0x3df; - 0x3e1, 0x3e1; 0x3e3, 0x3e3; 0x3e5, 0x3e5; 0x3e7, 0x3e7; 0x3e9, 0x3e9; - 0x3eb, 0x3eb; 0x3ed, 0x3ed; 0x3ef, 0x3f3; 0x3f5, 0x3f5; 0x3f8, 0x3f8; - 0x3fb, 0x3fc; 0x430, 0x45f; 0x461, 0x461; 0x463, 0x463; 0x465, 0x465; - 0x467, 0x467; 0x469, 0x469; 0x46b, 0x46b; 0x46d, 0x46d; 0x46f, 0x46f; - 0x471, 0x471; 0x473, 0x473; 0x475, 0x475; 0x477, 0x477; 0x479, 0x479; - 0x47b, 0x47b; 0x47d, 0x47d; 0x47f, 0x47f; 0x481, 0x481; 0x48b, 0x48b; - 0x48d, 0x48d; 0x48f, 0x48f; 0x491, 0x491; 0x493, 0x493; 0x495, 0x495; - 0x497, 0x497; 0x499, 0x499; 0x49b, 0x49b; 0x49d, 0x49d; 0x49f, 0x49f; - 0x4a1, 0x4a1; 0x4a3, 0x4a3; 0x4a5, 0x4a5; 0x4a7, 0x4a7; 0x4a9, 0x4a9; - 0x4ab, 0x4ab; 0x4ad, 0x4ad; 0x4af, 0x4af; 0x4b1, 0x4b1; 0x4b3, 0x4b3; - 0x4b5, 0x4b5; 0x4b7, 0x4b7; 0x4b9, 0x4b9; 0x4bb, 0x4bb; 0x4bd, 0x4bd; - 0x4bf, 0x4bf; 0x4c2, 0x4c2; 0x4c4, 0x4c4; 0x4c6, 0x4c6; 0x4c8, 0x4c8; - 0x4ca, 0x4ca; 0x4cc, 0x4cc; 0x4ce, 0x4cf; 0x4d1, 0x4d1; 0x4d3, 0x4d3; - 0x4d5, 0x4d5; 0x4d7, 0x4d7; 0x4d9, 0x4d9; 0x4db, 0x4db; 0x4dd, 0x4dd; - 0x4df, 0x4df; 0x4e1, 0x4e1; 0x4e3, 0x4e3; 0x4e5, 0x4e5; 0x4e7, 0x4e7; - 0x4e9, 0x4e9; 0x4eb, 0x4eb; 0x4ed, 0x4ed; 0x4ef, 0x4ef; 0x4f1, 0x4f1; - 0x4f3, 0x4f3; 0x4f5, 0x4f5; 0x4f7, 0x4f7; 0x4f9, 0x4f9; 0x4fb, 0x4fb; - 0x4fd, 0x4fd; 0x4ff, 0x4ff; 0x501, 0x501; 0x503, 0x503; 0x505, 0x505; - 0x507, 0x507; 0x509, 0x509; 0x50b, 0x50b; 0x50d, 0x50d; 0x50f, 0x50f; - 0x511, 0x511; 0x513, 0x513; 0x515, 0x515; 0x517, 0x517; 0x519, 0x519; - 0x51b, 0x51b; 0x51d, 0x51d; 0x51f, 0x51f; 0x521, 0x521; 0x523, 0x523; - 0x525, 0x525; 0x527, 0x527; 0x529, 0x529; 0x52b, 0x52b; 0x52d, 0x52d; - 0x52f, 0x52f; 0x560, 0x588; 0x10d0, 0x10fa; 0x10fd, 0x10ff; 0x13f8, 0x13fd; - 0x1c80, 0x1c88; 0x1d00, 0x1d2b; 0x1d2c, 0x1d6a; 0x1d6b, 0x1d77; 0x1d78, 0x1d78; - 0x1d79, 0x1d9a; 0x1d9b, 0x1dbf; 0x1e01, 0x1e01; 0x1e03, 0x1e03; 0x1e05, 0x1e05; - 0x1e07, 0x1e07; 0x1e09, 0x1e09; 0x1e0b, 0x1e0b; 0x1e0d, 0x1e0d; 0x1e0f, 0x1e0f; - 0x1e11, 0x1e11; 0x1e13, 0x1e13; 0x1e15, 0x1e15; 0x1e17, 0x1e17; 0x1e19, 0x1e19; - 0x1e1b, 0x1e1b; 0x1e1d, 0x1e1d; 0x1e1f, 0x1e1f; 0x1e21, 0x1e21; 0x1e23, 0x1e23; - 0x1e25, 0x1e25; 0x1e27, 0x1e27; 0x1e29, 0x1e29; 0x1e2b, 0x1e2b; 0x1e2d, 0x1e2d; - 0x1e2f, 0x1e2f; 0x1e31, 0x1e31; 0x1e33, 0x1e33; 0x1e35, 0x1e35; 0x1e37, 0x1e37; - 0x1e39, 0x1e39; 0x1e3b, 0x1e3b; 0x1e3d, 0x1e3d; 0x1e3f, 0x1e3f; 0x1e41, 0x1e41; - 0x1e43, 0x1e43; 0x1e45, 0x1e45; 0x1e47, 0x1e47; 0x1e49, 0x1e49; 0x1e4b, 0x1e4b; - 0x1e4d, 0x1e4d; 0x1e4f, 0x1e4f; 0x1e51, 0x1e51; 0x1e53, 0x1e53; 0x1e55, 0x1e55; - 0x1e57, 0x1e57; 0x1e59, 0x1e59; 0x1e5b, 0x1e5b; 0x1e5d, 0x1e5d; 0x1e5f, 0x1e5f; - 0x1e61, 0x1e61; 0x1e63, 0x1e63; 0x1e65, 0x1e65; 0x1e67, 0x1e67; 0x1e69, 0x1e69; - 0x1e6b, 0x1e6b; 0x1e6d, 0x1e6d; 0x1e6f, 0x1e6f; 0x1e71, 0x1e71; 0x1e73, 0x1e73; - 0x1e75, 0x1e75; 0x1e77, 0x1e77; 0x1e79, 0x1e79; 0x1e7b, 0x1e7b; 0x1e7d, 0x1e7d; - 0x1e7f, 0x1e7f; 0x1e81, 0x1e81; 0x1e83, 0x1e83; 0x1e85, 0x1e85; 0x1e87, 0x1e87; - 0x1e89, 0x1e89; 0x1e8b, 0x1e8b; 0x1e8d, 0x1e8d; 0x1e8f, 0x1e8f; 0x1e91, 0x1e91; - 0x1e93, 0x1e93; 0x1e95, 0x1e9d; 0x1e9f, 0x1e9f; 0x1ea1, 0x1ea1; 0x1ea3, 0x1ea3; - 0x1ea5, 0x1ea5; 0x1ea7, 0x1ea7; 0x1ea9, 0x1ea9; 0x1eab, 0x1eab; 0x1ead, 0x1ead; - 0x1eaf, 0x1eaf; 0x1eb1, 0x1eb1; 0x1eb3, 0x1eb3; 0x1eb5, 0x1eb5; 0x1eb7, 0x1eb7; - 0x1eb9, 0x1eb9; 0x1ebb, 0x1ebb; 0x1ebd, 0x1ebd; 0x1ebf, 0x1ebf; 0x1ec1, 0x1ec1; - 0x1ec3, 0x1ec3; 0x1ec5, 0x1ec5; 0x1ec7, 0x1ec7; 0x1ec9, 0x1ec9; 0x1ecb, 0x1ecb; - 0x1ecd, 0x1ecd; 0x1ecf, 0x1ecf; 0x1ed1, 0x1ed1; 0x1ed3, 0x1ed3; 0x1ed5, 0x1ed5; - 0x1ed7, 0x1ed7; 0x1ed9, 0x1ed9; 0x1edb, 0x1edb; 0x1edd, 0x1edd; 0x1edf, 0x1edf; - 0x1ee1, 0x1ee1; 0x1ee3, 0x1ee3; 0x1ee5, 0x1ee5; 0x1ee7, 0x1ee7; 0x1ee9, 0x1ee9; - 0x1eeb, 0x1eeb; 0x1eed, 0x1eed; 0x1eef, 0x1eef; 0x1ef1, 0x1ef1; 0x1ef3, 0x1ef3; - 0x1ef5, 0x1ef5; 0x1ef7, 0x1ef7; 0x1ef9, 0x1ef9; 0x1efb, 0x1efb; 0x1efd, 0x1efd; - 0x1eff, 0x1f07; 0x1f10, 0x1f15; 0x1f20, 0x1f27; 0x1f30, 0x1f37; 0x1f40, 0x1f45; - 0x1f50, 0x1f57; 0x1f60, 0x1f67; 0x1f70, 0x1f7d; 0x1f80, 0x1f87; 0x1f90, 0x1f97; - 0x1fa0, 0x1fa7; 0x1fb0, 0x1fb4; 0x1fb6, 0x1fb7; 0x1fbe, 0x1fbe; 0x1fc2, 0x1fc4; - 0x1fc6, 0x1fc7; 0x1fd0, 0x1fd3; 0x1fd6, 0x1fd7; 0x1fe0, 0x1fe7; 0x1ff2, 0x1ff4; - 0x1ff6, 0x1ff7; 0x2071, 0x2071; 0x207f, 0x207f; 0x2090, 0x209c; 0x210a, 0x210a; - 0x210e, 0x210f; 0x2113, 0x2113; 0x212f, 0x212f; 0x2134, 0x2134; 0x2139, 0x2139; - 0x213c, 0x213d; 0x2146, 0x2149; 0x214e, 0x214e; 0x2170, 0x217f; 0x2184, 0x2184; - 0x24d0, 0x24e9; 0x2c30, 0x2c5f; 0x2c61, 0x2c61; 0x2c65, 0x2c66; 0x2c68, 0x2c68; - 0x2c6a, 0x2c6a; 0x2c6c, 0x2c6c; 0x2c71, 0x2c71; 0x2c73, 0x2c74; 0x2c76, 0x2c7b; - 0x2c7c, 0x2c7d; 0x2c81, 0x2c81; 0x2c83, 0x2c83; 0x2c85, 0x2c85; 0x2c87, 0x2c87; - 0x2c89, 0x2c89; 0x2c8b, 0x2c8b; 0x2c8d, 0x2c8d; 0x2c8f, 0x2c8f; 0x2c91, 0x2c91; - 0x2c93, 0x2c93; 0x2c95, 0x2c95; 0x2c97, 0x2c97; 0x2c99, 0x2c99; 0x2c9b, 0x2c9b; - 0x2c9d, 0x2c9d; 0x2c9f, 0x2c9f; 0x2ca1, 0x2ca1; 0x2ca3, 0x2ca3; 0x2ca5, 0x2ca5; - 0x2ca7, 0x2ca7; 0x2ca9, 0x2ca9; 0x2cab, 0x2cab; 0x2cad, 0x2cad; 0x2caf, 0x2caf; - 0x2cb1, 0x2cb1; 0x2cb3, 0x2cb3; 0x2cb5, 0x2cb5; 0x2cb7, 0x2cb7; 0x2cb9, 0x2cb9; - 0x2cbb, 0x2cbb; 0x2cbd, 0x2cbd; 0x2cbf, 0x2cbf; 0x2cc1, 0x2cc1; 0x2cc3, 0x2cc3; - 0x2cc5, 0x2cc5; 0x2cc7, 0x2cc7; 0x2cc9, 0x2cc9; 0x2ccb, 0x2ccb; 0x2ccd, 0x2ccd; - 0x2ccf, 0x2ccf; 0x2cd1, 0x2cd1; 0x2cd3, 0x2cd3; 0x2cd5, 0x2cd5; 0x2cd7, 0x2cd7; - 0x2cd9, 0x2cd9; 0x2cdb, 0x2cdb; 0x2cdd, 0x2cdd; 0x2cdf, 0x2cdf; 0x2ce1, 0x2ce1; - 0x2ce3, 0x2ce4; 0x2cec, 0x2cec; 0x2cee, 0x2cee; 0x2cf3, 0x2cf3; 0x2d00, 0x2d25; - 0x2d27, 0x2d27; 0x2d2d, 0x2d2d; 0xa641, 0xa641; 0xa643, 0xa643; 0xa645, 0xa645; - 0xa647, 0xa647; 0xa649, 0xa649; 0xa64b, 0xa64b; 0xa64d, 0xa64d; 0xa64f, 0xa64f; - 0xa651, 0xa651; 0xa653, 0xa653; 0xa655, 0xa655; 0xa657, 0xa657; 0xa659, 0xa659; - 0xa65b, 0xa65b; 0xa65d, 0xa65d; 0xa65f, 0xa65f; 0xa661, 0xa661; 0xa663, 0xa663; - 0xa665, 0xa665; 0xa667, 0xa667; 0xa669, 0xa669; 0xa66b, 0xa66b; 0xa66d, 0xa66d; - 0xa681, 0xa681; 0xa683, 0xa683; 0xa685, 0xa685; 0xa687, 0xa687; 0xa689, 0xa689; - 0xa68b, 0xa68b; 0xa68d, 0xa68d; 0xa68f, 0xa68f; 0xa691, 0xa691; 0xa693, 0xa693; - 0xa695, 0xa695; 0xa697, 0xa697; 0xa699, 0xa699; 0xa69b, 0xa69b; 0xa69c, 0xa69d; - 0xa723, 0xa723; 0xa725, 0xa725; 0xa727, 0xa727; 0xa729, 0xa729; 0xa72b, 0xa72b; - 0xa72d, 0xa72d; 0xa72f, 0xa731; 0xa733, 0xa733; 0xa735, 0xa735; 0xa737, 0xa737; - 0xa739, 0xa739; 0xa73b, 0xa73b; 0xa73d, 0xa73d; 0xa73f, 0xa73f; 0xa741, 0xa741; - 0xa743, 0xa743; 0xa745, 0xa745; 0xa747, 0xa747; 0xa749, 0xa749; 0xa74b, 0xa74b; - 0xa74d, 0xa74d; 0xa74f, 0xa74f; 0xa751, 0xa751; 0xa753, 0xa753; 0xa755, 0xa755; - 0xa757, 0xa757; 0xa759, 0xa759; 0xa75b, 0xa75b; 0xa75d, 0xa75d; 0xa75f, 0xa75f; - 0xa761, 0xa761; 0xa763, 0xa763; 0xa765, 0xa765; 0xa767, 0xa767; 0xa769, 0xa769; - 0xa76b, 0xa76b; 0xa76d, 0xa76d; 0xa76f, 0xa76f; 0xa770, 0xa770; 0xa771, 0xa778; - 0xa77a, 0xa77a; 0xa77c, 0xa77c; 0xa77f, 0xa77f; 0xa781, 0xa781; 0xa783, 0xa783; - 0xa785, 0xa785; 0xa787, 0xa787; 0xa78c, 0xa78c; 0xa78e, 0xa78e; 0xa791, 0xa791; - 0xa793, 0xa795; 0xa797, 0xa797; 0xa799, 0xa799; 0xa79b, 0xa79b; 0xa79d, 0xa79d; - 0xa79f, 0xa79f; 0xa7a1, 0xa7a1; 0xa7a3, 0xa7a3; 0xa7a5, 0xa7a5; 0xa7a7, 0xa7a7; - 0xa7a9, 0xa7a9; 0xa7af, 0xa7af; 0xa7b5, 0xa7b5; 0xa7b7, 0xa7b7; 0xa7b9, 0xa7b9; - 0xa7bb, 0xa7bb; 0xa7bd, 0xa7bd; 0xa7bf, 0xa7bf; 0xa7c1, 0xa7c1; 0xa7c3, 0xa7c3; - 0xa7c8, 0xa7c8; 0xa7ca, 0xa7ca; 0xa7d1, 0xa7d1; 0xa7d3, 0xa7d3; 0xa7d5, 0xa7d5; - 0xa7d7, 0xa7d7; 0xa7d9, 0xa7d9; 0xa7f6, 0xa7f6; 0xa7f8, 0xa7f9; 0xa7fa, 0xa7fa; - 0xab30, 0xab5a; 0xab5c, 0xab5f; 0xab60, 0xab68; 0xab70, 0xabbf; 0xfb00, 0xfb06; - 0xfb13, 0xfb17; 0xff41, 0xff5a; 0x10428, 0x1044f; 0x104d8, 0x104fb; 0x10597, 0x105a1; - 0x105a3, 0x105b1; 0x105b3, 0x105b9; 0x105bb, 0x105bc; 0x10780, 0x10780; 0x10783, 0x10785; - 0x10787, 0x107b0; 0x107b2, 0x107ba; 0x10cc0, 0x10cf2; 0x118c0, 0x118df; 0x16e60, 0x16e7f; - 0x1d41a, 0x1d433; 0x1d44e, 0x1d454; 0x1d456, 0x1d467; 0x1d482, 0x1d49b; 0x1d4b6, 0x1d4b9; - 0x1d4bb, 0x1d4bb; 0x1d4bd, 0x1d4c3; 0x1d4c5, 0x1d4cf; 0x1d4ea, 0x1d503; 0x1d51e, 0x1d537; - 0x1d552, 0x1d56b; 0x1d586, 0x1d59f; 0x1d5ba, 0x1d5d3; 0x1d5ee, 0x1d607; 0x1d622, 0x1d63b; - 0x1d656, 0x1d66f; 0x1d68a, 0x1d6a5; 0x1d6c2, 0x1d6da; 0x1d6dc, 0x1d6e1; 0x1d6fc, 0x1d714; - 0x1d716, 0x1d71b; 0x1d736, 0x1d74e; 0x1d750, 0x1d755; 0x1d770, 0x1d788; 0x1d78a, 0x1d78f; - 0x1d7aa, 0x1d7c2; 0x1d7c4, 0x1d7c9; 0x1d7cb, 0x1d7cb; 0x1df00, 0x1df09; 0x1df0b, 0x1df1e; - 0x1e922, 0x1e943] + [ + (0x61, 0x7a); + (0xaa, 0xaa); + (0xb5, 0xb5); + (0xba, 0xba); + (0xdf, 0xf6); + (0xf8, 0xff); + (0x101, 0x101); + (0x103, 0x103); + (0x105, 0x105); + (0x107, 0x107); + (0x109, 0x109); + (0x10b, 0x10b); + (0x10d, 0x10d); + (0x10f, 0x10f); + (0x111, 0x111); + (0x113, 0x113); + (0x115, 0x115); + (0x117, 0x117); + (0x119, 0x119); + (0x11b, 0x11b); + (0x11d, 0x11d); + (0x11f, 0x11f); + (0x121, 0x121); + (0x123, 0x123); + (0x125, 0x125); + (0x127, 0x127); + (0x129, 0x129); + (0x12b, 0x12b); + (0x12d, 0x12d); + (0x12f, 0x12f); + (0x131, 0x131); + (0x133, 0x133); + (0x135, 0x135); + (0x137, 0x138); + (0x13a, 0x13a); + (0x13c, 0x13c); + (0x13e, 0x13e); + (0x140, 0x140); + (0x142, 0x142); + (0x144, 0x144); + (0x146, 0x146); + (0x148, 0x149); + (0x14b, 0x14b); + (0x14d, 0x14d); + (0x14f, 0x14f); + (0x151, 0x151); + (0x153, 0x153); + (0x155, 0x155); + (0x157, 0x157); + (0x159, 0x159); + (0x15b, 0x15b); + (0x15d, 0x15d); + (0x15f, 0x15f); + (0x161, 0x161); + (0x163, 0x163); + (0x165, 0x165); + (0x167, 0x167); + (0x169, 0x169); + (0x16b, 0x16b); + (0x16d, 0x16d); + (0x16f, 0x16f); + (0x171, 0x171); + (0x173, 0x173); + (0x175, 0x175); + (0x177, 0x177); + (0x17a, 0x17a); + (0x17c, 0x17c); + (0x17e, 0x180); + (0x183, 0x183); + (0x185, 0x185); + (0x188, 0x188); + (0x18c, 0x18d); + (0x192, 0x192); + (0x195, 0x195); + (0x199, 0x19b); + (0x19e, 0x19e); + (0x1a1, 0x1a1); + (0x1a3, 0x1a3); + (0x1a5, 0x1a5); + (0x1a8, 0x1a8); + (0x1aa, 0x1ab); + (0x1ad, 0x1ad); + (0x1b0, 0x1b0); + (0x1b4, 0x1b4); + (0x1b6, 0x1b6); + (0x1b9, 0x1ba); + (0x1bd, 0x1bf); + (0x1c6, 0x1c6); + (0x1c9, 0x1c9); + (0x1cc, 0x1cc); + (0x1ce, 0x1ce); + (0x1d0, 0x1d0); + (0x1d2, 0x1d2); + (0x1d4, 0x1d4); + (0x1d6, 0x1d6); + (0x1d8, 0x1d8); + (0x1da, 0x1da); + (0x1dc, 0x1dd); + (0x1df, 0x1df); + (0x1e1, 0x1e1); + (0x1e3, 0x1e3); + (0x1e5, 0x1e5); + (0x1e7, 0x1e7); + (0x1e9, 0x1e9); + (0x1eb, 0x1eb); + (0x1ed, 0x1ed); + (0x1ef, 0x1f0); + (0x1f3, 0x1f3); + (0x1f5, 0x1f5); + (0x1f9, 0x1f9); + (0x1fb, 0x1fb); + (0x1fd, 0x1fd); + (0x1ff, 0x1ff); + (0x201, 0x201); + (0x203, 0x203); + (0x205, 0x205); + (0x207, 0x207); + (0x209, 0x209); + (0x20b, 0x20b); + (0x20d, 0x20d); + (0x20f, 0x20f); + (0x211, 0x211); + (0x213, 0x213); + (0x215, 0x215); + (0x217, 0x217); + (0x219, 0x219); + (0x21b, 0x21b); + (0x21d, 0x21d); + (0x21f, 0x21f); + (0x221, 0x221); + (0x223, 0x223); + (0x225, 0x225); + (0x227, 0x227); + (0x229, 0x229); + (0x22b, 0x22b); + (0x22d, 0x22d); + (0x22f, 0x22f); + (0x231, 0x231); + (0x233, 0x239); + (0x23c, 0x23c); + (0x23f, 0x240); + (0x242, 0x242); + (0x247, 0x247); + (0x249, 0x249); + (0x24b, 0x24b); + (0x24d, 0x24d); + (0x24f, 0x293); + (0x295, 0x2af); + (0x2b0, 0x2b8); + (0x2c0, 0x2c1); + (0x2e0, 0x2e4); + (0x345, 0x345); + (0x371, 0x371); + (0x373, 0x373); + (0x377, 0x377); + (0x37a, 0x37a); + (0x37b, 0x37d); + (0x390, 0x390); + (0x3ac, 0x3ce); + (0x3d0, 0x3d1); + (0x3d5, 0x3d7); + (0x3d9, 0x3d9); + (0x3db, 0x3db); + (0x3dd, 0x3dd); + (0x3df, 0x3df); + (0x3e1, 0x3e1); + (0x3e3, 0x3e3); + (0x3e5, 0x3e5); + (0x3e7, 0x3e7); + (0x3e9, 0x3e9); + (0x3eb, 0x3eb); + (0x3ed, 0x3ed); + (0x3ef, 0x3f3); + (0x3f5, 0x3f5); + (0x3f8, 0x3f8); + (0x3fb, 0x3fc); + (0x430, 0x45f); + (0x461, 0x461); + (0x463, 0x463); + (0x465, 0x465); + (0x467, 0x467); + (0x469, 0x469); + (0x46b, 0x46b); + (0x46d, 0x46d); + (0x46f, 0x46f); + (0x471, 0x471); + (0x473, 0x473); + (0x475, 0x475); + (0x477, 0x477); + (0x479, 0x479); + (0x47b, 0x47b); + (0x47d, 0x47d); + (0x47f, 0x47f); + (0x481, 0x481); + (0x48b, 0x48b); + (0x48d, 0x48d); + (0x48f, 0x48f); + (0x491, 0x491); + (0x493, 0x493); + (0x495, 0x495); + (0x497, 0x497); + (0x499, 0x499); + (0x49b, 0x49b); + (0x49d, 0x49d); + (0x49f, 0x49f); + (0x4a1, 0x4a1); + (0x4a3, 0x4a3); + (0x4a5, 0x4a5); + (0x4a7, 0x4a7); + (0x4a9, 0x4a9); + (0x4ab, 0x4ab); + (0x4ad, 0x4ad); + (0x4af, 0x4af); + (0x4b1, 0x4b1); + (0x4b3, 0x4b3); + (0x4b5, 0x4b5); + (0x4b7, 0x4b7); + (0x4b9, 0x4b9); + (0x4bb, 0x4bb); + (0x4bd, 0x4bd); + (0x4bf, 0x4bf); + (0x4c2, 0x4c2); + (0x4c4, 0x4c4); + (0x4c6, 0x4c6); + (0x4c8, 0x4c8); + (0x4ca, 0x4ca); + (0x4cc, 0x4cc); + (0x4ce, 0x4cf); + (0x4d1, 0x4d1); + (0x4d3, 0x4d3); + (0x4d5, 0x4d5); + (0x4d7, 0x4d7); + (0x4d9, 0x4d9); + (0x4db, 0x4db); + (0x4dd, 0x4dd); + (0x4df, 0x4df); + (0x4e1, 0x4e1); + (0x4e3, 0x4e3); + (0x4e5, 0x4e5); + (0x4e7, 0x4e7); + (0x4e9, 0x4e9); + (0x4eb, 0x4eb); + (0x4ed, 0x4ed); + (0x4ef, 0x4ef); + (0x4f1, 0x4f1); + (0x4f3, 0x4f3); + (0x4f5, 0x4f5); + (0x4f7, 0x4f7); + (0x4f9, 0x4f9); + (0x4fb, 0x4fb); + (0x4fd, 0x4fd); + (0x4ff, 0x4ff); + (0x501, 0x501); + (0x503, 0x503); + (0x505, 0x505); + (0x507, 0x507); + (0x509, 0x509); + (0x50b, 0x50b); + (0x50d, 0x50d); + (0x50f, 0x50f); + (0x511, 0x511); + (0x513, 0x513); + (0x515, 0x515); + (0x517, 0x517); + (0x519, 0x519); + (0x51b, 0x51b); + (0x51d, 0x51d); + (0x51f, 0x51f); + (0x521, 0x521); + (0x523, 0x523); + (0x525, 0x525); + (0x527, 0x527); + (0x529, 0x529); + (0x52b, 0x52b); + (0x52d, 0x52d); + (0x52f, 0x52f); + (0x560, 0x588); + (0x10d0, 0x10fa); + (0x10fd, 0x10ff); + (0x13f8, 0x13fd); + (0x1c80, 0x1c88); + (0x1d00, 0x1d2b); + (0x1d2c, 0x1d6a); + (0x1d6b, 0x1d77); + (0x1d78, 0x1d78); + (0x1d79, 0x1d9a); + (0x1d9b, 0x1dbf); + (0x1e01, 0x1e01); + (0x1e03, 0x1e03); + (0x1e05, 0x1e05); + (0x1e07, 0x1e07); + (0x1e09, 0x1e09); + (0x1e0b, 0x1e0b); + (0x1e0d, 0x1e0d); + (0x1e0f, 0x1e0f); + (0x1e11, 0x1e11); + (0x1e13, 0x1e13); + (0x1e15, 0x1e15); + (0x1e17, 0x1e17); + (0x1e19, 0x1e19); + (0x1e1b, 0x1e1b); + (0x1e1d, 0x1e1d); + (0x1e1f, 0x1e1f); + (0x1e21, 0x1e21); + (0x1e23, 0x1e23); + (0x1e25, 0x1e25); + (0x1e27, 0x1e27); + (0x1e29, 0x1e29); + (0x1e2b, 0x1e2b); + (0x1e2d, 0x1e2d); + (0x1e2f, 0x1e2f); + (0x1e31, 0x1e31); + (0x1e33, 0x1e33); + (0x1e35, 0x1e35); + (0x1e37, 0x1e37); + (0x1e39, 0x1e39); + (0x1e3b, 0x1e3b); + (0x1e3d, 0x1e3d); + (0x1e3f, 0x1e3f); + (0x1e41, 0x1e41); + (0x1e43, 0x1e43); + (0x1e45, 0x1e45); + (0x1e47, 0x1e47); + (0x1e49, 0x1e49); + (0x1e4b, 0x1e4b); + (0x1e4d, 0x1e4d); + (0x1e4f, 0x1e4f); + (0x1e51, 0x1e51); + (0x1e53, 0x1e53); + (0x1e55, 0x1e55); + (0x1e57, 0x1e57); + (0x1e59, 0x1e59); + (0x1e5b, 0x1e5b); + (0x1e5d, 0x1e5d); + (0x1e5f, 0x1e5f); + (0x1e61, 0x1e61); + (0x1e63, 0x1e63); + (0x1e65, 0x1e65); + (0x1e67, 0x1e67); + (0x1e69, 0x1e69); + (0x1e6b, 0x1e6b); + (0x1e6d, 0x1e6d); + (0x1e6f, 0x1e6f); + (0x1e71, 0x1e71); + (0x1e73, 0x1e73); + (0x1e75, 0x1e75); + (0x1e77, 0x1e77); + (0x1e79, 0x1e79); + (0x1e7b, 0x1e7b); + (0x1e7d, 0x1e7d); + (0x1e7f, 0x1e7f); + (0x1e81, 0x1e81); + (0x1e83, 0x1e83); + (0x1e85, 0x1e85); + (0x1e87, 0x1e87); + (0x1e89, 0x1e89); + (0x1e8b, 0x1e8b); + (0x1e8d, 0x1e8d); + (0x1e8f, 0x1e8f); + (0x1e91, 0x1e91); + (0x1e93, 0x1e93); + (0x1e95, 0x1e9d); + (0x1e9f, 0x1e9f); + (0x1ea1, 0x1ea1); + (0x1ea3, 0x1ea3); + (0x1ea5, 0x1ea5); + (0x1ea7, 0x1ea7); + (0x1ea9, 0x1ea9); + (0x1eab, 0x1eab); + (0x1ead, 0x1ead); + (0x1eaf, 0x1eaf); + (0x1eb1, 0x1eb1); + (0x1eb3, 0x1eb3); + (0x1eb5, 0x1eb5); + (0x1eb7, 0x1eb7); + (0x1eb9, 0x1eb9); + (0x1ebb, 0x1ebb); + (0x1ebd, 0x1ebd); + (0x1ebf, 0x1ebf); + (0x1ec1, 0x1ec1); + (0x1ec3, 0x1ec3); + (0x1ec5, 0x1ec5); + (0x1ec7, 0x1ec7); + (0x1ec9, 0x1ec9); + (0x1ecb, 0x1ecb); + (0x1ecd, 0x1ecd); + (0x1ecf, 0x1ecf); + (0x1ed1, 0x1ed1); + (0x1ed3, 0x1ed3); + (0x1ed5, 0x1ed5); + (0x1ed7, 0x1ed7); + (0x1ed9, 0x1ed9); + (0x1edb, 0x1edb); + (0x1edd, 0x1edd); + (0x1edf, 0x1edf); + (0x1ee1, 0x1ee1); + (0x1ee3, 0x1ee3); + (0x1ee5, 0x1ee5); + (0x1ee7, 0x1ee7); + (0x1ee9, 0x1ee9); + (0x1eeb, 0x1eeb); + (0x1eed, 0x1eed); + (0x1eef, 0x1eef); + (0x1ef1, 0x1ef1); + (0x1ef3, 0x1ef3); + (0x1ef5, 0x1ef5); + (0x1ef7, 0x1ef7); + (0x1ef9, 0x1ef9); + (0x1efb, 0x1efb); + (0x1efd, 0x1efd); + (0x1eff, 0x1f07); + (0x1f10, 0x1f15); + (0x1f20, 0x1f27); + (0x1f30, 0x1f37); + (0x1f40, 0x1f45); + (0x1f50, 0x1f57); + (0x1f60, 0x1f67); + (0x1f70, 0x1f7d); + (0x1f80, 0x1f87); + (0x1f90, 0x1f97); + (0x1fa0, 0x1fa7); + (0x1fb0, 0x1fb4); + (0x1fb6, 0x1fb7); + (0x1fbe, 0x1fbe); + (0x1fc2, 0x1fc4); + (0x1fc6, 0x1fc7); + (0x1fd0, 0x1fd3); + (0x1fd6, 0x1fd7); + (0x1fe0, 0x1fe7); + (0x1ff2, 0x1ff4); + (0x1ff6, 0x1ff7); + (0x2071, 0x2071); + (0x207f, 0x207f); + (0x2090, 0x209c); + (0x210a, 0x210a); + (0x210e, 0x210f); + (0x2113, 0x2113); + (0x212f, 0x212f); + (0x2134, 0x2134); + (0x2139, 0x2139); + (0x213c, 0x213d); + (0x2146, 0x2149); + (0x214e, 0x214e); + (0x2170, 0x217f); + (0x2184, 0x2184); + (0x24d0, 0x24e9); + (0x2c30, 0x2c5f); + (0x2c61, 0x2c61); + (0x2c65, 0x2c66); + (0x2c68, 0x2c68); + (0x2c6a, 0x2c6a); + (0x2c6c, 0x2c6c); + (0x2c71, 0x2c71); + (0x2c73, 0x2c74); + (0x2c76, 0x2c7b); + (0x2c7c, 0x2c7d); + (0x2c81, 0x2c81); + (0x2c83, 0x2c83); + (0x2c85, 0x2c85); + (0x2c87, 0x2c87); + (0x2c89, 0x2c89); + (0x2c8b, 0x2c8b); + (0x2c8d, 0x2c8d); + (0x2c8f, 0x2c8f); + (0x2c91, 0x2c91); + (0x2c93, 0x2c93); + (0x2c95, 0x2c95); + (0x2c97, 0x2c97); + (0x2c99, 0x2c99); + (0x2c9b, 0x2c9b); + (0x2c9d, 0x2c9d); + (0x2c9f, 0x2c9f); + (0x2ca1, 0x2ca1); + (0x2ca3, 0x2ca3); + (0x2ca5, 0x2ca5); + (0x2ca7, 0x2ca7); + (0x2ca9, 0x2ca9); + (0x2cab, 0x2cab); + (0x2cad, 0x2cad); + (0x2caf, 0x2caf); + (0x2cb1, 0x2cb1); + (0x2cb3, 0x2cb3); + (0x2cb5, 0x2cb5); + (0x2cb7, 0x2cb7); + (0x2cb9, 0x2cb9); + (0x2cbb, 0x2cbb); + (0x2cbd, 0x2cbd); + (0x2cbf, 0x2cbf); + (0x2cc1, 0x2cc1); + (0x2cc3, 0x2cc3); + (0x2cc5, 0x2cc5); + (0x2cc7, 0x2cc7); + (0x2cc9, 0x2cc9); + (0x2ccb, 0x2ccb); + (0x2ccd, 0x2ccd); + (0x2ccf, 0x2ccf); + (0x2cd1, 0x2cd1); + (0x2cd3, 0x2cd3); + (0x2cd5, 0x2cd5); + (0x2cd7, 0x2cd7); + (0x2cd9, 0x2cd9); + (0x2cdb, 0x2cdb); + (0x2cdd, 0x2cdd); + (0x2cdf, 0x2cdf); + (0x2ce1, 0x2ce1); + (0x2ce3, 0x2ce4); + (0x2cec, 0x2cec); + (0x2cee, 0x2cee); + (0x2cf3, 0x2cf3); + (0x2d00, 0x2d25); + (0x2d27, 0x2d27); + (0x2d2d, 0x2d2d); + (0xa641, 0xa641); + (0xa643, 0xa643); + (0xa645, 0xa645); + (0xa647, 0xa647); + (0xa649, 0xa649); + (0xa64b, 0xa64b); + (0xa64d, 0xa64d); + (0xa64f, 0xa64f); + (0xa651, 0xa651); + (0xa653, 0xa653); + (0xa655, 0xa655); + (0xa657, 0xa657); + (0xa659, 0xa659); + (0xa65b, 0xa65b); + (0xa65d, 0xa65d); + (0xa65f, 0xa65f); + (0xa661, 0xa661); + (0xa663, 0xa663); + (0xa665, 0xa665); + (0xa667, 0xa667); + (0xa669, 0xa669); + (0xa66b, 0xa66b); + (0xa66d, 0xa66d); + (0xa681, 0xa681); + (0xa683, 0xa683); + (0xa685, 0xa685); + (0xa687, 0xa687); + (0xa689, 0xa689); + (0xa68b, 0xa68b); + (0xa68d, 0xa68d); + (0xa68f, 0xa68f); + (0xa691, 0xa691); + (0xa693, 0xa693); + (0xa695, 0xa695); + (0xa697, 0xa697); + (0xa699, 0xa699); + (0xa69b, 0xa69b); + (0xa69c, 0xa69d); + (0xa723, 0xa723); + (0xa725, 0xa725); + (0xa727, 0xa727); + (0xa729, 0xa729); + (0xa72b, 0xa72b); + (0xa72d, 0xa72d); + (0xa72f, 0xa731); + (0xa733, 0xa733); + (0xa735, 0xa735); + (0xa737, 0xa737); + (0xa739, 0xa739); + (0xa73b, 0xa73b); + (0xa73d, 0xa73d); + (0xa73f, 0xa73f); + (0xa741, 0xa741); + (0xa743, 0xa743); + (0xa745, 0xa745); + (0xa747, 0xa747); + (0xa749, 0xa749); + (0xa74b, 0xa74b); + (0xa74d, 0xa74d); + (0xa74f, 0xa74f); + (0xa751, 0xa751); + (0xa753, 0xa753); + (0xa755, 0xa755); + (0xa757, 0xa757); + (0xa759, 0xa759); + (0xa75b, 0xa75b); + (0xa75d, 0xa75d); + (0xa75f, 0xa75f); + (0xa761, 0xa761); + (0xa763, 0xa763); + (0xa765, 0xa765); + (0xa767, 0xa767); + (0xa769, 0xa769); + (0xa76b, 0xa76b); + (0xa76d, 0xa76d); + (0xa76f, 0xa76f); + (0xa770, 0xa770); + (0xa771, 0xa778); + (0xa77a, 0xa77a); + (0xa77c, 0xa77c); + (0xa77f, 0xa77f); + (0xa781, 0xa781); + (0xa783, 0xa783); + (0xa785, 0xa785); + (0xa787, 0xa787); + (0xa78c, 0xa78c); + (0xa78e, 0xa78e); + (0xa791, 0xa791); + (0xa793, 0xa795); + (0xa797, 0xa797); + (0xa799, 0xa799); + (0xa79b, 0xa79b); + (0xa79d, 0xa79d); + (0xa79f, 0xa79f); + (0xa7a1, 0xa7a1); + (0xa7a3, 0xa7a3); + (0xa7a5, 0xa7a5); + (0xa7a7, 0xa7a7); + (0xa7a9, 0xa7a9); + (0xa7af, 0xa7af); + (0xa7b5, 0xa7b5); + (0xa7b7, 0xa7b7); + (0xa7b9, 0xa7b9); + (0xa7bb, 0xa7bb); + (0xa7bd, 0xa7bd); + (0xa7bf, 0xa7bf); + (0xa7c1, 0xa7c1); + (0xa7c3, 0xa7c3); + (0xa7c8, 0xa7c8); + (0xa7ca, 0xa7ca); + (0xa7d1, 0xa7d1); + (0xa7d3, 0xa7d3); + (0xa7d5, 0xa7d5); + (0xa7d7, 0xa7d7); + (0xa7d9, 0xa7d9); + (0xa7f6, 0xa7f6); + (0xa7f8, 0xa7f9); + (0xa7fa, 0xa7fa); + (0xab30, 0xab5a); + (0xab5c, 0xab5f); + (0xab60, 0xab68); + (0xab70, 0xabbf); + (0xfb00, 0xfb06); + (0xfb13, 0xfb17); + (0xff41, 0xff5a); + (0x10428, 0x1044f); + (0x104d8, 0x104fb); + (0x10597, 0x105a1); + (0x105a3, 0x105b1); + (0x105b3, 0x105b9); + (0x105bb, 0x105bc); + (0x10780, 0x10780); + (0x10783, 0x10785); + (0x10787, 0x107b0); + (0x107b2, 0x107ba); + (0x10cc0, 0x10cf2); + (0x118c0, 0x118df); + (0x16e60, 0x16e7f); + (0x1d41a, 0x1d433); + (0x1d44e, 0x1d454); + (0x1d456, 0x1d467); + (0x1d482, 0x1d49b); + (0x1d4b6, 0x1d4b9); + (0x1d4bb, 0x1d4bb); + (0x1d4bd, 0x1d4c3); + (0x1d4c5, 0x1d4cf); + (0x1d4ea, 0x1d503); + (0x1d51e, 0x1d537); + (0x1d552, 0x1d56b); + (0x1d586, 0x1d59f); + (0x1d5ba, 0x1d5d3); + (0x1d5ee, 0x1d607); + (0x1d622, 0x1d63b); + (0x1d656, 0x1d66f); + (0x1d68a, 0x1d6a5); + (0x1d6c2, 0x1d6da); + (0x1d6dc, 0x1d6e1); + (0x1d6fc, 0x1d714); + (0x1d716, 0x1d71b); + (0x1d736, 0x1d74e); + (0x1d750, 0x1d755); + (0x1d770, 0x1d788); + (0x1d78a, 0x1d78f); + (0x1d7aa, 0x1d7c2); + (0x1d7c4, 0x1d7c9); + (0x1d7cb, 0x1d7cb); + (0x1df00, 0x1df09); + (0x1df0b, 0x1df1e); + (0x1e922, 0x1e943); + ] let math = - [0x2b, 0x2b; 0x3c, 0x3e; 0x5e, 0x5e; 0x7c, 0x7c; 0x7e, 0x7e; - 0xac, 0xac; 0xb1, 0xb1; 0xd7, 0xd7; 0xf7, 0xf7; 0x3d0, 0x3d2; - 0x3d5, 0x3d5; 0x3f0, 0x3f1; 0x3f4, 0x3f5; 0x3f6, 0x3f6; 0x606, 0x608; - 0x2016, 0x2016; 0x2032, 0x2034; 0x2040, 0x2040; 0x2044, 0x2044; 0x2052, 0x2052; - 0x2061, 0x2064; 0x207a, 0x207c; 0x207d, 0x207d; 0x207e, 0x207e; 0x208a, 0x208c; - 0x208d, 0x208d; 0x208e, 0x208e; 0x20d0, 0x20dc; 0x20e1, 0x20e1; 0x20e5, 0x20e6; - 0x20eb, 0x20ef; 0x2102, 0x2102; 0x2107, 0x2107; 0x210a, 0x2113; 0x2115, 0x2115; - 0x2118, 0x2118; 0x2119, 0x211d; 0x2124, 0x2124; 0x2128, 0x2128; 0x2129, 0x2129; - 0x212c, 0x212d; 0x212f, 0x2131; 0x2133, 0x2134; 0x2135, 0x2138; 0x213c, 0x213f; - 0x2140, 0x2144; 0x2145, 0x2149; 0x214b, 0x214b; 0x2190, 0x2194; 0x2195, 0x2199; - 0x219a, 0x219b; 0x219c, 0x219f; 0x21a0, 0x21a0; 0x21a1, 0x21a2; 0x21a3, 0x21a3; - 0x21a4, 0x21a5; 0x21a6, 0x21a6; 0x21a7, 0x21a7; 0x21a9, 0x21ad; 0x21ae, 0x21ae; - 0x21b0, 0x21b1; 0x21b6, 0x21b7; 0x21bc, 0x21cd; 0x21ce, 0x21cf; 0x21d0, 0x21d1; - 0x21d2, 0x21d2; 0x21d3, 0x21d3; 0x21d4, 0x21d4; 0x21d5, 0x21db; 0x21dd, 0x21dd; - 0x21e4, 0x21e5; 0x21f4, 0x22ff; 0x2308, 0x2308; 0x2309, 0x2309; 0x230a, 0x230a; - 0x230b, 0x230b; 0x2320, 0x2321; 0x237c, 0x237c; 0x239b, 0x23b3; 0x23b4, 0x23b5; - 0x23b7, 0x23b7; 0x23d0, 0x23d0; 0x23dc, 0x23e1; 0x23e2, 0x23e2; 0x25a0, 0x25a1; - 0x25ae, 0x25b6; 0x25b7, 0x25b7; 0x25bc, 0x25c0; 0x25c1, 0x25c1; 0x25c6, 0x25c7; - 0x25ca, 0x25cb; 0x25cf, 0x25d3; 0x25e2, 0x25e2; 0x25e4, 0x25e4; 0x25e7, 0x25ec; - 0x25f8, 0x25ff; 0x2605, 0x2606; 0x2640, 0x2640; 0x2642, 0x2642; 0x2660, 0x2663; - 0x266d, 0x266e; 0x266f, 0x266f; 0x27c0, 0x27c4; 0x27c5, 0x27c5; 0x27c6, 0x27c6; - 0x27c7, 0x27e5; 0x27e6, 0x27e6; 0x27e7, 0x27e7; 0x27e8, 0x27e8; 0x27e9, 0x27e9; - 0x27ea, 0x27ea; 0x27eb, 0x27eb; 0x27ec, 0x27ec; 0x27ed, 0x27ed; 0x27ee, 0x27ee; - 0x27ef, 0x27ef; 0x27f0, 0x27ff; 0x2900, 0x2982; 0x2983, 0x2983; 0x2984, 0x2984; - 0x2985, 0x2985; 0x2986, 0x2986; 0x2987, 0x2987; 0x2988, 0x2988; 0x2989, 0x2989; - 0x298a, 0x298a; 0x298b, 0x298b; 0x298c, 0x298c; 0x298d, 0x298d; 0x298e, 0x298e; - 0x298f, 0x298f; 0x2990, 0x2990; 0x2991, 0x2991; 0x2992, 0x2992; 0x2993, 0x2993; - 0x2994, 0x2994; 0x2995, 0x2995; 0x2996, 0x2996; 0x2997, 0x2997; 0x2998, 0x2998; - 0x2999, 0x29d7; 0x29d8, 0x29d8; 0x29d9, 0x29d9; 0x29da, 0x29da; 0x29db, 0x29db; - 0x29dc, 0x29fb; 0x29fc, 0x29fc; 0x29fd, 0x29fd; 0x29fe, 0x2aff; 0x2b30, 0x2b44; - 0x2b47, 0x2b4c; 0xfb29, 0xfb29; 0xfe61, 0xfe61; 0xfe62, 0xfe62; 0xfe63, 0xfe63; - 0xfe64, 0xfe66; 0xfe68, 0xfe68; 0xff0b, 0xff0b; 0xff1c, 0xff1e; 0xff3c, 0xff3c; - 0xff3e, 0xff3e; 0xff5c, 0xff5c; 0xff5e, 0xff5e; 0xffe2, 0xffe2; 0xffe9, 0xffec; - 0x1d400, 0x1d454; 0x1d456, 0x1d49c; 0x1d49e, 0x1d49f; 0x1d4a2, 0x1d4a2; 0x1d4a5, 0x1d4a6; - 0x1d4a9, 0x1d4ac; 0x1d4ae, 0x1d4b9; 0x1d4bb, 0x1d4bb; 0x1d4bd, 0x1d4c3; 0x1d4c5, 0x1d505; - 0x1d507, 0x1d50a; 0x1d50d, 0x1d514; 0x1d516, 0x1d51c; 0x1d51e, 0x1d539; 0x1d53b, 0x1d53e; - 0x1d540, 0x1d544; 0x1d546, 0x1d546; 0x1d54a, 0x1d550; 0x1d552, 0x1d6a5; 0x1d6a8, 0x1d6c0; - 0x1d6c1, 0x1d6c1; 0x1d6c2, 0x1d6da; 0x1d6db, 0x1d6db; 0x1d6dc, 0x1d6fa; 0x1d6fb, 0x1d6fb; - 0x1d6fc, 0x1d714; 0x1d715, 0x1d715; 0x1d716, 0x1d734; 0x1d735, 0x1d735; 0x1d736, 0x1d74e; - 0x1d74f, 0x1d74f; 0x1d750, 0x1d76e; 0x1d76f, 0x1d76f; 0x1d770, 0x1d788; 0x1d789, 0x1d789; - 0x1d78a, 0x1d7a8; 0x1d7a9, 0x1d7a9; 0x1d7aa, 0x1d7c2; 0x1d7c3, 0x1d7c3; 0x1d7c4, 0x1d7cb; - 0x1d7ce, 0x1d7ff; 0x1ee00, 0x1ee03; 0x1ee05, 0x1ee1f; 0x1ee21, 0x1ee22; 0x1ee24, 0x1ee24; - 0x1ee27, 0x1ee27; 0x1ee29, 0x1ee32; 0x1ee34, 0x1ee37; 0x1ee39, 0x1ee39; 0x1ee3b, 0x1ee3b; - 0x1ee42, 0x1ee42; 0x1ee47, 0x1ee47; 0x1ee49, 0x1ee49; 0x1ee4b, 0x1ee4b; 0x1ee4d, 0x1ee4f; - 0x1ee51, 0x1ee52; 0x1ee54, 0x1ee54; 0x1ee57, 0x1ee57; 0x1ee59, 0x1ee59; 0x1ee5b, 0x1ee5b; - 0x1ee5d, 0x1ee5d; 0x1ee5f, 0x1ee5f; 0x1ee61, 0x1ee62; 0x1ee64, 0x1ee64; 0x1ee67, 0x1ee6a; - 0x1ee6c, 0x1ee72; 0x1ee74, 0x1ee77; 0x1ee79, 0x1ee7c; 0x1ee7e, 0x1ee7e; 0x1ee80, 0x1ee89; - 0x1eef0, 0x1eef1; 0x1eeab, 0x1eebb; 0x1eea5, 0x1eea9; 0x1eea1, 0x1eea3; 0x1ee8b, 0x1ee9b] + [ + (0x2b, 0x2b); + (0x3c, 0x3e); + (0x5e, 0x5e); + (0x7c, 0x7c); + (0x7e, 0x7e); + (0xac, 0xac); + (0xb1, 0xb1); + (0xd7, 0xd7); + (0xf7, 0xf7); + (0x3d0, 0x3d2); + (0x3d5, 0x3d5); + (0x3f0, 0x3f1); + (0x3f4, 0x3f5); + (0x3f6, 0x3f6); + (0x606, 0x608); + (0x2016, 0x2016); + (0x2032, 0x2034); + (0x2040, 0x2040); + (0x2044, 0x2044); + (0x2052, 0x2052); + (0x2061, 0x2064); + (0x207a, 0x207c); + (0x207d, 0x207d); + (0x207e, 0x207e); + (0x208a, 0x208c); + (0x208d, 0x208d); + (0x208e, 0x208e); + (0x20d0, 0x20dc); + (0x20e1, 0x20e1); + (0x20e5, 0x20e6); + (0x20eb, 0x20ef); + (0x2102, 0x2102); + (0x2107, 0x2107); + (0x210a, 0x2113); + (0x2115, 0x2115); + (0x2118, 0x2118); + (0x2119, 0x211d); + (0x2124, 0x2124); + (0x2128, 0x2128); + (0x2129, 0x2129); + (0x212c, 0x212d); + (0x212f, 0x2131); + (0x2133, 0x2134); + (0x2135, 0x2138); + (0x213c, 0x213f); + (0x2140, 0x2144); + (0x2145, 0x2149); + (0x214b, 0x214b); + (0x2190, 0x2194); + (0x2195, 0x2199); + (0x219a, 0x219b); + (0x219c, 0x219f); + (0x21a0, 0x21a0); + (0x21a1, 0x21a2); + (0x21a3, 0x21a3); + (0x21a4, 0x21a5); + (0x21a6, 0x21a6); + (0x21a7, 0x21a7); + (0x21a9, 0x21ad); + (0x21ae, 0x21ae); + (0x21b0, 0x21b1); + (0x21b6, 0x21b7); + (0x21bc, 0x21cd); + (0x21ce, 0x21cf); + (0x21d0, 0x21d1); + (0x21d2, 0x21d2); + (0x21d3, 0x21d3); + (0x21d4, 0x21d4); + (0x21d5, 0x21db); + (0x21dd, 0x21dd); + (0x21e4, 0x21e5); + (0x21f4, 0x22ff); + (0x2308, 0x2308); + (0x2309, 0x2309); + (0x230a, 0x230a); + (0x230b, 0x230b); + (0x2320, 0x2321); + (0x237c, 0x237c); + (0x239b, 0x23b3); + (0x23b4, 0x23b5); + (0x23b7, 0x23b7); + (0x23d0, 0x23d0); + (0x23dc, 0x23e1); + (0x23e2, 0x23e2); + (0x25a0, 0x25a1); + (0x25ae, 0x25b6); + (0x25b7, 0x25b7); + (0x25bc, 0x25c0); + (0x25c1, 0x25c1); + (0x25c6, 0x25c7); + (0x25ca, 0x25cb); + (0x25cf, 0x25d3); + (0x25e2, 0x25e2); + (0x25e4, 0x25e4); + (0x25e7, 0x25ec); + (0x25f8, 0x25ff); + (0x2605, 0x2606); + (0x2640, 0x2640); + (0x2642, 0x2642); + (0x2660, 0x2663); + (0x266d, 0x266e); + (0x266f, 0x266f); + (0x27c0, 0x27c4); + (0x27c5, 0x27c5); + (0x27c6, 0x27c6); + (0x27c7, 0x27e5); + (0x27e6, 0x27e6); + (0x27e7, 0x27e7); + (0x27e8, 0x27e8); + (0x27e9, 0x27e9); + (0x27ea, 0x27ea); + (0x27eb, 0x27eb); + (0x27ec, 0x27ec); + (0x27ed, 0x27ed); + (0x27ee, 0x27ee); + (0x27ef, 0x27ef); + (0x27f0, 0x27ff); + (0x2900, 0x2982); + (0x2983, 0x2983); + (0x2984, 0x2984); + (0x2985, 0x2985); + (0x2986, 0x2986); + (0x2987, 0x2987); + (0x2988, 0x2988); + (0x2989, 0x2989); + (0x298a, 0x298a); + (0x298b, 0x298b); + (0x298c, 0x298c); + (0x298d, 0x298d); + (0x298e, 0x298e); + (0x298f, 0x298f); + (0x2990, 0x2990); + (0x2991, 0x2991); + (0x2992, 0x2992); + (0x2993, 0x2993); + (0x2994, 0x2994); + (0x2995, 0x2995); + (0x2996, 0x2996); + (0x2997, 0x2997); + (0x2998, 0x2998); + (0x2999, 0x29d7); + (0x29d8, 0x29d8); + (0x29d9, 0x29d9); + (0x29da, 0x29da); + (0x29db, 0x29db); + (0x29dc, 0x29fb); + (0x29fc, 0x29fc); + (0x29fd, 0x29fd); + (0x29fe, 0x2aff); + (0x2b30, 0x2b44); + (0x2b47, 0x2b4c); + (0xfb29, 0xfb29); + (0xfe61, 0xfe61); + (0xfe62, 0xfe62); + (0xfe63, 0xfe63); + (0xfe64, 0xfe66); + (0xfe68, 0xfe68); + (0xff0b, 0xff0b); + (0xff1c, 0xff1e); + (0xff3c, 0xff3c); + (0xff3e, 0xff3e); + (0xff5c, 0xff5c); + (0xff5e, 0xff5e); + (0xffe2, 0xffe2); + (0xffe9, 0xffec); + (0x1d400, 0x1d454); + (0x1d456, 0x1d49c); + (0x1d49e, 0x1d49f); + (0x1d4a2, 0x1d4a2); + (0x1d4a5, 0x1d4a6); + (0x1d4a9, 0x1d4ac); + (0x1d4ae, 0x1d4b9); + (0x1d4bb, 0x1d4bb); + (0x1d4bd, 0x1d4c3); + (0x1d4c5, 0x1d505); + (0x1d507, 0x1d50a); + (0x1d50d, 0x1d514); + (0x1d516, 0x1d51c); + (0x1d51e, 0x1d539); + (0x1d53b, 0x1d53e); + (0x1d540, 0x1d544); + (0x1d546, 0x1d546); + (0x1d54a, 0x1d550); + (0x1d552, 0x1d6a5); + (0x1d6a8, 0x1d6c0); + (0x1d6c1, 0x1d6c1); + (0x1d6c2, 0x1d6da); + (0x1d6db, 0x1d6db); + (0x1d6dc, 0x1d6fa); + (0x1d6fb, 0x1d6fb); + (0x1d6fc, 0x1d714); + (0x1d715, 0x1d715); + (0x1d716, 0x1d734); + (0x1d735, 0x1d735); + (0x1d736, 0x1d74e); + (0x1d74f, 0x1d74f); + (0x1d750, 0x1d76e); + (0x1d76f, 0x1d76f); + (0x1d770, 0x1d788); + (0x1d789, 0x1d789); + (0x1d78a, 0x1d7a8); + (0x1d7a9, 0x1d7a9); + (0x1d7aa, 0x1d7c2); + (0x1d7c3, 0x1d7c3); + (0x1d7c4, 0x1d7cb); + (0x1d7ce, 0x1d7ff); + (0x1ee00, 0x1ee03); + (0x1ee05, 0x1ee1f); + (0x1ee21, 0x1ee22); + (0x1ee24, 0x1ee24); + (0x1ee27, 0x1ee27); + (0x1ee29, 0x1ee32); + (0x1ee34, 0x1ee37); + (0x1ee39, 0x1ee39); + (0x1ee3b, 0x1ee3b); + (0x1ee42, 0x1ee42); + (0x1ee47, 0x1ee47); + (0x1ee49, 0x1ee49); + (0x1ee4b, 0x1ee4b); + (0x1ee4d, 0x1ee4f); + (0x1ee51, 0x1ee52); + (0x1ee54, 0x1ee54); + (0x1ee57, 0x1ee57); + (0x1ee59, 0x1ee59); + (0x1ee5b, 0x1ee5b); + (0x1ee5d, 0x1ee5d); + (0x1ee5f, 0x1ee5f); + (0x1ee61, 0x1ee62); + (0x1ee64, 0x1ee64); + (0x1ee67, 0x1ee6a); + (0x1ee6c, 0x1ee72); + (0x1ee74, 0x1ee77); + (0x1ee79, 0x1ee7c); + (0x1ee7e, 0x1ee7e); + (0x1ee80, 0x1ee89); + (0x1eef0, 0x1eef1); + (0x1eeab, 0x1eebb); + (0x1eea5, 0x1eea9); + (0x1eea1, 0x1eea3); + (0x1ee8b, 0x1ee9b); + ] let other_alphabetic = - [0x345, 0x345; 0x5b0, 0x5bd; 0x5bf, 0x5bf; 0x5c1, 0x5c2; 0x5c4, 0x5c5; - 0x5c7, 0x5c7; 0x610, 0x61a; 0x64b, 0x657; 0x659, 0x65f; 0x670, 0x670; - 0x6d6, 0x6dc; 0x6e1, 0x6e4; 0x6e7, 0x6e8; 0x6ed, 0x6ed; 0x711, 0x711; - 0x730, 0x73f; 0x7a6, 0x7b0; 0x816, 0x817; 0x81b, 0x823; 0x825, 0x827; - 0x829, 0x82c; 0x8d4, 0x8df; 0x8e3, 0x8e9; 0x8f0, 0x902; 0x903, 0x903; - 0x93a, 0x93a; 0x93b, 0x93b; 0x93e, 0x940; 0x941, 0x948; 0x949, 0x94c; - 0x94e, 0x94f; 0x955, 0x957; 0x962, 0x963; 0x981, 0x981; 0x982, 0x983; - 0x9be, 0x9c0; 0x9c1, 0x9c4; 0x9c7, 0x9c8; 0x9cb, 0x9cc; 0x9d7, 0x9d7; - 0x9e2, 0x9e3; 0xa01, 0xa02; 0xa03, 0xa03; 0xa3e, 0xa40; 0xa41, 0xa42; - 0xa47, 0xa48; 0xa4b, 0xa4c; 0xa51, 0xa51; 0xa70, 0xa71; 0xa75, 0xa75; - 0xa81, 0xa82; 0xa83, 0xa83; 0xabe, 0xac0; 0xac1, 0xac5; 0xac7, 0xac8; - 0xac9, 0xac9; 0xacb, 0xacc; 0xae2, 0xae3; 0xafa, 0xafc; 0xb01, 0xb01; - 0xb02, 0xb03; 0xb3e, 0xb3e; 0xb3f, 0xb3f; 0xb40, 0xb40; 0xb41, 0xb44; - 0xb47, 0xb48; 0xb4b, 0xb4c; 0xb56, 0xb56; 0xb57, 0xb57; 0xb62, 0xb63; - 0xb82, 0xb82; 0xbbe, 0xbbf; 0xbc0, 0xbc0; 0xbc1, 0xbc2; 0xbc6, 0xbc8; - 0xbca, 0xbcc; 0xbd7, 0xbd7; 0xc00, 0xc00; 0xc01, 0xc03; 0xc3e, 0xc40; - 0xc41, 0xc44; 0xc46, 0xc48; 0xc4a, 0xc4c; 0xc55, 0xc56; 0xc62, 0xc63; - 0xc81, 0xc81; 0xc82, 0xc83; 0xcbe, 0xcbe; 0xcbf, 0xcbf; 0xcc0, 0xcc4; - 0xcc6, 0xcc6; 0xcc7, 0xcc8; 0xcca, 0xccb; 0xccc, 0xccc; 0xcd5, 0xcd6; - 0xce2, 0xce3; 0xd00, 0xd01; 0xd02, 0xd03; 0xd3e, 0xd40; 0xd41, 0xd44; - 0xd46, 0xd48; 0xd4a, 0xd4c; 0xd57, 0xd57; 0xd62, 0xd63; 0xd81, 0xd81; - 0xd82, 0xd83; 0xdcf, 0xdd1; 0xdd2, 0xdd4; 0xdd6, 0xdd6; 0xdd8, 0xddf; - 0xdf2, 0xdf3; 0xe31, 0xe31; 0xe34, 0xe3a; 0xe4d, 0xe4d; 0xeb1, 0xeb1; - 0xeb4, 0xeb9; 0xebb, 0xebc; 0xecd, 0xecd; 0xf71, 0xf7e; 0xf7f, 0xf7f; - 0xf80, 0xf81; 0xf8d, 0xf97; 0xf99, 0xfbc; 0x102b, 0x102c; 0x102d, 0x1030; - 0x1031, 0x1031; 0x1032, 0x1036; 0x1038, 0x1038; 0x103b, 0x103c; 0x103d, 0x103e; - 0x1056, 0x1057; 0x1058, 0x1059; 0x105e, 0x1060; 0x1062, 0x1064; 0x1067, 0x106d; - 0x1071, 0x1074; 0x1082, 0x1082; 0x1083, 0x1084; 0x1085, 0x1086; 0x1087, 0x108c; - 0x108d, 0x108d; 0x108f, 0x108f; 0x109a, 0x109c; 0x109d, 0x109d; 0x1712, 0x1713; - 0x1732, 0x1733; 0x1752, 0x1753; 0x1772, 0x1773; 0x17b6, 0x17b6; 0x17b7, 0x17bd; - 0x17be, 0x17c5; 0x17c6, 0x17c6; 0x17c7, 0x17c8; 0x1885, 0x1886; 0x18a9, 0x18a9; - 0x1920, 0x1922; 0x1923, 0x1926; 0x1927, 0x1928; 0x1929, 0x192b; 0x1930, 0x1931; - 0x1932, 0x1932; 0x1933, 0x1938; 0x1a17, 0x1a18; 0x1a19, 0x1a1a; 0x1a1b, 0x1a1b; - 0x1a55, 0x1a55; 0x1a56, 0x1a56; 0x1a57, 0x1a57; 0x1a58, 0x1a5e; 0x1a61, 0x1a61; - 0x1a62, 0x1a62; 0x1a63, 0x1a64; 0x1a65, 0x1a6c; 0x1a6d, 0x1a72; 0x1a73, 0x1a74; - 0x1abf, 0x1ac0; 0x1acc, 0x1ace; 0x1b00, 0x1b03; 0x1b04, 0x1b04; 0x1b35, 0x1b35; - 0x1b36, 0x1b3a; 0x1b3b, 0x1b3b; 0x1b3c, 0x1b3c; 0x1b3d, 0x1b41; 0x1b42, 0x1b42; - 0x1b43, 0x1b43; 0x1b80, 0x1b81; 0x1b82, 0x1b82; 0x1ba1, 0x1ba1; 0x1ba2, 0x1ba5; - 0x1ba6, 0x1ba7; 0x1ba8, 0x1ba9; 0x1bac, 0x1bad; 0x1be7, 0x1be7; 0x1be8, 0x1be9; - 0x1bea, 0x1bec; 0x1bed, 0x1bed; 0x1bee, 0x1bee; 0x1bef, 0x1bf1; 0x1c24, 0x1c2b; - 0x1c2c, 0x1c33; 0x1c34, 0x1c35; 0x1c36, 0x1c36; 0x1de7, 0x1df4; 0x24b6, 0x24e9; - 0x2de0, 0x2dff; 0xa674, 0xa67b; 0xa69e, 0xa69f; 0xa802, 0xa802; 0xa80b, 0xa80b; - 0xa823, 0xa824; 0xa825, 0xa826; 0xa827, 0xa827; 0xa880, 0xa881; 0xa8b4, 0xa8c3; - 0xa8c5, 0xa8c5; 0xa8ff, 0xa8ff; 0xa926, 0xa92a; 0xa947, 0xa951; 0xa952, 0xa952; - 0xa980, 0xa982; 0xa983, 0xa983; 0xa9b4, 0xa9b5; 0xa9b6, 0xa9b9; 0xa9ba, 0xa9bb; - 0xa9bc, 0xa9bd; 0xa9be, 0xa9bf; 0xa9e5, 0xa9e5; 0xaa29, 0xaa2e; 0xaa2f, 0xaa30; - 0xaa31, 0xaa32; 0xaa33, 0xaa34; 0xaa35, 0xaa36; 0xaa43, 0xaa43; 0xaa4c, 0xaa4c; - 0xaa4d, 0xaa4d; 0xaa7b, 0xaa7b; 0xaa7c, 0xaa7c; 0xaa7d, 0xaa7d; 0xaab0, 0xaab0; - 0xaab2, 0xaab4; 0xaab7, 0xaab8; 0xaabe, 0xaabe; 0xaaeb, 0xaaeb; 0xaaec, 0xaaed; - 0xaaee, 0xaaef; 0xaaf5, 0xaaf5; 0xabe3, 0xabe4; 0xabe5, 0xabe5; 0xabe6, 0xabe7; - 0xabe8, 0xabe8; 0xabe9, 0xabea; 0xfb1e, 0xfb1e; 0x10376, 0x1037a; 0x10a01, 0x10a03; - 0x10a05, 0x10a06; 0x10a0c, 0x10a0f; 0x10d24, 0x10d27; 0x10eab, 0x10eac; 0x11000, 0x11000; - 0x11001, 0x11001; 0x11002, 0x11002; 0x11038, 0x11045; 0x11073, 0x11074; 0x11082, 0x11082; - 0x110b0, 0x110b2; 0x110b3, 0x110b6; 0x110b7, 0x110b8; 0x110c2, 0x110c2; 0x11100, 0x11102; - 0x11127, 0x1112b; 0x1112c, 0x1112c; 0x1112d, 0x11132; 0x11145, 0x11146; 0x11180, 0x11181; - 0x11182, 0x11182; 0x111b3, 0x111b5; 0x111b6, 0x111be; 0x111bf, 0x111bf; 0x111ce, 0x111ce; - 0x111cf, 0x111cf; 0x1122c, 0x1122e; 0x1122f, 0x11231; 0x11232, 0x11233; 0x11234, 0x11234; - 0x11237, 0x11237; 0x1123e, 0x1123e; 0x112df, 0x112df; 0x112e0, 0x112e2; 0x112e3, 0x112e8; - 0x11300, 0x11301; 0x11302, 0x11303; 0x1133e, 0x1133f; 0x11340, 0x11340; 0x11341, 0x11344; - 0x11347, 0x11348; 0x1134b, 0x1134c; 0x11357, 0x11357; 0x11362, 0x11363; 0x11435, 0x11437; - 0x11438, 0x1143f; 0x11440, 0x11441; 0x11443, 0x11444; 0x11445, 0x11445; 0x114b0, 0x114b2; - 0x114b3, 0x114b8; 0x114b9, 0x114b9; 0x114ba, 0x114ba; 0x114bb, 0x114be; 0x114bf, 0x114c0; - 0x114c1, 0x114c1; 0x115af, 0x115b1; 0x115b2, 0x115b5; 0x115b8, 0x115bb; 0x115bc, 0x115bd; - 0x115be, 0x115be; 0x115dc, 0x115dd; 0x11630, 0x11632; 0x11633, 0x1163a; 0x1163b, 0x1163c; - 0x1163d, 0x1163d; 0x1163e, 0x1163e; 0x11640, 0x11640; 0x116ab, 0x116ab; 0x116ac, 0x116ac; - 0x116ad, 0x116ad; 0x116ae, 0x116af; 0x116b0, 0x116b5; 0x1171d, 0x1171f; 0x11720, 0x11721; - 0x11722, 0x11725; 0x11726, 0x11726; 0x11727, 0x1172a; 0x1182c, 0x1182e; 0x1182f, 0x11837; - 0x11838, 0x11838; 0x11930, 0x11935; 0x11937, 0x11938; 0x1193b, 0x1193c; 0x11940, 0x11940; - 0x11942, 0x11942; 0x119d1, 0x119d3; 0x119d4, 0x119d7; 0x119da, 0x119db; 0x119dc, 0x119df; - 0x119e4, 0x119e4; 0x11a01, 0x11a0a; 0x11a35, 0x11a38; 0x11a39, 0x11a39; 0x11a3b, 0x11a3e; - 0x11a51, 0x11a56; 0x11a57, 0x11a58; 0x11a59, 0x11a5b; 0x11a8a, 0x11a96; 0x11a97, 0x11a97; - 0x11c2f, 0x11c2f; 0x11c30, 0x11c36; 0x11c38, 0x11c3d; 0x11c3e, 0x11c3e; 0x11c92, 0x11ca7; - 0x11ca9, 0x11ca9; 0x11caa, 0x11cb0; 0x11cb1, 0x11cb1; 0x11cb2, 0x11cb3; 0x11cb4, 0x11cb4; - 0x11cb5, 0x11cb6; 0x11d31, 0x11d36; 0x11d3a, 0x11d3a; 0x11d3c, 0x11d3d; 0x11d3f, 0x11d41; - 0x11d43, 0x11d43; 0x11d47, 0x11d47; 0x11d8a, 0x11d8e; 0x11d90, 0x11d91; 0x11d93, 0x11d94; - 0x11d95, 0x11d95; 0x11d96, 0x11d96; 0x11ef3, 0x11ef4; 0x11ef5, 0x11ef6; 0x16f4f, 0x16f4f; - 0x16f51, 0x16f87; 0x16f8f, 0x16f92; 0x16ff0, 0x16ff1; 0x1bc9e, 0x1bc9e; 0x1e000, 0x1e006; - 0x1e008, 0x1e018; 0x1e01b, 0x1e021; 0x1e023, 0x1e024; 0x1e026, 0x1e02a; 0x1e947, 0x1e947; - 0x1f170, 0x1f189; 0x1f150, 0x1f169; 0x1f130, 0x1f149] + [ + (0x345, 0x345); + (0x5b0, 0x5bd); + (0x5bf, 0x5bf); + (0x5c1, 0x5c2); + (0x5c4, 0x5c5); + (0x5c7, 0x5c7); + (0x610, 0x61a); + (0x64b, 0x657); + (0x659, 0x65f); + (0x670, 0x670); + (0x6d6, 0x6dc); + (0x6e1, 0x6e4); + (0x6e7, 0x6e8); + (0x6ed, 0x6ed); + (0x711, 0x711); + (0x730, 0x73f); + (0x7a6, 0x7b0); + (0x816, 0x817); + (0x81b, 0x823); + (0x825, 0x827); + (0x829, 0x82c); + (0x8d4, 0x8df); + (0x8e3, 0x8e9); + (0x8f0, 0x902); + (0x903, 0x903); + (0x93a, 0x93a); + (0x93b, 0x93b); + (0x93e, 0x940); + (0x941, 0x948); + (0x949, 0x94c); + (0x94e, 0x94f); + (0x955, 0x957); + (0x962, 0x963); + (0x981, 0x981); + (0x982, 0x983); + (0x9be, 0x9c0); + (0x9c1, 0x9c4); + (0x9c7, 0x9c8); + (0x9cb, 0x9cc); + (0x9d7, 0x9d7); + (0x9e2, 0x9e3); + (0xa01, 0xa02); + (0xa03, 0xa03); + (0xa3e, 0xa40); + (0xa41, 0xa42); + (0xa47, 0xa48); + (0xa4b, 0xa4c); + (0xa51, 0xa51); + (0xa70, 0xa71); + (0xa75, 0xa75); + (0xa81, 0xa82); + (0xa83, 0xa83); + (0xabe, 0xac0); + (0xac1, 0xac5); + (0xac7, 0xac8); + (0xac9, 0xac9); + (0xacb, 0xacc); + (0xae2, 0xae3); + (0xafa, 0xafc); + (0xb01, 0xb01); + (0xb02, 0xb03); + (0xb3e, 0xb3e); + (0xb3f, 0xb3f); + (0xb40, 0xb40); + (0xb41, 0xb44); + (0xb47, 0xb48); + (0xb4b, 0xb4c); + (0xb56, 0xb56); + (0xb57, 0xb57); + (0xb62, 0xb63); + (0xb82, 0xb82); + (0xbbe, 0xbbf); + (0xbc0, 0xbc0); + (0xbc1, 0xbc2); + (0xbc6, 0xbc8); + (0xbca, 0xbcc); + (0xbd7, 0xbd7); + (0xc00, 0xc00); + (0xc01, 0xc03); + (0xc3e, 0xc40); + (0xc41, 0xc44); + (0xc46, 0xc48); + (0xc4a, 0xc4c); + (0xc55, 0xc56); + (0xc62, 0xc63); + (0xc81, 0xc81); + (0xc82, 0xc83); + (0xcbe, 0xcbe); + (0xcbf, 0xcbf); + (0xcc0, 0xcc4); + (0xcc6, 0xcc6); + (0xcc7, 0xcc8); + (0xcca, 0xccb); + (0xccc, 0xccc); + (0xcd5, 0xcd6); + (0xce2, 0xce3); + (0xd00, 0xd01); + (0xd02, 0xd03); + (0xd3e, 0xd40); + (0xd41, 0xd44); + (0xd46, 0xd48); + (0xd4a, 0xd4c); + (0xd57, 0xd57); + (0xd62, 0xd63); + (0xd81, 0xd81); + (0xd82, 0xd83); + (0xdcf, 0xdd1); + (0xdd2, 0xdd4); + (0xdd6, 0xdd6); + (0xdd8, 0xddf); + (0xdf2, 0xdf3); + (0xe31, 0xe31); + (0xe34, 0xe3a); + (0xe4d, 0xe4d); + (0xeb1, 0xeb1); + (0xeb4, 0xeb9); + (0xebb, 0xebc); + (0xecd, 0xecd); + (0xf71, 0xf7e); + (0xf7f, 0xf7f); + (0xf80, 0xf81); + (0xf8d, 0xf97); + (0xf99, 0xfbc); + (0x102b, 0x102c); + (0x102d, 0x1030); + (0x1031, 0x1031); + (0x1032, 0x1036); + (0x1038, 0x1038); + (0x103b, 0x103c); + (0x103d, 0x103e); + (0x1056, 0x1057); + (0x1058, 0x1059); + (0x105e, 0x1060); + (0x1062, 0x1064); + (0x1067, 0x106d); + (0x1071, 0x1074); + (0x1082, 0x1082); + (0x1083, 0x1084); + (0x1085, 0x1086); + (0x1087, 0x108c); + (0x108d, 0x108d); + (0x108f, 0x108f); + (0x109a, 0x109c); + (0x109d, 0x109d); + (0x1712, 0x1713); + (0x1732, 0x1733); + (0x1752, 0x1753); + (0x1772, 0x1773); + (0x17b6, 0x17b6); + (0x17b7, 0x17bd); + (0x17be, 0x17c5); + (0x17c6, 0x17c6); + (0x17c7, 0x17c8); + (0x1885, 0x1886); + (0x18a9, 0x18a9); + (0x1920, 0x1922); + (0x1923, 0x1926); + (0x1927, 0x1928); + (0x1929, 0x192b); + (0x1930, 0x1931); + (0x1932, 0x1932); + (0x1933, 0x1938); + (0x1a17, 0x1a18); + (0x1a19, 0x1a1a); + (0x1a1b, 0x1a1b); + (0x1a55, 0x1a55); + (0x1a56, 0x1a56); + (0x1a57, 0x1a57); + (0x1a58, 0x1a5e); + (0x1a61, 0x1a61); + (0x1a62, 0x1a62); + (0x1a63, 0x1a64); + (0x1a65, 0x1a6c); + (0x1a6d, 0x1a72); + (0x1a73, 0x1a74); + (0x1abf, 0x1ac0); + (0x1acc, 0x1ace); + (0x1b00, 0x1b03); + (0x1b04, 0x1b04); + (0x1b35, 0x1b35); + (0x1b36, 0x1b3a); + (0x1b3b, 0x1b3b); + (0x1b3c, 0x1b3c); + (0x1b3d, 0x1b41); + (0x1b42, 0x1b42); + (0x1b43, 0x1b43); + (0x1b80, 0x1b81); + (0x1b82, 0x1b82); + (0x1ba1, 0x1ba1); + (0x1ba2, 0x1ba5); + (0x1ba6, 0x1ba7); + (0x1ba8, 0x1ba9); + (0x1bac, 0x1bad); + (0x1be7, 0x1be7); + (0x1be8, 0x1be9); + (0x1bea, 0x1bec); + (0x1bed, 0x1bed); + (0x1bee, 0x1bee); + (0x1bef, 0x1bf1); + (0x1c24, 0x1c2b); + (0x1c2c, 0x1c33); + (0x1c34, 0x1c35); + (0x1c36, 0x1c36); + (0x1de7, 0x1df4); + (0x24b6, 0x24e9); + (0x2de0, 0x2dff); + (0xa674, 0xa67b); + (0xa69e, 0xa69f); + (0xa802, 0xa802); + (0xa80b, 0xa80b); + (0xa823, 0xa824); + (0xa825, 0xa826); + (0xa827, 0xa827); + (0xa880, 0xa881); + (0xa8b4, 0xa8c3); + (0xa8c5, 0xa8c5); + (0xa8ff, 0xa8ff); + (0xa926, 0xa92a); + (0xa947, 0xa951); + (0xa952, 0xa952); + (0xa980, 0xa982); + (0xa983, 0xa983); + (0xa9b4, 0xa9b5); + (0xa9b6, 0xa9b9); + (0xa9ba, 0xa9bb); + (0xa9bc, 0xa9bd); + (0xa9be, 0xa9bf); + (0xa9e5, 0xa9e5); + (0xaa29, 0xaa2e); + (0xaa2f, 0xaa30); + (0xaa31, 0xaa32); + (0xaa33, 0xaa34); + (0xaa35, 0xaa36); + (0xaa43, 0xaa43); + (0xaa4c, 0xaa4c); + (0xaa4d, 0xaa4d); + (0xaa7b, 0xaa7b); + (0xaa7c, 0xaa7c); + (0xaa7d, 0xaa7d); + (0xaab0, 0xaab0); + (0xaab2, 0xaab4); + (0xaab7, 0xaab8); + (0xaabe, 0xaabe); + (0xaaeb, 0xaaeb); + (0xaaec, 0xaaed); + (0xaaee, 0xaaef); + (0xaaf5, 0xaaf5); + (0xabe3, 0xabe4); + (0xabe5, 0xabe5); + (0xabe6, 0xabe7); + (0xabe8, 0xabe8); + (0xabe9, 0xabea); + (0xfb1e, 0xfb1e); + (0x10376, 0x1037a); + (0x10a01, 0x10a03); + (0x10a05, 0x10a06); + (0x10a0c, 0x10a0f); + (0x10d24, 0x10d27); + (0x10eab, 0x10eac); + (0x11000, 0x11000); + (0x11001, 0x11001); + (0x11002, 0x11002); + (0x11038, 0x11045); + (0x11073, 0x11074); + (0x11082, 0x11082); + (0x110b0, 0x110b2); + (0x110b3, 0x110b6); + (0x110b7, 0x110b8); + (0x110c2, 0x110c2); + (0x11100, 0x11102); + (0x11127, 0x1112b); + (0x1112c, 0x1112c); + (0x1112d, 0x11132); + (0x11145, 0x11146); + (0x11180, 0x11181); + (0x11182, 0x11182); + (0x111b3, 0x111b5); + (0x111b6, 0x111be); + (0x111bf, 0x111bf); + (0x111ce, 0x111ce); + (0x111cf, 0x111cf); + (0x1122c, 0x1122e); + (0x1122f, 0x11231); + (0x11232, 0x11233); + (0x11234, 0x11234); + (0x11237, 0x11237); + (0x1123e, 0x1123e); + (0x112df, 0x112df); + (0x112e0, 0x112e2); + (0x112e3, 0x112e8); + (0x11300, 0x11301); + (0x11302, 0x11303); + (0x1133e, 0x1133f); + (0x11340, 0x11340); + (0x11341, 0x11344); + (0x11347, 0x11348); + (0x1134b, 0x1134c); + (0x11357, 0x11357); + (0x11362, 0x11363); + (0x11435, 0x11437); + (0x11438, 0x1143f); + (0x11440, 0x11441); + (0x11443, 0x11444); + (0x11445, 0x11445); + (0x114b0, 0x114b2); + (0x114b3, 0x114b8); + (0x114b9, 0x114b9); + (0x114ba, 0x114ba); + (0x114bb, 0x114be); + (0x114bf, 0x114c0); + (0x114c1, 0x114c1); + (0x115af, 0x115b1); + (0x115b2, 0x115b5); + (0x115b8, 0x115bb); + (0x115bc, 0x115bd); + (0x115be, 0x115be); + (0x115dc, 0x115dd); + (0x11630, 0x11632); + (0x11633, 0x1163a); + (0x1163b, 0x1163c); + (0x1163d, 0x1163d); + (0x1163e, 0x1163e); + (0x11640, 0x11640); + (0x116ab, 0x116ab); + (0x116ac, 0x116ac); + (0x116ad, 0x116ad); + (0x116ae, 0x116af); + (0x116b0, 0x116b5); + (0x1171d, 0x1171f); + (0x11720, 0x11721); + (0x11722, 0x11725); + (0x11726, 0x11726); + (0x11727, 0x1172a); + (0x1182c, 0x1182e); + (0x1182f, 0x11837); + (0x11838, 0x11838); + (0x11930, 0x11935); + (0x11937, 0x11938); + (0x1193b, 0x1193c); + (0x11940, 0x11940); + (0x11942, 0x11942); + (0x119d1, 0x119d3); + (0x119d4, 0x119d7); + (0x119da, 0x119db); + (0x119dc, 0x119df); + (0x119e4, 0x119e4); + (0x11a01, 0x11a0a); + (0x11a35, 0x11a38); + (0x11a39, 0x11a39); + (0x11a3b, 0x11a3e); + (0x11a51, 0x11a56); + (0x11a57, 0x11a58); + (0x11a59, 0x11a5b); + (0x11a8a, 0x11a96); + (0x11a97, 0x11a97); + (0x11c2f, 0x11c2f); + (0x11c30, 0x11c36); + (0x11c38, 0x11c3d); + (0x11c3e, 0x11c3e); + (0x11c92, 0x11ca7); + (0x11ca9, 0x11ca9); + (0x11caa, 0x11cb0); + (0x11cb1, 0x11cb1); + (0x11cb2, 0x11cb3); + (0x11cb4, 0x11cb4); + (0x11cb5, 0x11cb6); + (0x11d31, 0x11d36); + (0x11d3a, 0x11d3a); + (0x11d3c, 0x11d3d); + (0x11d3f, 0x11d41); + (0x11d43, 0x11d43); + (0x11d47, 0x11d47); + (0x11d8a, 0x11d8e); + (0x11d90, 0x11d91); + (0x11d93, 0x11d94); + (0x11d95, 0x11d95); + (0x11d96, 0x11d96); + (0x11ef3, 0x11ef4); + (0x11ef5, 0x11ef6); + (0x16f4f, 0x16f4f); + (0x16f51, 0x16f87); + (0x16f8f, 0x16f92); + (0x16ff0, 0x16ff1); + (0x1bc9e, 0x1bc9e); + (0x1e000, 0x1e006); + (0x1e008, 0x1e018); + (0x1e01b, 0x1e021); + (0x1e023, 0x1e024); + (0x1e026, 0x1e02a); + (0x1e947, 0x1e947); + (0x1f170, 0x1f189); + (0x1f150, 0x1f169); + (0x1f130, 0x1f149); + ] let other_lowercase = - [0xaa, 0xaa; 0xba, 0xba; 0x2b0, 0x2b8; 0x2c0, 0x2c1; 0x2e0, 0x2e4; - 0x345, 0x345; 0x37a, 0x37a; 0x1d2c, 0x1d6a; 0x1d78, 0x1d78; 0x1d9b, 0x1dbf; - 0x2071, 0x2071; 0x207f, 0x207f; 0x2090, 0x209c; 0x2170, 0x217f; 0x24d0, 0x24e9; - 0x2c7c, 0x2c7d; 0xa69c, 0xa69d; 0xa770, 0xa770; 0xa7f8, 0xa7f9; 0xab5c, 0xab5f; - 0x107b2, 0x107ba; 0x10787, 0x107b0; 0x10783, 0x10785; 0x10780, 0x10780] + [ + (0xaa, 0xaa); + (0xba, 0xba); + (0x2b0, 0x2b8); + (0x2c0, 0x2c1); + (0x2e0, 0x2e4); + (0x345, 0x345); + (0x37a, 0x37a); + (0x1d2c, 0x1d6a); + (0x1d78, 0x1d78); + (0x1d9b, 0x1dbf); + (0x2071, 0x2071); + (0x207f, 0x207f); + (0x2090, 0x209c); + (0x2170, 0x217f); + (0x24d0, 0x24e9); + (0x2c7c, 0x2c7d); + (0xa69c, 0xa69d); + (0xa770, 0xa770); + (0xa7f8, 0xa7f9); + (0xab5c, 0xab5f); + (0x107b2, 0x107ba); + (0x10787, 0x107b0); + (0x10783, 0x10785); + (0x10780, 0x10780); + ] let other_math = - [0x5e, 0x5e; 0x3d0, 0x3d2; 0x3d5, 0x3d5; 0x3f0, 0x3f1; 0x3f4, 0x3f5; - 0x2016, 0x2016; 0x2032, 0x2034; 0x2040, 0x2040; 0x2061, 0x2064; 0x207d, 0x207d; - 0x207e, 0x207e; 0x208d, 0x208d; 0x208e, 0x208e; 0x20d0, 0x20dc; 0x20e1, 0x20e1; - 0x20e5, 0x20e6; 0x20eb, 0x20ef; 0x2102, 0x2102; 0x2107, 0x2107; 0x210a, 0x2113; - 0x2115, 0x2115; 0x2119, 0x211d; 0x2124, 0x2124; 0x2128, 0x2128; 0x2129, 0x2129; - 0x212c, 0x212d; 0x212f, 0x2131; 0x2133, 0x2134; 0x2135, 0x2138; 0x213c, 0x213f; - 0x2145, 0x2149; 0x2195, 0x2199; 0x219c, 0x219f; 0x21a1, 0x21a2; 0x21a4, 0x21a5; - 0x21a7, 0x21a7; 0x21a9, 0x21ad; 0x21b0, 0x21b1; 0x21b6, 0x21b7; 0x21bc, 0x21cd; - 0x21d0, 0x21d1; 0x21d3, 0x21d3; 0x21d5, 0x21db; 0x21dd, 0x21dd; 0x21e4, 0x21e5; - 0x2308, 0x2308; 0x2309, 0x2309; 0x230a, 0x230a; 0x230b, 0x230b; 0x23b4, 0x23b5; - 0x23b7, 0x23b7; 0x23d0, 0x23d0; 0x23e2, 0x23e2; 0x25a0, 0x25a1; 0x25ae, 0x25b6; - 0x25bc, 0x25c0; 0x25c6, 0x25c7; 0x25ca, 0x25cb; 0x25cf, 0x25d3; 0x25e2, 0x25e2; - 0x25e4, 0x25e4; 0x25e7, 0x25ec; 0x2605, 0x2606; 0x2640, 0x2640; 0x2642, 0x2642; - 0x2660, 0x2663; 0x266d, 0x266e; 0x27c5, 0x27c5; 0x27c6, 0x27c6; 0x27e6, 0x27e6; - 0x27e7, 0x27e7; 0x27e8, 0x27e8; 0x27e9, 0x27e9; 0x27ea, 0x27ea; 0x27eb, 0x27eb; - 0x27ec, 0x27ec; 0x27ed, 0x27ed; 0x27ee, 0x27ee; 0x27ef, 0x27ef; 0x2983, 0x2983; - 0x2984, 0x2984; 0x2985, 0x2985; 0x2986, 0x2986; 0x2987, 0x2987; 0x2988, 0x2988; - 0x2989, 0x2989; 0x298a, 0x298a; 0x298b, 0x298b; 0x298c, 0x298c; 0x298d, 0x298d; - 0x298e, 0x298e; 0x298f, 0x298f; 0x2990, 0x2990; 0x2991, 0x2991; 0x2992, 0x2992; - 0x2993, 0x2993; 0x2994, 0x2994; 0x2995, 0x2995; 0x2996, 0x2996; 0x2997, 0x2997; - 0x2998, 0x2998; 0x29d8, 0x29d8; 0x29d9, 0x29d9; 0x29da, 0x29da; 0x29db, 0x29db; - 0x29fc, 0x29fc; 0x29fd, 0x29fd; 0xfe61, 0xfe61; 0xfe63, 0xfe63; 0xfe68, 0xfe68; - 0xff3c, 0xff3c; 0xff3e, 0xff3e; 0x1d400, 0x1d454; 0x1d456, 0x1d49c; 0x1d49e, 0x1d49f; - 0x1d4a2, 0x1d4a2; 0x1d4a5, 0x1d4a6; 0x1d4a9, 0x1d4ac; 0x1d4ae, 0x1d4b9; 0x1d4bb, 0x1d4bb; - 0x1d4bd, 0x1d4c3; 0x1d4c5, 0x1d505; 0x1d507, 0x1d50a; 0x1d50d, 0x1d514; 0x1d516, 0x1d51c; - 0x1d51e, 0x1d539; 0x1d53b, 0x1d53e; 0x1d540, 0x1d544; 0x1d546, 0x1d546; 0x1d54a, 0x1d550; - 0x1d552, 0x1d6a5; 0x1d6a8, 0x1d6c0; 0x1d6c2, 0x1d6da; 0x1d6dc, 0x1d6fa; 0x1d6fc, 0x1d714; - 0x1d716, 0x1d734; 0x1d736, 0x1d74e; 0x1d750, 0x1d76e; 0x1d770, 0x1d788; 0x1d78a, 0x1d7a8; - 0x1d7aa, 0x1d7c2; 0x1d7c4, 0x1d7cb; 0x1d7ce, 0x1d7ff; 0x1ee00, 0x1ee03; 0x1ee05, 0x1ee1f; - 0x1ee21, 0x1ee22; 0x1ee24, 0x1ee24; 0x1ee27, 0x1ee27; 0x1ee29, 0x1ee32; 0x1ee34, 0x1ee37; - 0x1ee39, 0x1ee39; 0x1ee3b, 0x1ee3b; 0x1ee42, 0x1ee42; 0x1ee47, 0x1ee47; 0x1ee49, 0x1ee49; - 0x1ee4b, 0x1ee4b; 0x1ee4d, 0x1ee4f; 0x1ee51, 0x1ee52; 0x1ee54, 0x1ee54; 0x1ee57, 0x1ee57; - 0x1ee59, 0x1ee59; 0x1ee5b, 0x1ee5b; 0x1ee5d, 0x1ee5d; 0x1ee5f, 0x1ee5f; 0x1ee61, 0x1ee62; - 0x1ee64, 0x1ee64; 0x1ee67, 0x1ee6a; 0x1ee6c, 0x1ee72; 0x1ee74, 0x1ee77; 0x1ee79, 0x1ee7c; - 0x1ee7e, 0x1ee7e; 0x1ee80, 0x1ee89; 0x1ee8b, 0x1ee9b; 0x1eea1, 0x1eea3; 0x1eea5, 0x1eea9; - 0x1eeab, 0x1eebb] + [ + (0x5e, 0x5e); + (0x3d0, 0x3d2); + (0x3d5, 0x3d5); + (0x3f0, 0x3f1); + (0x3f4, 0x3f5); + (0x2016, 0x2016); + (0x2032, 0x2034); + (0x2040, 0x2040); + (0x2061, 0x2064); + (0x207d, 0x207d); + (0x207e, 0x207e); + (0x208d, 0x208d); + (0x208e, 0x208e); + (0x20d0, 0x20dc); + (0x20e1, 0x20e1); + (0x20e5, 0x20e6); + (0x20eb, 0x20ef); + (0x2102, 0x2102); + (0x2107, 0x2107); + (0x210a, 0x2113); + (0x2115, 0x2115); + (0x2119, 0x211d); + (0x2124, 0x2124); + (0x2128, 0x2128); + (0x2129, 0x2129); + (0x212c, 0x212d); + (0x212f, 0x2131); + (0x2133, 0x2134); + (0x2135, 0x2138); + (0x213c, 0x213f); + (0x2145, 0x2149); + (0x2195, 0x2199); + (0x219c, 0x219f); + (0x21a1, 0x21a2); + (0x21a4, 0x21a5); + (0x21a7, 0x21a7); + (0x21a9, 0x21ad); + (0x21b0, 0x21b1); + (0x21b6, 0x21b7); + (0x21bc, 0x21cd); + (0x21d0, 0x21d1); + (0x21d3, 0x21d3); + (0x21d5, 0x21db); + (0x21dd, 0x21dd); + (0x21e4, 0x21e5); + (0x2308, 0x2308); + (0x2309, 0x2309); + (0x230a, 0x230a); + (0x230b, 0x230b); + (0x23b4, 0x23b5); + (0x23b7, 0x23b7); + (0x23d0, 0x23d0); + (0x23e2, 0x23e2); + (0x25a0, 0x25a1); + (0x25ae, 0x25b6); + (0x25bc, 0x25c0); + (0x25c6, 0x25c7); + (0x25ca, 0x25cb); + (0x25cf, 0x25d3); + (0x25e2, 0x25e2); + (0x25e4, 0x25e4); + (0x25e7, 0x25ec); + (0x2605, 0x2606); + (0x2640, 0x2640); + (0x2642, 0x2642); + (0x2660, 0x2663); + (0x266d, 0x266e); + (0x27c5, 0x27c5); + (0x27c6, 0x27c6); + (0x27e6, 0x27e6); + (0x27e7, 0x27e7); + (0x27e8, 0x27e8); + (0x27e9, 0x27e9); + (0x27ea, 0x27ea); + (0x27eb, 0x27eb); + (0x27ec, 0x27ec); + (0x27ed, 0x27ed); + (0x27ee, 0x27ee); + (0x27ef, 0x27ef); + (0x2983, 0x2983); + (0x2984, 0x2984); + (0x2985, 0x2985); + (0x2986, 0x2986); + (0x2987, 0x2987); + (0x2988, 0x2988); + (0x2989, 0x2989); + (0x298a, 0x298a); + (0x298b, 0x298b); + (0x298c, 0x298c); + (0x298d, 0x298d); + (0x298e, 0x298e); + (0x298f, 0x298f); + (0x2990, 0x2990); + (0x2991, 0x2991); + (0x2992, 0x2992); + (0x2993, 0x2993); + (0x2994, 0x2994); + (0x2995, 0x2995); + (0x2996, 0x2996); + (0x2997, 0x2997); + (0x2998, 0x2998); + (0x29d8, 0x29d8); + (0x29d9, 0x29d9); + (0x29da, 0x29da); + (0x29db, 0x29db); + (0x29fc, 0x29fc); + (0x29fd, 0x29fd); + (0xfe61, 0xfe61); + (0xfe63, 0xfe63); + (0xfe68, 0xfe68); + (0xff3c, 0xff3c); + (0xff3e, 0xff3e); + (0x1d400, 0x1d454); + (0x1d456, 0x1d49c); + (0x1d49e, 0x1d49f); + (0x1d4a2, 0x1d4a2); + (0x1d4a5, 0x1d4a6); + (0x1d4a9, 0x1d4ac); + (0x1d4ae, 0x1d4b9); + (0x1d4bb, 0x1d4bb); + (0x1d4bd, 0x1d4c3); + (0x1d4c5, 0x1d505); + (0x1d507, 0x1d50a); + (0x1d50d, 0x1d514); + (0x1d516, 0x1d51c); + (0x1d51e, 0x1d539); + (0x1d53b, 0x1d53e); + (0x1d540, 0x1d544); + (0x1d546, 0x1d546); + (0x1d54a, 0x1d550); + (0x1d552, 0x1d6a5); + (0x1d6a8, 0x1d6c0); + (0x1d6c2, 0x1d6da); + (0x1d6dc, 0x1d6fa); + (0x1d6fc, 0x1d714); + (0x1d716, 0x1d734); + (0x1d736, 0x1d74e); + (0x1d750, 0x1d76e); + (0x1d770, 0x1d788); + (0x1d78a, 0x1d7a8); + (0x1d7aa, 0x1d7c2); + (0x1d7c4, 0x1d7cb); + (0x1d7ce, 0x1d7ff); + (0x1ee00, 0x1ee03); + (0x1ee05, 0x1ee1f); + (0x1ee21, 0x1ee22); + (0x1ee24, 0x1ee24); + (0x1ee27, 0x1ee27); + (0x1ee29, 0x1ee32); + (0x1ee34, 0x1ee37); + (0x1ee39, 0x1ee39); + (0x1ee3b, 0x1ee3b); + (0x1ee42, 0x1ee42); + (0x1ee47, 0x1ee47); + (0x1ee49, 0x1ee49); + (0x1ee4b, 0x1ee4b); + (0x1ee4d, 0x1ee4f); + (0x1ee51, 0x1ee52); + (0x1ee54, 0x1ee54); + (0x1ee57, 0x1ee57); + (0x1ee59, 0x1ee59); + (0x1ee5b, 0x1ee5b); + (0x1ee5d, 0x1ee5d); + (0x1ee5f, 0x1ee5f); + (0x1ee61, 0x1ee62); + (0x1ee64, 0x1ee64); + (0x1ee67, 0x1ee6a); + (0x1ee6c, 0x1ee72); + (0x1ee74, 0x1ee77); + (0x1ee79, 0x1ee7c); + (0x1ee7e, 0x1ee7e); + (0x1ee80, 0x1ee89); + (0x1ee8b, 0x1ee9b); + (0x1eea1, 0x1eea3); + (0x1eea5, 0x1eea9); + (0x1eeab, 0x1eebb); + ] let other_uppercase = - [0x1f170, 0x1f189; 0x1f150, 0x1f169; 0x1f130, 0x1f149; 0x24b6, 0x24cf; 0x2160, 0x216f] + [ + (0x1f170, 0x1f189); + (0x1f150, 0x1f169); + (0x1f130, 0x1f149); + (0x24b6, 0x24cf); + (0x2160, 0x216f); + ] let uppercase = - [0x41, 0x5a; 0xc0, 0xd6; 0xd8, 0xde; 0x100, 0x100; 0x102, 0x102; - 0x104, 0x104; 0x106, 0x106; 0x108, 0x108; 0x10a, 0x10a; 0x10c, 0x10c; - 0x10e, 0x10e; 0x110, 0x110; 0x112, 0x112; 0x114, 0x114; 0x116, 0x116; - 0x118, 0x118; 0x11a, 0x11a; 0x11c, 0x11c; 0x11e, 0x11e; 0x120, 0x120; - 0x122, 0x122; 0x124, 0x124; 0x126, 0x126; 0x128, 0x128; 0x12a, 0x12a; - 0x12c, 0x12c; 0x12e, 0x12e; 0x130, 0x130; 0x132, 0x132; 0x134, 0x134; - 0x136, 0x136; 0x139, 0x139; 0x13b, 0x13b; 0x13d, 0x13d; 0x13f, 0x13f; - 0x141, 0x141; 0x143, 0x143; 0x145, 0x145; 0x147, 0x147; 0x14a, 0x14a; - 0x14c, 0x14c; 0x14e, 0x14e; 0x150, 0x150; 0x152, 0x152; 0x154, 0x154; - 0x156, 0x156; 0x158, 0x158; 0x15a, 0x15a; 0x15c, 0x15c; 0x15e, 0x15e; - 0x160, 0x160; 0x162, 0x162; 0x164, 0x164; 0x166, 0x166; 0x168, 0x168; - 0x16a, 0x16a; 0x16c, 0x16c; 0x16e, 0x16e; 0x170, 0x170; 0x172, 0x172; - 0x174, 0x174; 0x176, 0x176; 0x178, 0x179; 0x17b, 0x17b; 0x17d, 0x17d; - 0x181, 0x182; 0x184, 0x184; 0x186, 0x187; 0x189, 0x18b; 0x18e, 0x191; - 0x193, 0x194; 0x196, 0x198; 0x19c, 0x19d; 0x19f, 0x1a0; 0x1a2, 0x1a2; - 0x1a4, 0x1a4; 0x1a6, 0x1a7; 0x1a9, 0x1a9; 0x1ac, 0x1ac; 0x1ae, 0x1af; - 0x1b1, 0x1b3; 0x1b5, 0x1b5; 0x1b7, 0x1b8; 0x1bc, 0x1bc; 0x1c4, 0x1c4; - 0x1c7, 0x1c7; 0x1ca, 0x1ca; 0x1cd, 0x1cd; 0x1cf, 0x1cf; 0x1d1, 0x1d1; - 0x1d3, 0x1d3; 0x1d5, 0x1d5; 0x1d7, 0x1d7; 0x1d9, 0x1d9; 0x1db, 0x1db; - 0x1de, 0x1de; 0x1e0, 0x1e0; 0x1e2, 0x1e2; 0x1e4, 0x1e4; 0x1e6, 0x1e6; - 0x1e8, 0x1e8; 0x1ea, 0x1ea; 0x1ec, 0x1ec; 0x1ee, 0x1ee; 0x1f1, 0x1f1; - 0x1f4, 0x1f4; 0x1f6, 0x1f8; 0x1fa, 0x1fa; 0x1fc, 0x1fc; 0x1fe, 0x1fe; - 0x200, 0x200; 0x202, 0x202; 0x204, 0x204; 0x206, 0x206; 0x208, 0x208; - 0x20a, 0x20a; 0x20c, 0x20c; 0x20e, 0x20e; 0x210, 0x210; 0x212, 0x212; - 0x214, 0x214; 0x216, 0x216; 0x218, 0x218; 0x21a, 0x21a; 0x21c, 0x21c; - 0x21e, 0x21e; 0x220, 0x220; 0x222, 0x222; 0x224, 0x224; 0x226, 0x226; - 0x228, 0x228; 0x22a, 0x22a; 0x22c, 0x22c; 0x22e, 0x22e; 0x230, 0x230; - 0x232, 0x232; 0x23a, 0x23b; 0x23d, 0x23e; 0x241, 0x241; 0x243, 0x246; - 0x248, 0x248; 0x24a, 0x24a; 0x24c, 0x24c; 0x24e, 0x24e; 0x370, 0x370; - 0x372, 0x372; 0x376, 0x376; 0x37f, 0x37f; 0x386, 0x386; 0x388, 0x38a; - 0x38c, 0x38c; 0x38e, 0x38f; 0x391, 0x3a1; 0x3a3, 0x3ab; 0x3cf, 0x3cf; - 0x3d2, 0x3d4; 0x3d8, 0x3d8; 0x3da, 0x3da; 0x3dc, 0x3dc; 0x3de, 0x3de; - 0x3e0, 0x3e0; 0x3e2, 0x3e2; 0x3e4, 0x3e4; 0x3e6, 0x3e6; 0x3e8, 0x3e8; - 0x3ea, 0x3ea; 0x3ec, 0x3ec; 0x3ee, 0x3ee; 0x3f4, 0x3f4; 0x3f7, 0x3f7; - 0x3f9, 0x3fa; 0x3fd, 0x42f; 0x460, 0x460; 0x462, 0x462; 0x464, 0x464; - 0x466, 0x466; 0x468, 0x468; 0x46a, 0x46a; 0x46c, 0x46c; 0x46e, 0x46e; - 0x470, 0x470; 0x472, 0x472; 0x474, 0x474; 0x476, 0x476; 0x478, 0x478; - 0x47a, 0x47a; 0x47c, 0x47c; 0x47e, 0x47e; 0x480, 0x480; 0x48a, 0x48a; - 0x48c, 0x48c; 0x48e, 0x48e; 0x490, 0x490; 0x492, 0x492; 0x494, 0x494; - 0x496, 0x496; 0x498, 0x498; 0x49a, 0x49a; 0x49c, 0x49c; 0x49e, 0x49e; - 0x4a0, 0x4a0; 0x4a2, 0x4a2; 0x4a4, 0x4a4; 0x4a6, 0x4a6; 0x4a8, 0x4a8; - 0x4aa, 0x4aa; 0x4ac, 0x4ac; 0x4ae, 0x4ae; 0x4b0, 0x4b0; 0x4b2, 0x4b2; - 0x4b4, 0x4b4; 0x4b6, 0x4b6; 0x4b8, 0x4b8; 0x4ba, 0x4ba; 0x4bc, 0x4bc; - 0x4be, 0x4be; 0x4c0, 0x4c1; 0x4c3, 0x4c3; 0x4c5, 0x4c5; 0x4c7, 0x4c7; - 0x4c9, 0x4c9; 0x4cb, 0x4cb; 0x4cd, 0x4cd; 0x4d0, 0x4d0; 0x4d2, 0x4d2; - 0x4d4, 0x4d4; 0x4d6, 0x4d6; 0x4d8, 0x4d8; 0x4da, 0x4da; 0x4dc, 0x4dc; - 0x4de, 0x4de; 0x4e0, 0x4e0; 0x4e2, 0x4e2; 0x4e4, 0x4e4; 0x4e6, 0x4e6; - 0x4e8, 0x4e8; 0x4ea, 0x4ea; 0x4ec, 0x4ec; 0x4ee, 0x4ee; 0x4f0, 0x4f0; - 0x4f2, 0x4f2; 0x4f4, 0x4f4; 0x4f6, 0x4f6; 0x4f8, 0x4f8; 0x4fa, 0x4fa; - 0x4fc, 0x4fc; 0x4fe, 0x4fe; 0x500, 0x500; 0x502, 0x502; 0x504, 0x504; - 0x506, 0x506; 0x508, 0x508; 0x50a, 0x50a; 0x50c, 0x50c; 0x50e, 0x50e; - 0x510, 0x510; 0x512, 0x512; 0x514, 0x514; 0x516, 0x516; 0x518, 0x518; - 0x51a, 0x51a; 0x51c, 0x51c; 0x51e, 0x51e; 0x520, 0x520; 0x522, 0x522; - 0x524, 0x524; 0x526, 0x526; 0x528, 0x528; 0x52a, 0x52a; 0x52c, 0x52c; - 0x52e, 0x52e; 0x531, 0x556; 0x10a0, 0x10c5; 0x10c7, 0x10c7; 0x10cd, 0x10cd; - 0x13a0, 0x13f5; 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 0x1e00, 0x1e00; 0x1e02, 0x1e02; - 0x1e04, 0x1e04; 0x1e06, 0x1e06; 0x1e08, 0x1e08; 0x1e0a, 0x1e0a; 0x1e0c, 0x1e0c; - 0x1e0e, 0x1e0e; 0x1e10, 0x1e10; 0x1e12, 0x1e12; 0x1e14, 0x1e14; 0x1e16, 0x1e16; - 0x1e18, 0x1e18; 0x1e1a, 0x1e1a; 0x1e1c, 0x1e1c; 0x1e1e, 0x1e1e; 0x1e20, 0x1e20; - 0x1e22, 0x1e22; 0x1e24, 0x1e24; 0x1e26, 0x1e26; 0x1e28, 0x1e28; 0x1e2a, 0x1e2a; - 0x1e2c, 0x1e2c; 0x1e2e, 0x1e2e; 0x1e30, 0x1e30; 0x1e32, 0x1e32; 0x1e34, 0x1e34; - 0x1e36, 0x1e36; 0x1e38, 0x1e38; 0x1e3a, 0x1e3a; 0x1e3c, 0x1e3c; 0x1e3e, 0x1e3e; - 0x1e40, 0x1e40; 0x1e42, 0x1e42; 0x1e44, 0x1e44; 0x1e46, 0x1e46; 0x1e48, 0x1e48; - 0x1e4a, 0x1e4a; 0x1e4c, 0x1e4c; 0x1e4e, 0x1e4e; 0x1e50, 0x1e50; 0x1e52, 0x1e52; - 0x1e54, 0x1e54; 0x1e56, 0x1e56; 0x1e58, 0x1e58; 0x1e5a, 0x1e5a; 0x1e5c, 0x1e5c; - 0x1e5e, 0x1e5e; 0x1e60, 0x1e60; 0x1e62, 0x1e62; 0x1e64, 0x1e64; 0x1e66, 0x1e66; - 0x1e68, 0x1e68; 0x1e6a, 0x1e6a; 0x1e6c, 0x1e6c; 0x1e6e, 0x1e6e; 0x1e70, 0x1e70; - 0x1e72, 0x1e72; 0x1e74, 0x1e74; 0x1e76, 0x1e76; 0x1e78, 0x1e78; 0x1e7a, 0x1e7a; - 0x1e7c, 0x1e7c; 0x1e7e, 0x1e7e; 0x1e80, 0x1e80; 0x1e82, 0x1e82; 0x1e84, 0x1e84; - 0x1e86, 0x1e86; 0x1e88, 0x1e88; 0x1e8a, 0x1e8a; 0x1e8c, 0x1e8c; 0x1e8e, 0x1e8e; - 0x1e90, 0x1e90; 0x1e92, 0x1e92; 0x1e94, 0x1e94; 0x1e9e, 0x1e9e; 0x1ea0, 0x1ea0; - 0x1ea2, 0x1ea2; 0x1ea4, 0x1ea4; 0x1ea6, 0x1ea6; 0x1ea8, 0x1ea8; 0x1eaa, 0x1eaa; - 0x1eac, 0x1eac; 0x1eae, 0x1eae; 0x1eb0, 0x1eb0; 0x1eb2, 0x1eb2; 0x1eb4, 0x1eb4; - 0x1eb6, 0x1eb6; 0x1eb8, 0x1eb8; 0x1eba, 0x1eba; 0x1ebc, 0x1ebc; 0x1ebe, 0x1ebe; - 0x1ec0, 0x1ec0; 0x1ec2, 0x1ec2; 0x1ec4, 0x1ec4; 0x1ec6, 0x1ec6; 0x1ec8, 0x1ec8; - 0x1eca, 0x1eca; 0x1ecc, 0x1ecc; 0x1ece, 0x1ece; 0x1ed0, 0x1ed0; 0x1ed2, 0x1ed2; - 0x1ed4, 0x1ed4; 0x1ed6, 0x1ed6; 0x1ed8, 0x1ed8; 0x1eda, 0x1eda; 0x1edc, 0x1edc; - 0x1ede, 0x1ede; 0x1ee0, 0x1ee0; 0x1ee2, 0x1ee2; 0x1ee4, 0x1ee4; 0x1ee6, 0x1ee6; - 0x1ee8, 0x1ee8; 0x1eea, 0x1eea; 0x1eec, 0x1eec; 0x1eee, 0x1eee; 0x1ef0, 0x1ef0; - 0x1ef2, 0x1ef2; 0x1ef4, 0x1ef4; 0x1ef6, 0x1ef6; 0x1ef8, 0x1ef8; 0x1efa, 0x1efa; - 0x1efc, 0x1efc; 0x1efe, 0x1efe; 0x1f08, 0x1f0f; 0x1f18, 0x1f1d; 0x1f28, 0x1f2f; - 0x1f38, 0x1f3f; 0x1f48, 0x1f4d; 0x1f59, 0x1f59; 0x1f5b, 0x1f5b; 0x1f5d, 0x1f5d; - 0x1f5f, 0x1f5f; 0x1f68, 0x1f6f; 0x1fb8, 0x1fbb; 0x1fc8, 0x1fcb; 0x1fd8, 0x1fdb; - 0x1fe8, 0x1fec; 0x1ff8, 0x1ffb; 0x2102, 0x2102; 0x2107, 0x2107; 0x210b, 0x210d; - 0x2110, 0x2112; 0x2115, 0x2115; 0x2119, 0x211d; 0x2124, 0x2124; 0x2126, 0x2126; - 0x2128, 0x2128; 0x212a, 0x212d; 0x2130, 0x2133; 0x213e, 0x213f; 0x2145, 0x2145; - 0x2160, 0x216f; 0x2183, 0x2183; 0x24b6, 0x24cf; 0x2c00, 0x2c2f; 0x2c60, 0x2c60; - 0x2c62, 0x2c64; 0x2c67, 0x2c67; 0x2c69, 0x2c69; 0x2c6b, 0x2c6b; 0x2c6d, 0x2c70; - 0x2c72, 0x2c72; 0x2c75, 0x2c75; 0x2c7e, 0x2c80; 0x2c82, 0x2c82; 0x2c84, 0x2c84; - 0x2c86, 0x2c86; 0x2c88, 0x2c88; 0x2c8a, 0x2c8a; 0x2c8c, 0x2c8c; 0x2c8e, 0x2c8e; - 0x2c90, 0x2c90; 0x2c92, 0x2c92; 0x2c94, 0x2c94; 0x2c96, 0x2c96; 0x2c98, 0x2c98; - 0x2c9a, 0x2c9a; 0x2c9c, 0x2c9c; 0x2c9e, 0x2c9e; 0x2ca0, 0x2ca0; 0x2ca2, 0x2ca2; - 0x2ca4, 0x2ca4; 0x2ca6, 0x2ca6; 0x2ca8, 0x2ca8; 0x2caa, 0x2caa; 0x2cac, 0x2cac; - 0x2cae, 0x2cae; 0x2cb0, 0x2cb0; 0x2cb2, 0x2cb2; 0x2cb4, 0x2cb4; 0x2cb6, 0x2cb6; - 0x2cb8, 0x2cb8; 0x2cba, 0x2cba; 0x2cbc, 0x2cbc; 0x2cbe, 0x2cbe; 0x2cc0, 0x2cc0; - 0x2cc2, 0x2cc2; 0x2cc4, 0x2cc4; 0x2cc6, 0x2cc6; 0x2cc8, 0x2cc8; 0x2cca, 0x2cca; - 0x2ccc, 0x2ccc; 0x2cce, 0x2cce; 0x2cd0, 0x2cd0; 0x2cd2, 0x2cd2; 0x2cd4, 0x2cd4; - 0x2cd6, 0x2cd6; 0x2cd8, 0x2cd8; 0x2cda, 0x2cda; 0x2cdc, 0x2cdc; 0x2cde, 0x2cde; - 0x2ce0, 0x2ce0; 0x2ce2, 0x2ce2; 0x2ceb, 0x2ceb; 0x2ced, 0x2ced; 0x2cf2, 0x2cf2; - 0xa640, 0xa640; 0xa642, 0xa642; 0xa644, 0xa644; 0xa646, 0xa646; 0xa648, 0xa648; - 0xa64a, 0xa64a; 0xa64c, 0xa64c; 0xa64e, 0xa64e; 0xa650, 0xa650; 0xa652, 0xa652; - 0xa654, 0xa654; 0xa656, 0xa656; 0xa658, 0xa658; 0xa65a, 0xa65a; 0xa65c, 0xa65c; - 0xa65e, 0xa65e; 0xa660, 0xa660; 0xa662, 0xa662; 0xa664, 0xa664; 0xa666, 0xa666; - 0xa668, 0xa668; 0xa66a, 0xa66a; 0xa66c, 0xa66c; 0xa680, 0xa680; 0xa682, 0xa682; - 0xa684, 0xa684; 0xa686, 0xa686; 0xa688, 0xa688; 0xa68a, 0xa68a; 0xa68c, 0xa68c; - 0xa68e, 0xa68e; 0xa690, 0xa690; 0xa692, 0xa692; 0xa694, 0xa694; 0xa696, 0xa696; - 0xa698, 0xa698; 0xa69a, 0xa69a; 0xa722, 0xa722; 0xa724, 0xa724; 0xa726, 0xa726; - 0xa728, 0xa728; 0xa72a, 0xa72a; 0xa72c, 0xa72c; 0xa72e, 0xa72e; 0xa732, 0xa732; - 0xa734, 0xa734; 0xa736, 0xa736; 0xa738, 0xa738; 0xa73a, 0xa73a; 0xa73c, 0xa73c; - 0xa73e, 0xa73e; 0xa740, 0xa740; 0xa742, 0xa742; 0xa744, 0xa744; 0xa746, 0xa746; - 0xa748, 0xa748; 0xa74a, 0xa74a; 0xa74c, 0xa74c; 0xa74e, 0xa74e; 0xa750, 0xa750; - 0xa752, 0xa752; 0xa754, 0xa754; 0xa756, 0xa756; 0xa758, 0xa758; 0xa75a, 0xa75a; - 0xa75c, 0xa75c; 0xa75e, 0xa75e; 0xa760, 0xa760; 0xa762, 0xa762; 0xa764, 0xa764; - 0xa766, 0xa766; 0xa768, 0xa768; 0xa76a, 0xa76a; 0xa76c, 0xa76c; 0xa76e, 0xa76e; - 0xa779, 0xa779; 0xa77b, 0xa77b; 0xa77d, 0xa77e; 0xa780, 0xa780; 0xa782, 0xa782; - 0xa784, 0xa784; 0xa786, 0xa786; 0xa78b, 0xa78b; 0xa78d, 0xa78d; 0xa790, 0xa790; - 0xa792, 0xa792; 0xa796, 0xa796; 0xa798, 0xa798; 0xa79a, 0xa79a; 0xa79c, 0xa79c; - 0xa79e, 0xa79e; 0xa7a0, 0xa7a0; 0xa7a2, 0xa7a2; 0xa7a4, 0xa7a4; 0xa7a6, 0xa7a6; - 0xa7a8, 0xa7a8; 0xa7aa, 0xa7ae; 0xa7b0, 0xa7b4; 0xa7b6, 0xa7b6; 0xa7b8, 0xa7b8; - 0xa7ba, 0xa7ba; 0xa7bc, 0xa7bc; 0xa7be, 0xa7be; 0xa7c0, 0xa7c0; 0xa7c2, 0xa7c2; - 0xa7c4, 0xa7c7; 0xa7c9, 0xa7c9; 0xa7d0, 0xa7d0; 0xa7d6, 0xa7d6; 0xa7d8, 0xa7d8; - 0xa7f5, 0xa7f5; 0xff21, 0xff3a; 0x10400, 0x10427; 0x104b0, 0x104d3; 0x10570, 0x1057a; - 0x1057c, 0x1058a; 0x1058c, 0x10592; 0x10594, 0x10595; 0x10c80, 0x10cb2; 0x118a0, 0x118bf; - 0x16e40, 0x16e5f; 0x1d400, 0x1d419; 0x1d434, 0x1d44d; 0x1d468, 0x1d481; 0x1d49c, 0x1d49c; - 0x1d49e, 0x1d49f; 0x1d4a2, 0x1d4a2; 0x1d4a5, 0x1d4a6; 0x1d4a9, 0x1d4ac; 0x1d4ae, 0x1d4b5; - 0x1d4d0, 0x1d4e9; 0x1d504, 0x1d505; 0x1d507, 0x1d50a; 0x1d50d, 0x1d514; 0x1d516, 0x1d51c; - 0x1d538, 0x1d539; 0x1d53b, 0x1d53e; 0x1d540, 0x1d544; 0x1d546, 0x1d546; 0x1d54a, 0x1d550; - 0x1d56c, 0x1d585; 0x1d5a0, 0x1d5b9; 0x1d5d4, 0x1d5ed; 0x1d608, 0x1d621; 0x1d63c, 0x1d655; - 0x1d670, 0x1d689; 0x1d6a8, 0x1d6c0; 0x1d6e2, 0x1d6fa; 0x1d71c, 0x1d734; 0x1d756, 0x1d76e; - 0x1d790, 0x1d7a8; 0x1d7ca, 0x1d7ca; 0x1e900, 0x1e921; 0x1f130, 0x1f149; 0x1f150, 0x1f169; - 0x1f170, 0x1f189] + [ + (0x41, 0x5a); + (0xc0, 0xd6); + (0xd8, 0xde); + (0x100, 0x100); + (0x102, 0x102); + (0x104, 0x104); + (0x106, 0x106); + (0x108, 0x108); + (0x10a, 0x10a); + (0x10c, 0x10c); + (0x10e, 0x10e); + (0x110, 0x110); + (0x112, 0x112); + (0x114, 0x114); + (0x116, 0x116); + (0x118, 0x118); + (0x11a, 0x11a); + (0x11c, 0x11c); + (0x11e, 0x11e); + (0x120, 0x120); + (0x122, 0x122); + (0x124, 0x124); + (0x126, 0x126); + (0x128, 0x128); + (0x12a, 0x12a); + (0x12c, 0x12c); + (0x12e, 0x12e); + (0x130, 0x130); + (0x132, 0x132); + (0x134, 0x134); + (0x136, 0x136); + (0x139, 0x139); + (0x13b, 0x13b); + (0x13d, 0x13d); + (0x13f, 0x13f); + (0x141, 0x141); + (0x143, 0x143); + (0x145, 0x145); + (0x147, 0x147); + (0x14a, 0x14a); + (0x14c, 0x14c); + (0x14e, 0x14e); + (0x150, 0x150); + (0x152, 0x152); + (0x154, 0x154); + (0x156, 0x156); + (0x158, 0x158); + (0x15a, 0x15a); + (0x15c, 0x15c); + (0x15e, 0x15e); + (0x160, 0x160); + (0x162, 0x162); + (0x164, 0x164); + (0x166, 0x166); + (0x168, 0x168); + (0x16a, 0x16a); + (0x16c, 0x16c); + (0x16e, 0x16e); + (0x170, 0x170); + (0x172, 0x172); + (0x174, 0x174); + (0x176, 0x176); + (0x178, 0x179); + (0x17b, 0x17b); + (0x17d, 0x17d); + (0x181, 0x182); + (0x184, 0x184); + (0x186, 0x187); + (0x189, 0x18b); + (0x18e, 0x191); + (0x193, 0x194); + (0x196, 0x198); + (0x19c, 0x19d); + (0x19f, 0x1a0); + (0x1a2, 0x1a2); + (0x1a4, 0x1a4); + (0x1a6, 0x1a7); + (0x1a9, 0x1a9); + (0x1ac, 0x1ac); + (0x1ae, 0x1af); + (0x1b1, 0x1b3); + (0x1b5, 0x1b5); + (0x1b7, 0x1b8); + (0x1bc, 0x1bc); + (0x1c4, 0x1c4); + (0x1c7, 0x1c7); + (0x1ca, 0x1ca); + (0x1cd, 0x1cd); + (0x1cf, 0x1cf); + (0x1d1, 0x1d1); + (0x1d3, 0x1d3); + (0x1d5, 0x1d5); + (0x1d7, 0x1d7); + (0x1d9, 0x1d9); + (0x1db, 0x1db); + (0x1de, 0x1de); + (0x1e0, 0x1e0); + (0x1e2, 0x1e2); + (0x1e4, 0x1e4); + (0x1e6, 0x1e6); + (0x1e8, 0x1e8); + (0x1ea, 0x1ea); + (0x1ec, 0x1ec); + (0x1ee, 0x1ee); + (0x1f1, 0x1f1); + (0x1f4, 0x1f4); + (0x1f6, 0x1f8); + (0x1fa, 0x1fa); + (0x1fc, 0x1fc); + (0x1fe, 0x1fe); + (0x200, 0x200); + (0x202, 0x202); + (0x204, 0x204); + (0x206, 0x206); + (0x208, 0x208); + (0x20a, 0x20a); + (0x20c, 0x20c); + (0x20e, 0x20e); + (0x210, 0x210); + (0x212, 0x212); + (0x214, 0x214); + (0x216, 0x216); + (0x218, 0x218); + (0x21a, 0x21a); + (0x21c, 0x21c); + (0x21e, 0x21e); + (0x220, 0x220); + (0x222, 0x222); + (0x224, 0x224); + (0x226, 0x226); + (0x228, 0x228); + (0x22a, 0x22a); + (0x22c, 0x22c); + (0x22e, 0x22e); + (0x230, 0x230); + (0x232, 0x232); + (0x23a, 0x23b); + (0x23d, 0x23e); + (0x241, 0x241); + (0x243, 0x246); + (0x248, 0x248); + (0x24a, 0x24a); + (0x24c, 0x24c); + (0x24e, 0x24e); + (0x370, 0x370); + (0x372, 0x372); + (0x376, 0x376); + (0x37f, 0x37f); + (0x386, 0x386); + (0x388, 0x38a); + (0x38c, 0x38c); + (0x38e, 0x38f); + (0x391, 0x3a1); + (0x3a3, 0x3ab); + (0x3cf, 0x3cf); + (0x3d2, 0x3d4); + (0x3d8, 0x3d8); + (0x3da, 0x3da); + (0x3dc, 0x3dc); + (0x3de, 0x3de); + (0x3e0, 0x3e0); + (0x3e2, 0x3e2); + (0x3e4, 0x3e4); + (0x3e6, 0x3e6); + (0x3e8, 0x3e8); + (0x3ea, 0x3ea); + (0x3ec, 0x3ec); + (0x3ee, 0x3ee); + (0x3f4, 0x3f4); + (0x3f7, 0x3f7); + (0x3f9, 0x3fa); + (0x3fd, 0x42f); + (0x460, 0x460); + (0x462, 0x462); + (0x464, 0x464); + (0x466, 0x466); + (0x468, 0x468); + (0x46a, 0x46a); + (0x46c, 0x46c); + (0x46e, 0x46e); + (0x470, 0x470); + (0x472, 0x472); + (0x474, 0x474); + (0x476, 0x476); + (0x478, 0x478); + (0x47a, 0x47a); + (0x47c, 0x47c); + (0x47e, 0x47e); + (0x480, 0x480); + (0x48a, 0x48a); + (0x48c, 0x48c); + (0x48e, 0x48e); + (0x490, 0x490); + (0x492, 0x492); + (0x494, 0x494); + (0x496, 0x496); + (0x498, 0x498); + (0x49a, 0x49a); + (0x49c, 0x49c); + (0x49e, 0x49e); + (0x4a0, 0x4a0); + (0x4a2, 0x4a2); + (0x4a4, 0x4a4); + (0x4a6, 0x4a6); + (0x4a8, 0x4a8); + (0x4aa, 0x4aa); + (0x4ac, 0x4ac); + (0x4ae, 0x4ae); + (0x4b0, 0x4b0); + (0x4b2, 0x4b2); + (0x4b4, 0x4b4); + (0x4b6, 0x4b6); + (0x4b8, 0x4b8); + (0x4ba, 0x4ba); + (0x4bc, 0x4bc); + (0x4be, 0x4be); + (0x4c0, 0x4c1); + (0x4c3, 0x4c3); + (0x4c5, 0x4c5); + (0x4c7, 0x4c7); + (0x4c9, 0x4c9); + (0x4cb, 0x4cb); + (0x4cd, 0x4cd); + (0x4d0, 0x4d0); + (0x4d2, 0x4d2); + (0x4d4, 0x4d4); + (0x4d6, 0x4d6); + (0x4d8, 0x4d8); + (0x4da, 0x4da); + (0x4dc, 0x4dc); + (0x4de, 0x4de); + (0x4e0, 0x4e0); + (0x4e2, 0x4e2); + (0x4e4, 0x4e4); + (0x4e6, 0x4e6); + (0x4e8, 0x4e8); + (0x4ea, 0x4ea); + (0x4ec, 0x4ec); + (0x4ee, 0x4ee); + (0x4f0, 0x4f0); + (0x4f2, 0x4f2); + (0x4f4, 0x4f4); + (0x4f6, 0x4f6); + (0x4f8, 0x4f8); + (0x4fa, 0x4fa); + (0x4fc, 0x4fc); + (0x4fe, 0x4fe); + (0x500, 0x500); + (0x502, 0x502); + (0x504, 0x504); + (0x506, 0x506); + (0x508, 0x508); + (0x50a, 0x50a); + (0x50c, 0x50c); + (0x50e, 0x50e); + (0x510, 0x510); + (0x512, 0x512); + (0x514, 0x514); + (0x516, 0x516); + (0x518, 0x518); + (0x51a, 0x51a); + (0x51c, 0x51c); + (0x51e, 0x51e); + (0x520, 0x520); + (0x522, 0x522); + (0x524, 0x524); + (0x526, 0x526); + (0x528, 0x528); + (0x52a, 0x52a); + (0x52c, 0x52c); + (0x52e, 0x52e); + (0x531, 0x556); + (0x10a0, 0x10c5); + (0x10c7, 0x10c7); + (0x10cd, 0x10cd); + (0x13a0, 0x13f5); + (0x1c90, 0x1cba); + (0x1cbd, 0x1cbf); + (0x1e00, 0x1e00); + (0x1e02, 0x1e02); + (0x1e04, 0x1e04); + (0x1e06, 0x1e06); + (0x1e08, 0x1e08); + (0x1e0a, 0x1e0a); + (0x1e0c, 0x1e0c); + (0x1e0e, 0x1e0e); + (0x1e10, 0x1e10); + (0x1e12, 0x1e12); + (0x1e14, 0x1e14); + (0x1e16, 0x1e16); + (0x1e18, 0x1e18); + (0x1e1a, 0x1e1a); + (0x1e1c, 0x1e1c); + (0x1e1e, 0x1e1e); + (0x1e20, 0x1e20); + (0x1e22, 0x1e22); + (0x1e24, 0x1e24); + (0x1e26, 0x1e26); + (0x1e28, 0x1e28); + (0x1e2a, 0x1e2a); + (0x1e2c, 0x1e2c); + (0x1e2e, 0x1e2e); + (0x1e30, 0x1e30); + (0x1e32, 0x1e32); + (0x1e34, 0x1e34); + (0x1e36, 0x1e36); + (0x1e38, 0x1e38); + (0x1e3a, 0x1e3a); + (0x1e3c, 0x1e3c); + (0x1e3e, 0x1e3e); + (0x1e40, 0x1e40); + (0x1e42, 0x1e42); + (0x1e44, 0x1e44); + (0x1e46, 0x1e46); + (0x1e48, 0x1e48); + (0x1e4a, 0x1e4a); + (0x1e4c, 0x1e4c); + (0x1e4e, 0x1e4e); + (0x1e50, 0x1e50); + (0x1e52, 0x1e52); + (0x1e54, 0x1e54); + (0x1e56, 0x1e56); + (0x1e58, 0x1e58); + (0x1e5a, 0x1e5a); + (0x1e5c, 0x1e5c); + (0x1e5e, 0x1e5e); + (0x1e60, 0x1e60); + (0x1e62, 0x1e62); + (0x1e64, 0x1e64); + (0x1e66, 0x1e66); + (0x1e68, 0x1e68); + (0x1e6a, 0x1e6a); + (0x1e6c, 0x1e6c); + (0x1e6e, 0x1e6e); + (0x1e70, 0x1e70); + (0x1e72, 0x1e72); + (0x1e74, 0x1e74); + (0x1e76, 0x1e76); + (0x1e78, 0x1e78); + (0x1e7a, 0x1e7a); + (0x1e7c, 0x1e7c); + (0x1e7e, 0x1e7e); + (0x1e80, 0x1e80); + (0x1e82, 0x1e82); + (0x1e84, 0x1e84); + (0x1e86, 0x1e86); + (0x1e88, 0x1e88); + (0x1e8a, 0x1e8a); + (0x1e8c, 0x1e8c); + (0x1e8e, 0x1e8e); + (0x1e90, 0x1e90); + (0x1e92, 0x1e92); + (0x1e94, 0x1e94); + (0x1e9e, 0x1e9e); + (0x1ea0, 0x1ea0); + (0x1ea2, 0x1ea2); + (0x1ea4, 0x1ea4); + (0x1ea6, 0x1ea6); + (0x1ea8, 0x1ea8); + (0x1eaa, 0x1eaa); + (0x1eac, 0x1eac); + (0x1eae, 0x1eae); + (0x1eb0, 0x1eb0); + (0x1eb2, 0x1eb2); + (0x1eb4, 0x1eb4); + (0x1eb6, 0x1eb6); + (0x1eb8, 0x1eb8); + (0x1eba, 0x1eba); + (0x1ebc, 0x1ebc); + (0x1ebe, 0x1ebe); + (0x1ec0, 0x1ec0); + (0x1ec2, 0x1ec2); + (0x1ec4, 0x1ec4); + (0x1ec6, 0x1ec6); + (0x1ec8, 0x1ec8); + (0x1eca, 0x1eca); + (0x1ecc, 0x1ecc); + (0x1ece, 0x1ece); + (0x1ed0, 0x1ed0); + (0x1ed2, 0x1ed2); + (0x1ed4, 0x1ed4); + (0x1ed6, 0x1ed6); + (0x1ed8, 0x1ed8); + (0x1eda, 0x1eda); + (0x1edc, 0x1edc); + (0x1ede, 0x1ede); + (0x1ee0, 0x1ee0); + (0x1ee2, 0x1ee2); + (0x1ee4, 0x1ee4); + (0x1ee6, 0x1ee6); + (0x1ee8, 0x1ee8); + (0x1eea, 0x1eea); + (0x1eec, 0x1eec); + (0x1eee, 0x1eee); + (0x1ef0, 0x1ef0); + (0x1ef2, 0x1ef2); + (0x1ef4, 0x1ef4); + (0x1ef6, 0x1ef6); + (0x1ef8, 0x1ef8); + (0x1efa, 0x1efa); + (0x1efc, 0x1efc); + (0x1efe, 0x1efe); + (0x1f08, 0x1f0f); + (0x1f18, 0x1f1d); + (0x1f28, 0x1f2f); + (0x1f38, 0x1f3f); + (0x1f48, 0x1f4d); + (0x1f59, 0x1f59); + (0x1f5b, 0x1f5b); + (0x1f5d, 0x1f5d); + (0x1f5f, 0x1f5f); + (0x1f68, 0x1f6f); + (0x1fb8, 0x1fbb); + (0x1fc8, 0x1fcb); + (0x1fd8, 0x1fdb); + (0x1fe8, 0x1fec); + (0x1ff8, 0x1ffb); + (0x2102, 0x2102); + (0x2107, 0x2107); + (0x210b, 0x210d); + (0x2110, 0x2112); + (0x2115, 0x2115); + (0x2119, 0x211d); + (0x2124, 0x2124); + (0x2126, 0x2126); + (0x2128, 0x2128); + (0x212a, 0x212d); + (0x2130, 0x2133); + (0x213e, 0x213f); + (0x2145, 0x2145); + (0x2160, 0x216f); + (0x2183, 0x2183); + (0x24b6, 0x24cf); + (0x2c00, 0x2c2f); + (0x2c60, 0x2c60); + (0x2c62, 0x2c64); + (0x2c67, 0x2c67); + (0x2c69, 0x2c69); + (0x2c6b, 0x2c6b); + (0x2c6d, 0x2c70); + (0x2c72, 0x2c72); + (0x2c75, 0x2c75); + (0x2c7e, 0x2c80); + (0x2c82, 0x2c82); + (0x2c84, 0x2c84); + (0x2c86, 0x2c86); + (0x2c88, 0x2c88); + (0x2c8a, 0x2c8a); + (0x2c8c, 0x2c8c); + (0x2c8e, 0x2c8e); + (0x2c90, 0x2c90); + (0x2c92, 0x2c92); + (0x2c94, 0x2c94); + (0x2c96, 0x2c96); + (0x2c98, 0x2c98); + (0x2c9a, 0x2c9a); + (0x2c9c, 0x2c9c); + (0x2c9e, 0x2c9e); + (0x2ca0, 0x2ca0); + (0x2ca2, 0x2ca2); + (0x2ca4, 0x2ca4); + (0x2ca6, 0x2ca6); + (0x2ca8, 0x2ca8); + (0x2caa, 0x2caa); + (0x2cac, 0x2cac); + (0x2cae, 0x2cae); + (0x2cb0, 0x2cb0); + (0x2cb2, 0x2cb2); + (0x2cb4, 0x2cb4); + (0x2cb6, 0x2cb6); + (0x2cb8, 0x2cb8); + (0x2cba, 0x2cba); + (0x2cbc, 0x2cbc); + (0x2cbe, 0x2cbe); + (0x2cc0, 0x2cc0); + (0x2cc2, 0x2cc2); + (0x2cc4, 0x2cc4); + (0x2cc6, 0x2cc6); + (0x2cc8, 0x2cc8); + (0x2cca, 0x2cca); + (0x2ccc, 0x2ccc); + (0x2cce, 0x2cce); + (0x2cd0, 0x2cd0); + (0x2cd2, 0x2cd2); + (0x2cd4, 0x2cd4); + (0x2cd6, 0x2cd6); + (0x2cd8, 0x2cd8); + (0x2cda, 0x2cda); + (0x2cdc, 0x2cdc); + (0x2cde, 0x2cde); + (0x2ce0, 0x2ce0); + (0x2ce2, 0x2ce2); + (0x2ceb, 0x2ceb); + (0x2ced, 0x2ced); + (0x2cf2, 0x2cf2); + (0xa640, 0xa640); + (0xa642, 0xa642); + (0xa644, 0xa644); + (0xa646, 0xa646); + (0xa648, 0xa648); + (0xa64a, 0xa64a); + (0xa64c, 0xa64c); + (0xa64e, 0xa64e); + (0xa650, 0xa650); + (0xa652, 0xa652); + (0xa654, 0xa654); + (0xa656, 0xa656); + (0xa658, 0xa658); + (0xa65a, 0xa65a); + (0xa65c, 0xa65c); + (0xa65e, 0xa65e); + (0xa660, 0xa660); + (0xa662, 0xa662); + (0xa664, 0xa664); + (0xa666, 0xa666); + (0xa668, 0xa668); + (0xa66a, 0xa66a); + (0xa66c, 0xa66c); + (0xa680, 0xa680); + (0xa682, 0xa682); + (0xa684, 0xa684); + (0xa686, 0xa686); + (0xa688, 0xa688); + (0xa68a, 0xa68a); + (0xa68c, 0xa68c); + (0xa68e, 0xa68e); + (0xa690, 0xa690); + (0xa692, 0xa692); + (0xa694, 0xa694); + (0xa696, 0xa696); + (0xa698, 0xa698); + (0xa69a, 0xa69a); + (0xa722, 0xa722); + (0xa724, 0xa724); + (0xa726, 0xa726); + (0xa728, 0xa728); + (0xa72a, 0xa72a); + (0xa72c, 0xa72c); + (0xa72e, 0xa72e); + (0xa732, 0xa732); + (0xa734, 0xa734); + (0xa736, 0xa736); + (0xa738, 0xa738); + (0xa73a, 0xa73a); + (0xa73c, 0xa73c); + (0xa73e, 0xa73e); + (0xa740, 0xa740); + (0xa742, 0xa742); + (0xa744, 0xa744); + (0xa746, 0xa746); + (0xa748, 0xa748); + (0xa74a, 0xa74a); + (0xa74c, 0xa74c); + (0xa74e, 0xa74e); + (0xa750, 0xa750); + (0xa752, 0xa752); + (0xa754, 0xa754); + (0xa756, 0xa756); + (0xa758, 0xa758); + (0xa75a, 0xa75a); + (0xa75c, 0xa75c); + (0xa75e, 0xa75e); + (0xa760, 0xa760); + (0xa762, 0xa762); + (0xa764, 0xa764); + (0xa766, 0xa766); + (0xa768, 0xa768); + (0xa76a, 0xa76a); + (0xa76c, 0xa76c); + (0xa76e, 0xa76e); + (0xa779, 0xa779); + (0xa77b, 0xa77b); + (0xa77d, 0xa77e); + (0xa780, 0xa780); + (0xa782, 0xa782); + (0xa784, 0xa784); + (0xa786, 0xa786); + (0xa78b, 0xa78b); + (0xa78d, 0xa78d); + (0xa790, 0xa790); + (0xa792, 0xa792); + (0xa796, 0xa796); + (0xa798, 0xa798); + (0xa79a, 0xa79a); + (0xa79c, 0xa79c); + (0xa79e, 0xa79e); + (0xa7a0, 0xa7a0); + (0xa7a2, 0xa7a2); + (0xa7a4, 0xa7a4); + (0xa7a6, 0xa7a6); + (0xa7a8, 0xa7a8); + (0xa7aa, 0xa7ae); + (0xa7b0, 0xa7b4); + (0xa7b6, 0xa7b6); + (0xa7b8, 0xa7b8); + (0xa7ba, 0xa7ba); + (0xa7bc, 0xa7bc); + (0xa7be, 0xa7be); + (0xa7c0, 0xa7c0); + (0xa7c2, 0xa7c2); + (0xa7c4, 0xa7c7); + (0xa7c9, 0xa7c9); + (0xa7d0, 0xa7d0); + (0xa7d6, 0xa7d6); + (0xa7d8, 0xa7d8); + (0xa7f5, 0xa7f5); + (0xff21, 0xff3a); + (0x10400, 0x10427); + (0x104b0, 0x104d3); + (0x10570, 0x1057a); + (0x1057c, 0x1058a); + (0x1058c, 0x10592); + (0x10594, 0x10595); + (0x10c80, 0x10cb2); + (0x118a0, 0x118bf); + (0x16e40, 0x16e5f); + (0x1d400, 0x1d419); + (0x1d434, 0x1d44d); + (0x1d468, 0x1d481); + (0x1d49c, 0x1d49c); + (0x1d49e, 0x1d49f); + (0x1d4a2, 0x1d4a2); + (0x1d4a5, 0x1d4a6); + (0x1d4a9, 0x1d4ac); + (0x1d4ae, 0x1d4b5); + (0x1d4d0, 0x1d4e9); + (0x1d504, 0x1d505); + (0x1d507, 0x1d50a); + (0x1d50d, 0x1d514); + (0x1d516, 0x1d51c); + (0x1d538, 0x1d539); + (0x1d53b, 0x1d53e); + (0x1d540, 0x1d544); + (0x1d546, 0x1d546); + (0x1d54a, 0x1d550); + (0x1d56c, 0x1d585); + (0x1d5a0, 0x1d5b9); + (0x1d5d4, 0x1d5ed); + (0x1d608, 0x1d621); + (0x1d63c, 0x1d655); + (0x1d670, 0x1d689); + (0x1d6a8, 0x1d6c0); + (0x1d6e2, 0x1d6fa); + (0x1d71c, 0x1d734); + (0x1d756, 0x1d76e); + (0x1d790, 0x1d7a8); + (0x1d7ca, 0x1d7ca); + (0x1e900, 0x1e921); + (0x1f130, 0x1f149); + (0x1f150, 0x1f169); + (0x1f170, 0x1f189); + ] let white_space = - [0x9, 0xd; 0x20, 0x20; 0x85, 0x85; 0xa0, 0xa0; 0x1680, 0x1680; - 0x2000, 0x200a; 0x2028, 0x2028; 0x2029, 0x2029; 0x202f, 0x202f; 0x205f, 0x205f; - 0x3000, 0x3000] + [ + (0x9, 0xd); + (0x20, 0x20); + (0x85, 0x85); + (0xa0, 0xa0); + (0x1680, 0x1680); + (0x2000, 0x200a); + (0x2028, 0x2028); + (0x2029, 0x2029); + (0x202f, 0x202f); + (0x205f, 0x205f); + (0x3000, 0x3000); + ] let xid_continue = - [0x30, 0x39; 0x41, 0x5a; 0x5f, 0x5f; 0x61, 0x7a; 0xaa, 0xaa; - 0xb5, 0xb5; 0xb7, 0xb7; 0xba, 0xba; 0xc0, 0xd6; 0xd8, 0xf6; - 0xf8, 0x1ba; 0x1bb, 0x1bb; 0x1bc, 0x1bf; 0x1c0, 0x1c3; 0x1c4, 0x293; - 0x294, 0x294; 0x295, 0x2af; 0x2b0, 0x2c1; 0x2c6, 0x2d1; 0x2e0, 0x2e4; - 0x2ec, 0x2ec; 0x2ee, 0x2ee; 0x300, 0x36f; 0x370, 0x373; 0x374, 0x374; - 0x376, 0x377; 0x37b, 0x37d; 0x37f, 0x37f; 0x386, 0x386; 0x387, 0x387; - 0x388, 0x38a; 0x38c, 0x38c; 0x38e, 0x3a1; 0x3a3, 0x3f5; 0x3f7, 0x481; - 0x483, 0x487; 0x48a, 0x52f; 0x531, 0x556; 0x559, 0x559; 0x560, 0x588; - 0x591, 0x5bd; 0x5bf, 0x5bf; 0x5c1, 0x5c2; 0x5c4, 0x5c5; 0x5c7, 0x5c7; - 0x5d0, 0x5ea; 0x5ef, 0x5f2; 0x610, 0x61a; 0x620, 0x63f; 0x640, 0x640; - 0x641, 0x64a; 0x64b, 0x65f; 0x660, 0x669; 0x66e, 0x66f; 0x670, 0x670; - 0x671, 0x6d3; 0x6d5, 0x6d5; 0x6d6, 0x6dc; 0x6df, 0x6e4; 0x6e5, 0x6e6; - 0x6e7, 0x6e8; 0x6ea, 0x6ed; 0x6ee, 0x6ef; 0x6f0, 0x6f9; 0x6fa, 0x6fc; - 0x6ff, 0x6ff; 0x710, 0x710; 0x711, 0x711; 0x712, 0x72f; 0x730, 0x74a; - 0x74d, 0x7a5; 0x7a6, 0x7b0; 0x7b1, 0x7b1; 0x7c0, 0x7c9; 0x7ca, 0x7ea; - 0x7eb, 0x7f3; 0x7f4, 0x7f5; 0x7fa, 0x7fa; 0x7fd, 0x7fd; 0x800, 0x815; - 0x816, 0x819; 0x81a, 0x81a; 0x81b, 0x823; 0x824, 0x824; 0x825, 0x827; - 0x828, 0x828; 0x829, 0x82d; 0x840, 0x858; 0x859, 0x85b; 0x860, 0x86a; - 0x870, 0x887; 0x889, 0x88e; 0x898, 0x89f; 0x8a0, 0x8c8; 0x8c9, 0x8c9; - 0x8ca, 0x8e1; 0x8e3, 0x902; 0x903, 0x903; 0x904, 0x939; 0x93a, 0x93a; - 0x93b, 0x93b; 0x93c, 0x93c; 0x93d, 0x93d; 0x93e, 0x940; 0x941, 0x948; - 0x949, 0x94c; 0x94d, 0x94d; 0x94e, 0x94f; 0x950, 0x950; 0x951, 0x957; - 0x958, 0x961; 0x962, 0x963; 0x966, 0x96f; 0x971, 0x971; 0x972, 0x980; - 0x981, 0x981; 0x982, 0x983; 0x985, 0x98c; 0x98f, 0x990; 0x993, 0x9a8; - 0x9aa, 0x9b0; 0x9b2, 0x9b2; 0x9b6, 0x9b9; 0x9bc, 0x9bc; 0x9bd, 0x9bd; - 0x9be, 0x9c0; 0x9c1, 0x9c4; 0x9c7, 0x9c8; 0x9cb, 0x9cc; 0x9cd, 0x9cd; - 0x9ce, 0x9ce; 0x9d7, 0x9d7; 0x9dc, 0x9dd; 0x9df, 0x9e1; 0x9e2, 0x9e3; - 0x9e6, 0x9ef; 0x9f0, 0x9f1; 0x9fc, 0x9fc; 0x9fe, 0x9fe; 0xa01, 0xa02; - 0xa03, 0xa03; 0xa05, 0xa0a; 0xa0f, 0xa10; 0xa13, 0xa28; 0xa2a, 0xa30; - 0xa32, 0xa33; 0xa35, 0xa36; 0xa38, 0xa39; 0xa3c, 0xa3c; 0xa3e, 0xa40; - 0xa41, 0xa42; 0xa47, 0xa48; 0xa4b, 0xa4d; 0xa51, 0xa51; 0xa59, 0xa5c; - 0xa5e, 0xa5e; 0xa66, 0xa6f; 0xa70, 0xa71; 0xa72, 0xa74; 0xa75, 0xa75; - 0xa81, 0xa82; 0xa83, 0xa83; 0xa85, 0xa8d; 0xa8f, 0xa91; 0xa93, 0xaa8; - 0xaaa, 0xab0; 0xab2, 0xab3; 0xab5, 0xab9; 0xabc, 0xabc; 0xabd, 0xabd; - 0xabe, 0xac0; 0xac1, 0xac5; 0xac7, 0xac8; 0xac9, 0xac9; 0xacb, 0xacc; - 0xacd, 0xacd; 0xad0, 0xad0; 0xae0, 0xae1; 0xae2, 0xae3; 0xae6, 0xaef; - 0xaf9, 0xaf9; 0xafa, 0xaff; 0xb01, 0xb01; 0xb02, 0xb03; 0xb05, 0xb0c; - 0xb0f, 0xb10; 0xb13, 0xb28; 0xb2a, 0xb30; 0xb32, 0xb33; 0xb35, 0xb39; - 0xb3c, 0xb3c; 0xb3d, 0xb3d; 0xb3e, 0xb3e; 0xb3f, 0xb3f; 0xb40, 0xb40; - 0xb41, 0xb44; 0xb47, 0xb48; 0xb4b, 0xb4c; 0xb4d, 0xb4d; 0xb55, 0xb56; - 0xb57, 0xb57; 0xb5c, 0xb5d; 0xb5f, 0xb61; 0xb62, 0xb63; 0xb66, 0xb6f; - 0xb71, 0xb71; 0xb82, 0xb82; 0xb83, 0xb83; 0xb85, 0xb8a; 0xb8e, 0xb90; - 0xb92, 0xb95; 0xb99, 0xb9a; 0xb9c, 0xb9c; 0xb9e, 0xb9f; 0xba3, 0xba4; - 0xba8, 0xbaa; 0xbae, 0xbb9; 0xbbe, 0xbbf; 0xbc0, 0xbc0; 0xbc1, 0xbc2; - 0xbc6, 0xbc8; 0xbca, 0xbcc; 0xbcd, 0xbcd; 0xbd0, 0xbd0; 0xbd7, 0xbd7; - 0xbe6, 0xbef; 0xc00, 0xc00; 0xc01, 0xc03; 0xc04, 0xc04; 0xc05, 0xc0c; - 0xc0e, 0xc10; 0xc12, 0xc28; 0xc2a, 0xc39; 0xc3c, 0xc3c; 0xc3d, 0xc3d; - 0xc3e, 0xc40; 0xc41, 0xc44; 0xc46, 0xc48; 0xc4a, 0xc4d; 0xc55, 0xc56; - 0xc58, 0xc5a; 0xc5d, 0xc5d; 0xc60, 0xc61; 0xc62, 0xc63; 0xc66, 0xc6f; - 0xc80, 0xc80; 0xc81, 0xc81; 0xc82, 0xc83; 0xc85, 0xc8c; 0xc8e, 0xc90; - 0xc92, 0xca8; 0xcaa, 0xcb3; 0xcb5, 0xcb9; 0xcbc, 0xcbc; 0xcbd, 0xcbd; - 0xcbe, 0xcbe; 0xcbf, 0xcbf; 0xcc0, 0xcc4; 0xcc6, 0xcc6; 0xcc7, 0xcc8; - 0xcca, 0xccb; 0xccc, 0xccd; 0xcd5, 0xcd6; 0xcdd, 0xcde; 0xce0, 0xce1; - 0xce2, 0xce3; 0xce6, 0xcef; 0xcf1, 0xcf2; 0xd00, 0xd01; 0xd02, 0xd03; - 0xd04, 0xd0c; 0xd0e, 0xd10; 0xd12, 0xd3a; 0xd3b, 0xd3c; 0xd3d, 0xd3d; - 0xd3e, 0xd40; 0xd41, 0xd44; 0xd46, 0xd48; 0xd4a, 0xd4c; 0xd4d, 0xd4d; - 0xd4e, 0xd4e; 0xd54, 0xd56; 0xd57, 0xd57; 0xd5f, 0xd61; 0xd62, 0xd63; - 0xd66, 0xd6f; 0xd7a, 0xd7f; 0xd81, 0xd81; 0xd82, 0xd83; 0xd85, 0xd96; - 0xd9a, 0xdb1; 0xdb3, 0xdbb; 0xdbd, 0xdbd; 0xdc0, 0xdc6; 0xdca, 0xdca; - 0xdcf, 0xdd1; 0xdd2, 0xdd4; 0xdd6, 0xdd6; 0xdd8, 0xddf; 0xde6, 0xdef; - 0xdf2, 0xdf3; 0xe01, 0xe30; 0xe31, 0xe31; 0xe32, 0xe33; 0xe34, 0xe3a; - 0xe40, 0xe45; 0xe46, 0xe46; 0xe47, 0xe4e; 0xe50, 0xe59; 0xe81, 0xe82; - 0xe84, 0xe84; 0xe86, 0xe8a; 0xe8c, 0xea3; 0xea5, 0xea5; 0xea7, 0xeb0; - 0xeb1, 0xeb1; 0xeb2, 0xeb3; 0xeb4, 0xebc; 0xebd, 0xebd; 0xec0, 0xec4; - 0xec6, 0xec6; 0xec8, 0xecd; 0xed0, 0xed9; 0xedc, 0xedf; 0xf00, 0xf00; - 0xf18, 0xf19; 0xf20, 0xf29; 0xf35, 0xf35; 0xf37, 0xf37; 0xf39, 0xf39; - 0xf3e, 0xf3f; 0xf40, 0xf47; 0xf49, 0xf6c; 0xf71, 0xf7e; 0xf7f, 0xf7f; - 0xf80, 0xf84; 0xf86, 0xf87; 0xf88, 0xf8c; 0xf8d, 0xf97; 0xf99, 0xfbc; - 0xfc6, 0xfc6; 0x1000, 0x102a; 0x102b, 0x102c; 0x102d, 0x1030; 0x1031, 0x1031; - 0x1032, 0x1037; 0x1038, 0x1038; 0x1039, 0x103a; 0x103b, 0x103c; 0x103d, 0x103e; - 0x103f, 0x103f; 0x1040, 0x1049; 0x1050, 0x1055; 0x1056, 0x1057; 0x1058, 0x1059; - 0x105a, 0x105d; 0x105e, 0x1060; 0x1061, 0x1061; 0x1062, 0x1064; 0x1065, 0x1066; - 0x1067, 0x106d; 0x106e, 0x1070; 0x1071, 0x1074; 0x1075, 0x1081; 0x1082, 0x1082; - 0x1083, 0x1084; 0x1085, 0x1086; 0x1087, 0x108c; 0x108d, 0x108d; 0x108e, 0x108e; - 0x108f, 0x108f; 0x1090, 0x1099; 0x109a, 0x109c; 0x109d, 0x109d; 0x10a0, 0x10c5; - 0x10c7, 0x10c7; 0x10cd, 0x10cd; 0x10d0, 0x10fa; 0x10fc, 0x10fc; 0x10fd, 0x10ff; - 0x1100, 0x1248; 0x124a, 0x124d; 0x1250, 0x1256; 0x1258, 0x1258; 0x125a, 0x125d; - 0x1260, 0x1288; 0x128a, 0x128d; 0x1290, 0x12b0; 0x12b2, 0x12b5; 0x12b8, 0x12be; - 0x12c0, 0x12c0; 0x12c2, 0x12c5; 0x12c8, 0x12d6; 0x12d8, 0x1310; 0x1312, 0x1315; - 0x1318, 0x135a; 0x135d, 0x135f; 0x1369, 0x1371; 0x1380, 0x138f; 0x13a0, 0x13f5; - 0x13f8, 0x13fd; 0x1401, 0x166c; 0x166f, 0x167f; 0x1681, 0x169a; 0x16a0, 0x16ea; - 0x16ee, 0x16f0; 0x16f1, 0x16f8; 0x1700, 0x1711; 0x1712, 0x1714; 0x1715, 0x1715; - 0x171f, 0x1731; 0x1732, 0x1733; 0x1734, 0x1734; 0x1740, 0x1751; 0x1752, 0x1753; - 0x1760, 0x176c; 0x176e, 0x1770; 0x1772, 0x1773; 0x1780, 0x17b3; 0x17b4, 0x17b5; - 0x17b6, 0x17b6; 0x17b7, 0x17bd; 0x17be, 0x17c5; 0x17c6, 0x17c6; 0x17c7, 0x17c8; - 0x17c9, 0x17d3; 0x17d7, 0x17d7; 0x17dc, 0x17dc; 0x17dd, 0x17dd; 0x17e0, 0x17e9; - 0x180b, 0x180d; 0x180f, 0x180f; 0x1810, 0x1819; 0x1820, 0x1842; 0x1843, 0x1843; - 0x1844, 0x1878; 0x1880, 0x1884; 0x1885, 0x1886; 0x1887, 0x18a8; 0x18a9, 0x18a9; - 0x18aa, 0x18aa; 0x18b0, 0x18f5; 0x1900, 0x191e; 0x1920, 0x1922; 0x1923, 0x1926; - 0x1927, 0x1928; 0x1929, 0x192b; 0x1930, 0x1931; 0x1932, 0x1932; 0x1933, 0x1938; - 0x1939, 0x193b; 0x1946, 0x194f; 0x1950, 0x196d; 0x1970, 0x1974; 0x1980, 0x19ab; - 0x19b0, 0x19c9; 0x19d0, 0x19d9; 0x19da, 0x19da; 0x1a00, 0x1a16; 0x1a17, 0x1a18; - 0x1a19, 0x1a1a; 0x1a1b, 0x1a1b; 0x1a20, 0x1a54; 0x1a55, 0x1a55; 0x1a56, 0x1a56; - 0x1a57, 0x1a57; 0x1a58, 0x1a5e; 0x1a60, 0x1a60; 0x1a61, 0x1a61; 0x1a62, 0x1a62; - 0x1a63, 0x1a64; 0x1a65, 0x1a6c; 0x1a6d, 0x1a72; 0x1a73, 0x1a7c; 0x1a7f, 0x1a7f; - 0x1a80, 0x1a89; 0x1a90, 0x1a99; 0x1aa7, 0x1aa7; 0x1ab0, 0x1abd; 0x1abf, 0x1ace; - 0x1b00, 0x1b03; 0x1b04, 0x1b04; 0x1b05, 0x1b33; 0x1b34, 0x1b34; 0x1b35, 0x1b35; - 0x1b36, 0x1b3a; 0x1b3b, 0x1b3b; 0x1b3c, 0x1b3c; 0x1b3d, 0x1b41; 0x1b42, 0x1b42; - 0x1b43, 0x1b44; 0x1b45, 0x1b4c; 0x1b50, 0x1b59; 0x1b6b, 0x1b73; 0x1b80, 0x1b81; - 0x1b82, 0x1b82; 0x1b83, 0x1ba0; 0x1ba1, 0x1ba1; 0x1ba2, 0x1ba5; 0x1ba6, 0x1ba7; - 0x1ba8, 0x1ba9; 0x1baa, 0x1baa; 0x1bab, 0x1bad; 0x1bae, 0x1baf; 0x1bb0, 0x1bb9; - 0x1bba, 0x1be5; 0x1be6, 0x1be6; 0x1be7, 0x1be7; 0x1be8, 0x1be9; 0x1bea, 0x1bec; - 0x1bed, 0x1bed; 0x1bee, 0x1bee; 0x1bef, 0x1bf1; 0x1bf2, 0x1bf3; 0x1c00, 0x1c23; - 0x1c24, 0x1c2b; 0x1c2c, 0x1c33; 0x1c34, 0x1c35; 0x1c36, 0x1c37; 0x1c40, 0x1c49; - 0x1c4d, 0x1c4f; 0x1c50, 0x1c59; 0x1c5a, 0x1c77; 0x1c78, 0x1c7d; 0x1c80, 0x1c88; - 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 0x1cd0, 0x1cd2; 0x1cd4, 0x1ce0; 0x1ce1, 0x1ce1; - 0x1ce2, 0x1ce8; 0x1ce9, 0x1cec; 0x1ced, 0x1ced; 0x1cee, 0x1cf3; 0x1cf4, 0x1cf4; - 0x1cf5, 0x1cf6; 0x1cf7, 0x1cf7; 0x1cf8, 0x1cf9; 0x1cfa, 0x1cfa; 0x1d00, 0x1d2b; - 0x1d2c, 0x1d6a; 0x1d6b, 0x1d77; 0x1d78, 0x1d78; 0x1d79, 0x1d9a; 0x1d9b, 0x1dbf; - 0x1dc0, 0x1dff; 0x1e00, 0x1f15; 0x1f18, 0x1f1d; 0x1f20, 0x1f45; 0x1f48, 0x1f4d; - 0x1f50, 0x1f57; 0x1f59, 0x1f59; 0x1f5b, 0x1f5b; 0x1f5d, 0x1f5d; 0x1f5f, 0x1f7d; - 0x1f80, 0x1fb4; 0x1fb6, 0x1fbc; 0x1fbe, 0x1fbe; 0x1fc2, 0x1fc4; 0x1fc6, 0x1fcc; - 0x1fd0, 0x1fd3; 0x1fd6, 0x1fdb; 0x1fe0, 0x1fec; 0x1ff2, 0x1ff4; 0x1ff6, 0x1ffc; - 0x203f, 0x2040; 0x2054, 0x2054; 0x2071, 0x2071; 0x207f, 0x207f; 0x2090, 0x209c; - 0x20d0, 0x20dc; 0x20e1, 0x20e1; 0x20e5, 0x20f0; 0x2102, 0x2102; 0x2107, 0x2107; - 0x210a, 0x2113; 0x2115, 0x2115; 0x2118, 0x2118; 0x2119, 0x211d; 0x2124, 0x2124; - 0x2126, 0x2126; 0x2128, 0x2128; 0x212a, 0x212d; 0x212e, 0x212e; 0x212f, 0x2134; - 0x2135, 0x2138; 0x2139, 0x2139; 0x213c, 0x213f; 0x2145, 0x2149; 0x214e, 0x214e; - 0x2160, 0x2182; 0x2183, 0x2184; 0x2185, 0x2188; 0x2c00, 0x2c7b; 0x2c7c, 0x2c7d; - 0x2c7e, 0x2ce4; 0x2ceb, 0x2cee; 0x2cef, 0x2cf1; 0x2cf2, 0x2cf3; 0x2d00, 0x2d25; - 0x2d27, 0x2d27; 0x2d2d, 0x2d2d; 0x2d30, 0x2d67; 0x2d6f, 0x2d6f; 0x2d7f, 0x2d7f; - 0x2d80, 0x2d96; 0x2da0, 0x2da6; 0x2da8, 0x2dae; 0x2db0, 0x2db6; 0x2db8, 0x2dbe; - 0x2dc0, 0x2dc6; 0x2dc8, 0x2dce; 0x2dd0, 0x2dd6; 0x2dd8, 0x2dde; 0x2de0, 0x2dff; - 0x3005, 0x3005; 0x3006, 0x3006; 0x3007, 0x3007; 0x3021, 0x3029; 0x302a, 0x302d; - 0x302e, 0x302f; 0x3031, 0x3035; 0x3038, 0x303a; 0x303b, 0x303b; 0x303c, 0x303c; - 0x3041, 0x3096; 0x3099, 0x309a; 0x309d, 0x309e; 0x309f, 0x309f; 0x30a1, 0x30fa; - 0x30fc, 0x30fe; 0x30ff, 0x30ff; 0x3105, 0x312f; 0x3131, 0x318e; 0x31a0, 0x31bf; - 0x31f0, 0x31ff; 0x3400, 0x4dbf; 0x4e00, 0xa014; 0xa015, 0xa015; 0xa016, 0xa48c; - 0xa4d0, 0xa4f7; 0xa4f8, 0xa4fd; 0xa500, 0xa60b; 0xa60c, 0xa60c; 0xa610, 0xa61f; - 0xa620, 0xa629; 0xa62a, 0xa62b; 0xa640, 0xa66d; 0xa66e, 0xa66e; 0xa66f, 0xa66f; - 0xa674, 0xa67d; 0xa67f, 0xa67f; 0xa680, 0xa69b; 0xa69c, 0xa69d; 0xa69e, 0xa69f; - 0xa6a0, 0xa6e5; 0xa6e6, 0xa6ef; 0xa6f0, 0xa6f1; 0xa717, 0xa71f; 0xa722, 0xa76f; - 0xa770, 0xa770; 0xa771, 0xa787; 0xa788, 0xa788; 0xa78b, 0xa78e; 0xa78f, 0xa78f; - 0xa790, 0xa7ca; 0xa7d0, 0xa7d1; 0xa7d3, 0xa7d3; 0xa7d5, 0xa7d9; 0xa7f2, 0xa7f4; - 0xa7f5, 0xa7f6; 0xa7f7, 0xa7f7; 0xa7f8, 0xa7f9; 0xa7fa, 0xa7fa; 0xa7fb, 0xa801; - 0xa802, 0xa802; 0xa803, 0xa805; 0xa806, 0xa806; 0xa807, 0xa80a; 0xa80b, 0xa80b; - 0xa80c, 0xa822; 0xa823, 0xa824; 0xa825, 0xa826; 0xa827, 0xa827; 0xa82c, 0xa82c; - 0xa840, 0xa873; 0xa880, 0xa881; 0xa882, 0xa8b3; 0xa8b4, 0xa8c3; 0xa8c4, 0xa8c5; - 0xa8d0, 0xa8d9; 0xa8e0, 0xa8f1; 0xa8f2, 0xa8f7; 0xa8fb, 0xa8fb; 0xa8fd, 0xa8fe; - 0xa8ff, 0xa8ff; 0xa900, 0xa909; 0xa90a, 0xa925; 0xa926, 0xa92d; 0xa930, 0xa946; - 0xa947, 0xa951; 0xa952, 0xa953; 0xa960, 0xa97c; 0xa980, 0xa982; 0xa983, 0xa983; - 0xa984, 0xa9b2; 0xa9b3, 0xa9b3; 0xa9b4, 0xa9b5; 0xa9b6, 0xa9b9; 0xa9ba, 0xa9bb; - 0xa9bc, 0xa9bd; 0xa9be, 0xa9c0; 0xa9cf, 0xa9cf; 0xa9d0, 0xa9d9; 0xa9e0, 0xa9e4; - 0xa9e5, 0xa9e5; 0xa9e6, 0xa9e6; 0xa9e7, 0xa9ef; 0xa9f0, 0xa9f9; 0xa9fa, 0xa9fe; - 0xaa00, 0xaa28; 0xaa29, 0xaa2e; 0xaa2f, 0xaa30; 0xaa31, 0xaa32; 0xaa33, 0xaa34; - 0xaa35, 0xaa36; 0xaa40, 0xaa42; 0xaa43, 0xaa43; 0xaa44, 0xaa4b; 0xaa4c, 0xaa4c; - 0xaa4d, 0xaa4d; 0xaa50, 0xaa59; 0xaa60, 0xaa6f; 0xaa70, 0xaa70; 0xaa71, 0xaa76; - 0xaa7a, 0xaa7a; 0xaa7b, 0xaa7b; 0xaa7c, 0xaa7c; 0xaa7d, 0xaa7d; 0xaa7e, 0xaaaf; - 0xaab0, 0xaab0; 0xaab1, 0xaab1; 0xaab2, 0xaab4; 0xaab5, 0xaab6; 0xaab7, 0xaab8; - 0xaab9, 0xaabd; 0xaabe, 0xaabf; 0xaac0, 0xaac0; 0xaac1, 0xaac1; 0xaac2, 0xaac2; - 0xaadb, 0xaadc; 0xaadd, 0xaadd; 0xaae0, 0xaaea; 0xaaeb, 0xaaeb; 0xaaec, 0xaaed; - 0xaaee, 0xaaef; 0xaaf2, 0xaaf2; 0xaaf3, 0xaaf4; 0xaaf5, 0xaaf5; 0xaaf6, 0xaaf6; - 0xab01, 0xab06; 0xab09, 0xab0e; 0xab11, 0xab16; 0xab20, 0xab26; 0xab28, 0xab2e; - 0xab30, 0xab5a; 0xab5c, 0xab5f; 0xab60, 0xab68; 0xab69, 0xab69; 0xab70, 0xabbf; - 0xabc0, 0xabe2; 0xabe3, 0xabe4; 0xabe5, 0xabe5; 0xabe6, 0xabe7; 0xabe8, 0xabe8; - 0xabe9, 0xabea; 0xabec, 0xabec; 0xabed, 0xabed; 0xabf0, 0xabf9; 0xac00, 0xd7a3; - 0xd7b0, 0xd7c6; 0xd7cb, 0xd7fb; 0xf900, 0xfa6d; 0xfa70, 0xfad9; 0xfb00, 0xfb06; - 0xfb13, 0xfb17; 0xfb1d, 0xfb1d; 0xfb1e, 0xfb1e; 0xfb1f, 0xfb28; 0xfb2a, 0xfb36; - 0xfb38, 0xfb3c; 0xfb3e, 0xfb3e; 0xfb40, 0xfb41; 0xfb43, 0xfb44; 0xfb46, 0xfbb1; - 0xfbd3, 0xfc5d; 0xfc64, 0xfd3d; 0xfd50, 0xfd8f; 0xfd92, 0xfdc7; 0xfdf0, 0xfdf9; - 0xfe00, 0xfe0f; 0xfe20, 0xfe2f; 0xfe33, 0xfe34; 0xfe4d, 0xfe4f; 0xfe71, 0xfe71; - 0xfe73, 0xfe73; 0xfe77, 0xfe77; 0xfe79, 0xfe79; 0xfe7b, 0xfe7b; 0xfe7d, 0xfe7d; - 0xfe7f, 0xfefc; 0xff10, 0xff19; 0xff21, 0xff3a; 0xff3f, 0xff3f; 0xff41, 0xff5a; - 0xff66, 0xff6f; 0xff70, 0xff70; 0xff71, 0xff9d; 0xff9e, 0xff9f; 0xffa0, 0xffbe; - 0xffc2, 0xffc7; 0xffca, 0xffcf; 0xffd2, 0xffd7; 0xffda, 0xffdc; 0x10000, 0x1000b; - 0x1000d, 0x10026; 0x10028, 0x1003a; 0x1003c, 0x1003d; 0x1003f, 0x1004d; 0x10050, 0x1005d; - 0x10080, 0x100fa; 0x10140, 0x10174; 0x101fd, 0x101fd; 0x10280, 0x1029c; 0x102a0, 0x102d0; - 0x102e0, 0x102e0; 0x10300, 0x1031f; 0x1032d, 0x10340; 0x10341, 0x10341; 0x10342, 0x10349; - 0x1034a, 0x1034a; 0x10350, 0x10375; 0x10376, 0x1037a; 0x10380, 0x1039d; 0x103a0, 0x103c3; - 0x103c8, 0x103cf; 0x103d1, 0x103d5; 0x10400, 0x1044f; 0x10450, 0x1049d; 0x104a0, 0x104a9; - 0x104b0, 0x104d3; 0x104d8, 0x104fb; 0x10500, 0x10527; 0x10530, 0x10563; 0x10570, 0x1057a; - 0x1057c, 0x1058a; 0x1058c, 0x10592; 0x10594, 0x10595; 0x10597, 0x105a1; 0x105a3, 0x105b1; - 0x105b3, 0x105b9; 0x105bb, 0x105bc; 0x10600, 0x10736; 0x10740, 0x10755; 0x10760, 0x10767; - 0x10780, 0x10785; 0x10787, 0x107b0; 0x107b2, 0x107ba; 0x10800, 0x10805; 0x10808, 0x10808; - 0x1080a, 0x10835; 0x10837, 0x10838; 0x1083c, 0x1083c; 0x1083f, 0x10855; 0x10860, 0x10876; - 0x10880, 0x1089e; 0x108e0, 0x108f2; 0x108f4, 0x108f5; 0x10900, 0x10915; 0x10920, 0x10939; - 0x10980, 0x109b7; 0x109be, 0x109bf; 0x10a00, 0x10a00; 0x10a01, 0x10a03; 0x10a05, 0x10a06; - 0x10a0c, 0x10a0f; 0x10a10, 0x10a13; 0x10a15, 0x10a17; 0x10a19, 0x10a35; 0x10a38, 0x10a3a; - 0x10a3f, 0x10a3f; 0x10a60, 0x10a7c; 0x10a80, 0x10a9c; 0x10ac0, 0x10ac7; 0x10ac9, 0x10ae4; - 0x10ae5, 0x10ae6; 0x10b00, 0x10b35; 0x10b40, 0x10b55; 0x10b60, 0x10b72; 0x10b80, 0x10b91; - 0x10c00, 0x10c48; 0x10c80, 0x10cb2; 0x10cc0, 0x10cf2; 0x10d00, 0x10d23; 0x10d24, 0x10d27; - 0x10d30, 0x10d39; 0x10e80, 0x10ea9; 0x10eab, 0x10eac; 0x10eb0, 0x10eb1; 0x10f00, 0x10f1c; - 0x10f27, 0x10f27; 0x10f30, 0x10f45; 0x10f46, 0x10f50; 0x10f70, 0x10f81; 0x10f82, 0x10f85; - 0x10fb0, 0x10fc4; 0x10fe0, 0x10ff6; 0x11000, 0x11000; 0x11001, 0x11001; 0x11002, 0x11002; - 0x11003, 0x11037; 0x11038, 0x11046; 0x11066, 0x1106f; 0x11070, 0x11070; 0x11071, 0x11072; - 0x11073, 0x11074; 0x11075, 0x11075; 0x1107f, 0x11081; 0x11082, 0x11082; 0x11083, 0x110af; - 0x110b0, 0x110b2; 0x110b3, 0x110b6; 0x110b7, 0x110b8; 0x110b9, 0x110ba; 0x110c2, 0x110c2; - 0x110d0, 0x110e8; 0x110f0, 0x110f9; 0x11100, 0x11102; 0x11103, 0x11126; 0x11127, 0x1112b; - 0x1112c, 0x1112c; 0x1112d, 0x11134; 0x11136, 0x1113f; 0x11144, 0x11144; 0x11145, 0x11146; - 0x11147, 0x11147; 0x11150, 0x11172; 0x11173, 0x11173; 0x11176, 0x11176; 0x11180, 0x11181; - 0x11182, 0x11182; 0x11183, 0x111b2; 0x111b3, 0x111b5; 0x111b6, 0x111be; 0x111bf, 0x111c0; - 0x111c1, 0x111c4; 0x111c9, 0x111cc; 0x111ce, 0x111ce; 0x111cf, 0x111cf; 0x111d0, 0x111d9; - 0x111da, 0x111da; 0x111dc, 0x111dc; 0x11200, 0x11211; 0x11213, 0x1122b; 0x1122c, 0x1122e; - 0x1122f, 0x11231; 0x11232, 0x11233; 0x11234, 0x11234; 0x11235, 0x11235; 0x11236, 0x11237; - 0x1123e, 0x1123e; 0x11280, 0x11286; 0x11288, 0x11288; 0x1128a, 0x1128d; 0x1128f, 0x1129d; - 0x1129f, 0x112a8; 0x112b0, 0x112de; 0x112df, 0x112df; 0x112e0, 0x112e2; 0x112e3, 0x112ea; - 0x112f0, 0x112f9; 0x11300, 0x11301; 0x11302, 0x11303; 0x11305, 0x1130c; 0x1130f, 0x11310; - 0x11313, 0x11328; 0x1132a, 0x11330; 0x11332, 0x11333; 0x11335, 0x11339; 0x1133b, 0x1133c; - 0x1133d, 0x1133d; 0x1133e, 0x1133f; 0x11340, 0x11340; 0x11341, 0x11344; 0x11347, 0x11348; - 0x1134b, 0x1134d; 0x11350, 0x11350; 0x11357, 0x11357; 0x1135d, 0x11361; 0x11362, 0x11363; - 0x11366, 0x1136c; 0x11370, 0x11374; 0x11400, 0x11434; 0x11435, 0x11437; 0x11438, 0x1143f; - 0x11440, 0x11441; 0x11442, 0x11444; 0x11445, 0x11445; 0x11446, 0x11446; 0x11447, 0x1144a; - 0x11450, 0x11459; 0x1145e, 0x1145e; 0x1145f, 0x11461; 0x11480, 0x114af; 0x114b0, 0x114b2; - 0x114b3, 0x114b8; 0x114b9, 0x114b9; 0x114ba, 0x114ba; 0x114bb, 0x114be; 0x114bf, 0x114c0; - 0x114c1, 0x114c1; 0x114c2, 0x114c3; 0x114c4, 0x114c5; 0x114c7, 0x114c7; 0x114d0, 0x114d9; - 0x11580, 0x115ae; 0x115af, 0x115b1; 0x115b2, 0x115b5; 0x115b8, 0x115bb; 0x115bc, 0x115bd; - 0x115be, 0x115be; 0x115bf, 0x115c0; 0x115d8, 0x115db; 0x115dc, 0x115dd; 0x11600, 0x1162f; - 0x11630, 0x11632; 0x11633, 0x1163a; 0x1163b, 0x1163c; 0x1163d, 0x1163d; 0x1163e, 0x1163e; - 0x1163f, 0x11640; 0x11644, 0x11644; 0x11650, 0x11659; 0x11680, 0x116aa; 0x116ab, 0x116ab; - 0x116ac, 0x116ac; 0x116ad, 0x116ad; 0x116ae, 0x116af; 0x116b0, 0x116b5; 0x116b6, 0x116b6; - 0x116b7, 0x116b7; 0x116b8, 0x116b8; 0x116c0, 0x116c9; 0x11700, 0x1171a; 0x1171d, 0x1171f; - 0x11720, 0x11721; 0x11722, 0x11725; 0x11726, 0x11726; 0x11727, 0x1172b; 0x11730, 0x11739; - 0x11740, 0x11746; 0x11800, 0x1182b; 0x1182c, 0x1182e; 0x1182f, 0x11837; 0x11838, 0x11838; - 0x11839, 0x1183a; 0x118a0, 0x118df; 0x118e0, 0x118e9; 0x118ff, 0x11906; 0x11909, 0x11909; - 0x1190c, 0x11913; 0x11915, 0x11916; 0x11918, 0x1192f; 0x11930, 0x11935; 0x11937, 0x11938; - 0x1193b, 0x1193c; 0x1193d, 0x1193d; 0x1193e, 0x1193e; 0x1193f, 0x1193f; 0x11940, 0x11940; - 0x11941, 0x11941; 0x11942, 0x11942; 0x11943, 0x11943; 0x11950, 0x11959; 0x119a0, 0x119a7; - 0x119aa, 0x119d0; 0x119d1, 0x119d3; 0x119d4, 0x119d7; 0x119da, 0x119db; 0x119dc, 0x119df; - 0x119e0, 0x119e0; 0x119e1, 0x119e1; 0x119e3, 0x119e3; 0x119e4, 0x119e4; 0x11a00, 0x11a00; - 0x11a01, 0x11a0a; 0x11a0b, 0x11a32; 0x11a33, 0x11a38; 0x11a39, 0x11a39; 0x11a3a, 0x11a3a; - 0x11a3b, 0x11a3e; 0x11a47, 0x11a47; 0x11a50, 0x11a50; 0x11a51, 0x11a56; 0x11a57, 0x11a58; - 0x11a59, 0x11a5b; 0x11a5c, 0x11a89; 0x11a8a, 0x11a96; 0x11a97, 0x11a97; 0x11a98, 0x11a99; - 0x11a9d, 0x11a9d; 0x11ab0, 0x11af8; 0x11c00, 0x11c08; 0x11c0a, 0x11c2e; 0x11c2f, 0x11c2f; - 0x11c30, 0x11c36; 0x11c38, 0x11c3d; 0x11c3e, 0x11c3e; 0x11c3f, 0x11c3f; 0x11c40, 0x11c40; - 0x11c50, 0x11c59; 0x11c72, 0x11c8f; 0x11c92, 0x11ca7; 0x11ca9, 0x11ca9; 0x11caa, 0x11cb0; - 0x11cb1, 0x11cb1; 0x11cb2, 0x11cb3; 0x11cb4, 0x11cb4; 0x11cb5, 0x11cb6; 0x11d00, 0x11d06; - 0x11d08, 0x11d09; 0x11d0b, 0x11d30; 0x11d31, 0x11d36; 0x11d3a, 0x11d3a; 0x11d3c, 0x11d3d; - 0x11d3f, 0x11d45; 0x11d46, 0x11d46; 0x11d47, 0x11d47; 0x11d50, 0x11d59; 0x11d60, 0x11d65; - 0x11d67, 0x11d68; 0x11d6a, 0x11d89; 0x11d8a, 0x11d8e; 0x11d90, 0x11d91; 0x11d93, 0x11d94; - 0x11d95, 0x11d95; 0x11d96, 0x11d96; 0x11d97, 0x11d97; 0x11d98, 0x11d98; 0x11da0, 0x11da9; - 0x11ee0, 0x11ef2; 0x11ef3, 0x11ef4; 0x11ef5, 0x11ef6; 0x11fb0, 0x11fb0; 0x12000, 0x12399; - 0x12400, 0x1246e; 0x12480, 0x12543; 0x12f90, 0x12ff0; 0x13000, 0x1342e; 0x14400, 0x14646; - 0x16800, 0x16a38; 0x16a40, 0x16a5e; 0x16a60, 0x16a69; 0x16a70, 0x16abe; 0x16ac0, 0x16ac9; - 0x16ad0, 0x16aed; 0x16af0, 0x16af4; 0x16b00, 0x16b2f; 0x16b30, 0x16b36; 0x16b40, 0x16b43; - 0x16b50, 0x16b59; 0x16b63, 0x16b77; 0x16b7d, 0x16b8f; 0x16e40, 0x16e7f; 0x16f00, 0x16f4a; - 0x16f4f, 0x16f4f; 0x16f50, 0x16f50; 0x16f51, 0x16f87; 0x16f8f, 0x16f92; 0x16f93, 0x16f9f; - 0x16fe0, 0x16fe1; 0x16fe3, 0x16fe3; 0x16fe4, 0x16fe4; 0x16ff0, 0x16ff1; 0x17000, 0x187f7; - 0x18800, 0x18cd5; 0x18d00, 0x18d08; 0x1aff0, 0x1aff3; 0x1aff5, 0x1affb; 0x1affd, 0x1affe; - 0x1b000, 0x1b122; 0x1b150, 0x1b152; 0x1b164, 0x1b167; 0x1b170, 0x1b2fb; 0x1bc00, 0x1bc6a; - 0x1bc70, 0x1bc7c; 0x1bc80, 0x1bc88; 0x1bc90, 0x1bc99; 0x1bc9d, 0x1bc9e; 0x1cf00, 0x1cf2d; - 0x1cf30, 0x1cf46; 0x1d165, 0x1d166; 0x1d167, 0x1d169; 0x1d16d, 0x1d172; 0x1d17b, 0x1d182; - 0x1d185, 0x1d18b; 0x1d1aa, 0x1d1ad; 0x1d242, 0x1d244; 0x1d400, 0x1d454; 0x1d456, 0x1d49c; - 0x1d49e, 0x1d49f; 0x1d4a2, 0x1d4a2; 0x1d4a5, 0x1d4a6; 0x1d4a9, 0x1d4ac; 0x1d4ae, 0x1d4b9; - 0x1d4bb, 0x1d4bb; 0x1d4bd, 0x1d4c3; 0x1d4c5, 0x1d505; 0x1d507, 0x1d50a; 0x1d50d, 0x1d514; - 0x1d516, 0x1d51c; 0x1d51e, 0x1d539; 0x1d53b, 0x1d53e; 0x1d540, 0x1d544; 0x1d546, 0x1d546; - 0x1d54a, 0x1d550; 0x1d552, 0x1d6a5; 0x1d6a8, 0x1d6c0; 0x1d6c2, 0x1d6da; 0x1d6dc, 0x1d6fa; - 0x1d6fc, 0x1d714; 0x1d716, 0x1d734; 0x1d736, 0x1d74e; 0x1d750, 0x1d76e; 0x1d770, 0x1d788; - 0x1d78a, 0x1d7a8; 0x1d7aa, 0x1d7c2; 0x1d7c4, 0x1d7cb; 0x1d7ce, 0x1d7ff; 0x1da00, 0x1da36; - 0x1da3b, 0x1da6c; 0x1da75, 0x1da75; 0x1da84, 0x1da84; 0x1da9b, 0x1da9f; 0x1daa1, 0x1daaf; - 0x1df00, 0x1df09; 0x1df0a, 0x1df0a; 0x1df0b, 0x1df1e; 0x1e000, 0x1e006; 0x1e008, 0x1e018; - 0x1e01b, 0x1e021; 0x1e023, 0x1e024; 0x1e026, 0x1e02a; 0x1e100, 0x1e12c; 0x1e130, 0x1e136; - 0x1e137, 0x1e13d; 0x1e140, 0x1e149; 0x1e14e, 0x1e14e; 0x1e290, 0x1e2ad; 0x1e2ae, 0x1e2ae; - 0x1e2c0, 0x1e2eb; 0x1e2ec, 0x1e2ef; 0x1e2f0, 0x1e2f9; 0x1e7e0, 0x1e7e6; 0x1e7e8, 0x1e7eb; - 0x1e7ed, 0x1e7ee; 0x1e7f0, 0x1e7fe; 0x1e800, 0x1e8c4; 0x1e8d0, 0x1e8d6; 0x1e900, 0x1e943; - 0x1e944, 0x1e94a; 0x1e94b, 0x1e94b; 0x1e950, 0x1e959; 0x1ee00, 0x1ee03; 0x1ee05, 0x1ee1f; - 0x1ee21, 0x1ee22; 0x1ee24, 0x1ee24; 0x1ee27, 0x1ee27; 0x1ee29, 0x1ee32; 0x1ee34, 0x1ee37; - 0x1ee39, 0x1ee39; 0x1ee3b, 0x1ee3b; 0x1ee42, 0x1ee42; 0x1ee47, 0x1ee47; 0x1ee49, 0x1ee49; - 0x1ee4b, 0x1ee4b; 0x1ee4d, 0x1ee4f; 0x1ee51, 0x1ee52; 0x1ee54, 0x1ee54; 0x1ee57, 0x1ee57; - 0x1ee59, 0x1ee59; 0x1ee5b, 0x1ee5b; 0x1ee5d, 0x1ee5d; 0x1ee5f, 0x1ee5f; 0x1ee61, 0x1ee62; - 0x1ee64, 0x1ee64; 0x1ee67, 0x1ee6a; 0x1ee6c, 0x1ee72; 0x1ee74, 0x1ee77; 0x1ee79, 0x1ee7c; - 0x1ee7e, 0x1ee7e; 0x1ee80, 0x1ee89; 0x1ee8b, 0x1ee9b; 0x1eea1, 0x1eea3; 0x1eea5, 0x1eea9; - 0x1eeab, 0x1eebb; 0x1fbf0, 0x1fbf9; 0x20000, 0x2a6df; 0x2a700, 0x2b738; 0x2b740, 0x2b81d; - 0xe0100, 0xe01ef; 0x30000, 0x3134a; 0x2f800, 0x2fa1d; 0x2ceb0, 0x2ebe0; 0x2b820, 0x2cea1] + [ + (0x30, 0x39); + (0x41, 0x5a); + (0x5f, 0x5f); + (0x61, 0x7a); + (0xaa, 0xaa); + (0xb5, 0xb5); + (0xb7, 0xb7); + (0xba, 0xba); + (0xc0, 0xd6); + (0xd8, 0xf6); + (0xf8, 0x1ba); + (0x1bb, 0x1bb); + (0x1bc, 0x1bf); + (0x1c0, 0x1c3); + (0x1c4, 0x293); + (0x294, 0x294); + (0x295, 0x2af); + (0x2b0, 0x2c1); + (0x2c6, 0x2d1); + (0x2e0, 0x2e4); + (0x2ec, 0x2ec); + (0x2ee, 0x2ee); + (0x300, 0x36f); + (0x370, 0x373); + (0x374, 0x374); + (0x376, 0x377); + (0x37b, 0x37d); + (0x37f, 0x37f); + (0x386, 0x386); + (0x387, 0x387); + (0x388, 0x38a); + (0x38c, 0x38c); + (0x38e, 0x3a1); + (0x3a3, 0x3f5); + (0x3f7, 0x481); + (0x483, 0x487); + (0x48a, 0x52f); + (0x531, 0x556); + (0x559, 0x559); + (0x560, 0x588); + (0x591, 0x5bd); + (0x5bf, 0x5bf); + (0x5c1, 0x5c2); + (0x5c4, 0x5c5); + (0x5c7, 0x5c7); + (0x5d0, 0x5ea); + (0x5ef, 0x5f2); + (0x610, 0x61a); + (0x620, 0x63f); + (0x640, 0x640); + (0x641, 0x64a); + (0x64b, 0x65f); + (0x660, 0x669); + (0x66e, 0x66f); + (0x670, 0x670); + (0x671, 0x6d3); + (0x6d5, 0x6d5); + (0x6d6, 0x6dc); + (0x6df, 0x6e4); + (0x6e5, 0x6e6); + (0x6e7, 0x6e8); + (0x6ea, 0x6ed); + (0x6ee, 0x6ef); + (0x6f0, 0x6f9); + (0x6fa, 0x6fc); + (0x6ff, 0x6ff); + (0x710, 0x710); + (0x711, 0x711); + (0x712, 0x72f); + (0x730, 0x74a); + (0x74d, 0x7a5); + (0x7a6, 0x7b0); + (0x7b1, 0x7b1); + (0x7c0, 0x7c9); + (0x7ca, 0x7ea); + (0x7eb, 0x7f3); + (0x7f4, 0x7f5); + (0x7fa, 0x7fa); + (0x7fd, 0x7fd); + (0x800, 0x815); + (0x816, 0x819); + (0x81a, 0x81a); + (0x81b, 0x823); + (0x824, 0x824); + (0x825, 0x827); + (0x828, 0x828); + (0x829, 0x82d); + (0x840, 0x858); + (0x859, 0x85b); + (0x860, 0x86a); + (0x870, 0x887); + (0x889, 0x88e); + (0x898, 0x89f); + (0x8a0, 0x8c8); + (0x8c9, 0x8c9); + (0x8ca, 0x8e1); + (0x8e3, 0x902); + (0x903, 0x903); + (0x904, 0x939); + (0x93a, 0x93a); + (0x93b, 0x93b); + (0x93c, 0x93c); + (0x93d, 0x93d); + (0x93e, 0x940); + (0x941, 0x948); + (0x949, 0x94c); + (0x94d, 0x94d); + (0x94e, 0x94f); + (0x950, 0x950); + (0x951, 0x957); + (0x958, 0x961); + (0x962, 0x963); + (0x966, 0x96f); + (0x971, 0x971); + (0x972, 0x980); + (0x981, 0x981); + (0x982, 0x983); + (0x985, 0x98c); + (0x98f, 0x990); + (0x993, 0x9a8); + (0x9aa, 0x9b0); + (0x9b2, 0x9b2); + (0x9b6, 0x9b9); + (0x9bc, 0x9bc); + (0x9bd, 0x9bd); + (0x9be, 0x9c0); + (0x9c1, 0x9c4); + (0x9c7, 0x9c8); + (0x9cb, 0x9cc); + (0x9cd, 0x9cd); + (0x9ce, 0x9ce); + (0x9d7, 0x9d7); + (0x9dc, 0x9dd); + (0x9df, 0x9e1); + (0x9e2, 0x9e3); + (0x9e6, 0x9ef); + (0x9f0, 0x9f1); + (0x9fc, 0x9fc); + (0x9fe, 0x9fe); + (0xa01, 0xa02); + (0xa03, 0xa03); + (0xa05, 0xa0a); + (0xa0f, 0xa10); + (0xa13, 0xa28); + (0xa2a, 0xa30); + (0xa32, 0xa33); + (0xa35, 0xa36); + (0xa38, 0xa39); + (0xa3c, 0xa3c); + (0xa3e, 0xa40); + (0xa41, 0xa42); + (0xa47, 0xa48); + (0xa4b, 0xa4d); + (0xa51, 0xa51); + (0xa59, 0xa5c); + (0xa5e, 0xa5e); + (0xa66, 0xa6f); + (0xa70, 0xa71); + (0xa72, 0xa74); + (0xa75, 0xa75); + (0xa81, 0xa82); + (0xa83, 0xa83); + (0xa85, 0xa8d); + (0xa8f, 0xa91); + (0xa93, 0xaa8); + (0xaaa, 0xab0); + (0xab2, 0xab3); + (0xab5, 0xab9); + (0xabc, 0xabc); + (0xabd, 0xabd); + (0xabe, 0xac0); + (0xac1, 0xac5); + (0xac7, 0xac8); + (0xac9, 0xac9); + (0xacb, 0xacc); + (0xacd, 0xacd); + (0xad0, 0xad0); + (0xae0, 0xae1); + (0xae2, 0xae3); + (0xae6, 0xaef); + (0xaf9, 0xaf9); + (0xafa, 0xaff); + (0xb01, 0xb01); + (0xb02, 0xb03); + (0xb05, 0xb0c); + (0xb0f, 0xb10); + (0xb13, 0xb28); + (0xb2a, 0xb30); + (0xb32, 0xb33); + (0xb35, 0xb39); + (0xb3c, 0xb3c); + (0xb3d, 0xb3d); + (0xb3e, 0xb3e); + (0xb3f, 0xb3f); + (0xb40, 0xb40); + (0xb41, 0xb44); + (0xb47, 0xb48); + (0xb4b, 0xb4c); + (0xb4d, 0xb4d); + (0xb55, 0xb56); + (0xb57, 0xb57); + (0xb5c, 0xb5d); + (0xb5f, 0xb61); + (0xb62, 0xb63); + (0xb66, 0xb6f); + (0xb71, 0xb71); + (0xb82, 0xb82); + (0xb83, 0xb83); + (0xb85, 0xb8a); + (0xb8e, 0xb90); + (0xb92, 0xb95); + (0xb99, 0xb9a); + (0xb9c, 0xb9c); + (0xb9e, 0xb9f); + (0xba3, 0xba4); + (0xba8, 0xbaa); + (0xbae, 0xbb9); + (0xbbe, 0xbbf); + (0xbc0, 0xbc0); + (0xbc1, 0xbc2); + (0xbc6, 0xbc8); + (0xbca, 0xbcc); + (0xbcd, 0xbcd); + (0xbd0, 0xbd0); + (0xbd7, 0xbd7); + (0xbe6, 0xbef); + (0xc00, 0xc00); + (0xc01, 0xc03); + (0xc04, 0xc04); + (0xc05, 0xc0c); + (0xc0e, 0xc10); + (0xc12, 0xc28); + (0xc2a, 0xc39); + (0xc3c, 0xc3c); + (0xc3d, 0xc3d); + (0xc3e, 0xc40); + (0xc41, 0xc44); + (0xc46, 0xc48); + (0xc4a, 0xc4d); + (0xc55, 0xc56); + (0xc58, 0xc5a); + (0xc5d, 0xc5d); + (0xc60, 0xc61); + (0xc62, 0xc63); + (0xc66, 0xc6f); + (0xc80, 0xc80); + (0xc81, 0xc81); + (0xc82, 0xc83); + (0xc85, 0xc8c); + (0xc8e, 0xc90); + (0xc92, 0xca8); + (0xcaa, 0xcb3); + (0xcb5, 0xcb9); + (0xcbc, 0xcbc); + (0xcbd, 0xcbd); + (0xcbe, 0xcbe); + (0xcbf, 0xcbf); + (0xcc0, 0xcc4); + (0xcc6, 0xcc6); + (0xcc7, 0xcc8); + (0xcca, 0xccb); + (0xccc, 0xccd); + (0xcd5, 0xcd6); + (0xcdd, 0xcde); + (0xce0, 0xce1); + (0xce2, 0xce3); + (0xce6, 0xcef); + (0xcf1, 0xcf2); + (0xd00, 0xd01); + (0xd02, 0xd03); + (0xd04, 0xd0c); + (0xd0e, 0xd10); + (0xd12, 0xd3a); + (0xd3b, 0xd3c); + (0xd3d, 0xd3d); + (0xd3e, 0xd40); + (0xd41, 0xd44); + (0xd46, 0xd48); + (0xd4a, 0xd4c); + (0xd4d, 0xd4d); + (0xd4e, 0xd4e); + (0xd54, 0xd56); + (0xd57, 0xd57); + (0xd5f, 0xd61); + (0xd62, 0xd63); + (0xd66, 0xd6f); + (0xd7a, 0xd7f); + (0xd81, 0xd81); + (0xd82, 0xd83); + (0xd85, 0xd96); + (0xd9a, 0xdb1); + (0xdb3, 0xdbb); + (0xdbd, 0xdbd); + (0xdc0, 0xdc6); + (0xdca, 0xdca); + (0xdcf, 0xdd1); + (0xdd2, 0xdd4); + (0xdd6, 0xdd6); + (0xdd8, 0xddf); + (0xde6, 0xdef); + (0xdf2, 0xdf3); + (0xe01, 0xe30); + (0xe31, 0xe31); + (0xe32, 0xe33); + (0xe34, 0xe3a); + (0xe40, 0xe45); + (0xe46, 0xe46); + (0xe47, 0xe4e); + (0xe50, 0xe59); + (0xe81, 0xe82); + (0xe84, 0xe84); + (0xe86, 0xe8a); + (0xe8c, 0xea3); + (0xea5, 0xea5); + (0xea7, 0xeb0); + (0xeb1, 0xeb1); + (0xeb2, 0xeb3); + (0xeb4, 0xebc); + (0xebd, 0xebd); + (0xec0, 0xec4); + (0xec6, 0xec6); + (0xec8, 0xecd); + (0xed0, 0xed9); + (0xedc, 0xedf); + (0xf00, 0xf00); + (0xf18, 0xf19); + (0xf20, 0xf29); + (0xf35, 0xf35); + (0xf37, 0xf37); + (0xf39, 0xf39); + (0xf3e, 0xf3f); + (0xf40, 0xf47); + (0xf49, 0xf6c); + (0xf71, 0xf7e); + (0xf7f, 0xf7f); + (0xf80, 0xf84); + (0xf86, 0xf87); + (0xf88, 0xf8c); + (0xf8d, 0xf97); + (0xf99, 0xfbc); + (0xfc6, 0xfc6); + (0x1000, 0x102a); + (0x102b, 0x102c); + (0x102d, 0x1030); + (0x1031, 0x1031); + (0x1032, 0x1037); + (0x1038, 0x1038); + (0x1039, 0x103a); + (0x103b, 0x103c); + (0x103d, 0x103e); + (0x103f, 0x103f); + (0x1040, 0x1049); + (0x1050, 0x1055); + (0x1056, 0x1057); + (0x1058, 0x1059); + (0x105a, 0x105d); + (0x105e, 0x1060); + (0x1061, 0x1061); + (0x1062, 0x1064); + (0x1065, 0x1066); + (0x1067, 0x106d); + (0x106e, 0x1070); + (0x1071, 0x1074); + (0x1075, 0x1081); + (0x1082, 0x1082); + (0x1083, 0x1084); + (0x1085, 0x1086); + (0x1087, 0x108c); + (0x108d, 0x108d); + (0x108e, 0x108e); + (0x108f, 0x108f); + (0x1090, 0x1099); + (0x109a, 0x109c); + (0x109d, 0x109d); + (0x10a0, 0x10c5); + (0x10c7, 0x10c7); + (0x10cd, 0x10cd); + (0x10d0, 0x10fa); + (0x10fc, 0x10fc); + (0x10fd, 0x10ff); + (0x1100, 0x1248); + (0x124a, 0x124d); + (0x1250, 0x1256); + (0x1258, 0x1258); + (0x125a, 0x125d); + (0x1260, 0x1288); + (0x128a, 0x128d); + (0x1290, 0x12b0); + (0x12b2, 0x12b5); + (0x12b8, 0x12be); + (0x12c0, 0x12c0); + (0x12c2, 0x12c5); + (0x12c8, 0x12d6); + (0x12d8, 0x1310); + (0x1312, 0x1315); + (0x1318, 0x135a); + (0x135d, 0x135f); + (0x1369, 0x1371); + (0x1380, 0x138f); + (0x13a0, 0x13f5); + (0x13f8, 0x13fd); + (0x1401, 0x166c); + (0x166f, 0x167f); + (0x1681, 0x169a); + (0x16a0, 0x16ea); + (0x16ee, 0x16f0); + (0x16f1, 0x16f8); + (0x1700, 0x1711); + (0x1712, 0x1714); + (0x1715, 0x1715); + (0x171f, 0x1731); + (0x1732, 0x1733); + (0x1734, 0x1734); + (0x1740, 0x1751); + (0x1752, 0x1753); + (0x1760, 0x176c); + (0x176e, 0x1770); + (0x1772, 0x1773); + (0x1780, 0x17b3); + (0x17b4, 0x17b5); + (0x17b6, 0x17b6); + (0x17b7, 0x17bd); + (0x17be, 0x17c5); + (0x17c6, 0x17c6); + (0x17c7, 0x17c8); + (0x17c9, 0x17d3); + (0x17d7, 0x17d7); + (0x17dc, 0x17dc); + (0x17dd, 0x17dd); + (0x17e0, 0x17e9); + (0x180b, 0x180d); + (0x180f, 0x180f); + (0x1810, 0x1819); + (0x1820, 0x1842); + (0x1843, 0x1843); + (0x1844, 0x1878); + (0x1880, 0x1884); + (0x1885, 0x1886); + (0x1887, 0x18a8); + (0x18a9, 0x18a9); + (0x18aa, 0x18aa); + (0x18b0, 0x18f5); + (0x1900, 0x191e); + (0x1920, 0x1922); + (0x1923, 0x1926); + (0x1927, 0x1928); + (0x1929, 0x192b); + (0x1930, 0x1931); + (0x1932, 0x1932); + (0x1933, 0x1938); + (0x1939, 0x193b); + (0x1946, 0x194f); + (0x1950, 0x196d); + (0x1970, 0x1974); + (0x1980, 0x19ab); + (0x19b0, 0x19c9); + (0x19d0, 0x19d9); + (0x19da, 0x19da); + (0x1a00, 0x1a16); + (0x1a17, 0x1a18); + (0x1a19, 0x1a1a); + (0x1a1b, 0x1a1b); + (0x1a20, 0x1a54); + (0x1a55, 0x1a55); + (0x1a56, 0x1a56); + (0x1a57, 0x1a57); + (0x1a58, 0x1a5e); + (0x1a60, 0x1a60); + (0x1a61, 0x1a61); + (0x1a62, 0x1a62); + (0x1a63, 0x1a64); + (0x1a65, 0x1a6c); + (0x1a6d, 0x1a72); + (0x1a73, 0x1a7c); + (0x1a7f, 0x1a7f); + (0x1a80, 0x1a89); + (0x1a90, 0x1a99); + (0x1aa7, 0x1aa7); + (0x1ab0, 0x1abd); + (0x1abf, 0x1ace); + (0x1b00, 0x1b03); + (0x1b04, 0x1b04); + (0x1b05, 0x1b33); + (0x1b34, 0x1b34); + (0x1b35, 0x1b35); + (0x1b36, 0x1b3a); + (0x1b3b, 0x1b3b); + (0x1b3c, 0x1b3c); + (0x1b3d, 0x1b41); + (0x1b42, 0x1b42); + (0x1b43, 0x1b44); + (0x1b45, 0x1b4c); + (0x1b50, 0x1b59); + (0x1b6b, 0x1b73); + (0x1b80, 0x1b81); + (0x1b82, 0x1b82); + (0x1b83, 0x1ba0); + (0x1ba1, 0x1ba1); + (0x1ba2, 0x1ba5); + (0x1ba6, 0x1ba7); + (0x1ba8, 0x1ba9); + (0x1baa, 0x1baa); + (0x1bab, 0x1bad); + (0x1bae, 0x1baf); + (0x1bb0, 0x1bb9); + (0x1bba, 0x1be5); + (0x1be6, 0x1be6); + (0x1be7, 0x1be7); + (0x1be8, 0x1be9); + (0x1bea, 0x1bec); + (0x1bed, 0x1bed); + (0x1bee, 0x1bee); + (0x1bef, 0x1bf1); + (0x1bf2, 0x1bf3); + (0x1c00, 0x1c23); + (0x1c24, 0x1c2b); + (0x1c2c, 0x1c33); + (0x1c34, 0x1c35); + (0x1c36, 0x1c37); + (0x1c40, 0x1c49); + (0x1c4d, 0x1c4f); + (0x1c50, 0x1c59); + (0x1c5a, 0x1c77); + (0x1c78, 0x1c7d); + (0x1c80, 0x1c88); + (0x1c90, 0x1cba); + (0x1cbd, 0x1cbf); + (0x1cd0, 0x1cd2); + (0x1cd4, 0x1ce0); + (0x1ce1, 0x1ce1); + (0x1ce2, 0x1ce8); + (0x1ce9, 0x1cec); + (0x1ced, 0x1ced); + (0x1cee, 0x1cf3); + (0x1cf4, 0x1cf4); + (0x1cf5, 0x1cf6); + (0x1cf7, 0x1cf7); + (0x1cf8, 0x1cf9); + (0x1cfa, 0x1cfa); + (0x1d00, 0x1d2b); + (0x1d2c, 0x1d6a); + (0x1d6b, 0x1d77); + (0x1d78, 0x1d78); + (0x1d79, 0x1d9a); + (0x1d9b, 0x1dbf); + (0x1dc0, 0x1dff); + (0x1e00, 0x1f15); + (0x1f18, 0x1f1d); + (0x1f20, 0x1f45); + (0x1f48, 0x1f4d); + (0x1f50, 0x1f57); + (0x1f59, 0x1f59); + (0x1f5b, 0x1f5b); + (0x1f5d, 0x1f5d); + (0x1f5f, 0x1f7d); + (0x1f80, 0x1fb4); + (0x1fb6, 0x1fbc); + (0x1fbe, 0x1fbe); + (0x1fc2, 0x1fc4); + (0x1fc6, 0x1fcc); + (0x1fd0, 0x1fd3); + (0x1fd6, 0x1fdb); + (0x1fe0, 0x1fec); + (0x1ff2, 0x1ff4); + (0x1ff6, 0x1ffc); + (0x203f, 0x2040); + (0x2054, 0x2054); + (0x2071, 0x2071); + (0x207f, 0x207f); + (0x2090, 0x209c); + (0x20d0, 0x20dc); + (0x20e1, 0x20e1); + (0x20e5, 0x20f0); + (0x2102, 0x2102); + (0x2107, 0x2107); + (0x210a, 0x2113); + (0x2115, 0x2115); + (0x2118, 0x2118); + (0x2119, 0x211d); + (0x2124, 0x2124); + (0x2126, 0x2126); + (0x2128, 0x2128); + (0x212a, 0x212d); + (0x212e, 0x212e); + (0x212f, 0x2134); + (0x2135, 0x2138); + (0x2139, 0x2139); + (0x213c, 0x213f); + (0x2145, 0x2149); + (0x214e, 0x214e); + (0x2160, 0x2182); + (0x2183, 0x2184); + (0x2185, 0x2188); + (0x2c00, 0x2c7b); + (0x2c7c, 0x2c7d); + (0x2c7e, 0x2ce4); + (0x2ceb, 0x2cee); + (0x2cef, 0x2cf1); + (0x2cf2, 0x2cf3); + (0x2d00, 0x2d25); + (0x2d27, 0x2d27); + (0x2d2d, 0x2d2d); + (0x2d30, 0x2d67); + (0x2d6f, 0x2d6f); + (0x2d7f, 0x2d7f); + (0x2d80, 0x2d96); + (0x2da0, 0x2da6); + (0x2da8, 0x2dae); + (0x2db0, 0x2db6); + (0x2db8, 0x2dbe); + (0x2dc0, 0x2dc6); + (0x2dc8, 0x2dce); + (0x2dd0, 0x2dd6); + (0x2dd8, 0x2dde); + (0x2de0, 0x2dff); + (0x3005, 0x3005); + (0x3006, 0x3006); + (0x3007, 0x3007); + (0x3021, 0x3029); + (0x302a, 0x302d); + (0x302e, 0x302f); + (0x3031, 0x3035); + (0x3038, 0x303a); + (0x303b, 0x303b); + (0x303c, 0x303c); + (0x3041, 0x3096); + (0x3099, 0x309a); + (0x309d, 0x309e); + (0x309f, 0x309f); + (0x30a1, 0x30fa); + (0x30fc, 0x30fe); + (0x30ff, 0x30ff); + (0x3105, 0x312f); + (0x3131, 0x318e); + (0x31a0, 0x31bf); + (0x31f0, 0x31ff); + (0x3400, 0x4dbf); + (0x4e00, 0xa014); + (0xa015, 0xa015); + (0xa016, 0xa48c); + (0xa4d0, 0xa4f7); + (0xa4f8, 0xa4fd); + (0xa500, 0xa60b); + (0xa60c, 0xa60c); + (0xa610, 0xa61f); + (0xa620, 0xa629); + (0xa62a, 0xa62b); + (0xa640, 0xa66d); + (0xa66e, 0xa66e); + (0xa66f, 0xa66f); + (0xa674, 0xa67d); + (0xa67f, 0xa67f); + (0xa680, 0xa69b); + (0xa69c, 0xa69d); + (0xa69e, 0xa69f); + (0xa6a0, 0xa6e5); + (0xa6e6, 0xa6ef); + (0xa6f0, 0xa6f1); + (0xa717, 0xa71f); + (0xa722, 0xa76f); + (0xa770, 0xa770); + (0xa771, 0xa787); + (0xa788, 0xa788); + (0xa78b, 0xa78e); + (0xa78f, 0xa78f); + (0xa790, 0xa7ca); + (0xa7d0, 0xa7d1); + (0xa7d3, 0xa7d3); + (0xa7d5, 0xa7d9); + (0xa7f2, 0xa7f4); + (0xa7f5, 0xa7f6); + (0xa7f7, 0xa7f7); + (0xa7f8, 0xa7f9); + (0xa7fa, 0xa7fa); + (0xa7fb, 0xa801); + (0xa802, 0xa802); + (0xa803, 0xa805); + (0xa806, 0xa806); + (0xa807, 0xa80a); + (0xa80b, 0xa80b); + (0xa80c, 0xa822); + (0xa823, 0xa824); + (0xa825, 0xa826); + (0xa827, 0xa827); + (0xa82c, 0xa82c); + (0xa840, 0xa873); + (0xa880, 0xa881); + (0xa882, 0xa8b3); + (0xa8b4, 0xa8c3); + (0xa8c4, 0xa8c5); + (0xa8d0, 0xa8d9); + (0xa8e0, 0xa8f1); + (0xa8f2, 0xa8f7); + (0xa8fb, 0xa8fb); + (0xa8fd, 0xa8fe); + (0xa8ff, 0xa8ff); + (0xa900, 0xa909); + (0xa90a, 0xa925); + (0xa926, 0xa92d); + (0xa930, 0xa946); + (0xa947, 0xa951); + (0xa952, 0xa953); + (0xa960, 0xa97c); + (0xa980, 0xa982); + (0xa983, 0xa983); + (0xa984, 0xa9b2); + (0xa9b3, 0xa9b3); + (0xa9b4, 0xa9b5); + (0xa9b6, 0xa9b9); + (0xa9ba, 0xa9bb); + (0xa9bc, 0xa9bd); + (0xa9be, 0xa9c0); + (0xa9cf, 0xa9cf); + (0xa9d0, 0xa9d9); + (0xa9e0, 0xa9e4); + (0xa9e5, 0xa9e5); + (0xa9e6, 0xa9e6); + (0xa9e7, 0xa9ef); + (0xa9f0, 0xa9f9); + (0xa9fa, 0xa9fe); + (0xaa00, 0xaa28); + (0xaa29, 0xaa2e); + (0xaa2f, 0xaa30); + (0xaa31, 0xaa32); + (0xaa33, 0xaa34); + (0xaa35, 0xaa36); + (0xaa40, 0xaa42); + (0xaa43, 0xaa43); + (0xaa44, 0xaa4b); + (0xaa4c, 0xaa4c); + (0xaa4d, 0xaa4d); + (0xaa50, 0xaa59); + (0xaa60, 0xaa6f); + (0xaa70, 0xaa70); + (0xaa71, 0xaa76); + (0xaa7a, 0xaa7a); + (0xaa7b, 0xaa7b); + (0xaa7c, 0xaa7c); + (0xaa7d, 0xaa7d); + (0xaa7e, 0xaaaf); + (0xaab0, 0xaab0); + (0xaab1, 0xaab1); + (0xaab2, 0xaab4); + (0xaab5, 0xaab6); + (0xaab7, 0xaab8); + (0xaab9, 0xaabd); + (0xaabe, 0xaabf); + (0xaac0, 0xaac0); + (0xaac1, 0xaac1); + (0xaac2, 0xaac2); + (0xaadb, 0xaadc); + (0xaadd, 0xaadd); + (0xaae0, 0xaaea); + (0xaaeb, 0xaaeb); + (0xaaec, 0xaaed); + (0xaaee, 0xaaef); + (0xaaf2, 0xaaf2); + (0xaaf3, 0xaaf4); + (0xaaf5, 0xaaf5); + (0xaaf6, 0xaaf6); + (0xab01, 0xab06); + (0xab09, 0xab0e); + (0xab11, 0xab16); + (0xab20, 0xab26); + (0xab28, 0xab2e); + (0xab30, 0xab5a); + (0xab5c, 0xab5f); + (0xab60, 0xab68); + (0xab69, 0xab69); + (0xab70, 0xabbf); + (0xabc0, 0xabe2); + (0xabe3, 0xabe4); + (0xabe5, 0xabe5); + (0xabe6, 0xabe7); + (0xabe8, 0xabe8); + (0xabe9, 0xabea); + (0xabec, 0xabec); + (0xabed, 0xabed); + (0xabf0, 0xabf9); + (0xac00, 0xd7a3); + (0xd7b0, 0xd7c6); + (0xd7cb, 0xd7fb); + (0xf900, 0xfa6d); + (0xfa70, 0xfad9); + (0xfb00, 0xfb06); + (0xfb13, 0xfb17); + (0xfb1d, 0xfb1d); + (0xfb1e, 0xfb1e); + (0xfb1f, 0xfb28); + (0xfb2a, 0xfb36); + (0xfb38, 0xfb3c); + (0xfb3e, 0xfb3e); + (0xfb40, 0xfb41); + (0xfb43, 0xfb44); + (0xfb46, 0xfbb1); + (0xfbd3, 0xfc5d); + (0xfc64, 0xfd3d); + (0xfd50, 0xfd8f); + (0xfd92, 0xfdc7); + (0xfdf0, 0xfdf9); + (0xfe00, 0xfe0f); + (0xfe20, 0xfe2f); + (0xfe33, 0xfe34); + (0xfe4d, 0xfe4f); + (0xfe71, 0xfe71); + (0xfe73, 0xfe73); + (0xfe77, 0xfe77); + (0xfe79, 0xfe79); + (0xfe7b, 0xfe7b); + (0xfe7d, 0xfe7d); + (0xfe7f, 0xfefc); + (0xff10, 0xff19); + (0xff21, 0xff3a); + (0xff3f, 0xff3f); + (0xff41, 0xff5a); + (0xff66, 0xff6f); + (0xff70, 0xff70); + (0xff71, 0xff9d); + (0xff9e, 0xff9f); + (0xffa0, 0xffbe); + (0xffc2, 0xffc7); + (0xffca, 0xffcf); + (0xffd2, 0xffd7); + (0xffda, 0xffdc); + (0x10000, 0x1000b); + (0x1000d, 0x10026); + (0x10028, 0x1003a); + (0x1003c, 0x1003d); + (0x1003f, 0x1004d); + (0x10050, 0x1005d); + (0x10080, 0x100fa); + (0x10140, 0x10174); + (0x101fd, 0x101fd); + (0x10280, 0x1029c); + (0x102a0, 0x102d0); + (0x102e0, 0x102e0); + (0x10300, 0x1031f); + (0x1032d, 0x10340); + (0x10341, 0x10341); + (0x10342, 0x10349); + (0x1034a, 0x1034a); + (0x10350, 0x10375); + (0x10376, 0x1037a); + (0x10380, 0x1039d); + (0x103a0, 0x103c3); + (0x103c8, 0x103cf); + (0x103d1, 0x103d5); + (0x10400, 0x1044f); + (0x10450, 0x1049d); + (0x104a0, 0x104a9); + (0x104b0, 0x104d3); + (0x104d8, 0x104fb); + (0x10500, 0x10527); + (0x10530, 0x10563); + (0x10570, 0x1057a); + (0x1057c, 0x1058a); + (0x1058c, 0x10592); + (0x10594, 0x10595); + (0x10597, 0x105a1); + (0x105a3, 0x105b1); + (0x105b3, 0x105b9); + (0x105bb, 0x105bc); + (0x10600, 0x10736); + (0x10740, 0x10755); + (0x10760, 0x10767); + (0x10780, 0x10785); + (0x10787, 0x107b0); + (0x107b2, 0x107ba); + (0x10800, 0x10805); + (0x10808, 0x10808); + (0x1080a, 0x10835); + (0x10837, 0x10838); + (0x1083c, 0x1083c); + (0x1083f, 0x10855); + (0x10860, 0x10876); + (0x10880, 0x1089e); + (0x108e0, 0x108f2); + (0x108f4, 0x108f5); + (0x10900, 0x10915); + (0x10920, 0x10939); + (0x10980, 0x109b7); + (0x109be, 0x109bf); + (0x10a00, 0x10a00); + (0x10a01, 0x10a03); + (0x10a05, 0x10a06); + (0x10a0c, 0x10a0f); + (0x10a10, 0x10a13); + (0x10a15, 0x10a17); + (0x10a19, 0x10a35); + (0x10a38, 0x10a3a); + (0x10a3f, 0x10a3f); + (0x10a60, 0x10a7c); + (0x10a80, 0x10a9c); + (0x10ac0, 0x10ac7); + (0x10ac9, 0x10ae4); + (0x10ae5, 0x10ae6); + (0x10b00, 0x10b35); + (0x10b40, 0x10b55); + (0x10b60, 0x10b72); + (0x10b80, 0x10b91); + (0x10c00, 0x10c48); + (0x10c80, 0x10cb2); + (0x10cc0, 0x10cf2); + (0x10d00, 0x10d23); + (0x10d24, 0x10d27); + (0x10d30, 0x10d39); + (0x10e80, 0x10ea9); + (0x10eab, 0x10eac); + (0x10eb0, 0x10eb1); + (0x10f00, 0x10f1c); + (0x10f27, 0x10f27); + (0x10f30, 0x10f45); + (0x10f46, 0x10f50); + (0x10f70, 0x10f81); + (0x10f82, 0x10f85); + (0x10fb0, 0x10fc4); + (0x10fe0, 0x10ff6); + (0x11000, 0x11000); + (0x11001, 0x11001); + (0x11002, 0x11002); + (0x11003, 0x11037); + (0x11038, 0x11046); + (0x11066, 0x1106f); + (0x11070, 0x11070); + (0x11071, 0x11072); + (0x11073, 0x11074); + (0x11075, 0x11075); + (0x1107f, 0x11081); + (0x11082, 0x11082); + (0x11083, 0x110af); + (0x110b0, 0x110b2); + (0x110b3, 0x110b6); + (0x110b7, 0x110b8); + (0x110b9, 0x110ba); + (0x110c2, 0x110c2); + (0x110d0, 0x110e8); + (0x110f0, 0x110f9); + (0x11100, 0x11102); + (0x11103, 0x11126); + (0x11127, 0x1112b); + (0x1112c, 0x1112c); + (0x1112d, 0x11134); + (0x11136, 0x1113f); + (0x11144, 0x11144); + (0x11145, 0x11146); + (0x11147, 0x11147); + (0x11150, 0x11172); + (0x11173, 0x11173); + (0x11176, 0x11176); + (0x11180, 0x11181); + (0x11182, 0x11182); + (0x11183, 0x111b2); + (0x111b3, 0x111b5); + (0x111b6, 0x111be); + (0x111bf, 0x111c0); + (0x111c1, 0x111c4); + (0x111c9, 0x111cc); + (0x111ce, 0x111ce); + (0x111cf, 0x111cf); + (0x111d0, 0x111d9); + (0x111da, 0x111da); + (0x111dc, 0x111dc); + (0x11200, 0x11211); + (0x11213, 0x1122b); + (0x1122c, 0x1122e); + (0x1122f, 0x11231); + (0x11232, 0x11233); + (0x11234, 0x11234); + (0x11235, 0x11235); + (0x11236, 0x11237); + (0x1123e, 0x1123e); + (0x11280, 0x11286); + (0x11288, 0x11288); + (0x1128a, 0x1128d); + (0x1128f, 0x1129d); + (0x1129f, 0x112a8); + (0x112b0, 0x112de); + (0x112df, 0x112df); + (0x112e0, 0x112e2); + (0x112e3, 0x112ea); + (0x112f0, 0x112f9); + (0x11300, 0x11301); + (0x11302, 0x11303); + (0x11305, 0x1130c); + (0x1130f, 0x11310); + (0x11313, 0x11328); + (0x1132a, 0x11330); + (0x11332, 0x11333); + (0x11335, 0x11339); + (0x1133b, 0x1133c); + (0x1133d, 0x1133d); + (0x1133e, 0x1133f); + (0x11340, 0x11340); + (0x11341, 0x11344); + (0x11347, 0x11348); + (0x1134b, 0x1134d); + (0x11350, 0x11350); + (0x11357, 0x11357); + (0x1135d, 0x11361); + (0x11362, 0x11363); + (0x11366, 0x1136c); + (0x11370, 0x11374); + (0x11400, 0x11434); + (0x11435, 0x11437); + (0x11438, 0x1143f); + (0x11440, 0x11441); + (0x11442, 0x11444); + (0x11445, 0x11445); + (0x11446, 0x11446); + (0x11447, 0x1144a); + (0x11450, 0x11459); + (0x1145e, 0x1145e); + (0x1145f, 0x11461); + (0x11480, 0x114af); + (0x114b0, 0x114b2); + (0x114b3, 0x114b8); + (0x114b9, 0x114b9); + (0x114ba, 0x114ba); + (0x114bb, 0x114be); + (0x114bf, 0x114c0); + (0x114c1, 0x114c1); + (0x114c2, 0x114c3); + (0x114c4, 0x114c5); + (0x114c7, 0x114c7); + (0x114d0, 0x114d9); + (0x11580, 0x115ae); + (0x115af, 0x115b1); + (0x115b2, 0x115b5); + (0x115b8, 0x115bb); + (0x115bc, 0x115bd); + (0x115be, 0x115be); + (0x115bf, 0x115c0); + (0x115d8, 0x115db); + (0x115dc, 0x115dd); + (0x11600, 0x1162f); + (0x11630, 0x11632); + (0x11633, 0x1163a); + (0x1163b, 0x1163c); + (0x1163d, 0x1163d); + (0x1163e, 0x1163e); + (0x1163f, 0x11640); + (0x11644, 0x11644); + (0x11650, 0x11659); + (0x11680, 0x116aa); + (0x116ab, 0x116ab); + (0x116ac, 0x116ac); + (0x116ad, 0x116ad); + (0x116ae, 0x116af); + (0x116b0, 0x116b5); + (0x116b6, 0x116b6); + (0x116b7, 0x116b7); + (0x116b8, 0x116b8); + (0x116c0, 0x116c9); + (0x11700, 0x1171a); + (0x1171d, 0x1171f); + (0x11720, 0x11721); + (0x11722, 0x11725); + (0x11726, 0x11726); + (0x11727, 0x1172b); + (0x11730, 0x11739); + (0x11740, 0x11746); + (0x11800, 0x1182b); + (0x1182c, 0x1182e); + (0x1182f, 0x11837); + (0x11838, 0x11838); + (0x11839, 0x1183a); + (0x118a0, 0x118df); + (0x118e0, 0x118e9); + (0x118ff, 0x11906); + (0x11909, 0x11909); + (0x1190c, 0x11913); + (0x11915, 0x11916); + (0x11918, 0x1192f); + (0x11930, 0x11935); + (0x11937, 0x11938); + (0x1193b, 0x1193c); + (0x1193d, 0x1193d); + (0x1193e, 0x1193e); + (0x1193f, 0x1193f); + (0x11940, 0x11940); + (0x11941, 0x11941); + (0x11942, 0x11942); + (0x11943, 0x11943); + (0x11950, 0x11959); + (0x119a0, 0x119a7); + (0x119aa, 0x119d0); + (0x119d1, 0x119d3); + (0x119d4, 0x119d7); + (0x119da, 0x119db); + (0x119dc, 0x119df); + (0x119e0, 0x119e0); + (0x119e1, 0x119e1); + (0x119e3, 0x119e3); + (0x119e4, 0x119e4); + (0x11a00, 0x11a00); + (0x11a01, 0x11a0a); + (0x11a0b, 0x11a32); + (0x11a33, 0x11a38); + (0x11a39, 0x11a39); + (0x11a3a, 0x11a3a); + (0x11a3b, 0x11a3e); + (0x11a47, 0x11a47); + (0x11a50, 0x11a50); + (0x11a51, 0x11a56); + (0x11a57, 0x11a58); + (0x11a59, 0x11a5b); + (0x11a5c, 0x11a89); + (0x11a8a, 0x11a96); + (0x11a97, 0x11a97); + (0x11a98, 0x11a99); + (0x11a9d, 0x11a9d); + (0x11ab0, 0x11af8); + (0x11c00, 0x11c08); + (0x11c0a, 0x11c2e); + (0x11c2f, 0x11c2f); + (0x11c30, 0x11c36); + (0x11c38, 0x11c3d); + (0x11c3e, 0x11c3e); + (0x11c3f, 0x11c3f); + (0x11c40, 0x11c40); + (0x11c50, 0x11c59); + (0x11c72, 0x11c8f); + (0x11c92, 0x11ca7); + (0x11ca9, 0x11ca9); + (0x11caa, 0x11cb0); + (0x11cb1, 0x11cb1); + (0x11cb2, 0x11cb3); + (0x11cb4, 0x11cb4); + (0x11cb5, 0x11cb6); + (0x11d00, 0x11d06); + (0x11d08, 0x11d09); + (0x11d0b, 0x11d30); + (0x11d31, 0x11d36); + (0x11d3a, 0x11d3a); + (0x11d3c, 0x11d3d); + (0x11d3f, 0x11d45); + (0x11d46, 0x11d46); + (0x11d47, 0x11d47); + (0x11d50, 0x11d59); + (0x11d60, 0x11d65); + (0x11d67, 0x11d68); + (0x11d6a, 0x11d89); + (0x11d8a, 0x11d8e); + (0x11d90, 0x11d91); + (0x11d93, 0x11d94); + (0x11d95, 0x11d95); + (0x11d96, 0x11d96); + (0x11d97, 0x11d97); + (0x11d98, 0x11d98); + (0x11da0, 0x11da9); + (0x11ee0, 0x11ef2); + (0x11ef3, 0x11ef4); + (0x11ef5, 0x11ef6); + (0x11fb0, 0x11fb0); + (0x12000, 0x12399); + (0x12400, 0x1246e); + (0x12480, 0x12543); + (0x12f90, 0x12ff0); + (0x13000, 0x1342e); + (0x14400, 0x14646); + (0x16800, 0x16a38); + (0x16a40, 0x16a5e); + (0x16a60, 0x16a69); + (0x16a70, 0x16abe); + (0x16ac0, 0x16ac9); + (0x16ad0, 0x16aed); + (0x16af0, 0x16af4); + (0x16b00, 0x16b2f); + (0x16b30, 0x16b36); + (0x16b40, 0x16b43); + (0x16b50, 0x16b59); + (0x16b63, 0x16b77); + (0x16b7d, 0x16b8f); + (0x16e40, 0x16e7f); + (0x16f00, 0x16f4a); + (0x16f4f, 0x16f4f); + (0x16f50, 0x16f50); + (0x16f51, 0x16f87); + (0x16f8f, 0x16f92); + (0x16f93, 0x16f9f); + (0x16fe0, 0x16fe1); + (0x16fe3, 0x16fe3); + (0x16fe4, 0x16fe4); + (0x16ff0, 0x16ff1); + (0x17000, 0x187f7); + (0x18800, 0x18cd5); + (0x18d00, 0x18d08); + (0x1aff0, 0x1aff3); + (0x1aff5, 0x1affb); + (0x1affd, 0x1affe); + (0x1b000, 0x1b122); + (0x1b150, 0x1b152); + (0x1b164, 0x1b167); + (0x1b170, 0x1b2fb); + (0x1bc00, 0x1bc6a); + (0x1bc70, 0x1bc7c); + (0x1bc80, 0x1bc88); + (0x1bc90, 0x1bc99); + (0x1bc9d, 0x1bc9e); + (0x1cf00, 0x1cf2d); + (0x1cf30, 0x1cf46); + (0x1d165, 0x1d166); + (0x1d167, 0x1d169); + (0x1d16d, 0x1d172); + (0x1d17b, 0x1d182); + (0x1d185, 0x1d18b); + (0x1d1aa, 0x1d1ad); + (0x1d242, 0x1d244); + (0x1d400, 0x1d454); + (0x1d456, 0x1d49c); + (0x1d49e, 0x1d49f); + (0x1d4a2, 0x1d4a2); + (0x1d4a5, 0x1d4a6); + (0x1d4a9, 0x1d4ac); + (0x1d4ae, 0x1d4b9); + (0x1d4bb, 0x1d4bb); + (0x1d4bd, 0x1d4c3); + (0x1d4c5, 0x1d505); + (0x1d507, 0x1d50a); + (0x1d50d, 0x1d514); + (0x1d516, 0x1d51c); + (0x1d51e, 0x1d539); + (0x1d53b, 0x1d53e); + (0x1d540, 0x1d544); + (0x1d546, 0x1d546); + (0x1d54a, 0x1d550); + (0x1d552, 0x1d6a5); + (0x1d6a8, 0x1d6c0); + (0x1d6c2, 0x1d6da); + (0x1d6dc, 0x1d6fa); + (0x1d6fc, 0x1d714); + (0x1d716, 0x1d734); + (0x1d736, 0x1d74e); + (0x1d750, 0x1d76e); + (0x1d770, 0x1d788); + (0x1d78a, 0x1d7a8); + (0x1d7aa, 0x1d7c2); + (0x1d7c4, 0x1d7cb); + (0x1d7ce, 0x1d7ff); + (0x1da00, 0x1da36); + (0x1da3b, 0x1da6c); + (0x1da75, 0x1da75); + (0x1da84, 0x1da84); + (0x1da9b, 0x1da9f); + (0x1daa1, 0x1daaf); + (0x1df00, 0x1df09); + (0x1df0a, 0x1df0a); + (0x1df0b, 0x1df1e); + (0x1e000, 0x1e006); + (0x1e008, 0x1e018); + (0x1e01b, 0x1e021); + (0x1e023, 0x1e024); + (0x1e026, 0x1e02a); + (0x1e100, 0x1e12c); + (0x1e130, 0x1e136); + (0x1e137, 0x1e13d); + (0x1e140, 0x1e149); + (0x1e14e, 0x1e14e); + (0x1e290, 0x1e2ad); + (0x1e2ae, 0x1e2ae); + (0x1e2c0, 0x1e2eb); + (0x1e2ec, 0x1e2ef); + (0x1e2f0, 0x1e2f9); + (0x1e7e0, 0x1e7e6); + (0x1e7e8, 0x1e7eb); + (0x1e7ed, 0x1e7ee); + (0x1e7f0, 0x1e7fe); + (0x1e800, 0x1e8c4); + (0x1e8d0, 0x1e8d6); + (0x1e900, 0x1e943); + (0x1e944, 0x1e94a); + (0x1e94b, 0x1e94b); + (0x1e950, 0x1e959); + (0x1ee00, 0x1ee03); + (0x1ee05, 0x1ee1f); + (0x1ee21, 0x1ee22); + (0x1ee24, 0x1ee24); + (0x1ee27, 0x1ee27); + (0x1ee29, 0x1ee32); + (0x1ee34, 0x1ee37); + (0x1ee39, 0x1ee39); + (0x1ee3b, 0x1ee3b); + (0x1ee42, 0x1ee42); + (0x1ee47, 0x1ee47); + (0x1ee49, 0x1ee49); + (0x1ee4b, 0x1ee4b); + (0x1ee4d, 0x1ee4f); + (0x1ee51, 0x1ee52); + (0x1ee54, 0x1ee54); + (0x1ee57, 0x1ee57); + (0x1ee59, 0x1ee59); + (0x1ee5b, 0x1ee5b); + (0x1ee5d, 0x1ee5d); + (0x1ee5f, 0x1ee5f); + (0x1ee61, 0x1ee62); + (0x1ee64, 0x1ee64); + (0x1ee67, 0x1ee6a); + (0x1ee6c, 0x1ee72); + (0x1ee74, 0x1ee77); + (0x1ee79, 0x1ee7c); + (0x1ee7e, 0x1ee7e); + (0x1ee80, 0x1ee89); + (0x1ee8b, 0x1ee9b); + (0x1eea1, 0x1eea3); + (0x1eea5, 0x1eea9); + (0x1eeab, 0x1eebb); + (0x1fbf0, 0x1fbf9); + (0x20000, 0x2a6df); + (0x2a700, 0x2b738); + (0x2b740, 0x2b81d); + (0xe0100, 0xe01ef); + (0x30000, 0x3134a); + (0x2f800, 0x2fa1d); + (0x2ceb0, 0x2ebe0); + (0x2b820, 0x2cea1); + ] let xid_start = - [0x41, 0x5a; 0x61, 0x7a; 0xaa, 0xaa; 0xb5, 0xb5; 0xba, 0xba; - 0xc0, 0xd6; 0xd8, 0xf6; 0xf8, 0x1ba; 0x1bb, 0x1bb; 0x1bc, 0x1bf; - 0x1c0, 0x1c3; 0x1c4, 0x293; 0x294, 0x294; 0x295, 0x2af; 0x2b0, 0x2c1; - 0x2c6, 0x2d1; 0x2e0, 0x2e4; 0x2ec, 0x2ec; 0x2ee, 0x2ee; 0x370, 0x373; - 0x374, 0x374; 0x376, 0x377; 0x37b, 0x37d; 0x37f, 0x37f; 0x386, 0x386; - 0x388, 0x38a; 0x38c, 0x38c; 0x38e, 0x3a1; 0x3a3, 0x3f5; 0x3f7, 0x481; - 0x48a, 0x52f; 0x531, 0x556; 0x559, 0x559; 0x560, 0x588; 0x5d0, 0x5ea; - 0x5ef, 0x5f2; 0x620, 0x63f; 0x640, 0x640; 0x641, 0x64a; 0x66e, 0x66f; - 0x671, 0x6d3; 0x6d5, 0x6d5; 0x6e5, 0x6e6; 0x6ee, 0x6ef; 0x6fa, 0x6fc; - 0x6ff, 0x6ff; 0x710, 0x710; 0x712, 0x72f; 0x74d, 0x7a5; 0x7b1, 0x7b1; - 0x7ca, 0x7ea; 0x7f4, 0x7f5; 0x7fa, 0x7fa; 0x800, 0x815; 0x81a, 0x81a; - 0x824, 0x824; 0x828, 0x828; 0x840, 0x858; 0x860, 0x86a; 0x870, 0x887; - 0x889, 0x88e; 0x8a0, 0x8c8; 0x8c9, 0x8c9; 0x904, 0x939; 0x93d, 0x93d; - 0x950, 0x950; 0x958, 0x961; 0x971, 0x971; 0x972, 0x980; 0x985, 0x98c; - 0x98f, 0x990; 0x993, 0x9a8; 0x9aa, 0x9b0; 0x9b2, 0x9b2; 0x9b6, 0x9b9; - 0x9bd, 0x9bd; 0x9ce, 0x9ce; 0x9dc, 0x9dd; 0x9df, 0x9e1; 0x9f0, 0x9f1; - 0x9fc, 0x9fc; 0xa05, 0xa0a; 0xa0f, 0xa10; 0xa13, 0xa28; 0xa2a, 0xa30; - 0xa32, 0xa33; 0xa35, 0xa36; 0xa38, 0xa39; 0xa59, 0xa5c; 0xa5e, 0xa5e; - 0xa72, 0xa74; 0xa85, 0xa8d; 0xa8f, 0xa91; 0xa93, 0xaa8; 0xaaa, 0xab0; - 0xab2, 0xab3; 0xab5, 0xab9; 0xabd, 0xabd; 0xad0, 0xad0; 0xae0, 0xae1; - 0xaf9, 0xaf9; 0xb05, 0xb0c; 0xb0f, 0xb10; 0xb13, 0xb28; 0xb2a, 0xb30; - 0xb32, 0xb33; 0xb35, 0xb39; 0xb3d, 0xb3d; 0xb5c, 0xb5d; 0xb5f, 0xb61; - 0xb71, 0xb71; 0xb83, 0xb83; 0xb85, 0xb8a; 0xb8e, 0xb90; 0xb92, 0xb95; - 0xb99, 0xb9a; 0xb9c, 0xb9c; 0xb9e, 0xb9f; 0xba3, 0xba4; 0xba8, 0xbaa; - 0xbae, 0xbb9; 0xbd0, 0xbd0; 0xc05, 0xc0c; 0xc0e, 0xc10; 0xc12, 0xc28; - 0xc2a, 0xc39; 0xc3d, 0xc3d; 0xc58, 0xc5a; 0xc5d, 0xc5d; 0xc60, 0xc61; - 0xc80, 0xc80; 0xc85, 0xc8c; 0xc8e, 0xc90; 0xc92, 0xca8; 0xcaa, 0xcb3; - 0xcb5, 0xcb9; 0xcbd, 0xcbd; 0xcdd, 0xcde; 0xce0, 0xce1; 0xcf1, 0xcf2; - 0xd04, 0xd0c; 0xd0e, 0xd10; 0xd12, 0xd3a; 0xd3d, 0xd3d; 0xd4e, 0xd4e; - 0xd54, 0xd56; 0xd5f, 0xd61; 0xd7a, 0xd7f; 0xd85, 0xd96; 0xd9a, 0xdb1; - 0xdb3, 0xdbb; 0xdbd, 0xdbd; 0xdc0, 0xdc6; 0xe01, 0xe30; 0xe32, 0xe32; - 0xe40, 0xe45; 0xe46, 0xe46; 0xe81, 0xe82; 0xe84, 0xe84; 0xe86, 0xe8a; - 0xe8c, 0xea3; 0xea5, 0xea5; 0xea7, 0xeb0; 0xeb2, 0xeb2; 0xebd, 0xebd; - 0xec0, 0xec4; 0xec6, 0xec6; 0xedc, 0xedf; 0xf00, 0xf00; 0xf40, 0xf47; - 0xf49, 0xf6c; 0xf88, 0xf8c; 0x1000, 0x102a; 0x103f, 0x103f; 0x1050, 0x1055; - 0x105a, 0x105d; 0x1061, 0x1061; 0x1065, 0x1066; 0x106e, 0x1070; 0x1075, 0x1081; - 0x108e, 0x108e; 0x10a0, 0x10c5; 0x10c7, 0x10c7; 0x10cd, 0x10cd; 0x10d0, 0x10fa; - 0x10fc, 0x10fc; 0x10fd, 0x10ff; 0x1100, 0x1248; 0x124a, 0x124d; 0x1250, 0x1256; - 0x1258, 0x1258; 0x125a, 0x125d; 0x1260, 0x1288; 0x128a, 0x128d; 0x1290, 0x12b0; - 0x12b2, 0x12b5; 0x12b8, 0x12be; 0x12c0, 0x12c0; 0x12c2, 0x12c5; 0x12c8, 0x12d6; - 0x12d8, 0x1310; 0x1312, 0x1315; 0x1318, 0x135a; 0x1380, 0x138f; 0x13a0, 0x13f5; - 0x13f8, 0x13fd; 0x1401, 0x166c; 0x166f, 0x167f; 0x1681, 0x169a; 0x16a0, 0x16ea; - 0x16ee, 0x16f0; 0x16f1, 0x16f8; 0x1700, 0x1711; 0x171f, 0x1731; 0x1740, 0x1751; - 0x1760, 0x176c; 0x176e, 0x1770; 0x1780, 0x17b3; 0x17d7, 0x17d7; 0x17dc, 0x17dc; - 0x1820, 0x1842; 0x1843, 0x1843; 0x1844, 0x1878; 0x1880, 0x1884; 0x1885, 0x1886; - 0x1887, 0x18a8; 0x18aa, 0x18aa; 0x18b0, 0x18f5; 0x1900, 0x191e; 0x1950, 0x196d; - 0x1970, 0x1974; 0x1980, 0x19ab; 0x19b0, 0x19c9; 0x1a00, 0x1a16; 0x1a20, 0x1a54; - 0x1aa7, 0x1aa7; 0x1b05, 0x1b33; 0x1b45, 0x1b4c; 0x1b83, 0x1ba0; 0x1bae, 0x1baf; - 0x1bba, 0x1be5; 0x1c00, 0x1c23; 0x1c4d, 0x1c4f; 0x1c5a, 0x1c77; 0x1c78, 0x1c7d; - 0x1c80, 0x1c88; 0x1c90, 0x1cba; 0x1cbd, 0x1cbf; 0x1ce9, 0x1cec; 0x1cee, 0x1cf3; - 0x1cf5, 0x1cf6; 0x1cfa, 0x1cfa; 0x1d00, 0x1d2b; 0x1d2c, 0x1d6a; 0x1d6b, 0x1d77; - 0x1d78, 0x1d78; 0x1d79, 0x1d9a; 0x1d9b, 0x1dbf; 0x1e00, 0x1f15; 0x1f18, 0x1f1d; - 0x1f20, 0x1f45; 0x1f48, 0x1f4d; 0x1f50, 0x1f57; 0x1f59, 0x1f59; 0x1f5b, 0x1f5b; - 0x1f5d, 0x1f5d; 0x1f5f, 0x1f7d; 0x1f80, 0x1fb4; 0x1fb6, 0x1fbc; 0x1fbe, 0x1fbe; - 0x1fc2, 0x1fc4; 0x1fc6, 0x1fcc; 0x1fd0, 0x1fd3; 0x1fd6, 0x1fdb; 0x1fe0, 0x1fec; - 0x1ff2, 0x1ff4; 0x1ff6, 0x1ffc; 0x2071, 0x2071; 0x207f, 0x207f; 0x2090, 0x209c; - 0x2102, 0x2102; 0x2107, 0x2107; 0x210a, 0x2113; 0x2115, 0x2115; 0x2118, 0x2118; - 0x2119, 0x211d; 0x2124, 0x2124; 0x2126, 0x2126; 0x2128, 0x2128; 0x212a, 0x212d; - 0x212e, 0x212e; 0x212f, 0x2134; 0x2135, 0x2138; 0x2139, 0x2139; 0x213c, 0x213f; - 0x2145, 0x2149; 0x214e, 0x214e; 0x2160, 0x2182; 0x2183, 0x2184; 0x2185, 0x2188; - 0x2c00, 0x2c7b; 0x2c7c, 0x2c7d; 0x2c7e, 0x2ce4; 0x2ceb, 0x2cee; 0x2cf2, 0x2cf3; - 0x2d00, 0x2d25; 0x2d27, 0x2d27; 0x2d2d, 0x2d2d; 0x2d30, 0x2d67; 0x2d6f, 0x2d6f; - 0x2d80, 0x2d96; 0x2da0, 0x2da6; 0x2da8, 0x2dae; 0x2db0, 0x2db6; 0x2db8, 0x2dbe; - 0x2dc0, 0x2dc6; 0x2dc8, 0x2dce; 0x2dd0, 0x2dd6; 0x2dd8, 0x2dde; 0x3005, 0x3005; - 0x3006, 0x3006; 0x3007, 0x3007; 0x3021, 0x3029; 0x3031, 0x3035; 0x3038, 0x303a; - 0x303b, 0x303b; 0x303c, 0x303c; 0x3041, 0x3096; 0x309d, 0x309e; 0x309f, 0x309f; - 0x30a1, 0x30fa; 0x30fc, 0x30fe; 0x30ff, 0x30ff; 0x3105, 0x312f; 0x3131, 0x318e; - 0x31a0, 0x31bf; 0x31f0, 0x31ff; 0x3400, 0x4dbf; 0x4e00, 0xa014; 0xa015, 0xa015; - 0xa016, 0xa48c; 0xa4d0, 0xa4f7; 0xa4f8, 0xa4fd; 0xa500, 0xa60b; 0xa60c, 0xa60c; - 0xa610, 0xa61f; 0xa62a, 0xa62b; 0xa640, 0xa66d; 0xa66e, 0xa66e; 0xa67f, 0xa67f; - 0xa680, 0xa69b; 0xa69c, 0xa69d; 0xa6a0, 0xa6e5; 0xa6e6, 0xa6ef; 0xa717, 0xa71f; - 0xa722, 0xa76f; 0xa770, 0xa770; 0xa771, 0xa787; 0xa788, 0xa788; 0xa78b, 0xa78e; - 0xa78f, 0xa78f; 0xa790, 0xa7ca; 0xa7d0, 0xa7d1; 0xa7d3, 0xa7d3; 0xa7d5, 0xa7d9; - 0xa7f2, 0xa7f4; 0xa7f5, 0xa7f6; 0xa7f7, 0xa7f7; 0xa7f8, 0xa7f9; 0xa7fa, 0xa7fa; - 0xa7fb, 0xa801; 0xa803, 0xa805; 0xa807, 0xa80a; 0xa80c, 0xa822; 0xa840, 0xa873; - 0xa882, 0xa8b3; 0xa8f2, 0xa8f7; 0xa8fb, 0xa8fb; 0xa8fd, 0xa8fe; 0xa90a, 0xa925; - 0xa930, 0xa946; 0xa960, 0xa97c; 0xa984, 0xa9b2; 0xa9cf, 0xa9cf; 0xa9e0, 0xa9e4; - 0xa9e6, 0xa9e6; 0xa9e7, 0xa9ef; 0xa9fa, 0xa9fe; 0xaa00, 0xaa28; 0xaa40, 0xaa42; - 0xaa44, 0xaa4b; 0xaa60, 0xaa6f; 0xaa70, 0xaa70; 0xaa71, 0xaa76; 0xaa7a, 0xaa7a; - 0xaa7e, 0xaaaf; 0xaab1, 0xaab1; 0xaab5, 0xaab6; 0xaab9, 0xaabd; 0xaac0, 0xaac0; - 0xaac2, 0xaac2; 0xaadb, 0xaadc; 0xaadd, 0xaadd; 0xaae0, 0xaaea; 0xaaf2, 0xaaf2; - 0xaaf3, 0xaaf4; 0xab01, 0xab06; 0xab09, 0xab0e; 0xab11, 0xab16; 0xab20, 0xab26; - 0xab28, 0xab2e; 0xab30, 0xab5a; 0xab5c, 0xab5f; 0xab60, 0xab68; 0xab69, 0xab69; - 0xab70, 0xabbf; 0xabc0, 0xabe2; 0xac00, 0xd7a3; 0xd7b0, 0xd7c6; 0xd7cb, 0xd7fb; - 0xf900, 0xfa6d; 0xfa70, 0xfad9; 0xfb00, 0xfb06; 0xfb13, 0xfb17; 0xfb1d, 0xfb1d; - 0xfb1f, 0xfb28; 0xfb2a, 0xfb36; 0xfb38, 0xfb3c; 0xfb3e, 0xfb3e; 0xfb40, 0xfb41; - 0xfb43, 0xfb44; 0xfb46, 0xfbb1; 0xfbd3, 0xfc5d; 0xfc64, 0xfd3d; 0xfd50, 0xfd8f; - 0xfd92, 0xfdc7; 0xfdf0, 0xfdf9; 0xfe71, 0xfe71; 0xfe73, 0xfe73; 0xfe77, 0xfe77; - 0xfe79, 0xfe79; 0xfe7b, 0xfe7b; 0xfe7d, 0xfe7d; 0xfe7f, 0xfefc; 0xff21, 0xff3a; - 0xff41, 0xff5a; 0xff66, 0xff6f; 0xff70, 0xff70; 0xff71, 0xff9d; 0xffa0, 0xffbe; - 0xffc2, 0xffc7; 0xffca, 0xffcf; 0xffd2, 0xffd7; 0xffda, 0xffdc; 0x10000, 0x1000b; - 0x1000d, 0x10026; 0x10028, 0x1003a; 0x1003c, 0x1003d; 0x1003f, 0x1004d; 0x10050, 0x1005d; - 0x10080, 0x100fa; 0x10140, 0x10174; 0x10280, 0x1029c; 0x102a0, 0x102d0; 0x10300, 0x1031f; - 0x1032d, 0x10340; 0x10341, 0x10341; 0x10342, 0x10349; 0x1034a, 0x1034a; 0x10350, 0x10375; - 0x10380, 0x1039d; 0x103a0, 0x103c3; 0x103c8, 0x103cf; 0x103d1, 0x103d5; 0x10400, 0x1044f; - 0x10450, 0x1049d; 0x104b0, 0x104d3; 0x104d8, 0x104fb; 0x10500, 0x10527; 0x10530, 0x10563; - 0x10570, 0x1057a; 0x1057c, 0x1058a; 0x1058c, 0x10592; 0x10594, 0x10595; 0x10597, 0x105a1; - 0x105a3, 0x105b1; 0x105b3, 0x105b9; 0x105bb, 0x105bc; 0x10600, 0x10736; 0x10740, 0x10755; - 0x10760, 0x10767; 0x10780, 0x10785; 0x10787, 0x107b0; 0x107b2, 0x107ba; 0x10800, 0x10805; - 0x10808, 0x10808; 0x1080a, 0x10835; 0x10837, 0x10838; 0x1083c, 0x1083c; 0x1083f, 0x10855; - 0x10860, 0x10876; 0x10880, 0x1089e; 0x108e0, 0x108f2; 0x108f4, 0x108f5; 0x10900, 0x10915; - 0x10920, 0x10939; 0x10980, 0x109b7; 0x109be, 0x109bf; 0x10a00, 0x10a00; 0x10a10, 0x10a13; - 0x10a15, 0x10a17; 0x10a19, 0x10a35; 0x10a60, 0x10a7c; 0x10a80, 0x10a9c; 0x10ac0, 0x10ac7; - 0x10ac9, 0x10ae4; 0x10b00, 0x10b35; 0x10b40, 0x10b55; 0x10b60, 0x10b72; 0x10b80, 0x10b91; - 0x10c00, 0x10c48; 0x10c80, 0x10cb2; 0x10cc0, 0x10cf2; 0x10d00, 0x10d23; 0x10e80, 0x10ea9; - 0x10eb0, 0x10eb1; 0x10f00, 0x10f1c; 0x10f27, 0x10f27; 0x10f30, 0x10f45; 0x10f70, 0x10f81; - 0x10fb0, 0x10fc4; 0x10fe0, 0x10ff6; 0x11003, 0x11037; 0x11071, 0x11072; 0x11075, 0x11075; - 0x11083, 0x110af; 0x110d0, 0x110e8; 0x11103, 0x11126; 0x11144, 0x11144; 0x11147, 0x11147; - 0x11150, 0x11172; 0x11176, 0x11176; 0x11183, 0x111b2; 0x111c1, 0x111c4; 0x111da, 0x111da; - 0x111dc, 0x111dc; 0x11200, 0x11211; 0x11213, 0x1122b; 0x11280, 0x11286; 0x11288, 0x11288; - 0x1128a, 0x1128d; 0x1128f, 0x1129d; 0x1129f, 0x112a8; 0x112b0, 0x112de; 0x11305, 0x1130c; - 0x1130f, 0x11310; 0x11313, 0x11328; 0x1132a, 0x11330; 0x11332, 0x11333; 0x11335, 0x11339; - 0x1133d, 0x1133d; 0x11350, 0x11350; 0x1135d, 0x11361; 0x11400, 0x11434; 0x11447, 0x1144a; - 0x1145f, 0x11461; 0x11480, 0x114af; 0x114c4, 0x114c5; 0x114c7, 0x114c7; 0x11580, 0x115ae; - 0x115d8, 0x115db; 0x11600, 0x1162f; 0x11644, 0x11644; 0x11680, 0x116aa; 0x116b8, 0x116b8; - 0x11700, 0x1171a; 0x11740, 0x11746; 0x11800, 0x1182b; 0x118a0, 0x118df; 0x118ff, 0x11906; - 0x11909, 0x11909; 0x1190c, 0x11913; 0x11915, 0x11916; 0x11918, 0x1192f; 0x1193f, 0x1193f; - 0x11941, 0x11941; 0x119a0, 0x119a7; 0x119aa, 0x119d0; 0x119e1, 0x119e1; 0x119e3, 0x119e3; - 0x11a00, 0x11a00; 0x11a0b, 0x11a32; 0x11a3a, 0x11a3a; 0x11a50, 0x11a50; 0x11a5c, 0x11a89; - 0x11a9d, 0x11a9d; 0x11ab0, 0x11af8; 0x11c00, 0x11c08; 0x11c0a, 0x11c2e; 0x11c40, 0x11c40; - 0x11c72, 0x11c8f; 0x11d00, 0x11d06; 0x11d08, 0x11d09; 0x11d0b, 0x11d30; 0x11d46, 0x11d46; - 0x11d60, 0x11d65; 0x11d67, 0x11d68; 0x11d6a, 0x11d89; 0x11d98, 0x11d98; 0x11ee0, 0x11ef2; - 0x11fb0, 0x11fb0; 0x12000, 0x12399; 0x12400, 0x1246e; 0x12480, 0x12543; 0x12f90, 0x12ff0; - 0x13000, 0x1342e; 0x14400, 0x14646; 0x16800, 0x16a38; 0x16a40, 0x16a5e; 0x16a70, 0x16abe; - 0x16ad0, 0x16aed; 0x16b00, 0x16b2f; 0x16b40, 0x16b43; 0x16b63, 0x16b77; 0x16b7d, 0x16b8f; - 0x16e40, 0x16e7f; 0x16f00, 0x16f4a; 0x16f50, 0x16f50; 0x16f93, 0x16f9f; 0x16fe0, 0x16fe1; - 0x16fe3, 0x16fe3; 0x17000, 0x187f7; 0x18800, 0x18cd5; 0x18d00, 0x18d08; 0x1aff0, 0x1aff3; - 0x1aff5, 0x1affb; 0x1affd, 0x1affe; 0x1b000, 0x1b122; 0x1b150, 0x1b152; 0x1b164, 0x1b167; - 0x1b170, 0x1b2fb; 0x1bc00, 0x1bc6a; 0x1bc70, 0x1bc7c; 0x1bc80, 0x1bc88; 0x1bc90, 0x1bc99; - 0x1d400, 0x1d454; 0x1d456, 0x1d49c; 0x1d49e, 0x1d49f; 0x1d4a2, 0x1d4a2; 0x1d4a5, 0x1d4a6; - 0x1d4a9, 0x1d4ac; 0x1d4ae, 0x1d4b9; 0x1d4bb, 0x1d4bb; 0x1d4bd, 0x1d4c3; 0x1d4c5, 0x1d505; - 0x1d507, 0x1d50a; 0x1d50d, 0x1d514; 0x1d516, 0x1d51c; 0x1d51e, 0x1d539; 0x1d53b, 0x1d53e; - 0x1d540, 0x1d544; 0x1d546, 0x1d546; 0x1d54a, 0x1d550; 0x1d552, 0x1d6a5; 0x1d6a8, 0x1d6c0; - 0x1d6c2, 0x1d6da; 0x1d6dc, 0x1d6fa; 0x1d6fc, 0x1d714; 0x1d716, 0x1d734; 0x1d736, 0x1d74e; - 0x1d750, 0x1d76e; 0x1d770, 0x1d788; 0x1d78a, 0x1d7a8; 0x1d7aa, 0x1d7c2; 0x1d7c4, 0x1d7cb; - 0x1df00, 0x1df09; 0x1df0a, 0x1df0a; 0x1df0b, 0x1df1e; 0x1e100, 0x1e12c; 0x1e137, 0x1e13d; - 0x1e14e, 0x1e14e; 0x1e290, 0x1e2ad; 0x1e2c0, 0x1e2eb; 0x1e7e0, 0x1e7e6; 0x1e7e8, 0x1e7eb; - 0x1e7ed, 0x1e7ee; 0x1e7f0, 0x1e7fe; 0x1e800, 0x1e8c4; 0x1e900, 0x1e943; 0x1e94b, 0x1e94b; - 0x1ee00, 0x1ee03; 0x1ee05, 0x1ee1f; 0x1ee21, 0x1ee22; 0x1ee24, 0x1ee24; 0x1ee27, 0x1ee27; - 0x1ee29, 0x1ee32; 0x1ee34, 0x1ee37; 0x1ee39, 0x1ee39; 0x1ee3b, 0x1ee3b; 0x1ee42, 0x1ee42; - 0x1ee47, 0x1ee47; 0x1ee49, 0x1ee49; 0x1ee4b, 0x1ee4b; 0x1ee4d, 0x1ee4f; 0x1ee51, 0x1ee52; - 0x1ee54, 0x1ee54; 0x1ee57, 0x1ee57; 0x1ee59, 0x1ee59; 0x1ee5b, 0x1ee5b; 0x1ee5d, 0x1ee5d; - 0x1ee5f, 0x1ee5f; 0x1ee61, 0x1ee62; 0x1ee64, 0x1ee64; 0x1ee67, 0x1ee6a; 0x1ee6c, 0x1ee72; - 0x1ee74, 0x1ee77; 0x1ee79, 0x1ee7c; 0x1ee7e, 0x1ee7e; 0x1ee80, 0x1ee89; 0x1ee8b, 0x1ee9b; - 0x1eea1, 0x1eea3; 0x1eea5, 0x1eea9; 0x1eeab, 0x1eebb; 0x20000, 0x2a6df; 0x2a700, 0x2b738; - 0x30000, 0x3134a; 0x2f800, 0x2fa1d; 0x2ceb0, 0x2ebe0; 0x2b820, 0x2cea1; 0x2b740, 0x2b81d] - - let list = [ - ("alphabetic", alphabetic); - ("ascii_hex_digit", ascii_hex_digit); - ("hex_digit", hex_digit); - ("id_continue", id_continue); - ("id_start", id_start); - ("lowercase", lowercase); - ("math", math); - ("other_alphabetic", other_alphabetic); - ("other_lowercase", other_lowercase); - ("other_math", other_math); - ("other_uppercase", other_uppercase); - ("uppercase", uppercase); - ("white_space", white_space); - ("xid_continue", xid_continue); - ("xid_start", xid_start) - ] + [ + (0x41, 0x5a); + (0x61, 0x7a); + (0xaa, 0xaa); + (0xb5, 0xb5); + (0xba, 0xba); + (0xc0, 0xd6); + (0xd8, 0xf6); + (0xf8, 0x1ba); + (0x1bb, 0x1bb); + (0x1bc, 0x1bf); + (0x1c0, 0x1c3); + (0x1c4, 0x293); + (0x294, 0x294); + (0x295, 0x2af); + (0x2b0, 0x2c1); + (0x2c6, 0x2d1); + (0x2e0, 0x2e4); + (0x2ec, 0x2ec); + (0x2ee, 0x2ee); + (0x370, 0x373); + (0x374, 0x374); + (0x376, 0x377); + (0x37b, 0x37d); + (0x37f, 0x37f); + (0x386, 0x386); + (0x388, 0x38a); + (0x38c, 0x38c); + (0x38e, 0x3a1); + (0x3a3, 0x3f5); + (0x3f7, 0x481); + (0x48a, 0x52f); + (0x531, 0x556); + (0x559, 0x559); + (0x560, 0x588); + (0x5d0, 0x5ea); + (0x5ef, 0x5f2); + (0x620, 0x63f); + (0x640, 0x640); + (0x641, 0x64a); + (0x66e, 0x66f); + (0x671, 0x6d3); + (0x6d5, 0x6d5); + (0x6e5, 0x6e6); + (0x6ee, 0x6ef); + (0x6fa, 0x6fc); + (0x6ff, 0x6ff); + (0x710, 0x710); + (0x712, 0x72f); + (0x74d, 0x7a5); + (0x7b1, 0x7b1); + (0x7ca, 0x7ea); + (0x7f4, 0x7f5); + (0x7fa, 0x7fa); + (0x800, 0x815); + (0x81a, 0x81a); + (0x824, 0x824); + (0x828, 0x828); + (0x840, 0x858); + (0x860, 0x86a); + (0x870, 0x887); + (0x889, 0x88e); + (0x8a0, 0x8c8); + (0x8c9, 0x8c9); + (0x904, 0x939); + (0x93d, 0x93d); + (0x950, 0x950); + (0x958, 0x961); + (0x971, 0x971); + (0x972, 0x980); + (0x985, 0x98c); + (0x98f, 0x990); + (0x993, 0x9a8); + (0x9aa, 0x9b0); + (0x9b2, 0x9b2); + (0x9b6, 0x9b9); + (0x9bd, 0x9bd); + (0x9ce, 0x9ce); + (0x9dc, 0x9dd); + (0x9df, 0x9e1); + (0x9f0, 0x9f1); + (0x9fc, 0x9fc); + (0xa05, 0xa0a); + (0xa0f, 0xa10); + (0xa13, 0xa28); + (0xa2a, 0xa30); + (0xa32, 0xa33); + (0xa35, 0xa36); + (0xa38, 0xa39); + (0xa59, 0xa5c); + (0xa5e, 0xa5e); + (0xa72, 0xa74); + (0xa85, 0xa8d); + (0xa8f, 0xa91); + (0xa93, 0xaa8); + (0xaaa, 0xab0); + (0xab2, 0xab3); + (0xab5, 0xab9); + (0xabd, 0xabd); + (0xad0, 0xad0); + (0xae0, 0xae1); + (0xaf9, 0xaf9); + (0xb05, 0xb0c); + (0xb0f, 0xb10); + (0xb13, 0xb28); + (0xb2a, 0xb30); + (0xb32, 0xb33); + (0xb35, 0xb39); + (0xb3d, 0xb3d); + (0xb5c, 0xb5d); + (0xb5f, 0xb61); + (0xb71, 0xb71); + (0xb83, 0xb83); + (0xb85, 0xb8a); + (0xb8e, 0xb90); + (0xb92, 0xb95); + (0xb99, 0xb9a); + (0xb9c, 0xb9c); + (0xb9e, 0xb9f); + (0xba3, 0xba4); + (0xba8, 0xbaa); + (0xbae, 0xbb9); + (0xbd0, 0xbd0); + (0xc05, 0xc0c); + (0xc0e, 0xc10); + (0xc12, 0xc28); + (0xc2a, 0xc39); + (0xc3d, 0xc3d); + (0xc58, 0xc5a); + (0xc5d, 0xc5d); + (0xc60, 0xc61); + (0xc80, 0xc80); + (0xc85, 0xc8c); + (0xc8e, 0xc90); + (0xc92, 0xca8); + (0xcaa, 0xcb3); + (0xcb5, 0xcb9); + (0xcbd, 0xcbd); + (0xcdd, 0xcde); + (0xce0, 0xce1); + (0xcf1, 0xcf2); + (0xd04, 0xd0c); + (0xd0e, 0xd10); + (0xd12, 0xd3a); + (0xd3d, 0xd3d); + (0xd4e, 0xd4e); + (0xd54, 0xd56); + (0xd5f, 0xd61); + (0xd7a, 0xd7f); + (0xd85, 0xd96); + (0xd9a, 0xdb1); + (0xdb3, 0xdbb); + (0xdbd, 0xdbd); + (0xdc0, 0xdc6); + (0xe01, 0xe30); + (0xe32, 0xe32); + (0xe40, 0xe45); + (0xe46, 0xe46); + (0xe81, 0xe82); + (0xe84, 0xe84); + (0xe86, 0xe8a); + (0xe8c, 0xea3); + (0xea5, 0xea5); + (0xea7, 0xeb0); + (0xeb2, 0xeb2); + (0xebd, 0xebd); + (0xec0, 0xec4); + (0xec6, 0xec6); + (0xedc, 0xedf); + (0xf00, 0xf00); + (0xf40, 0xf47); + (0xf49, 0xf6c); + (0xf88, 0xf8c); + (0x1000, 0x102a); + (0x103f, 0x103f); + (0x1050, 0x1055); + (0x105a, 0x105d); + (0x1061, 0x1061); + (0x1065, 0x1066); + (0x106e, 0x1070); + (0x1075, 0x1081); + (0x108e, 0x108e); + (0x10a0, 0x10c5); + (0x10c7, 0x10c7); + (0x10cd, 0x10cd); + (0x10d0, 0x10fa); + (0x10fc, 0x10fc); + (0x10fd, 0x10ff); + (0x1100, 0x1248); + (0x124a, 0x124d); + (0x1250, 0x1256); + (0x1258, 0x1258); + (0x125a, 0x125d); + (0x1260, 0x1288); + (0x128a, 0x128d); + (0x1290, 0x12b0); + (0x12b2, 0x12b5); + (0x12b8, 0x12be); + (0x12c0, 0x12c0); + (0x12c2, 0x12c5); + (0x12c8, 0x12d6); + (0x12d8, 0x1310); + (0x1312, 0x1315); + (0x1318, 0x135a); + (0x1380, 0x138f); + (0x13a0, 0x13f5); + (0x13f8, 0x13fd); + (0x1401, 0x166c); + (0x166f, 0x167f); + (0x1681, 0x169a); + (0x16a0, 0x16ea); + (0x16ee, 0x16f0); + (0x16f1, 0x16f8); + (0x1700, 0x1711); + (0x171f, 0x1731); + (0x1740, 0x1751); + (0x1760, 0x176c); + (0x176e, 0x1770); + (0x1780, 0x17b3); + (0x17d7, 0x17d7); + (0x17dc, 0x17dc); + (0x1820, 0x1842); + (0x1843, 0x1843); + (0x1844, 0x1878); + (0x1880, 0x1884); + (0x1885, 0x1886); + (0x1887, 0x18a8); + (0x18aa, 0x18aa); + (0x18b0, 0x18f5); + (0x1900, 0x191e); + (0x1950, 0x196d); + (0x1970, 0x1974); + (0x1980, 0x19ab); + (0x19b0, 0x19c9); + (0x1a00, 0x1a16); + (0x1a20, 0x1a54); + (0x1aa7, 0x1aa7); + (0x1b05, 0x1b33); + (0x1b45, 0x1b4c); + (0x1b83, 0x1ba0); + (0x1bae, 0x1baf); + (0x1bba, 0x1be5); + (0x1c00, 0x1c23); + (0x1c4d, 0x1c4f); + (0x1c5a, 0x1c77); + (0x1c78, 0x1c7d); + (0x1c80, 0x1c88); + (0x1c90, 0x1cba); + (0x1cbd, 0x1cbf); + (0x1ce9, 0x1cec); + (0x1cee, 0x1cf3); + (0x1cf5, 0x1cf6); + (0x1cfa, 0x1cfa); + (0x1d00, 0x1d2b); + (0x1d2c, 0x1d6a); + (0x1d6b, 0x1d77); + (0x1d78, 0x1d78); + (0x1d79, 0x1d9a); + (0x1d9b, 0x1dbf); + (0x1e00, 0x1f15); + (0x1f18, 0x1f1d); + (0x1f20, 0x1f45); + (0x1f48, 0x1f4d); + (0x1f50, 0x1f57); + (0x1f59, 0x1f59); + (0x1f5b, 0x1f5b); + (0x1f5d, 0x1f5d); + (0x1f5f, 0x1f7d); + (0x1f80, 0x1fb4); + (0x1fb6, 0x1fbc); + (0x1fbe, 0x1fbe); + (0x1fc2, 0x1fc4); + (0x1fc6, 0x1fcc); + (0x1fd0, 0x1fd3); + (0x1fd6, 0x1fdb); + (0x1fe0, 0x1fec); + (0x1ff2, 0x1ff4); + (0x1ff6, 0x1ffc); + (0x2071, 0x2071); + (0x207f, 0x207f); + (0x2090, 0x209c); + (0x2102, 0x2102); + (0x2107, 0x2107); + (0x210a, 0x2113); + (0x2115, 0x2115); + (0x2118, 0x2118); + (0x2119, 0x211d); + (0x2124, 0x2124); + (0x2126, 0x2126); + (0x2128, 0x2128); + (0x212a, 0x212d); + (0x212e, 0x212e); + (0x212f, 0x2134); + (0x2135, 0x2138); + (0x2139, 0x2139); + (0x213c, 0x213f); + (0x2145, 0x2149); + (0x214e, 0x214e); + (0x2160, 0x2182); + (0x2183, 0x2184); + (0x2185, 0x2188); + (0x2c00, 0x2c7b); + (0x2c7c, 0x2c7d); + (0x2c7e, 0x2ce4); + (0x2ceb, 0x2cee); + (0x2cf2, 0x2cf3); + (0x2d00, 0x2d25); + (0x2d27, 0x2d27); + (0x2d2d, 0x2d2d); + (0x2d30, 0x2d67); + (0x2d6f, 0x2d6f); + (0x2d80, 0x2d96); + (0x2da0, 0x2da6); + (0x2da8, 0x2dae); + (0x2db0, 0x2db6); + (0x2db8, 0x2dbe); + (0x2dc0, 0x2dc6); + (0x2dc8, 0x2dce); + (0x2dd0, 0x2dd6); + (0x2dd8, 0x2dde); + (0x3005, 0x3005); + (0x3006, 0x3006); + (0x3007, 0x3007); + (0x3021, 0x3029); + (0x3031, 0x3035); + (0x3038, 0x303a); + (0x303b, 0x303b); + (0x303c, 0x303c); + (0x3041, 0x3096); + (0x309d, 0x309e); + (0x309f, 0x309f); + (0x30a1, 0x30fa); + (0x30fc, 0x30fe); + (0x30ff, 0x30ff); + (0x3105, 0x312f); + (0x3131, 0x318e); + (0x31a0, 0x31bf); + (0x31f0, 0x31ff); + (0x3400, 0x4dbf); + (0x4e00, 0xa014); + (0xa015, 0xa015); + (0xa016, 0xa48c); + (0xa4d0, 0xa4f7); + (0xa4f8, 0xa4fd); + (0xa500, 0xa60b); + (0xa60c, 0xa60c); + (0xa610, 0xa61f); + (0xa62a, 0xa62b); + (0xa640, 0xa66d); + (0xa66e, 0xa66e); + (0xa67f, 0xa67f); + (0xa680, 0xa69b); + (0xa69c, 0xa69d); + (0xa6a0, 0xa6e5); + (0xa6e6, 0xa6ef); + (0xa717, 0xa71f); + (0xa722, 0xa76f); + (0xa770, 0xa770); + (0xa771, 0xa787); + (0xa788, 0xa788); + (0xa78b, 0xa78e); + (0xa78f, 0xa78f); + (0xa790, 0xa7ca); + (0xa7d0, 0xa7d1); + (0xa7d3, 0xa7d3); + (0xa7d5, 0xa7d9); + (0xa7f2, 0xa7f4); + (0xa7f5, 0xa7f6); + (0xa7f7, 0xa7f7); + (0xa7f8, 0xa7f9); + (0xa7fa, 0xa7fa); + (0xa7fb, 0xa801); + (0xa803, 0xa805); + (0xa807, 0xa80a); + (0xa80c, 0xa822); + (0xa840, 0xa873); + (0xa882, 0xa8b3); + (0xa8f2, 0xa8f7); + (0xa8fb, 0xa8fb); + (0xa8fd, 0xa8fe); + (0xa90a, 0xa925); + (0xa930, 0xa946); + (0xa960, 0xa97c); + (0xa984, 0xa9b2); + (0xa9cf, 0xa9cf); + (0xa9e0, 0xa9e4); + (0xa9e6, 0xa9e6); + (0xa9e7, 0xa9ef); + (0xa9fa, 0xa9fe); + (0xaa00, 0xaa28); + (0xaa40, 0xaa42); + (0xaa44, 0xaa4b); + (0xaa60, 0xaa6f); + (0xaa70, 0xaa70); + (0xaa71, 0xaa76); + (0xaa7a, 0xaa7a); + (0xaa7e, 0xaaaf); + (0xaab1, 0xaab1); + (0xaab5, 0xaab6); + (0xaab9, 0xaabd); + (0xaac0, 0xaac0); + (0xaac2, 0xaac2); + (0xaadb, 0xaadc); + (0xaadd, 0xaadd); + (0xaae0, 0xaaea); + (0xaaf2, 0xaaf2); + (0xaaf3, 0xaaf4); + (0xab01, 0xab06); + (0xab09, 0xab0e); + (0xab11, 0xab16); + (0xab20, 0xab26); + (0xab28, 0xab2e); + (0xab30, 0xab5a); + (0xab5c, 0xab5f); + (0xab60, 0xab68); + (0xab69, 0xab69); + (0xab70, 0xabbf); + (0xabc0, 0xabe2); + (0xac00, 0xd7a3); + (0xd7b0, 0xd7c6); + (0xd7cb, 0xd7fb); + (0xf900, 0xfa6d); + (0xfa70, 0xfad9); + (0xfb00, 0xfb06); + (0xfb13, 0xfb17); + (0xfb1d, 0xfb1d); + (0xfb1f, 0xfb28); + (0xfb2a, 0xfb36); + (0xfb38, 0xfb3c); + (0xfb3e, 0xfb3e); + (0xfb40, 0xfb41); + (0xfb43, 0xfb44); + (0xfb46, 0xfbb1); + (0xfbd3, 0xfc5d); + (0xfc64, 0xfd3d); + (0xfd50, 0xfd8f); + (0xfd92, 0xfdc7); + (0xfdf0, 0xfdf9); + (0xfe71, 0xfe71); + (0xfe73, 0xfe73); + (0xfe77, 0xfe77); + (0xfe79, 0xfe79); + (0xfe7b, 0xfe7b); + (0xfe7d, 0xfe7d); + (0xfe7f, 0xfefc); + (0xff21, 0xff3a); + (0xff41, 0xff5a); + (0xff66, 0xff6f); + (0xff70, 0xff70); + (0xff71, 0xff9d); + (0xffa0, 0xffbe); + (0xffc2, 0xffc7); + (0xffca, 0xffcf); + (0xffd2, 0xffd7); + (0xffda, 0xffdc); + (0x10000, 0x1000b); + (0x1000d, 0x10026); + (0x10028, 0x1003a); + (0x1003c, 0x1003d); + (0x1003f, 0x1004d); + (0x10050, 0x1005d); + (0x10080, 0x100fa); + (0x10140, 0x10174); + (0x10280, 0x1029c); + (0x102a0, 0x102d0); + (0x10300, 0x1031f); + (0x1032d, 0x10340); + (0x10341, 0x10341); + (0x10342, 0x10349); + (0x1034a, 0x1034a); + (0x10350, 0x10375); + (0x10380, 0x1039d); + (0x103a0, 0x103c3); + (0x103c8, 0x103cf); + (0x103d1, 0x103d5); + (0x10400, 0x1044f); + (0x10450, 0x1049d); + (0x104b0, 0x104d3); + (0x104d8, 0x104fb); + (0x10500, 0x10527); + (0x10530, 0x10563); + (0x10570, 0x1057a); + (0x1057c, 0x1058a); + (0x1058c, 0x10592); + (0x10594, 0x10595); + (0x10597, 0x105a1); + (0x105a3, 0x105b1); + (0x105b3, 0x105b9); + (0x105bb, 0x105bc); + (0x10600, 0x10736); + (0x10740, 0x10755); + (0x10760, 0x10767); + (0x10780, 0x10785); + (0x10787, 0x107b0); + (0x107b2, 0x107ba); + (0x10800, 0x10805); + (0x10808, 0x10808); + (0x1080a, 0x10835); + (0x10837, 0x10838); + (0x1083c, 0x1083c); + (0x1083f, 0x10855); + (0x10860, 0x10876); + (0x10880, 0x1089e); + (0x108e0, 0x108f2); + (0x108f4, 0x108f5); + (0x10900, 0x10915); + (0x10920, 0x10939); + (0x10980, 0x109b7); + (0x109be, 0x109bf); + (0x10a00, 0x10a00); + (0x10a10, 0x10a13); + (0x10a15, 0x10a17); + (0x10a19, 0x10a35); + (0x10a60, 0x10a7c); + (0x10a80, 0x10a9c); + (0x10ac0, 0x10ac7); + (0x10ac9, 0x10ae4); + (0x10b00, 0x10b35); + (0x10b40, 0x10b55); + (0x10b60, 0x10b72); + (0x10b80, 0x10b91); + (0x10c00, 0x10c48); + (0x10c80, 0x10cb2); + (0x10cc0, 0x10cf2); + (0x10d00, 0x10d23); + (0x10e80, 0x10ea9); + (0x10eb0, 0x10eb1); + (0x10f00, 0x10f1c); + (0x10f27, 0x10f27); + (0x10f30, 0x10f45); + (0x10f70, 0x10f81); + (0x10fb0, 0x10fc4); + (0x10fe0, 0x10ff6); + (0x11003, 0x11037); + (0x11071, 0x11072); + (0x11075, 0x11075); + (0x11083, 0x110af); + (0x110d0, 0x110e8); + (0x11103, 0x11126); + (0x11144, 0x11144); + (0x11147, 0x11147); + (0x11150, 0x11172); + (0x11176, 0x11176); + (0x11183, 0x111b2); + (0x111c1, 0x111c4); + (0x111da, 0x111da); + (0x111dc, 0x111dc); + (0x11200, 0x11211); + (0x11213, 0x1122b); + (0x11280, 0x11286); + (0x11288, 0x11288); + (0x1128a, 0x1128d); + (0x1128f, 0x1129d); + (0x1129f, 0x112a8); + (0x112b0, 0x112de); + (0x11305, 0x1130c); + (0x1130f, 0x11310); + (0x11313, 0x11328); + (0x1132a, 0x11330); + (0x11332, 0x11333); + (0x11335, 0x11339); + (0x1133d, 0x1133d); + (0x11350, 0x11350); + (0x1135d, 0x11361); + (0x11400, 0x11434); + (0x11447, 0x1144a); + (0x1145f, 0x11461); + (0x11480, 0x114af); + (0x114c4, 0x114c5); + (0x114c7, 0x114c7); + (0x11580, 0x115ae); + (0x115d8, 0x115db); + (0x11600, 0x1162f); + (0x11644, 0x11644); + (0x11680, 0x116aa); + (0x116b8, 0x116b8); + (0x11700, 0x1171a); + (0x11740, 0x11746); + (0x11800, 0x1182b); + (0x118a0, 0x118df); + (0x118ff, 0x11906); + (0x11909, 0x11909); + (0x1190c, 0x11913); + (0x11915, 0x11916); + (0x11918, 0x1192f); + (0x1193f, 0x1193f); + (0x11941, 0x11941); + (0x119a0, 0x119a7); + (0x119aa, 0x119d0); + (0x119e1, 0x119e1); + (0x119e3, 0x119e3); + (0x11a00, 0x11a00); + (0x11a0b, 0x11a32); + (0x11a3a, 0x11a3a); + (0x11a50, 0x11a50); + (0x11a5c, 0x11a89); + (0x11a9d, 0x11a9d); + (0x11ab0, 0x11af8); + (0x11c00, 0x11c08); + (0x11c0a, 0x11c2e); + (0x11c40, 0x11c40); + (0x11c72, 0x11c8f); + (0x11d00, 0x11d06); + (0x11d08, 0x11d09); + (0x11d0b, 0x11d30); + (0x11d46, 0x11d46); + (0x11d60, 0x11d65); + (0x11d67, 0x11d68); + (0x11d6a, 0x11d89); + (0x11d98, 0x11d98); + (0x11ee0, 0x11ef2); + (0x11fb0, 0x11fb0); + (0x12000, 0x12399); + (0x12400, 0x1246e); + (0x12480, 0x12543); + (0x12f90, 0x12ff0); + (0x13000, 0x1342e); + (0x14400, 0x14646); + (0x16800, 0x16a38); + (0x16a40, 0x16a5e); + (0x16a70, 0x16abe); + (0x16ad0, 0x16aed); + (0x16b00, 0x16b2f); + (0x16b40, 0x16b43); + (0x16b63, 0x16b77); + (0x16b7d, 0x16b8f); + (0x16e40, 0x16e7f); + (0x16f00, 0x16f4a); + (0x16f50, 0x16f50); + (0x16f93, 0x16f9f); + (0x16fe0, 0x16fe1); + (0x16fe3, 0x16fe3); + (0x17000, 0x187f7); + (0x18800, 0x18cd5); + (0x18d00, 0x18d08); + (0x1aff0, 0x1aff3); + (0x1aff5, 0x1affb); + (0x1affd, 0x1affe); + (0x1b000, 0x1b122); + (0x1b150, 0x1b152); + (0x1b164, 0x1b167); + (0x1b170, 0x1b2fb); + (0x1bc00, 0x1bc6a); + (0x1bc70, 0x1bc7c); + (0x1bc80, 0x1bc88); + (0x1bc90, 0x1bc99); + (0x1d400, 0x1d454); + (0x1d456, 0x1d49c); + (0x1d49e, 0x1d49f); + (0x1d4a2, 0x1d4a2); + (0x1d4a5, 0x1d4a6); + (0x1d4a9, 0x1d4ac); + (0x1d4ae, 0x1d4b9); + (0x1d4bb, 0x1d4bb); + (0x1d4bd, 0x1d4c3); + (0x1d4c5, 0x1d505); + (0x1d507, 0x1d50a); + (0x1d50d, 0x1d514); + (0x1d516, 0x1d51c); + (0x1d51e, 0x1d539); + (0x1d53b, 0x1d53e); + (0x1d540, 0x1d544); + (0x1d546, 0x1d546); + (0x1d54a, 0x1d550); + (0x1d552, 0x1d6a5); + (0x1d6a8, 0x1d6c0); + (0x1d6c2, 0x1d6da); + (0x1d6dc, 0x1d6fa); + (0x1d6fc, 0x1d714); + (0x1d716, 0x1d734); + (0x1d736, 0x1d74e); + (0x1d750, 0x1d76e); + (0x1d770, 0x1d788); + (0x1d78a, 0x1d7a8); + (0x1d7aa, 0x1d7c2); + (0x1d7c4, 0x1d7cb); + (0x1df00, 0x1df09); + (0x1df0a, 0x1df0a); + (0x1df0b, 0x1df1e); + (0x1e100, 0x1e12c); + (0x1e137, 0x1e13d); + (0x1e14e, 0x1e14e); + (0x1e290, 0x1e2ad); + (0x1e2c0, 0x1e2eb); + (0x1e7e0, 0x1e7e6); + (0x1e7e8, 0x1e7eb); + (0x1e7ed, 0x1e7ee); + (0x1e7f0, 0x1e7fe); + (0x1e800, 0x1e8c4); + (0x1e900, 0x1e943); + (0x1e94b, 0x1e94b); + (0x1ee00, 0x1ee03); + (0x1ee05, 0x1ee1f); + (0x1ee21, 0x1ee22); + (0x1ee24, 0x1ee24); + (0x1ee27, 0x1ee27); + (0x1ee29, 0x1ee32); + (0x1ee34, 0x1ee37); + (0x1ee39, 0x1ee39); + (0x1ee3b, 0x1ee3b); + (0x1ee42, 0x1ee42); + (0x1ee47, 0x1ee47); + (0x1ee49, 0x1ee49); + (0x1ee4b, 0x1ee4b); + (0x1ee4d, 0x1ee4f); + (0x1ee51, 0x1ee52); + (0x1ee54, 0x1ee54); + (0x1ee57, 0x1ee57); + (0x1ee59, 0x1ee59); + (0x1ee5b, 0x1ee5b); + (0x1ee5d, 0x1ee5d); + (0x1ee5f, 0x1ee5f); + (0x1ee61, 0x1ee62); + (0x1ee64, 0x1ee64); + (0x1ee67, 0x1ee6a); + (0x1ee6c, 0x1ee72); + (0x1ee74, 0x1ee77); + (0x1ee79, 0x1ee7c); + (0x1ee7e, 0x1ee7e); + (0x1ee80, 0x1ee89); + (0x1ee8b, 0x1ee9b); + (0x1eea1, 0x1eea3); + (0x1eea5, 0x1eea9); + (0x1eeab, 0x1eebb); + (0x20000, 0x2a6df); + (0x2a700, 0x2b738); + (0x30000, 0x3134a); + (0x2f800, 0x2fa1d); + (0x2ceb0, 0x2ebe0); + (0x2b820, 0x2cea1); + (0x2b740, 0x2b81d); + ] + let list = + [ + ("alphabetic", alphabetic); + ("ascii_hex_digit", ascii_hex_digit); + ("hex_digit", hex_digit); + ("id_continue", id_continue); + ("id_start", id_start); + ("lowercase", lowercase); + ("math", math); + ("other_alphabetic", other_alphabetic); + ("other_lowercase", other_lowercase); + ("other_math", other_math); + ("other_uppercase", other_uppercase); + ("uppercase", uppercase); + ("white_space", white_space); + ("xid_continue", xid_continue); + ("xid_start", xid_start); + ] end From 8f741b2db417f475a1112c717354a451f23f9994 Mon Sep 17 00:00:00 2001 From: dongyan Date: Mon, 19 Sep 2022 20:50:17 +0800 Subject: [PATCH 07/30] Fix version number --- dune-project | 2 +- sedlex.opam | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dune-project b/dune-project index 2972cd3e..e98e7270 100644 --- a/dune-project +++ b/dune-project @@ -1,5 +1,5 @@ (lang dune 2.8) -(version 2144578-dirty) +(version 3.0) (name sedlex) (source (github ocaml-community/sedlex)) (license MIT) diff --git a/sedlex.opam b/sedlex.opam index aaf8ba1c..95c6ec70 100644 --- a/sedlex.opam +++ b/sedlex.opam @@ -1,6 +1,6 @@ # This file is generated by dune, edit dune-project instead opam-version: "2.0" -version: "2144578-dirty" +version: "3.0" synopsis: "An OCaml lexer generator for Unicode" description: """ sedlex is a lexer generator for OCaml. It is similar to ocamllex, but supports From ad3d0a04846dd2102c61fc7adfea12fa460af8fc Mon Sep 17 00:00:00 2001 From: dongyan Date: Tue, 20 Sep 2022 21:52:27 +0800 Subject: [PATCH 08/30] Bug fixes & Add testcases --- examples/dune | 16 ++++++- examples/number_lexer.ml | 93 ++++++++++++++++++++++++++++++++++++++++ src/syntax/ppx_sedlex.ml | 23 +++++----- src/syntax/sedlex.ml | 8 ++-- src/syntax/sedlex.mli | 3 +- 5 files changed, 127 insertions(+), 16 deletions(-) create mode 100644 examples/number_lexer.ml diff --git a/examples/dune b/examples/dune index 06d90c96..c32f0ebe 100644 --- a/examples/dune +++ b/examples/dune @@ -1,5 +1,12 @@ (executables - (names tokenizer regressions complement subtraction repeat performance) + (names + tokenizer + regressions + complement + subtraction + repeat + performance + number_lexer) (libraries sedlex sedlex_ppx) (preprocess (pps sedlex.ppx)) @@ -46,3 +53,10 @@ (:< performance.exe)) (action (run %{<}))) + +(rule + (alias runtest) + (deps + (:< number_lexer.exe)) + (action + (run %{<}))) diff --git a/examples/number_lexer.ml b/examples/number_lexer.ml new file mode 100644 index 00000000..39c254be --- /dev/null +++ b/examples/number_lexer.ml @@ -0,0 +1,93 @@ +let digit_2 = [%sedlex.regexp? '0' .. '1'] +let digit_8 = [%sedlex.regexp? '0' .. '7'] +let digit = [%sedlex.regexp? '0' .. '9'] +let digit_16 = [%sedlex.regexp? digit | 'A' .. 'F' | 'a' .. 'f'] +let prefix_2 = [%sedlex.regexp? "0b"] +let prefix_8 = [%sedlex.regexp? "0o"] +let prefix_16 = [%sedlex.regexp? "0x"] +let sign = [%sedlex.regexp? "" | '+' | '-'] +let sign_op = [%sedlex.regexp? '+' | '-'] +let num_2 = [%sedlex.regexp? Plus digit_2] +let num_8 = [%sedlex.regexp? Plus digit_8] +let num_10 = [%sedlex.regexp? Plus digit] +let num_16 = [%sedlex.regexp? Plus digit_16] + +let rec token buf = + let sub (a, b) = Sedlexing.Latin1.sub_lexeme buf a b in + match%sedlex buf with + (* {Integers} *) + | (sign as s), prefix_2, (num_2 as n) -> + Printf.printf "Bin %s%s\n" (sub s) (sub n); + token buf + | (sign as s), prefix_8, (num_8 as n) -> + Printf.printf "Oct %s%s\n" (sub s) (sub n); + token buf + | (sign as s), (num_10 as n) -> + Printf.printf "Dec %s%s\n" (sub s) (sub n); + token buf + | (sign as s), prefix_16, (num_16 as n) -> + Printf.printf "Hex %s%s\n" (sub s) (sub n); + token buf + (* {Fractions} *) + | (sign as s), prefix_2, (num_2 as n), '/', (num_2 as d) -> + Printf.printf "Bin %s%s/%s\n" (sub s) (sub n) (sub d); + token buf + | (sign as s), prefix_8, (num_8 as n), '/', (num_8 as d) -> + Printf.printf "Oct %s%s/%s\n" (sub s) (sub n) (sub d); + token buf + | (sign as s), (num_10 as n), '/', (num_10 as d) -> + Printf.printf "Dec %s%s/%s\n" (sub s) (sub n) (sub d); + token buf + | (sign as s), prefix_16, (num_16 as n), '/', (num_16 as d) -> + Printf.printf "Hex %s%s/%s\n" (sub s) (sub n) (sub d); + token buf + (* {Complex Numbers} *) + | (sign as s), prefix_2, (num_2 as r), (sign_op as o), (num_2 as i), 'i' -> + Printf.printf "Bin %s%s%s%si\n" (sub s) (sub r) (sub o) (sub i); + token buf + | (sign as s), prefix_8, (num_8 as r), (sign_op as o), (num_8 as i), 'i' -> + Printf.printf "Oct %s%s%s%si\n" (sub s) (sub r) (sub o) (sub i); + token buf + | (sign as s), (num_10 as r), (sign_op as o), (num_10 as i), 'i' -> + Printf.printf "Dec %s%s%s%si\n" (sub s) (sub r) (sub o) (sub i); + token buf + | (sign as s), prefix_16, (num_16 as r), (sign_op as o), (num_16 as i), 'i' + -> + Printf.printf "Hex %s%s%s%si\n" (sub s) (sub r) (sub o) (sub i); + token buf + (* {Others} *) + | Plus xml_blank -> token buf + | 128 .. 255 -> print_endline "Non ASCII" + | eof -> print_endline "EOF" + | _ -> failwith "Unexpected character" + +let () = + let lexbuf = + Sedlexing.Latin1.from_string + {| + 123 + +123 + -123 + 0b01010101 + -0b11110000 + +0b11111111 + 0o12345670 + +0o76543210 + -0o17263540 + 0x123abcdef + -0x456DEFabc + +0x789ABCdef + 123/456 + -456/789 + +987/654 + 0o777/100 + +0o200/666 + 1+1i + 1-1i + 0x1f+2ei + +0x1f-2ei + 0b10+11i + -0b10-11i + |} + in + token lexbuf diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index b1e136ed..0aed4aad 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -109,7 +109,7 @@ end) module StrLocSet = Set.Make (struct type t = string loc - let compare = compare + let compare a b = compare a.txt b.txt end) let builtin_regexps = @@ -230,7 +230,9 @@ let gen_state lexbuf auto i (trans, final) = ~lhs:[%pat? _] ~guard:None ~rhs: - [%expr Sedlexing.backtrack [%e evar ~loc lexbuf], __sedlex_path]; + [%expr + Sedlexing.backtrack [%e evar ~loc lexbuf], + __sedlex_tl __sedlex_path]; ]) in let ret body = @@ -268,7 +270,7 @@ let gen_trace lexbuf traces i = function | (_, []), _ -> [] | (_, aliases), _ -> let loc = default_loc in - let trans, finals = traces.(i) in + let initial, trans, finals = traces.(i) in let alias_indexes = List.to_seq aliases |> Seq.mapi (fun i { txt = alias } -> (alias, i)) @@ -306,10 +308,7 @@ let gen_trace lexbuf traces i = function let trans_cases = List.map (fun (curr, state, next, starts, stops) -> - let lhs = - if curr == -1 then [%pat? -1, _] - else ppat_tuple ~loc [pint ~loc curr; pint ~loc state] - in + let lhs = ppat_tuple ~loc [pint ~loc curr; pint ~loc state] in let call_rest = [%expr __sedlex_aux (__sedlex_pos - 1) [%e eint ~loc next] @@ -361,8 +360,8 @@ let gen_trace lexbuf traces i = function @@ pexp_let ~loc Recursive [aux_fun] @@ [%expr __sedlex_aux - (Sedlexing.lexeme_length [%e evar ~loc lexbuf] + 1) - (-1) __sedlex_path; + (Sedlexing.lexeme_length [%e evar ~loc lexbuf]) + [%e eint ~loc initial] __sedlex_path; (__sedlex_aliases_pos, __sedlex_aliases_len)]]]; ] @@ -668,9 +667,13 @@ let mapper = let l, regexps' = sub#structure_with_regexps (!previous @ l) in let parts = List.map partition (get_partitions ()) in let tables = List.map table (get_tables ()) in + let funcs = + let loc = default_loc in + [%str let __sedlex_tl = function _ :: tl -> tl | _ -> assert false] + in regexps := regexps'; should_set_cookies := true; - tables @ parts @ l) + funcs @ tables @ parts @ l) else fst (this#structure_with_regexps l) end diff --git a/src/syntax/sedlex.ml b/src/syntax/sedlex.ml index 51668062..19af5fcd 100644 --- a/src/syntax/sedlex.ml +++ b/src/syntax/sedlex.ml @@ -136,8 +136,8 @@ let compile_traces states (start, final) = let i = !counter in incr counter; Hashtbl.add nodes_idx node i; - List.iter (fun (_, next) -> aux next) node.trans; - List.iter aux node.eps + List.iter aux node.eps; + List.iter (fun (_, next) -> aux next) node.trans in aux start; let handle_alias (starts, stops) = function @@ -145,7 +145,7 @@ let compile_traces states (start, final) = | Some (alias, flag) -> if flag then (alias :: starts, stops) else (starts, alias :: stops) in - let first_case = (-1, 0, Hashtbl.find nodes_idx final, [], []) in + let first_node = Hashtbl.find nodes_idx final in let trans_cases = let visited = Array.make !counter false in let cases = Hashtbl.create 31 in @@ -186,7 +186,7 @@ let compile_traces states (start, final) = in dfs ([], []) [] start in - (first_case :: trans_cases, final_cases) + (first_node, trans_cases, final_cases) let compile rs = let rs = Array.map compile_re rs in diff --git a/src/syntax/sedlex.mli b/src/syntax/sedlex.mli index d6cc1181..58219d9c 100644 --- a/src/syntax/sedlex.mli +++ b/src/syntax/sedlex.mli @@ -26,6 +26,7 @@ val intersection : regexp -> regexp -> regexp option val compile : regexp array -> ((Sedlex_cset.t * int) array * bool array) array - * ((int * int * int * string list * string list) list + * (int + * (int * int * int * string list * string list) list * (int * string list * string list) list) array From 8e706d9ddf10a47942f4ad2b19c5439686d4cc6e Mon Sep 17 00:00:00 2001 From: dongyan Date: Tue, 20 Sep 2022 22:48:28 +0800 Subject: [PATCH 09/30] Optimize traces generation --- examples/number_lexer.gen.ml | 1164 ++++++++++++++++++++++++++++++++++ src/syntax/sedlex.ml | 18 +- 2 files changed, 1175 insertions(+), 7 deletions(-) create mode 100644 examples/number_lexer.gen.ml diff --git a/examples/number_lexer.gen.ml b/examples/number_lexer.gen.ml new file mode 100644 index 00000000..6e3dfe8e --- /dev/null +++ b/examples/number_lexer.gen.ml @@ -0,0 +1,1164 @@ +[@@@ocaml.ppx.context +{ + tool_name = "ppx_driver"; + include_dirs = []; + load_path = []; + open_modules = []; + for_package = None; + debug = false; + use_threads = false; + use_vmthreads = false; + recursive_types = false; + principal = false; + transparent_modules = false; + unboxed_types = false; + unsafe_string = false; + cookies = + [ + ( "sedlex.regexps", + [%regexps + let digit_2 = [%sedlex.regexp? '0' .. '1'] + let digit_8 = [%sedlex.regexp? '0' .. '7'] + let digit = [%sedlex.regexp? '0' .. '9'] + let digit_16 = [%sedlex.regexp? digit | 'A' .. 'F' | 'a' .. 'f'] + let prefix_2 = [%sedlex.regexp? "0b"] + let prefix_8 = [%sedlex.regexp? "0o"] + let prefix_16 = [%sedlex.regexp? "0x"] + let sign = [%sedlex.regexp? "" | '+' | '-'] + let sign_op = [%sedlex.regexp? '+' | '-'] + let num_2 = [%sedlex.regexp? Plus digit_2] + let num_8 = [%sedlex.regexp? Plus digit_8] + let num_10 = [%sedlex.regexp? Plus digit] + let num_16 = [%sedlex.regexp? Plus digit_16]] ); + ]; +}] + +let __sedlex_tl = function _ :: tl -> tl | _ -> assert false + +let __sedlex_table_6 = + "\001\000\001\000\002\003\003\003\003\003\003\003\003\003\003" + +let __sedlex_table_8 = + "\001\001\001\001\001\001\001\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002" + +let __sedlex_table_12 = + "\001\001\001\001\001\001\001\001\001\001\000\000\000\000\000\000\000\001\001\001\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\001\001\001\000\000\002" + +let __sedlex_table_2 = + "\001\000\001\000\002\003\003\003\003\003\003\003\003\003\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\000\006" + +let __sedlex_table_1 = + "\001\001\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001" + +let __sedlex_table_5 = + "\001\001\001\001\001\001\001\001\001\001\000\000\000\000\000\000\000\001\001\001\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\001\001\001" + +let __sedlex_table_7 = "\001\000\001\000\002\003\003\003\003\003\003\003\003" + +let __sedlex_table_3 = + "\001\000\001\000\002\003\003\003\003\003\003\003\003\003\003\000\000\000\000\000\000\000\003\003\003\003\003\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\003\003\003\003\003" + +let __sedlex_table_13 = + "\001\000\000\000\000\000\000\000\000\000\002\002\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\003\000\003\000\000\004\005\005\005\005\005\005\005\005\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006" + +let __sedlex_table_10 = + "\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002" + +let __sedlex_table_4 = "\001\002\002\002\002\002\002\002\002\002" + +let __sedlex_table_11 = + "\001\001\001\001\001\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002" + +let __sedlex_table_9 = "\001\000\001\000\002\003\003" + +let __sedlex_partition_2 c = + if c <= 8 then -1 + else if c <= 32 then + Char.code (String.unsafe_get __sedlex_table_1 (c - 9)) - 1 + else -1 + +let __sedlex_partition_4 c = + if c <= 42 then -1 + else if c <= 120 then + Char.code (String.unsafe_get __sedlex_table_2 (c - 43)) - 1 + else -1 + +let __sedlex_partition_15 c = + if c <= 42 then -1 + else if c <= 102 then + Char.code (String.unsafe_get __sedlex_table_3 (c - 43)) - 1 + else -1 + +let __sedlex_partition_3 c = + if c <= 47 then -1 + else if c <= 57 then + Char.code (String.unsafe_get __sedlex_table_4 (c - 48)) - 1 + else -1 + +let __sedlex_partition_8 c = if c <= 47 then -1 else if c <= 49 then 0 else -1 +let __sedlex_partition_5 c = if c <= 47 then -1 else if c <= 57 then 0 else -1 + +let __sedlex_partition_14 c = + if c <= 47 then -1 + else if c <= 102 then + Char.code (String.unsafe_get __sedlex_table_5 (c - 48)) - 1 + else -1 + +let __sedlex_partition_7 c = + if c <= 42 then -1 + else if c <= 57 then + Char.code (String.unsafe_get __sedlex_table_6 (c - 43)) - 1 + else -1 + +let __sedlex_partition_12 c = + if c <= 42 then -1 + else if c <= 55 then + Char.code (String.unsafe_get __sedlex_table_7 (c - 43)) - 1 + else -1 + +let __sedlex_partition_11 c = if c <= 47 then -1 else if c <= 55 then 0 else -1 + +let __sedlex_partition_6 c = + if c <= 47 then -1 + else if c <= 105 then + Char.code (String.unsafe_get __sedlex_table_8 (c - 48)) - 1 + else -1 + +let __sedlex_partition_9 c = + if c <= 42 then -1 + else if c <= 49 then + Char.code (String.unsafe_get __sedlex_table_9 (c - 43)) - 1 + else -1 + +let __sedlex_partition_10 c = + if c <= 47 then -1 + else if c <= 105 then + Char.code (String.unsafe_get __sedlex_table_10 (c - 48)) - 1 + else -1 + +let __sedlex_partition_13 c = + if c <= 47 then -1 + else if c <= 105 then + Char.code (String.unsafe_get __sedlex_table_11 (c - 48)) - 1 + else -1 + +let __sedlex_partition_16 c = + if c <= 47 then -1 + else if c <= 105 then + Char.code (String.unsafe_get __sedlex_table_12 (c - 48)) - 1 + else -1 + +let __sedlex_partition_1 c = + if c <= 255 then Char.code (String.unsafe_get __sedlex_table_13 (c - -1)) - 1 + else -1 + +let rec token buf = + let sub (a, b) = Sedlexing.Latin1.sub_lexeme buf a b in + let rec __sedlex_state_0 __sedlex_path buf = + match __sedlex_partition_1 (Sedlexing.__private__next_int buf) with + | 0 -> (14, __sedlex_path) + | 1 -> __sedlex_state_2 (2 :: __sedlex_path) buf + | 2 -> __sedlex_state_3 (3 :: __sedlex_path) buf + | 3 -> __sedlex_state_4 (4 :: __sedlex_path) buf + | 4 -> __sedlex_state_10 (10 :: __sedlex_path) buf + | 5 -> (13, __sedlex_path) + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_2 __sedlex_path buf = + Sedlexing.mark buf 12; + match __sedlex_partition_2 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_2 (2 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_3 __sedlex_path buf = + match __sedlex_partition_3 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_4 (4 :: __sedlex_path) buf + | 1 -> __sedlex_state_10 (10 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_4 __sedlex_path buf = + Sedlexing.mark buf 2; + match __sedlex_partition_4 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_5 (5 :: __sedlex_path) buf + | 1 -> __sedlex_state_8 (8 :: __sedlex_path) buf + | 2 -> __sedlex_state_10 (10 :: __sedlex_path) buf + | 3 -> __sedlex_state_11 (11 :: __sedlex_path) buf + | 4 -> __sedlex_state_18 (18 :: __sedlex_path) buf + | 5 -> __sedlex_state_25 (25 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_5 __sedlex_path buf = + match __sedlex_partition_5 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_6 (6 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_6 __sedlex_path buf = + match __sedlex_partition_6 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_6 (6 :: __sedlex_path) buf + | 1 -> (10, __sedlex_path) + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_8 __sedlex_path buf = + match __sedlex_partition_5 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_9 (9 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_9 __sedlex_path buf = + Sedlexing.mark buf 6; + match __sedlex_partition_5 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_9 (9 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_10 __sedlex_path buf = + Sedlexing.mark buf 2; + match __sedlex_partition_7 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_5 (5 :: __sedlex_path) buf + | 1 -> __sedlex_state_8 (8 :: __sedlex_path) buf + | 2 -> __sedlex_state_10 (10 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_11 __sedlex_path buf = + match __sedlex_partition_8 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_12 (12 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_12 __sedlex_path buf = + Sedlexing.mark buf 0; + match __sedlex_partition_9 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_13 (13 :: __sedlex_path) buf + | 1 -> __sedlex_state_16 (16 :: __sedlex_path) buf + | 2 -> __sedlex_state_12 (12 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_13 __sedlex_path buf = + match __sedlex_partition_8 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_14 (14 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_14 __sedlex_path buf = + match __sedlex_partition_10 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_14 (14 :: __sedlex_path) buf + | 1 -> (8, __sedlex_path) + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_16 __sedlex_path buf = + match __sedlex_partition_8 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_17 (17 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_17 __sedlex_path buf = + Sedlexing.mark buf 4; + match __sedlex_partition_8 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_17 (17 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_18 __sedlex_path buf = + match __sedlex_partition_11 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_19 (19 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_19 __sedlex_path buf = + Sedlexing.mark buf 1; + match __sedlex_partition_12 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_20 (20 :: __sedlex_path) buf + | 1 -> __sedlex_state_23 (23 :: __sedlex_path) buf + | 2 -> __sedlex_state_19 (19 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_20 __sedlex_path buf = + match __sedlex_partition_11 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_21 (21 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_21 __sedlex_path buf = + match __sedlex_partition_13 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_21 (21 :: __sedlex_path) buf + | 1 -> (9, __sedlex_path) + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_23 __sedlex_path buf = + match __sedlex_partition_11 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_24 (24 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_24 __sedlex_path buf = + Sedlexing.mark buf 5; + match __sedlex_partition_11 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_24 (24 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_25 __sedlex_path buf = + match __sedlex_partition_14 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_26 (26 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_26 __sedlex_path buf = + Sedlexing.mark buf 3; + match __sedlex_partition_15 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_27 (27 :: __sedlex_path) buf + | 1 -> __sedlex_state_30 (30 :: __sedlex_path) buf + | 2 -> __sedlex_state_26 (26 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_27 __sedlex_path buf = + match __sedlex_partition_14 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_28 (28 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_28 __sedlex_path buf = + match __sedlex_partition_16 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_28 (28 :: __sedlex_path) buf + | 1 -> (11, __sedlex_path) + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_30 __sedlex_path buf = + match __sedlex_partition_14 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_31 (31 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_state_31 __sedlex_path buf = + Sedlexing.mark buf 7; + match __sedlex_partition_14 (Sedlexing.__private__next_int buf) with + | 0 -> __sedlex_state_31 (31 :: __sedlex_path) buf + | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) + and __sedlex_trace_0 buf __sedlex_path = + let __sedlex_aliases_pos = [| 0; 0 |] + and __sedlex_aliases_len = [| 0; 0 |] in + let rec __sedlex_aux __sedlex_pos __sedlex_curr = function + | [] -> ( + match __sedlex_curr with + | 12 -> + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + () + | 11 -> + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + () + | 4 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + () + | _ -> assert false) + | __sedlex_state :: __sedlex_rest -> ( + match (__sedlex_curr, __sedlex_state) with + | 10, 11 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 7, 4 -> + __sedlex_aliases_len.(0) <- + __sedlex_aliases_pos.(0) - __sedlex_pos; + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest + | 7, 11 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 7, 12 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 10, 12 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 4, 0 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 11 __sedlex_rest + | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest + | _ -> assert false) + in + __sedlex_aux (Sedlexing.lexeme_length buf) 10 __sedlex_path; + (__sedlex_aliases_pos, __sedlex_aliases_len) + and __sedlex_trace_1 buf __sedlex_path = + let __sedlex_aliases_pos = [| 0; 0 |] + and __sedlex_aliases_len = [| 0; 0 |] in + let rec __sedlex_aux __sedlex_pos __sedlex_curr = function + | [] -> ( + match __sedlex_curr with + | 12 -> + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + () + | 11 -> + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + () + | 4 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + () + | _ -> assert false) + | __sedlex_state :: __sedlex_rest -> ( + match (__sedlex_curr, __sedlex_state) with + | 7, 4 -> + __sedlex_aliases_len.(0) <- + __sedlex_aliases_pos.(0) - __sedlex_pos; + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest + | 10, 18 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 10, 19 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 7, 18 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 7, 19 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 4, 0 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 11 __sedlex_rest + | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest + | _ -> assert false) + in + __sedlex_aux (Sedlexing.lexeme_length buf) 10 __sedlex_path; + (__sedlex_aliases_pos, __sedlex_aliases_len) + and __sedlex_trace_2 buf __sedlex_path = + let __sedlex_aliases_pos = [| 0; 0 |] + and __sedlex_aliases_len = [| 0; 0 |] in + let rec __sedlex_aux __sedlex_pos __sedlex_curr = function + | [] -> ( + match __sedlex_curr with + | 10 -> + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + () + | 9 -> + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + () + | 5 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aliases_len.(0) <- + __sedlex_aliases_pos.(0) - __sedlex_pos; + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + () + | _ -> assert false) + | __sedlex_state :: __sedlex_rest -> ( + match (__sedlex_curr, __sedlex_state) with + | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 5, 4 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 5, 10 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 8, 10 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 8, 3 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 8, 4 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 8, 0 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | _ -> assert false) + in + __sedlex_aux (Sedlexing.lexeme_length buf) 8 __sedlex_path; + (__sedlex_aliases_pos, __sedlex_aliases_len) + and __sedlex_trace_3 buf __sedlex_path = + let __sedlex_aliases_pos = [| 0; 0 |] + and __sedlex_aliases_len = [| 0; 0 |] in + let rec __sedlex_aux __sedlex_pos __sedlex_curr = function + | [] -> ( + match __sedlex_curr with + | 12 -> + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + () + | 11 -> + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + () + | 4 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + () + | _ -> assert false) + | __sedlex_state :: __sedlex_rest -> ( + match (__sedlex_curr, __sedlex_state) with + | 10, 25 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 10, 26 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 7, 4 -> + __sedlex_aliases_len.(0) <- + __sedlex_aliases_pos.(0) - __sedlex_pos; + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest + | 7, 25 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 4, 0 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 11 __sedlex_rest + | 7, 26 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest + | _ -> assert false) + in + __sedlex_aux (Sedlexing.lexeme_length buf) 10 __sedlex_path; + (__sedlex_aliases_pos, __sedlex_aliases_len) + and __sedlex_trace_4 buf __sedlex_path = + let __sedlex_aliases_pos = [| 0; 0; 0 |] + and __sedlex_aliases_len = [| 0; 0; 0 |] in + let rec __sedlex_aux __sedlex_pos __sedlex_curr = function + | [] -> ( + match __sedlex_curr with + | 17 -> + __sedlex_aliases_len.(2) <- + __sedlex_aliases_pos.(2) - __sedlex_pos; + __sedlex_aliases_pos.(2) <- __sedlex_pos; + () + | 16 -> + __sedlex_aliases_len.(2) <- + __sedlex_aliases_pos.(2) - __sedlex_pos; + __sedlex_aliases_pos.(2) <- __sedlex_pos; + () + | 4 -> + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aliases_len.(2) <- + __sedlex_aliases_pos.(2) - __sedlex_pos; + __sedlex_aliases_pos.(2) <- __sedlex_pos; + () + | _ -> assert false) + | __sedlex_state :: __sedlex_rest -> ( + match (__sedlex_curr, __sedlex_state) with + | 12, 12 -> + __sedlex_aliases_len.(0) <- + __sedlex_aliases_pos.(0) - __sedlex_pos; + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 10 __sedlex_rest + | 10, 11 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 7, 4 -> + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest + | 7, 11 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 7, 12 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 15, 17 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest + | 12, 17 -> __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest + | 10, 12 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 4, 0 -> + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 16 __sedlex_rest + | 15, 16 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest + | 12, 16 -> __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest + | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest + | _ -> assert false) + in + __sedlex_aux (Sedlexing.lexeme_length buf) 15 __sedlex_path; + (__sedlex_aliases_pos, __sedlex_aliases_len) + and __sedlex_trace_5 buf __sedlex_path = + let __sedlex_aliases_pos = [| 0; 0; 0 |] + and __sedlex_aliases_len = [| 0; 0; 0 |] in + let rec __sedlex_aux __sedlex_pos __sedlex_curr = function + | [] -> ( + match __sedlex_curr with + | 17 -> + __sedlex_aliases_len.(2) <- + __sedlex_aliases_pos.(2) - __sedlex_pos; + __sedlex_aliases_pos.(2) <- __sedlex_pos; + () + | 16 -> + __sedlex_aliases_len.(2) <- + __sedlex_aliases_pos.(2) - __sedlex_pos; + __sedlex_aliases_pos.(2) <- __sedlex_pos; + () + | 4 -> + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aliases_len.(2) <- + __sedlex_aliases_pos.(2) - __sedlex_pos; + __sedlex_aliases_pos.(2) <- __sedlex_pos; + () + | _ -> assert false) + | __sedlex_state :: __sedlex_rest -> ( + match (__sedlex_curr, __sedlex_state) with + | 12, 23 -> __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest + | 7, 4 -> + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest + | 10, 18 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 12, 24 -> __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest + | 15, 23 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest + | 10, 19 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 7, 18 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 7, 19 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 15, 24 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest + | 4, 0 -> + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 16 __sedlex_rest + | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest + | 12, 19 -> + __sedlex_aliases_len.(0) <- + __sedlex_aliases_pos.(0) - __sedlex_pos; + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 10 __sedlex_rest + | _ -> assert false) + in + __sedlex_aux (Sedlexing.lexeme_length buf) 15 __sedlex_path; + (__sedlex_aliases_pos, __sedlex_aliases_len) + and __sedlex_trace_6 buf __sedlex_path = + let __sedlex_aliases_pos = [| 0; 0; 0 |] + and __sedlex_aliases_len = [| 0; 0; 0 |] in + let rec __sedlex_aux __sedlex_pos __sedlex_curr = function + | [] -> ( + match __sedlex_curr with + | 15 -> + __sedlex_aliases_len.(2) <- + __sedlex_aliases_pos.(2) - __sedlex_pos; + __sedlex_aliases_pos.(2) <- __sedlex_pos; + () + | 14 -> + __sedlex_aliases_len.(2) <- + __sedlex_aliases_pos.(2) - __sedlex_pos; + __sedlex_aliases_pos.(2) <- __sedlex_pos; + () + | 5 -> + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aliases_len.(2) <- + __sedlex_aliases_pos.(2) - __sedlex_pos; + __sedlex_aliases_pos.(2) <- __sedlex_pos; + () + | _ -> assert false) + | __sedlex_state :: __sedlex_rest -> ( + match (__sedlex_curr, __sedlex_state) with + | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 13, 9 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 10 __sedlex_rest + | 10, 9 -> __sedlex_aux (__sedlex_pos - 1) 10 __sedlex_rest + | 10, 8 -> __sedlex_aux (__sedlex_pos - 1) 10 __sedlex_rest + | 5, 4 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 10, 4 -> + __sedlex_aliases_len.(0) <- + __sedlex_aliases_pos.(0) - __sedlex_pos; + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 8 __sedlex_rest + | 5, 10 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 8, 10 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 8, 3 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 8, 4 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 8, 0 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 13, 8 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 10 __sedlex_rest + | 10, 10 -> + __sedlex_aliases_len.(0) <- + __sedlex_aliases_pos.(0) - __sedlex_pos; + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 8 __sedlex_rest + | _ -> assert false) + in + __sedlex_aux (Sedlexing.lexeme_length buf) 13 __sedlex_path; + (__sedlex_aliases_pos, __sedlex_aliases_len) + and __sedlex_trace_7 buf __sedlex_path = + let __sedlex_aliases_pos = [| 0; 0; 0 |] + and __sedlex_aliases_len = [| 0; 0; 0 |] in + let rec __sedlex_aux __sedlex_pos __sedlex_curr = function + | [] -> ( + match __sedlex_curr with + | 17 -> + __sedlex_aliases_len.(2) <- + __sedlex_aliases_pos.(2) - __sedlex_pos; + __sedlex_aliases_pos.(2) <- __sedlex_pos; + () + | 16 -> + __sedlex_aliases_len.(2) <- + __sedlex_aliases_pos.(2) - __sedlex_pos; + __sedlex_aliases_pos.(2) <- __sedlex_pos; + () + | 4 -> + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aliases_len.(2) <- + __sedlex_aliases_pos.(2) - __sedlex_pos; + __sedlex_aliases_pos.(2) <- __sedlex_pos; + () + | _ -> assert false) + | __sedlex_state :: __sedlex_rest -> ( + match (__sedlex_curr, __sedlex_state) with + | 15, 30 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest + | 10, 25 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 12, 31 -> __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest + | 10, 26 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 7, 4 -> + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest + | 12, 26 -> + __sedlex_aliases_len.(0) <- + __sedlex_aliases_pos.(0) - __sedlex_pos; + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 10 __sedlex_rest + | 12, 30 -> __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest + | 7, 25 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 15, 31 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest + | 4, 0 -> + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 16 __sedlex_rest + | 7, 26 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest + | _ -> assert false) + in + __sedlex_aux (Sedlexing.lexeme_length buf) 15 __sedlex_path; + (__sedlex_aliases_pos, __sedlex_aliases_len) + and __sedlex_trace_8 buf __sedlex_path = + let __sedlex_aliases_pos = [| 0; 0; 0; 0 |] + and __sedlex_aliases_len = [| 0; 0; 0; 0 |] in + let rec __sedlex_aux __sedlex_pos __sedlex_curr = function + | [] -> ( + match __sedlex_curr with + | 20 -> + __sedlex_aliases_len.(3) <- + __sedlex_aliases_pos.(3) - __sedlex_pos; + __sedlex_aliases_pos.(3) <- __sedlex_pos; + () + | 19 -> + __sedlex_aliases_len.(3) <- + __sedlex_aliases_pos.(3) - __sedlex_pos; + __sedlex_aliases_pos.(3) <- __sedlex_pos; + () + | 4 -> + __sedlex_aliases_pos.(3) <- __sedlex_pos; + __sedlex_aliases_len.(3) <- + __sedlex_aliases_pos.(3) - __sedlex_pos; + __sedlex_aliases_pos.(3) <- __sedlex_pos; + () + | _ -> assert false) + | __sedlex_state :: __sedlex_rest -> ( + match (__sedlex_curr, __sedlex_state) with + | 14, 13 -> __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest + | 11, 11 -> + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 17, 13 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest + | 7, 4 -> + __sedlex_aliases_len.(2) <- + __sedlex_aliases_pos.(2) - __sedlex_pos; + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest + | 18, 14 -> __sedlex_aux (__sedlex_pos - 1) 17 __sedlex_rest + | 11, 12 -> + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 7, 11 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 7, 12 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 14, 14 -> __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest + | 17, 14 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest + | 4, 0 -> + __sedlex_aliases_pos.(3) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 19 __sedlex_rest + | 14, 12 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aliases_len.(0) <- + __sedlex_aliases_pos.(0) - __sedlex_pos; + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 11 __sedlex_rest + | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest + | _ -> assert false) + in + __sedlex_aux (Sedlexing.lexeme_length buf) 18 __sedlex_path; + (__sedlex_aliases_pos, __sedlex_aliases_len) + and __sedlex_trace_9 buf __sedlex_path = + let __sedlex_aliases_pos = [| 0; 0; 0; 0 |] + and __sedlex_aliases_len = [| 0; 0; 0; 0 |] in + let rec __sedlex_aux __sedlex_pos __sedlex_curr = function + | [] -> ( + match __sedlex_curr with + | 20 -> + __sedlex_aliases_len.(3) <- + __sedlex_aliases_pos.(3) - __sedlex_pos; + __sedlex_aliases_pos.(3) <- __sedlex_pos; + () + | 19 -> + __sedlex_aliases_len.(3) <- + __sedlex_aliases_pos.(3) - __sedlex_pos; + __sedlex_aliases_pos.(3) <- __sedlex_pos; + () + | 4 -> + __sedlex_aliases_pos.(3) <- __sedlex_pos; + __sedlex_aliases_len.(3) <- + __sedlex_aliases_pos.(3) - __sedlex_pos; + __sedlex_aliases_pos.(3) <- __sedlex_pos; + () + | _ -> assert false) + | __sedlex_state :: __sedlex_rest -> ( + match (__sedlex_curr, __sedlex_state) with + | 17, 20 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest + | 14, 20 -> __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest + | 11, 19 -> + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 7, 4 -> + __sedlex_aliases_len.(2) <- + __sedlex_aliases_pos.(2) - __sedlex_pos; + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest + | 14, 19 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aliases_len.(0) <- + __sedlex_aliases_pos.(0) - __sedlex_pos; + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 11 __sedlex_rest + | 7, 18 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 18, 21 -> __sedlex_aux (__sedlex_pos - 1) 17 __sedlex_rest + | 11, 18 -> + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 7, 19 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 4, 0 -> + __sedlex_aliases_pos.(3) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 19 __sedlex_rest + | 17, 21 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest + | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest + | 14, 21 -> __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest + | _ -> assert false) + in + __sedlex_aux (Sedlexing.lexeme_length buf) 18 __sedlex_path; + (__sedlex_aliases_pos, __sedlex_aliases_len) + and __sedlex_trace_10 buf __sedlex_path = + let __sedlex_aliases_pos = [| 0; 0; 0; 0 |] + and __sedlex_aliases_len = [| 0; 0; 0; 0 |] in + let rec __sedlex_aux __sedlex_pos __sedlex_curr = function + | [] -> ( + match __sedlex_curr with + | 18 -> + __sedlex_aliases_len.(3) <- + __sedlex_aliases_pos.(3) - __sedlex_pos; + __sedlex_aliases_pos.(3) <- __sedlex_pos; + () + | 17 -> + __sedlex_aliases_len.(3) <- + __sedlex_aliases_pos.(3) - __sedlex_pos; + __sedlex_aliases_pos.(3) <- __sedlex_pos; + () + | 5 -> + __sedlex_aliases_pos.(3) <- __sedlex_pos; + __sedlex_aliases_len.(2) <- + __sedlex_aliases_pos.(2) - __sedlex_pos; + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aliases_len.(3) <- + __sedlex_aliases_pos.(3) - __sedlex_pos; + __sedlex_aliases_pos.(3) <- __sedlex_pos; + () + | _ -> assert false) + | __sedlex_state :: __sedlex_rest -> ( + match (__sedlex_curr, __sedlex_state) with + | 12, 6 -> __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest + | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 12, 10 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aliases_len.(0) <- + __sedlex_aliases_pos.(0) - __sedlex_pos; + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 9 __sedlex_rest + | 9, 3 -> + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 15, 5 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest + | 5, 4 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 12, 4 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aliases_len.(0) <- + __sedlex_aliases_pos.(0) - __sedlex_pos; + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 9 __sedlex_rest + | 16, 6 -> __sedlex_aux (__sedlex_pos - 1) 15 __sedlex_rest + | 5, 10 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 12, 5 -> __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest + | 9, 0 -> + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 9, 10 -> + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 9, 4 -> + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 15, 6 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest + | _ -> assert false) + in + __sedlex_aux (Sedlexing.lexeme_length buf) 16 __sedlex_path; + (__sedlex_aliases_pos, __sedlex_aliases_len) + and __sedlex_trace_11 buf __sedlex_path = + let __sedlex_aliases_pos = [| 0; 0; 0; 0 |] + and __sedlex_aliases_len = [| 0; 0; 0; 0 |] in + let rec __sedlex_aux __sedlex_pos __sedlex_curr = function + | [] -> ( + match __sedlex_curr with + | 20 -> + __sedlex_aliases_len.(3) <- + __sedlex_aliases_pos.(3) - __sedlex_pos; + __sedlex_aliases_pos.(3) <- __sedlex_pos; + () + | 19 -> + __sedlex_aliases_len.(3) <- + __sedlex_aliases_pos.(3) - __sedlex_pos; + __sedlex_aliases_pos.(3) <- __sedlex_pos; + () + | 4 -> + __sedlex_aliases_pos.(3) <- __sedlex_pos; + __sedlex_aliases_len.(3) <- + __sedlex_aliases_pos.(3) - __sedlex_pos; + __sedlex_aliases_pos.(3) <- __sedlex_pos; + () + | _ -> assert false) + | __sedlex_state :: __sedlex_rest -> ( + match (__sedlex_curr, __sedlex_state) with + | 18, 28 -> __sedlex_aux (__sedlex_pos - 1) 17 __sedlex_rest + | 7, 4 -> + __sedlex_aliases_len.(2) <- + __sedlex_aliases_pos.(2) - __sedlex_pos; + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest + | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest + | 17, 28 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest + | 14, 26 -> + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aliases_len.(0) <- + __sedlex_aliases_pos.(0) - __sedlex_pos; + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 11 __sedlex_rest + | 7, 25 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 14, 27 -> __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest + | 11, 25 -> + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 4, 0 -> + __sedlex_aliases_pos.(3) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 19 __sedlex_rest + | 7, 26 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | 17, 27 -> + __sedlex_aliases_pos.(0) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest + | 14, 28 -> __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest + | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest + | 11, 26 -> + __sedlex_aliases_pos.(2) <- __sedlex_pos; + __sedlex_aliases_len.(1) <- + __sedlex_aliases_pos.(1) - __sedlex_pos; + __sedlex_aliases_pos.(1) <- __sedlex_pos; + __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest + | _ -> assert false) + in + __sedlex_aux (Sedlexing.lexeme_length buf) 18 __sedlex_path; + (__sedlex_aliases_pos, __sedlex_aliases_len) + in + Sedlexing.start buf; + let __sedlex_result, __sedlex_path = __sedlex_state_0 [0] buf in + match __sedlex_result with + | 0 -> + let __sedlex_aliases_pos, __sedlex_aliases_len = + __sedlex_trace_0 buf __sedlex_path + in + let n = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) + and s = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) in + Printf.printf "Bin %s%s\n" (sub s) (sub n); + token buf + | 1 -> + let __sedlex_aliases_pos, __sedlex_aliases_len = + __sedlex_trace_1 buf __sedlex_path + in + let n = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) + and s = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) in + Printf.printf "Oct %s%s\n" (sub s) (sub n); + token buf + | 2 -> + let __sedlex_aliases_pos, __sedlex_aliases_len = + __sedlex_trace_2 buf __sedlex_path + in + let n = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) + and s = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) in + Printf.printf "Dec %s%s\n" (sub s) (sub n); + token buf + | 3 -> + let __sedlex_aliases_pos, __sedlex_aliases_len = + __sedlex_trace_3 buf __sedlex_path + in + let n = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) + and s = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) in + Printf.printf "Hex %s%s\n" (sub s) (sub n); + token buf + | 4 -> + let __sedlex_aliases_pos, __sedlex_aliases_len = + __sedlex_trace_4 buf __sedlex_path + in + let d = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) + and n = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) + and s = (__sedlex_aliases_pos.(2), __sedlex_aliases_len.(2)) in + Printf.printf "Bin %s%s/%s\n" (sub s) (sub n) (sub d); + token buf + | 5 -> + let __sedlex_aliases_pos, __sedlex_aliases_len = + __sedlex_trace_5 buf __sedlex_path + in + let d = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) + and n = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) + and s = (__sedlex_aliases_pos.(2), __sedlex_aliases_len.(2)) in + Printf.printf "Oct %s%s/%s\n" (sub s) (sub n) (sub d); + token buf + | 6 -> + let __sedlex_aliases_pos, __sedlex_aliases_len = + __sedlex_trace_6 buf __sedlex_path + in + let d = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) + and n = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) + and s = (__sedlex_aliases_pos.(2), __sedlex_aliases_len.(2)) in + Printf.printf "Dec %s%s/%s\n" (sub s) (sub n) (sub d); + token buf + | 7 -> + let __sedlex_aliases_pos, __sedlex_aliases_len = + __sedlex_trace_7 buf __sedlex_path + in + let d = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) + and n = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) + and s = (__sedlex_aliases_pos.(2), __sedlex_aliases_len.(2)) in + Printf.printf "Hex %s%s/%s\n" (sub s) (sub n) (sub d); + token buf + | 8 -> + let __sedlex_aliases_pos, __sedlex_aliases_len = + __sedlex_trace_8 buf __sedlex_path + in + let i = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) + and o = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) + and r = (__sedlex_aliases_pos.(2), __sedlex_aliases_len.(2)) + and s = (__sedlex_aliases_pos.(3), __sedlex_aliases_len.(3)) in + Printf.printf "Bin %s%s%s%si\n" (sub s) (sub r) (sub o) (sub i); + token buf + | 9 -> + let __sedlex_aliases_pos, __sedlex_aliases_len = + __sedlex_trace_9 buf __sedlex_path + in + let i = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) + and o = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) + and r = (__sedlex_aliases_pos.(2), __sedlex_aliases_len.(2)) + and s = (__sedlex_aliases_pos.(3), __sedlex_aliases_len.(3)) in + Printf.printf "Oct %s%s%s%si\n" (sub s) (sub r) (sub o) (sub i); + token buf + | 10 -> + let __sedlex_aliases_pos, __sedlex_aliases_len = + __sedlex_trace_10 buf __sedlex_path + in + let i = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) + and o = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) + and r = (__sedlex_aliases_pos.(2), __sedlex_aliases_len.(2)) + and s = (__sedlex_aliases_pos.(3), __sedlex_aliases_len.(3)) in + Printf.printf "Dec %s%s%s%si\n" (sub s) (sub r) (sub o) (sub i); + token buf + | 11 -> + let __sedlex_aliases_pos, __sedlex_aliases_len = + __sedlex_trace_11 buf __sedlex_path + in + let i = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) + and o = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) + and r = (__sedlex_aliases_pos.(2), __sedlex_aliases_len.(2)) + and s = (__sedlex_aliases_pos.(3), __sedlex_aliases_len.(3)) in + Printf.printf "Hex %s%s%s%si\n" (sub s) (sub r) (sub o) (sub i); + token buf + | 12 -> token buf + | 13 -> print_endline "Non ASCII" + | 14 -> print_endline "EOF" + | _ -> failwith "Unexpected character" + +let () = + let lexbuf = + Sedlexing.Latin1.from_string + {| + 123 + +123 + -123 + 0b01010101 + -0b11110000 + +0b11111111 + 0o12345670 + +0o76543210 + -0o17263540 + 0x123abcdef + -0x456DEFabc + +0x789ABCdef + 123/456 + -456/789 + +987/654 + 0o777/100 + +0o200/666 + 1+1i + 1-1i + 0x1f+2ei + +0x1f-2ei + 0b10+11i + -0b10-11i + |} + in + token lexbuf diff --git a/src/syntax/sedlex.ml b/src/syntax/sedlex.ml index 19af5fcd..155e434c 100644 --- a/src/syntax/sedlex.ml +++ b/src/syntax/sedlex.ml @@ -161,12 +161,13 @@ let compile_traces states (start, final) = let rec dfs start_stops node = let i = Hashtbl.find nodes_idx node in let starts, stops = handle_alias start_stops node.alias in - List.iter - (fun state -> - try ignore (Hashtbl.find cases (i, state)) - with Not_found -> - Hashtbl.add cases (i, state) (i, state, j, starts, stops)) - to_states; + if node.trans <> [] || node == final then + List.iter + (fun state -> + try ignore (Hashtbl.find cases (i, state)) + with Not_found -> + Hashtbl.add cases (i, state) (i, state, j, starts, stops)) + to_states; List.iter (dfs (starts, stops)) node.eps in List.iter (fun (_, next) -> dfs ([], []) next) node.trans; @@ -181,7 +182,10 @@ let compile_traces states (start, final) = let rec dfs start_stops cases node = let i = Hashtbl.find nodes_idx node in let starts, stops = handle_alias start_stops node.alias in - let cases = (i, starts, stops) :: cases in + let cases = + if node.trans <> [] || node == final then (i, starts, stops) :: cases + else cases + in List.fold_left (dfs (starts, stops)) cases node.eps in dfs ([], []) [] start From 214f689633a99d352d7f924494b9025a7a22fc64 Mon Sep 17 00:00:00 2001 From: dongyan Date: Wed, 21 Sep 2022 20:32:47 +0800 Subject: [PATCH 10/30] Make allow_alias a mandatory argument --- src/syntax/ppx_sedlex.ml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index 0aed4aad..5895deb7 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -447,7 +447,7 @@ let regexp_of_pattern allow_alias env = (* Construct something like Sub(a,b) *) match tuple with | Some { ppat_desc = Ppat_tuple [p0; p1] } -> begin - match func (fst @@ aux p0) (fst @@ aux p1) with + match func (fst @@ aux false p0) (fst @@ aux false p1) with | Some r -> (r, StrLocSet.empty) | None -> err p.ppat_loc @@ "the " ^ name @@ -457,13 +457,13 @@ let regexp_of_pattern allow_alias env = | _ -> err p.ppat_loc @@ "the " ^ name ^ " operator requires two arguments, like " ^ name ^ "(a,b)" - and aux ?(allow_alias = false) p = + and aux allow_alias p = let loc = p.ppat_loc in (* interpret one pattern node *) match p.ppat_desc with | Ppat_or (p1, p2) -> - let r1, s1 = aux ~allow_alias p1 in - let r2, s2 = aux ~allow_alias p2 in + let r1, s1 = aux allow_alias p1 in + let r2, s2 = aux allow_alias p2 in if not (StrLocSet.equal s1 s2) then begin let x = try StrLocSet.choose (StrLocSet.diff s1 s2) @@ -476,18 +476,18 @@ let regexp_of_pattern allow_alias env = | Ppat_tuple (p :: pl) -> List.fold_left (fun (r1, s1) p -> - let r2, s2 = aux ~allow_alias p in + let r2, s2 = aux allow_alias p in if not (StrLocSet.disjoint s1 s2) then begin let x = StrLocSet.choose (StrLocSet.inter s1 s2) in err loc @@ "variable " ^ x.txt ^ " is bound several times in this matching" end; (Sedlex.seq r1 r2, StrLocSet.union s1 s2)) - (aux ~allow_alias p) pl + (aux allow_alias p) pl | Ppat_construct ({ txt = Lident "Star" }, Some (_, p)) -> - (Sedlex.rep (fst @@ aux p), StrLocSet.empty) + (Sedlex.rep (fst @@ aux false p), StrLocSet.empty) | Ppat_construct ({ txt = Lident "Plus" }, Some (_, p)) -> - (Sedlex.plus (fst @@ aux p), StrLocSet.empty) + (Sedlex.plus (fst @@ aux false p), StrLocSet.empty) | Ppat_construct ( { txt = Lident "Rep" }, Some @@ -508,7 +508,7 @@ let regexp_of_pattern allow_alias env = let i1 = int_of_string i1 in let i2 = int_of_string i2 in if 0 <= i1 && i1 <= i2 then - (repeat (fst @@ aux p0) (i1, i2), StrLocSet.empty) + (repeat (fst @@ aux false p0) (i1, i2), StrLocSet.empty) else err p.ppat_loc "Invalid range for Rep operator" | _ -> err p.ppat_loc "Rep must take an integer constant or interval" @@ -516,11 +516,11 @@ let regexp_of_pattern allow_alias env = | Ppat_construct ({ txt = Lident "Rep" }, _) -> err p.ppat_loc "the Rep operator takes 2 arguments" | Ppat_construct ({ txt = Lident "Opt" }, Some (_, p)) -> - (Sedlex.alt Sedlex.eps (fst @@ aux p), StrLocSet.empty) + (Sedlex.alt Sedlex.eps (fst @@ aux false p), StrLocSet.empty) | Ppat_construct ({ txt = Lident "Compl" }, arg) -> begin match arg with | Some (_, p0) -> begin - match Sedlex.compl (fst @@ aux p0) with + match Sedlex.compl (fst @@ aux false p0) with | Some r -> (r, StrLocSet.empty) | None -> err p.ppat_loc @@ -578,7 +578,7 @@ let regexp_of_pattern allow_alias env = err p.ppat_loc (Printf.sprintf "unbound regexp %s" x) end | Ppat_alias (p, ({ txt = x } as x_loc)) when allow_alias -> - let r, s = aux ~allow_alias p in + let r, s = aux allow_alias p in if StrLocSet.mem x_loc s then begin err loc @@ "variable " ^ x ^ " is bound several times in this matching" @@ -586,7 +586,7 @@ let regexp_of_pattern allow_alias env = (Sedlex.alias r x, StrLocSet.add x_loc s) | _ -> err p.ppat_loc "this pattern is not a valid regexp" in - aux ~allow_alias + aux allow_alias let previous = ref [] let regexps = ref [] From dc02370f05a73b6fa0e8fda1828f27c599bcbd7e Mon Sep 17 00:00:00 2001 From: dongyan Date: Thu, 22 Sep 2022 20:11:33 +0800 Subject: [PATCH 11/30] Add testcases --- examples/dune | 10 +++++++- examples/misc.ml | 51 ++++++++++++++++++++++++++++++++++++++++ src/syntax/ppx_sedlex.ml | 4 +--- 3 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 examples/misc.ml diff --git a/examples/dune b/examples/dune index c32f0ebe..26d1d834 100644 --- a/examples/dune +++ b/examples/dune @@ -6,7 +6,8 @@ subtraction repeat performance - number_lexer) + number_lexer + misc) (libraries sedlex sedlex_ppx) (preprocess (pps sedlex.ppx)) @@ -60,3 +61,10 @@ (:< number_lexer.exe)) (action (run %{<}))) + +(rule + (alias runtest) + (deps + (:< misc.exe)) + (action + (run %{<}))) diff --git a/examples/misc.ml b/examples/misc.ml new file mode 100644 index 00000000..26a43fef --- /dev/null +++ b/examples/misc.ml @@ -0,0 +1,51 @@ +let rec token buf = + let lex buf = Sedlexing.Latin1.lexeme buf in + let sub (a, b) = Sedlexing.Latin1.sub_lexeme buf a b in + match%sedlex buf with + | (((((("a" as a), "b") as b), "c") as c), "d") as d -> + Printf.printf "%s: %s %s %s %s\n" (lex buf) (sub a) (sub b) (sub c) + (sub d); + token buf + | ("d", (("c", (("b", ("a" as a)) as b)) as c)) as d -> + Printf.printf "%s: %s %s %s %s\n" (lex buf) (sub a) (sub b) (sub c) + (sub d); + token buf + | (('a' as a), ('b' as b as d) | ('b' as b), ('a' as a as d)) as c -> + Printf.printf "%s: %s %s %s %s\n" (lex buf) (sub a) (sub b) (sub c) + (sub d); + token buf + | (Plus "ab" as a), (Plus "ab" as b) -> + Printf.printf "%s: %s %s\n" (lex buf) (sub a) (sub b); + token buf + | 'c', (Star "dc" as s), 'd' -> + Printf.printf "%s: %s\n" (lex buf) (sub s); + token buf + | (Star "dc" as a), ("dcdc" as b) -> + Printf.printf "%s: %s %s\n" (lex buf) (sub a) (sub b); + token buf + | ("abc" | "def") as s -> + Printf.printf "%s: %s\n" (lex buf) (sub s); + token buf + (* {Others} *) + | Plus xml_blank -> token buf + | 128 .. 255 -> print_endline "Non ASCII" + | eof -> print_endline "EOF" + | _ -> failwith "Unexpected character" + +let () = + let lexbuf = + Sedlexing.Latin1.from_string + {| + abcd + dcba + ab + ba + ababababab + cdcdcdcdcd + dcdc + dcdcdcdcdc + abc + def + |} + in + token lexbuf diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index 5895deb7..fb4bafcb 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -391,9 +391,7 @@ let gen_definition lexbuf l error = let loc = default_loc in let brs = Array.of_list - (List.map - (fun ((r, s), e) -> ((r, List.of_seq (StrLocSet.to_seq s)), e)) - l) + (List.map (fun ((r, s), e) -> ((r, StrLocSet.elements s), e)) l) in let auto, traces = Sedlex.compile (Array.map (fun ((r, _), _) -> r) brs) in let cases = From 9081c14ed4cd4f51460c0179140562aeaf09e7d8 Mon Sep 17 00:00:00 2001 From: dongyan Date: Thu, 22 Sep 2022 20:19:14 +0800 Subject: [PATCH 12/30] Fix mark and backtrack --- examples/misc.ml | 23 +++++++++++++++-------- src/lib/sedlexing.ml | 11 +++++++---- src/lib/sedlexing.mli | 10 +++++----- src/syntax/ppx_sedlex.ml | 13 +++---------- 4 files changed, 30 insertions(+), 27 deletions(-) diff --git a/examples/misc.ml b/examples/misc.ml index 26a43fef..600e0cd8 100644 --- a/examples/misc.ml +++ b/examples/misc.ml @@ -3,28 +3,34 @@ let rec token buf = let sub (a, b) = Sedlexing.Latin1.sub_lexeme buf a b in match%sedlex buf with | (((((("a" as a), "b") as b), "c") as c), "d") as d -> - Printf.printf "%s: %s %s %s %s\n" (lex buf) (sub a) (sub b) (sub c) + Printf.printf "1. %s: %s %s %s %s\n" (lex buf) (sub a) (sub b) (sub c) (sub d); token buf | ("d", (("c", (("b", ("a" as a)) as b)) as c)) as d -> - Printf.printf "%s: %s %s %s %s\n" (lex buf) (sub a) (sub b) (sub c) + Printf.printf "2. %s: %s %s %s %s\n" (lex buf) (sub a) (sub b) (sub c) (sub d); token buf | (('a' as a), ('b' as b as d) | ('b' as b), ('a' as a as d)) as c -> - Printf.printf "%s: %s %s %s %s\n" (lex buf) (sub a) (sub b) (sub c) + Printf.printf "3. %s: %s %s %s %s\n" (lex buf) (sub a) (sub b) (sub c) (sub d); token buf | (Plus "ab" as a), (Plus "ab" as b) -> - Printf.printf "%s: %s %s\n" (lex buf) (sub a) (sub b); + Printf.printf "4. %s: %s %s\n" (lex buf) (sub a) (sub b); token buf | 'c', (Star "dc" as s), 'd' -> - Printf.printf "%s: %s\n" (lex buf) (sub s); + Printf.printf "5. %s: %s\n" (lex buf) (sub s); token buf - | (Star "dc" as a), ("dcdc" as b) -> - Printf.printf "%s: %s %s\n" (lex buf) (sub a) (sub b); + | (Star "dcdc" as a), ("dcdc" as b) -> + Printf.printf "6. %s: %s %s\n" (lex buf) (sub a) (sub b); + token buf + | "dc" as s -> + Printf.printf "7. %s: %s\n" (lex buf) (sub s); token buf | ("abc" | "def") as s -> - Printf.printf "%s: %s\n" (lex buf) (sub s); + Printf.printf "8. %s: %s\n" (lex buf) (sub s); + token buf + | (Plus "a" as a), (Plus "b" as b), "c" -> + Printf.printf "8. %s: %s %s\n" (lex buf) (sub a) (sub b); token buf (* {Others} *) | Plus xml_blank -> token buf @@ -46,6 +52,7 @@ let () = dcdcdcdcdc abc def + aaaabbbc |} in token lexbuf diff --git a/src/lib/sedlexing.ml b/src/lib/sedlexing.ml index adc415c7..33744f0f 100644 --- a/src/lib/sedlexing.ml +++ b/src/lib/sedlexing.ml @@ -36,6 +36,7 @@ type lexbuf = { mutable marked_bol : int; mutable marked_line : int; mutable marked_val : int; + mutable marked_path : int list; mutable filename : string; mutable finished : bool; } @@ -58,6 +59,7 @@ let empty_lexbuf = marked_bol = 0; marked_line = 0; marked_val = 0; + marked_path = []; filename = ""; finished = false; } @@ -154,23 +156,24 @@ let __private__next_int lexbuf : int = Uchar.to_int ret end -let mark lexbuf i = +let mark lexbuf i path = lexbuf.marked_pos <- lexbuf.pos; lexbuf.marked_bol <- lexbuf.curr_bol; lexbuf.marked_line <- lexbuf.curr_line; - lexbuf.marked_val <- i + lexbuf.marked_val <- i; + lexbuf.marked_path <- List.tl path let start lexbuf = lexbuf.start_pos <- lexbuf.pos; lexbuf.start_bol <- lexbuf.curr_bol; lexbuf.start_line <- lexbuf.curr_line; - mark lexbuf (-1) + mark lexbuf (-1) [0] let backtrack lexbuf = lexbuf.pos <- lexbuf.marked_pos; lexbuf.curr_bol <- lexbuf.marked_bol; lexbuf.curr_line <- lexbuf.marked_line; - lexbuf.marked_val + (lexbuf.marked_val, lexbuf.marked_path) let rollback lexbuf = lexbuf.pos <- lexbuf.start_pos; diff --git a/src/lib/sedlexing.mli b/src/lib/sedlexing.mli index d09bd4eb..ee4cc932 100644 --- a/src/lib/sedlexing.mli +++ b/src/lib/sedlexing.mli @@ -156,14 +156,14 @@ val next : lexbuf -> Uchar.t option API and can be removed at any time. *) val __private__next_int : lexbuf -> int -(** [mark lexbuf i] stores the integer [i] in the internal - slot. The backtrack position is set to the current position. *) -val mark : lexbuf -> int -> unit +(** [mark lexbuf i path] stores the integer [i] and the list [path] in the + internal slot. The backtrack position is set to the current position. *) +val mark : lexbuf -> int -> int list -> unit -(** [backtrack lexbuf] returns the value stored in the +(** [backtrack lexbuf] returns the value and path stored in the internal slot of the buffer, and performs backtracking (the current position is set to the value of the backtrack position). *) -val backtrack : lexbuf -> int +val backtrack : lexbuf -> int * int list (** [with_tokenizer tokenizer lexbuf] given a lexer and a lexbuf, returns a generator of tokens annotated with positions. diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index fb4bafcb..7cd53cee 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -229,10 +229,7 @@ let gen_state lexbuf auto i (trans, final) = case ~lhs:[%pat? _] ~guard:None - ~rhs: - [%expr - Sedlexing.backtrack [%e evar ~loc lexbuf], - __sedlex_tl __sedlex_path]; + ~rhs:[%expr Sedlexing.backtrack [%e evar ~loc lexbuf]]; ]) in let ret body = @@ -248,7 +245,7 @@ let gen_state lexbuf auto i (trans, final) = | Some i -> ret [%expr - Sedlexing.mark [%e evar ~loc lexbuf] [%e eint ~loc i]; + Sedlexing.mark [%e evar ~loc lexbuf] [%e eint ~loc i] __sedlex_path; [%e body ()]] let gen_recflag auto = @@ -665,13 +662,9 @@ let mapper = let l, regexps' = sub#structure_with_regexps (!previous @ l) in let parts = List.map partition (get_partitions ()) in let tables = List.map table (get_tables ()) in - let funcs = - let loc = default_loc in - [%str let __sedlex_tl = function _ :: tl -> tl | _ -> assert false] - in regexps := regexps'; should_set_cookies := true; - funcs @ tables @ parts @ l) + tables @ parts @ l) else fst (this#structure_with_regexps l) end From fad0f51f9467029691f0f67790412f63f88720ca Mon Sep 17 00:00:00 2001 From: dongyan Date: Thu, 22 Sep 2022 20:26:25 +0800 Subject: [PATCH 13/30] Maintain alias starts/stops instead of pos/len --- src/syntax/ppx_sedlex.ml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index 7cd53cee..ebf9bcb2 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -277,10 +277,10 @@ let gen_trace lexbuf traces i = function let result_arrays = [ value_binding ~loc - ~pat:[%pat? __sedlex_aliases_pos] + ~pat:[%pat? __sedlex_aliases_starts] ~expr:(pexp_array ~loc (List.map (fun _ -> [%expr 0]) aliases)); value_binding ~loc - ~pat:[%pat? __sedlex_aliases_len] + ~pat:[%pat? __sedlex_aliases_stops] ~expr:(pexp_array ~loc (List.map (fun _ -> [%expr 0]) aliases)); ] in @@ -288,15 +288,13 @@ let gen_trace lexbuf traces i = function let gen_start alias e = let alias_index = find_index alias in [%expr - __sedlex_aliases_len.([%e eint ~loc alias_index]) <- - __sedlex_aliases_pos.([%e eint ~loc alias_index]) - __sedlex_pos; - __sedlex_aliases_pos.([%e eint ~loc alias_index]) <- __sedlex_pos; + __sedlex_aliases_starts.([%e eint ~loc alias_index]) <- __sedlex_pos; [%e e]] in let gen_stop alias e = let alias_index = find_index alias in [%expr - __sedlex_aliases_pos.([%e eint ~loc alias_index]) <- __sedlex_pos; + __sedlex_aliases_stops.([%e eint ~loc alias_index]) <- __sedlex_pos; [%e e]] in let unreachable_case = @@ -359,7 +357,7 @@ let gen_trace lexbuf traces i = function __sedlex_aux (Sedlexing.lexeme_length [%e evar ~loc lexbuf]) [%e eint ~loc initial] __sedlex_path; - (__sedlex_aliases_pos, __sedlex_aliases_len)]]]; + (__sedlex_aliases_starts, __sedlex_aliases_stops)]]]; ] let gen_aliases lexbuf i e = function @@ -369,7 +367,7 @@ let gen_aliases lexbuf i e = function pexp_let ~loc Nonrecursive [ value_binding ~loc - ~pat:[%pat? __sedlex_aliases_pos, __sedlex_aliases_len] + ~pat:[%pat? __sedlex_aliases_starts, __sedlex_aliases_stops] ~expr: (appfun (trace_fun i) [evar ~loc lexbuf; [%expr __sedlex_path]]); ] @@ -379,8 +377,9 @@ let gen_aliases lexbuf i e = function value_binding ~loc ~pat:(pvar ~loc alias) ~expr: [%expr - __sedlex_aliases_pos.([%e eint ~loc i]), - __sedlex_aliases_len.([%e eint ~loc i])]) + __sedlex_aliases_starts.([%e eint ~loc i]), + __sedlex_aliases_stops.([%e eint ~loc i]) + - __sedlex_aliases_starts.([%e eint ~loc i])]) aliases) @@ e From e02fd3c939a4ca177f980ba8a95226c36294b927 Mon Sep 17 00:00:00 2001 From: dongyan Date: Thu, 22 Sep 2022 23:18:29 +0800 Subject: [PATCH 14/30] Fix path tracing & Use expect test The transitions become: (curr_state, curr_node, prev_state) -> prev_node --- examples/dune | 24 +- examples/number_lexer.gen.ml | 1164 ---------------------------- src/lib/sedlexing.ml | 4 +- src/syntax/ppx_sedlex.ml | 46 +- src/syntax/sedlex.ml | 60 +- src/syntax/sedlex.mli | 2 +- test/dune | 7 + {examples => test}/misc.ml | 23 +- {examples => test}/number_lexer.ml | 32 +- 9 files changed, 120 insertions(+), 1242 deletions(-) delete mode 100644 examples/number_lexer.gen.ml create mode 100644 test/dune rename {examples => test}/misc.ml (80%) rename {examples => test}/number_lexer.ml (87%) diff --git a/examples/dune b/examples/dune index 26d1d834..06d90c96 100644 --- a/examples/dune +++ b/examples/dune @@ -1,13 +1,5 @@ (executables - (names - tokenizer - regressions - complement - subtraction - repeat - performance - number_lexer - misc) + (names tokenizer regressions complement subtraction repeat performance) (libraries sedlex sedlex_ppx) (preprocess (pps sedlex.ppx)) @@ -54,17 +46,3 @@ (:< performance.exe)) (action (run %{<}))) - -(rule - (alias runtest) - (deps - (:< number_lexer.exe)) - (action - (run %{<}))) - -(rule - (alias runtest) - (deps - (:< misc.exe)) - (action - (run %{<}))) diff --git a/examples/number_lexer.gen.ml b/examples/number_lexer.gen.ml deleted file mode 100644 index 6e3dfe8e..00000000 --- a/examples/number_lexer.gen.ml +++ /dev/null @@ -1,1164 +0,0 @@ -[@@@ocaml.ppx.context -{ - tool_name = "ppx_driver"; - include_dirs = []; - load_path = []; - open_modules = []; - for_package = None; - debug = false; - use_threads = false; - use_vmthreads = false; - recursive_types = false; - principal = false; - transparent_modules = false; - unboxed_types = false; - unsafe_string = false; - cookies = - [ - ( "sedlex.regexps", - [%regexps - let digit_2 = [%sedlex.regexp? '0' .. '1'] - let digit_8 = [%sedlex.regexp? '0' .. '7'] - let digit = [%sedlex.regexp? '0' .. '9'] - let digit_16 = [%sedlex.regexp? digit | 'A' .. 'F' | 'a' .. 'f'] - let prefix_2 = [%sedlex.regexp? "0b"] - let prefix_8 = [%sedlex.regexp? "0o"] - let prefix_16 = [%sedlex.regexp? "0x"] - let sign = [%sedlex.regexp? "" | '+' | '-'] - let sign_op = [%sedlex.regexp? '+' | '-'] - let num_2 = [%sedlex.regexp? Plus digit_2] - let num_8 = [%sedlex.regexp? Plus digit_8] - let num_10 = [%sedlex.regexp? Plus digit] - let num_16 = [%sedlex.regexp? Plus digit_16]] ); - ]; -}] - -let __sedlex_tl = function _ :: tl -> tl | _ -> assert false - -let __sedlex_table_6 = - "\001\000\001\000\002\003\003\003\003\003\003\003\003\003\003" - -let __sedlex_table_8 = - "\001\001\001\001\001\001\001\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002" - -let __sedlex_table_12 = - "\001\001\001\001\001\001\001\001\001\001\000\000\000\000\000\000\000\001\001\001\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\001\001\001\000\000\002" - -let __sedlex_table_2 = - "\001\000\001\000\002\003\003\003\003\003\003\003\003\003\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\000\006" - -let __sedlex_table_1 = - "\001\001\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001" - -let __sedlex_table_5 = - "\001\001\001\001\001\001\001\001\001\001\000\000\000\000\000\000\000\001\001\001\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\001\001\001\001" - -let __sedlex_table_7 = "\001\000\001\000\002\003\003\003\003\003\003\003\003" - -let __sedlex_table_3 = - "\001\000\001\000\002\003\003\003\003\003\003\003\003\003\003\000\000\000\000\000\000\000\003\003\003\003\003\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\003\003\003\003\003" - -let __sedlex_table_13 = - "\001\000\000\000\000\000\000\000\000\000\002\002\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\003\000\003\000\000\004\005\005\005\005\005\005\005\005\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006\006" - -let __sedlex_table_10 = - "\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002" - -let __sedlex_table_4 = "\001\002\002\002\002\002\002\002\002\002" - -let __sedlex_table_11 = - "\001\001\001\001\001\001\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002" - -let __sedlex_table_9 = "\001\000\001\000\002\003\003" - -let __sedlex_partition_2 c = - if c <= 8 then -1 - else if c <= 32 then - Char.code (String.unsafe_get __sedlex_table_1 (c - 9)) - 1 - else -1 - -let __sedlex_partition_4 c = - if c <= 42 then -1 - else if c <= 120 then - Char.code (String.unsafe_get __sedlex_table_2 (c - 43)) - 1 - else -1 - -let __sedlex_partition_15 c = - if c <= 42 then -1 - else if c <= 102 then - Char.code (String.unsafe_get __sedlex_table_3 (c - 43)) - 1 - else -1 - -let __sedlex_partition_3 c = - if c <= 47 then -1 - else if c <= 57 then - Char.code (String.unsafe_get __sedlex_table_4 (c - 48)) - 1 - else -1 - -let __sedlex_partition_8 c = if c <= 47 then -1 else if c <= 49 then 0 else -1 -let __sedlex_partition_5 c = if c <= 47 then -1 else if c <= 57 then 0 else -1 - -let __sedlex_partition_14 c = - if c <= 47 then -1 - else if c <= 102 then - Char.code (String.unsafe_get __sedlex_table_5 (c - 48)) - 1 - else -1 - -let __sedlex_partition_7 c = - if c <= 42 then -1 - else if c <= 57 then - Char.code (String.unsafe_get __sedlex_table_6 (c - 43)) - 1 - else -1 - -let __sedlex_partition_12 c = - if c <= 42 then -1 - else if c <= 55 then - Char.code (String.unsafe_get __sedlex_table_7 (c - 43)) - 1 - else -1 - -let __sedlex_partition_11 c = if c <= 47 then -1 else if c <= 55 then 0 else -1 - -let __sedlex_partition_6 c = - if c <= 47 then -1 - else if c <= 105 then - Char.code (String.unsafe_get __sedlex_table_8 (c - 48)) - 1 - else -1 - -let __sedlex_partition_9 c = - if c <= 42 then -1 - else if c <= 49 then - Char.code (String.unsafe_get __sedlex_table_9 (c - 43)) - 1 - else -1 - -let __sedlex_partition_10 c = - if c <= 47 then -1 - else if c <= 105 then - Char.code (String.unsafe_get __sedlex_table_10 (c - 48)) - 1 - else -1 - -let __sedlex_partition_13 c = - if c <= 47 then -1 - else if c <= 105 then - Char.code (String.unsafe_get __sedlex_table_11 (c - 48)) - 1 - else -1 - -let __sedlex_partition_16 c = - if c <= 47 then -1 - else if c <= 105 then - Char.code (String.unsafe_get __sedlex_table_12 (c - 48)) - 1 - else -1 - -let __sedlex_partition_1 c = - if c <= 255 then Char.code (String.unsafe_get __sedlex_table_13 (c - -1)) - 1 - else -1 - -let rec token buf = - let sub (a, b) = Sedlexing.Latin1.sub_lexeme buf a b in - let rec __sedlex_state_0 __sedlex_path buf = - match __sedlex_partition_1 (Sedlexing.__private__next_int buf) with - | 0 -> (14, __sedlex_path) - | 1 -> __sedlex_state_2 (2 :: __sedlex_path) buf - | 2 -> __sedlex_state_3 (3 :: __sedlex_path) buf - | 3 -> __sedlex_state_4 (4 :: __sedlex_path) buf - | 4 -> __sedlex_state_10 (10 :: __sedlex_path) buf - | 5 -> (13, __sedlex_path) - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_2 __sedlex_path buf = - Sedlexing.mark buf 12; - match __sedlex_partition_2 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_2 (2 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_3 __sedlex_path buf = - match __sedlex_partition_3 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_4 (4 :: __sedlex_path) buf - | 1 -> __sedlex_state_10 (10 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_4 __sedlex_path buf = - Sedlexing.mark buf 2; - match __sedlex_partition_4 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_5 (5 :: __sedlex_path) buf - | 1 -> __sedlex_state_8 (8 :: __sedlex_path) buf - | 2 -> __sedlex_state_10 (10 :: __sedlex_path) buf - | 3 -> __sedlex_state_11 (11 :: __sedlex_path) buf - | 4 -> __sedlex_state_18 (18 :: __sedlex_path) buf - | 5 -> __sedlex_state_25 (25 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_5 __sedlex_path buf = - match __sedlex_partition_5 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_6 (6 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_6 __sedlex_path buf = - match __sedlex_partition_6 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_6 (6 :: __sedlex_path) buf - | 1 -> (10, __sedlex_path) - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_8 __sedlex_path buf = - match __sedlex_partition_5 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_9 (9 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_9 __sedlex_path buf = - Sedlexing.mark buf 6; - match __sedlex_partition_5 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_9 (9 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_10 __sedlex_path buf = - Sedlexing.mark buf 2; - match __sedlex_partition_7 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_5 (5 :: __sedlex_path) buf - | 1 -> __sedlex_state_8 (8 :: __sedlex_path) buf - | 2 -> __sedlex_state_10 (10 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_11 __sedlex_path buf = - match __sedlex_partition_8 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_12 (12 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_12 __sedlex_path buf = - Sedlexing.mark buf 0; - match __sedlex_partition_9 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_13 (13 :: __sedlex_path) buf - | 1 -> __sedlex_state_16 (16 :: __sedlex_path) buf - | 2 -> __sedlex_state_12 (12 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_13 __sedlex_path buf = - match __sedlex_partition_8 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_14 (14 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_14 __sedlex_path buf = - match __sedlex_partition_10 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_14 (14 :: __sedlex_path) buf - | 1 -> (8, __sedlex_path) - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_16 __sedlex_path buf = - match __sedlex_partition_8 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_17 (17 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_17 __sedlex_path buf = - Sedlexing.mark buf 4; - match __sedlex_partition_8 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_17 (17 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_18 __sedlex_path buf = - match __sedlex_partition_11 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_19 (19 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_19 __sedlex_path buf = - Sedlexing.mark buf 1; - match __sedlex_partition_12 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_20 (20 :: __sedlex_path) buf - | 1 -> __sedlex_state_23 (23 :: __sedlex_path) buf - | 2 -> __sedlex_state_19 (19 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_20 __sedlex_path buf = - match __sedlex_partition_11 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_21 (21 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_21 __sedlex_path buf = - match __sedlex_partition_13 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_21 (21 :: __sedlex_path) buf - | 1 -> (9, __sedlex_path) - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_23 __sedlex_path buf = - match __sedlex_partition_11 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_24 (24 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_24 __sedlex_path buf = - Sedlexing.mark buf 5; - match __sedlex_partition_11 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_24 (24 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_25 __sedlex_path buf = - match __sedlex_partition_14 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_26 (26 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_26 __sedlex_path buf = - Sedlexing.mark buf 3; - match __sedlex_partition_15 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_27 (27 :: __sedlex_path) buf - | 1 -> __sedlex_state_30 (30 :: __sedlex_path) buf - | 2 -> __sedlex_state_26 (26 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_27 __sedlex_path buf = - match __sedlex_partition_14 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_28 (28 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_28 __sedlex_path buf = - match __sedlex_partition_16 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_28 (28 :: __sedlex_path) buf - | 1 -> (11, __sedlex_path) - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_30 __sedlex_path buf = - match __sedlex_partition_14 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_31 (31 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_state_31 __sedlex_path buf = - Sedlexing.mark buf 7; - match __sedlex_partition_14 (Sedlexing.__private__next_int buf) with - | 0 -> __sedlex_state_31 (31 :: __sedlex_path) buf - | _ -> (Sedlexing.backtrack buf, __sedlex_tl __sedlex_path) - and __sedlex_trace_0 buf __sedlex_path = - let __sedlex_aliases_pos = [| 0; 0 |] - and __sedlex_aliases_len = [| 0; 0 |] in - let rec __sedlex_aux __sedlex_pos __sedlex_curr = function - | [] -> ( - match __sedlex_curr with - | 12 -> - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - () - | 11 -> - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - () - | 4 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - () - | _ -> assert false) - | __sedlex_state :: __sedlex_rest -> ( - match (__sedlex_curr, __sedlex_state) with - | 10, 11 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 7, 4 -> - __sedlex_aliases_len.(0) <- - __sedlex_aliases_pos.(0) - __sedlex_pos; - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest - | 7, 11 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 7, 12 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 10, 12 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 4, 0 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 11 __sedlex_rest - | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest - | _ -> assert false) - in - __sedlex_aux (Sedlexing.lexeme_length buf) 10 __sedlex_path; - (__sedlex_aliases_pos, __sedlex_aliases_len) - and __sedlex_trace_1 buf __sedlex_path = - let __sedlex_aliases_pos = [| 0; 0 |] - and __sedlex_aliases_len = [| 0; 0 |] in - let rec __sedlex_aux __sedlex_pos __sedlex_curr = function - | [] -> ( - match __sedlex_curr with - | 12 -> - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - () - | 11 -> - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - () - | 4 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - () - | _ -> assert false) - | __sedlex_state :: __sedlex_rest -> ( - match (__sedlex_curr, __sedlex_state) with - | 7, 4 -> - __sedlex_aliases_len.(0) <- - __sedlex_aliases_pos.(0) - __sedlex_pos; - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest - | 10, 18 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 10, 19 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 7, 18 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 7, 19 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 4, 0 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 11 __sedlex_rest - | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest - | _ -> assert false) - in - __sedlex_aux (Sedlexing.lexeme_length buf) 10 __sedlex_path; - (__sedlex_aliases_pos, __sedlex_aliases_len) - and __sedlex_trace_2 buf __sedlex_path = - let __sedlex_aliases_pos = [| 0; 0 |] - and __sedlex_aliases_len = [| 0; 0 |] in - let rec __sedlex_aux __sedlex_pos __sedlex_curr = function - | [] -> ( - match __sedlex_curr with - | 10 -> - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - () - | 9 -> - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - () - | 5 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aliases_len.(0) <- - __sedlex_aliases_pos.(0) - __sedlex_pos; - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - () - | _ -> assert false) - | __sedlex_state :: __sedlex_rest -> ( - match (__sedlex_curr, __sedlex_state) with - | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 5, 4 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 5, 10 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 8, 10 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 8, 3 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 8, 4 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 8, 0 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | _ -> assert false) - in - __sedlex_aux (Sedlexing.lexeme_length buf) 8 __sedlex_path; - (__sedlex_aliases_pos, __sedlex_aliases_len) - and __sedlex_trace_3 buf __sedlex_path = - let __sedlex_aliases_pos = [| 0; 0 |] - and __sedlex_aliases_len = [| 0; 0 |] in - let rec __sedlex_aux __sedlex_pos __sedlex_curr = function - | [] -> ( - match __sedlex_curr with - | 12 -> - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - () - | 11 -> - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - () - | 4 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - () - | _ -> assert false) - | __sedlex_state :: __sedlex_rest -> ( - match (__sedlex_curr, __sedlex_state) with - | 10, 25 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 10, 26 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 7, 4 -> - __sedlex_aliases_len.(0) <- - __sedlex_aliases_pos.(0) - __sedlex_pos; - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest - | 7, 25 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 4, 0 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 11 __sedlex_rest - | 7, 26 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest - | _ -> assert false) - in - __sedlex_aux (Sedlexing.lexeme_length buf) 10 __sedlex_path; - (__sedlex_aliases_pos, __sedlex_aliases_len) - and __sedlex_trace_4 buf __sedlex_path = - let __sedlex_aliases_pos = [| 0; 0; 0 |] - and __sedlex_aliases_len = [| 0; 0; 0 |] in - let rec __sedlex_aux __sedlex_pos __sedlex_curr = function - | [] -> ( - match __sedlex_curr with - | 17 -> - __sedlex_aliases_len.(2) <- - __sedlex_aliases_pos.(2) - __sedlex_pos; - __sedlex_aliases_pos.(2) <- __sedlex_pos; - () - | 16 -> - __sedlex_aliases_len.(2) <- - __sedlex_aliases_pos.(2) - __sedlex_pos; - __sedlex_aliases_pos.(2) <- __sedlex_pos; - () - | 4 -> - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aliases_len.(2) <- - __sedlex_aliases_pos.(2) - __sedlex_pos; - __sedlex_aliases_pos.(2) <- __sedlex_pos; - () - | _ -> assert false) - | __sedlex_state :: __sedlex_rest -> ( - match (__sedlex_curr, __sedlex_state) with - | 12, 12 -> - __sedlex_aliases_len.(0) <- - __sedlex_aliases_pos.(0) - __sedlex_pos; - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 10 __sedlex_rest - | 10, 11 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 7, 4 -> - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest - | 7, 11 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 7, 12 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 15, 17 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest - | 12, 17 -> __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest - | 10, 12 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 4, 0 -> - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 16 __sedlex_rest - | 15, 16 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest - | 12, 16 -> __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest - | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest - | _ -> assert false) - in - __sedlex_aux (Sedlexing.lexeme_length buf) 15 __sedlex_path; - (__sedlex_aliases_pos, __sedlex_aliases_len) - and __sedlex_trace_5 buf __sedlex_path = - let __sedlex_aliases_pos = [| 0; 0; 0 |] - and __sedlex_aliases_len = [| 0; 0; 0 |] in - let rec __sedlex_aux __sedlex_pos __sedlex_curr = function - | [] -> ( - match __sedlex_curr with - | 17 -> - __sedlex_aliases_len.(2) <- - __sedlex_aliases_pos.(2) - __sedlex_pos; - __sedlex_aliases_pos.(2) <- __sedlex_pos; - () - | 16 -> - __sedlex_aliases_len.(2) <- - __sedlex_aliases_pos.(2) - __sedlex_pos; - __sedlex_aliases_pos.(2) <- __sedlex_pos; - () - | 4 -> - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aliases_len.(2) <- - __sedlex_aliases_pos.(2) - __sedlex_pos; - __sedlex_aliases_pos.(2) <- __sedlex_pos; - () - | _ -> assert false) - | __sedlex_state :: __sedlex_rest -> ( - match (__sedlex_curr, __sedlex_state) with - | 12, 23 -> __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest - | 7, 4 -> - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest - | 10, 18 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 12, 24 -> __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest - | 15, 23 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest - | 10, 19 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 7, 18 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 7, 19 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 15, 24 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest - | 4, 0 -> - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 16 __sedlex_rest - | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest - | 12, 19 -> - __sedlex_aliases_len.(0) <- - __sedlex_aliases_pos.(0) - __sedlex_pos; - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 10 __sedlex_rest - | _ -> assert false) - in - __sedlex_aux (Sedlexing.lexeme_length buf) 15 __sedlex_path; - (__sedlex_aliases_pos, __sedlex_aliases_len) - and __sedlex_trace_6 buf __sedlex_path = - let __sedlex_aliases_pos = [| 0; 0; 0 |] - and __sedlex_aliases_len = [| 0; 0; 0 |] in - let rec __sedlex_aux __sedlex_pos __sedlex_curr = function - | [] -> ( - match __sedlex_curr with - | 15 -> - __sedlex_aliases_len.(2) <- - __sedlex_aliases_pos.(2) - __sedlex_pos; - __sedlex_aliases_pos.(2) <- __sedlex_pos; - () - | 14 -> - __sedlex_aliases_len.(2) <- - __sedlex_aliases_pos.(2) - __sedlex_pos; - __sedlex_aliases_pos.(2) <- __sedlex_pos; - () - | 5 -> - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aliases_len.(2) <- - __sedlex_aliases_pos.(2) - __sedlex_pos; - __sedlex_aliases_pos.(2) <- __sedlex_pos; - () - | _ -> assert false) - | __sedlex_state :: __sedlex_rest -> ( - match (__sedlex_curr, __sedlex_state) with - | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 13, 9 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 10 __sedlex_rest - | 10, 9 -> __sedlex_aux (__sedlex_pos - 1) 10 __sedlex_rest - | 10, 8 -> __sedlex_aux (__sedlex_pos - 1) 10 __sedlex_rest - | 5, 4 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 10, 4 -> - __sedlex_aliases_len.(0) <- - __sedlex_aliases_pos.(0) - __sedlex_pos; - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 8 __sedlex_rest - | 5, 10 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 8, 10 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 8, 3 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 8, 4 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 8, 0 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 13, 8 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 10 __sedlex_rest - | 10, 10 -> - __sedlex_aliases_len.(0) <- - __sedlex_aliases_pos.(0) - __sedlex_pos; - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 8 __sedlex_rest - | _ -> assert false) - in - __sedlex_aux (Sedlexing.lexeme_length buf) 13 __sedlex_path; - (__sedlex_aliases_pos, __sedlex_aliases_len) - and __sedlex_trace_7 buf __sedlex_path = - let __sedlex_aliases_pos = [| 0; 0; 0 |] - and __sedlex_aliases_len = [| 0; 0; 0 |] in - let rec __sedlex_aux __sedlex_pos __sedlex_curr = function - | [] -> ( - match __sedlex_curr with - | 17 -> - __sedlex_aliases_len.(2) <- - __sedlex_aliases_pos.(2) - __sedlex_pos; - __sedlex_aliases_pos.(2) <- __sedlex_pos; - () - | 16 -> - __sedlex_aliases_len.(2) <- - __sedlex_aliases_pos.(2) - __sedlex_pos; - __sedlex_aliases_pos.(2) <- __sedlex_pos; - () - | 4 -> - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aliases_len.(2) <- - __sedlex_aliases_pos.(2) - __sedlex_pos; - __sedlex_aliases_pos.(2) <- __sedlex_pos; - () - | _ -> assert false) - | __sedlex_state :: __sedlex_rest -> ( - match (__sedlex_curr, __sedlex_state) with - | 15, 30 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest - | 10, 25 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 12, 31 -> __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest - | 10, 26 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 7, 4 -> - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest - | 12, 26 -> - __sedlex_aliases_len.(0) <- - __sedlex_aliases_pos.(0) - __sedlex_pos; - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 10 __sedlex_rest - | 12, 30 -> __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest - | 7, 25 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 15, 31 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest - | 4, 0 -> - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 16 __sedlex_rest - | 7, 26 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest - | _ -> assert false) - in - __sedlex_aux (Sedlexing.lexeme_length buf) 15 __sedlex_path; - (__sedlex_aliases_pos, __sedlex_aliases_len) - and __sedlex_trace_8 buf __sedlex_path = - let __sedlex_aliases_pos = [| 0; 0; 0; 0 |] - and __sedlex_aliases_len = [| 0; 0; 0; 0 |] in - let rec __sedlex_aux __sedlex_pos __sedlex_curr = function - | [] -> ( - match __sedlex_curr with - | 20 -> - __sedlex_aliases_len.(3) <- - __sedlex_aliases_pos.(3) - __sedlex_pos; - __sedlex_aliases_pos.(3) <- __sedlex_pos; - () - | 19 -> - __sedlex_aliases_len.(3) <- - __sedlex_aliases_pos.(3) - __sedlex_pos; - __sedlex_aliases_pos.(3) <- __sedlex_pos; - () - | 4 -> - __sedlex_aliases_pos.(3) <- __sedlex_pos; - __sedlex_aliases_len.(3) <- - __sedlex_aliases_pos.(3) - __sedlex_pos; - __sedlex_aliases_pos.(3) <- __sedlex_pos; - () - | _ -> assert false) - | __sedlex_state :: __sedlex_rest -> ( - match (__sedlex_curr, __sedlex_state) with - | 14, 13 -> __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest - | 11, 11 -> - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 17, 13 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest - | 7, 4 -> - __sedlex_aliases_len.(2) <- - __sedlex_aliases_pos.(2) - __sedlex_pos; - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest - | 18, 14 -> __sedlex_aux (__sedlex_pos - 1) 17 __sedlex_rest - | 11, 12 -> - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 7, 11 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 7, 12 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 14, 14 -> __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest - | 17, 14 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest - | 4, 0 -> - __sedlex_aliases_pos.(3) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 19 __sedlex_rest - | 14, 12 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aliases_len.(0) <- - __sedlex_aliases_pos.(0) - __sedlex_pos; - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 11 __sedlex_rest - | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest - | _ -> assert false) - in - __sedlex_aux (Sedlexing.lexeme_length buf) 18 __sedlex_path; - (__sedlex_aliases_pos, __sedlex_aliases_len) - and __sedlex_trace_9 buf __sedlex_path = - let __sedlex_aliases_pos = [| 0; 0; 0; 0 |] - and __sedlex_aliases_len = [| 0; 0; 0; 0 |] in - let rec __sedlex_aux __sedlex_pos __sedlex_curr = function - | [] -> ( - match __sedlex_curr with - | 20 -> - __sedlex_aliases_len.(3) <- - __sedlex_aliases_pos.(3) - __sedlex_pos; - __sedlex_aliases_pos.(3) <- __sedlex_pos; - () - | 19 -> - __sedlex_aliases_len.(3) <- - __sedlex_aliases_pos.(3) - __sedlex_pos; - __sedlex_aliases_pos.(3) <- __sedlex_pos; - () - | 4 -> - __sedlex_aliases_pos.(3) <- __sedlex_pos; - __sedlex_aliases_len.(3) <- - __sedlex_aliases_pos.(3) - __sedlex_pos; - __sedlex_aliases_pos.(3) <- __sedlex_pos; - () - | _ -> assert false) - | __sedlex_state :: __sedlex_rest -> ( - match (__sedlex_curr, __sedlex_state) with - | 17, 20 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest - | 14, 20 -> __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest - | 11, 19 -> - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 7, 4 -> - __sedlex_aliases_len.(2) <- - __sedlex_aliases_pos.(2) - __sedlex_pos; - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest - | 14, 19 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aliases_len.(0) <- - __sedlex_aliases_pos.(0) - __sedlex_pos; - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 11 __sedlex_rest - | 7, 18 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 18, 21 -> __sedlex_aux (__sedlex_pos - 1) 17 __sedlex_rest - | 11, 18 -> - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 7, 19 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 4, 0 -> - __sedlex_aliases_pos.(3) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 19 __sedlex_rest - | 17, 21 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest - | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest - | 14, 21 -> __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest - | _ -> assert false) - in - __sedlex_aux (Sedlexing.lexeme_length buf) 18 __sedlex_path; - (__sedlex_aliases_pos, __sedlex_aliases_len) - and __sedlex_trace_10 buf __sedlex_path = - let __sedlex_aliases_pos = [| 0; 0; 0; 0 |] - and __sedlex_aliases_len = [| 0; 0; 0; 0 |] in - let rec __sedlex_aux __sedlex_pos __sedlex_curr = function - | [] -> ( - match __sedlex_curr with - | 18 -> - __sedlex_aliases_len.(3) <- - __sedlex_aliases_pos.(3) - __sedlex_pos; - __sedlex_aliases_pos.(3) <- __sedlex_pos; - () - | 17 -> - __sedlex_aliases_len.(3) <- - __sedlex_aliases_pos.(3) - __sedlex_pos; - __sedlex_aliases_pos.(3) <- __sedlex_pos; - () - | 5 -> - __sedlex_aliases_pos.(3) <- __sedlex_pos; - __sedlex_aliases_len.(2) <- - __sedlex_aliases_pos.(2) - __sedlex_pos; - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aliases_len.(3) <- - __sedlex_aliases_pos.(3) - __sedlex_pos; - __sedlex_aliases_pos.(3) <- __sedlex_pos; - () - | _ -> assert false) - | __sedlex_state :: __sedlex_rest -> ( - match (__sedlex_curr, __sedlex_state) with - | 12, 6 -> __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest - | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 12, 10 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aliases_len.(0) <- - __sedlex_aliases_pos.(0) - __sedlex_pos; - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 9 __sedlex_rest - | 9, 3 -> - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 15, 5 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest - | 5, 4 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 12, 4 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aliases_len.(0) <- - __sedlex_aliases_pos.(0) - __sedlex_pos; - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 9 __sedlex_rest - | 16, 6 -> __sedlex_aux (__sedlex_pos - 1) 15 __sedlex_rest - | 5, 10 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 12, 5 -> __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest - | 9, 0 -> - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 9, 10 -> - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 9, 4 -> - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 15, 6 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 12 __sedlex_rest - | _ -> assert false) - in - __sedlex_aux (Sedlexing.lexeme_length buf) 16 __sedlex_path; - (__sedlex_aliases_pos, __sedlex_aliases_len) - and __sedlex_trace_11 buf __sedlex_path = - let __sedlex_aliases_pos = [| 0; 0; 0; 0 |] - and __sedlex_aliases_len = [| 0; 0; 0; 0 |] in - let rec __sedlex_aux __sedlex_pos __sedlex_curr = function - | [] -> ( - match __sedlex_curr with - | 20 -> - __sedlex_aliases_len.(3) <- - __sedlex_aliases_pos.(3) - __sedlex_pos; - __sedlex_aliases_pos.(3) <- __sedlex_pos; - () - | 19 -> - __sedlex_aliases_len.(3) <- - __sedlex_aliases_pos.(3) - __sedlex_pos; - __sedlex_aliases_pos.(3) <- __sedlex_pos; - () - | 4 -> - __sedlex_aliases_pos.(3) <- __sedlex_pos; - __sedlex_aliases_len.(3) <- - __sedlex_aliases_pos.(3) - __sedlex_pos; - __sedlex_aliases_pos.(3) <- __sedlex_pos; - () - | _ -> assert false) - | __sedlex_state :: __sedlex_rest -> ( - match (__sedlex_curr, __sedlex_state) with - | 18, 28 -> __sedlex_aux (__sedlex_pos - 1) 17 __sedlex_rest - | 7, 4 -> - __sedlex_aliases_len.(2) <- - __sedlex_aliases_pos.(2) - __sedlex_pos; - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 5 __sedlex_rest - | 5, 0 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest - | 17, 28 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest - | 14, 26 -> - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aliases_len.(0) <- - __sedlex_aliases_pos.(0) - __sedlex_pos; - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 11 __sedlex_rest - | 7, 25 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 14, 27 -> __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest - | 11, 25 -> - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 4, 0 -> - __sedlex_aliases_pos.(3) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 19 __sedlex_rest - | 7, 26 -> __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | 17, 27 -> - __sedlex_aliases_pos.(0) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest - | 14, 28 -> __sedlex_aux (__sedlex_pos - 1) 14 __sedlex_rest - | 5, 3 -> __sedlex_aux (__sedlex_pos - 1) 4 __sedlex_rest - | 11, 26 -> - __sedlex_aliases_pos.(2) <- __sedlex_pos; - __sedlex_aliases_len.(1) <- - __sedlex_aliases_pos.(1) - __sedlex_pos; - __sedlex_aliases_pos.(1) <- __sedlex_pos; - __sedlex_aux (__sedlex_pos - 1) 7 __sedlex_rest - | _ -> assert false) - in - __sedlex_aux (Sedlexing.lexeme_length buf) 18 __sedlex_path; - (__sedlex_aliases_pos, __sedlex_aliases_len) - in - Sedlexing.start buf; - let __sedlex_result, __sedlex_path = __sedlex_state_0 [0] buf in - match __sedlex_result with - | 0 -> - let __sedlex_aliases_pos, __sedlex_aliases_len = - __sedlex_trace_0 buf __sedlex_path - in - let n = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) - and s = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) in - Printf.printf "Bin %s%s\n" (sub s) (sub n); - token buf - | 1 -> - let __sedlex_aliases_pos, __sedlex_aliases_len = - __sedlex_trace_1 buf __sedlex_path - in - let n = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) - and s = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) in - Printf.printf "Oct %s%s\n" (sub s) (sub n); - token buf - | 2 -> - let __sedlex_aliases_pos, __sedlex_aliases_len = - __sedlex_trace_2 buf __sedlex_path - in - let n = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) - and s = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) in - Printf.printf "Dec %s%s\n" (sub s) (sub n); - token buf - | 3 -> - let __sedlex_aliases_pos, __sedlex_aliases_len = - __sedlex_trace_3 buf __sedlex_path - in - let n = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) - and s = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) in - Printf.printf "Hex %s%s\n" (sub s) (sub n); - token buf - | 4 -> - let __sedlex_aliases_pos, __sedlex_aliases_len = - __sedlex_trace_4 buf __sedlex_path - in - let d = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) - and n = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) - and s = (__sedlex_aliases_pos.(2), __sedlex_aliases_len.(2)) in - Printf.printf "Bin %s%s/%s\n" (sub s) (sub n) (sub d); - token buf - | 5 -> - let __sedlex_aliases_pos, __sedlex_aliases_len = - __sedlex_trace_5 buf __sedlex_path - in - let d = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) - and n = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) - and s = (__sedlex_aliases_pos.(2), __sedlex_aliases_len.(2)) in - Printf.printf "Oct %s%s/%s\n" (sub s) (sub n) (sub d); - token buf - | 6 -> - let __sedlex_aliases_pos, __sedlex_aliases_len = - __sedlex_trace_6 buf __sedlex_path - in - let d = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) - and n = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) - and s = (__sedlex_aliases_pos.(2), __sedlex_aliases_len.(2)) in - Printf.printf "Dec %s%s/%s\n" (sub s) (sub n) (sub d); - token buf - | 7 -> - let __sedlex_aliases_pos, __sedlex_aliases_len = - __sedlex_trace_7 buf __sedlex_path - in - let d = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) - and n = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) - and s = (__sedlex_aliases_pos.(2), __sedlex_aliases_len.(2)) in - Printf.printf "Hex %s%s/%s\n" (sub s) (sub n) (sub d); - token buf - | 8 -> - let __sedlex_aliases_pos, __sedlex_aliases_len = - __sedlex_trace_8 buf __sedlex_path - in - let i = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) - and o = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) - and r = (__sedlex_aliases_pos.(2), __sedlex_aliases_len.(2)) - and s = (__sedlex_aliases_pos.(3), __sedlex_aliases_len.(3)) in - Printf.printf "Bin %s%s%s%si\n" (sub s) (sub r) (sub o) (sub i); - token buf - | 9 -> - let __sedlex_aliases_pos, __sedlex_aliases_len = - __sedlex_trace_9 buf __sedlex_path - in - let i = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) - and o = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) - and r = (__sedlex_aliases_pos.(2), __sedlex_aliases_len.(2)) - and s = (__sedlex_aliases_pos.(3), __sedlex_aliases_len.(3)) in - Printf.printf "Oct %s%s%s%si\n" (sub s) (sub r) (sub o) (sub i); - token buf - | 10 -> - let __sedlex_aliases_pos, __sedlex_aliases_len = - __sedlex_trace_10 buf __sedlex_path - in - let i = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) - and o = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) - and r = (__sedlex_aliases_pos.(2), __sedlex_aliases_len.(2)) - and s = (__sedlex_aliases_pos.(3), __sedlex_aliases_len.(3)) in - Printf.printf "Dec %s%s%s%si\n" (sub s) (sub r) (sub o) (sub i); - token buf - | 11 -> - let __sedlex_aliases_pos, __sedlex_aliases_len = - __sedlex_trace_11 buf __sedlex_path - in - let i = (__sedlex_aliases_pos.(0), __sedlex_aliases_len.(0)) - and o = (__sedlex_aliases_pos.(1), __sedlex_aliases_len.(1)) - and r = (__sedlex_aliases_pos.(2), __sedlex_aliases_len.(2)) - and s = (__sedlex_aliases_pos.(3), __sedlex_aliases_len.(3)) in - Printf.printf "Hex %s%s%s%si\n" (sub s) (sub r) (sub o) (sub i); - token buf - | 12 -> token buf - | 13 -> print_endline "Non ASCII" - | 14 -> print_endline "EOF" - | _ -> failwith "Unexpected character" - -let () = - let lexbuf = - Sedlexing.Latin1.from_string - {| - 123 - +123 - -123 - 0b01010101 - -0b11110000 - +0b11111111 - 0o12345670 - +0o76543210 - -0o17263540 - 0x123abcdef - -0x456DEFabc - +0x789ABCdef - 123/456 - -456/789 - +987/654 - 0o777/100 - +0o200/666 - 1+1i - 1-1i - 0x1f+2ei - +0x1f-2ei - 0b10+11i - -0b10-11i - |} - in - token lexbuf diff --git a/src/lib/sedlexing.ml b/src/lib/sedlexing.ml index 33744f0f..621ce219 100644 --- a/src/lib/sedlexing.ml +++ b/src/lib/sedlexing.ml @@ -161,13 +161,13 @@ let mark lexbuf i path = lexbuf.marked_bol <- lexbuf.curr_bol; lexbuf.marked_line <- lexbuf.curr_line; lexbuf.marked_val <- i; - lexbuf.marked_path <- List.tl path + lexbuf.marked_path <- path let start lexbuf = lexbuf.start_pos <- lexbuf.pos; lexbuf.start_bol <- lexbuf.curr_bol; lexbuf.start_line <- lexbuf.curr_line; - mark lexbuf (-1) [0] + mark lexbuf (-1) [] let backtrack lexbuf = lexbuf.pos <- lexbuf.marked_pos; diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index ebf9bcb2..7efe1cb0 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -204,7 +204,8 @@ let call_state lexbuf auto state = let trans, final = auto.(state) in if Array.length trans = 0 then ( match best_final final with - | Some i -> [%expr [%e eint ~loc i], __sedlex_path] + | Some i -> + [%expr [%e eint ~loc i], [%e eint ~loc state] :: __sedlex_path] | None -> assert false) else appfun (state_fun state) @@ -298,16 +299,23 @@ let gen_trace lexbuf traces i = function [%e e]] in let unreachable_case = - [case ~lhs:[%pat? _] ~guard:None ~rhs:[%expr assert false]] + case ~lhs:[%pat? _] ~guard:None ~rhs:[%expr assert false] in let trans_cases = List.map - (fun (curr, state, next, starts, stops) -> - let lhs = ppat_tuple ~loc [pint ~loc curr; pint ~loc state] in + (fun (curr_state, curr_node, prev_state, prev_node, starts, stops) -> + let lhs = + ppat_tuple ~loc + [ + pint ~loc curr_state; + pint ~loc curr_node; + pint ~loc prev_state; + ] + in let call_rest = [%expr - __sedlex_aux (__sedlex_pos - 1) [%e eint ~loc next] - __sedlex_rest] + __sedlex_aux (__sedlex_pos - 1) [%e eint ~loc prev_state] + [%e eint ~loc prev_node] __sedlex_rest] in let rhs = call_rest @@ -333,16 +341,20 @@ let gen_trace lexbuf traces i = function ~pat:[%pat? __sedlex_aux] ~expr: [%expr - fun __sedlex_pos __sedlex_curr -> function + fun __sedlex_pos __sedlex_curr_state __sedlex_curr_node -> + function | [] -> [%e - pexp_match ~loc [%expr __sedlex_curr] - (final_cases @ unreachable_case)] - | __sedlex_state :: __sedlex_rest -> + pexp_match ~loc [%expr __sedlex_curr_node] + (final_cases @ [unreachable_case])] + | __sedlex_prev_state :: __sedlex_rest -> [%e pexp_match ~loc - [%expr __sedlex_curr, __sedlex_state] - (trans_cases @ unreachable_case)]] + [%expr + __sedlex_curr_state, + __sedlex_curr_node, + __sedlex_prev_state] + (trans_cases @ [unreachable_case])]] in [ value_binding ~loc @@ -354,9 +366,13 @@ let gen_trace lexbuf traces i = function pexp_let ~loc Nonrecursive result_arrays @@ pexp_let ~loc Recursive [aux_fun] @@ [%expr - __sedlex_aux - (Sedlexing.lexeme_length [%e evar ~loc lexbuf]) - [%e eint ~loc initial] __sedlex_path; + (match __sedlex_path with + | __sedlex_curr_state :: __sedlex_rest -> + __sedlex_aux + (Sedlexing.lexeme_length [%e evar ~loc lexbuf]) + __sedlex_curr_state [%e eint ~loc initial] + __sedlex_rest + | _ -> assert false); (__sedlex_aliases_starts, __sedlex_aliases_stops)]]]; ] diff --git a/src/syntax/sedlex.ml b/src/syntax/sedlex.ml index 155e434c..f716cca8 100644 --- a/src/syntax/sedlex.ml +++ b/src/syntax/sedlex.ml @@ -147,45 +147,41 @@ let compile_traces states (start, final) = in let first_node = Hashtbl.find nodes_idx final in let trans_cases = - let visited = Array.make !counter false in let cases = Hashtbl.create 31 in - let rec traverse node = - let j = Hashtbl.find nodes_idx node in - if not visited.(j) then begin - visited.(j) <- true; - let to_states = - Hashtbl.fold - (fun state i acc -> if List.mem node state then i :: acc else acc) - states [] - in - let rec dfs start_stops node = - let i = Hashtbl.find nodes_idx node in - let starts, stops = handle_alias start_stops node.alias in - if node.trans <> [] || node == final then + Hashtbl.iter + (fun from_state j -> + Hashtbl.iter + (fun to_state i -> List.iter - (fun state -> - try ignore (Hashtbl.find cases (i, state)) - with Not_found -> - Hashtbl.add cases (i, state) (i, state, j, starts, stops)) - to_states; - List.iter (dfs (starts, stops)) node.eps - in - List.iter (fun (_, next) -> dfs ([], []) next) node.trans; - List.iter traverse node.eps; - List.iter (fun (_, next) -> traverse next) node.trans - end - in - traverse start; - Hashtbl.to_seq cases |> Seq.map snd |> List.of_seq + (fun from_node -> + try + let node_j = Hashtbl.find nodes_idx from_node in + let rec dfs start_stops to_node = + let node_i = Hashtbl.find nodes_idx to_node in + try ignore (Hashtbl.find cases (i, node_i, j)) + with Not_found -> + let starts, stops = + handle_alias start_stops to_node.alias + in + Hashtbl.add cases (i, node_i, j) + (i, node_i, j, node_j, starts, stops); + List.iter (dfs (starts, stops)) to_node.eps + in + List.iter + (fun (_, to_node) -> + if List.mem to_node to_state then dfs ([], []) to_node) + from_node.trans + with Not_found -> ()) + from_state) + states) + states; + Hashtbl.to_seq_values cases |> List.of_seq in let final_cases = let rec dfs start_stops cases node = let i = Hashtbl.find nodes_idx node in let starts, stops = handle_alias start_stops node.alias in - let cases = - if node.trans <> [] || node == final then (i, starts, stops) :: cases - else cases - in + let cases = (i, starts, stops) :: cases in List.fold_left (dfs (starts, stops)) cases node.eps in dfs ([], []) [] start diff --git a/src/syntax/sedlex.mli b/src/syntax/sedlex.mli index 58219d9c..b929279c 100644 --- a/src/syntax/sedlex.mli +++ b/src/syntax/sedlex.mli @@ -27,6 +27,6 @@ val compile : regexp array -> ((Sedlex_cset.t * int) array * bool array) array * (int - * (int * int * int * string list * string list) list + * (int * int * int * int * string list * string list) list * (int * string list * string list) list) array diff --git a/test/dune b/test/dune new file mode 100644 index 00000000..612192c0 --- /dev/null +++ b/test/dune @@ -0,0 +1,7 @@ +(library + (name test) + (modules number_lexer misc) + (inline_tests) + (libraries sedlex sedlex_ppx ppx_expect) + (preprocess + (pps sedlex.ppx ppx_expect))) diff --git a/examples/misc.ml b/test/misc.ml similarity index 80% rename from examples/misc.ml rename to test/misc.ml index 600e0cd8..86c99a7c 100644 --- a/examples/misc.ml +++ b/test/misc.ml @@ -30,7 +30,7 @@ let rec token buf = Printf.printf "8. %s: %s\n" (lex buf) (sub s); token buf | (Plus "a" as a), (Plus "b" as b), "c" -> - Printf.printf "8. %s: %s %s\n" (lex buf) (sub a) (sub b); + Printf.printf "9. %s: %s %s\n" (lex buf) (sub a) (sub b); token buf (* {Others} *) | Plus xml_blank -> token buf @@ -38,7 +38,7 @@ let rec token buf = | eof -> print_endline "EOF" | _ -> failwith "Unexpected character" -let () = +let%expect_test _ = let lexbuf = Sedlexing.Latin1.from_string {| @@ -55,4 +55,21 @@ let () = aaaabbbc |} in - token lexbuf + token lexbuf; + + [%expect + {| + 1. abcd: a ab abc abcd + 2. dcba: a ba cba dcba + 3. ab: a b ab b + 3. ba: a b ba a + 4. ababababab: ab abababab + 5. cdcdcdcdcd: dcdcdcdc + 6. dcdc: dcdc + 6. dcdcdcdc: dcdc dcdc + 7. dc: dc + 8. abc: abc + 8. def: def + 9. aaaabbbc: aaaa bbb + EOF + |}] diff --git a/examples/number_lexer.ml b/test/number_lexer.ml similarity index 87% rename from examples/number_lexer.ml rename to test/number_lexer.ml index 39c254be..7eec8055 100644 --- a/examples/number_lexer.ml +++ b/test/number_lexer.ml @@ -61,7 +61,7 @@ let rec token buf = | eof -> print_endline "EOF" | _ -> failwith "Unexpected character" -let () = +let%expect_test _ = let lexbuf = Sedlexing.Latin1.from_string {| @@ -90,4 +90,32 @@ let () = -0b10-11i |} in - token lexbuf + token lexbuf; + + [%expect + {| + Dec 123 + Dec +123 + Dec -123 + Bin 01010101 + Bin -11110000 + Bin +11111111 + Oct 12345670 + Oct +76543210 + Oct -17263540 + Hex 123abcdef + Hex -456DEFabc + Hex +789ABCdef + Dec 123/456 + Dec -456/789 + Dec +987/654 + Oct 777/100 + Oct +200/666 + Dec 1+1i + Dec 1-1i + Hex 1f+2ei + Hex +1f-2ei + Bin 10+11i + Bin -10-11i + EOF + |}] From 86f42a8523bf268c41d35762da11d1a19bf2142e Mon Sep 17 00:00:00 2001 From: dongyan Date: Fri, 23 Sep 2022 21:55:10 +0800 Subject: [PATCH 15/30] Fix path tracing (curr_state, curr_node, prev_state, char_set) => prev_node --- src/lib/sedlexing.ml | 1 + src/lib/sedlexing.mli | 4 ++++ src/syntax/ppx_sedlex.ml | 44 ++++++++++++++++++++++++++++++++-------- src/syntax/sedlex.ml | 39 +++++++++++++++++++++++++++-------- src/syntax/sedlex.mli | 17 ++++++++++++---- test/misc.ml | 8 ++++++++ 6 files changed, 92 insertions(+), 21 deletions(-) diff --git a/src/lib/sedlexing.ml b/src/lib/sedlexing.ml index 621ce219..116772b2 100644 --- a/src/lib/sedlexing.ml +++ b/src/lib/sedlexing.ml @@ -192,6 +192,7 @@ let lexeme lexbuf = Array.sub lexbuf.buf lexbuf.start_pos (lexbuf.pos - lexbuf.start_pos) let lexeme_char lexbuf pos = lexbuf.buf.(lexbuf.start_pos + pos) +let lexeme_code lexbuf pos = Uchar.to_int lexbuf.buf.(lexbuf.start_pos + pos) let lexing_positions lexbuf = let start_p = diff --git a/src/lib/sedlexing.mli b/src/lib/sedlexing.mli index ee4cc932..104afda5 100644 --- a/src/lib/sedlexing.mli +++ b/src/lib/sedlexing.mli @@ -114,6 +114,10 @@ val lexeme : lexbuf -> Uchar.t array the matched string. *) val lexeme_char : lexbuf -> int -> Uchar.t +(** [Sedlexing.lexeme_code lexbuf pos] returns code point number [pos] in + the matched string. *) +val lexeme_code : lexbuf -> int -> int + (** [Sedlexing.sub_lexeme lexbuf pos len] returns a substring of the string matched by the regular expression as an array of Unicode code point. *) val sub_lexeme : lexbuf -> int -> int -> Uchar.t array diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index 7efe1cb0..e9429922 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -264,6 +264,19 @@ let gen_recflag auto = Nonrecursive with Exit -> Recursive +let gen_cset ~loc x char_set = + let interval a b = + [%expr + [%e eint ~loc a] <= [%e evar ~loc x] + && [%e evar ~loc x] <= [%e eint ~loc b]] + in + match char_set with + | (a, b) :: l -> + List.fold_left + (fun acc (a, b) -> [%expr [%e acc] || [%e interval a b]]) + (interval a b) l + | [] -> assert false + let gen_trace lexbuf traces i = function | (_, []), _ -> [] | (_, aliases), _ -> @@ -303,7 +316,15 @@ let gen_trace lexbuf traces i = function in let trans_cases = List.map - (fun (curr_state, curr_node, prev_state, prev_node, starts, stops) -> + (fun { + Sedlex.curr_state; + curr_node; + prev_state; + prev_node; + char_set; + starts; + stops; + } -> let lhs = ppat_tuple ~loc [ @@ -312,23 +333,24 @@ let gen_trace lexbuf traces i = function pint ~loc prev_state; ] in - let call_rest = - [%expr - __sedlex_aux (__sedlex_pos - 1) [%e eint ~loc prev_state] - [%e eint ~loc prev_node] __sedlex_rest] - in + let guard = Some (gen_cset ~loc "__sedlex_code" char_set) in let rhs = + let call_rest = + [%expr + __sedlex_aux (__sedlex_pos - 1) [%e eint ~loc prev_state] + [%e eint ~loc prev_node] __sedlex_rest] + in call_rest |> List.fold_right gen_start starts |> List.fold_right gen_stop stops in - case ~lhs ~guard:None ~rhs) + case ~lhs ~guard ~rhs) trans in let final_cases = List.map - (fun (curr, starts, stops) -> - let lhs = pint ~loc curr in + (fun { Sedlex.curr_node; starts; stops } -> + let lhs = pint ~loc curr_node in let rhs = [%expr ()] |> List.fold_right gen_start starts @@ -348,6 +370,10 @@ let gen_trace lexbuf traces i = function pexp_match ~loc [%expr __sedlex_curr_node] (final_cases @ [unreachable_case])] | __sedlex_prev_state :: __sedlex_rest -> + let __sedlex_code = + Sedlexing.lexeme_code [%e evar ~loc lexbuf] + (__sedlex_pos - 1) + in [%e pexp_match ~loc [%expr diff --git a/src/syntax/sedlex.ml b/src/syntax/sedlex.ml index f716cca8..f76a3f40 100644 --- a/src/syntax/sedlex.ml +++ b/src/syntax/sedlex.ml @@ -127,6 +127,20 @@ let transition (state : state) = Array.sort (fun (c1, _) (c2, _) -> compare c1 c2) t; t +(* Restore NFA path from DFA path *) + +type trans_case = { + curr_state : int; + curr_node : int; + prev_state : int; + prev_node : int; + char_set : Sedlex_cset.t; + starts : string list; + stops : string list; +} + +type final_case = { curr_node : int; starts : string list; stops : string list } + let compile_traces states (start, final) = let counter = ref 0 in let nodes_idx = Hashtbl.create 31 in @@ -156,20 +170,29 @@ let compile_traces states (start, final) = (fun from_node -> try let node_j = Hashtbl.find nodes_idx from_node in - let rec dfs start_stops to_node = + let rec dfs cset start_stops to_node = let node_i = Hashtbl.find nodes_idx to_node in - try ignore (Hashtbl.find cases (i, node_i, j)) + try ignore (Hashtbl.find cases (i, node_i, j, cset)) with Not_found -> let starts, stops = handle_alias start_stops to_node.alias in - Hashtbl.add cases (i, node_i, j) - (i, node_i, j, node_j, starts, stops); - List.iter (dfs (starts, stops)) to_node.eps + Hashtbl.add cases (i, node_i, j, cset) + { + curr_state = i; + curr_node = node_i; + prev_state = j; + prev_node = node_j; + char_set = cset; + starts; + stops; + }; + List.iter (dfs cset (starts, stops)) to_node.eps in List.iter - (fun (_, to_node) -> - if List.mem to_node to_state then dfs ([], []) to_node) + (fun (cset, to_node) -> + if List.mem to_node to_state then + dfs cset ([], []) to_node) from_node.trans with Not_found -> ()) from_state) @@ -181,7 +204,7 @@ let compile_traces states (start, final) = let rec dfs start_stops cases node = let i = Hashtbl.find nodes_idx node in let starts, stops = handle_alias start_stops node.alias in - let cases = (i, starts, stops) :: cases in + let cases = { curr_node = i; starts; stops } :: cases in List.fold_left (dfs (starts, stops)) cases node.eps in dfs ([], []) [] start diff --git a/src/syntax/sedlex.mli b/src/syntax/sedlex.mli index b929279c..46531ee7 100644 --- a/src/syntax/sedlex.mli +++ b/src/syntax/sedlex.mli @@ -23,10 +23,19 @@ val intersection : regexp -> regexp -> regexp option (* If each argument is a single [chars] regexp, returns a regexp which matches the intersection set. Otherwise returns [None]. *) +type trans_case = { + curr_state : int; + curr_node : int; + prev_state : int; + prev_node : int; + char_set : Sedlex_cset.t; + starts : string list; + stops : string list; +} + +type final_case = { curr_node : int; starts : string list; stops : string list } + val compile : regexp array -> ((Sedlex_cset.t * int) array * bool array) array - * (int - * (int * int * int * int * string list * string list) list - * (int * string list * string list) list) - array + * (int * trans_case list * final_case list) array diff --git a/test/misc.ml b/test/misc.ml index 86c99a7c..ac8b2f33 100644 --- a/test/misc.ml +++ b/test/misc.ml @@ -32,6 +32,10 @@ let rec token buf = | (Plus "a" as a), (Plus "b" as b), "c" -> Printf.printf "9. %s: %s %s\n" (lex buf) (sub a) (sub b); token buf + | (Star "a" as a), (Plus "b" as b), "e" + | (Plus "a" as b), (Plus "b" as a), "d" -> + Printf.printf "10. %s: %s %s\n" (lex buf) (sub a) (sub b); + token buf (* {Others} *) | Plus xml_blank -> token buf | 128 .. 255 -> print_endline "Non ASCII" @@ -53,6 +57,8 @@ let%expect_test _ = abc def aaaabbbc + aaaabbbbd + aaaabbbbe |} in token lexbuf; @@ -71,5 +77,7 @@ let%expect_test _ = 8. abc: abc 8. def: def 9. aaaabbbc: aaaa bbb + 10. aaaabbbbd: bbbb aaaa + 10. aaaabbbbe: aaaa bbbb EOF |}] From 53488c609dacb48cf8225e7a59a238dafbfc188e Mon Sep 17 00:00:00 2001 From: dongyan Date: Fri, 23 Sep 2022 22:35:15 +0800 Subject: [PATCH 16/30] Fix char set guard --- src/syntax/ppx_sedlex.ml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index e9429922..85fb7c61 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -333,7 +333,11 @@ let gen_trace lexbuf traces i = function pint ~loc prev_state; ] in - let guard = Some (gen_cset ~loc "__sedlex_code" char_set) in + let guard = + match char_set with + | [] -> None + | _ -> Some (gen_cset ~loc "__sedlex_code" char_set) + in let rhs = let call_rest = [%expr From 9154025c2fa9285369de10d351586f86daf03094 Mon Sep 17 00:00:00 2001 From: dongyan Date: Sun, 25 Sep 2022 01:13:11 +0800 Subject: [PATCH 17/30] Optimize trace cases generation --- src/syntax/ppx_sedlex.ml | 15 ++++++++++++--- src/syntax/sedlex.ml | 27 ++++++++++++++++----------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index 85fb7c61..f2ebd217 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -315,6 +315,15 @@ let gen_trace lexbuf traces i = function case ~lhs:[%pat? _] ~guard:None ~rhs:[%expr assert false] in let trans_cases = + let case_cnt = Hashtbl.create (List.length trans) in + List.iter + (fun { Sedlex.curr_state; curr_node; prev_state; _ } -> + let key = (curr_state, curr_node, prev_state) in + try + let cnt = Hashtbl.find case_cnt key in + Hashtbl.add case_cnt key (cnt + 1) + with Not_found -> Hashtbl.add case_cnt key 1) + trans; List.map (fun { Sedlex.curr_state; @@ -334,9 +343,9 @@ let gen_trace lexbuf traces i = function ] in let guard = - match char_set with - | [] -> None - | _ -> Some (gen_cset ~loc "__sedlex_code" char_set) + if Hashtbl.find case_cnt (curr_state, curr_node, prev_state) = 1 + then None + else Some (gen_cset ~loc "__sedlex_code" char_set) in let rhs = let call_rest = diff --git a/src/syntax/sedlex.ml b/src/syntax/sedlex.ml index f76a3f40..9b866358 100644 --- a/src/syntax/sedlex.ml +++ b/src/syntax/sedlex.ml @@ -177,16 +177,17 @@ let compile_traces states (start, final) = let starts, stops = handle_alias start_stops to_node.alias in - Hashtbl.add cases (i, node_i, j, cset) - { - curr_state = i; - curr_node = node_i; - prev_state = j; - prev_node = node_j; - char_set = cset; - starts; - stops; - }; + if to_node.trans <> [] || to_node == final then + Hashtbl.add cases (i, node_i, j, cset) + { + curr_state = i; + curr_node = node_i; + prev_state = j; + prev_node = node_j; + char_set = cset; + starts; + stops; + }; List.iter (dfs cset (starts, stops)) to_node.eps in List.iter @@ -204,7 +205,11 @@ let compile_traces states (start, final) = let rec dfs start_stops cases node = let i = Hashtbl.find nodes_idx node in let starts, stops = handle_alias start_stops node.alias in - let cases = { curr_node = i; starts; stops } :: cases in + let cases = + if node.trans <> [] || node == final then + { curr_node = i; starts; stops } :: cases + else cases + in List.fold_left (dfs (starts, stops)) cases node.eps in dfs ([], []) [] start From 18f54cfc79dec64b8b6851fa7238fc73f95c7995 Mon Sep 17 00:00:00 2001 From: dongyan Date: Sun, 25 Sep 2022 01:33:58 +0800 Subject: [PATCH 18/30] Dup case fixes --- src/syntax/ppx_sedlex.ml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index f2ebd217..9321958a 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -315,14 +315,14 @@ let gen_trace lexbuf traces i = function case ~lhs:[%pat? _] ~guard:None ~rhs:[%expr assert false] in let trans_cases = - let case_cnt = Hashtbl.create (List.length trans) in + let dup_case = Hashtbl.create (List.length trans) in List.iter (fun { Sedlex.curr_state; curr_node; prev_state; _ } -> let key = (curr_state, curr_node, prev_state) in try - let cnt = Hashtbl.find case_cnt key in - Hashtbl.add case_cnt key (cnt + 1) - with Not_found -> Hashtbl.add case_cnt key 1) + ignore (Hashtbl.find dup_case key); + Hashtbl.add dup_case key false + with Not_found -> Hashtbl.add dup_case key true) trans; List.map (fun { @@ -343,7 +343,7 @@ let gen_trace lexbuf traces i = function ] in let guard = - if Hashtbl.find case_cnt (curr_state, curr_node, prev_state) = 1 + if Hashtbl.find dup_case (curr_state, curr_node, prev_state) then None else Some (gen_cset ~loc "__sedlex_code" char_set) in From 18d7062667ad7f7b239bc0c65c5205aeacafdae6 Mon Sep 17 00:00:00 2001 From: dongyan Date: Mon, 26 Sep 2022 21:39:21 +0800 Subject: [PATCH 19/30] Merge alias offsets --- src/syntax/ppx_sedlex.ml | 115 ++++++++++++++++++++++----------------- src/syntax/sedlex.ml | 36 +++++------- src/syntax/sedlex.mli | 5 +- 3 files changed, 83 insertions(+), 73 deletions(-) diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index 9321958a..230adf17 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -264,6 +264,42 @@ let gen_recflag auto = Nonrecursive with Exit -> Recursive +let gen_offsets traces i = function + | (_, []), _ -> None + | (_, aliases), _ -> + let n = List.length aliases in + let _, trans, finals = traces.(i) in + let cases = + List.map (fun ({ actions; _ } : Sedlex.trans_case) -> actions) trans + @ List.map (fun ({ actions; _ } : Sedlex.final_case) -> actions) finals + in + let action2cases = Hashtbl.create n in + List.iteri + (fun i actions -> + List.iter + (fun action -> + try + let offsets = Hashtbl.find action2cases action in + Hashtbl.replace action2cases action (i :: offsets) + with Not_found -> Hashtbl.add action2cases action [i]) + actions) + cases; + let counter = ref 0 in + let alias2offset = Hashtbl.create n in + let cases2offset = Hashtbl.create 31 in + Hashtbl.iter + (fun action offsets -> + try + let i = Hashtbl.find cases2offset offsets in + Hashtbl.replace cases2offset offsets i; + Hashtbl.add alias2offset action i + with Not_found -> + Hashtbl.add cases2offset offsets !counter; + Hashtbl.add alias2offset action !counter; + incr counter) + action2cases; + Some (!counter, alias2offset) + let gen_cset ~loc x char_set = let interval a b = [%expr @@ -278,37 +314,21 @@ let gen_cset ~loc x char_set = | [] -> assert false let gen_trace lexbuf traces i = function - | (_, []), _ -> [] - | (_, aliases), _ -> + | None -> [] + | Some (offsets_num, action_offsets) -> let loc = default_loc in let initial, trans, finals = traces.(i) in - let alias_indexes = - List.to_seq aliases - |> Seq.mapi (fun i { txt = alias } -> (alias, i)) - |> StringMap.of_seq - in - let find_index alias = StringMap.find alias alias_indexes in - let result_arrays = - [ - value_binding ~loc - ~pat:[%pat? __sedlex_aliases_starts] - ~expr:(pexp_array ~loc (List.map (fun _ -> [%expr 0]) aliases)); - value_binding ~loc - ~pat:[%pat? __sedlex_aliases_stops] - ~expr:(pexp_array ~loc (List.map (fun _ -> [%expr 0]) aliases)); - ] + let offset_array = + value_binding ~loc + ~pat:[%pat? __sedlex_offsets] + ~expr:(pexp_array ~loc (List.init offsets_num (fun _ -> [%expr 0]))) in + let find_offset_idx action = Hashtbl.find action_offsets action in let aux_fun = - let gen_start alias e = - let alias_index = find_index alias in + let gen_action e action = + let offset_idx = find_offset_idx action in [%expr - __sedlex_aliases_starts.([%e eint ~loc alias_index]) <- __sedlex_pos; - [%e e]] - in - let gen_stop alias e = - let alias_index = find_index alias in - [%expr - __sedlex_aliases_stops.([%e eint ~loc alias_index]) <- __sedlex_pos; + __sedlex_offsets.([%e eint ~loc offset_idx]) <- __sedlex_pos; [%e e]] in let unreachable_case = @@ -321,7 +341,7 @@ let gen_trace lexbuf traces i = function let key = (curr_state, curr_node, prev_state) in try ignore (Hashtbl.find dup_case key); - Hashtbl.add dup_case key false + Hashtbl.replace dup_case key false with Not_found -> Hashtbl.add dup_case key true) trans; List.map @@ -331,8 +351,7 @@ let gen_trace lexbuf traces i = function prev_state; prev_node; char_set; - starts; - stops; + actions; } -> let lhs = ppat_tuple ~loc @@ -353,22 +372,16 @@ let gen_trace lexbuf traces i = function __sedlex_aux (__sedlex_pos - 1) [%e eint ~loc prev_state] [%e eint ~loc prev_node] __sedlex_rest] in - call_rest - |> List.fold_right gen_start starts - |> List.fold_right gen_stop stops + List.fold_left gen_action call_rest actions in case ~lhs ~guard ~rhs) trans in let final_cases = List.map - (fun { Sedlex.curr_node; starts; stops } -> + (fun { Sedlex.curr_node; actions } -> let lhs = pint ~loc curr_node in - let rhs = - [%expr ()] - |> List.fold_right gen_start starts - |> List.fold_right gen_stop stops - in + let rhs = List.fold_left gen_action [%expr ()] actions in case ~lhs ~guard:None ~rhs) finals in @@ -402,7 +415,7 @@ let gen_trace lexbuf traces i = function [%expr fun [%p pvar ~loc lexbuf] __sedlex_path -> [%e - pexp_let ~loc Nonrecursive result_arrays + pexp_let ~loc Nonrecursive [offset_array] @@ pexp_let ~loc Recursive [aux_fun] @@ [%expr (match __sedlex_path with @@ -412,29 +425,32 @@ let gen_trace lexbuf traces i = function __sedlex_curr_state [%e eint ~loc initial] __sedlex_rest | _ -> assert false); - (__sedlex_aliases_starts, __sedlex_aliases_stops)]]]; + __sedlex_offsets]]]; ] -let gen_aliases lexbuf i e = function +let gen_aliases lexbuf offsets i e = function | [] -> e | aliases -> let loc = default_loc in + let _, action_offsets = Option.get offsets.(i) in pexp_let ~loc Nonrecursive [ value_binding ~loc - ~pat:[%pat? __sedlex_aliases_starts, __sedlex_aliases_stops] + ~pat:[%pat? __sedlex_offsets] ~expr: (appfun (trace_fun i) [evar ~loc lexbuf; [%expr __sedlex_path]]); ] @@ pexp_let ~loc Nonrecursive - (List.mapi - (fun i { txt = alias; loc } -> + (List.map + (fun { txt = alias; loc } -> + let start = Hashtbl.find action_offsets (alias, true) in + let stop = Hashtbl.find action_offsets (alias, false) in value_binding ~loc ~pat:(pvar ~loc alias) ~expr: [%expr - __sedlex_aliases_starts.([%e eint ~loc i]), - __sedlex_aliases_stops.([%e eint ~loc i]) - - __sedlex_aliases_starts.([%e eint ~loc i])]) + __sedlex_offsets.([%e eint ~loc start]), + __sedlex_offsets.([%e eint ~loc stop]) + - __sedlex_offsets.([%e eint ~loc start])]) aliases) @@ e @@ -445,17 +461,18 @@ let gen_definition lexbuf l error = (List.map (fun ((r, s), e) -> ((r, StrLocSet.elements s), e)) l) in let auto, traces = Sedlex.compile (Array.map (fun ((r, _), _) -> r) brs) in + let offsets = Array.mapi (gen_offsets traces) brs in let cases = Array.to_list (Array.mapi (fun i ((_, aliases), e) -> case ~lhs:(pint ~loc i) ~guard:None - ~rhs:(gen_aliases lexbuf i e aliases)) + ~rhs:(gen_aliases lexbuf offsets i e aliases)) brs) in let states = Array.mapi (gen_state lexbuf auto) auto in let states = List.flatten (Array.to_list states) in - let traces = Array.mapi (gen_trace lexbuf traces) brs in + let traces = Array.mapi (gen_trace lexbuf traces) offsets in let traces = List.flatten (Array.to_list traces) in pexp_let ~loc (gen_recflag auto) (states @ traces) @@ [%expr diff --git a/src/syntax/sedlex.ml b/src/syntax/sedlex.ml index 9b866358..53155d56 100644 --- a/src/syntax/sedlex.ml +++ b/src/syntax/sedlex.ml @@ -135,11 +135,10 @@ type trans_case = { prev_state : int; prev_node : int; char_set : Sedlex_cset.t; - starts : string list; - stops : string list; + actions : (string * bool) list; } -type final_case = { curr_node : int; starts : string list; stops : string list } +type final_case = { curr_node : int; actions : (string * bool) list } let compile_traces states (start, final) = let counter = ref 0 in @@ -154,10 +153,9 @@ let compile_traces states (start, final) = List.iter (fun (_, next) -> aux next) node.trans in aux start; - let handle_alias (starts, stops) = function - | None -> (starts, stops) - | Some (alias, flag) -> - if flag then (alias :: starts, stops) else (starts, alias :: stops) + let append_action actions = function + | None -> actions + | Some action -> action :: actions in let first_node = Hashtbl.find nodes_idx final in let trans_cases = @@ -170,13 +168,11 @@ let compile_traces states (start, final) = (fun from_node -> try let node_j = Hashtbl.find nodes_idx from_node in - let rec dfs cset start_stops to_node = + let rec dfs cset actions to_node = let node_i = Hashtbl.find nodes_idx to_node in try ignore (Hashtbl.find cases (i, node_i, j, cset)) with Not_found -> - let starts, stops = - handle_alias start_stops to_node.alias - in + let actions = append_action actions to_node.alias in if to_node.trans <> [] || to_node == final then Hashtbl.add cases (i, node_i, j, cset) { @@ -185,15 +181,13 @@ let compile_traces states (start, final) = prev_state = j; prev_node = node_j; char_set = cset; - starts; - stops; + actions; }; - List.iter (dfs cset (starts, stops)) to_node.eps + List.iter (dfs cset actions) to_node.eps in List.iter (fun (cset, to_node) -> - if List.mem to_node to_state then - dfs cset ([], []) to_node) + if List.mem to_node to_state then dfs cset [] to_node) from_node.trans with Not_found -> ()) from_state) @@ -202,17 +196,17 @@ let compile_traces states (start, final) = Hashtbl.to_seq_values cases |> List.of_seq in let final_cases = - let rec dfs start_stops cases node = + let rec dfs actions cases node = let i = Hashtbl.find nodes_idx node in - let starts, stops = handle_alias start_stops node.alias in + let actions = append_action actions node.alias in let cases = if node.trans <> [] || node == final then - { curr_node = i; starts; stops } :: cases + { curr_node = i; actions } :: cases else cases in - List.fold_left (dfs (starts, stops)) cases node.eps + List.fold_left (dfs actions) cases node.eps in - dfs ([], []) [] start + dfs [] [] start in (first_node, trans_cases, final_cases) diff --git a/src/syntax/sedlex.mli b/src/syntax/sedlex.mli index 46531ee7..db3cb959 100644 --- a/src/syntax/sedlex.mli +++ b/src/syntax/sedlex.mli @@ -29,11 +29,10 @@ type trans_case = { prev_state : int; prev_node : int; char_set : Sedlex_cset.t; - starts : string list; - stops : string list; + actions : (string * bool) list; } -type final_case = { curr_node : int; starts : string list; stops : string list } +type final_case = { curr_node : int; actions : (string * bool) list } val compile : regexp array -> From 0e5dbd4701b3b811b88d679e50d441f135b18230 Mon Sep 17 00:00:00 2001 From: dongyan Date: Mon, 26 Sep 2022 21:49:26 +0800 Subject: [PATCH 20/30] Fix merging actions --- src/syntax/ppx_sedlex.ml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index 230adf17..a563ed9e 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -325,8 +325,7 @@ let gen_trace lexbuf traces i = function in let find_offset_idx action = Hashtbl.find action_offsets action in let aux_fun = - let gen_action e action = - let offset_idx = find_offset_idx action in + let gen_action e offset_idx = [%expr __sedlex_offsets.([%e eint ~loc offset_idx]) <- __sedlex_pos; [%e e]] @@ -372,7 +371,8 @@ let gen_trace lexbuf traces i = function __sedlex_aux (__sedlex_pos - 1) [%e eint ~loc prev_state] [%e eint ~loc prev_node] __sedlex_rest] in - List.fold_left gen_action call_rest actions + List.fold_left gen_action call_rest + (List.map find_offset_idx actions |> List.sort_uniq compare) in case ~lhs ~guard ~rhs) trans @@ -381,7 +381,10 @@ let gen_trace lexbuf traces i = function List.map (fun { Sedlex.curr_node; actions } -> let lhs = pint ~loc curr_node in - let rhs = List.fold_left gen_action [%expr ()] actions in + let rhs = + List.fold_left gen_action [%expr ()] + (List.map find_offset_idx actions |> List.sort_uniq compare) + in case ~lhs ~guard:None ~rhs) finals in From 72e6f3f17998dd40dfb62631545a37740f91b829 Mon Sep 17 00:00:00 2001 From: dongyan Date: Mon, 26 Sep 2022 22:02:35 +0800 Subject: [PATCH 21/30] Optimize error message --- src/syntax/ppx_sedlex.ml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index a563ed9e..56305fb4 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -646,7 +646,9 @@ let regexp_of_pattern allow_alias env = with Not_found -> err p.ppat_loc (Printf.sprintf "unbound regexp %s" x) end - | Ppat_alias (p, ({ txt = x } as x_loc)) when allow_alias -> + | Ppat_alias (_, { loc }) when not allow_alias -> + err loc @@ "alias is not allowed inside constructors" + | Ppat_alias (p, ({ txt = x } as x_loc)) -> let r, s = aux allow_alias p in if StrLocSet.mem x_loc s then begin err loc @@ "variable " ^ x From 1a2961a7e671515684012c283f4a14dd386aa91d Mon Sep 17 00:00:00 2001 From: dongyan Date: Tue, 27 Sep 2022 19:46:03 +0800 Subject: [PATCH 22/30] Update gen_alias & gen_offsets --- src/syntax/ppx_sedlex.ml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index 56305fb4..e2a3ae50 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -291,7 +291,6 @@ let gen_offsets traces i = function (fun action offsets -> try let i = Hashtbl.find cases2offset offsets in - Hashtbl.replace cases2offset offsets i; Hashtbl.add alias2offset action i with Not_found -> Hashtbl.add cases2offset offsets !counter; @@ -431,11 +430,10 @@ let gen_trace lexbuf traces i = function __sedlex_offsets]]]; ] -let gen_aliases lexbuf offsets i e = function - | [] -> e - | aliases -> +let gen_aliases lexbuf i e aliases = function + | None -> e + | Some (_, action_offsets) -> let loc = default_loc in - let _, action_offsets = Option.get offsets.(i) in pexp_let ~loc Nonrecursive [ value_binding ~loc @@ -470,7 +468,7 @@ let gen_definition lexbuf l error = (Array.mapi (fun i ((_, aliases), e) -> case ~lhs:(pint ~loc i) ~guard:None - ~rhs:(gen_aliases lexbuf offsets i e aliases)) + ~rhs:(gen_aliases lexbuf i e aliases offsets.(i))) brs) in let states = Array.mapi (gen_state lexbuf auto) auto in From 23bf119b0a095fbffecbe1f70791d1a95927c14a Mon Sep 17 00:00:00 2001 From: dongyan Date: Tue, 27 Sep 2022 19:54:10 +0800 Subject: [PATCH 23/30] Update actions --- src/syntax/ppx_sedlex.ml | 4 ++-- src/syntax/sedlex.ml | 18 ++++++++++-------- src/syntax/sedlex.mli | 6 ++++-- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index e2a3ae50..518eae74 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -444,8 +444,8 @@ let gen_aliases lexbuf i e aliases = function @@ pexp_let ~loc Nonrecursive (List.map (fun { txt = alias; loc } -> - let start = Hashtbl.find action_offsets (alias, true) in - let stop = Hashtbl.find action_offsets (alias, false) in + let start = Hashtbl.find action_offsets (Sedlex.Start alias) in + let stop = Hashtbl.find action_offsets (Stop alias) in value_binding ~loc ~pat:(pvar ~loc alias) ~expr: [%expr diff --git a/src/syntax/sedlex.ml b/src/syntax/sedlex.ml index 53155d56..3d5e7655 100644 --- a/src/syntax/sedlex.ml +++ b/src/syntax/sedlex.ml @@ -6,11 +6,13 @@ module Cset = Sedlex_cset (* NFA *) +type action = Start of string | Stop of string + type node = { id : int; mutable eps : node list; mutable trans : (Cset.t * node) list; - mutable alias : (string * bool) option; + mutable action : action option; } (* Compilation regexp -> NFA *) @@ -21,7 +23,7 @@ let cur_id = ref 0 let new_node () = incr cur_id; - { id = !cur_id; eps = []; trans = []; alias = None } + { id = !cur_id; eps = []; trans = []; action = None } let seq r1 r2 succ = r1 (r2 succ) @@ -77,8 +79,8 @@ let alias r alias succ = let n = new_node () in let s = new_node () in s.eps <- [succ]; - s.alias <- Some (alias, false); - n.alias <- Some (alias, true); + s.action <- Some (Stop alias); + n.action <- Some (Start alias); n.eps <- [r s]; n @@ -135,10 +137,10 @@ type trans_case = { prev_state : int; prev_node : int; char_set : Sedlex_cset.t; - actions : (string * bool) list; + actions : action list; } -type final_case = { curr_node : int; actions : (string * bool) list } +type final_case = { curr_node : int; actions : action list } let compile_traces states (start, final) = let counter = ref 0 in @@ -172,7 +174,7 @@ let compile_traces states (start, final) = let node_i = Hashtbl.find nodes_idx to_node in try ignore (Hashtbl.find cases (i, node_i, j, cset)) with Not_found -> - let actions = append_action actions to_node.alias in + let actions = append_action actions to_node.action in if to_node.trans <> [] || to_node == final then Hashtbl.add cases (i, node_i, j, cset) { @@ -198,7 +200,7 @@ let compile_traces states (start, final) = let final_cases = let rec dfs actions cases node = let i = Hashtbl.find nodes_idx node in - let actions = append_action actions node.alias in + let actions = append_action actions node.action in let cases = if node.trans <> [] || node == final then { curr_node = i; actions } :: cases diff --git a/src/syntax/sedlex.mli b/src/syntax/sedlex.mli index db3cb959..8591b377 100644 --- a/src/syntax/sedlex.mli +++ b/src/syntax/sedlex.mli @@ -23,16 +23,18 @@ val intersection : regexp -> regexp -> regexp option (* If each argument is a single [chars] regexp, returns a regexp which matches the intersection set. Otherwise returns [None]. *) +type action = Start of string | Stop of string + type trans_case = { curr_state : int; curr_node : int; prev_state : int; prev_node : int; char_set : Sedlex_cset.t; - actions : (string * bool) list; + actions : action list; } -type final_case = { curr_node : int; actions : (string * bool) list } +type final_case = { curr_node : int; actions : action list } val compile : regexp array -> From e7258ef8860ff30e8caee8ed344f5f4f487f1d4c Mon Sep 17 00:00:00 2001 From: dongyan Date: Tue, 27 Sep 2022 19:57:59 +0800 Subject: [PATCH 24/30] Updates --- src/syntax/ppx_sedlex.ml | 7 +++---- src/syntax/sedlex.ml | 8 ++++---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index 518eae74..d99fa783 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -320,7 +320,7 @@ let gen_trace lexbuf traces i = function let offset_array = value_binding ~loc ~pat:[%pat? __sedlex_offsets] - ~expr:(pexp_array ~loc (List.init offsets_num (fun _ -> [%expr 0]))) + ~expr:(pexp_array ~loc (List.init offsets_num (fun _ -> [%expr -1]))) in let find_offset_idx action = Hashtbl.find action_offsets action in let aux_fun = @@ -337,10 +337,9 @@ let gen_trace lexbuf traces i = function List.iter (fun { Sedlex.curr_state; curr_node; prev_state; _ } -> let key = (curr_state, curr_node, prev_state) in - try - ignore (Hashtbl.find dup_case key); + if Hashtbl.mem dup_case key then Hashtbl.replace dup_case key false - with Not_found -> Hashtbl.add dup_case key true) + else Hashtbl.add dup_case key true) trans; List.map (fun { diff --git a/src/syntax/sedlex.ml b/src/syntax/sedlex.ml index 3d5e7655..1784c6b0 100644 --- a/src/syntax/sedlex.ml +++ b/src/syntax/sedlex.ml @@ -146,13 +146,13 @@ let compile_traces states (start, final) = let counter = ref 0 in let nodes_idx = Hashtbl.create 31 in let rec aux node = - try ignore (Hashtbl.find nodes_idx node) - with Not_found -> + if not (Hashtbl.mem nodes_idx node) then begin let i = !counter in incr counter; Hashtbl.add nodes_idx node i; List.iter aux node.eps; List.iter (fun (_, next) -> aux next) node.trans + end in aux start; let append_action actions = function @@ -172,8 +172,7 @@ let compile_traces states (start, final) = let node_j = Hashtbl.find nodes_idx from_node in let rec dfs cset actions to_node = let node_i = Hashtbl.find nodes_idx to_node in - try ignore (Hashtbl.find cases (i, node_i, j, cset)) - with Not_found -> + if not (Hashtbl.mem cases (i, node_i, j, cset)) then begin let actions = append_action actions to_node.action in if to_node.trans <> [] || to_node == final then Hashtbl.add cases (i, node_i, j, cset) @@ -186,6 +185,7 @@ let compile_traces states (start, final) = actions; }; List.iter (dfs cset actions) to_node.eps + end in List.iter (fun (cset, to_node) -> From 5ae1589851aefed07dec86b88cc7424a3a9f8893 Mon Sep 17 00:00:00 2001 From: dongyan Date: Tue, 27 Sep 2022 22:53:42 +0800 Subject: [PATCH 25/30] Remove nodes_idx --- src/syntax/sedlex.ml | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/syntax/sedlex.ml b/src/syntax/sedlex.ml index 1784c6b0..a62ef8d7 100644 --- a/src/syntax/sedlex.ml +++ b/src/syntax/sedlex.ml @@ -143,23 +143,11 @@ type trans_case = { type final_case = { curr_node : int; actions : action list } let compile_traces states (start, final) = - let counter = ref 0 in - let nodes_idx = Hashtbl.create 31 in - let rec aux node = - if not (Hashtbl.mem nodes_idx node) then begin - let i = !counter in - incr counter; - Hashtbl.add nodes_idx node i; - List.iter aux node.eps; - List.iter (fun (_, next) -> aux next) node.trans - end - in - aux start; let append_action actions = function | None -> actions | Some action -> action :: actions in - let first_node = Hashtbl.find nodes_idx final in + let first_node = final.id in let trans_cases = let cases = Hashtbl.create 31 in Hashtbl.iter @@ -169,9 +157,9 @@ let compile_traces states (start, final) = List.iter (fun from_node -> try - let node_j = Hashtbl.find nodes_idx from_node in + let node_j = from_node.id in let rec dfs cset actions to_node = - let node_i = Hashtbl.find nodes_idx to_node in + let node_i = to_node.id in if not (Hashtbl.mem cases (i, node_i, j, cset)) then begin let actions = append_action actions to_node.action in if to_node.trans <> [] || to_node == final then @@ -199,11 +187,10 @@ let compile_traces states (start, final) = in let final_cases = let rec dfs actions cases node = - let i = Hashtbl.find nodes_idx node in let actions = append_action actions node.action in let cases = if node.trans <> [] || node == final then - { curr_node = i; actions } :: cases + { curr_node = node.id; actions } :: cases else cases in List.fold_left (dfs actions) cases node.eps From 5b636214cf9e2e2161cc9ab293def2fc3cdec0ec Mon Sep 17 00:00:00 2001 From: dongyan Date: Wed, 28 Sep 2022 00:12:36 +0800 Subject: [PATCH 26/30] Optimize tracking path --- src/syntax/ppx_sedlex.ml | 54 ++++++++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 11 deletions(-) diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index d99fa783..d3229dbe 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -199,19 +199,50 @@ let best_final final = let state_fun state = Printf.sprintf "__sedlex_state_%i" state let trace_fun i = Printf.sprintf "__sedlex_trace_%i" i +let set_trace_info auto offsets = + let new_auto = + Array.map + (fun (trans, final) -> + let enable_trace = + Array.mem true + (Array.map2 (fun f o -> f && Option.is_some o) final offsets) + in + (trans, final, enable_trace)) + auto + in + Array.fold_left + (fun auto _ -> + Array.map + (fun ((trans, final, enable_trace) as x) -> + if enable_trace then x + else + ( trans, + final, + Array.exists + (fun (_, j) -> + let _, _, enable_trace = auto.(j) in + enable_trace) + trans )) + auto) + new_auto new_auto + let call_state lexbuf auto state = let loc = default_loc in - let trans, final = auto.(state) in + let trans, final, enable_trace = auto.(state) in if Array.length trans = 0 then ( match best_final final with - | Some i -> + | Some i when enable_trace -> [%expr [%e eint ~loc i], [%e eint ~loc state] :: __sedlex_path] + | Some i -> [%expr [%e eint ~loc i], __sedlex_path] | None -> assert false) - else - appfun (state_fun state) - [[%expr [%e eint ~loc state] :: __sedlex_path]; evar ~loc lexbuf] - -let gen_state lexbuf auto i (trans, final) = + else ( + let path = + if enable_trace then [%expr [%e eint ~loc state] :: __sedlex_path] + else [%expr __sedlex_path] + in + appfun (state_fun state) [evar ~loc lexbuf; path]) + +let gen_state lexbuf auto i (trans, final, _) = let loc = default_loc in let partition = Array.map fst trans in let cases = @@ -237,7 +268,7 @@ let gen_state lexbuf auto i (trans, final) = [ value_binding ~loc ~pat:(pvar ~loc (state_fun i)) - ~expr:[%expr fun __sedlex_path [%p pvar ~loc lexbuf] -> [%e body]]; + ~expr:[%expr fun [%p pvar ~loc lexbuf] __sedlex_path -> [%e body]]; ] in match best_final final with @@ -254,10 +285,10 @@ let gen_recflag auto = in states with no further transitions. *) try Array.iter - (fun (trans_i, _) -> + (fun (trans_i, _, _) -> Array.iter (fun (_, j) -> - let trans_j, _ = auto.(j) in + let trans_j, _, _ = auto.(j) in if Array.length trans_j > 0 then raise Exit) trans_i) auto; @@ -462,6 +493,7 @@ let gen_definition lexbuf l error = in let auto, traces = Sedlex.compile (Array.map (fun ((r, _), _) -> r) brs) in let offsets = Array.mapi (gen_offsets traces) brs in + let auto = set_trace_info auto offsets in let cases = Array.to_list (Array.mapi @@ -478,7 +510,7 @@ let gen_definition lexbuf l error = @@ [%expr Sedlexing.start [%e evar ~loc lexbuf]; let __sedlex_result, __sedlex_path = - [%e appfun (state_fun 0) [[%expr [0]]; evar ~loc lexbuf]] + [%e appfun (state_fun 0) [evar ~loc lexbuf; [%expr [0]]]] in [%e pexp_match ~loc [%expr __sedlex_result] From c8224bf053684f659e1d02dec5f7b52001e2e027 Mon Sep 17 00:00:00 2001 From: dongyan Date: Wed, 28 Sep 2022 20:58:36 +0800 Subject: [PATCH 27/30] Update tracking path --- src/syntax/ppx_sedlex.ml | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/syntax/ppx_sedlex.ml b/src/syntax/ppx_sedlex.ml index d3229dbe..6824669d 100644 --- a/src/syntax/ppx_sedlex.ml +++ b/src/syntax/ppx_sedlex.ml @@ -233,16 +233,16 @@ let call_state lexbuf auto state = match best_final final with | Some i when enable_trace -> [%expr [%e eint ~loc i], [%e eint ~loc state] :: __sedlex_path] - | Some i -> [%expr [%e eint ~loc i], __sedlex_path] + | Some i -> [%expr [%e eint ~loc i], []] | None -> assert false) - else ( - let path = - if enable_trace then [%expr [%e eint ~loc state] :: __sedlex_path] - else [%expr __sedlex_path] - in - appfun (state_fun state) [evar ~loc lexbuf; path]) - -let gen_state lexbuf auto i (trans, final, _) = + else begin + if enable_trace then + appfun (state_fun state) + [evar ~loc lexbuf; [%expr [%e eint ~loc state] :: __sedlex_path]] + else appfun (state_fun state) [evar ~loc lexbuf] + end + +let gen_state lexbuf auto i (trans, final, enable_trace) = let loc = default_loc in let partition = Array.map fst trans in let cases = @@ -268,17 +268,25 @@ let gen_state lexbuf auto i (trans, final, _) = [ value_binding ~loc ~pat:(pvar ~loc (state_fun i)) - ~expr:[%expr fun [%p pvar ~loc lexbuf] __sedlex_path -> [%e body]]; + ~expr: + (if enable_trace then + [%expr fun [%p pvar ~loc lexbuf] __sedlex_path -> [%e body]] + else [%expr fun [%p pvar ~loc lexbuf] -> [%e body]]); ] in match best_final final with | None -> ret (body ()) | Some _ when Array.length trans = 0 -> [] - | Some i -> + | Some i when enable_trace -> ret [%expr Sedlexing.mark [%e evar ~loc lexbuf] [%e eint ~loc i] __sedlex_path; [%e body ()]] + | Some i -> + ret + [%expr + Sedlexing.mark [%e evar ~loc lexbuf] [%e eint ~loc i] []; + [%e body ()]] let gen_recflag auto = (* The generated function is not recursive if the transitions end @@ -510,7 +518,11 @@ let gen_definition lexbuf l error = @@ [%expr Sedlexing.start [%e evar ~loc lexbuf]; let __sedlex_result, __sedlex_path = - [%e appfun (state_fun 0) [evar ~loc lexbuf; [%expr [0]]]] + [%e + let _, _, enable_trace = auto.(0) in + if enable_trace then + appfun (state_fun 0) [evar ~loc lexbuf; [%expr [0]]] + else appfun (state_fun 0) [evar ~loc lexbuf]] in [%e pexp_match ~loc [%expr __sedlex_result] From c63ff9064adbe3c6ae9ebfc3f948f0d54a0fec9f Mon Sep 17 00:00:00 2001 From: dongyan Date: Wed, 28 Sep 2022 21:26:54 +0800 Subject: [PATCH 28/30] Fix the use of try with --- src/syntax/sedlex.ml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/syntax/sedlex.ml b/src/syntax/sedlex.ml index a62ef8d7..0cb80139 100644 --- a/src/syntax/sedlex.ml +++ b/src/syntax/sedlex.ml @@ -147,6 +147,20 @@ let compile_traces states (start, final) = | None -> actions | Some action -> action :: actions in + let exception Irrelevant in + let is_relevant node = + let relevant_nodes = Hashtbl.create 31 in + let rec aux node = + if not (Hashtbl.mem relevant_nodes node.id) then begin + Hashtbl.add relevant_nodes node.id (); + List.iter aux node.eps; + List.iter (fun (_, n) -> aux n) node.trans + end + in + aux start; + try ignore (Hashtbl.find relevant_nodes node) + with Not_found -> raise Irrelevant + in let first_node = final.id in let trans_cases = let cases = Hashtbl.create 31 in @@ -158,8 +172,10 @@ let compile_traces states (start, final) = (fun from_node -> try let node_j = from_node.id in + is_relevant node_j; let rec dfs cset actions to_node = let node_i = to_node.id in + is_relevant node_i; if not (Hashtbl.mem cases (i, node_i, j, cset)) then begin let actions = append_action actions to_node.action in if to_node.trans <> [] || to_node == final then @@ -179,7 +195,7 @@ let compile_traces states (start, final) = (fun (cset, to_node) -> if List.mem to_node to_state then dfs cset [] to_node) from_node.trans - with Not_found -> ()) + with Irrelevant -> ()) from_state) states) states; From 5f0bad9b40027a2675990e20cefce157330c1a0c Mon Sep 17 00:00:00 2001 From: dongyan Date: Thu, 29 Sep 2022 00:03:38 +0800 Subject: [PATCH 29/30] Update tests --- test/misc.ml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/test/misc.ml b/test/misc.ml index ac8b2f33..fca91181 100644 --- a/test/misc.ml +++ b/test/misc.ml @@ -36,6 +36,11 @@ let rec token buf = | (Plus "a" as b), (Plus "b" as a), "d" -> Printf.printf "10. %s: %s %s\n" (lex buf) (sub a) (sub b); token buf + | ( ((Plus "d" as a) | (Plus "e" as a)), + "f", + ((Plus "d" as b) | (Plus "e" as b)) ) -> + Printf.printf "11. %s: %s %s\n" (lex buf) (sub a) (sub b); + token buf (* {Others} *) | Plus xml_blank -> token buf | 128 .. 255 -> print_endline "Non ASCII" @@ -59,6 +64,10 @@ let%expect_test _ = aaaabbbc aaaabbbbd aaaabbbbe + dfe + efd + ddddfdddd + eeeefeeee |} in token lexbuf; @@ -79,5 +88,9 @@ let%expect_test _ = 9. aaaabbbc: aaaa bbb 10. aaaabbbbd: bbbb aaaa 10. aaaabbbbe: aaaa bbbb + 11. dfe: d e + 11. efd: e d + 11. ddddfdddd: dddd dddd + 11. eeeefeeee: eeee eeee EOF |}] From f54e94db15a764284e1851ba9d57959ea2b6ae26 Mon Sep 17 00:00:00 2001 From: dongyan Date: Thu, 29 Sep 2022 22:31:39 +0800 Subject: [PATCH 30/30] Fix is_relevant --- src/syntax/sedlex.ml | 60 ++++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 33 deletions(-) diff --git a/src/syntax/sedlex.ml b/src/syntax/sedlex.ml index 0cb80139..42061891 100644 --- a/src/syntax/sedlex.ml +++ b/src/syntax/sedlex.ml @@ -147,20 +147,16 @@ let compile_traces states (start, final) = | None -> actions | Some action -> action :: actions in - let exception Irrelevant in - let is_relevant node = - let relevant_nodes = Hashtbl.create 31 in - let rec aux node = - if not (Hashtbl.mem relevant_nodes node.id) then begin - Hashtbl.add relevant_nodes node.id (); - List.iter aux node.eps; - List.iter (fun (_, n) -> aux n) node.trans - end - in - aux start; - try ignore (Hashtbl.find relevant_nodes node) - with Not_found -> raise Irrelevant + let relevant_nodes = Hashtbl.create 31 in + let rec aux node = + if not (Hashtbl.mem relevant_nodes node.id) then begin + Hashtbl.add relevant_nodes node.id (); + List.iter aux node.eps; + List.iter (fun (_, n) -> aux n) node.trans + end in + aux start; + let is_relevant node = Hashtbl.mem relevant_nodes node in let first_node = final.id in let trans_cases = let cases = Hashtbl.create 31 in @@ -170,32 +166,30 @@ let compile_traces states (start, final) = (fun to_state i -> List.iter (fun from_node -> - try - let node_j = from_node.id in - is_relevant node_j; + let node_j = from_node.id in + if is_relevant node_j then ( let rec dfs cset actions to_node = let node_i = to_node.id in - is_relevant node_i; - if not (Hashtbl.mem cases (i, node_i, j, cset)) then begin - let actions = append_action actions to_node.action in - if to_node.trans <> [] || to_node == final then - Hashtbl.add cases (i, node_i, j, cset) - { - curr_state = i; - curr_node = node_i; - prev_state = j; - prev_node = node_j; - char_set = cset; - actions; - }; - List.iter (dfs cset actions) to_node.eps - end + if is_relevant node_i then + if not (Hashtbl.mem cases (i, node_i, j, cset)) then begin + let actions = append_action actions to_node.action in + if to_node.trans <> [] || to_node == final then + Hashtbl.add cases (i, node_i, j, cset) + { + curr_state = i; + curr_node = node_i; + prev_state = j; + prev_node = node_j; + char_set = cset; + actions; + }; + List.iter (dfs cset actions) to_node.eps + end in List.iter (fun (cset, to_node) -> if List.mem to_node to_state then dfs cset [] to_node) - from_node.trans - with Irrelevant -> ()) + from_node.trans)) from_state) states) states;