From 93f22c78cde0e28365a0845e99ccd93cf706cbd3 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Tue, 30 Apr 2024 23:05:37 +0200 Subject: Add even more 2-stage lookup tables --- lib/unicode/prop/uprop_get_bmg.c | 1328 +++++++++++++++++++++++++------------- 1 file changed, 868 insertions(+), 460 deletions(-) (limited to 'lib/unicode/prop/uprop_get_bmg.c') diff --git a/lib/unicode/prop/uprop_get_bmg.c b/lib/unicode/prop/uprop_get_bmg.c index 2242f01..221ea06 100644 --- a/lib/unicode/prop/uprop_get_bmg.c +++ b/lib/unicode/prop/uprop_get_bmg.c @@ -1,472 +1,880 @@ /* This file is autogenerated by gen/prop/bmg; DO NOT EDIT. */ -#include "_bsearch.h" -#include "macros.h" -#include "rune.h" #include "unicode/prop.h" -static constexpr rune lookup_lat1[] = { - 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, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x29, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x3C, 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, 0x5D, 0x00, 0x5B, 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, 0x7D, 0x00, 0x7B, 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, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xBB, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xAB, 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, 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, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static constexpr uint8_t stage1[] = { + 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 5, 6, 2, 2, 7, 8, 9, 2, 2, 2, 2, 2, 2, 2, 10, 11, + 2, 2, 2, 12, 13, 14, 2, 15, 2, 2, 2, 2, 16, 2, 2, 2, + 17, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 18, 2, 19, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 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 k, v; -} lookup[] = { - {RUNE_C(0x000F3A), RUNE_C(0x000F3B)}, - {RUNE_C(0x000F3B), RUNE_C(0x000F3A)}, - {RUNE_C(0x000F3C), RUNE_C(0x000F3D)}, - {RUNE_C(0x000F3D), RUNE_C(0x000F3C)}, - {RUNE_C(0x00169B), RUNE_C(0x00169C)}, - {RUNE_C(0x00169C), RUNE_C(0x00169B)}, - {RUNE_C(0x002039), RUNE_C(0x00203A)}, - {RUNE_C(0x00203A), RUNE_C(0x002039)}, - {RUNE_C(0x002045), RUNE_C(0x002046)}, - {RUNE_C(0x002046), RUNE_C(0x002045)}, - {RUNE_C(0x00207D), RUNE_C(0x00207E)}, - {RUNE_C(0x00207E), RUNE_C(0x00207D)}, - {RUNE_C(0x00208D), RUNE_C(0x00208E)}, - {RUNE_C(0x00208E), RUNE_C(0x00208D)}, - {RUNE_C(0x002208), RUNE_C(0x00220B)}, - {RUNE_C(0x002209), RUNE_C(0x00220C)}, - {RUNE_C(0x00220A), RUNE_C(0x00220D)}, - {RUNE_C(0x00220B), RUNE_C(0x002208)}, - {RUNE_C(0x00220C), RUNE_C(0x002209)}, - {RUNE_C(0x00220D), RUNE_C(0x00220A)}, - {RUNE_C(0x002215), RUNE_C(0x0029F5)}, - {RUNE_C(0x00221F), RUNE_C(0x002BFE)}, - {RUNE_C(0x002220), RUNE_C(0x0029A3)}, - {RUNE_C(0x002221), RUNE_C(0x00299B)}, - {RUNE_C(0x002222), RUNE_C(0x0029A0)}, - {RUNE_C(0x002224), RUNE_C(0x002AEE)}, - {RUNE_C(0x00223C), RUNE_C(0x00223D)}, - {RUNE_C(0x00223D), RUNE_C(0x00223C)}, - {RUNE_C(0x002243), RUNE_C(0x0022CD)}, - {RUNE_C(0x002245), RUNE_C(0x00224C)}, - {RUNE_C(0x00224C), RUNE_C(0x002245)}, - {RUNE_C(0x002252), RUNE_C(0x002253)}, - {RUNE_C(0x002253), RUNE_C(0x002252)}, - {RUNE_C(0x002254), RUNE_C(0x002255)}, - {RUNE_C(0x002255), RUNE_C(0x002254)}, - {RUNE_C(0x002264), RUNE_C(0x002265)}, - {RUNE_C(0x002265), RUNE_C(0x002264)}, - {RUNE_C(0x002266), RUNE_C(0x002267)}, - {RUNE_C(0x002267), RUNE_C(0x002266)}, - {RUNE_C(0x002268), RUNE_C(0x002269)}, - {RUNE_C(0x002269), RUNE_C(0x002268)}, - {RUNE_C(0x00226A), RUNE_C(0x00226B)}, - {RUNE_C(0x00226B), RUNE_C(0x00226A)}, - {RUNE_C(0x00226E), RUNE_C(0x00226F)}, - {RUNE_C(0x00226F), RUNE_C(0x00226E)}, - {RUNE_C(0x002270), RUNE_C(0x002271)}, - {RUNE_C(0x002271), RUNE_C(0x002270)}, - {RUNE_C(0x002272), RUNE_C(0x002273)}, - {RUNE_C(0x002273), RUNE_C(0x002272)}, - {RUNE_C(0x002274), RUNE_C(0x002275)}, - {RUNE_C(0x002275), RUNE_C(0x002274)}, - {RUNE_C(0x002276), RUNE_C(0x002277)}, - {RUNE_C(0x002277), RUNE_C(0x002276)}, - {RUNE_C(0x002278), RUNE_C(0x002279)}, - {RUNE_C(0x002279), RUNE_C(0x002278)}, - {RUNE_C(0x00227A), RUNE_C(0x00227B)}, - {RUNE_C(0x00227B), RUNE_C(0x00227A)}, - {RUNE_C(0x00227C), RUNE_C(0x00227D)}, - {RUNE_C(0x00227D), RUNE_C(0x00227C)}, - {RUNE_C(0x00227E), RUNE_C(0x00227F)}, - {RUNE_C(0x00227F), RUNE_C(0x00227E)}, - {RUNE_C(0x002280), RUNE_C(0x002281)}, - {RUNE_C(0x002281), RUNE_C(0x002280)}, - {RUNE_C(0x002282), RUNE_C(0x002283)}, - {RUNE_C(0x002283), RUNE_C(0x002282)}, - {RUNE_C(0x002284), RUNE_C(0x002285)}, - {RUNE_C(0x002285), RUNE_C(0x002284)}, - {RUNE_C(0x002286), RUNE_C(0x002287)}, - {RUNE_C(0x002287), RUNE_C(0x002286)}, - {RUNE_C(0x002288), RUNE_C(0x002289)}, - {RUNE_C(0x002289), RUNE_C(0x002288)}, - {RUNE_C(0x00228A), RUNE_C(0x00228B)}, - {RUNE_C(0x00228B), RUNE_C(0x00228A)}, - {RUNE_C(0x00228F), RUNE_C(0x002290)}, - {RUNE_C(0x002290), RUNE_C(0x00228F)}, - {RUNE_C(0x002291), RUNE_C(0x002292)}, - {RUNE_C(0x002292), RUNE_C(0x002291)}, - {RUNE_C(0x002298), RUNE_C(0x0029B8)}, - {RUNE_C(0x0022A2), RUNE_C(0x0022A3)}, - {RUNE_C(0x0022A3), RUNE_C(0x0022A2)}, - {RUNE_C(0x0022A6), RUNE_C(0x002ADE)}, - {RUNE_C(0x0022A8), RUNE_C(0x002AE4)}, - {RUNE_C(0x0022A9), RUNE_C(0x002AE3)}, - {RUNE_C(0x0022AB), RUNE_C(0x002AE5)}, - {RUNE_C(0x0022B0), RUNE_C(0x0022B1)}, - {RUNE_C(0x0022B1), RUNE_C(0x0022B0)}, - {RUNE_C(0x0022B2), RUNE_C(0x0022B3)}, - {RUNE_C(0x0022B3), RUNE_C(0x0022B2)}, - {RUNE_C(0x0022B4), RUNE_C(0x0022B5)}, - {RUNE_C(0x0022B5), RUNE_C(0x0022B4)}, - {RUNE_C(0x0022B6), RUNE_C(0x0022B7)}, - {RUNE_C(0x0022B7), RUNE_C(0x0022B6)}, - {RUNE_C(0x0022B8), RUNE_C(0x0027DC)}, - {RUNE_C(0x0022C9), RUNE_C(0x0022CA)}, - {RUNE_C(0x0022CA), RUNE_C(0x0022C9)}, - {RUNE_C(0x0022CB), RUNE_C(0x0022CC)}, - {RUNE_C(0x0022CC), RUNE_C(0x0022CB)}, - {RUNE_C(0x0022CD), RUNE_C(0x002243)}, - {RUNE_C(0x0022D0), RUNE_C(0x0022D1)}, - {RUNE_C(0x0022D1), RUNE_C(0x0022D0)}, - {RUNE_C(0x0022D6), RUNE_C(0x0022D7)}, - {RUNE_C(0x0022D7), RUNE_C(0x0022D6)}, - {RUNE_C(0x0022D8), RUNE_C(0x0022D9)}, - {RUNE_C(0x0022D9), RUNE_C(0x0022D8)}, - {RUNE_C(0x0022DA), RUNE_C(0x0022DB)}, - {RUNE_C(0x0022DB), RUNE_C(0x0022DA)}, - {RUNE_C(0x0022DC), RUNE_C(0x0022DD)}, - {RUNE_C(0x0022DD), RUNE_C(0x0022DC)}, - {RUNE_C(0x0022DE), RUNE_C(0x0022DF)}, - {RUNE_C(0x0022DF), RUNE_C(0x0022DE)}, - {RUNE_C(0x0022E0), RUNE_C(0x0022E1)}, - {RUNE_C(0x0022E1), RUNE_C(0x0022E0)}, - {RUNE_C(0x0022E2), RUNE_C(0x0022E3)}, - {RUNE_C(0x0022E3), RUNE_C(0x0022E2)}, - {RUNE_C(0x0022E4), RUNE_C(0x0022E5)}, - {RUNE_C(0x0022E5), RUNE_C(0x0022E4)}, - {RUNE_C(0x0022E6), RUNE_C(0x0022E7)}, - {RUNE_C(0x0022E7), RUNE_C(0x0022E6)}, - {RUNE_C(0x0022E8), RUNE_C(0x0022E9)}, - {RUNE_C(0x0022E9), RUNE_C(0x0022E8)}, - {RUNE_C(0x0022EA), RUNE_C(0x0022EB)}, - {RUNE_C(0x0022EB), RUNE_C(0x0022EA)}, - {RUNE_C(0x0022EC), RUNE_C(0x0022ED)}, - {RUNE_C(0x0022ED), RUNE_C(0x0022EC)}, - {RUNE_C(0x0022F0), RUNE_C(0x0022F1)}, - {RUNE_C(0x0022F1), RUNE_C(0x0022F0)}, - {RUNE_C(0x0022F2), RUNE_C(0x0022FA)}, - {RUNE_C(0x0022F3), RUNE_C(0x0022FB)}, - {RUNE_C(0x0022F4), RUNE_C(0x0022FC)}, - {RUNE_C(0x0022F6), RUNE_C(0x0022FD)}, - {RUNE_C(0x0022F7), RUNE_C(0x0022FE)}, - {RUNE_C(0x0022FA), RUNE_C(0x0022F2)}, - {RUNE_C(0x0022FB), RUNE_C(0x0022F3)}, - {RUNE_C(0x0022FC), RUNE_C(0x0022F4)}, - {RUNE_C(0x0022FD), RUNE_C(0x0022F6)}, - {RUNE_C(0x0022FE), RUNE_C(0x0022F7)}, - {RUNE_C(0x002308), RUNE_C(0x002309)}, - {RUNE_C(0x002309), RUNE_C(0x002308)}, - {RUNE_C(0x00230A), RUNE_C(0x00230B)}, - {RUNE_C(0x00230B), RUNE_C(0x00230A)}, - {RUNE_C(0x002329), RUNE_C(0x00232A)}, - {RUNE_C(0x00232A), RUNE_C(0x002329)}, - {RUNE_C(0x002768), RUNE_C(0x002769)}, - {RUNE_C(0x002769), RUNE_C(0x002768)}, - {RUNE_C(0x00276A), RUNE_C(0x00276B)}, - {RUNE_C(0x00276B), RUNE_C(0x00276A)}, - {RUNE_C(0x00276C), RUNE_C(0x00276D)}, - {RUNE_C(0x00276D), RUNE_C(0x00276C)}, - {RUNE_C(0x00276E), RUNE_C(0x00276F)}, - {RUNE_C(0x00276F), RUNE_C(0x00276E)}, - {RUNE_C(0x002770), RUNE_C(0x002771)}, - {RUNE_C(0x002771), RUNE_C(0x002770)}, - {RUNE_C(0x002772), RUNE_C(0x002773)}, - {RUNE_C(0x002773), RUNE_C(0x002772)}, - {RUNE_C(0x002774), RUNE_C(0x002775)}, - {RUNE_C(0x002775), RUNE_C(0x002774)}, - {RUNE_C(0x0027C3), RUNE_C(0x0027C4)}, - {RUNE_C(0x0027C4), RUNE_C(0x0027C3)}, - {RUNE_C(0x0027C5), RUNE_C(0x0027C6)}, - {RUNE_C(0x0027C6), RUNE_C(0x0027C5)}, - {RUNE_C(0x0027C8), RUNE_C(0x0027C9)}, - {RUNE_C(0x0027C9), RUNE_C(0x0027C8)}, - {RUNE_C(0x0027CB), RUNE_C(0x0027CD)}, - {RUNE_C(0x0027CD), RUNE_C(0x0027CB)}, - {RUNE_C(0x0027D5), RUNE_C(0x0027D6)}, - {RUNE_C(0x0027D6), RUNE_C(0x0027D5)}, - {RUNE_C(0x0027DC), RUNE_C(0x0022B8)}, - {RUNE_C(0x0027DD), RUNE_C(0x0027DE)}, - {RUNE_C(0x0027DE), RUNE_C(0x0027DD)}, - {RUNE_C(0x0027E2), RUNE_C(0x0027E3)}, - {RUNE_C(0x0027E3), RUNE_C(0x0027E2)}, - {RUNE_C(0x0027E4), RUNE_C(0x0027E5)}, - {RUNE_C(0x0027E5), RUNE_C(0x0027E4)}, - {RUNE_C(0x0027E6), RUNE_C(0x0027E7)}, - {RUNE_C(0x0027E7), RUNE_C(0x0027E6)}, - {RUNE_C(0x0027E8), RUNE_C(0x0027E9)}, - {RUNE_C(0x0027E9), RUNE_C(0x0027E8)}, - {RUNE_C(0x0027EA), RUNE_C(0x0027EB)}, - {RUNE_C(0x0027EB), RUNE_C(0x0027EA)}, - {RUNE_C(0x0027EC), RUNE_C(0x0027ED)}, - {RUNE_C(0x0027ED), RUNE_C(0x0027EC)}, - {RUNE_C(0x0027EE), RUNE_C(0x0027EF)}, - {RUNE_C(0x0027EF), RUNE_C(0x0027EE)}, - {RUNE_C(0x002983), RUNE_C(0x002984)}, - {RUNE_C(0x002984), RUNE_C(0x002983)}, - {RUNE_C(0x002985), RUNE_C(0x002986)}, - {RUNE_C(0x002986), RUNE_C(0x002985)}, - {RUNE_C(0x002987), RUNE_C(0x002988)}, - {RUNE_C(0x002988), RUNE_C(0x002987)}, - {RUNE_C(0x002989), RUNE_C(0x00298A)}, - {RUNE_C(0x00298A), RUNE_C(0x002989)}, - {RUNE_C(0x00298B), RUNE_C(0x00298C)}, - {RUNE_C(0x00298C), RUNE_C(0x00298B)}, - {RUNE_C(0x00298D), RUNE_C(0x002990)}, - {RUNE_C(0x00298E), RUNE_C(0x00298F)}, - {RUNE_C(0x00298F), RUNE_C(0x00298E)}, - {RUNE_C(0x002990), RUNE_C(0x00298D)}, - {RUNE_C(0x002991), RUNE_C(0x002992)}, - {RUNE_C(0x002992), RUNE_C(0x002991)}, - {RUNE_C(0x002993), RUNE_C(0x002994)}, - {RUNE_C(0x002994), RUNE_C(0x002993)}, - {RUNE_C(0x002995), RUNE_C(0x002996)}, - {RUNE_C(0x002996), RUNE_C(0x002995)}, - {RUNE_C(0x002997), RUNE_C(0x002998)}, - {RUNE_C(0x002998), RUNE_C(0x002997)}, - {RUNE_C(0x00299B), RUNE_C(0x002221)}, - {RUNE_C(0x0029A0), RUNE_C(0x002222)}, - {RUNE_C(0x0029A3), RUNE_C(0x002220)}, - {RUNE_C(0x0029A4), RUNE_C(0x0029A5)}, - {RUNE_C(0x0029A5), RUNE_C(0x0029A4)}, - {RUNE_C(0x0029A8), RUNE_C(0x0029A9)}, - {RUNE_C(0x0029A9), RUNE_C(0x0029A8)}, - {RUNE_C(0x0029AA), RUNE_C(0x0029AB)}, - {RUNE_C(0x0029AB), RUNE_C(0x0029AA)}, - {RUNE_C(0x0029AC), RUNE_C(0x0029AD)}, - {RUNE_C(0x0029AD), RUNE_C(0x0029AC)}, - {RUNE_C(0x0029AE), RUNE_C(0x0029AF)}, - {RUNE_C(0x0029AF), RUNE_C(0x0029AE)}, - {RUNE_C(0x0029B8), RUNE_C(0x002298)}, - {RUNE_C(0x0029C0), RUNE_C(0x0029C1)}, - {RUNE_C(0x0029C1), RUNE_C(0x0029C0)}, - {RUNE_C(0x0029C4), RUNE_C(0x0029C5)}, - {RUNE_C(0x0029C5), RUNE_C(0x0029C4)}, - {RUNE_C(0x0029CF), RUNE_C(0x0029D0)}, - {RUNE_C(0x0029D0), RUNE_C(0x0029CF)}, - {RUNE_C(0x0029D1), RUNE_C(0x0029D2)}, - {RUNE_C(0x0029D2), RUNE_C(0x0029D1)}, - {RUNE_C(0x0029D4), RUNE_C(0x0029D5)}, - {RUNE_C(0x0029D5), RUNE_C(0x0029D4)}, - {RUNE_C(0x0029D8), RUNE_C(0x0029D9)}, - {RUNE_C(0x0029D9), RUNE_C(0x0029D8)}, - {RUNE_C(0x0029DA), RUNE_C(0x0029DB)}, - {RUNE_C(0x0029DB), RUNE_C(0x0029DA)}, - {RUNE_C(0x0029E8), RUNE_C(0x0029E9)}, - {RUNE_C(0x0029E9), RUNE_C(0x0029E8)}, - {RUNE_C(0x0029F5), RUNE_C(0x002215)}, - {RUNE_C(0x0029F8), RUNE_C(0x0029F9)}, - {RUNE_C(0x0029F9), RUNE_C(0x0029F8)}, - {RUNE_C(0x0029FC), RUNE_C(0x0029FD)}, - {RUNE_C(0x0029FD), RUNE_C(0x0029FC)}, - {RUNE_C(0x002A2B), RUNE_C(0x002A2C)}, - {RUNE_C(0x002A2C), RUNE_C(0x002A2B)}, - {RUNE_C(0x002A2D), RUNE_C(0x002A2E)}, - {RUNE_C(0x002A2E), RUNE_C(0x002A2D)}, - {RUNE_C(0x002A34), RUNE_C(0x002A35)}, - {RUNE_C(0x002A35), RUNE_C(0x002A34)}, - {RUNE_C(0x002A3C), RUNE_C(0x002A3D)}, - {RUNE_C(0x002A3D), RUNE_C(0x002A3C)}, - {RUNE_C(0x002A64), RUNE_C(0x002A65)}, - {RUNE_C(0x002A65), RUNE_C(0x002A64)}, - {RUNE_C(0x002A79), RUNE_C(0x002A7A)}, - {RUNE_C(0x002A7A), RUNE_C(0x002A79)}, - {RUNE_C(0x002A7B), RUNE_C(0x002A7C)}, - {RUNE_C(0x002A7C), RUNE_C(0x002A7B)}, - {RUNE_C(0x002A7D), RUNE_C(0x002A7E)}, - {RUNE_C(0x002A7E), RUNE_C(0x002A7D)}, - {RUNE_C(0x002A7F), RUNE_C(0x002A80)}, - {RUNE_C(0x002A80), RUNE_C(0x002A7F)}, - {RUNE_C(0x002A81), RUNE_C(0x002A82)}, - {RUNE_C(0x002A82), RUNE_C(0x002A81)}, - {RUNE_C(0x002A83), RUNE_C(0x002A84)}, - {RUNE_C(0x002A84), RUNE_C(0x002A83)}, - {RUNE_C(0x002A85), RUNE_C(0x002A86)}, - {RUNE_C(0x002A86), RUNE_C(0x002A85)}, - {RUNE_C(0x002A87), RUNE_C(0x002A88)}, - {RUNE_C(0x002A88), RUNE_C(0x002A87)}, - {RUNE_C(0x002A89), RUNE_C(0x002A8A)}, - {RUNE_C(0x002A8A), RUNE_C(0x002A89)}, - {RUNE_C(0x002A8B), RUNE_C(0x002A8C)}, - {RUNE_C(0x002A8C), RUNE_C(0x002A8B)}, - {RUNE_C(0x002A8D), RUNE_C(0x002A8E)}, - {RUNE_C(0x002A8E), RUNE_C(0x002A8D)}, - {RUNE_C(0x002A8F), RUNE_C(0x002A90)}, - {RUNE_C(0x002A90), RUNE_C(0x002A8F)}, - {RUNE_C(0x002A91), RUNE_C(0x002A92)}, - {RUNE_C(0x002A92), RUNE_C(0x002A91)}, - {RUNE_C(0x002A93), RUNE_C(0x002A94)}, - {RUNE_C(0x002A94), RUNE_C(0x002A93)}, - {RUNE_C(0x002A95), RUNE_C(0x002A96)}, - {RUNE_C(0x002A96), RUNE_C(0x002A95)}, - {RUNE_C(0x002A97), RUNE_C(0x002A98)}, - {RUNE_C(0x002A98), RUNE_C(0x002A97)}, - {RUNE_C(0x002A99), RUNE_C(0x002A9A)}, - {RUNE_C(0x002A9A), RUNE_C(0x002A99)}, - {RUNE_C(0x002A9B), RUNE_C(0x002A9C)}, - {RUNE_C(0x002A9C), RUNE_C(0x002A9B)}, - {RUNE_C(0x002A9D), RUNE_C(0x002A9E)}, - {RUNE_C(0x002A9E), RUNE_C(0x002A9D)}, - {RUNE_C(0x002A9F), RUNE_C(0x002AA0)}, - {RUNE_C(0x002AA0), RUNE_C(0x002A9F)}, - {RUNE_C(0x002AA1), RUNE_C(0x002AA2)}, - {RUNE_C(0x002AA2), RUNE_C(0x002AA1)}, - {RUNE_C(0x002AA6), RUNE_C(0x002AA7)}, - {RUNE_C(0x002AA7), RUNE_C(0x002AA6)}, - {RUNE_C(0x002AA8), RUNE_C(0x002AA9)}, - {RUNE_C(0x002AA9), RUNE_C(0x002AA8)}, - {RUNE_C(0x002AAA), RUNE_C(0x002AAB)}, - {RUNE_C(0x002AAB), RUNE_C(0x002AAA)}, - {RUNE_C(0x002AAC), RUNE_C(0x002AAD)}, - {RUNE_C(0x002AAD), RUNE_C(0x002AAC)}, - {RUNE_C(0x002AAF), RUNE_C(0x002AB0)}, - {RUNE_C(0x002AB0), RUNE_C(0x002AAF)}, - {RUNE_C(0x002AB1), RUNE_C(0x002AB2)}, - {RUNE_C(0x002AB2), RUNE_C(0x002AB1)}, - {RUNE_C(0x002AB3), RUNE_C(0x002AB4)}, - {RUNE_C(0x002AB4), RUNE_C(0x002AB3)}, - {RUNE_C(0x002AB5), RUNE_C(0x002AB6)}, - {RUNE_C(0x002AB6), RUNE_C(0x002AB5)}, - {RUNE_C(0x002AB7), RUNE_C(0x002AB8)}, - {RUNE_C(0x002AB8), RUNE_C(0x002AB7)}, - {RUNE_C(0x002AB9), RUNE_C(0x002ABA)}, - {RUNE_C(0x002ABA), RUNE_C(0x002AB9)}, - {RUNE_C(0x002ABB), RUNE_C(0x002ABC)}, - {RUNE_C(0x002ABC), RUNE_C(0x002ABB)}, - {RUNE_C(0x002ABD), RUNE_C(0x002ABE)}, - {RUNE_C(0x002ABE), RUNE_C(0x002ABD)}, - {RUNE_C(0x002ABF), RUNE_C(0x002AC0)}, - {RUNE_C(0x002AC0), RUNE_C(0x002ABF)}, - {RUNE_C(0x002AC1), RUNE_C(0x002AC2)}, - {RUNE_C(0x002AC2), RUNE_C(0x002AC1)}, - {RUNE_C(0x002AC3), RUNE_C(0x002AC4)}, - {RUNE_C(0x002AC4), RUNE_C(0x002AC3)}, - {RUNE_C(0x002AC5), RUNE_C(0x002AC6)}, - {RUNE_C(0x002AC6), RUNE_C(0x002AC5)}, - {RUNE_C(0x002AC7), RUNE_C(0x002AC8)}, - {RUNE_C(0x002AC8), RUNE_C(0x002AC7)}, - {RUNE_C(0x002AC9), RUNE_C(0x002ACA)}, - {RUNE_C(0x002ACA), RUNE_C(0x002AC9)}, - {RUNE_C(0x002ACB), RUNE_C(0x002ACC)}, - {RUNE_C(0x002ACC), RUNE_C(0x002ACB)}, - {RUNE_C(0x002ACD), RUNE_C(0x002ACE)}, - {RUNE_C(0x002ACE), RUNE_C(0x002ACD)}, - {RUNE_C(0x002ACF), RUNE_C(0x002AD0)}, - {RUNE_C(0x002AD0), RUNE_C(0x002ACF)}, - {RUNE_C(0x002AD1), RUNE_C(0x002AD2)}, - {RUNE_C(0x002AD2), RUNE_C(0x002AD1)}, - {RUNE_C(0x002AD3), RUNE_C(0x002AD4)}, - {RUNE_C(0x002AD4), RUNE_C(0x002AD3)}, - {RUNE_C(0x002AD5), RUNE_C(0x002AD6)}, - {RUNE_C(0x002AD6), RUNE_C(0x002AD5)}, - {RUNE_C(0x002ADE), RUNE_C(0x0022A6)}, - {RUNE_C(0x002AE3), RUNE_C(0x0022A9)}, - {RUNE_C(0x002AE4), RUNE_C(0x0022A8)}, - {RUNE_C(0x002AE5), RUNE_C(0x0022AB)}, - {RUNE_C(0x002AEC), RUNE_C(0x002AED)}, - {RUNE_C(0x002AED), RUNE_C(0x002AEC)}, - {RUNE_C(0x002AEE), RUNE_C(0x002224)}, - {RUNE_C(0x002AF7), RUNE_C(0x002AF8)}, - {RUNE_C(0x002AF8), RUNE_C(0x002AF7)}, - {RUNE_C(0x002AF9), RUNE_C(0x002AFA)}, - {RUNE_C(0x002AFA), RUNE_C(0x002AF9)}, - {RUNE_C(0x002BFE), RUNE_C(0x00221F)}, - {RUNE_C(0x002E02), RUNE_C(0x002E03)}, - {RUNE_C(0x002E03), RUNE_C(0x002E02)}, - {RUNE_C(0x002E04), RUNE_C(0x002E05)}, - {RUNE_C(0x002E05), RUNE_C(0x002E04)}, - {RUNE_C(0x002E09), RUNE_C(0x002E0A)}, - {RUNE_C(0x002E0A), RUNE_C(0x002E09)}, - {RUNE_C(0x002E0C), RUNE_C(0x002E0D)}, - {RUNE_C(0x002E0D), RUNE_C(0x002E0C)}, - {RUNE_C(0x002E1C), RUNE_C(0x002E1D)}, - {RUNE_C(0x002E1D), RUNE_C(0x002E1C)}, - {RUNE_C(0x002E20), RUNE_C(0x002E21)}, - {RUNE_C(0x002E21), RUNE_C(0x002E20)}, - {RUNE_C(0x002E22), RUNE_C(0x002E23)}, - {RUNE_C(0x002E23), RUNE_C(0x002E22)}, - {RUNE_C(0x002E24), RUNE_C(0x002E25)}, - {RUNE_C(0x002E25), RUNE_C(0x002E24)}, - {RUNE_C(0x002E26), RUNE_C(0x002E27)}, - {RUNE_C(0x002E27), RUNE_C(0x002E26)}, - {RUNE_C(0x002E28), RUNE_C(0x002E29)}, - {RUNE_C(0x002E29), RUNE_C(0x002E28)}, - {RUNE_C(0x002E55), RUNE_C(0x002E56)}, - {RUNE_C(0x002E56), RUNE_C(0x002E55)}, - {RUNE_C(0x002E57), RUNE_C(0x002E58)}, - {RUNE_C(0x002E58), RUNE_C(0x002E57)}, - {RUNE_C(0x002E59), RUNE_C(0x002E5A)}, - {RUNE_C(0x002E5A), RUNE_C(0x002E59)}, - {RUNE_C(0x002E5B), RUNE_C(0x002E5C)}, - {RUNE_C(0x002E5C), RUNE_C(0x002E5B)}, - {RUNE_C(0x003008), RUNE_C(0x003009)}, - {RUNE_C(0x003009), RUNE_C(0x003008)}, - {RUNE_C(0x00300A), RUNE_C(0x00300B)}, - {RUNE_C(0x00300B), RUNE_C(0x00300A)}, - {RUNE_C(0x00300C), RUNE_C(0x00300D)}, - {RUNE_C(0x00300D), RUNE_C(0x00300C)}, - {RUNE_C(0x00300E), RUNE_C(0x00300F)}, - {RUNE_C(0x00300F), RUNE_C(0x00300E)}, - {RUNE_C(0x003010), RUNE_C(0x003011)}, - {RUNE_C(0x003011), RUNE_C(0x003010)}, - {RUNE_C(0x003014), RUNE_C(0x003015)}, - {RUNE_C(0x003015), RUNE_C(0x003014)}, - {RUNE_C(0x003016), RUNE_C(0x003017)}, - {RUNE_C(0x003017), RUNE_C(0x003016)}, - {RUNE_C(0x003018), RUNE_C(0x003019)}, - {RUNE_C(0x003019), RUNE_C(0x003018)}, - {RUNE_C(0x00301A), RUNE_C(0x00301B)}, - {RUNE_C(0x00301B), RUNE_C(0x00301A)}, - {RUNE_C(0x00FE59), RUNE_C(0x00FE5A)}, - {RUNE_C(0x00FE5A), RUNE_C(0x00FE59)}, - {RUNE_C(0x00FE5B), RUNE_C(0x00FE5C)}, - {RUNE_C(0x00FE5C), RUNE_C(0x00FE5B)}, - {RUNE_C(0x00FE5D), RUNE_C(0x00FE5E)}, - {RUNE_C(0x00FE5E), RUNE_C(0x00FE5D)}, - {RUNE_C(0x00FE64), RUNE_C(0x00FE65)}, - {RUNE_C(0x00FE65), RUNE_C(0x00FE64)}, - {RUNE_C(0x00FF08), RUNE_C(0x00FF09)}, - {RUNE_C(0x00FF09), RUNE_C(0x00FF08)}, - {RUNE_C(0x00FF1C), RUNE_C(0x00FF1E)}, - {RUNE_C(0x00FF1E), RUNE_C(0x00FF1C)}, - {RUNE_C(0x00FF3B), RUNE_C(0x00FF3D)}, - {RUNE_C(0x00FF3D), RUNE_C(0x00FF3B)}, - {RUNE_C(0x00FF5B), RUNE_C(0x00FF5D)}, - {RUNE_C(0x00FF5D), RUNE_C(0x00FF5B)}, - {RUNE_C(0x00FF5F), RUNE_C(0x00FF60)}, - {RUNE_C(0x00FF60), RUNE_C(0x00FF5F)}, - {RUNE_C(0x00FF62), RUNE_C(0x00FF63)}, - {RUNE_C(0x00FF63), RUNE_C(0x00FF62)}, +static constexpr rune stage2[][128] = { + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + ')', '(', 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, '>', 0, '<', 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, ']', 0, '[', 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, '}', 0, '{', 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, U'»', 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, U'«', 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, U'༻', U'༺', U'༽', U'༼', 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, U'᚜', U'᚛', 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, U'›', U'‹', 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, U'⁆', U'⁅', 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, U'⁾', U'⁽', 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, U'₎', U'₍', 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + U'∋', U'∌', U'∍', U'∈', U'∉', U'∊', 0, 0, + 0, 0, 0, 0, 0, U'⧵', 0, 0, + 0, 0, 0, 0, 0, 0, 0, U'⯾', + U'⦣', U'⦛', U'⦠', 0, U'⫮', 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, U'∽', U'∼', 0, 0, + 0, 0, 0, U'⋍', 0, U'≌', 0, 0, + 0, 0, 0, 0, U'≅', 0, 0, 0, + 0, 0, U'≓', U'≒', U'≕', U'≔', 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, U'≥', U'≤', U'≧', U'≦', + U'≩', U'≨', U'≫', U'≪', 0, 0, U'≯', U'≮', + U'≱', U'≰', U'≳', U'≲', U'≵', U'≴', U'≷', U'≶', + U'≹', U'≸', U'≻', U'≺', U'≽', U'≼', U'≿', U'≾'}, + {U'⊁', U'⊀', U'⊃', U'⊂', U'⊅', U'⊄', U'⊇', U'⊆', + U'⊉', U'⊈', U'⊋', U'⊊', 0, 0, 0, U'⊐', + U'⊏', U'⊒', U'⊑', 0, 0, 0, 0, 0, + U'⦸', 0, 0, 0, 0, 0, 0, 0, + 0, 0, U'⊣', U'⊢', 0, 0, U'⫞', 0, + U'⫤', U'⫣', 0, U'⫥', 0, 0, 0, 0, + U'⊱', U'⊰', U'⊳', U'⊲', U'⊵', U'⊴', U'⊷', U'⊶', + U'⟜', 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, U'⋊', U'⋉', U'⋌', U'⋋', U'≃', 0, 0, + U'⋑', U'⋐', 0, 0, 0, 0, U'⋗', U'⋖', + U'⋙', U'⋘', U'⋛', U'⋚', U'⋝', U'⋜', U'⋟', U'⋞', + U'⋡', U'⋠', U'⋣', U'⋢', U'⋥', U'⋤', U'⋧', U'⋦', + U'⋩', U'⋨', U'⋫', U'⋪', U'⋭', U'⋬', 0, 0, + U'⋱', U'⋰', U'⋺', U'⋻', U'⋼', 0, U'⋽', U'⋾', + 0, 0, U'⋲', U'⋳', U'⋴', U'⋶', U'⋷', 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + U'⌉', U'⌈', U'⌋', U'⌊', 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, U'〉', U'〈', 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + U'❩', U'❨', U'❫', U'❪', U'❭', U'❬', U'❯', U'❮', + U'❱', U'❰', U'❳', U'❲', U'❵', U'❴', 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, U'⟄', U'⟃', U'⟆', U'⟅', 0, + U'⟉', U'⟈', 0, U'⟍', 0, U'⟋', 0, 0, + 0, 0, 0, 0, 0, U'⟖', U'⟕', 0, + 0, 0, 0, 0, U'⊸', U'⟞', U'⟝', 0, + 0, 0, U'⟣', U'⟢', U'⟥', U'⟤', U'⟧', U'⟦', + U'⟩', U'⟨', U'⟫', U'⟪', U'⟭', U'⟬', U'⟯', U'⟮', + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, U'⦄', U'⦃', U'⦆', U'⦅', U'⦈', + U'⦇', U'⦊', U'⦉', U'⦌', U'⦋', U'⦐', U'⦏', U'⦎', + U'⦍', U'⦒', U'⦑', U'⦔', U'⦓', U'⦖', U'⦕', U'⦘', + U'⦗', 0, 0, U'∡', 0, 0, 0, 0, + U'∢', 0, 0, U'∠', U'⦥', U'⦤', 0, 0, + U'⦩', U'⦨', U'⦫', U'⦪', U'⦭', U'⦬', U'⦯', U'⦮', + 0, 0, 0, 0, 0, 0, 0, 0, + U'⊘', 0, 0, 0, 0, 0, 0, 0, + U'⧁', U'⧀', 0, 0, U'⧅', U'⧄', 0, 0, + 0, 0, 0, 0, 0, 0, 0, U'⧐', + U'⧏', U'⧒', U'⧑', 0, U'⧕', U'⧔', 0, 0, + U'⧙', U'⧘', U'⧛', U'⧚', 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + U'⧩', U'⧨', 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, U'∕', 0, 0, + U'⧹', U'⧸', 0, 0, U'⧽', U'⧼', 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, U'⨬', U'⨫', U'⨮', U'⨭', 0, + 0, 0, 0, 0, U'⨵', U'⨴', 0, 0, + 0, 0, 0, 0, U'⨽', U'⨼', 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, U'⩥', U'⩤', 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, U'⩺', U'⩹', U'⩼', U'⩻', U'⩾', U'⩽', U'⪀'}, + {U'⩿', U'⪂', U'⪁', U'⪄', U'⪃', U'⪆', U'⪅', U'⪈', + U'⪇', U'⪊', U'⪉', U'⪌', U'⪋', U'⪎', U'⪍', U'⪐', + U'⪏', U'⪒', U'⪑', U'⪔', U'⪓', U'⪖', U'⪕', U'⪘', + U'⪗', U'⪚', U'⪙', U'⪜', U'⪛', U'⪞', U'⪝', U'⪠', + U'⪟', U'⪢', U'⪡', 0, 0, 0, U'⪧', U'⪦', + U'⪩', U'⪨', U'⪫', U'⪪', U'⪭', U'⪬', 0, U'⪰', + U'⪯', U'⪲', U'⪱', U'⪴', U'⪳', U'⪶', U'⪵', U'⪸', + U'⪷', U'⪺', U'⪹', U'⪼', U'⪻', U'⪾', U'⪽', U'⫀', + U'⪿', U'⫂', U'⫁', U'⫄', U'⫃', U'⫆', U'⫅', U'⫈', + U'⫇', U'⫊', U'⫉', U'⫌', U'⫋', U'⫎', U'⫍', U'⫐', + U'⫏', U'⫒', U'⫑', U'⫔', U'⫓', U'⫖', U'⫕', 0, + 0, 0, 0, 0, 0, 0, U'⊦', 0, + 0, 0, 0, U'⊩', U'⊨', U'⊫', 0, 0, + 0, 0, 0, 0, U'⫭', U'⫬', U'∤', 0, + 0, 0, 0, 0, 0, 0, 0, U'⫸', + U'⫷', U'⫺', U'⫹', 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, U'∟', 0}, + {0, 0, U'⸃', U'⸂', U'⸅', U'⸄', 0, 0, + 0, U'⸊', U'⸉', 0, U'⸍', U'⸌', 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, U'⸝', U'⸜', 0, 0, + U'⸡', U'⸠', U'⸣', U'⸢', U'⸥', U'⸤', U'⸧', U'⸦', + U'⸩', U'⸨', 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, U'⹖', U'⹕', U'⹘', + U'⹗', U'⹚', U'⹙', U'⹜', U'⹛', 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + U'〉', U'〈', U'》', U'《', U'」', U'「', U'』', U'『', + U'】', U'【', 0, 0, U'〕', U'〔', U'〗', U'〖', + U'〙', U'〘', U'〛', U'〚', 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, U'﹚', U'﹙', U'﹜', U'﹛', U'﹞', U'﹝', 0, + 0, 0, 0, 0, U'﹥', U'﹤', 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, + U')', U'(', 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, U'>', 0, U'<', 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, U']', 0, U'[', 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, U'}', 0, U'{', 0, U'⦆', + U'⦅', 0, U'」', U'「', 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0}, }; -_MLIB_DEFINE_BSEARCH_KV(rune, lookup, 0) - rune uprop_get_bmg(rune ch) { - return ch < lengthof(lookup_lat1) ? lookup_lat1[ch] : mlib_lookup_kv(ch); + rune hc = stage2[stage1[ch / 128]][ch % 128]; + return hc == 0 ? ch : hc; } -- cgit v1.2.3