diff src/scanner.cpp @ 24:2e23b7184d2b

start coding for bad html tag detection
author carl
date Wed, 19 May 2004 21:40:50 -0700
parents 06de5ab6a232
children 6176e7b2e8af
line wrap: on
line diff
--- a/src/scanner.cpp	Wed May 12 13:23:22 2004 -0700
+++ b/src/scanner.cpp	Wed May 19 21:40:50 2004 -0700
@@ -10,12 +10,54 @@
 
 using namespace std;
 
+
+// object to record things we see in the body content
+struct recorder
+{
+    string_set  *html_tags; // valid tags
+    string_set  hosts;
+    int         bad_html_tags;
+    recorder(string_set *html_tags_);
+    ~recorder();
+    void empty();
+    void new_url(char *host);
+    void new_tag(char *tag);
+};
+recorder::recorder(string_set *html_tags_) {
+    html_tags     = html_tags_;
+    bad_html_tags = 0;
+}
+recorder::~recorder() {
+    empty();
+}
+void recorder::empty() {
+    bad_html_tags = 0;
+    discard(hosts);
+}
+void recorder::new_url(char *host) {
+    register_string(hosts, host);
+}
+void recorder::new_tag(char *tag) {
+    string_set::iterator i = html_tags->find(tag);
+    if (i == html_tags->end()) {
+        bad_html_tags++;
+        if (debug_syslog) {
+            char buf[200];
+            snprintf(buf, sizeof(buf), "bad html tag %s", tag);
+            my_syslog(buf);
+        }
+    }
+}
+
+
+
 enum state {// host name recognizer states
             h_init,
             h_host,
 
             // html tag discarder states
             t_init,
+            t_tag,
             t_disc,
 
             // url recognizer states
@@ -63,264 +105,264 @@
 typedef state PARSE[end_state];
 
 static PARSE parse_table[256] = {
-  // h_init, h_host, t_init, t_disc, u_init, u_http, u_sla , u_url,  d_init, d_pcnt, d_1,    e_init, e_amp,  e_num,  m_init, m_eq,   m_1,    b_init, b_lf,   b_lf2,  b_64
+  // h_init, h_host, t_init, t_tag,  t_disc, u_init, u_http, u_sla , u_url,  d_init, d_pcnt, d_1,    e_init, e_amp,  e_num,  m_init, m_eq,   m_1,    b_init, b_lf,   b_lf2,  b_64
 
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x00
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x01
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x02
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x03
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x04
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x05
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x06
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x07
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x08
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x09 <tab>
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_nl,   m_init, b_lf,   b_init, b_lf2,  b_init,  },  // 0x0a <lf>
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x0b
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x0c
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_cr,   m_init, b_init, b_init, b_init, b_cr,    },  // 0x0d <cr>
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x0e
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x0f
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x10
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x11 xon char
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x12
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x13 xoff char
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x14
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x15
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x16
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x17
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x18
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x19
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x1a
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x1b
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x1c
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x1d
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x1e
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x1f
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x20 space
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x21 !
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x22 ""
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_num,  e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x23 #
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x24 $
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_pcnt, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x25 %
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_amp,  e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x26 &
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x27 '
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x28 (
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x29 )
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x2A *
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x2B +
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x2C ,
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x2D -
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x2E .
-    {h_init, h_end,  t_init, t_disc, u_init, u_sla,  u_sla,  u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x2F /
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x30 0
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x31 1
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x32 2
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x33 3
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x34 4
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x35 5
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x36 6
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x37 7
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x38 8
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x39 9
-    {h_init, h_end,  t_init, t_disc, u_http, u_http, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x3A :
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_semi, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x3B ;
-    {h_init, h_end,  t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x3C <
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_eq,   m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x3D =
-    {h_init, h_end,  t_init, t_end,  u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x3E >
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x3F ?
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x40 @
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x41 A
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x42 B
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x43 C
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x44 D
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x45 E
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x46 F
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x47 G
-    {h_host, h_host, t_init, t_disc, u_http, u_http, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x48 H
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x49 I
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x4A J
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x4B K
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x4C L
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x4D M
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x4E N
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x4F O
-    {h_host, h_host, t_init, t_disc, u_http, u_http, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x50 P
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x51 Q
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x52 R
-    {h_host, h_host, t_init, t_disc, u_http, u_http, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x53 S
-    {h_host, h_host, t_init, t_disc, u_http, u_http, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x54 T
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x55 U
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x56 V
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x57 W
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x58 X
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x59 Y
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x5A Z
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x5B [
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x5C brace
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x5D ]
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x5E ^
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x5F _
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x60 `
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x61 a
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x62 b
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x63 c
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x64 d
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x65 e
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x66 f
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x67 g
-    {h_host, h_host, t_init, t_disc, u_http, u_http, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x68 h
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x69 i
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x6A j
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x6B k
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x6C l
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x6D m
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x6E n
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x6F o
-    {h_host, h_host, t_init, t_disc, u_http, u_http, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x70 p
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x71 q
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x72 r
-    {h_host, h_host, t_init, t_disc, u_http, u_http, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x73 s
-    {h_host, h_host, t_init, t_disc, u_http, u_http, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x74 t
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x75 u
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x76 v
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x77 w
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x78 x
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x79 y
-    {h_host, h_host, t_init, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x7A z
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x7B {
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x7C |
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x7D }
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x7E ~
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x7f
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x80
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x81
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x82
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x83
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x84
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x85
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x86
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x87
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x88
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x89
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x8a
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x8b
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x8c
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x8d
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x8e
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x8f
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x90
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x91
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x92
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x93
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x94
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x95
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x96
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x97
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x98
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x99
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x9a
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x9b
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x9c
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x9d
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x9e
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x9f
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa0
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa1
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa2
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa3
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa4
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa5
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa6
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa7
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa8
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa9
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xaa
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xab
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xac
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xad
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xae
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xaf
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb0
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb1
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb2
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb3
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb4
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb5
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb6
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb7
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb8
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb9
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xba
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xbb
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xbc
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xbd
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xbe
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xbf
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc0
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc1
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc2
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc3
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc4
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc5
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc6
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc7
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc8
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc9
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xca
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xcb
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xcc
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xcd
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xce
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xcf
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd0
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd1
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd2
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd3
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd4
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd5
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd6
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd7
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd8
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd9
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xda
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xdb
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xdc
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xdd
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xde
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xdf
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe0
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe1
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe2
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe3
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe4
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe5
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe6
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe7
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe8
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe9
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xea
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xeb
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xec
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xed
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xee
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xef
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf0
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf1
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf2
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf3
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf4
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf5
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf6
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf7
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf8
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf9
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xfa
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xfb
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xfc
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xfd
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xfe
-    {h_init, h_end,  t_init, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xff
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x00
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x01
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x02
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x03
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x04
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x05
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x06
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x07
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x08
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x09 <tab>
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_nl,   m_init, b_lf,   b_init, b_lf2,  b_init,  },  // 0x0a <lf>
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x0b
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x0c
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_cr,   m_init, b_init, b_init, b_init, b_cr,    },  // 0x0d <cr>
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x0e
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x0f
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x10
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x11 xon char
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x12
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x13 xoff char
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x14
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x15
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x16
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x17
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x18
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x19
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x1a
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x1b
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x1c
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x1d
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x1e
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x1f
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x20 space
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x21 !
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x22 ""
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_num,  e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x23 #
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x24 $
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_pcnt, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x25 %
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_amp,  e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x26 &
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x27 '
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x28 (
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x29 )
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x2A *
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x2B +
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x2C ,
+    {h_host, h_host, t_init, t_disc, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x2D -
+    {h_host, h_host, t_init, t_disc, t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x2E .
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_sla,  u_sla,  u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x2F /
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x30 0
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x31 1
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x32 2
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x33 3
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x34 4
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x35 5
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x36 6
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x37 7
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x38 8
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_num,  m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x39 9
+    {h_init, h_end,  t_init, t_disc, t_disc, u_http, u_http, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x3A :
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_semi, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x3B ;
+    {h_init, h_end,  t_tag,  t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x3C <
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_eq,   m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x3D =
+    {h_init, h_end,  t_init, t_end,  t_end,  u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x3E >
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x3F ?
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x40 @
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x41 A
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x42 B
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x43 C
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x44 D
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x45 E
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x46 F
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x47 G
+    {h_host, h_host, t_init, t_tag,  t_disc, u_http, u_http, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x48 H
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x49 I
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x4A J
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x4B K
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x4C L
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x4D M
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x4E N
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x4F O
+    {h_host, h_host, t_init, t_tag,  t_disc, u_http, u_http, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x50 P
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x51 Q
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x52 R
+    {h_host, h_host, t_init, t_tag,  t_disc, u_http, u_http, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x53 S
+    {h_host, h_host, t_init, t_tag,  t_disc, u_http, u_http, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x54 T
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x55 U
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x56 V
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x57 W
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x58 X
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x59 Y
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x5A Z
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x5B [
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x5C brace
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x5D ]
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x5E ^
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x5F _
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x60 `
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x61 a
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x62 b
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x63 c
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x64 d
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x65 e
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_1,    d_2,    e_init, e_init, e_init, m_init, m_1,    m_2,    b_init, b_64,   b_64,   b_64,    },  // 0x66 f
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x67 g
+    {h_host, h_host, t_init, t_tag,  t_disc, u_http, u_http, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x68 h
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x69 i
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x6A j
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x6B k
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x6C l
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x6D m
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x6E n
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x6F o
+    {h_host, h_host, t_init, t_tag,  t_disc, u_http, u_http, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x70 p
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x71 q
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x72 r
+    {h_host, h_host, t_init, t_tag,  t_disc, u_http, u_http, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x73 s
+    {h_host, h_host, t_init, t_tag,  t_disc, u_http, u_http, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x74 t
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x75 u
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x76 v
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x77 w
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x78 x
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x79 y
+    {h_host, h_host, t_init, t_tag,  t_disc, u_init, u_init, u_url,  u_url,  d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_64,   b_64,   b_64,    },  // 0x7A z
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x7B {
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x7C |
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x7D }
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x7E ~
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x7f
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x80
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x81
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x82
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x83
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x84
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x85
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x86
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x87
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x88
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x89
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x8a
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x8b
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x8c
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x8d
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x8e
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x8f
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x90
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x91
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x92
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x93
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x94
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x95
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x96
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x97
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x98
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x99
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x9a
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x9b
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x9c
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x9d
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x9e
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0x9f
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa0
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa1
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa2
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa3
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa4
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa5
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa6
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa7
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa8
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xa9
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xaa
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xab
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xac
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xad
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xae
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xaf
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb0
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb1
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb2
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb3
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb4
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb5
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb6
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb7
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb8
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xb9
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xba
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xbb
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xbc
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xbd
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xbe
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xbf
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc0
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc1
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc2
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc3
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc4
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc5
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc6
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc7
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc8
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xc9
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xca
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xcb
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xcc
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xcd
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xce
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xcf
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd0
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd1
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd2
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd3
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd4
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd5
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd6
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd7
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd8
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xd9
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xda
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xdb
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xdc
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xdd
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xde
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xdf
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe0
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe1
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe2
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe3
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe4
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe5
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe6
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe7
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe8
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xe9
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xea
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xeb
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xec
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xed
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xee
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xef
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf0
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf1
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf2
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf3
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf4
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf5
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf6
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf7
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf8
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xf9
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xfa
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xfb
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xfc
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xfd
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xfe
+    {h_init, h_end,  t_init, t_disc, t_disc, u_init, u_init, u_init, u_reco, d_init, d_init, d_init, e_init, e_init, e_init, m_init, m_init, m_init, b_init, b_init, b_init, b_init,  },  // 0xff
 };
 
 
@@ -858,21 +900,21 @@
     state       init;
     fsa*        next1;
     fsa*        next2;
-    string_set  *hosts;
+    recorder    *memory;
 
-    fsa(state init, fsa* next1_, fsa* next2_, string_set *hosts_);
+    fsa(state init, fsa* next1_, fsa* next2_, recorder *memory_);
     void push(u_char *buf, int len);
     void pusher();
     void error(char *err);
 };
 
-fsa::fsa(state init_, fsa *next1_, fsa *next2_, string_set *hosts_) {
+fsa::fsa(state init_, fsa *next1_, fsa *next2_, recorder *memory_) {
     count = 0;
     st    = init_;
     init  = init_;
     next1 = next1_;
     next2 = next2_;
-    hosts = hosts_;
+    memory = memory_;
 }
 
 void fsa::error(char *err) {
@@ -905,7 +947,7 @@
                     int n = strlen(tld);
                     if (count > n) {
                         if (strncasecmp((const char *)(pending+count-n), tld, n) == 0) {
-                            register_string(*hosts, (char*)pending);
+                            memory->new_url((char*)pending);
                             break;
                         }
                     }
@@ -925,6 +967,11 @@
                 } // fall thru
 
             case t_disc: {
+                if (count > 2) {
+                    pending[--count] = '\0';  // null terminate html tag
+                    for (int i=1; i<count; i++) pending[i] = tolower(pending[i]);
+                    memory->new_tag((char*)pending+1);
+                }
                 count = 0;  // discard all characters
                 } break;
 
@@ -942,7 +989,7 @@
                     if (p              &&                                       // have a leading /
                         strchr(p, '.') &&                                       // require at least one . in a dns name
                         (strncasecmp((const char *)pending, "http", 4) == 0)) { // must start with protocol
-                        register_string(*hosts, ++p);                           // we seem to have a host name, skip the last /
+                        memory->new_url(++p);                           // we seem to have a host name, skip the last /
                     }
                 }
                 st = u_init;
@@ -1041,6 +1088,7 @@
             //////////////////////////////
             //  states that just accumulate characters in the pending buffer
             case h_host:
+            case t_tag:
             case u_http:
             case u_url:
             case u_sla:
@@ -1066,15 +1114,15 @@
     fsa *mime_parser;
     fsa *b64_parser;
 
-    url_scanner(string_set *hosts);
+    url_scanner(recorder *memory);
     ~url_scanner();
     void scan(u_char *buffer, size_t length);
 };
 
-url_scanner::url_scanner(string_set *hosts) {
-    host_parser = new fsa(h_init, NULL,        NULL,        hosts);
-    tags_parser = new fsa(t_init, host_parser, NULL,        NULL);
-    urls_parser = new fsa(u_init, NULL,        NULL,        hosts);
+url_scanner::url_scanner(recorder *memory) {
+    host_parser = new fsa(h_init, NULL,        NULL,        memory);
+    tags_parser = new fsa(t_init, host_parser, NULL,        memory);
+    urls_parser = new fsa(u_init, NULL,        NULL,        memory);
     urld_parser = new fsa(d_init, urls_parser, tags_parser, NULL);
     html_parser = new fsa(e_init, urld_parser, NULL,        NULL);
     mime_parser = new fsa(m_init, html_parser, NULL,        NULL);