diff --git a/lib/hpack.c b/lib/hpack.c new file mode 100644 index 00000000..0d198155 --- /dev/null +++ b/lib/hpack.c @@ -0,0 +1,239 @@ +/* + * Official static header table for HPACK + * +-------+-----------------------------+---------------+ + | 1 | :authority | | + | 2 | :method | GET | + | 3 | :method | POST | + | 4 | :path | / | + | 5 | :path | /index.html | + | 6 | :scheme | http | + | 7 | :scheme | https | + | 8 | :status | 200 | + | 9 | :status | 204 | + | 10 | :status | 206 | + | 11 | :status | 304 | + | 12 | :status | 400 | + | 13 | :status | 404 | + | 14 | :status | 500 | + | 15 | accept-charset | | + | 16 | accept-encoding | gzip, deflate | + | 17 | accept-language | | + | 18 | accept-ranges | | + | 19 | accept | | + | 20 | access-control-allow-origin | | + | 21 | age | | + | 22 | allow | | + | 23 | authorization | | + | 24 | cache-control | | + | 25 | content-disposition | | + | 26 | content-encoding | | + | 27 | content-language | | + | 28 | content-length | | + | 29 | content-location | | + | 30 | content-range | | + | 31 | content-type | | + | 32 | cookie | | + | 33 | date | | + | 34 | etag | | + | 35 | expect | | + | 36 | expires | | + | 37 | from | | + | 38 | host | | + | 39 | if-match | | + | 40 | if-modified-since | | + | 41 | if-none-match | | + | 42 | if-range | | + | 43 | if-unmodified-since | | + | 44 | last-modified | | + | 45 | link | | + | 46 | location | | + | 47 | max-forwards | | + | 48 | proxy-authenticate | | + | 49 | proxy-authorization | | + | 50 | range | | + | 51 | referer | | + | 52 | refresh | | + | 53 | retry-after | | + | 54 | server | | + | 55 | set-cookie | | + | 56 | strict-transport-security | | + | 57 | transfer-encoding | | + | 58 | user-agent | | + | 59 | vary | | + | 60 | via | | + | 61 | www-authenticate | | + +-------+-----------------------------+---------------+ +*/ + +static const unsigned char static_token[] = { + 0, + WSI_TOKEN_HTTP_COLON_AUTHORITY, + WSI_TOKEN_HTTP_COLON_METHOD, + WSI_TOKEN_HTTP_COLON_METHOD, + WSI_TOKEN_HTTP_COLON_PATH, + WSI_TOKEN_HTTP_COLON_PATH, + WSI_TOKEN_HTTP_COLON_SCHEME, + WSI_TOKEN_HTTP_COLON_SCHEME, + WSI_TOKEN_HTTP_COLON_STATUS, + WSI_TOKEN_HTTP_COLON_STATUS, + WSI_TOKEN_HTTP_COLON_STATUS, + WSI_TOKEN_HTTP_COLON_STATUS, + WSI_TOKEN_HTTP_COLON_STATUS, + WSI_TOKEN_HTTP_COLON_STATUS, + WSI_TOKEN_HTTP_COLON_STATUS, + WSI_TOKEN_HTTP_ACCEPT_CHARSET, + WSI_TOKEN_HTTP_ACCEPT_ENCODING, + WSI_TOKEN_HTTP_ACCEPT_LANGUAGE, + WSI_TOKEN_HTTP_ACCEPT_RANGES, + WSI_TOKEN_HTTP_ACCEPT, + WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN, + WSI_TOKEN_HTTP_AGE, + WSI_TOKEN_HTTP_ALLOW, + WSI_TOKEN_HTTP_AUTHORIZATION, + WSI_TOKEN_HTTP_CACHE_CONTROL, + WSI_TOKEN_HTTP_CONTENT_DISPOSITION, + WSI_TOKEN_HTTP_CONTENT_ENCODING, + WSI_TOKEN_HTTP_CONTENT_LANGUAGE, + WSI_TOKEN_HTTP_CONTENT_LENGTH, + WSI_TOKEN_HTTP_CONTENT_LOCATION, + WSI_TOKEN_HTTP_CONTENT_RANGE, + WSI_TOKEN_HTTP_CONTENT_TYPE, + WSI_TOKEN_HTTP_COOKIE, + WSI_TOKEN_HTTP_DATE, + WSI_TOKEN_HTTP_ETAG, + WSI_TOKEN_HTTP_EXPECT, + WSI_TOKEN_HTTP_EXPIRES, + WSI_TOKEN_HTTP_FROM, + WSI_TOKEN_HTTP_HOST, + WSI_TOKEN_HTTP_IF_MATCH, + WSI_TOKEN_HTTP_IF_MODIFIED_SINCE, + WSI_TOKEN_HTTP_IF_NONE_MATCH, + WSI_TOKEN_HTTP_IF_RANGE, + WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE, + WSI_TOKEN_HTTP_LAST_MODIFIED, + WSI_TOKEN_HTTP_LINK, + WSI_TOKEN_HTTP_LOCATION, + WSI_TOKEN_HTTP_MAX_FORWARDS, + WSI_TOKEN_HTTP_PROXY_AUTHENTICATE, + WSI_TOKEN_HTTP_PROXY_AUTHORIZATION, + WSI_TOKEN_HTTP_RANGE, + WSI_TOKEN_HTTP_REFERER, + WSI_TOKEN_HTTP_REFRESH, + WSI_TOKEN_HTTP_RETRY_AFTER, + WSI_TOKEN_HTTP_SERVER, + WSI_TOKEN_HTTP_SET_COOKIE, + WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY, + WSI_TOKEN_HTTP_TRANSFER_ENCODING, + WSI_TOKEN_HTTP_USER_AGENT, + WSI_TOKEN_HTTP_VARY, + WSI_TOKEN_HTTP_VIA, + WSI_TOKEN_HTTP_WWW_AUTHENTICATE, +}; + +static const char * const http2_canned[] = { + "", + "", + "GET", + "POST", + "/", + "/index.html", + "http", + "https", + "200", + "204", + "206", + "300", + "304", + "400", + "404", + "500", + "", + "gzip, deflate" +}; + +#include "huftable.h" + +int lextable_decode(int pos, char c) +{ + int q = pos + !!c; + + if (lextable_terms[q >> 3] & (1 << (q & 7))) /* terminal */ + return lextable[q] | 0x8000; + + return pos + (lextable[q] << 1); +} + +static int lws_add_header(int header, const char *payload, int len) +{ + wsi->u.ah.frag_index[header] +} + +int lws_hpack_interpret(struct libwebsocket *wsi, unsigned char c) +{ + switch (wsi->u.http2.hpack) { + case HPKS_TYPE: + if (c & 0x80) { /* indexed header field only */ + wsi->u.http2.header_index = c & 0x7f; + /* stay at same state */ + break; + } + if (c & 0x40) { /* literal header incr idx */ + if (c == 0x40) { /* literal name */ + wsi->u.http2.header_index = 0; + wsi->u.http2.hpack + wsi->u.http2.hpack = HPKS_HLEN; + break; + } + /* indexed name */ + wsi->u.http2.header_index = c & 0x3f; + wsi->u.http2.hpack = HPKS_HLEN; + break; + } + switch(c & 0xf0) { + case 0: /* literal header without indexing */ + if (c == 0) { /* literal name */ + wsi->u.http2.hpack = HPKS_NAME_HLEN; + break; + } + /* indexed name */ + wsi->u.http2.header_index = c & 0xf; + wsi->u.http2.hpack = HPKS_VALUE_HLEN; + break; + case 0x10: /* literal header never indexed */ + if (c == 0x10) { /* literal name */ + wsi->u.http2.header_index = 0; + wsi->u.http2.hpack = HPKS_NAME_HLEN; + break; + } + /* indexed name */ + wsi->u.http2.header_index = c & 0xf; + wsi->u.http2.hpack = HPKS_NAME_HLEN; + break; + case 0x20: + case 0x30: /* header table size update */ + /* = c & 0x1f */ + /* stay at same state */ + break; + } + break; + case HPKS_HLEN: + wsi->u.http2.huff = !!(c & 0x80); + wsi->u.http2.hpack_len = c & 0x7f; + if (wsi->u.http2.hpack_len < 127) { + wsi->u.http2.hpack = HPKS_NAME_DATA; + break; + } + wsi->u.http2.hpack_m = 0; + wsi->u.http2.hpack = HPKS_NAME_HLEN_EXT; + break; + case HPKS_HLEN_EXT: + wsi->u.http2.hpack_len += (c & 0x7f) << wsi->u.http2.hpack_m; + wsi->u.http2.hpack_m += 7; + if (!(c & 0x80)) + wsi->u.http2.hpack = HPKS_NAME_DATA; + break; + + case HPKS_DATA: + + } +} diff --git a/lib/http2.c b/lib/http2.c index 74f196a5..b9bed878 100644 --- a/lib/http2.c +++ b/lib/http2.c @@ -32,6 +32,7 @@ const struct http2_settings lws_http2_default_settings = { { /* LWS_HTTP2_SETTINGS__MAX_HEADER_LIST_SIZE */ ~0, }}; + void lws_http2_init(struct http2_settings *settings) { memcpy(settings, lws_http2_default_settings.setting, sizeof(*settings)); @@ -193,16 +194,20 @@ lws_http2_parser(struct libwebsocket_context *context, case WSI_STATE_HTTP2_ESTABLISHED_PRE_SETTINGS: case WSI_STATE_HTTP2_ESTABLISHED: if (wsi->u.http2.frame_state == LWS_HTTP2_FRAME_HEADER_LENGTH) { // payload + /* applies to wsi->u.http2.stream_wsi which may be wsi*/ switch(wsi->u.http2.type) { case LWS_HTTP2_FRAME_TYPE_SETTINGS: - wsi->u.http2.one_setting[wsi->u.http2.count % LWS_HTTP2_SETTINGS_LENGTH] = c; + wsi->u.http2.stream_wsi->u.http2.one_setting[wsi->u.http2.count % LWS_HTTP2_SETTINGS_LENGTH] = c; if (wsi->u.http2.count % LWS_HTTP2_SETTINGS_LENGTH == LWS_HTTP2_SETTINGS_LENGTH - 1) if (lws_http2_interpret_settings_payload( - &wsi->u.http2.peer_settings, + &wsi->u.http2.stream_wsi->u.http2.peer_settings, wsi->u.http2.one_setting, LWS_HTTP2_SETTINGS_LENGTH)) return 1; break; + case LWS_HTTP2_FRAME_TYPE_HEADERS: + + break; } wsi->u.http2.count++; if (wsi->u.http2.count == wsi->u.http2.length) { @@ -238,6 +243,7 @@ lws_http2_parser(struct libwebsocket_context *context, case 8: wsi->u.http2.stream_id <<= 8; wsi->u.http2.stream_id |= c; + wsi->u.http2.stream_wsi = wsi; break; } if (wsi->u.http2.frame_state == LWS_HTTP2_FRAME_HEADER_LENGTH) { /* frame header complete */ @@ -258,10 +264,14 @@ lws_http2_parser(struct libwebsocket_context *context, } break; case LWS_HTTP2_FRAME_TYPE_HEADERS: - wsi_new = lws_http2_wsi_from_id(wsi, wsi->u.http2.stream_id); - if (!wsi_new) { - wsi_new = lws_create_server_child_wsi(context, wsi, wsi->u.http2.stream_id); - } + if (!wsi->u.http2.stream_id) + return 1; + wsi->u.http2.stream_wsi = lws_http2_wsi_from_id(wsi, wsi->u.http2.stream_id); + if (!wsi->u.http2.stream_wsi) + wsi->u.http2.stream_wsi = lws_create_server_child_wsi(context, wsi, wsi->u.http2.stream_id); + + if (!wsi->u.http2.stream_wsi) + return 1; } if (wsi->u.http2.length == 0) wsi->u.http2.frame_state = 0; diff --git a/lib/lextable.h b/lib/lextable.h index 2d048c6c..3714e4c1 100644 --- a/lib/lextable.h +++ b/lib/lextable.h @@ -1,351 +1,732 @@ -/* pos 0000: 0 */ 0x67 /* 'g' */, 0x25, 0x00 /* (to 0x0025 state 1) */, - 0x70 /* 'p' */, 0x27, 0x00 /* (to 0x002A state 5) */, - 0x6F /* 'o' */, 0x30, 0x00 /* (to 0x0036 state 10) */, - 0x68 /* 'h' */, 0x3C, 0x00 /* (to 0x0045 state 18) */, - 0x63 /* 'c' */, 0x45, 0x00 /* (to 0x0051 state 23) */, - 0x75 /* 'u' */, 0x60, 0x00 /* (to 0x006F state 34) */, - 0x73 /* 's' */, 0x6D, 0x00 /* (to 0x007F state 48) */, - 0x0D /* '.' */, 0x97, 0x00 /* (to 0x00AC state 68) */, - 0x61 /* 'a' */, 0xE9, 0x00 /* (to 0x0101 state 129) */, - 0x69 /* 'i' */, 0x1C, 0x01 /* (to 0x0137 state 163) */, - 0x64 /* 'd' */, 0x9B, 0x01 /* (to 0x01B9 state 265) */, - 0x72 /* 'r' */, 0x9E, 0x01 /* (to 0x01BF state 270) */, +/* pos 0000: 0 */ 0x67 /* 'g' */, 0x3D, 0x00 /* (to 0x003D state 1) */, + 0x70 /* 'p' */, 0x3F, 0x00 /* (to 0x0042 state 5) */, + 0x6F /* 'o' */, 0x48, 0x00 /* (to 0x004E state 10) */, + 0x68 /* 'h' */, 0x54, 0x00 /* (to 0x005D state 18) */, + 0x63 /* 'c' */, 0x5D, 0x00 /* (to 0x0069 state 23) */, + 0x75 /* 'u' */, 0x78, 0x00 /* (to 0x0087 state 34) */, + 0x73 /* 's' */, 0x8B, 0x00 /* (to 0x009D state 48) */, + 0x0D /* '.' */, 0xC4, 0x00 /* (to 0x00D9 state 68) */, + 0x61 /* 'a' */, 0x16, 0x01 /* (to 0x012E state 129) */, + 0x69 /* 'i' */, 0x55, 0x01 /* (to 0x0170 state 163) */, + 0x64 /* 'd' */, 0xFB, 0x01 /* (to 0x0219 state 265) */, + 0x72 /* 'r' */, 0xFE, 0x01 /* (to 0x021F state 270) */, + 0x3A /* ':' */, 0x2F, 0x02 /* (to 0x0253 state 299) */, + 0x65 /* 'e' */, 0xB6, 0x02 /* (to 0x02DD state 405) */, + 0x66 /* 'f' */, 0xD2, 0x02 /* (to 0x02FC state 421) */, + 0x6C /* 'l' */, 0xF4, 0x02 /* (to 0x0321 state 454) */, + 0x6D /* 'm' */, 0x17, 0x03 /* (to 0x0347 state 480) */, + 0x74 /* 't' */, 0x80, 0x03 /* (to 0x03B3 state 574) */, + 0x76 /* 'v' */, 0x9B, 0x03 /* (to 0x03D1 state 602) */, + 0x77 /* 'w' */, 0xA8, 0x03 /* (to 0x03E1 state 610) */, 0x08, /* fail */ -/* pos 0025: 1 */ 0xE5 /* 'e' -> */, -/* pos 0026: 2 */ 0xF4 /* 't' -> */, -/* pos 0027: 3 */ 0xA0 /* ' ' -> */, -/* pos 0028: 4 */ 0x00, 0x00 /* - terminal marker 0 - */, -/* pos 002a: 5 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x0031 state 6) */, - 0x72 /* 'r' */, 0x4A, 0x01 /* (to 0x0177 state 211) */, +/* pos 003d: 1 */ 0xE5 /* 'e' -> */, +/* pos 003e: 2 */ 0xF4 /* 't' -> */, +/* pos 003f: 3 */ 0xA0 /* ' ' -> */, +/* pos 0040: 4 */ 0x00, 0x00 /* - terminal marker 0 - */, +/* pos 0042: 5 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x0049 state 6) */, + 0x72 /* 'r' */, 0x7D, 0x01 /* (to 0x01C2 state 211) */, 0x08, /* fail */ -/* pos 0031: 6 */ 0xF3 /* 's' -> */, -/* pos 0032: 7 */ 0xF4 /* 't' -> */, -/* pos 0033: 8 */ 0xA0 /* ' ' -> */, -/* pos 0034: 9 */ 0x00, 0x01 /* - terminal marker 1 - */, -/* pos 0036: 10 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x003D state 11) */, - 0x72 /* 'r' */, 0x3F, 0x00 /* (to 0x0078 state 42) */, +/* pos 0049: 6 */ 0xF3 /* 's' -> */, +/* pos 004a: 7 */ 0xF4 /* 't' -> */, +/* pos 004b: 8 */ 0xA0 /* ' ' -> */, +/* pos 004c: 9 */ 0x00, 0x01 /* - terminal marker 1 - */, +/* pos 004e: 10 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x0055 state 11) */, + 0x72 /* 'r' */, 0x45, 0x00 /* (to 0x0096 state 42) */, 0x08, /* fail */ -/* pos 003d: 11 */ 0xF4 /* 't' -> */, -/* pos 003e: 12 */ 0xE9 /* 'i' -> */, -/* pos 003f: 13 */ 0xEF /* 'o' -> */, -/* pos 0040: 14 */ 0xEE /* 'n' -> */, -/* pos 0041: 15 */ 0xF3 /* 's' -> */, -/* pos 0042: 16 */ 0xA0 /* ' ' -> */, -/* pos 0043: 17 */ 0x00, 0x02 /* - terminal marker 2 - */, -/* pos 0045: 18 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x004C state 19) */, - 0x74 /* 't' */, 0x9E, 0x00 /* (to 0x00E6 state 110) */, +/* pos 0055: 11 */ 0xF4 /* 't' -> */, +/* pos 0056: 12 */ 0xE9 /* 'i' -> */, +/* pos 0057: 13 */ 0xEF /* 'o' -> */, +/* pos 0058: 14 */ 0xEE /* 'n' -> */, +/* pos 0059: 15 */ 0xF3 /* 's' -> */, +/* pos 005a: 16 */ 0xA0 /* ' ' -> */, +/* pos 005b: 17 */ 0x00, 0x02 /* - terminal marker 2 - */, +/* pos 005d: 18 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x0064 state 19) */, + 0x74 /* 't' */, 0xB3, 0x00 /* (to 0x0113 state 110) */, 0x08, /* fail */ -/* pos 004c: 19 */ 0xF3 /* 's' -> */, -/* pos 004d: 20 */ 0xF4 /* 't' -> */, -/* pos 004e: 21 */ 0xBA /* ':' -> */, -/* pos 004f: 22 */ 0x00, 0x03 /* - terminal marker 3 - */, -/* pos 0051: 23 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x0058 state 24) */, - 0x61 /* 'a' */, 0x2A, 0x01 /* (to 0x017E state 217) */, +/* pos 0064: 19 */ 0xF3 /* 's' -> */, +/* pos 0065: 20 */ 0xF4 /* 't' -> */, +/* pos 0066: 21 */ 0xBA /* ':' -> */, +/* pos 0067: 22 */ 0x00, 0x03 /* - terminal marker 3 - */, +/* pos 0069: 23 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x0070 state 24) */, + 0x61 /* 'a' */, 0x63, 0x01 /* (to 0x01CF state 217) */, 0x08, /* fail */ -/* pos 0058: 24 */ 0x6E /* 'n' */, 0x07, 0x00 /* (to 0x005F state 25) */, - 0x6F /* 'o' */, 0x3F, 0x01 /* (to 0x019A state 243) */, +/* pos 0070: 24 */ 0x6E /* 'n' */, 0x07, 0x00 /* (to 0x0077 state 25) */, + 0x6F /* 'o' */, 0x78, 0x01 /* (to 0x01EB state 243) */, 0x08, /* fail */ -/* pos 005f: 25 */ 0x6E /* 'n' */, 0x07, 0x00 /* (to 0x0066 state 26) */, - 0x74 /* 't' */, 0x3E, 0x01 /* (to 0x01A0 state 248) */, +/* pos 0077: 25 */ 0x6E /* 'n' */, 0x07, 0x00 /* (to 0x007E state 26) */, + 0x74 /* 't' */, 0x77, 0x01 /* (to 0x01F1 state 248) */, 0x08, /* fail */ -/* pos 0066: 26 */ 0xE5 /* 'e' -> */, -/* pos 0067: 27 */ 0xE3 /* 'c' -> */, -/* pos 0068: 28 */ 0xF4 /* 't' -> */, -/* pos 0069: 29 */ 0xE9 /* 'i' -> */, -/* pos 006a: 30 */ 0xEF /* 'o' -> */, -/* pos 006b: 31 */ 0xEE /* 'n' -> */, -/* pos 006c: 32 */ 0xBA /* ':' -> */, -/* pos 006d: 33 */ 0x00, 0x04 /* - terminal marker 4 - */, -/* pos 006f: 34 */ 0xF0 /* 'p' -> */, -/* pos 0070: 35 */ 0xE7 /* 'g' -> */, -/* pos 0071: 36 */ 0xF2 /* 'r' -> */, -/* pos 0072: 37 */ 0xE1 /* 'a' -> */, -/* pos 0073: 38 */ 0xE4 /* 'd' -> */, -/* pos 0074: 39 */ 0xE5 /* 'e' -> */, -/* pos 0075: 40 */ 0xBA /* ':' -> */, -/* pos 0076: 41 */ 0x00, 0x05 /* - terminal marker 5 - */, -/* pos 0078: 42 */ 0xE9 /* 'i' -> */, -/* pos 0079: 43 */ 0xE7 /* 'g' -> */, -/* pos 007a: 44 */ 0xE9 /* 'i' -> */, -/* pos 007b: 45 */ 0xEE /* 'n' -> */, -/* pos 007c: 46 */ 0xBA /* ':' -> */, -/* pos 007d: 47 */ 0x00, 0x06 /* - terminal marker 6 - */, -/* pos 007f: 48 */ 0xE5 /* 'e' -> */, -/* pos 0080: 49 */ 0xE3 /* 'c' -> */, -/* pos 0081: 50 */ 0xAD /* '-' -> */, -/* pos 0082: 51 */ 0xF7 /* 'w' -> */, -/* pos 0083: 52 */ 0xE5 /* 'e' -> */, -/* pos 0084: 53 */ 0xE2 /* 'b' -> */, -/* pos 0085: 54 */ 0xF3 /* 's' -> */, -/* pos 0086: 55 */ 0xEF /* 'o' -> */, -/* pos 0087: 56 */ 0xE3 /* 'c' -> */, -/* pos 0088: 57 */ 0xEB /* 'k' -> */, -/* pos 0089: 58 */ 0xE5 /* 'e' -> */, -/* pos 008a: 59 */ 0xF4 /* 't' -> */, -/* pos 008b: 60 */ 0xAD /* '-' -> */, -/* pos 008c: 61 */ 0x64 /* 'd' */, 0x19, 0x00 /* (to 0x00A5 state 62) */, - 0x65 /* 'e' */, 0x20, 0x00 /* (to 0x00AF state 70) */, - 0x6B /* 'k' */, 0x29, 0x00 /* (to 0x00BB state 81) */, - 0x70 /* 'p' */, 0x38, 0x00 /* (to 0x00CD state 88) */, - 0x61 /* 'a' */, 0x3F, 0x00 /* (to 0x00D7 state 97) */, - 0x6E /* 'n' */, 0x44, 0x00 /* (to 0x00DF state 104) */, - 0x76 /* 'v' */, 0x38, 0x01 /* (to 0x01D6 state 284) */, - 0x6F /* 'o' */, 0x3E, 0x01 /* (to 0x01DF state 292) */, +/* pos 007e: 26 */ 0xE5 /* 'e' -> */, +/* pos 007f: 27 */ 0xE3 /* 'c' -> */, +/* pos 0080: 28 */ 0xF4 /* 't' -> */, +/* pos 0081: 29 */ 0xE9 /* 'i' -> */, +/* pos 0082: 30 */ 0xEF /* 'o' -> */, +/* pos 0083: 31 */ 0xEE /* 'n' -> */, +/* pos 0084: 32 */ 0xBA /* ':' -> */, +/* pos 0085: 33 */ 0x00, 0x04 /* - terminal marker 4 - */, +/* pos 0087: 34 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x008E state 35) */, + 0x73 /* 's' */, 0x3C, 0x03 /* (to 0x03C6 state 592) */, 0x08, /* fail */ -/* pos 00a5: 62 */ 0xF2 /* 'r' -> */, -/* pos 00a6: 63 */ 0xE1 /* 'a' -> */, -/* pos 00a7: 64 */ 0xE6 /* 'f' -> */, -/* pos 00a8: 65 */ 0xF4 /* 't' -> */, -/* pos 00a9: 66 */ 0xBA /* ':' -> */, -/* pos 00aa: 67 */ 0x00, 0x07 /* - terminal marker 7 - */, -/* pos 00ac: 68 */ 0x8A /* '.' -> */, -/* pos 00ad: 69 */ 0x00, 0x08 /* - terminal marker 8 - */, -/* pos 00af: 70 */ 0xF8 /* 'x' -> */, -/* pos 00b0: 71 */ 0xF4 /* 't' -> */, -/* pos 00b1: 72 */ 0xE5 /* 'e' -> */, -/* pos 00b2: 73 */ 0xEE /* 'n' -> */, -/* pos 00b3: 74 */ 0xF3 /* 's' -> */, -/* pos 00b4: 75 */ 0xE9 /* 'i' -> */, -/* pos 00b5: 76 */ 0xEF /* 'o' -> */, -/* pos 00b6: 77 */ 0xEE /* 'n' -> */, -/* pos 00b7: 78 */ 0xF3 /* 's' -> */, -/* pos 00b8: 79 */ 0xBA /* ':' -> */, -/* pos 00b9: 80 */ 0x00, 0x09 /* - terminal marker 9 - */, -/* pos 00bb: 81 */ 0xE5 /* 'e' -> */, -/* pos 00bc: 82 */ 0xF9 /* 'y' -> */, -/* pos 00bd: 83 */ 0x31 /* '1' */, 0x0A, 0x00 /* (to 0x00C7 state 84) */, - 0x32 /* '2' */, 0x0A, 0x00 /* (to 0x00CA state 86) */, - 0x3A /* ':' */, 0x11, 0x01 /* (to 0x01D4 state 283) */, +/* pos 008e: 35 */ 0xE7 /* 'g' -> */, +/* pos 008f: 36 */ 0xF2 /* 'r' -> */, +/* pos 0090: 37 */ 0xE1 /* 'a' -> */, +/* pos 0091: 38 */ 0xE4 /* 'd' -> */, +/* pos 0092: 39 */ 0xE5 /* 'e' -> */, +/* pos 0093: 40 */ 0xBA /* ':' -> */, +/* pos 0094: 41 */ 0x00, 0x05 /* - terminal marker 5 - */, +/* pos 0096: 42 */ 0xE9 /* 'i' -> */, +/* pos 0097: 43 */ 0xE7 /* 'g' -> */, +/* pos 0098: 44 */ 0xE9 /* 'i' -> */, +/* pos 0099: 45 */ 0xEE /* 'n' -> */, +/* pos 009a: 46 */ 0xBA /* ':' -> */, +/* pos 009b: 47 */ 0x00, 0x06 /* - terminal marker 6 - */, +/* pos 009d: 48 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x00A4 state 49) */, + 0x74 /* 't' */, 0xF9, 0x02 /* (to 0x0399 state 549) */, 0x08, /* fail */ -/* pos 00c7: 84 */ 0xBA /* ':' -> */, -/* pos 00c8: 85 */ 0x00, 0x0A /* - terminal marker 10 - */, -/* pos 00ca: 86 */ 0xBA /* ':' -> */, -/* pos 00cb: 87 */ 0x00, 0x0B /* - terminal marker 11 - */, -/* pos 00cd: 88 */ 0xF2 /* 'r' -> */, -/* pos 00ce: 89 */ 0xEF /* 'o' -> */, -/* pos 00cf: 90 */ 0xF4 /* 't' -> */, -/* pos 00d0: 91 */ 0xEF /* 'o' -> */, -/* pos 00d1: 92 */ 0xE3 /* 'c' -> */, -/* pos 00d2: 93 */ 0xEF /* 'o' -> */, -/* pos 00d3: 94 */ 0xEC /* 'l' -> */, -/* pos 00d4: 95 */ 0xBA /* ':' -> */, -/* pos 00d5: 96 */ 0x00, 0x0C /* - terminal marker 12 - */, -/* pos 00d7: 97 */ 0xE3 /* 'c' -> */, -/* pos 00d8: 98 */ 0xE3 /* 'c' -> */, -/* pos 00d9: 99 */ 0xE5 /* 'e' -> */, -/* pos 00da: 100 */ 0xF0 /* 'p' -> */, -/* pos 00db: 101 */ 0xF4 /* 't' -> */, -/* pos 00dc: 102 */ 0xBA /* ':' -> */, -/* pos 00dd: 103 */ 0x00, 0x0D /* - terminal marker 13 - */, -/* pos 00df: 104 */ 0xEF /* 'o' -> */, -/* pos 00e0: 105 */ 0xEE /* 'n' -> */, -/* pos 00e1: 106 */ 0xE3 /* 'c' -> */, -/* pos 00e2: 107 */ 0xE5 /* 'e' -> */, -/* pos 00e3: 108 */ 0xBA /* ':' -> */, -/* pos 00e4: 109 */ 0x00, 0x0E /* - terminal marker 14 - */, -/* pos 00e6: 110 */ 0xF4 /* 't' -> */, -/* pos 00e7: 111 */ 0xF0 /* 'p' -> */, -/* pos 00e8: 112 */ 0x2F /* '/' */, 0x07, 0x00 /* (to 0x00EF state 113) */, - 0x32 /* '2' */, 0x0A, 0x00 /* (to 0x00F5 state 118) */, +/* pos 00a4: 49 */ 0x63 /* 'c' */, 0x0A, 0x00 /* (to 0x00AE state 50) */, + 0x72 /* 'r' */, 0xE2, 0x02 /* (to 0x0389 state 535) */, + 0x74 /* 't' */, 0xE5, 0x02 /* (to 0x038F state 540) */, 0x08, /* fail */ -/* pos 00ef: 113 */ 0xB1 /* '1' -> */, -/* pos 00f0: 114 */ 0xAE /* '.' -> */, -/* pos 00f1: 115 */ 0xB1 /* '1' -> */, -/* pos 00f2: 116 */ 0xA0 /* ' ' -> */, -/* pos 00f3: 117 */ 0x00, 0x0F /* - terminal marker 15 - */, -/* pos 00f5: 118 */ 0xAD /* '-' -> */, -/* pos 00f6: 119 */ 0xF3 /* 's' -> */, -/* pos 00f7: 120 */ 0xE5 /* 'e' -> */, -/* pos 00f8: 121 */ 0xF4 /* 't' -> */, -/* pos 00f9: 122 */ 0xF4 /* 't' -> */, -/* pos 00fa: 123 */ 0xE9 /* 'i' -> */, -/* pos 00fb: 124 */ 0xEE /* 'n' -> */, -/* pos 00fc: 125 */ 0xE7 /* 'g' -> */, -/* pos 00fd: 126 */ 0xF3 /* 's' -> */, -/* pos 00fe: 127 */ 0xBA /* ':' -> */, -/* pos 00ff: 128 */ 0x00, 0x10 /* - terminal marker 16 - */, -/* pos 0101: 129 */ 0x63 /* 'c' */, 0x07, 0x00 /* (to 0x0108 state 130) */, - 0x75 /* 'u' */, 0x88, 0x00 /* (to 0x018C state 230) */, +/* pos 00ae: 50 */ 0xAD /* '-' -> */, +/* pos 00af: 51 */ 0xF7 /* 'w' -> */, +/* pos 00b0: 52 */ 0xE5 /* 'e' -> */, +/* pos 00b1: 53 */ 0xE2 /* 'b' -> */, +/* pos 00b2: 54 */ 0xF3 /* 's' -> */, +/* pos 00b3: 55 */ 0xEF /* 'o' -> */, +/* pos 00b4: 56 */ 0xE3 /* 'c' -> */, +/* pos 00b5: 57 */ 0xEB /* 'k' -> */, +/* pos 00b6: 58 */ 0xE5 /* 'e' -> */, +/* pos 00b7: 59 */ 0xF4 /* 't' -> */, +/* pos 00b8: 60 */ 0xAD /* '-' -> */, +/* pos 00b9: 61 */ 0x64 /* 'd' */, 0x19, 0x00 /* (to 0x00D2 state 62) */, + 0x65 /* 'e' */, 0x20, 0x00 /* (to 0x00DC state 70) */, + 0x6B /* 'k' */, 0x29, 0x00 /* (to 0x00E8 state 81) */, + 0x70 /* 'p' */, 0x38, 0x00 /* (to 0x00FA state 88) */, + 0x61 /* 'a' */, 0x3F, 0x00 /* (to 0x0104 state 97) */, + 0x6E /* 'n' */, 0x44, 0x00 /* (to 0x010C state 104) */, + 0x76 /* 'v' */, 0x77, 0x01 /* (to 0x0242 state 284) */, + 0x6F /* 'o' */, 0x7D, 0x01 /* (to 0x024B state 292) */, 0x08, /* fail */ -/* pos 0108: 130 */ 0xE3 /* 'c' -> */, -/* pos 0109: 131 */ 0xE5 /* 'e' -> */, -/* pos 010a: 132 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x0111 state 133) */, - 0x73 /* 's' */, 0x0E, 0x00 /* (to 0x011B state 136) */, +/* pos 00d2: 62 */ 0xF2 /* 'r' -> */, +/* pos 00d3: 63 */ 0xE1 /* 'a' -> */, +/* pos 00d4: 64 */ 0xE6 /* 'f' -> */, +/* pos 00d5: 65 */ 0xF4 /* 't' -> */, +/* pos 00d6: 66 */ 0xBA /* ':' -> */, +/* pos 00d7: 67 */ 0x00, 0x07 /* - terminal marker 7 - */, +/* pos 00d9: 68 */ 0x8A /* '.' -> */, +/* pos 00da: 69 */ 0x00, 0x08 /* - terminal marker 8 - */, +/* pos 00dc: 70 */ 0xF8 /* 'x' -> */, +/* pos 00dd: 71 */ 0xF4 /* 't' -> */, +/* pos 00de: 72 */ 0xE5 /* 'e' -> */, +/* pos 00df: 73 */ 0xEE /* 'n' -> */, +/* pos 00e0: 74 */ 0xF3 /* 's' -> */, +/* pos 00e1: 75 */ 0xE9 /* 'i' -> */, +/* pos 00e2: 76 */ 0xEF /* 'o' -> */, +/* pos 00e3: 77 */ 0xEE /* 'n' -> */, +/* pos 00e4: 78 */ 0xF3 /* 's' -> */, +/* pos 00e5: 79 */ 0xBA /* ':' -> */, +/* pos 00e6: 80 */ 0x00, 0x09 /* - terminal marker 9 - */, +/* pos 00e8: 81 */ 0xE5 /* 'e' -> */, +/* pos 00e9: 82 */ 0xF9 /* 'y' -> */, +/* pos 00ea: 83 */ 0x31 /* '1' */, 0x0A, 0x00 /* (to 0x00F4 state 84) */, + 0x32 /* '2' */, 0x0A, 0x00 /* (to 0x00F7 state 86) */, + 0x3A /* ':' */, 0x50, 0x01 /* (to 0x0240 state 283) */, 0x08, /* fail */ -/* pos 0111: 133 */ 0xF4 /* 't' -> */, -/* pos 0112: 134 */ 0x3A /* ':' */, 0x07, 0x00 /* (to 0x0119 state 135) */, - 0x2D /* '-' */, 0x47, 0x00 /* (to 0x015C state 192) */, +/* pos 00f4: 84 */ 0xBA /* ':' -> */, +/* pos 00f5: 85 */ 0x00, 0x0A /* - terminal marker 10 - */, +/* pos 00f7: 86 */ 0xBA /* ':' -> */, +/* pos 00f8: 87 */ 0x00, 0x0B /* - terminal marker 11 - */, +/* pos 00fa: 88 */ 0xF2 /* 'r' -> */, +/* pos 00fb: 89 */ 0xEF /* 'o' -> */, +/* pos 00fc: 90 */ 0xF4 /* 't' -> */, +/* pos 00fd: 91 */ 0xEF /* 'o' -> */, +/* pos 00fe: 92 */ 0xE3 /* 'c' -> */, +/* pos 00ff: 93 */ 0xEF /* 'o' -> */, +/* pos 0100: 94 */ 0xEC /* 'l' -> */, +/* pos 0101: 95 */ 0xBA /* ':' -> */, +/* pos 0102: 96 */ 0x00, 0x0C /* - terminal marker 12 - */, +/* pos 0104: 97 */ 0xE3 /* 'c' -> */, +/* pos 0105: 98 */ 0xE3 /* 'c' -> */, +/* pos 0106: 99 */ 0xE5 /* 'e' -> */, +/* pos 0107: 100 */ 0xF0 /* 'p' -> */, +/* pos 0108: 101 */ 0xF4 /* 't' -> */, +/* pos 0109: 102 */ 0xBA /* ':' -> */, +/* pos 010a: 103 */ 0x00, 0x0D /* - terminal marker 13 - */, +/* pos 010c: 104 */ 0xEF /* 'o' -> */, +/* pos 010d: 105 */ 0xEE /* 'n' -> */, +/* pos 010e: 106 */ 0xE3 /* 'c' -> */, +/* pos 010f: 107 */ 0xE5 /* 'e' -> */, +/* pos 0110: 108 */ 0xBA /* ':' -> */, +/* pos 0111: 109 */ 0x00, 0x0E /* - terminal marker 14 - */, +/* pos 0113: 110 */ 0xF4 /* 't' -> */, +/* pos 0114: 111 */ 0xF0 /* 'p' -> */, +/* pos 0115: 112 */ 0x2F /* '/' */, 0x07, 0x00 /* (to 0x011C state 113) */, + 0x32 /* '2' */, 0x0A, 0x00 /* (to 0x0122 state 118) */, 0x08, /* fail */ -/* pos 0119: 135 */ 0x00, 0x11 /* - terminal marker 17 - */, -/* pos 011b: 136 */ 0xF3 /* 's' -> */, -/* pos 011c: 137 */ 0xAD /* '-' -> */, -/* pos 011d: 138 */ 0xE3 /* 'c' -> */, -/* pos 011e: 139 */ 0xEF /* 'o' -> */, -/* pos 011f: 140 */ 0xEE /* 'n' -> */, -/* pos 0120: 141 */ 0xF4 /* 't' -> */, -/* pos 0121: 142 */ 0xF2 /* 'r' -> */, -/* pos 0122: 143 */ 0xEF /* 'o' -> */, -/* pos 0123: 144 */ 0xEC /* 'l' -> */, -/* pos 0124: 145 */ 0xAD /* '-' -> */, -/* pos 0125: 146 */ 0xF2 /* 'r' -> */, -/* pos 0126: 147 */ 0xE5 /* 'e' -> */, -/* pos 0127: 148 */ 0xF1 /* 'q' -> */, -/* pos 0128: 149 */ 0xF5 /* 'u' -> */, -/* pos 0129: 150 */ 0xE5 /* 'e' -> */, -/* pos 012a: 151 */ 0xF3 /* 's' -> */, -/* pos 012b: 152 */ 0xF4 /* 't' -> */, -/* pos 012c: 153 */ 0xAD /* '-' -> */, -/* pos 012d: 154 */ 0xE8 /* 'h' -> */, -/* pos 012e: 155 */ 0xE5 /* 'e' -> */, -/* pos 012f: 156 */ 0xE1 /* 'a' -> */, -/* pos 0130: 157 */ 0xE4 /* 'd' -> */, -/* pos 0131: 158 */ 0xE5 /* 'e' -> */, -/* pos 0132: 159 */ 0xF2 /* 'r' -> */, -/* pos 0133: 160 */ 0xF3 /* 's' -> */, -/* pos 0134: 161 */ 0xBA /* ':' -> */, -/* pos 0135: 162 */ 0x00, 0x12 /* - terminal marker 18 - */, -/* pos 0137: 163 */ 0xE6 /* 'f' -> */, -/* pos 0138: 164 */ 0xAD /* '-' -> */, -/* pos 0139: 165 */ 0x6D /* 'm' */, 0x07, 0x00 /* (to 0x0140 state 166) */, - 0x6E /* 'n' */, 0x14, 0x00 /* (to 0x0150 state 181) */, +/* pos 011c: 113 */ 0xB1 /* '1' -> */, +/* pos 011d: 114 */ 0xAE /* '.' -> */, +/* pos 011e: 115 */ 0xB1 /* '1' -> */, +/* pos 011f: 116 */ 0xA0 /* ' ' -> */, +/* pos 0120: 117 */ 0x00, 0x0F /* - terminal marker 15 - */, +/* pos 0122: 118 */ 0xAD /* '-' -> */, +/* pos 0123: 119 */ 0xF3 /* 's' -> */, +/* pos 0124: 120 */ 0xE5 /* 'e' -> */, +/* pos 0125: 121 */ 0xF4 /* 't' -> */, +/* pos 0126: 122 */ 0xF4 /* 't' -> */, +/* pos 0127: 123 */ 0xE9 /* 'i' -> */, +/* pos 0128: 124 */ 0xEE /* 'n' -> */, +/* pos 0129: 125 */ 0xE7 /* 'g' -> */, +/* pos 012a: 126 */ 0xF3 /* 's' -> */, +/* pos 012b: 127 */ 0xBA /* ':' -> */, +/* pos 012c: 128 */ 0x00, 0x10 /* - terminal marker 16 - */, +/* pos 012e: 129 */ 0x63 /* 'c' */, 0x0D, 0x00 /* (to 0x013B state 130) */, + 0x75 /* 'u' */, 0xAC, 0x00 /* (to 0x01DD state 230) */, + 0x67 /* 'g' */, 0x79, 0x01 /* (to 0x02AD state 363) */, + 0x6C /* 'l' */, 0x7A, 0x01 /* (to 0x02B1 state 366) */, 0x08, /* fail */ -/* pos 0140: 166 */ 0xEF /* 'o' -> */, -/* pos 0141: 167 */ 0xE4 /* 'd' -> */, -/* pos 0142: 168 */ 0xE9 /* 'i' -> */, -/* pos 0143: 169 */ 0xE6 /* 'f' -> */, -/* pos 0144: 170 */ 0xE9 /* 'i' -> */, -/* pos 0145: 171 */ 0xE5 /* 'e' -> */, -/* pos 0146: 172 */ 0xE4 /* 'd' -> */, -/* pos 0147: 173 */ 0xAD /* '-' -> */, -/* pos 0148: 174 */ 0xF3 /* 's' -> */, -/* pos 0149: 175 */ 0xE9 /* 'i' -> */, -/* pos 014a: 176 */ 0xEE /* 'n' -> */, -/* pos 014b: 177 */ 0xE3 /* 'c' -> */, -/* pos 014c: 178 */ 0xE5 /* 'e' -> */, -/* pos 014d: 179 */ 0xBA /* ':' -> */, -/* pos 014e: 180 */ 0x00, 0x13 /* - terminal marker 19 - */, -/* pos 0150: 181 */ 0xEF /* 'o' -> */, -/* pos 0151: 182 */ 0xEE /* 'n' -> */, -/* pos 0152: 183 */ 0xE5 /* 'e' -> */, -/* pos 0153: 184 */ 0xAD /* '-' -> */, -/* pos 0154: 185 */ 0xED /* 'm' -> */, -/* pos 0155: 186 */ 0xE1 /* 'a' -> */, -/* pos 0156: 187 */ 0xF4 /* 't' -> */, -/* pos 0157: 188 */ 0xE3 /* 'c' -> */, -/* pos 0158: 189 */ 0xE8 /* 'h' -> */, -/* pos 0159: 190 */ 0xBA /* ':' -> */, -/* pos 015a: 191 */ 0x00, 0x14 /* - terminal marker 20 - */, -/* pos 015c: 192 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x0163 state 193) */, - 0x6C /* 'l' */, 0x0E, 0x00 /* (to 0x016D state 202) */, +/* pos 013b: 130 */ 0xE3 /* 'c' -> */, +/* pos 013c: 131 */ 0xE5 /* 'e' -> */, +/* pos 013d: 132 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x0144 state 133) */, + 0x73 /* 's' */, 0x0E, 0x00 /* (to 0x014E state 136) */, 0x08, /* fail */ -/* pos 0163: 193 */ 0xEE /* 'n' -> */, -/* pos 0164: 194 */ 0xE3 /* 'c' -> */, -/* pos 0165: 195 */ 0xEF /* 'o' -> */, -/* pos 0166: 196 */ 0xE4 /* 'd' -> */, -/* pos 0167: 197 */ 0xE9 /* 'i' -> */, -/* pos 0168: 198 */ 0xEE /* 'n' -> */, -/* pos 0169: 199 */ 0xE7 /* 'g' -> */, -/* pos 016a: 200 */ 0xBA /* ':' -> */, -/* pos 016b: 201 */ 0x00, 0x15 /* - terminal marker 21 - */, -/* pos 016d: 202 */ 0xE1 /* 'a' -> */, -/* pos 016e: 203 */ 0xEE /* 'n' -> */, -/* pos 016f: 204 */ 0xE7 /* 'g' -> */, -/* pos 0170: 205 */ 0xF5 /* 'u' -> */, -/* pos 0171: 206 */ 0xE1 /* 'a' -> */, -/* pos 0172: 207 */ 0xE7 /* 'g' -> */, -/* pos 0173: 208 */ 0xE5 /* 'e' -> */, -/* pos 0174: 209 */ 0xBA /* ':' -> */, -/* pos 0175: 210 */ 0x00, 0x16 /* - terminal marker 22 - */, -/* pos 0177: 211 */ 0xE1 /* 'a' -> */, -/* pos 0178: 212 */ 0xE7 /* 'g' -> */, -/* pos 0179: 213 */ 0xED /* 'm' -> */, -/* pos 017a: 214 */ 0xE1 /* 'a' -> */, -/* pos 017b: 215 */ 0xBA /* ':' -> */, -/* pos 017c: 216 */ 0x00, 0x17 /* - terminal marker 23 - */, -/* pos 017e: 217 */ 0xE3 /* 'c' -> */, -/* pos 017f: 218 */ 0xE8 /* 'h' -> */, -/* pos 0180: 219 */ 0xE5 /* 'e' -> */, -/* pos 0181: 220 */ 0xAD /* '-' -> */, -/* pos 0182: 221 */ 0xE3 /* 'c' -> */, -/* pos 0183: 222 */ 0xEF /* 'o' -> */, -/* pos 0184: 223 */ 0xEE /* 'n' -> */, -/* pos 0185: 224 */ 0xF4 /* 't' -> */, -/* pos 0186: 225 */ 0xF2 /* 'r' -> */, -/* pos 0187: 226 */ 0xEF /* 'o' -> */, -/* pos 0188: 227 */ 0xEC /* 'l' -> */, -/* pos 0189: 228 */ 0xBA /* ':' -> */, -/* pos 018a: 229 */ 0x00, 0x18 /* - terminal marker 24 - */, -/* pos 018c: 230 */ 0xF4 /* 't' -> */, -/* pos 018d: 231 */ 0xE8 /* 'h' -> */, -/* pos 018e: 232 */ 0xEF /* 'o' -> */, -/* pos 018f: 233 */ 0xF2 /* 'r' -> */, -/* pos 0190: 234 */ 0xE9 /* 'i' -> */, -/* pos 0191: 235 */ 0xFA /* 'z' -> */, -/* pos 0192: 236 */ 0xE1 /* 'a' -> */, -/* pos 0193: 237 */ 0xF4 /* 't' -> */, -/* pos 0194: 238 */ 0xE9 /* 'i' -> */, -/* pos 0195: 239 */ 0xEF /* 'o' -> */, -/* pos 0196: 240 */ 0xEE /* 'n' -> */, -/* pos 0197: 241 */ 0xBA /* ':' -> */, -/* pos 0198: 242 */ 0x00, 0x19 /* - terminal marker 25 - */, -/* pos 019a: 243 */ 0xEB /* 'k' -> */, -/* pos 019b: 244 */ 0xE9 /* 'i' -> */, -/* pos 019c: 245 */ 0xE5 /* 'e' -> */, -/* pos 019d: 246 */ 0xBA /* ':' -> */, -/* pos 019e: 247 */ 0x00, 0x1A /* - terminal marker 26 - */, -/* pos 01a0: 248 */ 0xE5 /* 'e' -> */, -/* pos 01a1: 249 */ 0xEE /* 'n' -> */, -/* pos 01a2: 250 */ 0xF4 /* 't' -> */, -/* pos 01a3: 251 */ 0xAD /* '-' -> */, -/* pos 01a4: 252 */ 0x6C /* 'l' */, 0x07, 0x00 /* (to 0x01AB state 253) */, - 0x74 /* 't' */, 0x0C, 0x00 /* (to 0x01B3 state 260) */, +/* pos 0144: 133 */ 0xF4 /* 't' -> */, +/* pos 0145: 134 */ 0x3A /* ':' */, 0x07, 0x00 /* (to 0x014C state 135) */, + 0x2D /* '-' */, 0x59, 0x00 /* (to 0x01A1 state 192) */, 0x08, /* fail */ -/* pos 01ab: 253 */ 0xE5 /* 'e' -> */, -/* pos 01ac: 254 */ 0xEE /* 'n' -> */, -/* pos 01ad: 255 */ 0xE7 /* 'g' -> */, -/* pos 01ae: 256 */ 0xF4 /* 't' -> */, -/* pos 01af: 257 */ 0xE8 /* 'h' -> */, -/* pos 01b0: 258 */ 0xBA /* ':' -> */, -/* pos 01b1: 259 */ 0x00, 0x1B /* - terminal marker 27 - */, -/* pos 01b3: 260 */ 0xF9 /* 'y' -> */, -/* pos 01b4: 261 */ 0xF0 /* 'p' -> */, -/* pos 01b5: 262 */ 0xE5 /* 'e' -> */, -/* pos 01b6: 263 */ 0xBA /* ':' -> */, -/* pos 01b7: 264 */ 0x00, 0x1C /* - terminal marker 28 - */, -/* pos 01b9: 265 */ 0xE1 /* 'a' -> */, -/* pos 01ba: 266 */ 0xF4 /* 't' -> */, -/* pos 01bb: 267 */ 0xE5 /* 'e' -> */, -/* pos 01bc: 268 */ 0xBA /* ':' -> */, -/* pos 01bd: 269 */ 0x00, 0x1D /* - terminal marker 29 - */, -/* pos 01bf: 270 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x01C6 state 271) */, - 0x65 /* 'e' */, 0x0A, 0x00 /* (to 0x01CC state 276) */, +/* pos 014c: 135 */ 0x00, 0x11 /* - terminal marker 17 - */, +/* pos 014e: 136 */ 0xF3 /* 's' -> */, +/* pos 014f: 137 */ 0xAD /* '-' -> */, +/* pos 0150: 138 */ 0xE3 /* 'c' -> */, +/* pos 0151: 139 */ 0xEF /* 'o' -> */, +/* pos 0152: 140 */ 0xEE /* 'n' -> */, +/* pos 0153: 141 */ 0xF4 /* 't' -> */, +/* pos 0154: 142 */ 0xF2 /* 'r' -> */, +/* pos 0155: 143 */ 0xEF /* 'o' -> */, +/* pos 0156: 144 */ 0xEC /* 'l' -> */, +/* pos 0157: 145 */ 0xAD /* '-' -> */, +/* pos 0158: 146 */ 0x72 /* 'r' */, 0x07, 0x00 /* (to 0x015F state 147) */, + 0x61 /* 'a' */, 0x44, 0x01 /* (to 0x029F state 350) */, 0x08, /* fail */ -/* pos 01c6: 271 */ 0xEE /* 'n' -> */, -/* pos 01c7: 272 */ 0xE7 /* 'g' -> */, -/* pos 01c8: 273 */ 0xE5 /* 'e' -> */, -/* pos 01c9: 274 */ 0xBA /* ':' -> */, -/* pos 01ca: 275 */ 0x00, 0x1E /* - terminal marker 30 - */, -/* pos 01cc: 276 */ 0xE6 /* 'f' -> */, -/* pos 01cd: 277 */ 0xE5 /* 'e' -> */, -/* pos 01ce: 278 */ 0xF2 /* 'r' -> */, -/* pos 01cf: 279 */ 0xE5 /* 'e' -> */, -/* pos 01d0: 280 */ 0xF2 /* 'r' -> */, -/* pos 01d1: 281 */ 0xBA /* ':' -> */, -/* pos 01d2: 282 */ 0x00, 0x1F /* - terminal marker 31 - */, -/* pos 01d4: 283 */ 0x00, 0x20 /* - terminal marker 32 - */, -/* pos 01d6: 284 */ 0xE5 /* 'e' -> */, -/* pos 01d7: 285 */ 0xF2 /* 'r' -> */, -/* pos 01d8: 286 */ 0xF3 /* 's' -> */, -/* pos 01d9: 287 */ 0xE9 /* 'i' -> */, -/* pos 01da: 288 */ 0xEF /* 'o' -> */, -/* pos 01db: 289 */ 0xEE /* 'n' -> */, -/* pos 01dc: 290 */ 0xBA /* ':' -> */, -/* pos 01dd: 291 */ 0x00, 0x21 /* - terminal marker 33 - */, -/* pos 01df: 292 */ 0xF2 /* 'r' -> */, -/* pos 01e0: 293 */ 0xE9 /* 'i' -> */, -/* pos 01e1: 294 */ 0xE7 /* 'g' -> */, -/* pos 01e2: 295 */ 0xE9 /* 'i' -> */, -/* pos 01e3: 296 */ 0xEE /* 'n' -> */, -/* pos 01e4: 297 */ 0xBA /* ':' -> */, -/* pos 01e5: 298 */ 0x00, 0x22 /* - terminal marker 34 - */, -/* total size 487 bytes */ +/* pos 015f: 147 */ 0xE5 /* 'e' -> */, +/* pos 0160: 148 */ 0xF1 /* 'q' -> */, +/* pos 0161: 149 */ 0xF5 /* 'u' -> */, +/* pos 0162: 150 */ 0xE5 /* 'e' -> */, +/* pos 0163: 151 */ 0xF3 /* 's' -> */, +/* pos 0164: 152 */ 0xF4 /* 't' -> */, +/* pos 0165: 153 */ 0xAD /* '-' -> */, +/* pos 0166: 154 */ 0xE8 /* 'h' -> */, +/* pos 0167: 155 */ 0xE5 /* 'e' -> */, +/* pos 0168: 156 */ 0xE1 /* 'a' -> */, +/* pos 0169: 157 */ 0xE4 /* 'd' -> */, +/* pos 016a: 158 */ 0xE5 /* 'e' -> */, +/* pos 016b: 159 */ 0xF2 /* 'r' -> */, +/* pos 016c: 160 */ 0xF3 /* 's' -> */, +/* pos 016d: 161 */ 0xBA /* ':' -> */, +/* pos 016e: 162 */ 0x00, 0x12 /* - terminal marker 18 - */, +/* pos 0170: 163 */ 0xE6 /* 'f' -> */, +/* pos 0171: 164 */ 0xAD /* '-' -> */, +/* pos 0172: 165 */ 0x6D /* 'm' */, 0x0D, 0x00 /* (to 0x017F state 166) */, + 0x6E /* 'n' */, 0x20, 0x00 /* (to 0x0195 state 181) */, + 0x72 /* 'r' */, 0x90, 0x01 /* (to 0x0308 state 431) */, + 0x75 /* 'u' */, 0x94, 0x01 /* (to 0x030F state 437) */, + 0x08, /* fail */ +/* pos 017f: 166 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x0186 state 167) */, + 0x61 /* 'a' */, 0x80, 0x01 /* (to 0x0302 state 426) */, + 0x08, /* fail */ +/* pos 0186: 167 */ 0xE4 /* 'd' -> */, +/* pos 0187: 168 */ 0xE9 /* 'i' -> */, +/* pos 0188: 169 */ 0xE6 /* 'f' -> */, +/* pos 0189: 170 */ 0xE9 /* 'i' -> */, +/* pos 018a: 171 */ 0xE5 /* 'e' -> */, +/* pos 018b: 172 */ 0xE4 /* 'd' -> */, +/* pos 018c: 173 */ 0xAD /* '-' -> */, +/* pos 018d: 174 */ 0xF3 /* 's' -> */, +/* pos 018e: 175 */ 0xE9 /* 'i' -> */, +/* pos 018f: 176 */ 0xEE /* 'n' -> */, +/* pos 0190: 177 */ 0xE3 /* 'c' -> */, +/* pos 0191: 178 */ 0xE5 /* 'e' -> */, +/* pos 0192: 179 */ 0xBA /* ':' -> */, +/* pos 0193: 180 */ 0x00, 0x13 /* - terminal marker 19 - */, +/* pos 0195: 181 */ 0xEF /* 'o' -> */, +/* pos 0196: 182 */ 0xEE /* 'n' -> */, +/* pos 0197: 183 */ 0xE5 /* 'e' -> */, +/* pos 0198: 184 */ 0xAD /* '-' -> */, +/* pos 0199: 185 */ 0xED /* 'm' -> */, +/* pos 019a: 186 */ 0xE1 /* 'a' -> */, +/* pos 019b: 187 */ 0xF4 /* 't' -> */, +/* pos 019c: 188 */ 0xE3 /* 'c' -> */, +/* pos 019d: 189 */ 0xE8 /* 'h' -> */, +/* pos 019e: 190 */ 0xBA /* ':' -> */, +/* pos 019f: 191 */ 0x00, 0x14 /* - terminal marker 20 - */, +/* pos 01a1: 192 */ 0x65 /* 'e' */, 0x0D, 0x00 /* (to 0x01AE state 193) */, + 0x6C /* 'l' */, 0x14, 0x00 /* (to 0x01B8 state 202) */, + 0x63 /* 'c' */, 0xE7, 0x00 /* (to 0x028E state 335) */, + 0x72 /* 'r' */, 0xED, 0x00 /* (to 0x0297 state 343) */, + 0x08, /* fail */ +/* pos 01ae: 193 */ 0xEE /* 'n' -> */, +/* pos 01af: 194 */ 0xE3 /* 'c' -> */, +/* pos 01b0: 195 */ 0xEF /* 'o' -> */, +/* pos 01b1: 196 */ 0xE4 /* 'd' -> */, +/* pos 01b2: 197 */ 0xE9 /* 'i' -> */, +/* pos 01b3: 198 */ 0xEE /* 'n' -> */, +/* pos 01b4: 199 */ 0xE7 /* 'g' -> */, +/* pos 01b5: 200 */ 0xBA /* ':' -> */, +/* pos 01b6: 201 */ 0x00, 0x15 /* - terminal marker 21 - */, +/* pos 01b8: 202 */ 0xE1 /* 'a' -> */, +/* pos 01b9: 203 */ 0xEE /* 'n' -> */, +/* pos 01ba: 204 */ 0xE7 /* 'g' -> */, +/* pos 01bb: 205 */ 0xF5 /* 'u' -> */, +/* pos 01bc: 206 */ 0xE1 /* 'a' -> */, +/* pos 01bd: 207 */ 0xE7 /* 'g' -> */, +/* pos 01be: 208 */ 0xE5 /* 'e' -> */, +/* pos 01bf: 209 */ 0xBA /* ':' -> */, +/* pos 01c0: 210 */ 0x00, 0x16 /* - terminal marker 22 - */, +/* pos 01c2: 211 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x01C9 state 212) */, + 0x6F /* 'o' */, 0x90, 0x01 /* (to 0x0355 state 493) */, + 0x08, /* fail */ +/* pos 01c9: 212 */ 0xE7 /* 'g' -> */, +/* pos 01ca: 213 */ 0xED /* 'm' -> */, +/* pos 01cb: 214 */ 0xE1 /* 'a' -> */, +/* pos 01cc: 215 */ 0xBA /* ':' -> */, +/* pos 01cd: 216 */ 0x00, 0x17 /* - terminal marker 23 - */, +/* pos 01cf: 217 */ 0xE3 /* 'c' -> */, +/* pos 01d0: 218 */ 0xE8 /* 'h' -> */, +/* pos 01d1: 219 */ 0xE5 /* 'e' -> */, +/* pos 01d2: 220 */ 0xAD /* '-' -> */, +/* pos 01d3: 221 */ 0xE3 /* 'c' -> */, +/* pos 01d4: 222 */ 0xEF /* 'o' -> */, +/* pos 01d5: 223 */ 0xEE /* 'n' -> */, +/* pos 01d6: 224 */ 0xF4 /* 't' -> */, +/* pos 01d7: 225 */ 0xF2 /* 'r' -> */, +/* pos 01d8: 226 */ 0xEF /* 'o' -> */, +/* pos 01d9: 227 */ 0xEC /* 'l' -> */, +/* pos 01da: 228 */ 0xBA /* ':' -> */, +/* pos 01db: 229 */ 0x00, 0x18 /* - terminal marker 24 - */, +/* pos 01dd: 230 */ 0xF4 /* 't' -> */, +/* pos 01de: 231 */ 0xE8 /* 'h' -> */, +/* pos 01df: 232 */ 0xEF /* 'o' -> */, +/* pos 01e0: 233 */ 0xF2 /* 'r' -> */, +/* pos 01e1: 234 */ 0xE9 /* 'i' -> */, +/* pos 01e2: 235 */ 0xFA /* 'z' -> */, +/* pos 01e3: 236 */ 0xE1 /* 'a' -> */, +/* pos 01e4: 237 */ 0xF4 /* 't' -> */, +/* pos 01e5: 238 */ 0xE9 /* 'i' -> */, +/* pos 01e6: 239 */ 0xEF /* 'o' -> */, +/* pos 01e7: 240 */ 0xEE /* 'n' -> */, +/* pos 01e8: 241 */ 0xBA /* ':' -> */, +/* pos 01e9: 242 */ 0x00, 0x19 /* - terminal marker 25 - */, +/* pos 01eb: 243 */ 0xEB /* 'k' -> */, +/* pos 01ec: 244 */ 0xE9 /* 'i' -> */, +/* pos 01ed: 245 */ 0xE5 /* 'e' -> */, +/* pos 01ee: 246 */ 0xBA /* ':' -> */, +/* pos 01ef: 247 */ 0x00, 0x1A /* - terminal marker 26 - */, +/* pos 01f1: 248 */ 0xE5 /* 'e' -> */, +/* pos 01f2: 249 */ 0xEE /* 'n' -> */, +/* pos 01f3: 250 */ 0xF4 /* 't' -> */, +/* pos 01f4: 251 */ 0xAD /* '-' -> */, +/* pos 01f5: 252 */ 0x6C /* 'l' */, 0x0D, 0x00 /* (to 0x0202 state 253) */, + 0x74 /* 't' */, 0x1B, 0x00 /* (to 0x0213 state 260) */, + 0x64 /* 'd' */, 0xBC, 0x00 /* (to 0x02B7 state 371) */, + 0x72 /* 'r' */, 0xD8, 0x00 /* (to 0x02D6 state 399) */, + 0x08, /* fail */ +/* pos 0202: 253 */ 0x65 /* 'e' */, 0x0A, 0x00 /* (to 0x020C state 254) */, + 0x61 /* 'a' */, 0xBF, 0x00 /* (to 0x02C4 state 383) */, + 0x6F /* 'o' */, 0xC5, 0x00 /* (to 0x02CD state 391) */, + 0x08, /* fail */ +/* pos 020c: 254 */ 0xEE /* 'n' -> */, +/* pos 020d: 255 */ 0xE7 /* 'g' -> */, +/* pos 020e: 256 */ 0xF4 /* 't' -> */, +/* pos 020f: 257 */ 0xE8 /* 'h' -> */, +/* pos 0210: 258 */ 0xBA /* ':' -> */, +/* pos 0211: 259 */ 0x00, 0x1B /* - terminal marker 27 - */, +/* pos 0213: 260 */ 0xF9 /* 'y' -> */, +/* pos 0214: 261 */ 0xF0 /* 'p' -> */, +/* pos 0215: 262 */ 0xE5 /* 'e' -> */, +/* pos 0216: 263 */ 0xBA /* ':' -> */, +/* pos 0217: 264 */ 0x00, 0x1C /* - terminal marker 28 - */, +/* pos 0219: 265 */ 0xE1 /* 'a' -> */, +/* pos 021a: 266 */ 0xF4 /* 't' -> */, +/* pos 021b: 267 */ 0xE5 /* 'e' -> */, +/* pos 021c: 268 */ 0xBA /* ':' -> */, +/* pos 021d: 269 */ 0x00, 0x1D /* - terminal marker 29 - */, +/* pos 021f: 270 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x0226 state 271) */, + 0x65 /* 'e' */, 0x0A, 0x00 /* (to 0x022C state 276) */, + 0x08, /* fail */ +/* pos 0226: 271 */ 0xEE /* 'n' -> */, +/* pos 0227: 272 */ 0xE7 /* 'g' -> */, +/* pos 0228: 273 */ 0xE5 /* 'e' -> */, +/* pos 0229: 274 */ 0xBA /* ':' -> */, +/* pos 022a: 275 */ 0x00, 0x1E /* - terminal marker 30 - */, +/* pos 022c: 276 */ 0x66 /* 'f' */, 0x07, 0x00 /* (to 0x0233 state 277) */, + 0x74 /* 't' */, 0x4F, 0x01 /* (to 0x037E state 525) */, + 0x08, /* fail */ +/* pos 0233: 277 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x023A state 278) */, + 0x72 /* 'r' */, 0x42, 0x01 /* (to 0x0378 state 520) */, + 0x08, /* fail */ +/* pos 023a: 278 */ 0xF2 /* 'r' -> */, +/* pos 023b: 279 */ 0xE5 /* 'e' -> */, +/* pos 023c: 280 */ 0xF2 /* 'r' -> */, +/* pos 023d: 281 */ 0xBA /* ':' -> */, +/* pos 023e: 282 */ 0x00, 0x1F /* - terminal marker 31 - */, +/* pos 0240: 283 */ 0x00, 0x20 /* - terminal marker 32 - */, +/* pos 0242: 284 */ 0xE5 /* 'e' -> */, +/* pos 0243: 285 */ 0xF2 /* 'r' -> */, +/* pos 0244: 286 */ 0xF3 /* 's' -> */, +/* pos 0245: 287 */ 0xE9 /* 'i' -> */, +/* pos 0246: 288 */ 0xEF /* 'o' -> */, +/* pos 0247: 289 */ 0xEE /* 'n' -> */, +/* pos 0248: 290 */ 0xBA /* ':' -> */, +/* pos 0249: 291 */ 0x00, 0x21 /* - terminal marker 33 - */, +/* pos 024b: 292 */ 0xF2 /* 'r' -> */, +/* pos 024c: 293 */ 0xE9 /* 'i' -> */, +/* pos 024d: 294 */ 0xE7 /* 'g' -> */, +/* pos 024e: 295 */ 0xE9 /* 'i' -> */, +/* pos 024f: 296 */ 0xEE /* 'n' -> */, +/* pos 0250: 297 */ 0xBA /* ':' -> */, +/* pos 0251: 298 */ 0x00, 0x22 /* - terminal marker 34 - */, +/* pos 0253: 299 */ 0x61 /* 'a' */, 0x0D, 0x00 /* (to 0x0260 state 300) */, + 0x6D /* 'm' */, 0x15, 0x00 /* (to 0x026B state 310) */, + 0x70 /* 'p' */, 0x1A, 0x00 /* (to 0x0273 state 317) */, + 0x73 /* 's' */, 0x1D, 0x00 /* (to 0x0279 state 322) */, + 0x08, /* fail */ +/* pos 0260: 300 */ 0xF5 /* 'u' -> */, +/* pos 0261: 301 */ 0xF4 /* 't' -> */, +/* pos 0262: 302 */ 0xE8 /* 'h' -> */, +/* pos 0263: 303 */ 0xEF /* 'o' -> */, +/* pos 0264: 304 */ 0xF2 /* 'r' -> */, +/* pos 0265: 305 */ 0xE9 /* 'i' -> */, +/* pos 0266: 306 */ 0xF4 /* 't' -> */, +/* pos 0267: 307 */ 0xF9 /* 'y' -> */, +/* pos 0268: 308 */ 0xBA /* ':' -> */, +/* pos 0269: 309 */ 0x00, 0x23 /* - terminal marker 35 - */, +/* pos 026b: 310 */ 0xE5 /* 'e' -> */, +/* pos 026c: 311 */ 0xF4 /* 't' -> */, +/* pos 026d: 312 */ 0xE8 /* 'h' -> */, +/* pos 026e: 313 */ 0xEF /* 'o' -> */, +/* pos 026f: 314 */ 0xE4 /* 'd' -> */, +/* pos 0270: 315 */ 0xBA /* ':' -> */, +/* pos 0271: 316 */ 0x00, 0x24 /* - terminal marker 36 - */, +/* pos 0273: 317 */ 0xE1 /* 'a' -> */, +/* pos 0274: 318 */ 0xF4 /* 't' -> */, +/* pos 0275: 319 */ 0xE8 /* 'h' -> */, +/* pos 0276: 320 */ 0xBA /* ':' -> */, +/* pos 0277: 321 */ 0x00, 0x25 /* - terminal marker 37 - */, +/* pos 0279: 322 */ 0x63 /* 'c' */, 0x07, 0x00 /* (to 0x0280 state 323) */, + 0x74 /* 't' */, 0x0B, 0x00 /* (to 0x0287 state 329) */, + 0x08, /* fail */ +/* pos 0280: 323 */ 0xE8 /* 'h' -> */, +/* pos 0281: 324 */ 0xE5 /* 'e' -> */, +/* pos 0282: 325 */ 0xED /* 'm' -> */, +/* pos 0283: 326 */ 0xE5 /* 'e' -> */, +/* pos 0284: 327 */ 0xBA /* ':' -> */, +/* pos 0285: 328 */ 0x00, 0x26 /* - terminal marker 38 - */, +/* pos 0287: 329 */ 0xE1 /* 'a' -> */, +/* pos 0288: 330 */ 0xF4 /* 't' -> */, +/* pos 0289: 331 */ 0xF5 /* 'u' -> */, +/* pos 028a: 332 */ 0xF3 /* 's' -> */, +/* pos 028b: 333 */ 0xBA /* ':' -> */, +/* pos 028c: 334 */ 0x00, 0x27 /* - terminal marker 39 - */, +/* pos 028e: 335 */ 0xE8 /* 'h' -> */, +/* pos 028f: 336 */ 0xE1 /* 'a' -> */, +/* pos 0290: 337 */ 0xF2 /* 'r' -> */, +/* pos 0291: 338 */ 0xF3 /* 's' -> */, +/* pos 0292: 339 */ 0xE5 /* 'e' -> */, +/* pos 0293: 340 */ 0xF4 /* 't' -> */, +/* pos 0294: 341 */ 0xBA /* ':' -> */, +/* pos 0295: 342 */ 0x00, 0x28 /* - terminal marker 40 - */, +/* pos 0297: 343 */ 0xE1 /* 'a' -> */, +/* pos 0298: 344 */ 0xEE /* 'n' -> */, +/* pos 0299: 345 */ 0xE7 /* 'g' -> */, +/* pos 029a: 346 */ 0xE5 /* 'e' -> */, +/* pos 029b: 347 */ 0xF3 /* 's' -> */, +/* pos 029c: 348 */ 0xBA /* ':' -> */, +/* pos 029d: 349 */ 0x00, 0x29 /* - terminal marker 41 - */, +/* pos 029f: 350 */ 0xEC /* 'l' -> */, +/* pos 02a0: 351 */ 0xEC /* 'l' -> */, +/* pos 02a1: 352 */ 0xEF /* 'o' -> */, +/* pos 02a2: 353 */ 0xF7 /* 'w' -> */, +/* pos 02a3: 354 */ 0xAD /* '-' -> */, +/* pos 02a4: 355 */ 0xEF /* 'o' -> */, +/* pos 02a5: 356 */ 0xF2 /* 'r' -> */, +/* pos 02a6: 357 */ 0xE9 /* 'i' -> */, +/* pos 02a7: 358 */ 0xE7 /* 'g' -> */, +/* pos 02a8: 359 */ 0xE9 /* 'i' -> */, +/* pos 02a9: 360 */ 0xEE /* 'n' -> */, +/* pos 02aa: 361 */ 0xBA /* ':' -> */, +/* pos 02ab: 362 */ 0x00, 0x2A /* - terminal marker 42 - */, +/* pos 02ad: 363 */ 0xE5 /* 'e' -> */, +/* pos 02ae: 364 */ 0xBA /* ':' -> */, +/* pos 02af: 365 */ 0x00, 0x2B /* - terminal marker 43 - */, +/* pos 02b1: 366 */ 0xEC /* 'l' -> */, +/* pos 02b2: 367 */ 0xEF /* 'o' -> */, +/* pos 02b3: 368 */ 0xF7 /* 'w' -> */, +/* pos 02b4: 369 */ 0xBA /* ':' -> */, +/* pos 02b5: 370 */ 0x00, 0x2C /* - terminal marker 44 - */, +/* pos 02b7: 371 */ 0xE9 /* 'i' -> */, +/* pos 02b8: 372 */ 0xF3 /* 's' -> */, +/* pos 02b9: 373 */ 0xF0 /* 'p' -> */, +/* pos 02ba: 374 */ 0xEF /* 'o' -> */, +/* pos 02bb: 375 */ 0xF3 /* 's' -> */, +/* pos 02bc: 376 */ 0xE9 /* 'i' -> */, +/* pos 02bd: 377 */ 0xF4 /* 't' -> */, +/* pos 02be: 378 */ 0xE9 /* 'i' -> */, +/* pos 02bf: 379 */ 0xEF /* 'o' -> */, +/* pos 02c0: 380 */ 0xEE /* 'n' -> */, +/* pos 02c1: 381 */ 0xBA /* ':' -> */, +/* pos 02c2: 382 */ 0x00, 0x2D /* - terminal marker 45 - */, +/* pos 02c4: 383 */ 0xEE /* 'n' -> */, +/* pos 02c5: 384 */ 0xE7 /* 'g' -> */, +/* pos 02c6: 385 */ 0xF5 /* 'u' -> */, +/* pos 02c7: 386 */ 0xE1 /* 'a' -> */, +/* pos 02c8: 387 */ 0xE7 /* 'g' -> */, +/* pos 02c9: 388 */ 0xE5 /* 'e' -> */, +/* pos 02ca: 389 */ 0xBA /* ':' -> */, +/* pos 02cb: 390 */ 0x00, 0x2E /* - terminal marker 46 - */, +/* pos 02cd: 391 */ 0xE3 /* 'c' -> */, +/* pos 02ce: 392 */ 0xE1 /* 'a' -> */, +/* pos 02cf: 393 */ 0xF4 /* 't' -> */, +/* pos 02d0: 394 */ 0xE9 /* 'i' -> */, +/* pos 02d1: 395 */ 0xEF /* 'o' -> */, +/* pos 02d2: 396 */ 0xEE /* 'n' -> */, +/* pos 02d3: 397 */ 0xBA /* ':' -> */, +/* pos 02d4: 398 */ 0x00, 0x2F /* - terminal marker 47 - */, +/* pos 02d6: 399 */ 0xE1 /* 'a' -> */, +/* pos 02d7: 400 */ 0xEE /* 'n' -> */, +/* pos 02d8: 401 */ 0xE7 /* 'g' -> */, +/* pos 02d9: 402 */ 0xE5 /* 'e' -> */, +/* pos 02da: 403 */ 0xBA /* ':' -> */, +/* pos 02db: 404 */ 0x00, 0x30 /* - terminal marker 48 - */, +/* pos 02dd: 405 */ 0x74 /* 't' */, 0x07, 0x00 /* (to 0x02E4 state 406) */, + 0x78 /* 'x' */, 0x09, 0x00 /* (to 0x02E9 state 410) */, + 0x08, /* fail */ +/* pos 02e4: 406 */ 0xE1 /* 'a' -> */, +/* pos 02e5: 407 */ 0xE7 /* 'g' -> */, +/* pos 02e6: 408 */ 0xBA /* ':' -> */, +/* pos 02e7: 409 */ 0x00, 0x31 /* - terminal marker 49 - */, +/* pos 02e9: 410 */ 0xF0 /* 'p' -> */, +/* pos 02ea: 411 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x02F1 state 412) */, + 0x69 /* 'i' */, 0x09, 0x00 /* (to 0x02F6 state 416) */, + 0x08, /* fail */ +/* pos 02f1: 412 */ 0xE3 /* 'c' -> */, +/* pos 02f2: 413 */ 0xF4 /* 't' -> */, +/* pos 02f3: 414 */ 0xBA /* ':' -> */, +/* pos 02f4: 415 */ 0x00, 0x32 /* - terminal marker 50 - */, +/* pos 02f6: 416 */ 0xF2 /* 'r' -> */, +/* pos 02f7: 417 */ 0xE5 /* 'e' -> */, +/* pos 02f8: 418 */ 0xF3 /* 's' -> */, +/* pos 02f9: 419 */ 0xBA /* ':' -> */, +/* pos 02fa: 420 */ 0x00, 0x33 /* - terminal marker 51 - */, +/* pos 02fc: 421 */ 0xF2 /* 'r' -> */, +/* pos 02fd: 422 */ 0xEF /* 'o' -> */, +/* pos 02fe: 423 */ 0xED /* 'm' -> */, +/* pos 02ff: 424 */ 0xBA /* ':' -> */, +/* pos 0300: 425 */ 0x00, 0x34 /* - terminal marker 52 - */, +/* pos 0302: 426 */ 0xF4 /* 't' -> */, +/* pos 0303: 427 */ 0xE3 /* 'c' -> */, +/* pos 0304: 428 */ 0xE8 /* 'h' -> */, +/* pos 0305: 429 */ 0xBA /* ':' -> */, +/* pos 0306: 430 */ 0x00, 0x35 /* - terminal marker 53 - */, +/* pos 0308: 431 */ 0xE1 /* 'a' -> */, +/* pos 0309: 432 */ 0xEE /* 'n' -> */, +/* pos 030a: 433 */ 0xE7 /* 'g' -> */, +/* pos 030b: 434 */ 0xE5 /* 'e' -> */, +/* pos 030c: 435 */ 0xBA /* ':' -> */, +/* pos 030d: 436 */ 0x00, 0x36 /* - terminal marker 54 - */, +/* pos 030f: 437 */ 0xEE /* 'n' -> */, +/* pos 0310: 438 */ 0xED /* 'm' -> */, +/* pos 0311: 439 */ 0xEF /* 'o' -> */, +/* pos 0312: 440 */ 0xE4 /* 'd' -> */, +/* pos 0313: 441 */ 0xE9 /* 'i' -> */, +/* pos 0314: 442 */ 0xE6 /* 'f' -> */, +/* pos 0315: 443 */ 0xE9 /* 'i' -> */, +/* pos 0316: 444 */ 0xE5 /* 'e' -> */, +/* pos 0317: 445 */ 0xE4 /* 'd' -> */, +/* pos 0318: 446 */ 0xAD /* '-' -> */, +/* pos 0319: 447 */ 0xF3 /* 's' -> */, +/* pos 031a: 448 */ 0xE9 /* 'i' -> */, +/* pos 031b: 449 */ 0xEE /* 'n' -> */, +/* pos 031c: 450 */ 0xE3 /* 'c' -> */, +/* pos 031d: 451 */ 0xE5 /* 'e' -> */, +/* pos 031e: 452 */ 0xBA /* ':' -> */, +/* pos 031f: 453 */ 0x00, 0x37 /* - terminal marker 55 - */, +/* pos 0321: 454 */ 0x61 /* 'a' */, 0x0A, 0x00 /* (to 0x032B state 455) */, + 0x69 /* 'i' */, 0x15, 0x00 /* (to 0x0339 state 468) */, + 0x6F /* 'o' */, 0x17, 0x00 /* (to 0x033E state 472) */, + 0x08, /* fail */ +/* pos 032b: 455 */ 0xF3 /* 's' -> */, +/* pos 032c: 456 */ 0xF4 /* 't' -> */, +/* pos 032d: 457 */ 0xAD /* '-' -> */, +/* pos 032e: 458 */ 0xED /* 'm' -> */, +/* pos 032f: 459 */ 0xEF /* 'o' -> */, +/* pos 0330: 460 */ 0xE4 /* 'd' -> */, +/* pos 0331: 461 */ 0xE9 /* 'i' -> */, +/* pos 0332: 462 */ 0xE6 /* 'f' -> */, +/* pos 0333: 463 */ 0xE9 /* 'i' -> */, +/* pos 0334: 464 */ 0xE5 /* 'e' -> */, +/* pos 0335: 465 */ 0xE4 /* 'd' -> */, +/* pos 0336: 466 */ 0xBA /* ':' -> */, +/* pos 0337: 467 */ 0x00, 0x38 /* - terminal marker 56 - */, +/* pos 0339: 468 */ 0xEE /* 'n' -> */, +/* pos 033a: 469 */ 0xEB /* 'k' -> */, +/* pos 033b: 470 */ 0xBA /* ':' -> */, +/* pos 033c: 471 */ 0x00, 0x39 /* - terminal marker 57 - */, +/* pos 033e: 472 */ 0xE3 /* 'c' -> */, +/* pos 033f: 473 */ 0xE1 /* 'a' -> */, +/* pos 0340: 474 */ 0xF4 /* 't' -> */, +/* pos 0341: 475 */ 0xE9 /* 'i' -> */, +/* pos 0342: 476 */ 0xEF /* 'o' -> */, +/* pos 0343: 477 */ 0xEE /* 'n' -> */, +/* pos 0344: 478 */ 0xBA /* ':' -> */, +/* pos 0345: 479 */ 0x00, 0x3A /* - terminal marker 58 - */, +/* pos 0347: 480 */ 0xE1 /* 'a' -> */, +/* pos 0348: 481 */ 0xF8 /* 'x' -> */, +/* pos 0349: 482 */ 0xAD /* '-' -> */, +/* pos 034a: 483 */ 0xE6 /* 'f' -> */, +/* pos 034b: 484 */ 0xEF /* 'o' -> */, +/* pos 034c: 485 */ 0xF2 /* 'r' -> */, +/* pos 034d: 486 */ 0xF7 /* 'w' -> */, +/* pos 034e: 487 */ 0xE1 /* 'a' -> */, +/* pos 034f: 488 */ 0xF2 /* 'r' -> */, +/* pos 0350: 489 */ 0xE4 /* 'd' -> */, +/* pos 0351: 490 */ 0xF3 /* 's' -> */, +/* pos 0352: 491 */ 0xBA /* ':' -> */, +/* pos 0353: 492 */ 0x00, 0x3B /* - terminal marker 59 - */, +/* pos 0355: 493 */ 0xF8 /* 'x' -> */, +/* pos 0356: 494 */ 0xF9 /* 'y' -> */, +/* pos 0357: 495 */ 0xAD /* '-' -> */, +/* pos 0358: 496 */ 0xE1 /* 'a' -> */, +/* pos 0359: 497 */ 0xF5 /* 'u' -> */, +/* pos 035a: 498 */ 0xF4 /* 't' -> */, +/* pos 035b: 499 */ 0xE8 /* 'h' -> */, +/* pos 035c: 500 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x0363 state 501) */, + 0x6F /* 'o' */, 0x0E, 0x00 /* (to 0x036D state 510) */, + 0x08, /* fail */ +/* pos 0363: 501 */ 0xEE /* 'n' -> */, +/* pos 0364: 502 */ 0xF4 /* 't' -> */, +/* pos 0365: 503 */ 0xE9 /* 'i' -> */, +/* pos 0366: 504 */ 0xE3 /* 'c' -> */, +/* pos 0367: 505 */ 0xE1 /* 'a' -> */, +/* pos 0368: 506 */ 0xF4 /* 't' -> */, +/* pos 0369: 507 */ 0xE5 /* 'e' -> */, +/* pos 036a: 508 */ 0xBA /* ':' -> */, +/* pos 036b: 509 */ 0x00, 0x3C /* - terminal marker 60 - */, +/* pos 036d: 510 */ 0xF2 /* 'r' -> */, +/* pos 036e: 511 */ 0xE9 /* 'i' -> */, +/* pos 036f: 512 */ 0xFA /* 'z' -> */, +/* pos 0370: 513 */ 0xE1 /* 'a' -> */, +/* pos 0371: 514 */ 0xF4 /* 't' -> */, +/* pos 0372: 515 */ 0xE9 /* 'i' -> */, +/* pos 0373: 516 */ 0xEF /* 'o' -> */, +/* pos 0374: 517 */ 0xEE /* 'n' -> */, +/* pos 0375: 518 */ 0xBA /* ':' -> */, +/* pos 0376: 519 */ 0x00, 0x3D /* - terminal marker 61 - */, +/* pos 0378: 520 */ 0xE5 /* 'e' -> */, +/* pos 0379: 521 */ 0xF3 /* 's' -> */, +/* pos 037a: 522 */ 0xE8 /* 'h' -> */, +/* pos 037b: 523 */ 0xBA /* ':' -> */, +/* pos 037c: 524 */ 0x00, 0x3E /* - terminal marker 62 - */, +/* pos 037e: 525 */ 0xF2 /* 'r' -> */, +/* pos 037f: 526 */ 0xF9 /* 'y' -> */, +/* pos 0380: 527 */ 0xAD /* '-' -> */, +/* pos 0381: 528 */ 0xE1 /* 'a' -> */, +/* pos 0382: 529 */ 0xE6 /* 'f' -> */, +/* pos 0383: 530 */ 0xF4 /* 't' -> */, +/* pos 0384: 531 */ 0xE5 /* 'e' -> */, +/* pos 0385: 532 */ 0xF2 /* 'r' -> */, +/* pos 0386: 533 */ 0xBA /* ':' -> */, +/* pos 0387: 534 */ 0x00, 0x3F /* - terminal marker 63 - */, +/* pos 0389: 535 */ 0xF6 /* 'v' -> */, +/* pos 038a: 536 */ 0xE5 /* 'e' -> */, +/* pos 038b: 537 */ 0xF2 /* 'r' -> */, +/* pos 038c: 538 */ 0xBA /* ':' -> */, +/* pos 038d: 539 */ 0x00, 0x40 /* - terminal marker 64 - */, +/* pos 038f: 540 */ 0xAD /* '-' -> */, +/* pos 0390: 541 */ 0xE3 /* 'c' -> */, +/* pos 0391: 542 */ 0xEF /* 'o' -> */, +/* pos 0392: 543 */ 0xEF /* 'o' -> */, +/* pos 0393: 544 */ 0xEB /* 'k' -> */, +/* pos 0394: 545 */ 0xE9 /* 'i' -> */, +/* pos 0395: 546 */ 0xE5 /* 'e' -> */, +/* pos 0396: 547 */ 0xBA /* ':' -> */, +/* pos 0397: 548 */ 0x00, 0x41 /* - terminal marker 65 - */, +/* pos 0399: 549 */ 0xF2 /* 'r' -> */, +/* pos 039a: 550 */ 0xE9 /* 'i' -> */, +/* pos 039b: 551 */ 0xE3 /* 'c' -> */, +/* pos 039c: 552 */ 0xF4 /* 't' -> */, +/* pos 039d: 553 */ 0xAD /* '-' -> */, +/* pos 039e: 554 */ 0xF4 /* 't' -> */, +/* pos 039f: 555 */ 0xF2 /* 'r' -> */, +/* pos 03a0: 556 */ 0xE1 /* 'a' -> */, +/* pos 03a1: 557 */ 0xEE /* 'n' -> */, +/* pos 03a2: 558 */ 0xF3 /* 's' -> */, +/* pos 03a3: 559 */ 0xF0 /* 'p' -> */, +/* pos 03a4: 560 */ 0xEF /* 'o' -> */, +/* pos 03a5: 561 */ 0xF2 /* 'r' -> */, +/* pos 03a6: 562 */ 0xF4 /* 't' -> */, +/* pos 03a7: 563 */ 0xAD /* '-' -> */, +/* pos 03a8: 564 */ 0xF3 /* 's' -> */, +/* pos 03a9: 565 */ 0xE5 /* 'e' -> */, +/* pos 03aa: 566 */ 0xE3 /* 'c' -> */, +/* pos 03ab: 567 */ 0xF5 /* 'u' -> */, +/* pos 03ac: 568 */ 0xF2 /* 'r' -> */, +/* pos 03ad: 569 */ 0xE9 /* 'i' -> */, +/* pos 03ae: 570 */ 0xF4 /* 't' -> */, +/* pos 03af: 571 */ 0xF9 /* 'y' -> */, +/* pos 03b0: 572 */ 0xBA /* ':' -> */, +/* pos 03b1: 573 */ 0x00, 0x42 /* - terminal marker 66 - */, +/* pos 03b3: 574 */ 0xF2 /* 'r' -> */, +/* pos 03b4: 575 */ 0xE1 /* 'a' -> */, +/* pos 03b5: 576 */ 0xEE /* 'n' -> */, +/* pos 03b6: 577 */ 0xF3 /* 's' -> */, +/* pos 03b7: 578 */ 0xE6 /* 'f' -> */, +/* pos 03b8: 579 */ 0xE5 /* 'e' -> */, +/* pos 03b9: 580 */ 0xF2 /* 'r' -> */, +/* pos 03ba: 581 */ 0xAD /* '-' -> */, +/* pos 03bb: 582 */ 0xE5 /* 'e' -> */, +/* pos 03bc: 583 */ 0xEE /* 'n' -> */, +/* pos 03bd: 584 */ 0xE3 /* 'c' -> */, +/* pos 03be: 585 */ 0xEF /* 'o' -> */, +/* pos 03bf: 586 */ 0xE4 /* 'd' -> */, +/* pos 03c0: 587 */ 0xE9 /* 'i' -> */, +/* pos 03c1: 588 */ 0xEE /* 'n' -> */, +/* pos 03c2: 589 */ 0xE7 /* 'g' -> */, +/* pos 03c3: 590 */ 0xBA /* ':' -> */, +/* pos 03c4: 591 */ 0x00, 0x43 /* - terminal marker 67 - */, +/* pos 03c6: 592 */ 0xE5 /* 'e' -> */, +/* pos 03c7: 593 */ 0xF2 /* 'r' -> */, +/* pos 03c8: 594 */ 0xAD /* '-' -> */, +/* pos 03c9: 595 */ 0xE1 /* 'a' -> */, +/* pos 03ca: 596 */ 0xE7 /* 'g' -> */, +/* pos 03cb: 597 */ 0xE5 /* 'e' -> */, +/* pos 03cc: 598 */ 0xEE /* 'n' -> */, +/* pos 03cd: 599 */ 0xF4 /* 't' -> */, +/* pos 03ce: 600 */ 0xBA /* ':' -> */, +/* pos 03cf: 601 */ 0x00, 0x44 /* - terminal marker 68 - */, +/* pos 03d1: 602 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x03D8 state 603) */, + 0x69 /* 'i' */, 0x09, 0x00 /* (to 0x03DD state 607) */, + 0x08, /* fail */ +/* pos 03d8: 603 */ 0xF2 /* 'r' -> */, +/* pos 03d9: 604 */ 0xF9 /* 'y' -> */, +/* pos 03da: 605 */ 0xBA /* ':' -> */, +/* pos 03db: 606 */ 0x00, 0x45 /* - terminal marker 69 - */, +/* pos 03dd: 607 */ 0xE1 /* 'a' -> */, +/* pos 03de: 608 */ 0xBA /* ':' -> */, +/* pos 03df: 609 */ 0x00, 0x46 /* - terminal marker 70 - */, +/* pos 03e1: 610 */ 0xF7 /* 'w' -> */, +/* pos 03e2: 611 */ 0xF7 /* 'w' -> */, +/* pos 03e3: 612 */ 0xAD /* '-' -> */, +/* pos 03e4: 613 */ 0xE1 /* 'a' -> */, +/* pos 03e5: 614 */ 0xF5 /* 'u' -> */, +/* pos 03e6: 615 */ 0xF4 /* 't' -> */, +/* pos 03e7: 616 */ 0xE8 /* 'h' -> */, +/* pos 03e8: 617 */ 0xE5 /* 'e' -> */, +/* pos 03e9: 618 */ 0xEE /* 'n' -> */, +/* pos 03ea: 619 */ 0xF4 /* 't' -> */, +/* pos 03eb: 620 */ 0xE9 /* 'i' -> */, +/* pos 03ec: 621 */ 0xE3 /* 'c' -> */, +/* pos 03ed: 622 */ 0xE1 /* 'a' -> */, +/* pos 03ee: 623 */ 0xF4 /* 't' -> */, +/* pos 03ef: 624 */ 0xE5 /* 'e' -> */, +/* pos 03f0: 625 */ 0xBA /* ':' -> */, +/* pos 03f1: 626 */ 0x00, 0x47 /* - terminal marker 71 - */, +/* total size 1011 bytes */ diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index 777b3155..84c1e955 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -327,10 +327,48 @@ enum lws_token_indexes { WSI_TOKEN_VERSION, WSI_TOKEN_SWORIGIN, + WSI_TOKEN_HTTP_COLON_AUTHORITY, + WSI_TOKEN_HTTP_COLON_METHOD, + WSI_TOKEN_HTTP_COLON_PATH, + WSI_TOKEN_HTTP_COLON_SCHEME, + WSI_TOKEN_HTTP_COLON_STATUS, + + WSI_TOKEN_HTTP_ACCEPT_CHARSET, + WSI_TOKEN_HTTP_ACCEPT_RANGES, + WSI_TOKEN_HTTP_ACCESS_CONTROL_ALLOW_ORIGIN, + WSI_TOKEN_HTTP_AGE, + WSI_TOKEN_HTTP_ALLOW, + WSI_TOKEN_HTTP_CONTENT_DISPOSITION, + WSI_TOKEN_HTTP_CONTENT_ENCODING, + WSI_TOKEN_HTTP_CONTENT_LANGUAGE, + WSI_TOKEN_HTTP_CONTENT_LOCATION, + WSI_TOKEN_HTTP_CONTENT_RANGE, + WSI_TOKEN_HTTP_ETAG, + WSI_TOKEN_HTTP_EXPECT, + WSI_TOKEN_HTTP_EXPIRES, + WSI_TOKEN_HTTP_FROM, + WSI_TOKEN_HTTP_IF_MATCH, + WSI_TOKEN_HTTP_IF_RANGE, + WSI_TOKEN_HTTP_IF_UNMODIFIED_SINCE, + WSI_TOKEN_HTTP_LAST_MODIFIED, + WSI_TOKEN_HTTP_LINK, + WSI_TOKEN_HTTP_LOCATION, + WSI_TOKEN_HTTP_MAX_FORWARDS, + WSI_TOKEN_HTTP_PROXY_AUTHENTICATE, + WSI_TOKEN_HTTP_PROXY_AUTHORIZATION, + WSI_TOKEN_HTTP_REFRESH, + WSI_TOKEN_HTTP_RETRY_AFTER, + WSI_TOKEN_HTTP_SERVER, + WSI_TOKEN_HTTP_SET_COOKIE, + WSI_TOKEN_HTTP_STRICT_TRANSPORT_SECURITY, + WSI_TOKEN_HTTP_TRANSFER_ENCODING, + WSI_TOKEN_HTTP_USER_AGENT, + WSI_TOKEN_HTTP_VARY, + WSI_TOKEN_HTTP_VIA, + WSI_TOKEN_HTTP_WWW_AUTHENTICATE, + WSI_TOKEN_HTTP_URI_ARGS, - WSI_TOKEN_MUXURL, - /* use token storage to stash these */ _WSI_TOKEN_CLIENT_SENT_PROTOCOLS, diff --git a/lib/minilex.c b/lib/minilex.c index f3516d61..9a0a8d1a 100644 --- a/lib/minilex.c +++ b/lib/minilex.c @@ -57,6 +57,45 @@ const char *set[] = { "sec-websocket-key:", "sec-websocket-version:", "sec-websocket-origin:", + + ":authority:", + ":method:", + ":path:", + ":scheme:", + ":status:", + + "accept-charset:", + "accept-ranges:", + "access-control-allow-origin:", + "age:", + "allow:", + "content-disposition:", + "content-language:", + "content-location:", + "content-range:", + "etag:", + "expect:", + "expires:", + "from:", + "if-match:", + "if-range:", + "if-unmodified-since:", + "last-modified:", + "link:", + "location:", + "max-forwards:", + "proxy-authenticate:", + "proxy-authorization:", + "refresh:", + "retry-after:", + "server:", + "set-cookie:", + "strict-transport-security:", + "transfer-encoding:", + "user-agent:", + "vary:", + "via:", + "www-authenticate:", "", /* not matchable */ diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h index 9c19f229..cac681b7 100755 --- a/lib/private-libwebsockets.h +++ b/lib/private-libwebsockets.h @@ -614,6 +614,15 @@ struct http2_settings { unsigned int setting[LWS_HTTP2_SETTINGS__COUNT]; }; +enum http2_hpack_state { + HPKS_TYPE, + + HPKS_HLEN, + HPKS_HLEN_EXT, + + HPKS_DATA, +}; + struct _lws_http2_related { /* * having this first lets us also re-use all HTTP union code @@ -638,6 +647,14 @@ struct _lws_http2_related { unsigned char flags; unsigned char frame_state; + /* hpack */ + enum http2_hpack_state hpack; + unsigned int header_index; + unsigned int hpack_len; + unsigned char hpack_m; + unsigned int huff:1; + unsigned int value:1; + unsigned int tx_credit; unsigned int my_stream_id; unsigned int child_count;