From 4ea2dd117e656f950c41f9954bd593c313e34ee2 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Sun, 28 Apr 2024 06:15:55 +0200 Subject: Implement boolean props using 2-stage lookup --- lib/unicode/prop/uprop_is_ci.c | 1255 ++++++++++++++++++++++++++-------------- 1 file changed, 813 insertions(+), 442 deletions(-) (limited to 'lib/unicode/prop/uprop_is_ci.c') diff --git a/lib/unicode/prop/uprop_is_ci.c b/lib/unicode/prop/uprop_is_ci.c index 33eff8d..ebe10c9 100644 --- a/lib/unicode/prop/uprop_is_ci.c +++ b/lib/unicode/prop/uprop_is_ci.c @@ -1,455 +1,826 @@ /* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */ -#include "_bsearch.h" #include "bitset.h" -#include "rune.h" #include "unicode/prop.h" -/* clang-format off */ - -static constexpr bitset(bs, LATIN1_MAX) = { - 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x90, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static constexpr uint8_t stage1[] = { + 0, 1, 2, 2, 2, 3, 4, 5, 2, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 2, 2, 2, 2, 31, 2, 2, 2, 2, 2, 2, 2, 32, 33, + 34, 35, 36, 2, 37, 38, 39, 40, 41, 42, 43, 44, 2, 2, 2, 45, + 46, 47, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 48, 49, 50, 51, 52, 2, 2, 2, + 53, 54, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 55, 2, 2, 2, 2, 2, 2, 2, 2, 56, 2, 2, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 69, 70, 2, 2, 2, 2, 71, 72, 73, 74, + 2, 2, 2, 75, 2, 76, 77, 2, 2, 2, 2, 2, 2, 2, 2, 78, + 2, 2, 2, 2, 79, 80, 2, 2, 2, 2, 81, 2, 2, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 2, 92, 93, 2, 94, 95, 96, 97, 2, + 98, 2, 99, 100, 101, 102, 2, 2, 103, 104, 105, 106, 2, 107, 108, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 109, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 110, 111, 2, 2, 2, 2, 2, 2, 2, 112, 113, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 114, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 115, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 116, 2, + 2, 2, 117, 118, 119, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 120, 121, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 122, 123, 124, 2, 2, 125, 2, 2, 2, 126, 2, 2, 2, 2, 2, 2, + 2, 127, 128, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 129, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 130, 2, 131, 132, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, }; -static const struct { - rune lo, hi; -} lookup[] = { - {RUNE_C(0x0002B0), RUNE_C(0x00036F)}, - {RUNE_C(0x000374), RUNE_C(0x000375)}, - {RUNE_C(0x00037A), RUNE_C(0x00037A)}, - {RUNE_C(0x000384), RUNE_C(0x000385)}, - {RUNE_C(0x000387), RUNE_C(0x000387)}, - {RUNE_C(0x000483), RUNE_C(0x000489)}, - {RUNE_C(0x000559), RUNE_C(0x000559)}, - {RUNE_C(0x00055F), RUNE_C(0x00055F)}, - {RUNE_C(0x000591), RUNE_C(0x0005BD)}, - {RUNE_C(0x0005BF), RUNE_C(0x0005BF)}, - {RUNE_C(0x0005C1), RUNE_C(0x0005C2)}, - {RUNE_C(0x0005C4), RUNE_C(0x0005C5)}, - {RUNE_C(0x0005C7), RUNE_C(0x0005C7)}, - {RUNE_C(0x0005F4), RUNE_C(0x0005F4)}, - {RUNE_C(0x000600), RUNE_C(0x000605)}, - {RUNE_C(0x000610), RUNE_C(0x00061A)}, - {RUNE_C(0x00061C), RUNE_C(0x00061C)}, - {RUNE_C(0x000640), RUNE_C(0x000640)}, - {RUNE_C(0x00064B), RUNE_C(0x00065F)}, - {RUNE_C(0x000670), RUNE_C(0x000670)}, - {RUNE_C(0x0006D6), RUNE_C(0x0006DD)}, - {RUNE_C(0x0006DF), RUNE_C(0x0006E8)}, - {RUNE_C(0x0006EA), RUNE_C(0x0006ED)}, - {RUNE_C(0x00070F), RUNE_C(0x00070F)}, - {RUNE_C(0x000711), RUNE_C(0x000711)}, - {RUNE_C(0x000730), RUNE_C(0x00074A)}, - {RUNE_C(0x0007A6), RUNE_C(0x0007B0)}, - {RUNE_C(0x0007EB), RUNE_C(0x0007F5)}, - {RUNE_C(0x0007FA), RUNE_C(0x0007FA)}, - {RUNE_C(0x0007FD), RUNE_C(0x0007FD)}, - {RUNE_C(0x000816), RUNE_C(0x00082D)}, - {RUNE_C(0x000859), RUNE_C(0x00085B)}, - {RUNE_C(0x000888), RUNE_C(0x000888)}, - {RUNE_C(0x000890), RUNE_C(0x000891)}, - {RUNE_C(0x000898), RUNE_C(0x00089F)}, - {RUNE_C(0x0008C9), RUNE_C(0x000902)}, - {RUNE_C(0x00093A), RUNE_C(0x00093A)}, - {RUNE_C(0x00093C), RUNE_C(0x00093C)}, - {RUNE_C(0x000941), RUNE_C(0x000948)}, - {RUNE_C(0x00094D), RUNE_C(0x00094D)}, - {RUNE_C(0x000951), RUNE_C(0x000957)}, - {RUNE_C(0x000962), RUNE_C(0x000963)}, - {RUNE_C(0x000971), RUNE_C(0x000971)}, - {RUNE_C(0x000981), RUNE_C(0x000981)}, - {RUNE_C(0x0009BC), RUNE_C(0x0009BC)}, - {RUNE_C(0x0009C1), RUNE_C(0x0009C4)}, - {RUNE_C(0x0009CD), RUNE_C(0x0009CD)}, - {RUNE_C(0x0009E2), RUNE_C(0x0009E3)}, - {RUNE_C(0x0009FE), RUNE_C(0x0009FE)}, - {RUNE_C(0x000A01), RUNE_C(0x000A02)}, - {RUNE_C(0x000A3C), RUNE_C(0x000A3C)}, - {RUNE_C(0x000A41), RUNE_C(0x000A42)}, - {RUNE_C(0x000A47), RUNE_C(0x000A48)}, - {RUNE_C(0x000A4B), RUNE_C(0x000A4D)}, - {RUNE_C(0x000A51), RUNE_C(0x000A51)}, - {RUNE_C(0x000A70), RUNE_C(0x000A71)}, - {RUNE_C(0x000A75), RUNE_C(0x000A75)}, - {RUNE_C(0x000A81), RUNE_C(0x000A82)}, - {RUNE_C(0x000ABC), RUNE_C(0x000ABC)}, - {RUNE_C(0x000AC1), RUNE_C(0x000AC5)}, - {RUNE_C(0x000AC7), RUNE_C(0x000AC8)}, - {RUNE_C(0x000ACD), RUNE_C(0x000ACD)}, - {RUNE_C(0x000AE2), RUNE_C(0x000AE3)}, - {RUNE_C(0x000AFA), RUNE_C(0x000AFF)}, - {RUNE_C(0x000B01), RUNE_C(0x000B01)}, - {RUNE_C(0x000B3C), RUNE_C(0x000B3C)}, - {RUNE_C(0x000B3F), RUNE_C(0x000B3F)}, - {RUNE_C(0x000B41), RUNE_C(0x000B44)}, - {RUNE_C(0x000B4D), RUNE_C(0x000B4D)}, - {RUNE_C(0x000B55), RUNE_C(0x000B56)}, - {RUNE_C(0x000B62), RUNE_C(0x000B63)}, - {RUNE_C(0x000B82), RUNE_C(0x000B82)}, - {RUNE_C(0x000BC0), RUNE_C(0x000BC0)}, - {RUNE_C(0x000BCD), RUNE_C(0x000BCD)}, - {RUNE_C(0x000C00), RUNE_C(0x000C00)}, - {RUNE_C(0x000C04), RUNE_C(0x000C04)}, - {RUNE_C(0x000C3C), RUNE_C(0x000C3C)}, - {RUNE_C(0x000C3E), RUNE_C(0x000C40)}, - {RUNE_C(0x000C46), RUNE_C(0x000C48)}, - {RUNE_C(0x000C4A), RUNE_C(0x000C4D)}, - {RUNE_C(0x000C55), RUNE_C(0x000C56)}, - {RUNE_C(0x000C62), RUNE_C(0x000C63)}, - {RUNE_C(0x000C81), RUNE_C(0x000C81)}, - {RUNE_C(0x000CBC), RUNE_C(0x000CBC)}, - {RUNE_C(0x000CBF), RUNE_C(0x000CBF)}, - {RUNE_C(0x000CC6), RUNE_C(0x000CC6)}, - {RUNE_C(0x000CCC), RUNE_C(0x000CCD)}, - {RUNE_C(0x000CE2), RUNE_C(0x000CE3)}, - {RUNE_C(0x000D00), RUNE_C(0x000D01)}, - {RUNE_C(0x000D3B), RUNE_C(0x000D3C)}, - {RUNE_C(0x000D41), RUNE_C(0x000D44)}, - {RUNE_C(0x000D4D), RUNE_C(0x000D4D)}, - {RUNE_C(0x000D62), RUNE_C(0x000D63)}, - {RUNE_C(0x000D81), RUNE_C(0x000D81)}, - {RUNE_C(0x000DCA), RUNE_C(0x000DCA)}, - {RUNE_C(0x000DD2), RUNE_C(0x000DD4)}, - {RUNE_C(0x000DD6), RUNE_C(0x000DD6)}, - {RUNE_C(0x000E31), RUNE_C(0x000E31)}, - {RUNE_C(0x000E34), RUNE_C(0x000E3A)}, - {RUNE_C(0x000E46), RUNE_C(0x000E4E)}, - {RUNE_C(0x000EB1), RUNE_C(0x000EB1)}, - {RUNE_C(0x000EB4), RUNE_C(0x000EBC)}, - {RUNE_C(0x000EC6), RUNE_C(0x000EC6)}, - {RUNE_C(0x000EC8), RUNE_C(0x000ECE)}, - {RUNE_C(0x000F18), RUNE_C(0x000F19)}, - {RUNE_C(0x000F35), RUNE_C(0x000F35)}, - {RUNE_C(0x000F37), RUNE_C(0x000F37)}, - {RUNE_C(0x000F39), RUNE_C(0x000F39)}, - {RUNE_C(0x000F71), RUNE_C(0x000F7E)}, - {RUNE_C(0x000F80), RUNE_C(0x000F84)}, - {RUNE_C(0x000F86), RUNE_C(0x000F87)}, - {RUNE_C(0x000F8D), RUNE_C(0x000F97)}, - {RUNE_C(0x000F99), RUNE_C(0x000FBC)}, - {RUNE_C(0x000FC6), RUNE_C(0x000FC6)}, - {RUNE_C(0x00102D), RUNE_C(0x001030)}, - {RUNE_C(0x001032), RUNE_C(0x001037)}, - {RUNE_C(0x001039), RUNE_C(0x00103A)}, - {RUNE_C(0x00103D), RUNE_C(0x00103E)}, - {RUNE_C(0x001058), RUNE_C(0x001059)}, - {RUNE_C(0x00105E), RUNE_C(0x001060)}, - {RUNE_C(0x001071), RUNE_C(0x001074)}, - {RUNE_C(0x001082), RUNE_C(0x001082)}, - {RUNE_C(0x001085), RUNE_C(0x001086)}, - {RUNE_C(0x00108D), RUNE_C(0x00108D)}, - {RUNE_C(0x00109D), RUNE_C(0x00109D)}, - {RUNE_C(0x0010FC), RUNE_C(0x0010FC)}, - {RUNE_C(0x00135D), RUNE_C(0x00135F)}, - {RUNE_C(0x001712), RUNE_C(0x001714)}, - {RUNE_C(0x001732), RUNE_C(0x001733)}, - {RUNE_C(0x001752), RUNE_C(0x001753)}, - {RUNE_C(0x001772), RUNE_C(0x001773)}, - {RUNE_C(0x0017B4), RUNE_C(0x0017B5)}, - {RUNE_C(0x0017B7), RUNE_C(0x0017BD)}, - {RUNE_C(0x0017C6), RUNE_C(0x0017C6)}, - {RUNE_C(0x0017C9), RUNE_C(0x0017D3)}, - {RUNE_C(0x0017D7), RUNE_C(0x0017D7)}, - {RUNE_C(0x0017DD), RUNE_C(0x0017DD)}, - {RUNE_C(0x00180B), RUNE_C(0x00180F)}, - {RUNE_C(0x001843), RUNE_C(0x001843)}, - {RUNE_C(0x001885), RUNE_C(0x001886)}, - {RUNE_C(0x0018A9), RUNE_C(0x0018A9)}, - {RUNE_C(0x001920), RUNE_C(0x001922)}, - {RUNE_C(0x001927), RUNE_C(0x001928)}, - {RUNE_C(0x001932), RUNE_C(0x001932)}, - {RUNE_C(0x001939), RUNE_C(0x00193B)}, - {RUNE_C(0x001A17), RUNE_C(0x001A18)}, - {RUNE_C(0x001A1B), RUNE_C(0x001A1B)}, - {RUNE_C(0x001A56), RUNE_C(0x001A56)}, - {RUNE_C(0x001A58), RUNE_C(0x001A5E)}, - {RUNE_C(0x001A60), RUNE_C(0x001A60)}, - {RUNE_C(0x001A62), RUNE_C(0x001A62)}, - {RUNE_C(0x001A65), RUNE_C(0x001A6C)}, - {RUNE_C(0x001A73), RUNE_C(0x001A7C)}, - {RUNE_C(0x001A7F), RUNE_C(0x001A7F)}, - {RUNE_C(0x001AA7), RUNE_C(0x001AA7)}, - {RUNE_C(0x001AB0), RUNE_C(0x001ACE)}, - {RUNE_C(0x001B00), RUNE_C(0x001B03)}, - {RUNE_C(0x001B34), RUNE_C(0x001B34)}, - {RUNE_C(0x001B36), RUNE_C(0x001B3A)}, - {RUNE_C(0x001B3C), RUNE_C(0x001B3C)}, - {RUNE_C(0x001B42), RUNE_C(0x001B42)}, - {RUNE_C(0x001B6B), RUNE_C(0x001B73)}, - {RUNE_C(0x001B80), RUNE_C(0x001B81)}, - {RUNE_C(0x001BA2), RUNE_C(0x001BA5)}, - {RUNE_C(0x001BA8), RUNE_C(0x001BA9)}, - {RUNE_C(0x001BAB), RUNE_C(0x001BAD)}, - {RUNE_C(0x001BE6), RUNE_C(0x001BE6)}, - {RUNE_C(0x001BE8), RUNE_C(0x001BE9)}, - {RUNE_C(0x001BED), RUNE_C(0x001BED)}, - {RUNE_C(0x001BEF), RUNE_C(0x001BF1)}, - {RUNE_C(0x001C2C), RUNE_C(0x001C33)}, - {RUNE_C(0x001C36), RUNE_C(0x001C37)}, - {RUNE_C(0x001C78), RUNE_C(0x001C7D)}, - {RUNE_C(0x001CD0), RUNE_C(0x001CD2)}, - {RUNE_C(0x001CD4), RUNE_C(0x001CE0)}, - {RUNE_C(0x001CE2), RUNE_C(0x001CE8)}, - {RUNE_C(0x001CED), RUNE_C(0x001CED)}, - {RUNE_C(0x001CF4), RUNE_C(0x001CF4)}, - {RUNE_C(0x001CF8), RUNE_C(0x001CF9)}, - {RUNE_C(0x001D2C), RUNE_C(0x001D6A)}, - {RUNE_C(0x001D78), RUNE_C(0x001D78)}, - {RUNE_C(0x001D9B), RUNE_C(0x001DFF)}, - {RUNE_C(0x001FBD), RUNE_C(0x001FBD)}, - {RUNE_C(0x001FBF), RUNE_C(0x001FC1)}, - {RUNE_C(0x001FCD), RUNE_C(0x001FCF)}, - {RUNE_C(0x001FDD), RUNE_C(0x001FDF)}, - {RUNE_C(0x001FED), RUNE_C(0x001FEF)}, - {RUNE_C(0x001FFD), RUNE_C(0x001FFE)}, - {RUNE_C(0x00200B), RUNE_C(0x00200F)}, - {RUNE_C(0x002018), RUNE_C(0x002019)}, - {RUNE_C(0x002024), RUNE_C(0x002024)}, - {RUNE_C(0x002027), RUNE_C(0x002027)}, - {RUNE_C(0x00202A), RUNE_C(0x00202E)}, - {RUNE_C(0x002060), RUNE_C(0x002064)}, - {RUNE_C(0x002066), RUNE_C(0x00206F)}, - {RUNE_C(0x002071), RUNE_C(0x002071)}, - {RUNE_C(0x00207F), RUNE_C(0x00207F)}, - {RUNE_C(0x002090), RUNE_C(0x00209C)}, - {RUNE_C(0x0020D0), RUNE_C(0x0020F0)}, - {RUNE_C(0x002C7C), RUNE_C(0x002C7D)}, - {RUNE_C(0x002CEF), RUNE_C(0x002CF1)}, - {RUNE_C(0x002D6F), RUNE_C(0x002D6F)}, - {RUNE_C(0x002D7F), RUNE_C(0x002D7F)}, - {RUNE_C(0x002DE0), RUNE_C(0x002DFF)}, - {RUNE_C(0x002E2F), RUNE_C(0x002E2F)}, - {RUNE_C(0x003005), RUNE_C(0x003005)}, - {RUNE_C(0x00302A), RUNE_C(0x00302D)}, - {RUNE_C(0x003031), RUNE_C(0x003035)}, - {RUNE_C(0x00303B), RUNE_C(0x00303B)}, - {RUNE_C(0x003099), RUNE_C(0x00309E)}, - {RUNE_C(0x0030FC), RUNE_C(0x0030FE)}, - {RUNE_C(0x00A015), RUNE_C(0x00A015)}, - {RUNE_C(0x00A4F8), RUNE_C(0x00A4FD)}, - {RUNE_C(0x00A60C), RUNE_C(0x00A60C)}, - {RUNE_C(0x00A66F), RUNE_C(0x00A672)}, - {RUNE_C(0x00A674), RUNE_C(0x00A67D)}, - {RUNE_C(0x00A67F), RUNE_C(0x00A67F)}, - {RUNE_C(0x00A69C), RUNE_C(0x00A69F)}, - {RUNE_C(0x00A6F0), RUNE_C(0x00A6F1)}, - {RUNE_C(0x00A700), RUNE_C(0x00A721)}, - {RUNE_C(0x00A770), RUNE_C(0x00A770)}, - {RUNE_C(0x00A788), RUNE_C(0x00A78A)}, - {RUNE_C(0x00A7F2), RUNE_C(0x00A7F4)}, - {RUNE_C(0x00A7F8), RUNE_C(0x00A7F9)}, - {RUNE_C(0x00A802), RUNE_C(0x00A802)}, - {RUNE_C(0x00A806), RUNE_C(0x00A806)}, - {RUNE_C(0x00A80B), RUNE_C(0x00A80B)}, - {RUNE_C(0x00A825), RUNE_C(0x00A826)}, - {RUNE_C(0x00A82C), RUNE_C(0x00A82C)}, - {RUNE_C(0x00A8C4), RUNE_C(0x00A8C5)}, - {RUNE_C(0x00A8E0), RUNE_C(0x00A8F1)}, - {RUNE_C(0x00A8FF), RUNE_C(0x00A8FF)}, - {RUNE_C(0x00A926), RUNE_C(0x00A92D)}, - {RUNE_C(0x00A947), RUNE_C(0x00A951)}, - {RUNE_C(0x00A980), RUNE_C(0x00A982)}, - {RUNE_C(0x00A9B3), RUNE_C(0x00A9B3)}, - {RUNE_C(0x00A9B6), RUNE_C(0x00A9B9)}, - {RUNE_C(0x00A9BC), RUNE_C(0x00A9BD)}, - {RUNE_C(0x00A9CF), RUNE_C(0x00A9CF)}, - {RUNE_C(0x00A9E5), RUNE_C(0x00A9E6)}, - {RUNE_C(0x00AA29), RUNE_C(0x00AA2E)}, - {RUNE_C(0x00AA31), RUNE_C(0x00AA32)}, - {RUNE_C(0x00AA35), RUNE_C(0x00AA36)}, - {RUNE_C(0x00AA43), RUNE_C(0x00AA43)}, - {RUNE_C(0x00AA4C), RUNE_C(0x00AA4C)}, - {RUNE_C(0x00AA70), RUNE_C(0x00AA70)}, - {RUNE_C(0x00AA7C), RUNE_C(0x00AA7C)}, - {RUNE_C(0x00AAB0), RUNE_C(0x00AAB0)}, - {RUNE_C(0x00AAB2), RUNE_C(0x00AAB4)}, - {RUNE_C(0x00AAB7), RUNE_C(0x00AAB8)}, - {RUNE_C(0x00AABE), RUNE_C(0x00AABF)}, - {RUNE_C(0x00AAC1), RUNE_C(0x00AAC1)}, - {RUNE_C(0x00AADD), RUNE_C(0x00AADD)}, - {RUNE_C(0x00AAEC), RUNE_C(0x00AAED)}, - {RUNE_C(0x00AAF3), RUNE_C(0x00AAF4)}, - {RUNE_C(0x00AAF6), RUNE_C(0x00AAF6)}, - {RUNE_C(0x00AB5B), RUNE_C(0x00AB5F)}, - {RUNE_C(0x00AB69), RUNE_C(0x00AB6B)}, - {RUNE_C(0x00ABE5), RUNE_C(0x00ABE5)}, - {RUNE_C(0x00ABE8), RUNE_C(0x00ABE8)}, - {RUNE_C(0x00ABED), RUNE_C(0x00ABED)}, - {RUNE_C(0x00FB1E), RUNE_C(0x00FB1E)}, - {RUNE_C(0x00FBB2), RUNE_C(0x00FBC2)}, - {RUNE_C(0x00FE00), RUNE_C(0x00FE0F)}, - {RUNE_C(0x00FE13), RUNE_C(0x00FE13)}, - {RUNE_C(0x00FE20), RUNE_C(0x00FE2F)}, - {RUNE_C(0x00FE52), RUNE_C(0x00FE52)}, - {RUNE_C(0x00FE55), RUNE_C(0x00FE55)}, - {RUNE_C(0x00FEFF), RUNE_C(0x00FEFF)}, - {RUNE_C(0x00FF07), RUNE_C(0x00FF07)}, - {RUNE_C(0x00FF0E), RUNE_C(0x00FF0E)}, - {RUNE_C(0x00FF1A), RUNE_C(0x00FF1A)}, - {RUNE_C(0x00FF3E), RUNE_C(0x00FF3E)}, - {RUNE_C(0x00FF40), RUNE_C(0x00FF40)}, - {RUNE_C(0x00FF70), RUNE_C(0x00FF70)}, - {RUNE_C(0x00FF9E), RUNE_C(0x00FF9F)}, - {RUNE_C(0x00FFE3), RUNE_C(0x00FFE3)}, - {RUNE_C(0x00FFF9), RUNE_C(0x00FFFB)}, - {RUNE_C(0x0101FD), RUNE_C(0x0101FD)}, - {RUNE_C(0x0102E0), RUNE_C(0x0102E0)}, - {RUNE_C(0x010376), RUNE_C(0x01037A)}, - {RUNE_C(0x010780), RUNE_C(0x010785)}, - {RUNE_C(0x010787), RUNE_C(0x0107B0)}, - {RUNE_C(0x0107B2), RUNE_C(0x0107BA)}, - {RUNE_C(0x010A01), RUNE_C(0x010A03)}, - {RUNE_C(0x010A05), RUNE_C(0x010A06)}, - {RUNE_C(0x010A0C), RUNE_C(0x010A0F)}, - {RUNE_C(0x010A38), RUNE_C(0x010A3A)}, - {RUNE_C(0x010A3F), RUNE_C(0x010A3F)}, - {RUNE_C(0x010AE5), RUNE_C(0x010AE6)}, - {RUNE_C(0x010D24), RUNE_C(0x010D27)}, - {RUNE_C(0x010EAB), RUNE_C(0x010EAC)}, - {RUNE_C(0x010EFD), RUNE_C(0x010EFF)}, - {RUNE_C(0x010F46), RUNE_C(0x010F50)}, - {RUNE_C(0x010F82), RUNE_C(0x010F85)}, - {RUNE_C(0x011001), RUNE_C(0x011001)}, - {RUNE_C(0x011038), RUNE_C(0x011046)}, - {RUNE_C(0x011070), RUNE_C(0x011070)}, - {RUNE_C(0x011073), RUNE_C(0x011074)}, - {RUNE_C(0x01107F), RUNE_C(0x011081)}, - {RUNE_C(0x0110B3), RUNE_C(0x0110B6)}, - {RUNE_C(0x0110B9), RUNE_C(0x0110BA)}, - {RUNE_C(0x0110BD), RUNE_C(0x0110BD)}, - {RUNE_C(0x0110C2), RUNE_C(0x0110C2)}, - {RUNE_C(0x0110CD), RUNE_C(0x0110CD)}, - {RUNE_C(0x011100), RUNE_C(0x011102)}, - {RUNE_C(0x011127), RUNE_C(0x01112B)}, - {RUNE_C(0x01112D), RUNE_C(0x011134)}, - {RUNE_C(0x011173), RUNE_C(0x011173)}, - {RUNE_C(0x011180), RUNE_C(0x011181)}, - {RUNE_C(0x0111B6), RUNE_C(0x0111BE)}, - {RUNE_C(0x0111C9), RUNE_C(0x0111CC)}, - {RUNE_C(0x0111CF), RUNE_C(0x0111CF)}, - {RUNE_C(0x01122F), RUNE_C(0x011231)}, - {RUNE_C(0x011234), RUNE_C(0x011234)}, - {RUNE_C(0x011236), RUNE_C(0x011237)}, - {RUNE_C(0x01123E), RUNE_C(0x01123E)}, - {RUNE_C(0x011241), RUNE_C(0x011241)}, - {RUNE_C(0x0112DF), RUNE_C(0x0112DF)}, - {RUNE_C(0x0112E3), RUNE_C(0x0112EA)}, - {RUNE_C(0x011300), RUNE_C(0x011301)}, - {RUNE_C(0x01133B), RUNE_C(0x01133C)}, - {RUNE_C(0x011340), RUNE_C(0x011340)}, - {RUNE_C(0x011366), RUNE_C(0x01136C)}, - {RUNE_C(0x011370), RUNE_C(0x011374)}, - {RUNE_C(0x011438), RUNE_C(0x01143F)}, - {RUNE_C(0x011442), RUNE_C(0x011444)}, - {RUNE_C(0x011446), RUNE_C(0x011446)}, - {RUNE_C(0x01145E), RUNE_C(0x01145E)}, - {RUNE_C(0x0114B3), RUNE_C(0x0114B8)}, - {RUNE_C(0x0114BA), RUNE_C(0x0114BA)}, - {RUNE_C(0x0114BF), RUNE_C(0x0114C0)}, - {RUNE_C(0x0114C2), RUNE_C(0x0114C3)}, - {RUNE_C(0x0115B2), RUNE_C(0x0115B5)}, - {RUNE_C(0x0115BC), RUNE_C(0x0115BD)}, - {RUNE_C(0x0115BF), RUNE_C(0x0115C0)}, - {RUNE_C(0x0115DC), RUNE_C(0x0115DD)}, - {RUNE_C(0x011633), RUNE_C(0x01163A)}, - {RUNE_C(0x01163D), RUNE_C(0x01163D)}, - {RUNE_C(0x01163F), RUNE_C(0x011640)}, - {RUNE_C(0x0116AB), RUNE_C(0x0116AB)}, - {RUNE_C(0x0116AD), RUNE_C(0x0116AD)}, - {RUNE_C(0x0116B0), RUNE_C(0x0116B5)}, - {RUNE_C(0x0116B7), RUNE_C(0x0116B7)}, - {RUNE_C(0x01171D), RUNE_C(0x01171F)}, - {RUNE_C(0x011722), RUNE_C(0x011725)}, - {RUNE_C(0x011727), RUNE_C(0x01172B)}, - {RUNE_C(0x01182F), RUNE_C(0x011837)}, - {RUNE_C(0x011839), RUNE_C(0x01183A)}, - {RUNE_C(0x01193B), RUNE_C(0x01193C)}, - {RUNE_C(0x01193E), RUNE_C(0x01193E)}, - {RUNE_C(0x011943), RUNE_C(0x011943)}, - {RUNE_C(0x0119D4), RUNE_C(0x0119D7)}, - {RUNE_C(0x0119DA), RUNE_C(0x0119DB)}, - {RUNE_C(0x0119E0), RUNE_C(0x0119E0)}, - {RUNE_C(0x011A01), RUNE_C(0x011A0A)}, - {RUNE_C(0x011A33), RUNE_C(0x011A38)}, - {RUNE_C(0x011A3B), RUNE_C(0x011A3E)}, - {RUNE_C(0x011A47), RUNE_C(0x011A47)}, - {RUNE_C(0x011A51), RUNE_C(0x011A56)}, - {RUNE_C(0x011A59), RUNE_C(0x011A5B)}, - {RUNE_C(0x011A8A), RUNE_C(0x011A96)}, - {RUNE_C(0x011A98), RUNE_C(0x011A99)}, - {RUNE_C(0x011C30), RUNE_C(0x011C36)}, - {RUNE_C(0x011C38), RUNE_C(0x011C3D)}, - {RUNE_C(0x011C3F), RUNE_C(0x011C3F)}, - {RUNE_C(0x011C92), RUNE_C(0x011CA7)}, - {RUNE_C(0x011CAA), RUNE_C(0x011CB0)}, - {RUNE_C(0x011CB2), RUNE_C(0x011CB3)}, - {RUNE_C(0x011CB5), RUNE_C(0x011CB6)}, - {RUNE_C(0x011D31), RUNE_C(0x011D36)}, - {RUNE_C(0x011D3A), RUNE_C(0x011D3A)}, - {RUNE_C(0x011D3C), RUNE_C(0x011D3D)}, - {RUNE_C(0x011D3F), RUNE_C(0x011D45)}, - {RUNE_C(0x011D47), RUNE_C(0x011D47)}, - {RUNE_C(0x011D90), RUNE_C(0x011D91)}, - {RUNE_C(0x011D95), RUNE_C(0x011D95)}, - {RUNE_C(0x011D97), RUNE_C(0x011D97)}, - {RUNE_C(0x011EF3), RUNE_C(0x011EF4)}, - {RUNE_C(0x011F00), RUNE_C(0x011F01)}, - {RUNE_C(0x011F36), RUNE_C(0x011F3A)}, - {RUNE_C(0x011F40), RUNE_C(0x011F40)}, - {RUNE_C(0x011F42), RUNE_C(0x011F42)}, - {RUNE_C(0x013430), RUNE_C(0x013440)}, - {RUNE_C(0x013447), RUNE_C(0x013455)}, - {RUNE_C(0x016AF0), RUNE_C(0x016AF4)}, - {RUNE_C(0x016B30), RUNE_C(0x016B36)}, - {RUNE_C(0x016B40), RUNE_C(0x016B43)}, - {RUNE_C(0x016F4F), RUNE_C(0x016F4F)}, - {RUNE_C(0x016F8F), RUNE_C(0x016F9F)}, - {RUNE_C(0x016FE0), RUNE_C(0x016FE1)}, - {RUNE_C(0x016FE3), RUNE_C(0x016FE4)}, - {RUNE_C(0x01AFF0), RUNE_C(0x01AFF3)}, - {RUNE_C(0x01AFF5), RUNE_C(0x01AFFB)}, - {RUNE_C(0x01AFFD), RUNE_C(0x01AFFE)}, - {RUNE_C(0x01BC9D), RUNE_C(0x01BC9E)}, - {RUNE_C(0x01BCA0), RUNE_C(0x01BCA3)}, - {RUNE_C(0x01CF00), RUNE_C(0x01CF2D)}, - {RUNE_C(0x01CF30), RUNE_C(0x01CF46)}, - {RUNE_C(0x01D167), RUNE_C(0x01D169)}, - {RUNE_C(0x01D173), RUNE_C(0x01D182)}, - {RUNE_C(0x01D185), RUNE_C(0x01D18B)}, - {RUNE_C(0x01D1AA), RUNE_C(0x01D1AD)}, - {RUNE_C(0x01D242), RUNE_C(0x01D244)}, - {RUNE_C(0x01DA00), RUNE_C(0x01DA36)}, - {RUNE_C(0x01DA3B), RUNE_C(0x01DA6C)}, - {RUNE_C(0x01DA75), RUNE_C(0x01DA75)}, - {RUNE_C(0x01DA84), RUNE_C(0x01DA84)}, - {RUNE_C(0x01DA9B), RUNE_C(0x01DA9F)}, - {RUNE_C(0x01DAA1), RUNE_C(0x01DAAF)}, - {RUNE_C(0x01E000), RUNE_C(0x01E006)}, - {RUNE_C(0x01E008), RUNE_C(0x01E018)}, - {RUNE_C(0x01E01B), RUNE_C(0x01E021)}, - {RUNE_C(0x01E023), RUNE_C(0x01E024)}, - {RUNE_C(0x01E026), RUNE_C(0x01E02A)}, - {RUNE_C(0x01E030), RUNE_C(0x01E06D)}, - {RUNE_C(0x01E08F), RUNE_C(0x01E08F)}, - {RUNE_C(0x01E130), RUNE_C(0x01E13D)}, - {RUNE_C(0x01E2AE), RUNE_C(0x01E2AE)}, - {RUNE_C(0x01E2EC), RUNE_C(0x01E2EF)}, - {RUNE_C(0x01E4EB), RUNE_C(0x01E4EF)}, - {RUNE_C(0x01E8D0), RUNE_C(0x01E8D6)}, - {RUNE_C(0x01E944), RUNE_C(0x01E94B)}, - {RUNE_C(0x01F3FB), RUNE_C(0x01F3FF)}, - {RUNE_C(0x0E0001), RUNE_C(0x0E0001)}, - {RUNE_C(0x0E0020), RUNE_C(0x0E007F)}, - {RUNE_C(0x0E0100), RUNE_C(0x0E01EF)}, +static constexpr unsigned char stage2[][16] = { + {0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x90, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, + {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x30, 0x04}, + {0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0xF8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, + 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00}, + {0x3F, 0x00, 0xFF, 0x17, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xF8, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xC0, 0xBF, 0xFF, 0x3D, 0x00, 0x00}, + {0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x24}, + {0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x01, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, + {0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, + 0xFE, 0x21, 0xFE, 0x00, 0x0C, 0x00, 0x02, 0x00}, + {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, + 0x1E, 0x20, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x40}, + {0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, + 0x86, 0x39, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00}, + {0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, + 0xBE, 0x21, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xFC}, + {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, + 0x1E, 0x20, 0x60, 0x00, 0x0C, 0x00, 0x00, 0x00}, + {0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, + 0xC1, 0x3D, 0x60, 0x00, 0x0C, 0x00, 0x00, 0x00}, + {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, + 0x40, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00}, + {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x1E, 0x20, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00}, + {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x07, + 0xC0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x1F, + 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xA0, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x7F}, + {0xDF, 0xE0, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x1F, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFD, 0x66, + 0x00, 0x00, 0x00, 0xC3, 0x01, 0x00, 0x1E, 0x00}, + {0x64, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x0C, 0x00, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x3F, + 0x40, 0xFE, 0x8F, 0x20, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x60, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x87, 0x01, 0x04, 0x0E, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x7F, 0xE5, 0x1F, 0xF8, 0x9F}, + {0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFF, 0xFF, + 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x17, + 0x04, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0F, 0x00}, + {0x03, 0x00, 0x00, 0x00, 0x3C, 0x3B, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0xA3, 0x03, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xCF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF7, 0xFF, 0xFD, 0x21, 0x10, 0x03}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x01}, + {0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, + 0x03, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x60}, + {0x00, 0xF8, 0x00, 0x03, 0x90, 0x7C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xDF, 0xFF, 0x02, 0x80}, + {0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x20, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x3E, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70}, + {0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F}, + {0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF7, 0xBF}, + {0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00}, + {0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00}, + {0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x03}, + {0x44, 0x08, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x80}, + {0x00, 0x00, 0x00, 0x00, 0xC0, 0x3F, 0x00, 0x00, + 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x33, + 0x00, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x66, 0x00, + 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0xC1, + 0x02, 0x00, 0x00, 0x20, 0x00, 0x30, 0x58, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF8, 0x00, 0x0E, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x21, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0xFF, 0xFF, 0x08, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80}, + {0x80, 0x40, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00}, + {0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x07}, + {0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x6E, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x80}, + {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x26, + 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x07, 0x00, 0x00, 0x00, 0x80, 0xEF, 0x1F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00}, + {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x7F, + 0x00, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xD3, 0x40, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0xF8, 0x07, 0x00, 0x00}, + {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x01, 0x00, 0x00, 0x00, 0xC0, 0x1F, 0x1F, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0x5C, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x85, + 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xB0, + 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xA7, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xBF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0xE0, 0xBC, 0x0F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF0, 0x0C, 0x01, 0x00, 0x00, 0x00}, + {0xFE, 0x07, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x79, + 0x80, 0x00, 0x7E, 0x0E, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0xFC, 0x7F, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xBF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFC, 0x6D, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xB4, + 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00}, + {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x07, + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x81, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x6F}, + {0x00, 0x00, 0x00, 0x60, 0x0F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, + 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0xF8, 0xFF}, + {0xE7, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF8, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x20, 0x00}, + {0x10, 0x00, 0x00, 0xF8, 0xFE, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x7F, 0xFF, 0xFF, 0xF9, 0xDB, 0x07, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00}, + {0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8}, + {0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, + {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, + {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00}, }; -_MLIB_DEFINE_BSEARCH_CONTAINS(lookup) - bool uprop_is_ci(rune ch) { - return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch); + return TESTBIT(stage2[stage1[ch / 128]], ch % 128); } -- cgit v1.2.3