ref: 3ed9ff527d835053ec068ab90b8ee373aa99e4f1
parent: 1fff9ac1ed55d980db14dcd9c57795b6c11154bd
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Thu Oct 24 22:26:24 EDT 2024
replace old plan 9 is*rune and to*rune with up to date logic from 9front
--- /dev/null
+++ b/3rd/utf/runeistype.c
@@ -1,0 +1,50 @@
+#include "platform.h"
+#include "runeistypedata"
+
+int
+isspacerune(Rune c)
+{
+ if(c > Runemax)
+ return 0;
+ return (mergedlkup(c) & Lspace) == Lspace;
+}
+
+int
+isalpharune(Rune c)
+{
+ if(c > Runemax)
+ return 0;
+ return (mergedlkup(c) & Lalpha) == Lalpha;
+}
+
+int
+isdigitrune(Rune c)
+{
+ if(c > Runemax)
+ return 0;
+ return (mergedlkup(c) & Ldigit) == Ldigit;
+}
+
+int
+isupperrune(Rune c)
+{
+ if(c > Runemax)
+ return 0;
+ return (mergedlkup(c) & Lupper) == Lupper;
+}
+
+int
+islowerrune(Rune c)
+{
+ if(c > Runemax)
+ return 0;
+ return (mergedlkup(c) & Llower) == Llower;
+}
+
+int
+istitlerune(Rune c)
+{
+ if(c > Runemax)
+ return 0;
+ return (mergedlkup(c) & Ltitle) == Ltitle;
+}
--- /dev/null
+++ b/3rd/utf/runeistypedata
@@ -1,0 +1,1126 @@
+static
+uchar _mergeddata[11769] =
+{
+ 0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,
+ 4,4,4,4,4,4,4,4,0,0,0,0,0,0,42,42,
+ 42,42,42,42,42,42,42,42,42,42,42,42,42,0,0,0,
+ 0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
+ 0,2,0,0,0,0,0,18,0,0,0,0,2,0,0,0,
+ 0,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,
+ 42,42,0,42,42,42,42,42,42,42,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,0,18,18,18,18,18,
+ 18,18,18,42,18,42,18,42,18,42,18,42,18,42,18,42,
+ 18,42,18,10,18,42,18,42,18,42,18,18,42,18,42,18,
+ 42,18,42,18,18,42,18,42,18,42,18,42,18,42,18,42,
+ 18,42,18,42,18,42,42,18,42,18,42,18,18,42,42,18,
+ 42,18,42,42,18,42,42,42,18,18,42,42,18,42,42,18,
+ 42,42,42,18,18,18,42,42,18,42,18,42,18,42,42,18,
+ 42,18,18,42,18,42,42,42,18,42,18,42,42,18,18,2,
+ 42,18,18,18,2,2,2,2,10,34,18,10,34,18,10,34,
+ 18,42,18,42,18,42,18,42,18,42,18,42,18,18,42,18,
+ 42,18,42,18,42,18,42,18,42,18,42,18,42,18,10,34,
+ 18,42,18,42,42,42,18,42,18,42,18,42,18,42,18,42,
+ 18,42,18,42,18,18,18,18,18,18,18,42,42,18,42,42,
+ 18,42,18,42,42,42,42,18,42,18,42,18,42,18,42,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,2,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 0,0,0,0,2,2,2,2,2,2,2,2,2,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+ 2,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,42,18,42,18,2,
+ 0,42,18,0,0,2,18,18,18,0,42,0,0,0,0,0,
+ 0,42,0,42,42,42,0,42,0,42,42,18,42,42,42,42,
+ 42,42,42,42,42,42,42,42,42,42,42,0,42,42,42,42,
+ 42,42,42,42,42,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,42,18,18,10,10,10,18,18,18,42,18,
+ 42,18,42,18,42,18,42,18,42,18,42,18,42,18,18,18,
+ 18,10,18,0,42,18,42,42,18,18,42,42,42,42,42,42,
+ 42,42,42,42,42,42,42,42,42,42,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,42,18,42,18,42,18,
+ 42,18,42,18,42,18,42,18,42,18,0,0,0,0,0,0,
+ 0,0,42,18,42,18,42,18,42,18,42,18,42,18,42,18,
+ 42,18,42,42,18,42,18,42,18,42,18,42,18,42,18,42,
+ 18,18,42,18,42,18,42,18,42,18,42,18,42,18,42,18,
+ 42,18,0,42,42,42,42,42,42,42,42,42,42,42,42,42,
+ 42,42,42,0,0,2,0,0,0,0,0,0,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+ 2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,0,
+ 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,0,2,0,0,0,0,0,0,0,0,0,0,2,2,0,
+ 0,0,0,0,0,0,2,2,4,4,4,4,4,4,4,4,
+ 4,4,2,2,2,0,0,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,2,0,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
+ 0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,4,4,4,4,4,4,4,4,4,4,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+ 0,0,2,2,0,0,0,0,2,0,0,0,0,0,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+ 0,0,2,0,0,0,0,0,2,0,0,0,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+ 0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,0,
+ 0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,0,2,2,2,2,2,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,0,0,0,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
+ 0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,0,
+ 0,0,0,4,4,4,4,4,4,4,4,4,4,0,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+ 0,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,0,
+ 2,0,0,0,2,2,2,2,0,0,0,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,2,2,0,2,2,0,0,0,0,
+ 4,4,4,4,4,4,4,4,4,4,2,2,0,0,0,0,
+ 0,0,0,0,0,0,2,0,0,0,0,0,2,2,2,2,
+ 2,2,0,0,0,0,2,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,0,2,2,2,2,2,2,0,2,2,
+ 0,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,2,2,2,2,0,2,0,0,0,0,
+ 0,0,4,4,4,4,4,4,4,4,4,4,0,0,2,2,
+ 2,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+ 2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,0,2,2,2,2,2,2,0,2,2,0,2,2,
+ 2,2,2,0,0,0,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,2,2,0,0,0,0,4,4,4,
+ 4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,
+ 2,0,0,0,0,0,0,2,2,2,2,2,2,2,2,0,
+ 0,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,
+ 2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,0,
+ 0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,2,2,0,2,2,0,0,0,0,4,4,4,4,4,
+ 4,4,4,4,4,0,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,2,0,2,2,2,2,2,2,0,0,0,
+ 2,2,0,2,2,2,2,0,0,0,2,2,0,2,0,2,
+ 2,0,0,0,2,2,0,0,0,2,2,2,0,0,0,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,
+ 4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,2,2,2,2,2,2,2,2,0,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,
+ 2,2,2,2,2,0,0,0,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,2,2,0,0,2,0,
+ 0,2,2,0,0,0,0,4,4,4,4,4,4,4,4,4,
+ 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,2,0,0,0,0,2,2,2,2,2,2,2,2,0,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,
+ 2,2,2,2,0,2,2,2,2,2,0,0,0,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+ 0,0,0,0,4,4,4,4,4,4,4,4,4,4,0,2,
+ 2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+ 2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,0,0,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,2,
+ 2,0,0,0,0,0,0,0,0,2,2,0,0,0,0,4,
+ 4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,
+ 0,0,0,2,2,2,2,2,2,2,2,2,2,2,0,0,
+ 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,0,2,2,2,2,2,2,2,2,2,0,2,0,0,2,
+ 2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,2,
+ 2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,4,
+ 4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,2,0,2,0,2,2,
+ 2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,0,2,0,2,2,2,2,2,2,2,2,2,
+ 0,2,2,0,0,0,0,0,0,0,0,0,2,0,0,2,
+ 2,2,2,2,0,2,0,0,0,0,0,0,0,0,0,4,
+ 4,4,4,4,4,4,4,4,4,0,0,2,2,2,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,
+ 2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,2,4,4,4,4,4,4,4,4,
+ 4,4,0,0,0,0,0,0,2,2,2,2,2,2,0,0,
+ 0,0,2,2,2,2,0,0,2,0,0,0,2,2,0,0,
+ 0,0,0,0,0,2,2,0,0,0,0,2,2,2,2,2,
+ 2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,2,0,4,4,4,4,4,4,4,4,4,4,0,0,
+ 0,0,0,0,42,42,42,42,42,42,42,42,42,42,42,42,
+ 42,42,42,42,0,42,0,0,0,0,0,42,0,0,50,50,
+ 50,50,50,50,50,50,50,50,50,50,50,50,50,50,0,2,
+ 50,50,50,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,0,2,2,2,2,0,0,2,2,2,2,2,2,
+ 2,0,2,0,2,2,2,2,0,0,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,0,
+ 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,0,2,2,2,2,0,0,2,2,2,2,2,2,2,0,
+ 2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,
+ 2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,42,42,42,42,42,42,42,42,42,42,
+ 42,42,42,42,42,42,0,0,18,18,18,18,18,18,0,0,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,0,0,0,0,0,2,2,2,2,
+ 2,2,2,2,0,0,0,0,0,0,0,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,2,0,0,0,0,2,0,0,0,4,4,4,4,
+ 4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,
+ 0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,0,0,0,0,0,0,0,2,2,2,
+ 2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,0,2,0,0,0,0,0,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+ 0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,
+ 0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,0,0,0,0,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+ 0,0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+ 0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,
+ 4,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,2,2,2,2,2,2,2,2,0,0,0,
+ 4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,2,2,4,4,4,4,4,4,4,
+ 4,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,0,
+ 2,2,2,4,4,4,4,4,4,4,4,4,4,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,18,
+ 18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,10,
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,
+ 0,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,2,2,2,2,0,2,2,0,0,0,2,0,
+ 0,0,0,0,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,18,18,18,18,18,18,18,18,2,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,42,18,42,
+ 18,42,18,42,18,42,18,42,18,42,18,42,18,18,18,18,
+ 18,18,18,18,18,10,18,42,18,42,18,42,18,42,18,42,
+ 18,42,18,42,18,42,18,18,18,18,18,18,18,18,42,42,
+ 42,42,42,42,42,42,18,18,18,18,18,18,0,0,42,42,
+ 42,42,42,42,0,0,18,18,18,18,18,18,18,18,42,42,
+ 42,42,42,42,42,42,18,18,18,18,18,18,0,0,42,42,
+ 42,42,42,42,0,0,18,18,18,18,18,18,18,18,0,42,
+ 0,42,0,42,0,42,18,18,18,18,18,18,18,18,42,42,
+ 42,42,42,42,42,42,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,0,0,18,18,18,18,18,18,18,18,42,42,
+ 42,42,42,42,42,42,18,18,18,18,18,0,18,18,42,42,
+ 42,42,42,0,18,0,0,18,18,18,0,18,18,42,42,42,
+ 42,42,0,0,0,18,18,18,18,0,0,18,18,42,42,42,
+ 42,0,0,0,0,18,18,18,18,18,18,18,18,42,42,42,
+ 42,42,0,0,0,18,18,18,0,18,18,42,42,42,42,42,
+ 0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
+ 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,10,0,0,0,0,10,0,0,18,10,10,10,18,
+ 18,10,10,10,18,0,10,0,0,0,10,10,10,10,10,0,
+ 0,0,0,10,0,10,0,10,0,10,10,10,10,0,18,10,
+ 10,42,10,18,2,2,2,2,18,0,0,18,18,10,10,0,
+ 0,0,0,0,10,18,18,18,18,0,0,0,0,18,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,40,
+ 40,40,40,40,40,40,40,40,40,40,40,40,40,40,16,16,
+ 16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,
+ 0,42,18,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,40,40,40,40,40,40,40,40,40,40,40,40,40,
+ 40,40,40,16,16,16,16,16,16,16,16,16,16,16,16,16,
+ 16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,42,42,42,42,42,42,42,42,42,42,42,42,42,
+ 42,42,42,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,42,18,42,42,42,18,18,42,18,42,18,42,18,
+ 42,42,42,18,42,18,18,42,18,18,18,18,18,18,2,2,
+ 42,42,18,42,18,42,18,42,18,42,18,42,18,42,18,42,
+ 18,18,0,0,0,0,0,0,42,18,42,18,0,0,42,18,
+ 0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,0,18,0,0,
+ 0,0,0,18,0,0,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,0,0,0,0,0,0,0,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+ 0,0,0,0,0,0,0,2,2,2,2,2,2,2,0,2,
+ 2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,1,0,0,0,0,2,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+ 2,2,2,0,0,0,0,0,2,2,0,0,0,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+ 0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,0,2,2,2,2,0,0,0,0,0,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,4,4,4,4,4,4,4,4,4,4,2,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,
+ 18,42,18,42,18,42,18,42,18,42,18,42,18,42,18,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
+ 42,18,42,18,42,18,42,18,42,18,42,18,42,18,42,18,
+ 2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,2,2,2,2,2,2,2,2,2,0,0,42,
+ 18,42,18,42,18,42,18,42,18,42,18,42,18,18,42,18,
+ 42,18,42,18,42,18,42,18,42,18,42,18,42,18,2,18,
+ 18,18,18,18,18,18,18,42,18,42,18,42,42,18,42,18,
+ 42,18,42,18,2,0,0,42,18,42,18,2,42,18,42,18,
+ 18,18,42,18,42,18,42,18,42,18,42,18,42,42,42,42,
+ 42,18,42,18,42,18,42,18,42,18,42,18,42,42,42,42,
+ 18,42,18,0,0,0,0,0,42,18,0,18,0,18,42,18,
+ 42,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,2,2,2,42,18,2,2,2,18,2,2,2,2,2,
+ 0,2,2,2,0,2,2,2,2,0,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 2,2,2,2,2,2,0,0,0,2,0,2,2,0,4,4,
+ 4,4,4,4,4,4,4,4,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+ 0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,2,4,4,4,4,4,4,4,4,4,4,
+ 0,0,0,0,0,0,2,2,2,2,2,0,2,2,2,2,
+ 2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,
+ 2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,2,2,2,0,2,2,2,2,2,2,
+ 2,2,0,0,0,0,4,4,4,4,4,4,4,4,4,4,
+ 0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,0,0,0,2,0,0,0,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,
+ 0,0,2,2,0,0,2,2,2,2,2,0,0,2,0,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+ 0,0,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+ 0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,
+ 2,2,2,2,2,2,0,0,2,2,2,2,2,2,0,0,
+ 0,0,0,0,0,0,0,2,2,2,2,2,2,2,0,2,
+ 2,2,2,2,2,2,0,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,0,2,2,2,2,18,18,18,18,
+ 18,18,18,18,18,2,0,0,0,0,0,0,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,
+ 4,4,4,0,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,
+ 18,18,0,0,0,0,0,0,0,0,0,18,18,18,18,18,
+ 0,0,0,0,0,2,0,2,2,2,2,2,2,2,2,2,
+ 0,2,2,2,2,2,2,2,0,2,2,2,2,2,0,2,
+ 0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,2,2,2,2,2,0,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,0,0,1,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,
+ 4,4,4,4,4,4,4,4,0,0,0,0,0,0,42,42,
+ 42,42,42,42,42,42,42,42,42,42,42,42,42,0,0,0,
+ 0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,0,
+ 0,2,2,2,2,2,2,0,0,2,2,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+ 2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,
+ 2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,0,0,0,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,
+ 0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,0,0,0,0,2,2,2,2,2,2,2,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,
+ 42,42,42,42,42,42,42,42,42,42,42,42,42,42,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+ 4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,
+ 42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,
+ 0,0,0,0,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,0,0,0,0,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,42,
+ 42,42,42,42,42,42,42,0,42,42,42,42,0,42,42,0,
+ 18,18,18,18,18,18,18,18,18,0,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,0,18,18,18,18,18,18,18,0,
+ 18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+ 0,0,0,0,0,2,2,2,2,2,2,2,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+ 2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,0,2,2,2,2,2,2,2,2,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+ 2,2,2,2,0,0,2,0,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,0,2,2,0,0,0,2,0,
+ 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+ 0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,0,2,2,0,0,0,0,0,0,0,0,0,
+ 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+ 0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,2,2,2,2,0,2,2,2,0,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
+ 2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+ 0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,42,42,42,42,42,42,42,
+ 42,42,42,42,42,42,42,42,42,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,4,
+ 4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 2,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,4,4,4,4,4,4,4,4,4,4,0,2,2,0,
+ 0,2,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+ 0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,0,
+ 0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,0,0,0,0,0,0,0,0,0,4,4,4,4,
+ 4,4,4,4,4,4,0,0,0,0,2,0,0,2,0,0,
+ 0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,0,0,0,2,0,0,0,0,0,0,
+ 0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,4,
+ 4,4,4,4,4,4,4,4,4,2,0,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,
+ 2,0,2,0,2,2,2,2,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,
+ 2,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,
+ 4,4,0,0,0,0,0,0,2,2,2,2,2,2,2,2,
+ 0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,0,
+ 2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,
+ 0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,0,0,0,0,0,0,0,0,0,0,0,2,2,
+ 2,2,0,0,0,0,0,4,4,4,4,4,4,4,4,4,
+ 4,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,2,2,0,2,0,0,0,0,
+ 0,0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+ 2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,2,0,0,0,0,0,0,0,0,0,0,0,4,4,
+ 4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+ 2,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,
+ 4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,4,4,4,4,4,4,4,4,4,4,0,0,0,0,
+ 0,0,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,42,42,42,42,42,42,42,
+ 42,42,42,42,42,42,42,42,42,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,4,4,4,4,4,4,4,
+ 4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,2,2,2,2,2,2,2,0,0,2,0,0,2,2,
+ 2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+ 2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,
+ 0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,0,0,0,0,0,0,0,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
+ 0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+ 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+ 2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,4,
+ 4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,2,
+ 2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 0,2,0,0,0,0,0,0,0,4,4,4,4,4,4,4,
+ 4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,4,4,4,4,4,4,4,4,4,4,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+ 2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,4,4,4,4,4,4,
+ 4,4,4,4,0,0,0,0,0,0,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,0,4,4,4,4,4,
+ 4,4,4,4,4,0,0,0,0,0,0,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,
+ 4,4,4,4,4,0,0,0,0,0,0,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,0,0,0,0,0,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,
+ 42,42,42,42,42,42,42,42,42,42,42,42,42,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,2,2,0,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+ 0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
+ 2,2,2,0,2,2,2,2,2,2,2,0,2,2,0,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+ 0,0,2,0,0,0,0,0,0,0,0,0,0,2,2,2,
+ 2,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+ 0,0,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,10,
+ 10,10,10,10,10,10,10,10,10,10,10,10,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,10,10,10,10,
+ 10,10,10,10,10,10,10,10,10,10,18,18,18,18,18,0,
+ 18,18,18,18,18,18,18,18,18,18,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,10,10,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,18,10,0,10,10,0,0,10,0,
+ 0,10,10,0,0,10,10,10,10,0,10,10,10,10,10,10,
+ 18,18,18,18,0,18,0,18,18,18,18,0,18,18,18,18,
+ 18,18,18,18,18,18,18,10,10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,10,10,0,10,10,10,10,0,0,
+ 10,10,10,10,10,0,10,10,10,10,10,10,10,0,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,18,10,10,
+ 0,10,10,10,10,0,10,10,10,10,10,0,10,0,0,0,
+ 10,10,10,10,10,10,0,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,10,10,10,10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,10,10,10,10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,10,10,10,10,10,10,10,10,10,10,10,
+ 10,10,10,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,10,10,10,10,10,10,10,10,10,10,10,10,10,
+ 10,10,10,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+ 10,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+ 10,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,0,0,10,10,10,10,10,10,10,10,10,10,10,10,10,
+ 10,10,10,0,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,0,18,18,18,18,10,10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,0,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,0,18,18,18,18,18,18,10,10,10,
+ 10,10,10,10,10,10,10,10,10,10,10,10,10,0,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,18,0,18,18,
+ 18,18,18,18,10,10,10,10,10,10,10,10,10,10,10,10,
+ 10,10,10,0,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,0,18,18,18,18,18,18,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,10,10,10,0,18,18,18,18,
+ 18,18,18,18,18,18,18,18,18,18,18,18,0,18,18,18,
+ 18,18,18,10,18,0,0,4,4,4,4,4,4,4,4,4,
+ 4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,
+ 18,2,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+ 18,0,0,0,0,0,18,18,18,18,18,18,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+ 0,0,0,2,2,2,2,2,2,2,0,0,4,4,4,4,
+ 4,4,4,4,4,4,0,0,0,0,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,4,
+ 4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,4,4,4,
+ 4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,2,2,2,2,2,2,2,0,2,
+ 2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,42,42,42,42,42,42,42,42,42,
+ 42,42,42,42,42,42,42,18,18,18,18,18,18,18,18,18,
+ 18,18,18,18,18,18,18,0,0,0,0,0,0,0,2,0,
+ 0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+ 2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,0,2,2,0,2,0,0,2,0,2,2,2,2,2,
+ 2,2,0,2,2,2,2,0,2,0,2,0,0,0,0,2,
+ 0,0,0,0,2,0,2,0,2,0,2,2,2,0,2,2,
+ 0,2,0,0,2,0,2,0,2,0,2,0,2,2,0,2,
+ 0,0,2,2,2,2,0,2,2,2,2,0,2,2,2,2,
+ 0,2,0,2,2,2,2,2,2,2,2,2,2,0,2,2,
+ 2,2,2,2,2,2,2,2,2,2,0,0,0,0,2,2,
+ 2,0,2,2,2,2,2,0,2,2,2,2,2,2,2,2,
+ 2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+ 0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+ 2,2,2,2,0,0,0,0,0,2,2,2,2,2,2,2,
+ 2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,
+};
+static
+uint16_t _mergedidx2[3755] =
+{
+ 0,14,30,46,61,66,81,86,97,103,119,130,146,155,170,179,
+ 195,195,195,211,219,229,229,237,252,266,279,292,308,320,334,349,
+ 357,357,357,369,384,399,399,399,399,411,416,432,446,460,476,491,
+ 491,491,491,491,491,491,491,507,523,539,553,565,566,582,590,605,
+ 618,618,618,634,634,634,650,650,664,674,674,674,690,706,706,706,
+ 706,706,706,722,723,732,748,748,755,764,764,764,764,780,785,800,
+ 803,803,819,819,824,835,851,864,865,865,865,865,865,877,888,904,
+ 920,936,938,954,957,970,970,970,970,970,980,995,1011,1021,1026,1038,
+ 1054,1064,1076,1085,1101,1108,1124,1140,1148,1163,1179,1179,1185,1195,1195,1195,
+ 1207,1211,1211,1217,1231,1247,1261,1277,1292,1304,1311,1326,1340,1355,1370,1386,
+ 1399,1414,1421,1436,1446,1453,1468,1484,1495,1507,1514,1529,1543,1559,1575,1591,
+ 1602,1614,1621,1636,1650,1654,1669,1685,1698,1713,1729,1743,1753,1769,1779,1795,
+ 1806,1818,1825,1835,1849,1857,1873,1889,1905,1917,1924,1936,1950,1953,1966,1982,
+ 1994,2006,2008,2013,2027,2042,2057,2073,2078,2087,2097,2111,2127,2134,2144,2160,
+ 2175,2176,2176,2191,2207,2223,2233,2233,2248,2260,2272,2287,2303,2319,2335,2335,
+ 2351,2352,2368,2378,2394,2403,2406,2419,2427,2440,2440,2440,2440,2440,2440,2440,
+ 2456,2456,2461,2472,2488,2504,2519,2534,2548,2564,2580,2580,2590,2606,2606,2611,
+ 2627,2627,2627,2627,2627,2627,2627,2627,2627,2627,2627,2627,2627,2627,2627,2627,
+ 2627,2627,2627,2627,2634,2650,2666,2666,2673,2689,2689,2704,2718,2727,2735,2735,
+ 2735,2750,2758,2758,2758,2763,2774,2774,2790,2806,2822,2822,2822,2822,2822,2832,
+ 2847,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,
+ 2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,
+ 2848,2848,2848,2848,2848,2848,2851,2866,2882,2887,2903,2903,2903,2903,2908,2923,
+ 2939,2953,2968,2982,2998,3012,3028,3043,3059,3059,3059,3071,3075,3084,3100,3110,
+ 3126,3142,3142,3142,3142,3142,3149,3165,3172,3179,3195,3195,3195,3195,3205,3221,
+ 3222,3237,3237,3247,3263,3265,3274,3290,3290,3294,3310,3316,3332,3342,3342,3358,
+ 3367,3383,3383,3383,3394,3399,3399,3415,3415,3425,3433,3433,3433,3433,3433,3444,
+ 3449,3449,3461,3472,3488,3498,3498,3511,3514,3529,3545,3555,3555,3565,3571,3587,
+ 3587,3599,3603,3619,3635,3645,3647,3663,3679,3679,3684,3700,3700,3707,3716,3732,
+ 3732,3736,3748,3748,3748,3753,3764,3773,3778,3789,3789,3805,3805,3805,3805,3821,
+ 3821,3821,3821,3821,3821,3821,3821,3821,3831,3847,3847,3847,3847,3847,3847,3862,
+ 3878,3894,3894,3910,3926,3942,3958,3974,3974,3974,3990,4005,4021,4037,4051,4067,
+ 4078,4086,4102,4102,4103,4119,4134,4150,4166,4179,4179,4179,4179,4179,4179,4193,
+ 4209,4223,4239,4255,4270,4286,4302,4318,4323,4323,4323,4323,4323,4323,4323,4323,
+ 4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,
+ 4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4333,
+ 4339,4355,4361,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,
+ 4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,
+ 4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,
+ 4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,
+ 4371,4371,4371,4387,4387,4387,4403,4403,4403,4419,4434,4449,4449,4449,4449,4449,
+ 4449,4461,4476,4492,4492,4502,4518,4518,4518,4526,4542,4558,4567,4583,4583,4583,
+ 4583,4598,4598,4598,4598,4599,4615,4615,4615,4615,4615,4615,4615,4615,4615,4615,
+ 4615,4615,4615,4615,4615,4615,4615,4615,4615,4615,4615,4615,4615,4615,4615,4615,
+ 4615,4615,4615,4631,4638,4638,4653,4668,4669,4669,4669,4669,4678,4690,4691,4691,
+ 4691,4691,4696,4712,4717,4717,4733,4734,4734,4734,4734,4735,4750,4766,4766,4782,
+ 4782,4782,4798,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,
+ 4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,
+ 4814,4814,4814,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,
+ 4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,
+ 4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,
+ 4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,
+ 4830,4830,4830,4846,4846,4846,4846,4862,4862,4862,4862,4862,4862,4862,4862,4862,
+ 4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,
+ 4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,
+ 4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,
+ 4862,4862,4862,4862,4862,4862,4862,4865,4878,4878,4878,4878,4894,4894,4896,4912,
+ 4912,4912,4912,4912,4912,4912,4912,4912,4912,4912,4912,4912,4912,4912,4912,4915,
+ 4931,4947,4959,4975,4975,4977,4992,5008,5012,5028,5028,5028,5028,5038,5044,5044,
+ 5053,5069,5084,5086,5086,5086,5102,5116,5132,5138,5148,5160,5176,5186,5200,5214,
+ 5226,5239,5242,5258,5258,5258,5270,5284,5286,5286,5298,5302,5318,5328,5342,5358,
+ 5368,5378,5394,5403,5410,5426,5429,5442,5446,5446,5459,5462,5478,5494,5510,5526,
+ 5526,5533,5542,5558,5574,5590,5599,5613,5613,5613,5629,5645,5650,5666,5680,5695,
+ 5703,5719,5735,5735,5740,5756,5772,5772,5772,5772,5772,5788,5788,5801,5817,5833,
+ 5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,
+ 5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,
+ 5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,
+ 5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5845,
+ 5861,5870,5881,5881,5885,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,
+ 5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,
+ 5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,
+ 5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,
+ 5897,5897,5897,5897,5897,5913,5913,5913,5913,5913,5913,5913,5913,5913,5913,5913,
+ 5913,5913,5913,5913,5913,5913,5913,5913,5913,5913,5913,5915,5931,5931,5931,5931,
+ 5931,5931,5937,5947,5947,5963,5976,5991,6001,6017,6023,6023,6023,6023,6023,6023,
+ 6037,6039,6052,6055,6055,6055,6055,6055,6055,6055,6055,6055,6055,6055,6055,6055,
+ 6055,6055,6055,6055,6055,6055,6057,6071,6087,6087,6087,6087,6103,6105,6105,6113,
+ 6121,6121,6137,6149,6149,6149,6149,6149,6149,6149,6165,6171,6171,6171,6171,6171,
+ 6171,6171,6174,6190,6206,6221,6226,6241,6246,6257,6263,6263,6263,6263,6264,6279,
+ 6287,6300,6300,6316,6329,6338,6346,6361,6361,6375,6375,6391,6391,6391,6391,6391,
+ 6391,6391,6396,6407,6407,6407,6407,6407,6407,6407,6407,6407,6407,6407,6407,6407,
+ 6407,6407,6407,6407,6407,6407,6407,6407,6407,6407,6407,6423,6426,6442,6442,6442,
+ 6457,6458,6458,6474,6474,6490,6503,6518,6534,6534,6544,6560,6562,6578,6578,6590,
+ 6606,6606,6606,6622,6622,6630,6638,6638,6654,6654,6654,6654,6656,6672,6688,6688,
+ 6700,6708,6712,6728,6728,6736,6752,6752,6752,6764,6780,6780,6793,6807,6821,6834,
+ 6834,6834,6834,6850,6850,6850,6850,6850,6850,6850,6850,6850,6850,6850,6850,6850,
+ 6850,6850,6850,6850,6850,6850,6859,6875,6885,6901,6909,6925,6932,6932,6947,6958,
+ 6958,6958,6958,6974,6984,6984,6994,7009,7019,7035,7044,7060,7061,7076,7076,7076,
+ 7076,7092,7105,7121,7131,7147,7153,7163,7163,7163,7163,7179,7179,7179,7187,7203,
+ 7203,7203,7203,7219,7235,7244,7254,7260,7260,7276,7279,7295,7298,7311,7311,7327,
+ 7336,7347,7352,7368,7368,7368,7378,7394,7404,7420,7433,7449,7463,7465,7465,7465,
+ 7465,7465,7465,7481,7481,7481,7481,7488,7497,7497,7497,7513,7513,7513,7526,7542,
+ 7542,7542,7555,7571,7571,7583,7599,7609,7609,7609,7609,7609,7609,7609,7609,7609,
+ 7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7625,7625,7631,7639,7641,
+ 7641,7641,7641,7657,7660,7673,7689,7699,7705,7705,7721,7735,7737,7737,7753,7764,
+ 7769,7785,7794,7807,7810,7810,7818,7826,7826,7836,7852,7865,7868,7868,7884,7884,
+ 7900,7907,7923,7936,7939,7948,7958,7974,7990,7990,8003,8016,8019,8019,8032,8047,
+ 8063,8076,8076,8092,8106,8110,8122,8137,8138,8138,8138,8154,8169,8184,8200,8200,
+ 8201,8216,8232,8243,8255,8262,8277,8291,8307,8321,8323,8323,8323,8323,8323,8323,
+ 8323,8323,8323,8339,8339,8339,8350,8359,8375,8390,8392,8408,8408,8408,8424,8436,
+ 8452,8462,8462,8462,8462,8462,8462,8462,8462,8462,8462,8478,8478,8479,8494,8494,
+ 8502,8514,8514,8530,8530,8530,8546,8558,8574,8584,8584,8600,8600,8605,8616,8632,
+ 8642,8642,8642,8658,8663,8674,8690,8706,8713,8713,8713,8713,8713,8713,8713,8713,
+ 8713,8713,8713,8729,8729,8733,8745,8745,8745,8745,8745,8745,8745,8761,8761,8777,
+ 8777,8793,8803,8818,8830,8838,8854,8868,8884,8894,8894,8894,8894,8910,8920,8920,
+ 8935,8950,8954,8970,8981,8981,8994,9005,9021,9033,9033,9039,9049,9063,9079,9079,
+ 9079,9079,9086,9095,9095,9095,9095,9095,9095,9095,9095,9095,9095,9095,9095,9095,
+ 9095,9095,9095,9111,9121,9122,9137,9153,9169,9179,9193,9195,9211,9211,9211,9211,
+ 9211,9211,9211,9227,9238,9238,9253,9263,9279,9295,9305,9311,9321,9337,9347,9347,
+ 9347,9347,9347,9347,9347,9347,9347,9347,9347,9347,9347,9347,9347,9347,9347,9347,
+ 9347,9363,9376,9390,9392,9394,9406,9410,9426,9436,9436,9436,9436,9436,9452,9453,
+ 9453,9453,9453,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,
+ 9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,
+ 9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,
+ 9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9475,9485,9485,9485,
+ 9485,9485,9485,9485,9485,9501,9501,9501,9501,9501,9501,9501,9501,9501,9501,9501,
+ 9501,9513,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,
+ 9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,
+ 9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,
+ 9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,
+ 9517,9517,9533,9533,9533,9533,9533,9533,9548,9564,9564,9564,9564,9564,9564,9564,
+ 9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,
+ 9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,
+ 9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,
+ 9564,9564,9564,9564,9564,9564,9564,9564,9564,9580,9595,9602,9602,9602,9602,9602,
+ 9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,
+ 9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,
+ 9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,
+ 9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9618,9618,9618,9618,9618,
+ 9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,
+ 9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9627,
+ 9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,
+ 9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,
+ 9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,
+ 9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,
+ 9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,
+ 9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,
+ 9650,9650,9650,9657,9673,9674,9690,9706,9706,9706,9706,9707,9723,9739,9741,9755,
+ 9771,9771,9771,9787,9803,9819,9832,9840,9853,9869,9869,9869,9869,9869,9869,9869,
+ 9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,
+ 9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9885,9885,9901,
+ 9901,9917,9917,9917,9917,9917,9917,9917,9917,9933,9933,9933,9933,9938,9948,9949,
+ 9949,9949,9962,9978,9978,9978,9978,9994,9998,10014,10014,10014,10014,10014,10014,10014,
+ 10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,
+ 10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,
+ 10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,
+ 10014,10014,10014,10014,10014,10014,10014,10014,10014,10022,10038,10038,10038,10038,10038,10038,
+ 10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,
+ 10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,
+ 10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,
+ 10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10048,10054,10054,10070,10079,10079,
+ 10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,
+ 10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,
+ 10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,
+ 10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10095,10111,
+ 10111,10111,10111,10111,10111,10111,10111,10111,10111,10111,10111,10111,10111,10111,10111,10111,
+ 10111,10124,10138,10141,10157,10169,10185,10185,10185,10185,10185,10185,10185,10185,10185,10185,
+ 10185,10185,10185,10185,10185,10185,10185,10185,10185,10185,10185,10185,10185,10185,10189,10201,
+ 10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,
+ 10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,
+ 10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,
+ 10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10217,
+ 10217,10217,10217,10217,10217,10222,10238,10242,10258,10268,10268,10268,10268,10268,10268,10268,
+ 10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,
+ 10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,
+ 10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,
+ 10268,10268,10268,10268,10268,10268,10268,10268,10268,10284,10290,10300,10312,10316,10330,10338,
+ 10346,10360,10364,10380,10394,10407,10423,10429,10439,10451,10464,10478,10486,10502,10517,10521,
+ 10533,10543,10549,10565,10571,10581,10593,10597,10611,10619,10627,10641,10645,10657,10667,10673,
+ 10689,10695,10705,10715,10723,10738,10743,10757,10762,10774,10785,10797,10808,10814,10830,10836,
+ 10852,10859,10875,10882,10892,10905,10919,10919,10919,10935,10935,10935,10935,10935,10935,10935,
+ 10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,
+ 10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,
+ 10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,
+ 10935,10935,10935,10935,10935,10935,10935,10935,10935,10951,10962,10977,10988,10988,10988,10988,
+ 10988,10988,10988,10988,10988,10988,10988,10988,10988,11004,11004,11004,11006,11020,11020,11020,
+ 11020,11020,11020,11020,11020,11020,11036,11036,11039,11052,11068,11083,11083,11083,11083,11083,
+ 11083,11083,11083,11083,11083,11083,11083,11083,11083,11083,11083,11083,11083,11083,11083,11099,
+ 11101,11115,11131,11131,11135,11151,11161,11161,11161,11161,11161,11161,11161,11161,11161,11161,
+ 11161,11161,11161,11161,11161,11161,11177,11181,11197,11207,11207,11207,11207,11207,11207,11207,
+ 11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,
+ 11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,
+ 11207,11207,11207,11207,11207,11207,11207,11223,11239,11255,11255,11255,11255,11255,11255,11255,
+ 11255,11255,11255,11255,11255,11266,11271,11271,11271,11287,11287,11301,11303,11315,11331,11341,
+ 11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,
+ 11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,
+ 11341,11341,11341,11341,11341,11341,11341,11341,11341,11357,11362,11378,11391,11405,11421,11435,
+ 11443,11459,11470,11485,11496,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,
+ 11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,
+ 11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,
+ 11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,
+ 11508,11508,11508,11508,11508,11524,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,
+ 11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,
+ 11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,
+ 11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,
+ 11534,11534,11534,11534,11534,11534,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,
+ 11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,
+ 11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,
+ 11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,
+ 11550,11550,11550,11550,11550,11550,11566,11566,11582,11582,11582,11582,11582,11582,11582,11582,
+ 11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,
+ 11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,
+ 11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,
+ 11582,11582,11582,11582,11582,11582,11582,11582,11588,11604,11604,11604,11604,11604,11604,11604,
+ 11604,11604,11604,11604,11604,11606,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,
+ 11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,
+ 11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,
+ 11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,
+ 11622,11622,11622,11622,11622,11622,11636,11652,11652,11652,11652,11652,11652,11652,11652,11652,
+ 11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,
+ 11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,
+ 11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,
+ 11652,11652,11652,11652,11652,11652,11652,11667,11668,11668,11668,11668,11668,11668,11668,11668,
+ 11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,
+ 11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,
+ 11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,
+ 11668,11668,11668,11668,11668,11668,11668,11668,11684,11684,11684,11684,11684,11684,11684,11684,
+ 11684,11684,11684,11684,11684,11684,11684,11684,11684,11684,11684,11684,11684,11684,11684,11684,
+ 11684,11684,11684,11684,11684,11684,11684,11684,11684,11686,11700,11700,11700,11700,11700,11700,
+ 11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,
+ 11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,
+ 11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,
+ 11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11716,11716,11716,11716,11716,11716,
+ 11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,
+ 11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,
+ 11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,
+ 11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11721,11737,11737,11737,11737,11737,
+ 11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,
+ 11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,
+ 11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,
+ 11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11753,11753,11753,11753,11753,
+ 11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,
+ 11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,
+ 11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,
+ 11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,
+};
+static
+uint16_t _mergedidx1[2048] =
+{
+ 0,64,128,192,256,320,383,447,511,564,579,643,707,771,771,771,
+ 771,771,771,807,839,839,839,839,839,839,839,839,839,839,839,839,
+ 839,839,839,839,839,839,839,839,839,895,959,1023,1023,1023,1023,1023,
+ 1023,1023,1023,1023,1023,1029,1093,1093,1093,1093,1093,1093,1093,1093,1141,1203,
+ 1267,1331,1395,1459,1523,1587,1651,1715,1779,1837,1858,1865,1929,1990,1995,1995,
+ 1995,2059,2096,2096,2096,2096,2096,2096,2096,2096,2160,2217,2281,2281,2281,2281,
+ 2281,2282,2346,2397,2414,2414,2414,2414,2414,2414,2414,2415,2479,2527,2527,2591,
+ 2601,2601,2601,2601,2601,2665,2729,2745,2806,2857,2921,2953,2997,2997,2998,3062,
+ 3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,
+ 3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,
+ 3126,3126,3126,3126,3126,3126,3126,3126,3126,3144,3192,3192,3192,3205,3268,3270,
+ 3270,3270,3270,3292,3335,3335,3335,3335,3335,3335,3337,3400,3400,3400,3464,3498,
+ 3562,3562,3562,3562,3574,3627,3627,3627,3632,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+ 3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+
+};
+
+#define mergedindex1(x) (((x)>>(4+6))&0x7FF)
+#define mergedindex2(x) (((x)>>4)&0x3F)
+#define mergedoffset(x) ((x)&0xF)
+#define mergedlkup(x) (_mergeddata[_mergedidx2[_mergedidx1[mergedindex1(x)] + mergedindex2(x)] + mergedoffset(x)] )
+
+enum {
+ Lspace = 1<<0,
+ Lalpha = 1<<1,
+ Ldigit = 1<<2,
+ Lupper = 1<<3,
+ Llower = 1<<4,
+ Ltitle = 1<<5,
+};
--- /dev/null
+++ b/3rd/utf/runetotype.c
@@ -1,0 +1,20 @@
+#include "platform.h"
+#include "runetotypedata"
+
+Rune
+toupperrune(Rune c)
+{
+ return c + upperlkup(c);
+}
+
+Rune
+tolowerrune(Rune c)
+{
+ return c + lowerlkup(c);
+}
+
+Rune
+totitlerune(Rune c)
+{
+ return c + titlelkup(c);
+}
--- /dev/null
+++ b/3rd/utf/runetotypedata
@@ -1,0 +1,862 @@
+static
+int _upperdata[1756] =
+{
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,743,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,
+ 0,-32,-32,-32,-32,-32,-32,-32,121,0,-1,0,-1,0,-1,0,
+ -1,0,-1,0,-1,0,-1,0,-1,0,-232,0,-1,0,-1,0,
+ -1,0,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,-1,0,
+ -1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,-1,
+ 0,-1,0,-1,-300,195,0,0,-1,0,-1,0,0,-1,0,0,
+ 0,-1,0,0,0,-1,0,0,97,0,0,0,-1,163,0,0,
+ 0,130,0,-1,0,-1,0,-1,0,0,-1,0,0,0,0,-1,
+ 0,0,0,-1,0,-1,0,0,-1,0,0,0,-1,0,56,0,
+ 0,0,0,0,-1,-2,0,-1,-2,0,-1,-2,0,-1,0,-1,
+ 0,-1,0,-1,0,-1,0,-1,0,-1,-79,0,-1,0,-1,0,
+ -1,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,-1,-2,0,
+ -1,0,0,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+ -1,0,-1,0,0,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+ -1,0,-1,0,0,0,0,0,0,0,0,-1,0,0,10815,0,
+ -1,0,0,0,0,-1,0,-1,0,-1,0,-1,0,-1,10783,10780,
+ 10782,-210,-206,0,-205,-205,0,-202,0,-203,42319,0,0,0,-205,42315,
+ 0,-207,0,42280,42308,0,-209,-211,42308,10743,42305,0,0,-211,0,10749,
+ -213,0,0,-214,0,0,0,0,0,0,0,10727,0,0,-218,0,
+ 42307,-218,0,0,0,42282,-218,-69,-217,-217,-71,0,0,0,-219,0,
+ 0,0,0,0,0,0,0,0,0,42261,42258,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,-1,0,-1,0,
+ 0,0,-1,0,0,0,130,130,130,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-38,-37,-37,-37,0,-32,-32,
+ -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-31,-32,-32,
+ -32,-32,-32,-32,-32,-32,-32,-64,-63,-63,0,-62,-57,0,0,0,
+ -47,-54,-8,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+ -1,0,-1,-86,-80,7,-116,0,-96,0,0,-1,0,0,-1,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-32,
+ -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-80,
+ -80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,0,
+ -1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+ 0,0,0,0,0,0,0,0,-1,0,-1,0,-1,0,-1,0,
+ -1,0,-1,0,-1,0,-1,0,0,-1,0,-1,0,-1,0,-1,
+ 0,-1,0,-1,0,-1,-15,0,-1,0,-1,0,-1,0,-1,0,
+ -1,0,-1,0,-1,0,-1,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-48,-48,-48,-48,-48,-48,-48,-48,-48,
+ -48,-48,-48,-48,-48,-48,-48,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,3008,3008,3008,3008,3008,3008,3008,3008,3008,
+ 3008,3008,3008,3008,3008,3008,3008,0,0,3008,3008,3008,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,-8,-8,-8,-8,
+ -8,-8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,-6254,-6253,-6244,-6242,-6242,-6243,-6236,-6181,35266,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,35332,0,0,0,3814,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,35384,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,
+ 0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,
+ 0,0,0,-59,0,0,0,0,-1,0,-1,0,-1,0,-1,0,
+ -1,0,-1,0,-1,0,-1,8,8,8,8,8,8,8,8,0,
+ 0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,
+ 8,0,0,0,0,0,0,0,0,0,0,8,0,8,0,8,
+ 0,8,0,0,0,0,0,0,0,0,8,8,8,8,8,8,
+ 8,8,0,0,0,0,0,0,0,0,74,74,86,86,86,86,
+ 100,100,128,128,112,112,126,126,0,0,8,8,8,8,8,8,
+ 8,8,0,0,0,0,0,0,0,0,8,8,0,9,0,0,
+ 0,0,0,0,0,0,0,0,-7205,0,0,0,9,0,0,0,
+ 0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,8,8,0,0,0,7,0,
+ 0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,-28,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,-16,-16,-16,-16,-16,
+ -16,-16,-16,-16,-16,-16,-16,-16,-16,-16,-16,0,0,0,0,-1,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ -26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ -48,-48,-48,-48,-48,-48,-48,-48,-48,-48,-48,-48,-48,-48,-48,-48,
+ 0,-1,0,0,0,-10795,-10792,0,-1,0,-1,0,-1,0,0,0,
+ -1,0,0,-1,0,0,0,0,0,0,0,0,0,-1,0,-1,
+ 0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,0,0,
+ 0,0,0,0,-1,0,-1,0,0,0,-1,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,
+ -7264,-7264,-7264,-7264,-7264,-7264,-7264,0,-7264,0,0,0,0,0,-7264,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,
+ 0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,
+ -1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,-1,
+ 0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,0,0,
+ 0,0,0,0,0,0,-1,0,-1,0,0,-1,0,-1,0,-1,
+ 0,-1,0,0,0,0,-1,0,0,0,-1,0,-1,48,0,0,
+ -1,0,-1,0,-1,0,-1,0,-1,0,0,0,0,0,0,-1,
+ 0,-1,0,-1,0,-1,0,-1,0,-1,0,0,0,0,-1,0,
+ -1,0,0,0,0,0,-1,0,-1,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,-928,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,-38864,-38864,-38864,-38864,-38864,
+ -38864,-38864,-38864,-38864,-38864,-38864,-38864,-38864,-38864,-38864,-38864,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,-32,-32,-32,-32,-32,
+ -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,-40,-40,-40,-40,-40,-40,
+ -40,-40,-40,-40,-40,-40,-40,-40,-40,-40,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,-40,-40,-40,-40,-40,-40,
+ -40,-40,-40,-40,-40,-40,-40,-40,-40,-40,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,-39,-39,-39,-39,-39,-39,
+ -39,-39,-39,0,-39,-39,-39,-39,-39,-39,-39,-39,-39,-39,-39,-39,
+ -39,0,-39,-39,-39,-39,-39,-39,-39,0,-39,-39,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,-64,-64,-64,-64,
+ -64,-64,-64,-64,-64,-64,-64,-64,-64,-64,-64,-64,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,-32,-32,-32,-32,
+ -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,-32,-32,-32,-32,
+ -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,-34,-34,-34,-34,
+ -34,-34,-34,-34,-34,-34,-34,-34,-34,-34,-34,-34,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,
+};
+static
+uint16_t _upperidx2[1595] =
+{
+ 0,0,0,0,0,0,15,20,31,31,31,42,48,48,64,73,
+ 89,89,89,105,115,125,125,133,149,163,178,191,207,221,235,251,
+ 259,259,275,287,302,318,334,350,366,380,395,395,395,395,395,395,
+ 395,395,395,395,406,412,412,427,441,441,445,461,475,491,499,515,
+ 527,527,527,543,543,559,575,575,589,599,599,599,615,631,631,631,
+ 631,631,631,647,647,647,662,663,672,679,679,679,679,679,679,679,
+ 679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,
+ 679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,
+ 679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,
+ 679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,
+ 679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,
+ 679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,
+ 679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,
+ 679,679,679,679,679,679,679,679,679,695,695,700,716,716,716,716,
+ 716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,
+ 716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,
+ 716,716,716,716,716,716,716,716,716,716,716,724,738,738,738,738,
+ 738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,
+ 738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,
+ 738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,
+ 738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,
+ 738,738,738,738,754,763,763,763,763,763,763,763,763,763,763,763,
+ 763,763,763,770,784,799,799,799,799,799,799,799,814,814,814,814,
+ 814,814,814,814,814,824,839,839,839,839,839,839,855,857,873,873,
+ 875,890,906,922,938,938,938,954,969,985,1001,1014,1018,1018,1018,1018,
+ 1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,
+ 1020,1035,1035,1051,1067,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,
+ 1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,
+ 1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,
+ 1072,1072,1072,1072,1072,1072,1072,1072,1072,1088,1094,1104,1104,1104,1104,1104,
+ 1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,
+ 1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,
+ 1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,
+ 1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1120,1120,
+ 1120,1136,1149,1164,1164,1164,1164,1164,1164,1176,1191,1207,1207,1217,1231,1231,
+ 1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,
+ 1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,
+ 1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,
+ 1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,
+ 1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,
+ 1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,
+ 1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,
+ 1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1246,1246,
+ 1248,1262,1277,1281,1293,1293,1293,1293,1293,1293,1293,1293,1306,1306,1308,1308,
+ 1308,1324,1338,1353,1359,1370,1382,1391,1401,1411,1418,1418,1418,1418,1418,1418,
+ 1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,
+ 1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,
+ 1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1431,
+ 1435,1451,1451,1451,1451,1451,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1482,1487,1498,1498,1498,1498,1498,1498,1498,1498,
+ 1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,
+ 1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,
+ 1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,
+ 1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1506,1514,1514,1530,1530,1530,
+ 1530,1530,1530,1530,1530,1538,1546,1550,1562,1562,1562,1562,1562,1562,1562,1562,
+ 1562,1571,1585,1599,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,
+ 1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,
+ 1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,
+ 1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,
+ 1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,
+ 1628,1628,1628,1641,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,
+ 1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,
+ 1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,
+ 1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,
+ 1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,
+ 1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,
+ 1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,
+ 1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,
+ 1644,1644,1644,1644,1660,1660,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,
+ 1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,
+ 1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,
+ 1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,
+ 1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,
+ 1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,
+ 1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,
+ 1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,
+ 1676,1676,1676,1676,1676,1676,1692,1692,1708,1708,1708,1708,1708,1708,1708,1708,
+ 1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,
+ 1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,
+ 1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,
+ 1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,
+ 1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,
+ 1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,
+ 1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,
+ 1708,1708,1708,1708,1708,1708,1708,1708,1722,1724,1736,1740,1740,1740,1740,1740,
+ 1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,
+ 1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,
+ 1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,
+ 1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,
+ 1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,
+ 1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,
+ 1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,
+ 1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,
+};
+static
+uint16_t _upperidx1[1024] =
+{
+ 0,89,204,268,396,475,558,558,558,558,558,558,558,558,558,558,
+ 558,558,558,558,586,714,774,774,774,774,774,774,774,774,774,786,
+ 904,996,1076,1192,1206,1206,1206,1206,1206,1206,1206,1206,1206,1232,1336,1336,
+ 1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1446,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+ 1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+
+};
+
+#define upperindex1(x) (((x)>>(4+7))&0x3FF)
+#define upperindex2(x) (((x)>>4)&0x7F)
+#define upperoffset(x) ((x)&0xF)
+#define upperlkup(x) (_upperdata[_upperidx2[_upperidx1[upperindex1(x)] + upperindex2(x)] + upperoffset(x)] )
+
+static
+int _lowerdata[1620] =
+{
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,
+ 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,
+ 32,32,32,32,32,32,32,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,
+ 0,1,0,1,0,1,0,-199,0,1,0,1,0,1,0,0,
+ 1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,
+ 0,1,0,1,0,1,0,1,0,-121,1,0,1,0,1,0,
+ 0,210,1,0,1,0,206,1,0,205,205,1,0,0,79,202,
+ 203,1,0,205,207,0,211,209,1,0,0,0,211,213,0,214,
+ 1,0,1,0,1,0,218,1,0,218,0,0,1,0,218,1,
+ 0,217,217,1,0,1,0,219,1,0,0,0,1,0,0,0,
+ 0,2,1,0,2,1,0,2,1,0,1,0,1,0,1,0,
+ 1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,
+ 0,1,0,1,0,1,0,2,1,0,1,0,-97,-56,1,0,
+ 1,0,1,0,1,0,1,0,1,0,1,0,1,0,-130,0,
+ 1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,
+ 0,0,0,0,10795,1,0,-163,10792,0,1,0,-195,69,71,1,
+ 0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,
+ 0,0,0,0,0,0,0,116,0,0,0,0,0,0,38,0,
+ 37,37,37,0,64,0,63,63,0,32,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,0,32,32,32,32,32,32,32,
+ 32,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,8,0,0,0,0,0,0,0,0,1,0,1,0,1,
+ 0,1,0,1,0,1,0,1,0,1,0,0,0,0,-60,0,
+ 0,1,0,-7,1,0,0,-130,-130,-130,80,80,80,80,80,80,
+ 80,80,80,80,80,80,80,80,80,80,32,32,32,32,32,32,
+ 32,32,32,32,32,32,32,32,32,32,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,
+ 1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,
+ 0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
+ 1,0,15,1,0,1,0,1,0,1,0,1,0,1,0,1,
+ 0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
+ 1,0,48,48,48,48,48,48,48,48,48,48,48,48,48,48,
+ 48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,7264,7264,7264,7264,7264,7264,7264,7264,7264,7264,7264,7264,7264,7264,
+ 7264,7264,0,7264,0,0,0,0,0,7264,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,38864,38864,38864,38864,38864,38864,
+ 38864,38864,38864,38864,38864,38864,38864,38864,38864,38864,8,8,8,8,8,8,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ -3008,-3008,-3008,-3008,-3008,-3008,-3008,-3008,-3008,-3008,-3008,-3008,-3008,-3008,-3008,-3008,
+ 0,0,-3008,-3008,-3008,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,
+ 0,1,0,1,0,0,0,0,0,0,0,0,0,-7615,0,1,
+ 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,
+ 0,0,0,0,0,0,-8,-8,-8,-8,-8,-8,-8,-8,0,0,
+ 0,0,0,0,0,0,-8,-8,-8,-8,-8,-8,0,0,0,0,
+ 0,0,0,0,-8,-8,-8,-8,-8,-8,-8,-8,0,0,0,0,
+ 0,0,0,0,-8,-8,-8,-8,-8,-8,0,0,0,0,0,0,
+ 0,0,0,-8,0,-8,0,-8,0,-8,0,0,0,0,0,0,
+ 0,0,-8,-8,-8,-8,-8,-8,-8,-8,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,-8,-8,-8,-8,-8,-8,
+ -8,-8,0,0,0,0,0,0,0,0,-8,-8,-74,-74,-9,0,
+ 0,0,0,0,0,0,0,-86,-86,-86,-86,-9,0,0,0,0,
+ 0,0,0,0,-8,-8,-100,-100,0,0,0,0,0,0,0,0,
+ -8,-8,-112,-112,-7,0,0,0,0,0,0,0,0,-128,-128,-126,
+ -126,-9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,-7517,0,0,0,-8383,-8262,0,0,0,0,28,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,
+ 16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,26,
+ 26,26,26,26,26,26,26,26,26,26,26,26,26,26,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,48,
+ 48,48,48,48,48,48,48,48,48,48,48,48,48,48,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
+ -10743,-3814,-10727,0,0,1,0,1,0,1,0,-10780,-10749,-10783,-10782,0,
+ 1,0,0,1,0,0,0,0,0,0,0,0,-10815,-10815,1,0,
+ 1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,
+ 0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,
+ 0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,
+ 1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,
+ 0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,
+ 0,1,0,1,0,-35332,1,0,1,0,1,0,1,0,0,0,
+ 0,1,0,-42280,0,0,1,0,1,0,0,0,1,0,1,0,
+ 1,0,1,0,1,0,-42308,-42319,-42315,-42305,-42308,0,-42258,-42282,-42261,928,
+ 1,0,1,0,1,0,1,0,1,0,1,0,-48,-42307,-35384,1,
+ 0,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,
+ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
+ 32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,
+ 40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,
+ 40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,39,39,39,39,39,39,39,39,39,39,39,0,39,39,39,
+ 39,0,39,39,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,64,64,64,64,64,64,64,64,64,64,64,64,
+ 64,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,32,32,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,32,32,32,32,32,32,32,32,32,32,32,32,
+ 32,32,32,32,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,34,34,34,34,34,34,34,34,34,34,34,34,
+ 34,34,34,34,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,
+};
+static
+uint16_t _loweridx2[1524] =
+{
+ 0,0,0,0,15,20,31,31,31,31,31,31,47,56,71,71,
+ 87,87,87,103,111,121,121,129,144,160,176,192,205,217,231,246,
+ 254,254,270,282,297,312,312,312,312,312,312,312,312,312,312,312,
+ 312,312,312,312,312,312,312,328,344,360,374,386,387,403,411,426,
+ 442,458,458,474,474,474,490,490,504,514,514,514,530,546,546,546,
+ 546,546,546,561,562,571,578,578,578,578,578,578,578,578,578,578,
+ 578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,
+ 578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,
+ 578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,
+ 578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,
+ 578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,
+ 578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,
+ 578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,
+ 578,578,578,578,578,578,594,594,604,618,618,618,618,618,618,618,
+ 618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,
+ 618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,
+ 618,618,618,618,618,618,634,634,634,634,634,650,656,656,656,656,
+ 656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,
+ 656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,
+ 656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,
+ 656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,
+ 656,656,656,656,656,672,672,677,693,693,693,693,693,693,693,693,
+ 693,693,693,693,693,693,693,693,693,693,693,693,709,709,709,709,
+ 709,709,709,709,709,719,735,735,735,735,735,735,750,766,780,780,
+ 796,810,826,842,850,850,850,866,879,892,904,917,930,930,930,930,
+ 930,930,930,930,930,930,930,930,930,930,930,930,930,930,940,954,
+ 957,957,973,989,1002,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,
+ 1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,
+ 1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,
+ 1006,1006,1006,1006,1006,1006,1006,1016,1022,1038,1038,1038,1038,1038,1038,1038,
+ 1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,
+ 1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,
+ 1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,
+ 1038,1038,1038,1038,1038,1038,1038,1038,1038,1054,1054,1054,1070,1070,1070,1086,
+ 1102,1118,1118,1118,1118,1118,1118,1130,1144,1147,1147,1147,1147,1147,1147,1147,
+ 1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,
+ 1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,
+ 1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,
+ 1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,
+ 1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,
+ 1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,
+ 1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,
+ 1147,1147,1147,1147,1147,1147,1147,1147,1147,1163,1163,1165,1178,1194,1198,1209,
+ 1209,1209,1209,1209,1209,1209,1209,1223,1223,1225,1225,1225,1240,1254,1270,1276,
+ 1292,1304,1320,1329,1340,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,
+ 1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,
+ 1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,
+ 1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,
+ 1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,
+ 1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,
+ 1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,
+ 1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,
+ 1346,1346,1346,1346,1346,1361,1366,1377,1377,1377,1377,1377,1377,1377,1377,1377,
+ 1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,
+ 1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,
+ 1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,
+ 1377,1377,1377,1377,1377,1377,1377,1393,1393,1401,1409,1409,1409,1409,1409,1409,
+ 1409,1409,1425,1425,1437,1441,1441,1441,1441,1441,1441,1441,1441,1441,1457,1457,
+ 1470,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,
+ 1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,
+ 1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,
+ 1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,
+ 1476,1476,1476,1476,1476,1476,1476,1476,1476,1492,1492,1492,1505,1508,1508,1508,
+ 1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,
+ 1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,
+ 1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,
+ 1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,
+ 1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,
+ 1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,
+ 1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,
+ 1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1524,1524,1540,
+ 1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,
+ 1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,
+ 1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,
+ 1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,
+ 1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,
+ 1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,
+ 1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,
+ 1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1556,
+ 1556,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,
+ 1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,
+ 1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,
+ 1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,
+ 1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,
+ 1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,
+ 1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,
+ 1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,
+ 1572,1588,1588,1602,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,
+ 1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,
+ 1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,
+ 1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,
+ 1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,
+ 1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,
+ 1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,
+ 1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,
+ 1604,1604,1604,1604,
+};
+static
+uint16_t _loweridx1[1024] =
+{
+ 0,86,204,268,396,473,553,553,553,553,553,553,553,553,553,553,
+ 553,553,553,553,581,709,709,709,709,709,709,709,709,709,709,723,
+ 839,929,1005,1123,1135,1135,1135,1135,1135,1135,1135,1135,1135,1163,1265,1265,
+ 1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1377,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+ 1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+
+};
+
+#define lowerindex1(x) (((x)>>(4+7))&0x3FF)
+#define lowerindex2(x) (((x)>>4)&0x7F)
+#define loweroffset(x) ((x)&0xF)
+#define lowerlkup(x) (_lowerdata[_loweridx2[_loweridx1[lowerindex1(x)] + lowerindex2(x)] + loweroffset(x)] )
+
+static
+int _titledata[1717] =
+{
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,743,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,
+ 0,-32,-32,-32,-32,-32,-32,-32,121,0,-1,0,-1,0,-1,0,
+ -1,0,-1,0,-1,0,-1,0,-1,0,-232,0,-1,0,-1,0,
+ -1,0,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,-1,0,
+ -1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,-1,
+ 0,-1,0,-1,-300,195,0,0,-1,0,-1,0,0,-1,0,0,
+ 0,-1,0,0,0,-1,0,0,97,0,0,0,-1,163,0,0,
+ 0,130,0,-1,0,-1,0,-1,0,0,-1,0,0,0,0,-1,
+ 0,0,0,-1,0,-1,0,0,-1,0,0,0,-1,0,56,0,
+ 0,0,0,1,0,-1,1,0,-1,1,0,-1,0,-1,0,-1,
+ 0,-1,0,-1,0,-1,0,-1,-79,0,-1,0,-1,0,-1,0,
+ -1,0,-1,0,-1,0,-1,0,-1,0,1,0,-1,0,-1,0,
+ 0,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+ -1,0,0,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+ -1,0,0,0,0,0,0,0,0,-1,0,0,10815,0,-1,0,
+ 0,0,0,-1,0,-1,0,-1,0,-1,0,-1,10783,10780,10782,-210,
+ -206,0,-205,-205,0,-202,0,-203,42319,0,0,0,-205,42315,0,-207,
+ 0,42280,42308,0,-209,-211,42308,10743,42305,0,0,-211,0,10749,-213,0,
+ 0,-214,0,0,0,0,0,0,0,10727,0,0,-218,0,42307,-218,
+ 0,0,0,42282,-218,-69,-217,-217,-71,0,0,0,-219,0,0,0,
+ 0,0,0,0,0,0,0,42261,42258,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,-1,0,-1,0,0,0,
+ -1,0,0,0,130,130,130,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-38,-37,-37,-37,0,-32,-32,-32,-32,
+ -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-31,-32,-32,-32,-32,
+ -32,-32,-32,-32,-32,-64,-63,-63,0,-62,-57,0,0,0,-47,-54,
+ -8,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+ -1,-86,-80,7,-116,0,-96,0,0,-1,0,0,-1,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,-32,-32,-32,
+ -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-80,-80,-80,
+ -80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,0,-1,0,
+ -1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,0,
+ 0,0,0,0,0,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+ -1,0,-1,0,-1,0,0,-1,0,-1,0,-1,0,-1,0,-1,
+ 0,-1,0,-1,-15,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+ -1,0,-1,0,-1,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-48,-48,-48,-48,-48,-48,-48,-48,-48,-48,-48,
+ -48,-48,-48,-48,-48,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-8,-8,-8,-8,-8,-8,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,-6254,-6253,-6244,-6242,-6242,
+ -6243,-6236,-6181,35266,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,35332,0,0,0,3814,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,35384,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-1,0,-1,0,-1,0,-1,0,
+ -1,0,-1,0,-1,0,-1,0,0,0,0,0,-59,0,0,0,
+ 0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,
+ 8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,
+ 0,0,8,8,8,8,8,8,8,8,0,0,0,0,0,0,
+ 0,0,0,0,8,0,8,0,8,0,8,0,0,0,0,0,
+ 0,0,0,8,8,8,8,8,8,8,8,0,0,0,0,0,
+ 0,0,0,74,74,86,86,86,86,100,100,128,128,112,112,126,
+ 126,0,0,8,8,8,8,8,8,8,8,0,0,0,0,0,
+ 0,0,0,8,8,0,9,0,0,0,0,0,0,0,0,0,
+ 0,-7205,0,0,0,9,0,0,0,0,0,0,0,0,0,0,
+ 0,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,8,8,0,0,0,7,0,0,0,0,0,0,0,0,
+ 0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-28,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-16,-16,-16,-16,-16,-16,-16,-16,-16,-16,-16,-16,
+ -16,-16,-16,-16,0,0,0,0,-1,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-26,-26,-26,-26,-26,-26,-26,
+ -26,-26,-26,-26,-26,-26,-26,-26,-26,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,-48,-48,-48,-48,-48,-48,-48,
+ -48,-48,-48,-48,-48,-48,-48,-48,-48,0,-1,0,0,0,-10795,-10792,
+ 0,-1,0,-1,0,-1,0,0,0,-1,0,0,-1,0,0,0,
+ 0,0,0,0,0,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+ -1,0,-1,0,-1,0,0,0,0,0,0,0,0,-1,0,-1,
+ 0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,
+ -7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,
+ 0,-7264,0,0,0,0,0,-7264,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,-1,0,-1,0,-1,0,-1,0,
+ -1,0,-1,0,-1,0,-1,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,-1,0,-1,0,-1,0,-1,0,-1,
+ 0,-1,0,-1,0,-1,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+ -1,0,-1,0,-1,0,0,0,0,0,0,0,0,0,0,-1,
+ 0,-1,0,0,-1,0,-1,0,-1,0,-1,0,0,0,0,-1,
+ 0,0,0,-1,0,-1,48,0,0,-1,0,-1,0,-1,0,-1,
+ 0,-1,0,0,0,0,0,0,-1,0,-1,0,-1,0,-1,0,
+ -1,0,-1,0,0,0,0,-1,0,-1,0,0,0,0,0,-1,
+ 0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-928,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-38864,-38864,-38864,-38864,-38864,-38864,-38864,-38864,-38864,-38864,-38864,-38864,
+ -38864,-38864,-38864,-38864,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,
+ -32,-32,-32,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,
+ -40,-40,-40,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,
+ -40,-40,-40,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,-39,-39,-39,-39,-39,-39,-39,-39,-39,0,-39,-39,-39,
+ -39,-39,-39,-39,-39,-39,-39,-39,-39,-39,0,-39,-39,-39,-39,-39,
+ -39,-39,0,-39,-39,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-64,-64,-64,-64,-64,-64,-64,-64,-64,-64,-64,
+ -64,-64,-64,-64,-64,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,
+ -32,-32,-32,-32,-32,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,
+ -32,-32,-32,-32,-32,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,-34,-34,-34,-34,-34,-34,-34,-34,-34,-34,-34,
+ -34,-34,-34,-34,-34,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,
+};
+static
+uint16_t _titleidx2[1545] =
+{
+ 0,0,0,0,0,0,15,20,31,31,31,42,48,48,64,73,
+ 89,89,89,105,115,125,125,133,149,163,178,191,207,219,233,249,
+ 257,257,273,285,300,316,332,348,364,378,393,393,393,393,393,393,
+ 393,393,393,393,404,410,410,425,439,439,443,459,473,489,497,513,
+ 525,525,525,541,541,557,573,573,587,597,597,597,613,629,629,629,
+ 629,629,629,645,645,645,660,661,670,677,677,677,677,677,677,677,
+ 677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,
+ 677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,
+ 677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,
+ 677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,
+ 677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,
+ 677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,
+ 677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,
+ 677,677,677,677,677,677,677,677,677,685,699,699,699,699,699,699,
+ 699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,
+ 699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,
+ 699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,
+ 699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,
+ 699,699,715,724,724,724,724,724,724,724,724,724,724,724,724,724,
+ 724,731,745,760,760,760,760,760,760,760,775,775,775,775,775,775,
+ 775,775,775,785,800,800,800,800,800,800,816,818,834,834,836,851,
+ 867,883,899,899,899,915,930,946,962,975,979,979,979,979,979,979,
+ 979,979,979,979,979,979,979,979,979,979,979,979,979,979,981,996,
+ 996,1012,1028,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,
+ 1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,
+ 1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,
+ 1033,1033,1033,1033,1033,1033,1033,1049,1055,1065,1065,1065,1065,1065,1065,1065,
+ 1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,
+ 1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,
+ 1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,
+ 1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1081,1081,1081,1097,
+ 1110,1125,1125,1125,1125,1125,1125,1137,1152,1168,1168,1178,1192,1192,1192,1192,
+ 1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,
+ 1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,
+ 1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,
+ 1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,
+ 1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,
+ 1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,
+ 1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,
+ 1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1207,1207,1209,1223,
+ 1238,1242,1254,1254,1254,1254,1254,1254,1254,1254,1267,1267,1269,1269,1269,1285,
+ 1299,1314,1320,1331,1343,1352,1362,1372,1379,1379,1379,1379,1379,1379,1379,1379,
+ 1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,
+ 1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,
+ 1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1392,1396,1412,
+ 1412,1412,1412,1412,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,
+ 1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,
+ 1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,
+ 1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,
+ 1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,
+ 1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,
+ 1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,
+ 1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,
+ 1428,1428,1428,1428,1443,1448,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,
+ 1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,
+ 1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,
+ 1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,
+ 1459,1459,1459,1459,1459,1459,1459,1459,1467,1475,1475,1491,1491,1491,1491,1491,
+ 1491,1491,1491,1499,1507,1511,1523,1523,1523,1523,1523,1523,1523,1523,1523,1532,
+ 1546,1560,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,
+ 1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,
+ 1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,
+ 1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,
+ 1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1589,1589,
+ 1589,1602,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,
+ 1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,
+ 1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,
+ 1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,
+ 1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,
+ 1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,
+ 1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,
+ 1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,
+ 1605,1605,1621,1621,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,
+ 1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,
+ 1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,
+ 1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,
+ 1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,
+ 1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,
+ 1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,
+ 1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,
+ 1637,1637,1637,1637,1653,1653,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,
+ 1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,
+ 1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,
+ 1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,
+ 1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,
+ 1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,
+ 1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,
+ 1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,
+ 1669,1669,1669,1669,1669,1669,1683,1685,1697,1701,1701,1701,1701,1701,1701,1701,
+ 1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,
+ 1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,
+ 1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,
+ 1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,
+ 1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,
+ 1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,
+ 1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,
+ 1701,1701,1701,1701,1701,1701,1701,1701,1701,
+};
+static
+uint16_t _titleidx1[1024] =
+{
+ 0,89,154,218,346,425,508,508,508,508,508,508,508,508,508,508,
+ 508,508,508,508,536,664,724,724,724,724,724,724,724,724,724,736,
+ 854,946,1026,1142,1156,1156,1156,1156,1156,1156,1156,1156,1156,1182,1286,1286,
+ 1286,1286,1286,1286,1286,1286,1286,1286,1286,1286,1286,1286,1286,1396,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+ 1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+
+};
+
+#define titleindex1(x) (((x)>>(4+7))&0x3FF)
+#define titleindex2(x) (((x)>>4)&0x7F)
+#define titleoffset(x) ((x)&0xF)
+#define titlelkup(x) (_titledata[_titleidx2[_titleidx1[titleindex1(x)] + titleindex2(x)] + titleoffset(x)] )
+
--- a/3rd/utf/runetype.c
+++ /dev/null
@@ -1,1181 +1,0 @@
-#include "platform.h"
-
-/*
- * alpha ranges -
- * only covers ranges not in lower||upper
- */
-static
-Rune _alpha2[] =
-{
- 0x00d8, 0x00f6, /* Ø - ö */
- 0x00f8, 0x01f5, /* ø - ǵ */
- 0x0250, 0x02a8, /* ɐ - ʨ */
- 0x038e, 0x03a1, /* Ύ - Ρ */
- 0x03a3, 0x03ce, /* Σ - ώ */
- 0x03d0, 0x03d6, /* ϐ - ϖ */
- 0x03e2, 0x03f3, /* Ϣ - ϳ */
- 0x0490, 0x04c4, /* Ґ - ӄ */
- 0x0561, 0x0587, /* ա - և */
- 0x05d0, 0x05ea, /* א - ת */
- 0x05f0, 0x05f2, /* װ - ײ */
- 0x0621, 0x063a, /* ء - غ */
- 0x0640, 0x064a, /* ـ - ي */
- 0x0671, 0x06b7, /* ٱ - ڷ */
- 0x06ba, 0x06be, /* ں - ھ */
- 0x06c0, 0x06ce, /* ۀ - ێ */
- 0x06d0, 0x06d3, /* ې - ۓ */
- 0x0905, 0x0939, /* अ - ह */
- 0x0958, 0x0961, /* क़ - ॡ */
- 0x0985, 0x098c, /* অ - ঌ */
- 0x098f, 0x0990, /* এ - ঐ */
- 0x0993, 0x09a8, /* ও - ন */
- 0x09aa, 0x09b0, /* প - র */
- 0x09b6, 0x09b9, /* শ - হ */
- 0x09dc, 0x09dd, /* ড় - ঢ় */
- 0x09df, 0x09e1, /* য় - ৡ */
- 0x09f0, 0x09f1, /* ৰ - ৱ */
- 0x0a05, 0x0a0a, /* ਅ - ਊ */
- 0x0a0f, 0x0a10, /* ਏ - ਐ */
- 0x0a13, 0x0a28, /* ਓ - ਨ */
- 0x0a2a, 0x0a30, /* ਪ - ਰ */
- 0x0a32, 0x0a33, /* ਲ - ਲ਼ */
- 0x0a35, 0x0a36, /* ਵ - ਸ਼ */
- 0x0a38, 0x0a39, /* ਸ - ਹ */
- 0x0a59, 0x0a5c, /* ਖ਼ - ੜ */
- 0x0a85, 0x0a8b, /* અ - ઋ */
- 0x0a8f, 0x0a91, /* એ - ઑ */
- 0x0a93, 0x0aa8, /* ઓ - ન */
- 0x0aaa, 0x0ab0, /* પ - ર */
- 0x0ab2, 0x0ab3, /* લ - ળ */
- 0x0ab5, 0x0ab9, /* વ - હ */
- 0x0b05, 0x0b0c, /* ଅ - ଌ */
- 0x0b0f, 0x0b10, /* ଏ - ଐ */
- 0x0b13, 0x0b28, /* ଓ - ନ */
- 0x0b2a, 0x0b30, /* ପ - ର */
- 0x0b32, 0x0b33, /* ଲ - ଳ */
- 0x0b36, 0x0b39, /* ଶ - ହ */
- 0x0b5c, 0x0b5d, /* ଡ଼ - ଢ଼ */
- 0x0b5f, 0x0b61, /* ୟ - ୡ */
- 0x0b85, 0x0b8a, /* அ - ஊ */
- 0x0b8e, 0x0b90, /* எ - ஐ */
- 0x0b92, 0x0b95, /* ஒ - க */
- 0x0b99, 0x0b9a, /* ங - ச */
- 0x0b9e, 0x0b9f, /* ஞ - ட */
- 0x0ba3, 0x0ba4, /* ண - த */
- 0x0ba8, 0x0baa, /* ந - ப */
- 0x0bae, 0x0bb5, /* ம - வ */
- 0x0bb7, 0x0bb9, /* ஷ - ஹ */
- 0x0c05, 0x0c0c, /* అ - ఌ */
- 0x0c0e, 0x0c10, /* ఎ - ఐ */
- 0x0c12, 0x0c28, /* ఒ - న */
- 0x0c2a, 0x0c33, /* ప - ళ */
- 0x0c35, 0x0c39, /* వ - హ */
- 0x0c60, 0x0c61, /* ౠ - ౡ */
- 0x0c85, 0x0c8c, /* ಅ - ಌ */
- 0x0c8e, 0x0c90, /* ಎ - ಐ */
- 0x0c92, 0x0ca8, /* ಒ - ನ */
- 0x0caa, 0x0cb3, /* ಪ - ಳ */
- 0x0cb5, 0x0cb9, /* ವ - ಹ */
- 0x0ce0, 0x0ce1, /* ೠ - ೡ */
- 0x0d05, 0x0d0c, /* അ - ഌ */
- 0x0d0e, 0x0d10, /* എ - ഐ */
- 0x0d12, 0x0d28, /* ഒ - ന */
- 0x0d2a, 0x0d39, /* പ - ഹ */
- 0x0d60, 0x0d61, /* ൠ - ൡ */
- 0x0e01, 0x0e30, /* ก - ะ */
- 0x0e32, 0x0e33, /* า - ำ */
- 0x0e40, 0x0e46, /* เ - ๆ */
- 0x0e5a, 0x0e5b, /* ๚ - ๛ */
- 0x0e81, 0x0e82, /* ກ - ຂ */
- 0x0e87, 0x0e88, /* ງ - ຈ */
- 0x0e94, 0x0e97, /* ດ - ທ */
- 0x0e99, 0x0e9f, /* ນ - ຟ */
- 0x0ea1, 0x0ea3, /* ມ - ຣ */
- 0x0eaa, 0x0eab, /* ສ - ຫ */
- 0x0ead, 0x0eae, /* ອ - ຮ */
- 0x0eb2, 0x0eb3, /* າ - ຳ */
- 0x0ec0, 0x0ec4, /* ເ - ໄ */
- 0x0edc, 0x0edd, /* ໜ - ໝ */
- 0x0f18, 0x0f19, /* ༘ - ༙ */
- 0x0f40, 0x0f47, /* ཀ - ཇ */
- 0x0f49, 0x0f69, /* ཉ - ཀྵ */
- 0x10d0, 0x10f6, /* ა - ჶ */
- 0x1100, 0x1159, /* ᄀ - ᅙ */
- 0x115f, 0x11a2, /* ᅟ - ᆢ */
- 0x11a8, 0x11f9, /* ᆨ - ᇹ */
- 0x1e00, 0x1e9b, /* Ḁ - ẛ */
- 0x1f50, 0x1f57, /* ὐ - ὗ */
- 0x1f80, 0x1fb4, /* ᾀ - ᾴ */
- 0x1fb6, 0x1fbc, /* ᾶ - ᾼ */
- 0x1fc2, 0x1fc4, /* ῂ - ῄ */
- 0x1fc6, 0x1fcc, /* ῆ - ῌ */
- 0x1fd0, 0x1fd3, /* ῐ - ΐ */
- 0x1fd6, 0x1fdb, /* ῖ - Ί */
- 0x1fe0, 0x1fec, /* ῠ - Ῥ */
- 0x1ff2, 0x1ff4, /* ῲ - ῴ */
- 0x1ff6, 0x1ffc, /* ῶ - ῼ */
- 0x210a, 0x2113, /* ℊ - ℓ */
- 0x2115, 0x211d, /* ℕ - ℝ */
- 0x2120, 0x2122, /* ℠ - ™ */
- 0x212a, 0x2131, /* K - ℱ */
- 0x2133, 0x2138, /* ℳ - ℸ */
- 0x3041, 0x3094, /* ぁ - ゔ */
- 0x30a1, 0x30fa, /* ァ - ヺ */
- 0x3105, 0x312c, /* ㄅ - ㄬ */
- 0x3131, 0x318e, /* ㄱ - ㆎ */
- 0x3192, 0x319f, /* ㆒ - ㆟ */
- 0x3260, 0x327b, /* ㉠ - ㉻ */
- 0x328a, 0x32b0, /* ㊊ - ㊰ */
- 0x32d0, 0x32fe, /* ㋐ - ㋾ */
- 0x3300, 0x3357, /* ㌀ - ㍗ */
- 0x3371, 0x3376, /* ㍱ - ㍶ */
- 0x337b, 0x3394, /* ㍻ - ㎔ */
- 0x3399, 0x339e, /* ㎙ - ㎞ */
- 0x33a9, 0x33ad, /* ㎩ - ㎭ */
- 0x33b0, 0x33c1, /* ㎰ - ㏁ */
- 0x33c3, 0x33c5, /* ㏃ - ㏅ */
- 0x33c7, 0x33d7, /* ㏇ - ㏗ */
- 0x33d9, 0x33dd, /* ㏙ - ㏝ */
- 0x4e00, 0x9fff, /* 一 - 鿿 */
- 0xac00, 0xd7a3, /* 가 - 힣 */
- 0xf900, 0xfb06, /* 豈 - st */
- 0xfb13, 0xfb17, /* ﬓ - ﬗ */
- 0xfb1f, 0xfb28, /* ײַ - ﬨ */
- 0xfb2a, 0xfb36, /* שׁ - זּ */
- 0xfb38, 0xfb3c, /* טּ - לּ */
- 0xfb40, 0xfb41, /* נּ - סּ */
- 0xfb43, 0xfb44, /* ףּ - פּ */
- 0xfb46, 0xfbb1, /* צּ - ﮱ */
- 0xfbd3, 0xfd3d, /* ﯓ - ﴽ */
- 0xfd50, 0xfd8f, /* ﵐ - ﶏ */
- 0xfd92, 0xfdc7, /* ﶒ - ﷇ */
- 0xfdf0, 0xfdf9, /* ﷰ - ﷹ */
- 0xfe70, 0xfe72, /* ﹰ - ﹲ */
- 0xfe76, 0xfefc, /* ﹶ - ﻼ */
- 0xff66, 0xff6f, /* ヲ - ッ */
- 0xff71, 0xff9d, /* ア - ン */
- 0xffa0, 0xffbe, /* ᅠ - ᄒ */
- 0xffc2, 0xffc7, /* ᅡ - ᅦ */
- 0xffca, 0xffcf, /* ᅧ - ᅬ */
- 0xffd2, 0xffd7, /* ᅭ - ᅲ */
- 0xffda, 0xffdc, /* ᅳ - ᅵ */
-};
-
-/*
- * alpha singlets -
- * only covers ranges not in lower||upper
- */
-static
-Rune _alpha1[] =
-{
- 0x00aa, /* ª */
- 0x00b5, /* µ */
- 0x00ba, /* º */
- 0x03da, /* Ϛ */
- 0x03dc, /* Ϝ */
- 0x03de, /* Ϟ */
- 0x03e0, /* Ϡ */
- 0x06d5, /* ە */
- 0x09b2, /* ল */
- 0x0a5e, /* ਫ਼ */
- 0x0a8d, /* ઍ */
- 0x0ae0, /* ૠ */
- 0x0b9c, /* ஜ */
- 0x0cde, /* ೞ */
- 0x0e4f, /* ๏ */
- 0x0e84, /* ຄ */
- 0x0e8a, /* ຊ */
- 0x0e8d, /* ຍ */
- 0x0ea5, /* ລ */
- 0x0ea7, /* ວ */
- 0x0eb0, /* ະ */
- 0x0ebd, /* ຽ */
- 0x1fbe, /* ι */
- 0x207f, /* ⁿ */
- 0x20a8, /* ₨ */
- 0x2102, /* ℂ */
- 0x2107, /* ℇ */
- 0x2124, /* ℤ */
- 0x2126, /* Ω */
- 0x2128, /* ℨ */
- 0xfb3e, /* מּ */
- 0xfe74, /* ﹴ */
-};
-
-/*
- * space ranges
- */
-static
-Rune _space2[] =
-{
- 0x0009, 0x000a, /* tab and newline */
- 0x0020, 0x0020, /* space */
- 0x0085, 0x0085,
- 0x00a0, 0x00a0, /* */
- 0x1680, 0x1680,
- 0x180e, 0x180e,
- 0x2000, 0x200b, /* - */
- 0x2028, 0x2029, /* - */
- 0x202f, 0x202f,
- 0x205f, 0x205f,
- 0x3000, 0x3000, /* */
- 0xfeff, 0xfeff, /* */
-};
-
-/*
- * lower case ranges
- * 3rd col is conversion excess 500
- */
-static
-Rune _toupper2[] =
-{
- 0x0061, 0x007a, 468, /* a-z A-Z */
- 0x00e0, 0x00f6, 468, /* à-ö À-Ö */
- 0x00f8, 0x00fe, 468, /* ø-þ Ø-Þ */
- 0x0256, 0x0257, 295, /* ɖ-ɗ Ɖ-Ɗ */
- 0x0258, 0x0259, 298, /* ɘ-ə Ǝ-Ə */
- 0x028a, 0x028b, 283, /* ʊ-ʋ Ʊ-Ʋ */
- 0x03ad, 0x03af, 463, /* έ-ί Έ-Ί */
- 0x03b1, 0x03c1, 468, /* α-ρ Α-Ρ */
- 0x03c3, 0x03cb, 468, /* σ-ϋ Σ-Ϋ */
- 0x03cd, 0x03ce, 437, /* ύ-ώ Ύ-Ώ */
- 0x0430, 0x044f, 468, /* а-я А-Я */
- 0x0451, 0x045c, 420, /* ё-ќ Ё-Ќ */
- 0x045e, 0x045f, 420, /* ў-џ Ў-Џ */
- 0x0561, 0x0586, 452, /* ա-ֆ Ա-Ֆ */
- 0x1f00, 0x1f07, 508, /* ἀ-ἇ Ἀ-Ἇ */
- 0x1f10, 0x1f15, 508, /* ἐ-ἕ Ἐ-Ἕ */
- 0x1f20, 0x1f27, 508, /* ἠ-ἧ Ἠ-Ἧ */
- 0x1f30, 0x1f37, 508, /* ἰ-ἷ Ἰ-Ἷ */
- 0x1f40, 0x1f45, 508, /* ὀ-ὅ Ὀ-Ὅ */
- 0x1f60, 0x1f67, 508, /* ὠ-ὧ Ὠ-Ὧ */
- 0x1f70, 0x1f71, 574, /* ὰ-ά Ὰ-Ά */
- 0x1f72, 0x1f75, 586, /* ὲ-ή Ὲ-Ή */
- 0x1f76, 0x1f77, 600, /* ὶ-ί Ὶ-Ί */
- 0x1f78, 0x1f79, 628, /* ὸ-ό Ὸ-Ό */
- 0x1f7a, 0x1f7b, 612, /* ὺ-ύ Ὺ-Ύ */
- 0x1f7c, 0x1f7d, 626, /* ὼ-ώ Ὼ-Ώ */
- 0x1f80, 0x1f87, 508, /* ᾀ-ᾇ ᾈ-ᾏ */
- 0x1f90, 0x1f97, 508, /* ᾐ-ᾗ ᾘ-ᾟ */
- 0x1fa0, 0x1fa7, 508, /* ᾠ-ᾧ ᾨ-ᾯ */
- 0x1fb0, 0x1fb1, 508, /* ᾰ-ᾱ Ᾰ-Ᾱ */
- 0x1fd0, 0x1fd1, 508, /* ῐ-ῑ Ῐ-Ῑ */
- 0x1fe0, 0x1fe1, 508, /* ῠ-ῡ Ῠ-Ῡ */
- 0x2170, 0x217f, 484, /* ⅰ-ⅿ Ⅰ-Ⅿ */
- 0x24d0, 0x24e9, 474, /* ⓐ-ⓩ Ⓐ-Ⓩ */
- 0xff41, 0xff5a, 468, /* a-z A-Z */
-};
-
-/*
- * lower case singlets
- * 2nd col is conversion excess 500
- */
-static
-Rune _toupper1[] =
-{
- 0x00ff, 621, /* ÿ Ÿ */
- 0x0101, 499, /* ā Ā */
- 0x0103, 499, /* ă Ă */
- 0x0105, 499, /* ą Ą */
- 0x0107, 499, /* ć Ć */
- 0x0109, 499, /* ĉ Ĉ */
- 0x010b, 499, /* ċ Ċ */
- 0x010d, 499, /* č Č */
- 0x010f, 499, /* ď Ď */
- 0x0111, 499, /* đ Đ */
- 0x0113, 499, /* ē Ē */
- 0x0115, 499, /* ĕ Ĕ */
- 0x0117, 499, /* ė Ė */
- 0x0119, 499, /* ę Ę */
- 0x011b, 499, /* ě Ě */
- 0x011d, 499, /* ĝ Ĝ */
- 0x011f, 499, /* ğ Ğ */
- 0x0121, 499, /* ġ Ġ */
- 0x0123, 499, /* ģ Ģ */
- 0x0125, 499, /* ĥ Ĥ */
- 0x0127, 499, /* ħ Ħ */
- 0x0129, 499, /* ĩ Ĩ */
- 0x012b, 499, /* ī Ī */
- 0x012d, 499, /* ĭ Ĭ */
- 0x012f, 499, /* į Į */
- 0x0131, 268, /* ı I */
- 0x0133, 499, /* ij IJ */
- 0x0135, 499, /* ĵ Ĵ */
- 0x0137, 499, /* ķ Ķ */
- 0x013a, 499, /* ĺ Ĺ */
- 0x013c, 499, /* ļ Ļ */
- 0x013e, 499, /* ľ Ľ */
- 0x0140, 499, /* ŀ Ŀ */
- 0x0142, 499, /* ł Ł */
- 0x0144, 499, /* ń Ń */
- 0x0146, 499, /* ņ Ņ */
- 0x0148, 499, /* ň Ň */
- 0x014b, 499, /* ŋ Ŋ */
- 0x014d, 499, /* ō Ō */
- 0x014f, 499, /* ŏ Ŏ */
- 0x0151, 499, /* ő Ő */
- 0x0153, 499, /* œ Œ */
- 0x0155, 499, /* ŕ Ŕ */
- 0x0157, 499, /* ŗ Ŗ */
- 0x0159, 499, /* ř Ř */
- 0x015b, 499, /* ś Ś */
- 0x015d, 499, /* ŝ Ŝ */
- 0x015f, 499, /* ş Ş */
- 0x0161, 499, /* š Š */
- 0x0163, 499, /* ţ Ţ */
- 0x0165, 499, /* ť Ť */
- 0x0167, 499, /* ŧ Ŧ */
- 0x0169, 499, /* ũ Ũ */
- 0x016b, 499, /* ū Ū */
- 0x016d, 499, /* ŭ Ŭ */
- 0x016f, 499, /* ů Ů */
- 0x0171, 499, /* ű Ű */
- 0x0173, 499, /* ų Ų */
- 0x0175, 499, /* ŵ Ŵ */
- 0x0177, 499, /* ŷ Ŷ */
- 0x017a, 499, /* ź Ź */
- 0x017c, 499, /* ż Ż */
- 0x017e, 499, /* ž Ž */
- 0x017f, 200, /* ſ S */
- 0x0183, 499, /* ƃ Ƃ */
- 0x0185, 499, /* ƅ Ƅ */
- 0x0188, 499, /* ƈ Ƈ */
- 0x018c, 499, /* ƌ Ƌ */
- 0x0192, 499, /* ƒ Ƒ */
- 0x0199, 499, /* ƙ Ƙ */
- 0x01a1, 499, /* ơ Ơ */
- 0x01a3, 499, /* ƣ Ƣ */
- 0x01a5, 499, /* ƥ Ƥ */
- 0x01a8, 499, /* ƨ Ƨ */
- 0x01ad, 499, /* ƭ Ƭ */
- 0x01b0, 499, /* ư Ư */
- 0x01b4, 499, /* ƴ Ƴ */
- 0x01b6, 499, /* ƶ Ƶ */
- 0x01b9, 499, /* ƹ Ƹ */
- 0x01bd, 499, /* ƽ Ƽ */
- 0x01c5, 499, /* Dž DŽ */
- 0x01c6, 498, /* dž DŽ */
- 0x01c8, 499, /* Lj LJ */
- 0x01c9, 498, /* lj LJ */
- 0x01cb, 499, /* Nj NJ */
- 0x01cc, 498, /* nj NJ */
- 0x01ce, 499, /* ǎ Ǎ */
- 0x01d0, 499, /* ǐ Ǐ */
- 0x01d2, 499, /* ǒ Ǒ */
- 0x01d4, 499, /* ǔ Ǔ */
- 0x01d6, 499, /* ǖ Ǖ */
- 0x01d8, 499, /* ǘ Ǘ */
- 0x01da, 499, /* ǚ Ǚ */
- 0x01dc, 499, /* ǜ Ǜ */
- 0x01df, 499, /* ǟ Ǟ */
- 0x01e1, 499, /* ǡ Ǡ */
- 0x01e3, 499, /* ǣ Ǣ */
- 0x01e5, 499, /* ǥ Ǥ */
- 0x01e7, 499, /* ǧ Ǧ */
- 0x01e9, 499, /* ǩ Ǩ */
- 0x01eb, 499, /* ǫ Ǫ */
- 0x01ed, 499, /* ǭ Ǭ */
- 0x01ef, 499, /* ǯ Ǯ */
- 0x01f2, 499, /* Dz DZ */
- 0x01f3, 498, /* dz DZ */
- 0x01f5, 499, /* ǵ Ǵ */
- 0x01fb, 499, /* ǻ Ǻ */
- 0x01fd, 499, /* ǽ Ǽ */
- 0x01ff, 499, /* ǿ Ǿ */
- 0x0201, 499, /* ȁ Ȁ */
- 0x0203, 499, /* ȃ Ȃ */
- 0x0205, 499, /* ȅ Ȅ */
- 0x0207, 499, /* ȇ Ȇ */
- 0x0209, 499, /* ȉ Ȉ */
- 0x020b, 499, /* ȋ Ȋ */
- 0x020d, 499, /* ȍ Ȍ */
- 0x020f, 499, /* ȏ Ȏ */
- 0x0211, 499, /* ȑ Ȑ */
- 0x0213, 499, /* ȓ Ȓ */
- 0x0215, 499, /* ȕ Ȕ */
- 0x0217, 499, /* ȗ Ȗ */
- 0x0253, 290, /* ɓ Ɓ */
- 0x0254, 294, /* ɔ Ɔ */
- 0x025b, 297, /* ɛ Ɛ */
- 0x0260, 295, /* ɠ Ɠ */
- 0x0263, 293, /* ɣ Ɣ */
- 0x0268, 291, /* ɨ Ɨ */
- 0x0269, 289, /* ɩ Ɩ */
- 0x026f, 289, /* ɯ Ɯ */
- 0x0272, 287, /* ɲ Ɲ */
- 0x0283, 282, /* ʃ Ʃ */
- 0x0288, 282, /* ʈ Ʈ */
- 0x0292, 281, /* ʒ Ʒ */
- 0x03ac, 462, /* ά Ά */
- 0x03cc, 436, /* ό Ό */
- 0x03d0, 438, /* ϐ Β */
- 0x03d1, 443, /* ϑ Θ */
- 0x03d5, 453, /* ϕ Φ */
- 0x03d6, 446, /* ϖ Π */
- 0x03e3, 499, /* ϣ Ϣ */
- 0x03e5, 499, /* ϥ Ϥ */
- 0x03e7, 499, /* ϧ Ϧ */
- 0x03e9, 499, /* ϩ Ϩ */
- 0x03eb, 499, /* ϫ Ϫ */
- 0x03ed, 499, /* ϭ Ϭ */
- 0x03ef, 499, /* ϯ Ϯ */
- 0x03f0, 414, /* ϰ Κ */
- 0x03f1, 420, /* ϱ Ρ */
- 0x0461, 499, /* ѡ Ѡ */
- 0x0463, 499, /* ѣ Ѣ */
- 0x0465, 499, /* ѥ Ѥ */
- 0x0467, 499, /* ѧ Ѧ */
- 0x0469, 499, /* ѩ Ѩ */
- 0x046b, 499, /* ѫ Ѫ */
- 0x046d, 499, /* ѭ Ѭ */
- 0x046f, 499, /* ѯ Ѯ */
- 0x0471, 499, /* ѱ Ѱ */
- 0x0473, 499, /* ѳ Ѳ */
- 0x0475, 499, /* ѵ Ѵ */
- 0x0477, 499, /* ѷ Ѷ */
- 0x0479, 499, /* ѹ Ѹ */
- 0x047b, 499, /* ѻ Ѻ */
- 0x047d, 499, /* ѽ Ѽ */
- 0x047f, 499, /* ѿ Ѿ */
- 0x0481, 499, /* ҁ Ҁ */
- 0x0491, 499, /* ґ Ґ */
- 0x0493, 499, /* ғ Ғ */
- 0x0495, 499, /* ҕ Ҕ */
- 0x0497, 499, /* җ Җ */
- 0x0499, 499, /* ҙ Ҙ */
- 0x049b, 499, /* қ Қ */
- 0x049d, 499, /* ҝ Ҝ */
- 0x049f, 499, /* ҟ Ҟ */
- 0x04a1, 499, /* ҡ Ҡ */
- 0x04a3, 499, /* ң Ң */
- 0x04a5, 499, /* ҥ Ҥ */
- 0x04a7, 499, /* ҧ Ҧ */
- 0x04a9, 499, /* ҩ Ҩ */
- 0x04ab, 499, /* ҫ Ҫ */
- 0x04ad, 499, /* ҭ Ҭ */
- 0x04af, 499, /* ү Ү */
- 0x04b1, 499, /* ұ Ұ */
- 0x04b3, 499, /* ҳ Ҳ */
- 0x04b5, 499, /* ҵ Ҵ */
- 0x04b7, 499, /* ҷ Ҷ */
- 0x04b9, 499, /* ҹ Ҹ */
- 0x04bb, 499, /* һ Һ */
- 0x04bd, 499, /* ҽ Ҽ */
- 0x04bf, 499, /* ҿ Ҿ */
- 0x04c2, 499, /* ӂ Ӂ */
- 0x04c4, 499, /* ӄ Ӄ */
- 0x04c8, 499, /* ӈ Ӈ */
- 0x04cc, 499, /* ӌ Ӌ */
- 0x04d1, 499, /* ӑ Ӑ */
- 0x04d3, 499, /* ӓ Ӓ */
- 0x04d5, 499, /* ӕ Ӕ */
- 0x04d7, 499, /* ӗ Ӗ */
- 0x04d9, 499, /* ә Ә */
- 0x04db, 499, /* ӛ Ӛ */
- 0x04dd, 499, /* ӝ Ӝ */
- 0x04df, 499, /* ӟ Ӟ */
- 0x04e1, 499, /* ӡ Ӡ */
- 0x04e3, 499, /* ӣ Ӣ */
- 0x04e5, 499, /* ӥ Ӥ */
- 0x04e7, 499, /* ӧ Ӧ */
- 0x04e9, 499, /* ө Ө */
- 0x04eb, 499, /* ӫ Ӫ */
- 0x04ef, 499, /* ӯ Ӯ */
- 0x04f1, 499, /* ӱ Ӱ */
- 0x04f3, 499, /* ӳ Ӳ */
- 0x04f5, 499, /* ӵ Ӵ */
- 0x04f9, 499, /* ӹ Ӹ */
- 0x1e01, 499, /* ḁ Ḁ */
- 0x1e03, 499, /* ḃ Ḃ */
- 0x1e05, 499, /* ḅ Ḅ */
- 0x1e07, 499, /* ḇ Ḇ */
- 0x1e09, 499, /* ḉ Ḉ */
- 0x1e0b, 499, /* ḋ Ḋ */
- 0x1e0d, 499, /* ḍ Ḍ */
- 0x1e0f, 499, /* ḏ Ḏ */
- 0x1e11, 499, /* ḑ Ḑ */
- 0x1e13, 499, /* ḓ Ḓ */
- 0x1e15, 499, /* ḕ Ḕ */
- 0x1e17, 499, /* ḗ Ḗ */
- 0x1e19, 499, /* ḙ Ḙ */
- 0x1e1b, 499, /* ḛ Ḛ */
- 0x1e1d, 499, /* ḝ Ḝ */
- 0x1e1f, 499, /* ḟ Ḟ */
- 0x1e21, 499, /* ḡ Ḡ */
- 0x1e23, 499, /* ḣ Ḣ */
- 0x1e25, 499, /* ḥ Ḥ */
- 0x1e27, 499, /* ḧ Ḧ */
- 0x1e29, 499, /* ḩ Ḩ */
- 0x1e2b, 499, /* ḫ Ḫ */
- 0x1e2d, 499, /* ḭ Ḭ */
- 0x1e2f, 499, /* ḯ Ḯ */
- 0x1e31, 499, /* ḱ Ḱ */
- 0x1e33, 499, /* ḳ Ḳ */
- 0x1e35, 499, /* ḵ Ḵ */
- 0x1e37, 499, /* ḷ Ḷ */
- 0x1e39, 499, /* ḹ Ḹ */
- 0x1e3b, 499, /* ḻ Ḻ */
- 0x1e3d, 499, /* ḽ Ḽ */
- 0x1e3f, 499, /* ḿ Ḿ */
- 0x1e41, 499, /* ṁ Ṁ */
- 0x1e43, 499, /* ṃ Ṃ */
- 0x1e45, 499, /* ṅ Ṅ */
- 0x1e47, 499, /* ṇ Ṇ */
- 0x1e49, 499, /* ṉ Ṉ */
- 0x1e4b, 499, /* ṋ Ṋ */
- 0x1e4d, 499, /* ṍ Ṍ */
- 0x1e4f, 499, /* ṏ Ṏ */
- 0x1e51, 499, /* ṑ Ṑ */
- 0x1e53, 499, /* ṓ Ṓ */
- 0x1e55, 499, /* ṕ Ṕ */
- 0x1e57, 499, /* ṗ Ṗ */
- 0x1e59, 499, /* ṙ Ṙ */
- 0x1e5b, 499, /* ṛ Ṛ */
- 0x1e5d, 499, /* ṝ Ṝ */
- 0x1e5f, 499, /* ṟ Ṟ */
- 0x1e61, 499, /* ṡ Ṡ */
- 0x1e63, 499, /* ṣ Ṣ */
- 0x1e65, 499, /* ṥ Ṥ */
- 0x1e67, 499, /* ṧ Ṧ */
- 0x1e69, 499, /* ṩ Ṩ */
- 0x1e6b, 499, /* ṫ Ṫ */
- 0x1e6d, 499, /* ṭ Ṭ */
- 0x1e6f, 499, /* ṯ Ṯ */
- 0x1e71, 499, /* ṱ Ṱ */
- 0x1e73, 499, /* ṳ Ṳ */
- 0x1e75, 499, /* ṵ Ṵ */
- 0x1e77, 499, /* ṷ Ṷ */
- 0x1e79, 499, /* ṹ Ṹ */
- 0x1e7b, 499, /* ṻ Ṻ */
- 0x1e7d, 499, /* ṽ Ṽ */
- 0x1e7f, 499, /* ṿ Ṿ */
- 0x1e81, 499, /* ẁ Ẁ */
- 0x1e83, 499, /* ẃ Ẃ */
- 0x1e85, 499, /* ẅ Ẅ */
- 0x1e87, 499, /* ẇ Ẇ */
- 0x1e89, 499, /* ẉ Ẉ */
- 0x1e8b, 499, /* ẋ Ẋ */
- 0x1e8d, 499, /* ẍ Ẍ */
- 0x1e8f, 499, /* ẏ Ẏ */
- 0x1e91, 499, /* ẑ Ẑ */
- 0x1e93, 499, /* ẓ Ẓ */
- 0x1e95, 499, /* ẕ Ẕ */
- 0x1ea1, 499, /* ạ Ạ */
- 0x1ea3, 499, /* ả Ả */
- 0x1ea5, 499, /* ấ Ấ */
- 0x1ea7, 499, /* ầ Ầ */
- 0x1ea9, 499, /* ẩ Ẩ */
- 0x1eab, 499, /* ẫ Ẫ */
- 0x1ead, 499, /* ậ Ậ */
- 0x1eaf, 499, /* ắ Ắ */
- 0x1eb1, 499, /* ằ Ằ */
- 0x1eb3, 499, /* ẳ Ẳ */
- 0x1eb5, 499, /* ẵ Ẵ */
- 0x1eb7, 499, /* ặ Ặ */
- 0x1eb9, 499, /* ẹ Ẹ */
- 0x1ebb, 499, /* ẻ Ẻ */
- 0x1ebd, 499, /* ẽ Ẽ */
- 0x1ebf, 499, /* ế Ế */
- 0x1ec1, 499, /* ề Ề */
- 0x1ec3, 499, /* ể Ể */
- 0x1ec5, 499, /* ễ Ễ */
- 0x1ec7, 499, /* ệ Ệ */
- 0x1ec9, 499, /* ỉ Ỉ */
- 0x1ecb, 499, /* ị Ị */
- 0x1ecd, 499, /* ọ Ọ */
- 0x1ecf, 499, /* ỏ Ỏ */
- 0x1ed1, 499, /* ố Ố */
- 0x1ed3, 499, /* ồ Ồ */
- 0x1ed5, 499, /* ổ Ổ */
- 0x1ed7, 499, /* ỗ Ỗ */
- 0x1ed9, 499, /* ộ Ộ */
- 0x1edb, 499, /* ớ Ớ */
- 0x1edd, 499, /* ờ Ờ */
- 0x1edf, 499, /* ở Ở */
- 0x1ee1, 499, /* ỡ Ỡ */
- 0x1ee3, 499, /* ợ Ợ */
- 0x1ee5, 499, /* ụ Ụ */
- 0x1ee7, 499, /* ủ Ủ */
- 0x1ee9, 499, /* ứ Ứ */
- 0x1eeb, 499, /* ừ Ừ */
- 0x1eed, 499, /* ử Ử */
- 0x1eef, 499, /* ữ Ữ */
- 0x1ef1, 499, /* ự Ự */
- 0x1ef3, 499, /* ỳ Ỳ */
- 0x1ef5, 499, /* ỵ Ỵ */
- 0x1ef7, 499, /* ỷ Ỷ */
- 0x1ef9, 499, /* ỹ Ỹ */
- 0x1f51, 508, /* ὑ Ὑ */
- 0x1f53, 508, /* ὓ Ὓ */
- 0x1f55, 508, /* ὕ Ὕ */
- 0x1f57, 508, /* ὗ Ὗ */
- 0x1fb3, 509, /* ᾳ ᾼ */
- 0x1fc3, 509, /* ῃ ῌ */
- 0x1fe5, 507, /* ῥ Ῥ */
- 0x1ff3, 509, /* ῳ ῼ */
-};
-
-static Rune __isdigitr[] = {
- 0x0030, 0x0039,
- 0x0660, 0x0669,
- 0x06f0, 0x06f9,
- 0x07c0, 0x07c9,
- 0x0966, 0x096f,
- 0x09e6, 0x09ef,
- 0x0a66, 0x0a6f,
- 0x0ae6, 0x0aef,
- 0x0b66, 0x0b6f,
- 0x0be6, 0x0bef,
- 0x0c66, 0x0c6f,
- 0x0ce6, 0x0cef,
- 0x0d66, 0x0d6f,
- 0x0e50, 0x0e59,
- 0x0ed0, 0x0ed9,
- 0x0f20, 0x0f29,
- 0x1040, 0x1049,
- 0x17e0, 0x17e9,
- 0x1810, 0x1819,
- 0x1946, 0x194f,
- 0x19d0, 0x19d9,
- 0x1b50, 0x1b59,
- 0xff10, 0xff19,
- 0x104a0, 0x104a9,
- 0x1d7ce, 0x1d7ff,
-};
-
-/*
- * upper case ranges
- * 3rd col is conversion excess 500
- */
-static
-Rune _tolower2[] =
-{
- 0x0041, 0x005a, 532, /* A-Z a-z */
- 0x00c0, 0x00d6, 532, /* À-Ö à-ö */
- 0x00d8, 0x00de, 532, /* Ø-Þ ø-þ */
- 0x0189, 0x018a, 705, /* Ɖ-Ɗ ɖ-ɗ */
- 0x018e, 0x018f, 702, /* Ǝ-Ə ɘ-ə */
- 0x01b1, 0x01b2, 717, /* Ʊ-Ʋ ʊ-ʋ */
- 0x0388, 0x038a, 537, /* Έ-Ί έ-ί */
- 0x038e, 0x038f, 563, /* Ύ-Ώ ύ-ώ */
- 0x0391, 0x03a1, 532, /* Α-Ρ α-ρ */
- 0x03a3, 0x03ab, 532, /* Σ-Ϋ σ-ϋ */
- 0x0401, 0x040c, 580, /* Ё-Ќ ё-ќ */
- 0x040e, 0x040f, 580, /* Ў-Џ ў-џ */
- 0x0410, 0x042f, 532, /* А-Я а-я */
- 0x0531, 0x0556, 548, /* Ա-Ֆ ա-ֆ */
- 0x10a0, 0x10c5, 548, /* Ⴀ-Ⴥ ა-ჵ */
- 0x1f08, 0x1f0f, 492, /* Ἀ-Ἇ ἀ-ἇ */
- 0x1f18, 0x1f1d, 492, /* Ἐ-Ἕ ἐ-ἕ */
- 0x1f28, 0x1f2f, 492, /* Ἠ-Ἧ ἠ-ἧ */
- 0x1f38, 0x1f3f, 492, /* Ἰ-Ἷ ἰ-ἷ */
- 0x1f48, 0x1f4d, 492, /* Ὀ-Ὅ ὀ-ὅ */
- 0x1f68, 0x1f6f, 492, /* Ὠ-Ὧ ὠ-ὧ */
- 0x1f88, 0x1f8f, 492, /* ᾈ-ᾏ ᾀ-ᾇ */
- 0x1f98, 0x1f9f, 492, /* ᾘ-ᾟ ᾐ-ᾗ */
- 0x1fa8, 0x1faf, 492, /* ᾨ-ᾯ ᾠ-ᾧ */
- 0x1fb8, 0x1fb9, 492, /* Ᾰ-Ᾱ ᾰ-ᾱ */
- 0x1fba, 0x1fbb, 426, /* Ὰ-Ά ὰ-ά */
- 0x1fc8, 0x1fcb, 414, /* Ὲ-Ή ὲ-ή */
- 0x1fd8, 0x1fd9, 492, /* Ῐ-Ῑ ῐ-ῑ */
- 0x1fda, 0x1fdb, 400, /* Ὶ-Ί ὶ-ί */
- 0x1fe8, 0x1fe9, 492, /* Ῠ-Ῡ ῠ-ῡ */
- 0x1fea, 0x1feb, 388, /* Ὺ-Ύ ὺ-ύ */
- 0x1ff8, 0x1ff9, 372, /* Ὸ-Ό ὸ-ό */
- 0x1ffa, 0x1ffb, 374, /* Ὼ-Ώ ὼ-ώ */
- 0x2160, 0x216f, 516, /* Ⅰ-Ⅿ ⅰ-ⅿ */
- 0x24b6, 0x24cf, 526, /* Ⓐ-Ⓩ ⓐ-ⓩ */
- 0xff21, 0xff3a, 532, /* A-Z a-z */
-};
-
-/*
- * upper case singlets
- * 2nd col is conversion excess 500
- */
-static
-Rune _tolower1[] =
-{
- 0x0100, 501, /* Ā ā */
- 0x0102, 501, /* Ă ă */
- 0x0104, 501, /* Ą ą */
- 0x0106, 501, /* Ć ć */
- 0x0108, 501, /* Ĉ ĉ */
- 0x010a, 501, /* Ċ ċ */
- 0x010c, 501, /* Č č */
- 0x010e, 501, /* Ď ď */
- 0x0110, 501, /* Đ đ */
- 0x0112, 501, /* Ē ē */
- 0x0114, 501, /* Ĕ ĕ */
- 0x0116, 501, /* Ė ė */
- 0x0118, 501, /* Ę ę */
- 0x011a, 501, /* Ě ě */
- 0x011c, 501, /* Ĝ ĝ */
- 0x011e, 501, /* Ğ ğ */
- 0x0120, 501, /* Ġ ġ */
- 0x0122, 501, /* Ģ ģ */
- 0x0124, 501, /* Ĥ ĥ */
- 0x0126, 501, /* Ħ ħ */
- 0x0128, 501, /* Ĩ ĩ */
- 0x012a, 501, /* Ī ī */
- 0x012c, 501, /* Ĭ ĭ */
- 0x012e, 501, /* Į į */
- 0x0130, 301, /* İ i */
- 0x0132, 501, /* IJ ij */
- 0x0134, 501, /* Ĵ ĵ */
- 0x0136, 501, /* Ķ ķ */
- 0x0139, 501, /* Ĺ ĺ */
- 0x013b, 501, /* Ļ ļ */
- 0x013d, 501, /* Ľ ľ */
- 0x013f, 501, /* Ŀ ŀ */
- 0x0141, 501, /* Ł ł */
- 0x0143, 501, /* Ń ń */
- 0x0145, 501, /* Ņ ņ */
- 0x0147, 501, /* Ň ň */
- 0x014a, 501, /* Ŋ ŋ */
- 0x014c, 501, /* Ō ō */
- 0x014e, 501, /* Ŏ ŏ */
- 0x0150, 501, /* Ő ő */
- 0x0152, 501, /* Œ œ */
- 0x0154, 501, /* Ŕ ŕ */
- 0x0156, 501, /* Ŗ ŗ */
- 0x0158, 501, /* Ř ř */
- 0x015a, 501, /* Ś ś */
- 0x015c, 501, /* Ŝ ŝ */
- 0x015e, 501, /* Ş ş */
- 0x0160, 501, /* Š š */
- 0x0162, 501, /* Ţ ţ */
- 0x0164, 501, /* Ť ť */
- 0x0166, 501, /* Ŧ ŧ */
- 0x0168, 501, /* Ũ ũ */
- 0x016a, 501, /* Ū ū */
- 0x016c, 501, /* Ŭ ŭ */
- 0x016e, 501, /* Ů ů */
- 0x0170, 501, /* Ű ű */
- 0x0172, 501, /* Ų ų */
- 0x0174, 501, /* Ŵ ŵ */
- 0x0176, 501, /* Ŷ ŷ */
- 0x0178, 379, /* Ÿ ÿ */
- 0x0179, 501, /* Ź ź */
- 0x017b, 501, /* Ż ż */
- 0x017d, 501, /* Ž ž */
- 0x0181, 710, /* Ɓ ɓ */
- 0x0182, 501, /* Ƃ ƃ */
- 0x0184, 501, /* Ƅ ƅ */
- 0x0186, 706, /* Ɔ ɔ */
- 0x0187, 501, /* Ƈ ƈ */
- 0x018b, 501, /* Ƌ ƌ */
- 0x0190, 703, /* Ɛ ɛ */
- 0x0191, 501, /* Ƒ ƒ */
- 0x0193, 705, /* Ɠ ɠ */
- 0x0194, 707, /* Ɣ ɣ */
- 0x0196, 711, /* Ɩ ɩ */
- 0x0197, 709, /* Ɨ ɨ */
- 0x0198, 501, /* Ƙ ƙ */
- 0x019c, 711, /* Ɯ ɯ */
- 0x019d, 713, /* Ɲ ɲ */
- 0x01a0, 501, /* Ơ ơ */
- 0x01a2, 501, /* Ƣ ƣ */
- 0x01a4, 501, /* Ƥ ƥ */
- 0x01a7, 501, /* Ƨ ƨ */
- 0x01a9, 718, /* Ʃ ʃ */
- 0x01ac, 501, /* Ƭ ƭ */
- 0x01ae, 718, /* Ʈ ʈ */
- 0x01af, 501, /* Ư ư */
- 0x01b3, 501, /* Ƴ ƴ */
- 0x01b5, 501, /* Ƶ ƶ */
- 0x01b7, 719, /* Ʒ ʒ */
- 0x01b8, 501, /* Ƹ ƹ */
- 0x01bc, 501, /* Ƽ ƽ */
- 0x01c4, 502, /* DŽ dž */
- 0x01c5, 501, /* Dž dž */
- 0x01c7, 502, /* LJ lj */
- 0x01c8, 501, /* Lj lj */
- 0x01ca, 502, /* NJ nj */
- 0x01cb, 501, /* Nj nj */
- 0x01cd, 501, /* Ǎ ǎ */
- 0x01cf, 501, /* Ǐ ǐ */
- 0x01d1, 501, /* Ǒ ǒ */
- 0x01d3, 501, /* Ǔ ǔ */
- 0x01d5, 501, /* Ǖ ǖ */
- 0x01d7, 501, /* Ǘ ǘ */
- 0x01d9, 501, /* Ǚ ǚ */
- 0x01db, 501, /* Ǜ ǜ */
- 0x01de, 501, /* Ǟ ǟ */
- 0x01e0, 501, /* Ǡ ǡ */
- 0x01e2, 501, /* Ǣ ǣ */
- 0x01e4, 501, /* Ǥ ǥ */
- 0x01e6, 501, /* Ǧ ǧ */
- 0x01e8, 501, /* Ǩ ǩ */
- 0x01ea, 501, /* Ǫ ǫ */
- 0x01ec, 501, /* Ǭ ǭ */
- 0x01ee, 501, /* Ǯ ǯ */
- 0x01f1, 502, /* DZ dz */
- 0x01f2, 501, /* Dz dz */
- 0x01f4, 501, /* Ǵ ǵ */
- 0x01fa, 501, /* Ǻ ǻ */
- 0x01fc, 501, /* Ǽ ǽ */
- 0x01fe, 501, /* Ǿ ǿ */
- 0x0200, 501, /* Ȁ ȁ */
- 0x0202, 501, /* Ȃ ȃ */
- 0x0204, 501, /* Ȅ ȅ */
- 0x0206, 501, /* Ȇ ȇ */
- 0x0208, 501, /* Ȉ ȉ */
- 0x020a, 501, /* Ȋ ȋ */
- 0x020c, 501, /* Ȍ ȍ */
- 0x020e, 501, /* Ȏ ȏ */
- 0x0210, 501, /* Ȑ ȑ */
- 0x0212, 501, /* Ȓ ȓ */
- 0x0214, 501, /* Ȕ ȕ */
- 0x0216, 501, /* Ȗ ȗ */
- 0x0386, 538, /* Ά ά */
- 0x038c, 564, /* Ό ό */
- 0x03e2, 501, /* Ϣ ϣ */
- 0x03e4, 501, /* Ϥ ϥ */
- 0x03e6, 501, /* Ϧ ϧ */
- 0x03e8, 501, /* Ϩ ϩ */
- 0x03ea, 501, /* Ϫ ϫ */
- 0x03ec, 501, /* Ϭ ϭ */
- 0x03ee, 501, /* Ϯ ϯ */
- 0x0460, 501, /* Ѡ ѡ */
- 0x0462, 501, /* Ѣ ѣ */
- 0x0464, 501, /* Ѥ ѥ */
- 0x0466, 501, /* Ѧ ѧ */
- 0x0468, 501, /* Ѩ ѩ */
- 0x046a, 501, /* Ѫ ѫ */
- 0x046c, 501, /* Ѭ ѭ */
- 0x046e, 501, /* Ѯ ѯ */
- 0x0470, 501, /* Ѱ ѱ */
- 0x0472, 501, /* Ѳ ѳ */
- 0x0474, 501, /* Ѵ ѵ */
- 0x0476, 501, /* Ѷ ѷ */
- 0x0478, 501, /* Ѹ ѹ */
- 0x047a, 501, /* Ѻ ѻ */
- 0x047c, 501, /* Ѽ ѽ */
- 0x047e, 501, /* Ѿ ѿ */
- 0x0480, 501, /* Ҁ ҁ */
- 0x0490, 501, /* Ґ ґ */
- 0x0492, 501, /* Ғ ғ */
- 0x0494, 501, /* Ҕ ҕ */
- 0x0496, 501, /* Җ җ */
- 0x0498, 501, /* Ҙ ҙ */
- 0x049a, 501, /* Қ қ */
- 0x049c, 501, /* Ҝ ҝ */
- 0x049e, 501, /* Ҟ ҟ */
- 0x04a0, 501, /* Ҡ ҡ */
- 0x04a2, 501, /* Ң ң */
- 0x04a4, 501, /* Ҥ ҥ */
- 0x04a6, 501, /* Ҧ ҧ */
- 0x04a8, 501, /* Ҩ ҩ */
- 0x04aa, 501, /* Ҫ ҫ */
- 0x04ac, 501, /* Ҭ ҭ */
- 0x04ae, 501, /* Ү ү */
- 0x04b0, 501, /* Ұ ұ */
- 0x04b2, 501, /* Ҳ ҳ */
- 0x04b4, 501, /* Ҵ ҵ */
- 0x04b6, 501, /* Ҷ ҷ */
- 0x04b8, 501, /* Ҹ ҹ */
- 0x04ba, 501, /* Һ һ */
- 0x04bc, 501, /* Ҽ ҽ */
- 0x04be, 501, /* Ҿ ҿ */
- 0x04c1, 501, /* Ӂ ӂ */
- 0x04c3, 501, /* Ӄ ӄ */
- 0x04c7, 501, /* Ӈ ӈ */
- 0x04cb, 501, /* Ӌ ӌ */
- 0x04d0, 501, /* Ӑ ӑ */
- 0x04d2, 501, /* Ӓ ӓ */
- 0x04d4, 501, /* Ӕ ӕ */
- 0x04d6, 501, /* Ӗ ӗ */
- 0x04d8, 501, /* Ә ә */
- 0x04da, 501, /* Ӛ ӛ */
- 0x04dc, 501, /* Ӝ ӝ */
- 0x04de, 501, /* Ӟ ӟ */
- 0x04e0, 501, /* Ӡ ӡ */
- 0x04e2, 501, /* Ӣ ӣ */
- 0x04e4, 501, /* Ӥ ӥ */
- 0x04e6, 501, /* Ӧ ӧ */
- 0x04e8, 501, /* Ө ө */
- 0x04ea, 501, /* Ӫ ӫ */
- 0x04ee, 501, /* Ӯ ӯ */
- 0x04f0, 501, /* Ӱ ӱ */
- 0x04f2, 501, /* Ӳ ӳ */
- 0x04f4, 501, /* Ӵ ӵ */
- 0x04f8, 501, /* Ӹ ӹ */
- 0x1e00, 501, /* Ḁ ḁ */
- 0x1e02, 501, /* Ḃ ḃ */
- 0x1e04, 501, /* Ḅ ḅ */
- 0x1e06, 501, /* Ḇ ḇ */
- 0x1e08, 501, /* Ḉ ḉ */
- 0x1e0a, 501, /* Ḋ ḋ */
- 0x1e0c, 501, /* Ḍ ḍ */
- 0x1e0e, 501, /* Ḏ ḏ */
- 0x1e10, 501, /* Ḑ ḑ */
- 0x1e12, 501, /* Ḓ ḓ */
- 0x1e14, 501, /* Ḕ ḕ */
- 0x1e16, 501, /* Ḗ ḗ */
- 0x1e18, 501, /* Ḙ ḙ */
- 0x1e1a, 501, /* Ḛ ḛ */
- 0x1e1c, 501, /* Ḝ ḝ */
- 0x1e1e, 501, /* Ḟ ḟ */
- 0x1e20, 501, /* Ḡ ḡ */
- 0x1e22, 501, /* Ḣ ḣ */
- 0x1e24, 501, /* Ḥ ḥ */
- 0x1e26, 501, /* Ḧ ḧ */
- 0x1e28, 501, /* Ḩ ḩ */
- 0x1e2a, 501, /* Ḫ ḫ */
- 0x1e2c, 501, /* Ḭ ḭ */
- 0x1e2e, 501, /* Ḯ ḯ */
- 0x1e30, 501, /* Ḱ ḱ */
- 0x1e32, 501, /* Ḳ ḳ */
- 0x1e34, 501, /* Ḵ ḵ */
- 0x1e36, 501, /* Ḷ ḷ */
- 0x1e38, 501, /* Ḹ ḹ */
- 0x1e3a, 501, /* Ḻ ḻ */
- 0x1e3c, 501, /* Ḽ ḽ */
- 0x1e3e, 501, /* Ḿ ḿ */
- 0x1e40, 501, /* Ṁ ṁ */
- 0x1e42, 501, /* Ṃ ṃ */
- 0x1e44, 501, /* Ṅ ṅ */
- 0x1e46, 501, /* Ṇ ṇ */
- 0x1e48, 501, /* Ṉ ṉ */
- 0x1e4a, 501, /* Ṋ ṋ */
- 0x1e4c, 501, /* Ṍ ṍ */
- 0x1e4e, 501, /* Ṏ ṏ */
- 0x1e50, 501, /* Ṑ ṑ */
- 0x1e52, 501, /* Ṓ ṓ */
- 0x1e54, 501, /* Ṕ ṕ */
- 0x1e56, 501, /* Ṗ ṗ */
- 0x1e58, 501, /* Ṙ ṙ */
- 0x1e5a, 501, /* Ṛ ṛ */
- 0x1e5c, 501, /* Ṝ ṝ */
- 0x1e5e, 501, /* Ṟ ṟ */
- 0x1e60, 501, /* Ṡ ṡ */
- 0x1e62, 501, /* Ṣ ṣ */
- 0x1e64, 501, /* Ṥ ṥ */
- 0x1e66, 501, /* Ṧ ṧ */
- 0x1e68, 501, /* Ṩ ṩ */
- 0x1e6a, 501, /* Ṫ ṫ */
- 0x1e6c, 501, /* Ṭ ṭ */
- 0x1e6e, 501, /* Ṯ ṯ */
- 0x1e70, 501, /* Ṱ ṱ */
- 0x1e72, 501, /* Ṳ ṳ */
- 0x1e74, 501, /* Ṵ ṵ */
- 0x1e76, 501, /* Ṷ ṷ */
- 0x1e78, 501, /* Ṹ ṹ */
- 0x1e7a, 501, /* Ṻ ṻ */
- 0x1e7c, 501, /* Ṽ ṽ */
- 0x1e7e, 501, /* Ṿ ṿ */
- 0x1e80, 501, /* Ẁ ẁ */
- 0x1e82, 501, /* Ẃ ẃ */
- 0x1e84, 501, /* Ẅ ẅ */
- 0x1e86, 501, /* Ẇ ẇ */
- 0x1e88, 501, /* Ẉ ẉ */
- 0x1e8a, 501, /* Ẋ ẋ */
- 0x1e8c, 501, /* Ẍ ẍ */
- 0x1e8e, 501, /* Ẏ ẏ */
- 0x1e90, 501, /* Ẑ ẑ */
- 0x1e92, 501, /* Ẓ ẓ */
- 0x1e94, 501, /* Ẕ ẕ */
- 0x1ea0, 501, /* Ạ ạ */
- 0x1ea2, 501, /* Ả ả */
- 0x1ea4, 501, /* Ấ ấ */
- 0x1ea6, 501, /* Ầ ầ */
- 0x1ea8, 501, /* Ẩ ẩ */
- 0x1eaa, 501, /* Ẫ ẫ */
- 0x1eac, 501, /* Ậ ậ */
- 0x1eae, 501, /* Ắ ắ */
- 0x1eb0, 501, /* Ằ ằ */
- 0x1eb2, 501, /* Ẳ ẳ */
- 0x1eb4, 501, /* Ẵ ẵ */
- 0x1eb6, 501, /* Ặ ặ */
- 0x1eb8, 501, /* Ẹ ẹ */
- 0x1eba, 501, /* Ẻ ẻ */
- 0x1ebc, 501, /* Ẽ ẽ */
- 0x1ebe, 501, /* Ế ế */
- 0x1ec0, 501, /* Ề ề */
- 0x1ec2, 501, /* Ể ể */
- 0x1ec4, 501, /* Ễ ễ */
- 0x1ec6, 501, /* Ệ ệ */
- 0x1ec8, 501, /* Ỉ ỉ */
- 0x1eca, 501, /* Ị ị */
- 0x1ecc, 501, /* Ọ ọ */
- 0x1ece, 501, /* Ỏ ỏ */
- 0x1ed0, 501, /* Ố ố */
- 0x1ed2, 501, /* Ồ ồ */
- 0x1ed4, 501, /* Ổ ổ */
- 0x1ed6, 501, /* Ỗ ỗ */
- 0x1ed8, 501, /* Ộ ộ */
- 0x1eda, 501, /* Ớ ớ */
- 0x1edc, 501, /* Ờ ờ */
- 0x1ede, 501, /* Ở ở */
- 0x1ee0, 501, /* Ỡ ỡ */
- 0x1ee2, 501, /* Ợ ợ */
- 0x1ee4, 501, /* Ụ ụ */
- 0x1ee6, 501, /* Ủ ủ */
- 0x1ee8, 501, /* Ứ ứ */
- 0x1eea, 501, /* Ừ ừ */
- 0x1eec, 501, /* Ử ử */
- 0x1eee, 501, /* Ữ ữ */
- 0x1ef0, 501, /* Ự ự */
- 0x1ef2, 501, /* Ỳ ỳ */
- 0x1ef4, 501, /* Ỵ ỵ */
- 0x1ef6, 501, /* Ỷ ỷ */
- 0x1ef8, 501, /* Ỹ ỹ */
- 0x1f59, 492, /* Ὑ ὑ */
- 0x1f5b, 492, /* Ὓ ὓ */
- 0x1f5d, 492, /* Ὕ ὕ */
- 0x1f5f, 492, /* Ὗ ὗ */
- 0x1fbc, 491, /* ᾼ ᾳ */
- 0x1fcc, 491, /* ῌ ῃ */
- 0x1fec, 493, /* Ῥ ῥ */
- 0x1ffc, 491, /* ῼ ῳ */
-};
-
-/*
- * title characters are those between
- * upper and lower case. ie DZ Dz dz
- */
-static
-Rune _totitle1[] =
-{
- 0x01c4, 501, /* DŽ Dž */
- 0x01c6, 499, /* dž Dž */
- 0x01c7, 501, /* LJ Lj */
- 0x01c9, 499, /* lj Lj */
- 0x01ca, 501, /* NJ Nj */
- 0x01cc, 499, /* nj Nj */
- 0x01f1, 501, /* DZ Dz */
- 0x01f3, 499, /* dz Dz */
-};
-
-#define bsearch xbsearch
-static
-Rune*
-bsearch(Rune c, Rune *t, int n, int ne)
-{
- Rune *p;
- int m;
-
- while(n > 1) {
- m = n/2;
- p = t + m*ne;
- if(c >= p[0]) {
- t = p;
- n = n-m;
- } else
- n = m;
- }
- if(n && c >= t[0])
- return t;
- return 0;
-}
-
-Rune
-tolowerrune(Rune c)
-{
- Rune *p;
-
- p = bsearch(c, _tolower2, nelem(_tolower2)/3, 3);
- if(p && c >= p[0] && c <= p[1])
- return c + p[2] - 500;
- p = bsearch(c, _tolower1, nelem(_tolower1)/2, 2);
- if(p && c == p[0])
- return c + p[1] - 500;
- return c;
-}
-
-Rune
-toupperrune(Rune c)
-{
- Rune *p;
-
- p = bsearch(c, _toupper2, nelem(_toupper2)/3, 3);
- if(p && c >= p[0] && c <= p[1])
- return c + p[2] - 500;
- p = bsearch(c, _toupper1, nelem(_toupper1)/2, 2);
- if(p && c == p[0])
- return c + p[1] - 500;
- return c;
-}
-
-Rune
-totitlerune(Rune c)
-{
- Rune *p;
-
- p = bsearch(c, _totitle1, nelem(_totitle1)/2, 2);
- if(p && c == p[0])
- return c + p[1] - 500;
- return c;
-}
-
-int
-islowerrune(Rune c)
-{
- Rune *p;
-
- p = bsearch(c, _toupper2, nelem(_toupper2)/3, 3);
- if(p && c >= p[0] && c <= p[1])
- return 1;
- p = bsearch(c, _toupper1, nelem(_toupper1)/2, 2);
- if(p && c == p[0])
- return 1;
- return 0;
-}
-
-int
-isupperrune(Rune c)
-{
- Rune *p;
-
- p = bsearch(c, _tolower2, nelem(_tolower2)/3, 3);
- if(p && c >= p[0] && c <= p[1])
- return 1;
- p = bsearch(c, _tolower1, nelem(_tolower1)/2, 2);
- if(p && c == p[0])
- return 1;
- return 0;
-}
-
-int
-isalpharune(Rune c)
-{
- Rune *p;
-
- if(isupperrune(c) || islowerrune(c))
- return 1;
- p = bsearch(c, _alpha2, nelem(_alpha2)/2, 2);
- if(p && c >= p[0] && c <= p[1])
- return 1;
- p = bsearch(c, _alpha1, nelem(_alpha1), 1);
- if(p && c == p[0])
- return 1;
- return 0;
-}
-
-int
-istitlerune(Rune c)
-{
- return isupperrune(c) && islowerrune(c);
-}
-
-int
-isspacerune(Rune c)
-{
- Rune *p;
-
- p = bsearch(c, _space2, nelem(_space2)/2, 2);
- if(p && c >= p[0] && c <= p[1])
- return 1;
- return 0;
-}
-
-int
-isdigitrune(Rune c)
-{
- Rune *p;
-
- p = bsearch(c, __isdigitr, nelem(__isdigitr)/2, 2);
- if(p && c >= p[0] && c <= p[1])
- return 1;
- return 0;
-}
--- a/Makefile
+++ b/Makefile
@@ -61,7 +61,8 @@
3rd/mp/u64.o\
3rd/mt19937-64.o\
3rd/utf/rune.o\
- 3rd/utf/runetype.o\
+ 3rd/utf/runeistype.o\
+ 3rd/utf/runetotype.o\
3rd/utf/utfnlen.o\
.PHONY: all default test bootstrap clean
@@ -82,6 +83,8 @@
flisp.o: flisp.c flisp.h operators.h cvalues.h maxstack.inc opcodes.h builtin_fns.h
flmain.o: flmain.c boot.h flisp.h cvalues.h builtin_fns.h
+3rd/utf/runeistype.o: 3rd/utf/runeistypedata
+3rd/utf/runetotype.o: 3rd/utf/runetotypedata
boot.h: flisp.boot
sed 's,\\,\\\\,g;s,",\\",g;s,^,",g;s,$$,\\n",g' flisp.boot >$@