diff --git a/lib/lextable-strings.h b/lib/lextable-strings.h index 898e6f38..c9fe6ff3 100644 --- a/lib/lextable-strings.h +++ b/lib/lextable-strings.h @@ -95,6 +95,7 @@ STORE_IN_ROM static const char * const set[] = { "http/1.0 ", "x-forwarded-for", + "connect ", "", /* not matchable */ diff --git a/lib/lextable.h b/lib/lextable.h index 7998fb79..2f4f079a 100644 --- a/lib/lextable.h +++ b/lib/lextable.h @@ -3,38 +3,38 @@ 0x6F /* 'o' */, 0x51, 0x00 /* (to 0x0057 state 10) */, 0x68 /* 'h' */, 0x5D, 0x00 /* (to 0x0066 state 18) */, 0x63 /* 'c' */, 0x66, 0x00 /* (to 0x0072 state 23) */, - 0x75 /* 'u' */, 0x81, 0x00 /* (to 0x0090 state 34) */, - 0x73 /* 's' */, 0x97, 0x00 /* (to 0x00A9 state 48) */, - 0x0D /* '.' */, 0xD0, 0x00 /* (to 0x00E5 state 68) */, - 0x61 /* 'a' */, 0x28, 0x01 /* (to 0x0140 state 129) */, - 0x69 /* 'i' */, 0x67, 0x01 /* (to 0x0182 state 163) */, - 0x64 /* 'd' */, 0x10, 0x02 /* (to 0x022E state 265) */, - 0x72 /* 'r' */, 0x19, 0x02 /* (to 0x023A state 270) */, - 0x3A /* ':' */, 0x4A, 0x02 /* (to 0x026E state 299) */, - 0x65 /* 'e' */, 0xD6, 0x02 /* (to 0x02FD state 409) */, - 0x66 /* 'f' */, 0xF2, 0x02 /* (to 0x031C state 425) */, - 0x6C /* 'l' */, 0x14, 0x03 /* (to 0x0341 state 458) */, - 0x6D /* 'm' */, 0x37, 0x03 /* (to 0x0367 state 484) */, - 0x74 /* 't' */, 0xA6, 0x03 /* (to 0x03D9 state 578) */, - 0x76 /* 'v' */, 0xC1, 0x03 /* (to 0x03F7 state 606) */, - 0x77 /* 'w' */, 0xCE, 0x03 /* (to 0x0407 state 614) */, - 0x78 /* 'x' */, 0xF5, 0x03 /* (to 0x0431 state 650) */, + 0x75 /* 'u' */, 0x87, 0x00 /* (to 0x0096 state 34) */, + 0x73 /* 's' */, 0x9D, 0x00 /* (to 0x00AF state 48) */, + 0x0D /* '.' */, 0xD6, 0x00 /* (to 0x00EB state 68) */, + 0x61 /* 'a' */, 0x2E, 0x01 /* (to 0x0146 state 129) */, + 0x69 /* 'i' */, 0x6D, 0x01 /* (to 0x0188 state 163) */, + 0x64 /* 'd' */, 0x16, 0x02 /* (to 0x0234 state 265) */, + 0x72 /* 'r' */, 0x1F, 0x02 /* (to 0x0240 state 270) */, + 0x3A /* ':' */, 0x50, 0x02 /* (to 0x0274 state 299) */, + 0x65 /* 'e' */, 0xDC, 0x02 /* (to 0x0303 state 409) */, + 0x66 /* 'f' */, 0xF8, 0x02 /* (to 0x0322 state 425) */, + 0x6C /* 'l' */, 0x1A, 0x03 /* (to 0x0347 state 458) */, + 0x6D /* 'm' */, 0x3D, 0x03 /* (to 0x036D state 484) */, + 0x74 /* 't' */, 0xAC, 0x03 /* (to 0x03DF state 578) */, + 0x76 /* 'v' */, 0xC7, 0x03 /* (to 0x03FD state 606) */, + 0x77 /* 'w' */, 0xD4, 0x03 /* (to 0x040D state 614) */, + 0x78 /* 'x' */, 0xFB, 0x03 /* (to 0x0437 state 650) */, 0x08, /* fail */ /* pos 0040: 1 */ 0xE5 /* 'e' -> */, /* pos 0041: 2 */ 0xF4 /* 't' -> */, /* pos 0042: 3 */ 0xA0 /* ' ' -> */, /* pos 0043: 4 */ 0x00, 0x00 /* - terminal marker 0 - */, /* pos 0045: 5 */ 0x6F /* 'o' */, 0x0D, 0x00 /* (to 0x0052 state 6) */, - 0x72 /* 'r' */, 0x8C, 0x01 /* (to 0x01D4 state 211) */, - 0x61 /* 'a' */, 0xCE, 0x03 /* (to 0x0419 state 631) */, - 0x75 /* 'u' */, 0xD0, 0x03 /* (to 0x041E state 635) */, + 0x72 /* 'r' */, 0x92, 0x01 /* (to 0x01DA state 211) */, + 0x61 /* 'a' */, 0xD4, 0x03 /* (to 0x041F state 631) */, + 0x75 /* 'u' */, 0xD6, 0x03 /* (to 0x0424 state 635) */, 0x08, /* fail */ /* pos 0052: 6 */ 0xF3 /* 's' -> */, /* pos 0053: 7 */ 0xF4 /* 't' -> */, /* pos 0054: 8 */ 0xA0 /* ' ' -> */, /* pos 0055: 9 */ 0x00, 0x01 /* - terminal marker 1 - */, /* pos 0057: 10 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x005E state 11) */, - 0x72 /* 'r' */, 0x48, 0x00 /* (to 0x00A2 state 42) */, + 0x72 /* 'r' */, 0x4E, 0x00 /* (to 0x00A8 state 42) */, 0x08, /* fail */ /* pos 005e: 11 */ 0xF4 /* 't' -> */, /* pos 005f: 12 */ 0xE9 /* 'i' -> */, @@ -44,750 +44,753 @@ /* pos 0063: 16 */ 0xA0 /* ' ' -> */, /* pos 0064: 17 */ 0x00, 0x02 /* - terminal marker 2 - */, /* pos 0066: 18 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x006D state 19) */, - 0x74 /* 't' */, 0xB6, 0x00 /* (to 0x011F state 110) */, + 0x74 /* 't' */, 0xBC, 0x00 /* (to 0x0125 state 110) */, 0x08, /* fail */ /* pos 006d: 19 */ 0xF3 /* 's' -> */, /* pos 006e: 20 */ 0xF4 /* 't' -> */, /* pos 006f: 21 */ 0xBA /* ':' -> */, /* pos 0070: 22 */ 0x00, 0x03 /* - terminal marker 3 - */, /* pos 0072: 23 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x0079 state 24) */, - 0x61 /* 'a' */, 0x6C, 0x01 /* (to 0x01E1 state 217) */, + 0x61 /* 'a' */, 0x72, 0x01 /* (to 0x01E7 state 217) */, 0x08, /* fail */ /* pos 0079: 24 */ 0x6E /* 'n' */, 0x07, 0x00 /* (to 0x0080 state 25) */, - 0x6F /* 'o' */, 0x81, 0x01 /* (to 0x01FD state 243) */, + 0x6F /* 'o' */, 0x87, 0x01 /* (to 0x0203 state 243) */, 0x08, /* fail */ /* pos 0080: 25 */ 0x6E /* 'n' */, 0x07, 0x00 /* (to 0x0087 state 26) */, - 0x74 /* 't' */, 0x80, 0x01 /* (to 0x0203 state 248) */, + 0x74 /* 't' */, 0x86, 0x01 /* (to 0x0209 state 248) */, 0x08, /* fail */ /* pos 0087: 26 */ 0xE5 /* 'e' -> */, /* pos 0088: 27 */ 0xE3 /* 'c' -> */, /* pos 0089: 28 */ 0xF4 /* 't' -> */, -/* pos 008a: 29 */ 0xE9 /* 'i' -> */, -/* pos 008b: 30 */ 0xEF /* 'o' -> */, -/* pos 008c: 31 */ 0xEE /* 'n' -> */, -/* pos 008d: 32 */ 0xBA /* ':' -> */, -/* pos 008e: 33 */ 0x00, 0x04 /* - terminal marker 4 - */, -/* pos 0090: 34 */ 0x70 /* 'p' */, 0x0A, 0x00 /* (to 0x009A state 35) */, - 0x73 /* 's' */, 0x59, 0x03 /* (to 0x03EC state 596) */, - 0x72 /* 'r' */, 0x91, 0x03 /* (to 0x0427 state 642) */, +/* pos 008a: 29 */ 0x69 /* 'i' */, 0x07, 0x00 /* (to 0x0091 state 30) */, + 0x20 /* ' ' */, 0xCC, 0x03 /* (to 0x0459 state 675) */, 0x08, /* fail */ -/* pos 009a: 35 */ 0xE7 /* 'g' -> */, -/* pos 009b: 36 */ 0xF2 /* 'r' -> */, -/* pos 009c: 37 */ 0xE1 /* 'a' -> */, -/* pos 009d: 38 */ 0xE4 /* 'd' -> */, -/* pos 009e: 39 */ 0xE5 /* 'e' -> */, -/* pos 009f: 40 */ 0xBA /* ':' -> */, -/* pos 00a0: 41 */ 0x00, 0x05 /* - terminal marker 5 - */, -/* pos 00a2: 42 */ 0xE9 /* 'i' -> */, -/* pos 00a3: 43 */ 0xE7 /* 'g' -> */, -/* pos 00a4: 44 */ 0xE9 /* 'i' -> */, -/* pos 00a5: 45 */ 0xEE /* 'n' -> */, -/* pos 00a6: 46 */ 0xBA /* ':' -> */, -/* pos 00a7: 47 */ 0x00, 0x06 /* - terminal marker 6 - */, -/* pos 00a9: 48 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x00B0 state 49) */, - 0x74 /* 't' */, 0x13, 0x03 /* (to 0x03BF state 553) */, +/* pos 0091: 30 */ 0xEF /* 'o' -> */, +/* pos 0092: 31 */ 0xEE /* 'n' -> */, +/* pos 0093: 32 */ 0xBA /* ':' -> */, +/* pos 0094: 33 */ 0x00, 0x04 /* - terminal marker 4 - */, +/* pos 0096: 34 */ 0x70 /* 'p' */, 0x0A, 0x00 /* (to 0x00A0 state 35) */, + 0x73 /* 's' */, 0x59, 0x03 /* (to 0x03F2 state 596) */, + 0x72 /* 'r' */, 0x91, 0x03 /* (to 0x042D state 642) */, 0x08, /* fail */ -/* pos 00b0: 49 */ 0x63 /* 'c' */, 0x0A, 0x00 /* (to 0x00BA state 50) */, - 0x72 /* 'r' */, 0xFC, 0x02 /* (to 0x03AF state 539) */, - 0x74 /* 't' */, 0xFF, 0x02 /* (to 0x03B5 state 544) */, +/* pos 00a0: 35 */ 0xE7 /* 'g' -> */, +/* pos 00a1: 36 */ 0xF2 /* 'r' -> */, +/* pos 00a2: 37 */ 0xE1 /* 'a' -> */, +/* pos 00a3: 38 */ 0xE4 /* 'd' -> */, +/* pos 00a4: 39 */ 0xE5 /* 'e' -> */, +/* pos 00a5: 40 */ 0xBA /* ':' -> */, +/* pos 00a6: 41 */ 0x00, 0x05 /* - terminal marker 5 - */, +/* pos 00a8: 42 */ 0xE9 /* 'i' -> */, +/* pos 00a9: 43 */ 0xE7 /* 'g' -> */, +/* pos 00aa: 44 */ 0xE9 /* 'i' -> */, +/* pos 00ab: 45 */ 0xEE /* 'n' -> */, +/* pos 00ac: 46 */ 0xBA /* ':' -> */, +/* pos 00ad: 47 */ 0x00, 0x06 /* - terminal marker 6 - */, +/* pos 00af: 48 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x00B6 state 49) */, + 0x74 /* 't' */, 0x13, 0x03 /* (to 0x03C5 state 553) */, 0x08, /* fail */ -/* pos 00ba: 50 */ 0xAD /* '-' -> */, -/* pos 00bb: 51 */ 0xF7 /* 'w' -> */, -/* pos 00bc: 52 */ 0xE5 /* 'e' -> */, -/* pos 00bd: 53 */ 0xE2 /* 'b' -> */, -/* pos 00be: 54 */ 0xF3 /* 's' -> */, -/* pos 00bf: 55 */ 0xEF /* 'o' -> */, -/* pos 00c0: 56 */ 0xE3 /* 'c' -> */, -/* pos 00c1: 57 */ 0xEB /* 'k' -> */, -/* pos 00c2: 58 */ 0xE5 /* 'e' -> */, -/* pos 00c3: 59 */ 0xF4 /* 't' -> */, -/* pos 00c4: 60 */ 0xAD /* '-' -> */, -/* pos 00c5: 61 */ 0x64 /* 'd' */, 0x19, 0x00 /* (to 0x00DE state 62) */, - 0x65 /* 'e' */, 0x20, 0x00 /* (to 0x00E8 state 70) */, - 0x6B /* 'k' */, 0x29, 0x00 /* (to 0x00F4 state 81) */, - 0x70 /* 'p' */, 0x38, 0x00 /* (to 0x0106 state 88) */, - 0x61 /* 'a' */, 0x3F, 0x00 /* (to 0x0110 state 97) */, - 0x6E /* 'n' */, 0x44, 0x00 /* (to 0x0118 state 104) */, - 0x76 /* 'v' */, 0x86, 0x01 /* (to 0x025D state 284) */, - 0x6F /* 'o' */, 0x8C, 0x01 /* (to 0x0266 state 292) */, +/* pos 00b6: 49 */ 0x63 /* 'c' */, 0x0A, 0x00 /* (to 0x00C0 state 50) */, + 0x72 /* 'r' */, 0xFC, 0x02 /* (to 0x03B5 state 539) */, + 0x74 /* 't' */, 0xFF, 0x02 /* (to 0x03BB state 544) */, 0x08, /* fail */ -/* pos 00de: 62 */ 0xF2 /* 'r' -> */, -/* pos 00df: 63 */ 0xE1 /* 'a' -> */, -/* pos 00e0: 64 */ 0xE6 /* 'f' -> */, -/* pos 00e1: 65 */ 0xF4 /* 't' -> */, -/* pos 00e2: 66 */ 0xBA /* ':' -> */, -/* pos 00e3: 67 */ 0x00, 0x07 /* - terminal marker 7 - */, -/* pos 00e5: 68 */ 0x8A /* '.' -> */, -/* pos 00e6: 69 */ 0x00, 0x08 /* - terminal marker 8 - */, -/* pos 00e8: 70 */ 0xF8 /* 'x' -> */, -/* pos 00e9: 71 */ 0xF4 /* 't' -> */, -/* pos 00ea: 72 */ 0xE5 /* 'e' -> */, -/* pos 00eb: 73 */ 0xEE /* 'n' -> */, -/* pos 00ec: 74 */ 0xF3 /* 's' -> */, -/* pos 00ed: 75 */ 0xE9 /* 'i' -> */, -/* pos 00ee: 76 */ 0xEF /* 'o' -> */, -/* pos 00ef: 77 */ 0xEE /* 'n' -> */, -/* pos 00f0: 78 */ 0xF3 /* 's' -> */, -/* pos 00f1: 79 */ 0xBA /* ':' -> */, -/* pos 00f2: 80 */ 0x00, 0x09 /* - terminal marker 9 - */, -/* pos 00f4: 81 */ 0xE5 /* 'e' -> */, -/* pos 00f5: 82 */ 0xF9 /* 'y' -> */, -/* pos 00f6: 83 */ 0x31 /* '1' */, 0x0A, 0x00 /* (to 0x0100 state 84) */, - 0x32 /* '2' */, 0x0A, 0x00 /* (to 0x0103 state 86) */, - 0x3A /* ':' */, 0x5F, 0x01 /* (to 0x025B state 283) */, +/* pos 00c0: 50 */ 0xAD /* '-' -> */, +/* pos 00c1: 51 */ 0xF7 /* 'w' -> */, +/* pos 00c2: 52 */ 0xE5 /* 'e' -> */, +/* pos 00c3: 53 */ 0xE2 /* 'b' -> */, +/* pos 00c4: 54 */ 0xF3 /* 's' -> */, +/* pos 00c5: 55 */ 0xEF /* 'o' -> */, +/* pos 00c6: 56 */ 0xE3 /* 'c' -> */, +/* pos 00c7: 57 */ 0xEB /* 'k' -> */, +/* pos 00c8: 58 */ 0xE5 /* 'e' -> */, +/* pos 00c9: 59 */ 0xF4 /* 't' -> */, +/* pos 00ca: 60 */ 0xAD /* '-' -> */, +/* pos 00cb: 61 */ 0x64 /* 'd' */, 0x19, 0x00 /* (to 0x00E4 state 62) */, + 0x65 /* 'e' */, 0x20, 0x00 /* (to 0x00EE state 70) */, + 0x6B /* 'k' */, 0x29, 0x00 /* (to 0x00FA state 81) */, + 0x70 /* 'p' */, 0x38, 0x00 /* (to 0x010C state 88) */, + 0x61 /* 'a' */, 0x3F, 0x00 /* (to 0x0116 state 97) */, + 0x6E /* 'n' */, 0x44, 0x00 /* (to 0x011E state 104) */, + 0x76 /* 'v' */, 0x86, 0x01 /* (to 0x0263 state 284) */, + 0x6F /* 'o' */, 0x8C, 0x01 /* (to 0x026C state 292) */, 0x08, /* fail */ -/* pos 0100: 84 */ 0xBA /* ':' -> */, -/* pos 0101: 85 */ 0x00, 0x0A /* - terminal marker 10 - */, -/* pos 0103: 86 */ 0xBA /* ':' -> */, -/* pos 0104: 87 */ 0x00, 0x0B /* - terminal marker 11 - */, -/* pos 0106: 88 */ 0xF2 /* 'r' -> */, -/* pos 0107: 89 */ 0xEF /* 'o' -> */, -/* pos 0108: 90 */ 0xF4 /* 't' -> */, -/* pos 0109: 91 */ 0xEF /* 'o' -> */, -/* pos 010a: 92 */ 0xE3 /* 'c' -> */, -/* pos 010b: 93 */ 0xEF /* 'o' -> */, -/* pos 010c: 94 */ 0xEC /* 'l' -> */, -/* pos 010d: 95 */ 0xBA /* ':' -> */, -/* pos 010e: 96 */ 0x00, 0x0C /* - terminal marker 12 - */, -/* pos 0110: 97 */ 0xE3 /* 'c' -> */, -/* pos 0111: 98 */ 0xE3 /* 'c' -> */, -/* pos 0112: 99 */ 0xE5 /* 'e' -> */, -/* pos 0113: 100 */ 0xF0 /* 'p' -> */, -/* pos 0114: 101 */ 0xF4 /* 't' -> */, -/* pos 0115: 102 */ 0xBA /* ':' -> */, -/* pos 0116: 103 */ 0x00, 0x0D /* - terminal marker 13 - */, -/* pos 0118: 104 */ 0xEF /* 'o' -> */, -/* pos 0119: 105 */ 0xEE /* 'n' -> */, -/* pos 011a: 106 */ 0xE3 /* 'c' -> */, -/* pos 011b: 107 */ 0xE5 /* 'e' -> */, -/* pos 011c: 108 */ 0xBA /* ':' -> */, -/* pos 011d: 109 */ 0x00, 0x0E /* - terminal marker 14 - */, -/* pos 011f: 110 */ 0xF4 /* 't' -> */, -/* pos 0120: 111 */ 0xF0 /* 'p' -> */, -/* pos 0121: 112 */ 0x2F /* '/' */, 0x07, 0x00 /* (to 0x0128 state 113) */, - 0x32 /* '2' */, 0x10, 0x00 /* (to 0x0134 state 118) */, +/* pos 00e4: 62 */ 0xF2 /* 'r' -> */, +/* pos 00e5: 63 */ 0xE1 /* 'a' -> */, +/* pos 00e6: 64 */ 0xE6 /* 'f' -> */, +/* pos 00e7: 65 */ 0xF4 /* 't' -> */, +/* pos 00e8: 66 */ 0xBA /* ':' -> */, +/* pos 00e9: 67 */ 0x00, 0x07 /* - terminal marker 7 - */, +/* pos 00eb: 68 */ 0x8A /* '.' -> */, +/* pos 00ec: 69 */ 0x00, 0x08 /* - terminal marker 8 - */, +/* pos 00ee: 70 */ 0xF8 /* 'x' -> */, +/* pos 00ef: 71 */ 0xF4 /* 't' -> */, +/* pos 00f0: 72 */ 0xE5 /* 'e' -> */, +/* pos 00f1: 73 */ 0xEE /* 'n' -> */, +/* pos 00f2: 74 */ 0xF3 /* 's' -> */, +/* pos 00f3: 75 */ 0xE9 /* 'i' -> */, +/* pos 00f4: 76 */ 0xEF /* 'o' -> */, +/* pos 00f5: 77 */ 0xEE /* 'n' -> */, +/* pos 00f6: 78 */ 0xF3 /* 's' -> */, +/* pos 00f7: 79 */ 0xBA /* ':' -> */, +/* pos 00f8: 80 */ 0x00, 0x09 /* - terminal marker 9 - */, +/* pos 00fa: 81 */ 0xE5 /* 'e' -> */, +/* pos 00fb: 82 */ 0xF9 /* 'y' -> */, +/* pos 00fc: 83 */ 0x31 /* '1' */, 0x0A, 0x00 /* (to 0x0106 state 84) */, + 0x32 /* '2' */, 0x0A, 0x00 /* (to 0x0109 state 86) */, + 0x3A /* ':' */, 0x5F, 0x01 /* (to 0x0261 state 283) */, 0x08, /* fail */ -/* pos 0128: 113 */ 0xB1 /* '1' -> */, -/* pos 0129: 114 */ 0xAE /* '.' -> */, -/* pos 012a: 115 */ 0x31 /* '1' */, 0x07, 0x00 /* (to 0x0131 state 116) */, - 0x30 /* '0' */, 0x15, 0x03 /* (to 0x0442 state 660) */, +/* pos 0106: 84 */ 0xBA /* ':' -> */, +/* pos 0107: 85 */ 0x00, 0x0A /* - terminal marker 10 - */, +/* pos 0109: 86 */ 0xBA /* ':' -> */, +/* pos 010a: 87 */ 0x00, 0x0B /* - terminal marker 11 - */, +/* pos 010c: 88 */ 0xF2 /* 'r' -> */, +/* pos 010d: 89 */ 0xEF /* 'o' -> */, +/* pos 010e: 90 */ 0xF4 /* 't' -> */, +/* pos 010f: 91 */ 0xEF /* 'o' -> */, +/* pos 0110: 92 */ 0xE3 /* 'c' -> */, +/* pos 0111: 93 */ 0xEF /* 'o' -> */, +/* pos 0112: 94 */ 0xEC /* 'l' -> */, +/* pos 0113: 95 */ 0xBA /* ':' -> */, +/* pos 0114: 96 */ 0x00, 0x0C /* - terminal marker 12 - */, +/* pos 0116: 97 */ 0xE3 /* 'c' -> */, +/* pos 0117: 98 */ 0xE3 /* 'c' -> */, +/* pos 0118: 99 */ 0xE5 /* 'e' -> */, +/* pos 0119: 100 */ 0xF0 /* 'p' -> */, +/* pos 011a: 101 */ 0xF4 /* 't' -> */, +/* pos 011b: 102 */ 0xBA /* ':' -> */, +/* pos 011c: 103 */ 0x00, 0x0D /* - terminal marker 13 - */, +/* pos 011e: 104 */ 0xEF /* 'o' -> */, +/* pos 011f: 105 */ 0xEE /* 'n' -> */, +/* pos 0120: 106 */ 0xE3 /* 'c' -> */, +/* pos 0121: 107 */ 0xE5 /* 'e' -> */, +/* pos 0122: 108 */ 0xBA /* ':' -> */, +/* pos 0123: 109 */ 0x00, 0x0E /* - terminal marker 14 - */, +/* pos 0125: 110 */ 0xF4 /* 't' -> */, +/* pos 0126: 111 */ 0xF0 /* 'p' -> */, +/* pos 0127: 112 */ 0x2F /* '/' */, 0x07, 0x00 /* (to 0x012E state 113) */, + 0x32 /* '2' */, 0x10, 0x00 /* (to 0x013A state 118) */, 0x08, /* fail */ -/* pos 0131: 116 */ 0xA0 /* ' ' -> */, -/* pos 0132: 117 */ 0x00, 0x0F /* - terminal marker 15 - */, -/* pos 0134: 118 */ 0xAD /* '-' -> */, -/* pos 0135: 119 */ 0xF3 /* 's' -> */, -/* pos 0136: 120 */ 0xE5 /* 'e' -> */, -/* pos 0137: 121 */ 0xF4 /* 't' -> */, -/* pos 0138: 122 */ 0xF4 /* 't' -> */, -/* pos 0139: 123 */ 0xE9 /* 'i' -> */, -/* pos 013a: 124 */ 0xEE /* 'n' -> */, -/* pos 013b: 125 */ 0xE7 /* 'g' -> */, -/* pos 013c: 126 */ 0xF3 /* 's' -> */, -/* pos 013d: 127 */ 0xBA /* ':' -> */, -/* pos 013e: 128 */ 0x00, 0x10 /* - terminal marker 16 - */, -/* pos 0140: 129 */ 0x63 /* 'c' */, 0x0D, 0x00 /* (to 0x014D state 130) */, - 0x75 /* 'u' */, 0xAC, 0x00 /* (to 0x01EF state 230) */, - 0x67 /* 'g' */, 0x7D, 0x01 /* (to 0x02C3 state 358) */, - 0x6C /* 'l' */, 0x7E, 0x01 /* (to 0x02C7 state 361) */, +/* pos 012e: 113 */ 0xB1 /* '1' -> */, +/* pos 012f: 114 */ 0xAE /* '.' -> */, +/* pos 0130: 115 */ 0x31 /* '1' */, 0x07, 0x00 /* (to 0x0137 state 116) */, + 0x30 /* '0' */, 0x15, 0x03 /* (to 0x0448 state 660) */, 0x08, /* fail */ -/* pos 014d: 130 */ 0xE3 /* 'c' -> */, -/* pos 014e: 131 */ 0xE5 /* 'e' -> */, -/* pos 014f: 132 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x0156 state 133) */, - 0x73 /* 's' */, 0x0E, 0x00 /* (to 0x0160 state 136) */, +/* pos 0137: 116 */ 0xA0 /* ' ' -> */, +/* pos 0138: 117 */ 0x00, 0x0F /* - terminal marker 15 - */, +/* pos 013a: 118 */ 0xAD /* '-' -> */, +/* pos 013b: 119 */ 0xF3 /* 's' -> */, +/* pos 013c: 120 */ 0xE5 /* 'e' -> */, +/* pos 013d: 121 */ 0xF4 /* 't' -> */, +/* pos 013e: 122 */ 0xF4 /* 't' -> */, +/* pos 013f: 123 */ 0xE9 /* 'i' -> */, +/* pos 0140: 124 */ 0xEE /* 'n' -> */, +/* pos 0141: 125 */ 0xE7 /* 'g' -> */, +/* pos 0142: 126 */ 0xF3 /* 's' -> */, +/* pos 0143: 127 */ 0xBA /* ':' -> */, +/* pos 0144: 128 */ 0x00, 0x10 /* - terminal marker 16 - */, +/* pos 0146: 129 */ 0x63 /* 'c' */, 0x0D, 0x00 /* (to 0x0153 state 130) */, + 0x75 /* 'u' */, 0xAC, 0x00 /* (to 0x01F5 state 230) */, + 0x67 /* 'g' */, 0x7D, 0x01 /* (to 0x02C9 state 358) */, + 0x6C /* 'l' */, 0x7E, 0x01 /* (to 0x02CD state 361) */, 0x08, /* fail */ -/* pos 0156: 133 */ 0xF4 /* 't' -> */, -/* pos 0157: 134 */ 0x3A /* ':' */, 0x07, 0x00 /* (to 0x015E state 135) */, - 0x2D /* '-' */, 0x59, 0x00 /* (to 0x01B3 state 192) */, +/* pos 0153: 130 */ 0xE3 /* 'c' -> */, +/* pos 0154: 131 */ 0xE5 /* 'e' -> */, +/* pos 0155: 132 */ 0x70 /* 'p' */, 0x07, 0x00 /* (to 0x015C state 133) */, + 0x73 /* 's' */, 0x0E, 0x00 /* (to 0x0166 state 136) */, 0x08, /* fail */ -/* pos 015e: 135 */ 0x00, 0x11 /* - terminal marker 17 - */, -/* pos 0160: 136 */ 0xF3 /* 's' -> */, -/* pos 0161: 137 */ 0xAD /* '-' -> */, -/* pos 0162: 138 */ 0xE3 /* 'c' -> */, -/* pos 0163: 139 */ 0xEF /* 'o' -> */, -/* pos 0164: 140 */ 0xEE /* 'n' -> */, -/* pos 0165: 141 */ 0xF4 /* 't' -> */, -/* pos 0166: 142 */ 0xF2 /* 'r' -> */, -/* pos 0167: 143 */ 0xEF /* 'o' -> */, -/* pos 0168: 144 */ 0xEC /* 'l' -> */, -/* pos 0169: 145 */ 0xAD /* '-' -> */, -/* pos 016a: 146 */ 0x72 /* 'r' */, 0x07, 0x00 /* (to 0x0171 state 147) */, - 0x61 /* 'a' */, 0x48, 0x01 /* (to 0x02B5 state 345) */, +/* pos 015c: 133 */ 0xF4 /* 't' -> */, +/* pos 015d: 134 */ 0x3A /* ':' */, 0x07, 0x00 /* (to 0x0164 state 135) */, + 0x2D /* '-' */, 0x59, 0x00 /* (to 0x01B9 state 192) */, 0x08, /* fail */ -/* pos 0171: 147 */ 0xE5 /* 'e' -> */, -/* pos 0172: 148 */ 0xF1 /* 'q' -> */, -/* pos 0173: 149 */ 0xF5 /* 'u' -> */, -/* pos 0174: 150 */ 0xE5 /* 'e' -> */, -/* pos 0175: 151 */ 0xF3 /* 's' -> */, -/* pos 0176: 152 */ 0xF4 /* 't' -> */, -/* pos 0177: 153 */ 0xAD /* '-' -> */, -/* pos 0178: 154 */ 0xE8 /* 'h' -> */, -/* pos 0179: 155 */ 0xE5 /* 'e' -> */, -/* pos 017a: 156 */ 0xE1 /* 'a' -> */, -/* pos 017b: 157 */ 0xE4 /* 'd' -> */, -/* pos 017c: 158 */ 0xE5 /* 'e' -> */, -/* pos 017d: 159 */ 0xF2 /* 'r' -> */, -/* pos 017e: 160 */ 0xF3 /* 's' -> */, -/* pos 017f: 161 */ 0xBA /* ':' -> */, -/* pos 0180: 162 */ 0x00, 0x12 /* - terminal marker 18 - */, -/* pos 0182: 163 */ 0xE6 /* 'f' -> */, -/* pos 0183: 164 */ 0xAD /* '-' -> */, -/* pos 0184: 165 */ 0x6D /* 'm' */, 0x0D, 0x00 /* (to 0x0191 state 166) */, - 0x6E /* 'n' */, 0x20, 0x00 /* (to 0x01A7 state 181) */, - 0x72 /* 'r' */, 0x9E, 0x01 /* (to 0x0328 state 435) */, - 0x75 /* 'u' */, 0xA2, 0x01 /* (to 0x032F state 441) */, +/* pos 0164: 135 */ 0x00, 0x11 /* - terminal marker 17 - */, +/* pos 0166: 136 */ 0xF3 /* 's' -> */, +/* pos 0167: 137 */ 0xAD /* '-' -> */, +/* pos 0168: 138 */ 0xE3 /* 'c' -> */, +/* pos 0169: 139 */ 0xEF /* 'o' -> */, +/* pos 016a: 140 */ 0xEE /* 'n' -> */, +/* pos 016b: 141 */ 0xF4 /* 't' -> */, +/* pos 016c: 142 */ 0xF2 /* 'r' -> */, +/* pos 016d: 143 */ 0xEF /* 'o' -> */, +/* pos 016e: 144 */ 0xEC /* 'l' -> */, +/* pos 016f: 145 */ 0xAD /* '-' -> */, +/* pos 0170: 146 */ 0x72 /* 'r' */, 0x07, 0x00 /* (to 0x0177 state 147) */, + 0x61 /* 'a' */, 0x48, 0x01 /* (to 0x02BB state 345) */, 0x08, /* fail */ -/* pos 0191: 166 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x0198 state 167) */, - 0x61 /* 'a' */, 0x8E, 0x01 /* (to 0x0322 state 430) */, +/* pos 0177: 147 */ 0xE5 /* 'e' -> */, +/* pos 0178: 148 */ 0xF1 /* 'q' -> */, +/* pos 0179: 149 */ 0xF5 /* 'u' -> */, +/* pos 017a: 150 */ 0xE5 /* 'e' -> */, +/* pos 017b: 151 */ 0xF3 /* 's' -> */, +/* pos 017c: 152 */ 0xF4 /* 't' -> */, +/* pos 017d: 153 */ 0xAD /* '-' -> */, +/* pos 017e: 154 */ 0xE8 /* 'h' -> */, +/* pos 017f: 155 */ 0xE5 /* 'e' -> */, +/* pos 0180: 156 */ 0xE1 /* 'a' -> */, +/* pos 0181: 157 */ 0xE4 /* 'd' -> */, +/* pos 0182: 158 */ 0xE5 /* 'e' -> */, +/* pos 0183: 159 */ 0xF2 /* 'r' -> */, +/* pos 0184: 160 */ 0xF3 /* 's' -> */, +/* pos 0185: 161 */ 0xBA /* ':' -> */, +/* pos 0186: 162 */ 0x00, 0x12 /* - terminal marker 18 - */, +/* pos 0188: 163 */ 0xE6 /* 'f' -> */, +/* pos 0189: 164 */ 0xAD /* '-' -> */, +/* pos 018a: 165 */ 0x6D /* 'm' */, 0x0D, 0x00 /* (to 0x0197 state 166) */, + 0x6E /* 'n' */, 0x20, 0x00 /* (to 0x01AD state 181) */, + 0x72 /* 'r' */, 0x9E, 0x01 /* (to 0x032E state 435) */, + 0x75 /* 'u' */, 0xA2, 0x01 /* (to 0x0335 state 441) */, 0x08, /* fail */ -/* pos 0198: 167 */ 0xE4 /* 'd' -> */, -/* pos 0199: 168 */ 0xE9 /* 'i' -> */, -/* pos 019a: 169 */ 0xE6 /* 'f' -> */, -/* pos 019b: 170 */ 0xE9 /* 'i' -> */, -/* pos 019c: 171 */ 0xE5 /* 'e' -> */, -/* pos 019d: 172 */ 0xE4 /* 'd' -> */, -/* pos 019e: 173 */ 0xAD /* '-' -> */, -/* pos 019f: 174 */ 0xF3 /* 's' -> */, -/* pos 01a0: 175 */ 0xE9 /* 'i' -> */, -/* pos 01a1: 176 */ 0xEE /* 'n' -> */, -/* pos 01a2: 177 */ 0xE3 /* 'c' -> */, -/* pos 01a3: 178 */ 0xE5 /* 'e' -> */, -/* pos 01a4: 179 */ 0xBA /* ':' -> */, -/* pos 01a5: 180 */ 0x00, 0x13 /* - terminal marker 19 - */, -/* pos 01a7: 181 */ 0xEF /* 'o' -> */, -/* pos 01a8: 182 */ 0xEE /* 'n' -> */, -/* pos 01a9: 183 */ 0xE5 /* 'e' -> */, -/* pos 01aa: 184 */ 0xAD /* '-' -> */, -/* pos 01ab: 185 */ 0xED /* 'm' -> */, -/* pos 01ac: 186 */ 0xE1 /* 'a' -> */, -/* pos 01ad: 187 */ 0xF4 /* 't' -> */, -/* pos 01ae: 188 */ 0xE3 /* 'c' -> */, -/* pos 01af: 189 */ 0xE8 /* 'h' -> */, -/* pos 01b0: 190 */ 0xBA /* ':' -> */, -/* pos 01b1: 191 */ 0x00, 0x14 /* - terminal marker 20 - */, -/* pos 01b3: 192 */ 0x65 /* 'e' */, 0x0D, 0x00 /* (to 0x01C0 state 193) */, - 0x6C /* 'l' */, 0x14, 0x00 /* (to 0x01CA state 202) */, - 0x63 /* 'c' */, 0xEB, 0x00 /* (to 0x02A4 state 330) */, - 0x72 /* 'r' */, 0xF1, 0x00 /* (to 0x02AD state 338) */, +/* pos 0197: 166 */ 0x6F /* 'o' */, 0x07, 0x00 /* (to 0x019E state 167) */, + 0x61 /* 'a' */, 0x8E, 0x01 /* (to 0x0328 state 430) */, 0x08, /* fail */ -/* pos 01c0: 193 */ 0xEE /* 'n' -> */, -/* pos 01c1: 194 */ 0xE3 /* 'c' -> */, -/* pos 01c2: 195 */ 0xEF /* 'o' -> */, -/* pos 01c3: 196 */ 0xE4 /* 'd' -> */, -/* pos 01c4: 197 */ 0xE9 /* 'i' -> */, -/* pos 01c5: 198 */ 0xEE /* 'n' -> */, -/* pos 01c6: 199 */ 0xE7 /* 'g' -> */, -/* pos 01c7: 200 */ 0xBA /* ':' -> */, -/* pos 01c8: 201 */ 0x00, 0x15 /* - terminal marker 21 - */, -/* pos 01ca: 202 */ 0xE1 /* 'a' -> */, -/* pos 01cb: 203 */ 0xEE /* 'n' -> */, -/* pos 01cc: 204 */ 0xE7 /* 'g' -> */, -/* pos 01cd: 205 */ 0xF5 /* 'u' -> */, -/* pos 01ce: 206 */ 0xE1 /* 'a' -> */, -/* pos 01cf: 207 */ 0xE7 /* 'g' -> */, -/* pos 01d0: 208 */ 0xE5 /* 'e' -> */, -/* pos 01d1: 209 */ 0xBA /* ':' -> */, -/* pos 01d2: 210 */ 0x00, 0x16 /* - terminal marker 22 - */, -/* pos 01d4: 211 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x01DB state 212) */, - 0x6F /* 'o' */, 0x9E, 0x01 /* (to 0x0375 state 497) */, +/* pos 019e: 167 */ 0xE4 /* 'd' -> */, +/* pos 019f: 168 */ 0xE9 /* 'i' -> */, +/* pos 01a0: 169 */ 0xE6 /* 'f' -> */, +/* pos 01a1: 170 */ 0xE9 /* 'i' -> */, +/* pos 01a2: 171 */ 0xE5 /* 'e' -> */, +/* pos 01a3: 172 */ 0xE4 /* 'd' -> */, +/* pos 01a4: 173 */ 0xAD /* '-' -> */, +/* pos 01a5: 174 */ 0xF3 /* 's' -> */, +/* pos 01a6: 175 */ 0xE9 /* 'i' -> */, +/* pos 01a7: 176 */ 0xEE /* 'n' -> */, +/* pos 01a8: 177 */ 0xE3 /* 'c' -> */, +/* pos 01a9: 178 */ 0xE5 /* 'e' -> */, +/* pos 01aa: 179 */ 0xBA /* ':' -> */, +/* pos 01ab: 180 */ 0x00, 0x13 /* - terminal marker 19 - */, +/* pos 01ad: 181 */ 0xEF /* 'o' -> */, +/* pos 01ae: 182 */ 0xEE /* 'n' -> */, +/* pos 01af: 183 */ 0xE5 /* 'e' -> */, +/* pos 01b0: 184 */ 0xAD /* '-' -> */, +/* pos 01b1: 185 */ 0xED /* 'm' -> */, +/* pos 01b2: 186 */ 0xE1 /* 'a' -> */, +/* pos 01b3: 187 */ 0xF4 /* 't' -> */, +/* pos 01b4: 188 */ 0xE3 /* 'c' -> */, +/* pos 01b5: 189 */ 0xE8 /* 'h' -> */, +/* pos 01b6: 190 */ 0xBA /* ':' -> */, +/* pos 01b7: 191 */ 0x00, 0x14 /* - terminal marker 20 - */, +/* pos 01b9: 192 */ 0x65 /* 'e' */, 0x0D, 0x00 /* (to 0x01C6 state 193) */, + 0x6C /* 'l' */, 0x14, 0x00 /* (to 0x01D0 state 202) */, + 0x63 /* 'c' */, 0xEB, 0x00 /* (to 0x02AA state 330) */, + 0x72 /* 'r' */, 0xF1, 0x00 /* (to 0x02B3 state 338) */, 0x08, /* fail */ -/* pos 01db: 212 */ 0xE7 /* 'g' -> */, -/* pos 01dc: 213 */ 0xED /* 'm' -> */, -/* pos 01dd: 214 */ 0xE1 /* 'a' -> */, -/* pos 01de: 215 */ 0xBA /* ':' -> */, -/* pos 01df: 216 */ 0x00, 0x17 /* - terminal marker 23 - */, -/* pos 01e1: 217 */ 0xE3 /* 'c' -> */, -/* pos 01e2: 218 */ 0xE8 /* 'h' -> */, -/* pos 01e3: 219 */ 0xE5 /* 'e' -> */, -/* pos 01e4: 220 */ 0xAD /* '-' -> */, -/* pos 01e5: 221 */ 0xE3 /* 'c' -> */, -/* pos 01e6: 222 */ 0xEF /* 'o' -> */, -/* pos 01e7: 223 */ 0xEE /* 'n' -> */, -/* pos 01e8: 224 */ 0xF4 /* 't' -> */, -/* pos 01e9: 225 */ 0xF2 /* 'r' -> */, -/* pos 01ea: 226 */ 0xEF /* 'o' -> */, -/* pos 01eb: 227 */ 0xEC /* 'l' -> */, -/* pos 01ec: 228 */ 0xBA /* ':' -> */, -/* pos 01ed: 229 */ 0x00, 0x18 /* - terminal marker 24 - */, -/* pos 01ef: 230 */ 0xF4 /* 't' -> */, -/* pos 01f0: 231 */ 0xE8 /* 'h' -> */, -/* pos 01f1: 232 */ 0xEF /* 'o' -> */, -/* pos 01f2: 233 */ 0xF2 /* 'r' -> */, -/* pos 01f3: 234 */ 0xE9 /* 'i' -> */, -/* pos 01f4: 235 */ 0xFA /* 'z' -> */, -/* pos 01f5: 236 */ 0xE1 /* 'a' -> */, -/* pos 01f6: 237 */ 0xF4 /* 't' -> */, -/* pos 01f7: 238 */ 0xE9 /* 'i' -> */, -/* pos 01f8: 239 */ 0xEF /* 'o' -> */, -/* pos 01f9: 240 */ 0xEE /* 'n' -> */, -/* pos 01fa: 241 */ 0xBA /* ':' -> */, -/* pos 01fb: 242 */ 0x00, 0x19 /* - terminal marker 25 - */, -/* pos 01fd: 243 */ 0xEB /* 'k' -> */, -/* pos 01fe: 244 */ 0xE9 /* 'i' -> */, -/* pos 01ff: 245 */ 0xE5 /* 'e' -> */, -/* pos 0200: 246 */ 0xBA /* ':' -> */, -/* pos 0201: 247 */ 0x00, 0x1A /* - terminal marker 26 - */, -/* pos 0203: 248 */ 0xE5 /* 'e' -> */, -/* pos 0204: 249 */ 0xEE /* 'n' -> */, -/* pos 0205: 250 */ 0xF4 /* 't' -> */, -/* pos 0206: 251 */ 0xAD /* '-' -> */, -/* pos 0207: 252 */ 0x6C /* 'l' */, 0x10, 0x00 /* (to 0x0217 state 253) */, - 0x74 /* 't' */, 0x1E, 0x00 /* (to 0x0228 state 260) */, - 0x64 /* 'd' */, 0xC0, 0x00 /* (to 0x02CD state 366) */, - 0x65 /* 'e' */, 0xCA, 0x00 /* (to 0x02DA state 378) */, - 0x72 /* 'r' */, 0xE3, 0x00 /* (to 0x02F6 state 403) */, +/* pos 01c6: 193 */ 0xEE /* 'n' -> */, +/* pos 01c7: 194 */ 0xE3 /* 'c' -> */, +/* pos 01c8: 195 */ 0xEF /* 'o' -> */, +/* pos 01c9: 196 */ 0xE4 /* 'd' -> */, +/* pos 01ca: 197 */ 0xE9 /* 'i' -> */, +/* pos 01cb: 198 */ 0xEE /* 'n' -> */, +/* pos 01cc: 199 */ 0xE7 /* 'g' -> */, +/* pos 01cd: 200 */ 0xBA /* ':' -> */, +/* pos 01ce: 201 */ 0x00, 0x15 /* - terminal marker 21 - */, +/* pos 01d0: 202 */ 0xE1 /* 'a' -> */, +/* pos 01d1: 203 */ 0xEE /* 'n' -> */, +/* pos 01d2: 204 */ 0xE7 /* 'g' -> */, +/* pos 01d3: 205 */ 0xF5 /* 'u' -> */, +/* pos 01d4: 206 */ 0xE1 /* 'a' -> */, +/* pos 01d5: 207 */ 0xE7 /* 'g' -> */, +/* pos 01d6: 208 */ 0xE5 /* 'e' -> */, +/* pos 01d7: 209 */ 0xBA /* ':' -> */, +/* pos 01d8: 210 */ 0x00, 0x16 /* - terminal marker 22 - */, +/* pos 01da: 211 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x01E1 state 212) */, + 0x6F /* 'o' */, 0x9E, 0x01 /* (to 0x037B state 497) */, 0x08, /* fail */ -/* pos 0217: 253 */ 0x65 /* 'e' */, 0x0A, 0x00 /* (to 0x0221 state 254) */, - 0x61 /* 'a' */, 0xCA, 0x00 /* (to 0x02E4 state 387) */, - 0x6F /* 'o' */, 0xD0, 0x00 /* (to 0x02ED state 395) */, +/* pos 01e1: 212 */ 0xE7 /* 'g' -> */, +/* pos 01e2: 213 */ 0xED /* 'm' -> */, +/* pos 01e3: 214 */ 0xE1 /* 'a' -> */, +/* pos 01e4: 215 */ 0xBA /* ':' -> */, +/* pos 01e5: 216 */ 0x00, 0x17 /* - terminal marker 23 - */, +/* pos 01e7: 217 */ 0xE3 /* 'c' -> */, +/* pos 01e8: 218 */ 0xE8 /* 'h' -> */, +/* pos 01e9: 219 */ 0xE5 /* 'e' -> */, +/* pos 01ea: 220 */ 0xAD /* '-' -> */, +/* pos 01eb: 221 */ 0xE3 /* 'c' -> */, +/* pos 01ec: 222 */ 0xEF /* 'o' -> */, +/* pos 01ed: 223 */ 0xEE /* 'n' -> */, +/* pos 01ee: 224 */ 0xF4 /* 't' -> */, +/* pos 01ef: 225 */ 0xF2 /* 'r' -> */, +/* pos 01f0: 226 */ 0xEF /* 'o' -> */, +/* pos 01f1: 227 */ 0xEC /* 'l' -> */, +/* pos 01f2: 228 */ 0xBA /* ':' -> */, +/* pos 01f3: 229 */ 0x00, 0x18 /* - terminal marker 24 - */, +/* pos 01f5: 230 */ 0xF4 /* 't' -> */, +/* pos 01f6: 231 */ 0xE8 /* 'h' -> */, +/* pos 01f7: 232 */ 0xEF /* 'o' -> */, +/* pos 01f8: 233 */ 0xF2 /* 'r' -> */, +/* pos 01f9: 234 */ 0xE9 /* 'i' -> */, +/* pos 01fa: 235 */ 0xFA /* 'z' -> */, +/* pos 01fb: 236 */ 0xE1 /* 'a' -> */, +/* pos 01fc: 237 */ 0xF4 /* 't' -> */, +/* pos 01fd: 238 */ 0xE9 /* 'i' -> */, +/* pos 01fe: 239 */ 0xEF /* 'o' -> */, +/* pos 01ff: 240 */ 0xEE /* 'n' -> */, +/* pos 0200: 241 */ 0xBA /* ':' -> */, +/* pos 0201: 242 */ 0x00, 0x19 /* - terminal marker 25 - */, +/* pos 0203: 243 */ 0xEB /* 'k' -> */, +/* pos 0204: 244 */ 0xE9 /* 'i' -> */, +/* pos 0205: 245 */ 0xE5 /* 'e' -> */, +/* pos 0206: 246 */ 0xBA /* ':' -> */, +/* pos 0207: 247 */ 0x00, 0x1A /* - terminal marker 26 - */, +/* pos 0209: 248 */ 0xE5 /* 'e' -> */, +/* pos 020a: 249 */ 0xEE /* 'n' -> */, +/* pos 020b: 250 */ 0xF4 /* 't' -> */, +/* pos 020c: 251 */ 0xAD /* '-' -> */, +/* pos 020d: 252 */ 0x6C /* 'l' */, 0x10, 0x00 /* (to 0x021D state 253) */, + 0x74 /* 't' */, 0x1E, 0x00 /* (to 0x022E state 260) */, + 0x64 /* 'd' */, 0xC0, 0x00 /* (to 0x02D3 state 366) */, + 0x65 /* 'e' */, 0xCA, 0x00 /* (to 0x02E0 state 378) */, + 0x72 /* 'r' */, 0xE3, 0x00 /* (to 0x02FC state 403) */, 0x08, /* fail */ -/* pos 0221: 254 */ 0xEE /* 'n' -> */, -/* pos 0222: 255 */ 0xE7 /* 'g' -> */, -/* pos 0223: 256 */ 0xF4 /* 't' -> */, -/* pos 0224: 257 */ 0xE8 /* 'h' -> */, -/* pos 0225: 258 */ 0xBA /* ':' -> */, -/* pos 0226: 259 */ 0x00, 0x1B /* - terminal marker 27 - */, -/* pos 0228: 260 */ 0xF9 /* 'y' -> */, -/* pos 0229: 261 */ 0xF0 /* 'p' -> */, -/* pos 022a: 262 */ 0xE5 /* 'e' -> */, -/* pos 022b: 263 */ 0xBA /* ':' -> */, -/* pos 022c: 264 */ 0x00, 0x1C /* - terminal marker 28 - */, -/* pos 022e: 265 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x0235 state 266) */, - 0x65 /* 'e' */, 0xF0, 0x01 /* (to 0x0421 state 637) */, +/* pos 021d: 253 */ 0x65 /* 'e' */, 0x0A, 0x00 /* (to 0x0227 state 254) */, + 0x61 /* 'a' */, 0xCA, 0x00 /* (to 0x02EA state 387) */, + 0x6F /* 'o' */, 0xD0, 0x00 /* (to 0x02F3 state 395) */, 0x08, /* fail */ -/* pos 0235: 266 */ 0xF4 /* 't' -> */, -/* pos 0236: 267 */ 0xE5 /* 'e' -> */, -/* pos 0237: 268 */ 0xBA /* ':' -> */, -/* pos 0238: 269 */ 0x00, 0x1D /* - terminal marker 29 - */, -/* pos 023a: 270 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x0241 state 271) */, - 0x65 /* 'e' */, 0x0A, 0x00 /* (to 0x0247 state 276) */, +/* pos 0227: 254 */ 0xEE /* 'n' -> */, +/* pos 0228: 255 */ 0xE7 /* 'g' -> */, +/* pos 0229: 256 */ 0xF4 /* 't' -> */, +/* pos 022a: 257 */ 0xE8 /* 'h' -> */, +/* pos 022b: 258 */ 0xBA /* ':' -> */, +/* pos 022c: 259 */ 0x00, 0x1B /* - terminal marker 27 - */, +/* pos 022e: 260 */ 0xF9 /* 'y' -> */, +/* pos 022f: 261 */ 0xF0 /* 'p' -> */, +/* pos 0230: 262 */ 0xE5 /* 'e' -> */, +/* pos 0231: 263 */ 0xBA /* ':' -> */, +/* pos 0232: 264 */ 0x00, 0x1C /* - terminal marker 28 - */, +/* pos 0234: 265 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x023B state 266) */, + 0x65 /* 'e' */, 0xF0, 0x01 /* (to 0x0427 state 637) */, 0x08, /* fail */ -/* pos 0241: 271 */ 0xEE /* 'n' -> */, -/* pos 0242: 272 */ 0xE7 /* 'g' -> */, -/* pos 0243: 273 */ 0xE5 /* 'e' -> */, -/* pos 0244: 274 */ 0xBA /* ':' -> */, -/* pos 0245: 275 */ 0x00, 0x1E /* - terminal marker 30 - */, -/* pos 0247: 276 */ 0x66 /* 'f' */, 0x07, 0x00 /* (to 0x024E state 277) */, - 0x74 /* 't' */, 0x5A, 0x01 /* (to 0x03A4 state 529) */, +/* pos 023b: 266 */ 0xF4 /* 't' -> */, +/* pos 023c: 267 */ 0xE5 /* 'e' -> */, +/* pos 023d: 268 */ 0xBA /* ':' -> */, +/* pos 023e: 269 */ 0x00, 0x1D /* - terminal marker 29 - */, +/* pos 0240: 270 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x0247 state 271) */, + 0x65 /* 'e' */, 0x0A, 0x00 /* (to 0x024D state 276) */, 0x08, /* fail */ -/* pos 024e: 277 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x0255 state 278) */, - 0x72 /* 'r' */, 0x4D, 0x01 /* (to 0x039E state 524) */, +/* pos 0247: 271 */ 0xEE /* 'n' -> */, +/* pos 0248: 272 */ 0xE7 /* 'g' -> */, +/* pos 0249: 273 */ 0xE5 /* 'e' -> */, +/* pos 024a: 274 */ 0xBA /* ':' -> */, +/* pos 024b: 275 */ 0x00, 0x1E /* - terminal marker 30 - */, +/* pos 024d: 276 */ 0x66 /* 'f' */, 0x07, 0x00 /* (to 0x0254 state 277) */, + 0x74 /* 't' */, 0x5A, 0x01 /* (to 0x03AA state 529) */, 0x08, /* fail */ -/* pos 0255: 278 */ 0xF2 /* 'r' -> */, -/* pos 0256: 279 */ 0xE5 /* 'e' -> */, -/* pos 0257: 280 */ 0xF2 /* 'r' -> */, -/* pos 0258: 281 */ 0xBA /* ':' -> */, -/* pos 0259: 282 */ 0x00, 0x1F /* - terminal marker 31 - */, -/* pos 025b: 283 */ 0x00, 0x20 /* - terminal marker 32 - */, -/* pos 025d: 284 */ 0xE5 /* 'e' -> */, -/* pos 025e: 285 */ 0xF2 /* 'r' -> */, -/* pos 025f: 286 */ 0xF3 /* 's' -> */, -/* pos 0260: 287 */ 0xE9 /* 'i' -> */, -/* pos 0261: 288 */ 0xEF /* 'o' -> */, -/* pos 0262: 289 */ 0xEE /* 'n' -> */, -/* pos 0263: 290 */ 0xBA /* ':' -> */, -/* pos 0264: 291 */ 0x00, 0x21 /* - terminal marker 33 - */, -/* pos 0266: 292 */ 0xF2 /* 'r' -> */, -/* pos 0267: 293 */ 0xE9 /* 'i' -> */, -/* pos 0268: 294 */ 0xE7 /* 'g' -> */, -/* pos 0269: 295 */ 0xE9 /* 'i' -> */, -/* pos 026a: 296 */ 0xEE /* 'n' -> */, -/* pos 026b: 297 */ 0xBA /* ':' -> */, -/* pos 026c: 298 */ 0x00, 0x22 /* - terminal marker 34 - */, -/* pos 026e: 299 */ 0x61 /* 'a' */, 0x0D, 0x00 /* (to 0x027B state 300) */, - 0x6D /* 'm' */, 0x14, 0x00 /* (to 0x0285 state 309) */, - 0x70 /* 'p' */, 0x18, 0x00 /* (to 0x028C state 315) */, - 0x73 /* 's' */, 0x1A, 0x00 /* (to 0x0291 state 319) */, +/* pos 0254: 277 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x025B state 278) */, + 0x72 /* 'r' */, 0x4D, 0x01 /* (to 0x03A4 state 524) */, 0x08, /* fail */ -/* pos 027b: 300 */ 0xF5 /* 'u' -> */, -/* pos 027c: 301 */ 0xF4 /* 't' -> */, -/* pos 027d: 302 */ 0xE8 /* 'h' -> */, -/* pos 027e: 303 */ 0xEF /* 'o' -> */, -/* pos 027f: 304 */ 0xF2 /* 'r' -> */, -/* pos 0280: 305 */ 0xE9 /* 'i' -> */, -/* pos 0281: 306 */ 0xF4 /* 't' -> */, -/* pos 0282: 307 */ 0xF9 /* 'y' -> */, -/* pos 0283: 308 */ 0x00, 0x23 /* - terminal marker 35 - */, -/* pos 0285: 309 */ 0xE5 /* 'e' -> */, -/* pos 0286: 310 */ 0xF4 /* 't' -> */, -/* pos 0287: 311 */ 0xE8 /* 'h' -> */, -/* pos 0288: 312 */ 0xEF /* 'o' -> */, -/* pos 0289: 313 */ 0xE4 /* 'd' -> */, -/* pos 028a: 314 */ 0x00, 0x24 /* - terminal marker 36 - */, -/* pos 028c: 315 */ 0xE1 /* 'a' -> */, -/* pos 028d: 316 */ 0xF4 /* 't' -> */, -/* pos 028e: 317 */ 0xE8 /* 'h' -> */, -/* pos 028f: 318 */ 0x00, 0x25 /* - terminal marker 37 - */, -/* pos 0291: 319 */ 0x63 /* 'c' */, 0x07, 0x00 /* (to 0x0298 state 320) */, - 0x74 /* 't' */, 0x0A, 0x00 /* (to 0x029E state 325) */, +/* pos 025b: 278 */ 0xF2 /* 'r' -> */, +/* pos 025c: 279 */ 0xE5 /* 'e' -> */, +/* pos 025d: 280 */ 0xF2 /* 'r' -> */, +/* pos 025e: 281 */ 0xBA /* ':' -> */, +/* pos 025f: 282 */ 0x00, 0x1F /* - terminal marker 31 - */, +/* pos 0261: 283 */ 0x00, 0x20 /* - terminal marker 32 - */, +/* pos 0263: 284 */ 0xE5 /* 'e' -> */, +/* pos 0264: 285 */ 0xF2 /* 'r' -> */, +/* pos 0265: 286 */ 0xF3 /* 's' -> */, +/* pos 0266: 287 */ 0xE9 /* 'i' -> */, +/* pos 0267: 288 */ 0xEF /* 'o' -> */, +/* pos 0268: 289 */ 0xEE /* 'n' -> */, +/* pos 0269: 290 */ 0xBA /* ':' -> */, +/* pos 026a: 291 */ 0x00, 0x21 /* - terminal marker 33 - */, +/* pos 026c: 292 */ 0xF2 /* 'r' -> */, +/* pos 026d: 293 */ 0xE9 /* 'i' -> */, +/* pos 026e: 294 */ 0xE7 /* 'g' -> */, +/* pos 026f: 295 */ 0xE9 /* 'i' -> */, +/* pos 0270: 296 */ 0xEE /* 'n' -> */, +/* pos 0271: 297 */ 0xBA /* ':' -> */, +/* pos 0272: 298 */ 0x00, 0x22 /* - terminal marker 34 - */, +/* pos 0274: 299 */ 0x61 /* 'a' */, 0x0D, 0x00 /* (to 0x0281 state 300) */, + 0x6D /* 'm' */, 0x14, 0x00 /* (to 0x028B state 309) */, + 0x70 /* 'p' */, 0x18, 0x00 /* (to 0x0292 state 315) */, + 0x73 /* 's' */, 0x1A, 0x00 /* (to 0x0297 state 319) */, 0x08, /* fail */ -/* pos 0298: 320 */ 0xE8 /* 'h' -> */, -/* pos 0299: 321 */ 0xE5 /* 'e' -> */, -/* pos 029a: 322 */ 0xED /* 'm' -> */, -/* pos 029b: 323 */ 0xE5 /* 'e' -> */, -/* pos 029c: 324 */ 0x00, 0x26 /* - terminal marker 38 - */, -/* pos 029e: 325 */ 0xE1 /* 'a' -> */, -/* pos 029f: 326 */ 0xF4 /* 't' -> */, -/* pos 02a0: 327 */ 0xF5 /* 'u' -> */, -/* pos 02a1: 328 */ 0xF3 /* 's' -> */, -/* pos 02a2: 329 */ 0x00, 0x27 /* - terminal marker 39 - */, -/* pos 02a4: 330 */ 0xE8 /* 'h' -> */, -/* pos 02a5: 331 */ 0xE1 /* 'a' -> */, -/* pos 02a6: 332 */ 0xF2 /* 'r' -> */, -/* pos 02a7: 333 */ 0xF3 /* 's' -> */, -/* pos 02a8: 334 */ 0xE5 /* 'e' -> */, -/* pos 02a9: 335 */ 0xF4 /* 't' -> */, -/* pos 02aa: 336 */ 0xBA /* ':' -> */, -/* pos 02ab: 337 */ 0x00, 0x28 /* - terminal marker 40 - */, -/* pos 02ad: 338 */ 0xE1 /* 'a' -> */, -/* pos 02ae: 339 */ 0xEE /* 'n' -> */, -/* pos 02af: 340 */ 0xE7 /* 'g' -> */, -/* pos 02b0: 341 */ 0xE5 /* 'e' -> */, -/* pos 02b1: 342 */ 0xF3 /* 's' -> */, -/* pos 02b2: 343 */ 0xBA /* ':' -> */, -/* pos 02b3: 344 */ 0x00, 0x29 /* - terminal marker 41 - */, -/* pos 02b5: 345 */ 0xEC /* 'l' -> */, -/* pos 02b6: 346 */ 0xEC /* 'l' -> */, -/* pos 02b7: 347 */ 0xEF /* 'o' -> */, -/* pos 02b8: 348 */ 0xF7 /* 'w' -> */, -/* pos 02b9: 349 */ 0xAD /* '-' -> */, -/* pos 02ba: 350 */ 0xEF /* 'o' -> */, -/* pos 02bb: 351 */ 0xF2 /* 'r' -> */, -/* pos 02bc: 352 */ 0xE9 /* 'i' -> */, -/* pos 02bd: 353 */ 0xE7 /* 'g' -> */, -/* pos 02be: 354 */ 0xE9 /* 'i' -> */, -/* pos 02bf: 355 */ 0xEE /* 'n' -> */, -/* pos 02c0: 356 */ 0xBA /* ':' -> */, -/* pos 02c1: 357 */ 0x00, 0x2A /* - terminal marker 42 - */, -/* pos 02c3: 358 */ 0xE5 /* 'e' -> */, -/* pos 02c4: 359 */ 0xBA /* ':' -> */, -/* pos 02c5: 360 */ 0x00, 0x2B /* - terminal marker 43 - */, -/* pos 02c7: 361 */ 0xEC /* 'l' -> */, -/* pos 02c8: 362 */ 0xEF /* 'o' -> */, -/* pos 02c9: 363 */ 0xF7 /* 'w' -> */, -/* pos 02ca: 364 */ 0xBA /* ':' -> */, -/* pos 02cb: 365 */ 0x00, 0x2C /* - terminal marker 44 - */, -/* pos 02cd: 366 */ 0xE9 /* 'i' -> */, -/* pos 02ce: 367 */ 0xF3 /* 's' -> */, -/* pos 02cf: 368 */ 0xF0 /* 'p' -> */, -/* pos 02d0: 369 */ 0xEF /* 'o' -> */, -/* pos 02d1: 370 */ 0xF3 /* 's' -> */, -/* pos 02d2: 371 */ 0xE9 /* 'i' -> */, -/* pos 02d3: 372 */ 0xF4 /* 't' -> */, -/* pos 02d4: 373 */ 0xE9 /* 'i' -> */, -/* pos 02d5: 374 */ 0xEF /* 'o' -> */, -/* pos 02d6: 375 */ 0xEE /* 'n' -> */, -/* pos 02d7: 376 */ 0xBA /* ':' -> */, -/* pos 02d8: 377 */ 0x00, 0x2D /* - terminal marker 45 - */, -/* pos 02da: 378 */ 0xEE /* 'n' -> */, -/* pos 02db: 379 */ 0xE3 /* 'c' -> */, -/* pos 02dc: 380 */ 0xEF /* 'o' -> */, -/* pos 02dd: 381 */ 0xE4 /* 'd' -> */, -/* pos 02de: 382 */ 0xE9 /* 'i' -> */, -/* pos 02df: 383 */ 0xEE /* 'n' -> */, -/* pos 02e0: 384 */ 0xE7 /* 'g' -> */, -/* pos 02e1: 385 */ 0xBA /* ':' -> */, -/* pos 02e2: 386 */ 0x00, 0x2E /* - terminal marker 46 - */, -/* pos 02e4: 387 */ 0xEE /* 'n' -> */, -/* pos 02e5: 388 */ 0xE7 /* 'g' -> */, -/* pos 02e6: 389 */ 0xF5 /* 'u' -> */, -/* pos 02e7: 390 */ 0xE1 /* 'a' -> */, -/* pos 02e8: 391 */ 0xE7 /* 'g' -> */, -/* pos 02e9: 392 */ 0xE5 /* 'e' -> */, -/* pos 02ea: 393 */ 0xBA /* ':' -> */, -/* pos 02eb: 394 */ 0x00, 0x2F /* - terminal marker 47 - */, -/* pos 02ed: 395 */ 0xE3 /* 'c' -> */, -/* pos 02ee: 396 */ 0xE1 /* 'a' -> */, -/* pos 02ef: 397 */ 0xF4 /* 't' -> */, -/* pos 02f0: 398 */ 0xE9 /* 'i' -> */, -/* pos 02f1: 399 */ 0xEF /* 'o' -> */, -/* pos 02f2: 400 */ 0xEE /* 'n' -> */, -/* pos 02f3: 401 */ 0xBA /* ':' -> */, -/* pos 02f4: 402 */ 0x00, 0x30 /* - terminal marker 48 - */, -/* pos 02f6: 403 */ 0xE1 /* 'a' -> */, -/* pos 02f7: 404 */ 0xEE /* 'n' -> */, -/* pos 02f8: 405 */ 0xE7 /* 'g' -> */, -/* pos 02f9: 406 */ 0xE5 /* 'e' -> */, -/* pos 02fa: 407 */ 0xBA /* ':' -> */, -/* pos 02fb: 408 */ 0x00, 0x31 /* - terminal marker 49 - */, -/* pos 02fd: 409 */ 0x74 /* 't' */, 0x07, 0x00 /* (to 0x0304 state 410) */, - 0x78 /* 'x' */, 0x09, 0x00 /* (to 0x0309 state 414) */, +/* pos 0281: 300 */ 0xF5 /* 'u' -> */, +/* pos 0282: 301 */ 0xF4 /* 't' -> */, +/* pos 0283: 302 */ 0xE8 /* 'h' -> */, +/* pos 0284: 303 */ 0xEF /* 'o' -> */, +/* pos 0285: 304 */ 0xF2 /* 'r' -> */, +/* pos 0286: 305 */ 0xE9 /* 'i' -> */, +/* pos 0287: 306 */ 0xF4 /* 't' -> */, +/* pos 0288: 307 */ 0xF9 /* 'y' -> */, +/* pos 0289: 308 */ 0x00, 0x23 /* - terminal marker 35 - */, +/* pos 028b: 309 */ 0xE5 /* 'e' -> */, +/* pos 028c: 310 */ 0xF4 /* 't' -> */, +/* pos 028d: 311 */ 0xE8 /* 'h' -> */, +/* pos 028e: 312 */ 0xEF /* 'o' -> */, +/* pos 028f: 313 */ 0xE4 /* 'd' -> */, +/* pos 0290: 314 */ 0x00, 0x24 /* - terminal marker 36 - */, +/* pos 0292: 315 */ 0xE1 /* 'a' -> */, +/* pos 0293: 316 */ 0xF4 /* 't' -> */, +/* pos 0294: 317 */ 0xE8 /* 'h' -> */, +/* pos 0295: 318 */ 0x00, 0x25 /* - terminal marker 37 - */, +/* pos 0297: 319 */ 0x63 /* 'c' */, 0x07, 0x00 /* (to 0x029E state 320) */, + 0x74 /* 't' */, 0x0A, 0x00 /* (to 0x02A4 state 325) */, 0x08, /* fail */ -/* pos 0304: 410 */ 0xE1 /* 'a' -> */, -/* pos 0305: 411 */ 0xE7 /* 'g' -> */, -/* pos 0306: 412 */ 0xBA /* ':' -> */, -/* pos 0307: 413 */ 0x00, 0x32 /* - terminal marker 50 - */, -/* pos 0309: 414 */ 0xF0 /* 'p' -> */, -/* pos 030a: 415 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x0311 state 416) */, - 0x69 /* 'i' */, 0x09, 0x00 /* (to 0x0316 state 420) */, +/* pos 029e: 320 */ 0xE8 /* 'h' -> */, +/* pos 029f: 321 */ 0xE5 /* 'e' -> */, +/* pos 02a0: 322 */ 0xED /* 'm' -> */, +/* pos 02a1: 323 */ 0xE5 /* 'e' -> */, +/* pos 02a2: 324 */ 0x00, 0x26 /* - terminal marker 38 - */, +/* pos 02a4: 325 */ 0xE1 /* 'a' -> */, +/* pos 02a5: 326 */ 0xF4 /* 't' -> */, +/* pos 02a6: 327 */ 0xF5 /* 'u' -> */, +/* pos 02a7: 328 */ 0xF3 /* 's' -> */, +/* pos 02a8: 329 */ 0x00, 0x27 /* - terminal marker 39 - */, +/* pos 02aa: 330 */ 0xE8 /* 'h' -> */, +/* pos 02ab: 331 */ 0xE1 /* 'a' -> */, +/* pos 02ac: 332 */ 0xF2 /* 'r' -> */, +/* pos 02ad: 333 */ 0xF3 /* 's' -> */, +/* pos 02ae: 334 */ 0xE5 /* 'e' -> */, +/* pos 02af: 335 */ 0xF4 /* 't' -> */, +/* pos 02b0: 336 */ 0xBA /* ':' -> */, +/* pos 02b1: 337 */ 0x00, 0x28 /* - terminal marker 40 - */, +/* pos 02b3: 338 */ 0xE1 /* 'a' -> */, +/* pos 02b4: 339 */ 0xEE /* 'n' -> */, +/* pos 02b5: 340 */ 0xE7 /* 'g' -> */, +/* pos 02b6: 341 */ 0xE5 /* 'e' -> */, +/* pos 02b7: 342 */ 0xF3 /* 's' -> */, +/* pos 02b8: 343 */ 0xBA /* ':' -> */, +/* pos 02b9: 344 */ 0x00, 0x29 /* - terminal marker 41 - */, +/* pos 02bb: 345 */ 0xEC /* 'l' -> */, +/* pos 02bc: 346 */ 0xEC /* 'l' -> */, +/* pos 02bd: 347 */ 0xEF /* 'o' -> */, +/* pos 02be: 348 */ 0xF7 /* 'w' -> */, +/* pos 02bf: 349 */ 0xAD /* '-' -> */, +/* pos 02c0: 350 */ 0xEF /* 'o' -> */, +/* pos 02c1: 351 */ 0xF2 /* 'r' -> */, +/* pos 02c2: 352 */ 0xE9 /* 'i' -> */, +/* pos 02c3: 353 */ 0xE7 /* 'g' -> */, +/* pos 02c4: 354 */ 0xE9 /* 'i' -> */, +/* pos 02c5: 355 */ 0xEE /* 'n' -> */, +/* pos 02c6: 356 */ 0xBA /* ':' -> */, +/* pos 02c7: 357 */ 0x00, 0x2A /* - terminal marker 42 - */, +/* pos 02c9: 358 */ 0xE5 /* 'e' -> */, +/* pos 02ca: 359 */ 0xBA /* ':' -> */, +/* pos 02cb: 360 */ 0x00, 0x2B /* - terminal marker 43 - */, +/* pos 02cd: 361 */ 0xEC /* 'l' -> */, +/* pos 02ce: 362 */ 0xEF /* 'o' -> */, +/* pos 02cf: 363 */ 0xF7 /* 'w' -> */, +/* pos 02d0: 364 */ 0xBA /* ':' -> */, +/* pos 02d1: 365 */ 0x00, 0x2C /* - terminal marker 44 - */, +/* pos 02d3: 366 */ 0xE9 /* 'i' -> */, +/* pos 02d4: 367 */ 0xF3 /* 's' -> */, +/* pos 02d5: 368 */ 0xF0 /* 'p' -> */, +/* pos 02d6: 369 */ 0xEF /* 'o' -> */, +/* pos 02d7: 370 */ 0xF3 /* 's' -> */, +/* pos 02d8: 371 */ 0xE9 /* 'i' -> */, +/* pos 02d9: 372 */ 0xF4 /* 't' -> */, +/* pos 02da: 373 */ 0xE9 /* 'i' -> */, +/* pos 02db: 374 */ 0xEF /* 'o' -> */, +/* pos 02dc: 375 */ 0xEE /* 'n' -> */, +/* pos 02dd: 376 */ 0xBA /* ':' -> */, +/* pos 02de: 377 */ 0x00, 0x2D /* - terminal marker 45 - */, +/* pos 02e0: 378 */ 0xEE /* 'n' -> */, +/* pos 02e1: 379 */ 0xE3 /* 'c' -> */, +/* pos 02e2: 380 */ 0xEF /* 'o' -> */, +/* pos 02e3: 381 */ 0xE4 /* 'd' -> */, +/* pos 02e4: 382 */ 0xE9 /* 'i' -> */, +/* pos 02e5: 383 */ 0xEE /* 'n' -> */, +/* pos 02e6: 384 */ 0xE7 /* 'g' -> */, +/* pos 02e7: 385 */ 0xBA /* ':' -> */, +/* pos 02e8: 386 */ 0x00, 0x2E /* - terminal marker 46 - */, +/* pos 02ea: 387 */ 0xEE /* 'n' -> */, +/* pos 02eb: 388 */ 0xE7 /* 'g' -> */, +/* pos 02ec: 389 */ 0xF5 /* 'u' -> */, +/* pos 02ed: 390 */ 0xE1 /* 'a' -> */, +/* pos 02ee: 391 */ 0xE7 /* 'g' -> */, +/* pos 02ef: 392 */ 0xE5 /* 'e' -> */, +/* pos 02f0: 393 */ 0xBA /* ':' -> */, +/* pos 02f1: 394 */ 0x00, 0x2F /* - terminal marker 47 - */, +/* pos 02f3: 395 */ 0xE3 /* 'c' -> */, +/* pos 02f4: 396 */ 0xE1 /* 'a' -> */, +/* pos 02f5: 397 */ 0xF4 /* 't' -> */, +/* pos 02f6: 398 */ 0xE9 /* 'i' -> */, +/* pos 02f7: 399 */ 0xEF /* 'o' -> */, +/* pos 02f8: 400 */ 0xEE /* 'n' -> */, +/* pos 02f9: 401 */ 0xBA /* ':' -> */, +/* pos 02fa: 402 */ 0x00, 0x30 /* - terminal marker 48 - */, +/* pos 02fc: 403 */ 0xE1 /* 'a' -> */, +/* pos 02fd: 404 */ 0xEE /* 'n' -> */, +/* pos 02fe: 405 */ 0xE7 /* 'g' -> */, +/* pos 02ff: 406 */ 0xE5 /* 'e' -> */, +/* pos 0300: 407 */ 0xBA /* ':' -> */, +/* pos 0301: 408 */ 0x00, 0x31 /* - terminal marker 49 - */, +/* pos 0303: 409 */ 0x74 /* 't' */, 0x07, 0x00 /* (to 0x030A state 410) */, + 0x78 /* 'x' */, 0x09, 0x00 /* (to 0x030F state 414) */, 0x08, /* fail */ -/* pos 0311: 416 */ 0xE3 /* 'c' -> */, -/* pos 0312: 417 */ 0xF4 /* 't' -> */, -/* pos 0313: 418 */ 0xBA /* ':' -> */, -/* pos 0314: 419 */ 0x00, 0x33 /* - terminal marker 51 - */, -/* pos 0316: 420 */ 0xF2 /* 'r' -> */, -/* pos 0317: 421 */ 0xE5 /* 'e' -> */, -/* pos 0318: 422 */ 0xF3 /* 's' -> */, -/* pos 0319: 423 */ 0xBA /* ':' -> */, -/* pos 031a: 424 */ 0x00, 0x34 /* - terminal marker 52 - */, -/* pos 031c: 425 */ 0xF2 /* 'r' -> */, -/* pos 031d: 426 */ 0xEF /* 'o' -> */, -/* pos 031e: 427 */ 0xED /* 'm' -> */, -/* pos 031f: 428 */ 0xBA /* ':' -> */, -/* pos 0320: 429 */ 0x00, 0x35 /* - terminal marker 53 - */, -/* pos 0322: 430 */ 0xF4 /* 't' -> */, -/* pos 0323: 431 */ 0xE3 /* 'c' -> */, -/* pos 0324: 432 */ 0xE8 /* 'h' -> */, -/* pos 0325: 433 */ 0xBA /* ':' -> */, -/* pos 0326: 434 */ 0x00, 0x36 /* - terminal marker 54 - */, -/* pos 0328: 435 */ 0xE1 /* 'a' -> */, -/* pos 0329: 436 */ 0xEE /* 'n' -> */, -/* pos 032a: 437 */ 0xE7 /* 'g' -> */, -/* pos 032b: 438 */ 0xE5 /* 'e' -> */, -/* pos 032c: 439 */ 0xBA /* ':' -> */, -/* pos 032d: 440 */ 0x00, 0x37 /* - terminal marker 55 - */, -/* pos 032f: 441 */ 0xEE /* 'n' -> */, -/* pos 0330: 442 */ 0xED /* 'm' -> */, -/* pos 0331: 443 */ 0xEF /* 'o' -> */, -/* pos 0332: 444 */ 0xE4 /* 'd' -> */, -/* pos 0333: 445 */ 0xE9 /* 'i' -> */, -/* pos 0334: 446 */ 0xE6 /* 'f' -> */, -/* pos 0335: 447 */ 0xE9 /* 'i' -> */, -/* pos 0336: 448 */ 0xE5 /* 'e' -> */, -/* pos 0337: 449 */ 0xE4 /* 'd' -> */, -/* pos 0338: 450 */ 0xAD /* '-' -> */, -/* pos 0339: 451 */ 0xF3 /* 's' -> */, -/* pos 033a: 452 */ 0xE9 /* 'i' -> */, -/* pos 033b: 453 */ 0xEE /* 'n' -> */, -/* pos 033c: 454 */ 0xE3 /* 'c' -> */, -/* pos 033d: 455 */ 0xE5 /* 'e' -> */, -/* pos 033e: 456 */ 0xBA /* ':' -> */, -/* pos 033f: 457 */ 0x00, 0x38 /* - terminal marker 56 - */, -/* pos 0341: 458 */ 0x61 /* 'a' */, 0x0A, 0x00 /* (to 0x034B state 459) */, - 0x69 /* 'i' */, 0x15, 0x00 /* (to 0x0359 state 472) */, - 0x6F /* 'o' */, 0x17, 0x00 /* (to 0x035E state 476) */, +/* pos 030a: 410 */ 0xE1 /* 'a' -> */, +/* pos 030b: 411 */ 0xE7 /* 'g' -> */, +/* pos 030c: 412 */ 0xBA /* ':' -> */, +/* pos 030d: 413 */ 0x00, 0x32 /* - terminal marker 50 - */, +/* pos 030f: 414 */ 0xF0 /* 'p' -> */, +/* pos 0310: 415 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x0317 state 416) */, + 0x69 /* 'i' */, 0x09, 0x00 /* (to 0x031C state 420) */, 0x08, /* fail */ -/* pos 034b: 459 */ 0xF3 /* 's' -> */, -/* pos 034c: 460 */ 0xF4 /* 't' -> */, -/* pos 034d: 461 */ 0xAD /* '-' -> */, -/* pos 034e: 462 */ 0xED /* 'm' -> */, -/* pos 034f: 463 */ 0xEF /* 'o' -> */, -/* pos 0350: 464 */ 0xE4 /* 'd' -> */, -/* pos 0351: 465 */ 0xE9 /* 'i' -> */, -/* pos 0352: 466 */ 0xE6 /* 'f' -> */, -/* pos 0353: 467 */ 0xE9 /* 'i' -> */, -/* pos 0354: 468 */ 0xE5 /* 'e' -> */, -/* pos 0355: 469 */ 0xE4 /* 'd' -> */, -/* pos 0356: 470 */ 0xBA /* ':' -> */, -/* pos 0357: 471 */ 0x00, 0x39 /* - terminal marker 57 - */, -/* pos 0359: 472 */ 0xEE /* 'n' -> */, -/* pos 035a: 473 */ 0xEB /* 'k' -> */, -/* pos 035b: 474 */ 0xBA /* ':' -> */, -/* pos 035c: 475 */ 0x00, 0x3A /* - terminal marker 58 - */, -/* pos 035e: 476 */ 0xE3 /* 'c' -> */, -/* pos 035f: 477 */ 0xE1 /* 'a' -> */, -/* pos 0360: 478 */ 0xF4 /* 't' -> */, -/* pos 0361: 479 */ 0xE9 /* 'i' -> */, -/* pos 0362: 480 */ 0xEF /* 'o' -> */, -/* pos 0363: 481 */ 0xEE /* 'n' -> */, -/* pos 0364: 482 */ 0xBA /* ':' -> */, -/* pos 0365: 483 */ 0x00, 0x3B /* - terminal marker 59 - */, -/* pos 0367: 484 */ 0xE1 /* 'a' -> */, -/* pos 0368: 485 */ 0xF8 /* 'x' -> */, -/* pos 0369: 486 */ 0xAD /* '-' -> */, -/* pos 036a: 487 */ 0xE6 /* 'f' -> */, -/* pos 036b: 488 */ 0xEF /* 'o' -> */, -/* pos 036c: 489 */ 0xF2 /* 'r' -> */, -/* pos 036d: 490 */ 0xF7 /* 'w' -> */, -/* pos 036e: 491 */ 0xE1 /* 'a' -> */, -/* pos 036f: 492 */ 0xF2 /* 'r' -> */, -/* pos 0370: 493 */ 0xE4 /* 'd' -> */, -/* pos 0371: 494 */ 0xF3 /* 's' -> */, -/* pos 0372: 495 */ 0xBA /* ':' -> */, -/* pos 0373: 496 */ 0x00, 0x3C /* - terminal marker 60 - */, -/* pos 0375: 497 */ 0xF8 /* 'x' -> */, -/* pos 0376: 498 */ 0xF9 /* 'y' -> */, -/* pos 0377: 499 */ 0x2D /* '-' */, 0x07, 0x00 /* (to 0x037E state 500) */, - 0x20 /* ' ' */, 0xB5, 0x00 /* (to 0x042F state 649) */, +/* pos 0317: 416 */ 0xE3 /* 'c' -> */, +/* pos 0318: 417 */ 0xF4 /* 't' -> */, +/* pos 0319: 418 */ 0xBA /* ':' -> */, +/* pos 031a: 419 */ 0x00, 0x33 /* - terminal marker 51 - */, +/* pos 031c: 420 */ 0xF2 /* 'r' -> */, +/* pos 031d: 421 */ 0xE5 /* 'e' -> */, +/* pos 031e: 422 */ 0xF3 /* 's' -> */, +/* pos 031f: 423 */ 0xBA /* ':' -> */, +/* pos 0320: 424 */ 0x00, 0x34 /* - terminal marker 52 - */, +/* pos 0322: 425 */ 0xF2 /* 'r' -> */, +/* pos 0323: 426 */ 0xEF /* 'o' -> */, +/* pos 0324: 427 */ 0xED /* 'm' -> */, +/* pos 0325: 428 */ 0xBA /* ':' -> */, +/* pos 0326: 429 */ 0x00, 0x35 /* - terminal marker 53 - */, +/* pos 0328: 430 */ 0xF4 /* 't' -> */, +/* pos 0329: 431 */ 0xE3 /* 'c' -> */, +/* pos 032a: 432 */ 0xE8 /* 'h' -> */, +/* pos 032b: 433 */ 0xBA /* ':' -> */, +/* pos 032c: 434 */ 0x00, 0x36 /* - terminal marker 54 - */, +/* pos 032e: 435 */ 0xE1 /* 'a' -> */, +/* pos 032f: 436 */ 0xEE /* 'n' -> */, +/* pos 0330: 437 */ 0xE7 /* 'g' -> */, +/* pos 0331: 438 */ 0xE5 /* 'e' -> */, +/* pos 0332: 439 */ 0xBA /* ':' -> */, +/* pos 0333: 440 */ 0x00, 0x37 /* - terminal marker 55 - */, +/* pos 0335: 441 */ 0xEE /* 'n' -> */, +/* pos 0336: 442 */ 0xED /* 'm' -> */, +/* pos 0337: 443 */ 0xEF /* 'o' -> */, +/* pos 0338: 444 */ 0xE4 /* 'd' -> */, +/* pos 0339: 445 */ 0xE9 /* 'i' -> */, +/* pos 033a: 446 */ 0xE6 /* 'f' -> */, +/* pos 033b: 447 */ 0xE9 /* 'i' -> */, +/* pos 033c: 448 */ 0xE5 /* 'e' -> */, +/* pos 033d: 449 */ 0xE4 /* 'd' -> */, +/* pos 033e: 450 */ 0xAD /* '-' -> */, +/* pos 033f: 451 */ 0xF3 /* 's' -> */, +/* pos 0340: 452 */ 0xE9 /* 'i' -> */, +/* pos 0341: 453 */ 0xEE /* 'n' -> */, +/* pos 0342: 454 */ 0xE3 /* 'c' -> */, +/* pos 0343: 455 */ 0xE5 /* 'e' -> */, +/* pos 0344: 456 */ 0xBA /* ':' -> */, +/* pos 0345: 457 */ 0x00, 0x38 /* - terminal marker 56 - */, +/* pos 0347: 458 */ 0x61 /* 'a' */, 0x0A, 0x00 /* (to 0x0351 state 459) */, + 0x69 /* 'i' */, 0x15, 0x00 /* (to 0x035F state 472) */, + 0x6F /* 'o' */, 0x17, 0x00 /* (to 0x0364 state 476) */, 0x08, /* fail */ -/* pos 037e: 500 */ 0xE1 /* 'a' -> */, -/* pos 037f: 501 */ 0xF5 /* 'u' -> */, -/* pos 0380: 502 */ 0xF4 /* 't' -> */, -/* pos 0381: 503 */ 0xE8 /* 'h' -> */, -/* pos 0382: 504 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x0389 state 505) */, - 0x6F /* 'o' */, 0x0E, 0x00 /* (to 0x0393 state 514) */, +/* pos 0351: 459 */ 0xF3 /* 's' -> */, +/* pos 0352: 460 */ 0xF4 /* 't' -> */, +/* pos 0353: 461 */ 0xAD /* '-' -> */, +/* pos 0354: 462 */ 0xED /* 'm' -> */, +/* pos 0355: 463 */ 0xEF /* 'o' -> */, +/* pos 0356: 464 */ 0xE4 /* 'd' -> */, +/* pos 0357: 465 */ 0xE9 /* 'i' -> */, +/* pos 0358: 466 */ 0xE6 /* 'f' -> */, +/* pos 0359: 467 */ 0xE9 /* 'i' -> */, +/* pos 035a: 468 */ 0xE5 /* 'e' -> */, +/* pos 035b: 469 */ 0xE4 /* 'd' -> */, +/* pos 035c: 470 */ 0xBA /* ':' -> */, +/* pos 035d: 471 */ 0x00, 0x39 /* - terminal marker 57 - */, +/* pos 035f: 472 */ 0xEE /* 'n' -> */, +/* pos 0360: 473 */ 0xEB /* 'k' -> */, +/* pos 0361: 474 */ 0xBA /* ':' -> */, +/* pos 0362: 475 */ 0x00, 0x3A /* - terminal marker 58 - */, +/* pos 0364: 476 */ 0xE3 /* 'c' -> */, +/* pos 0365: 477 */ 0xE1 /* 'a' -> */, +/* pos 0366: 478 */ 0xF4 /* 't' -> */, +/* pos 0367: 479 */ 0xE9 /* 'i' -> */, +/* pos 0368: 480 */ 0xEF /* 'o' -> */, +/* pos 0369: 481 */ 0xEE /* 'n' -> */, +/* pos 036a: 482 */ 0xBA /* ':' -> */, +/* pos 036b: 483 */ 0x00, 0x3B /* - terminal marker 59 - */, +/* pos 036d: 484 */ 0xE1 /* 'a' -> */, +/* pos 036e: 485 */ 0xF8 /* 'x' -> */, +/* pos 036f: 486 */ 0xAD /* '-' -> */, +/* pos 0370: 487 */ 0xE6 /* 'f' -> */, +/* pos 0371: 488 */ 0xEF /* 'o' -> */, +/* pos 0372: 489 */ 0xF2 /* 'r' -> */, +/* pos 0373: 490 */ 0xF7 /* 'w' -> */, +/* pos 0374: 491 */ 0xE1 /* 'a' -> */, +/* pos 0375: 492 */ 0xF2 /* 'r' -> */, +/* pos 0376: 493 */ 0xE4 /* 'd' -> */, +/* pos 0377: 494 */ 0xF3 /* 's' -> */, +/* pos 0378: 495 */ 0xBA /* ':' -> */, +/* pos 0379: 496 */ 0x00, 0x3C /* - terminal marker 60 - */, +/* pos 037b: 497 */ 0xF8 /* 'x' -> */, +/* pos 037c: 498 */ 0xF9 /* 'y' -> */, +/* pos 037d: 499 */ 0x2D /* '-' */, 0x07, 0x00 /* (to 0x0384 state 500) */, + 0x20 /* ' ' */, 0xB5, 0x00 /* (to 0x0435 state 649) */, 0x08, /* fail */ -/* pos 0389: 505 */ 0xEE /* 'n' -> */, -/* pos 038a: 506 */ 0xF4 /* 't' -> */, -/* pos 038b: 507 */ 0xE9 /* 'i' -> */, -/* pos 038c: 508 */ 0xE3 /* 'c' -> */, -/* pos 038d: 509 */ 0xE1 /* 'a' -> */, -/* pos 038e: 510 */ 0xF4 /* 't' -> */, -/* pos 038f: 511 */ 0xE5 /* 'e' -> */, -/* pos 0390: 512 */ 0xBA /* ':' -> */, -/* pos 0391: 513 */ 0x00, 0x3D /* - terminal marker 61 - */, -/* pos 0393: 514 */ 0xF2 /* 'r' -> */, -/* pos 0394: 515 */ 0xE9 /* 'i' -> */, -/* pos 0395: 516 */ 0xFA /* 'z' -> */, -/* pos 0396: 517 */ 0xE1 /* 'a' -> */, -/* pos 0397: 518 */ 0xF4 /* 't' -> */, -/* pos 0398: 519 */ 0xE9 /* 'i' -> */, -/* pos 0399: 520 */ 0xEF /* 'o' -> */, -/* pos 039a: 521 */ 0xEE /* 'n' -> */, -/* pos 039b: 522 */ 0xBA /* ':' -> */, -/* pos 039c: 523 */ 0x00, 0x3E /* - terminal marker 62 - */, -/* pos 039e: 524 */ 0xE5 /* 'e' -> */, -/* pos 039f: 525 */ 0xF3 /* 's' -> */, -/* pos 03a0: 526 */ 0xE8 /* 'h' -> */, -/* pos 03a1: 527 */ 0xBA /* ':' -> */, -/* pos 03a2: 528 */ 0x00, 0x3F /* - terminal marker 63 - */, -/* pos 03a4: 529 */ 0xF2 /* 'r' -> */, -/* pos 03a5: 530 */ 0xF9 /* 'y' -> */, -/* pos 03a6: 531 */ 0xAD /* '-' -> */, -/* pos 03a7: 532 */ 0xE1 /* 'a' -> */, -/* pos 03a8: 533 */ 0xE6 /* 'f' -> */, -/* pos 03a9: 534 */ 0xF4 /* 't' -> */, -/* pos 03aa: 535 */ 0xE5 /* 'e' -> */, -/* pos 03ab: 536 */ 0xF2 /* 'r' -> */, -/* pos 03ac: 537 */ 0xBA /* ':' -> */, -/* pos 03ad: 538 */ 0x00, 0x40 /* - terminal marker 64 - */, -/* pos 03af: 539 */ 0xF6 /* 'v' -> */, -/* pos 03b0: 540 */ 0xE5 /* 'e' -> */, -/* pos 03b1: 541 */ 0xF2 /* 'r' -> */, -/* pos 03b2: 542 */ 0xBA /* ':' -> */, -/* pos 03b3: 543 */ 0x00, 0x41 /* - terminal marker 65 - */, -/* pos 03b5: 544 */ 0xAD /* '-' -> */, -/* pos 03b6: 545 */ 0xE3 /* 'c' -> */, -/* pos 03b7: 546 */ 0xEF /* 'o' -> */, -/* pos 03b8: 547 */ 0xEF /* 'o' -> */, -/* pos 03b9: 548 */ 0xEB /* 'k' -> */, -/* pos 03ba: 549 */ 0xE9 /* 'i' -> */, -/* pos 03bb: 550 */ 0xE5 /* 'e' -> */, -/* pos 03bc: 551 */ 0xBA /* ':' -> */, -/* pos 03bd: 552 */ 0x00, 0x42 /* - terminal marker 66 - */, -/* pos 03bf: 553 */ 0xF2 /* 'r' -> */, -/* pos 03c0: 554 */ 0xE9 /* 'i' -> */, -/* pos 03c1: 555 */ 0xE3 /* 'c' -> */, -/* pos 03c2: 556 */ 0xF4 /* 't' -> */, -/* pos 03c3: 557 */ 0xAD /* '-' -> */, -/* pos 03c4: 558 */ 0xF4 /* 't' -> */, -/* pos 03c5: 559 */ 0xF2 /* 'r' -> */, -/* pos 03c6: 560 */ 0xE1 /* 'a' -> */, -/* pos 03c7: 561 */ 0xEE /* 'n' -> */, -/* pos 03c8: 562 */ 0xF3 /* 's' -> */, -/* pos 03c9: 563 */ 0xF0 /* 'p' -> */, -/* pos 03ca: 564 */ 0xEF /* 'o' -> */, -/* pos 03cb: 565 */ 0xF2 /* 'r' -> */, -/* pos 03cc: 566 */ 0xF4 /* 't' -> */, -/* pos 03cd: 567 */ 0xAD /* '-' -> */, -/* pos 03ce: 568 */ 0xF3 /* 's' -> */, -/* pos 03cf: 569 */ 0xE5 /* 'e' -> */, -/* pos 03d0: 570 */ 0xE3 /* 'c' -> */, -/* pos 03d1: 571 */ 0xF5 /* 'u' -> */, -/* pos 03d2: 572 */ 0xF2 /* 'r' -> */, -/* pos 03d3: 573 */ 0xE9 /* 'i' -> */, -/* pos 03d4: 574 */ 0xF4 /* 't' -> */, -/* pos 03d5: 575 */ 0xF9 /* 'y' -> */, -/* pos 03d6: 576 */ 0xBA /* ':' -> */, -/* pos 03d7: 577 */ 0x00, 0x43 /* - terminal marker 67 - */, -/* pos 03d9: 578 */ 0xF2 /* 'r' -> */, -/* pos 03da: 579 */ 0xE1 /* 'a' -> */, -/* pos 03db: 580 */ 0xEE /* 'n' -> */, -/* pos 03dc: 581 */ 0xF3 /* 's' -> */, -/* pos 03dd: 582 */ 0xE6 /* 'f' -> */, -/* pos 03de: 583 */ 0xE5 /* 'e' -> */, -/* pos 03df: 584 */ 0xF2 /* 'r' -> */, -/* pos 03e0: 585 */ 0xAD /* '-' -> */, -/* pos 03e1: 586 */ 0xE5 /* 'e' -> */, -/* pos 03e2: 587 */ 0xEE /* 'n' -> */, -/* pos 03e3: 588 */ 0xE3 /* 'c' -> */, -/* pos 03e4: 589 */ 0xEF /* 'o' -> */, -/* pos 03e5: 590 */ 0xE4 /* 'd' -> */, -/* pos 03e6: 591 */ 0xE9 /* 'i' -> */, -/* pos 03e7: 592 */ 0xEE /* 'n' -> */, -/* pos 03e8: 593 */ 0xE7 /* 'g' -> */, -/* pos 03e9: 594 */ 0xBA /* ':' -> */, -/* pos 03ea: 595 */ 0x00, 0x44 /* - terminal marker 68 - */, -/* pos 03ec: 596 */ 0xE5 /* 'e' -> */, -/* pos 03ed: 597 */ 0xF2 /* 'r' -> */, -/* pos 03ee: 598 */ 0xAD /* '-' -> */, -/* pos 03ef: 599 */ 0xE1 /* 'a' -> */, -/* pos 03f0: 600 */ 0xE7 /* 'g' -> */, -/* pos 03f1: 601 */ 0xE5 /* 'e' -> */, -/* pos 03f2: 602 */ 0xEE /* 'n' -> */, -/* pos 03f3: 603 */ 0xF4 /* 't' -> */, -/* pos 03f4: 604 */ 0xBA /* ':' -> */, -/* pos 03f5: 605 */ 0x00, 0x45 /* - terminal marker 69 - */, -/* pos 03f7: 606 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x03FE state 607) */, - 0x69 /* 'i' */, 0x09, 0x00 /* (to 0x0403 state 611) */, +/* pos 0384: 500 */ 0xE1 /* 'a' -> */, +/* pos 0385: 501 */ 0xF5 /* 'u' -> */, +/* pos 0386: 502 */ 0xF4 /* 't' -> */, +/* pos 0387: 503 */ 0xE8 /* 'h' -> */, +/* pos 0388: 504 */ 0x65 /* 'e' */, 0x07, 0x00 /* (to 0x038F state 505) */, + 0x6F /* 'o' */, 0x0E, 0x00 /* (to 0x0399 state 514) */, 0x08, /* fail */ -/* pos 03fe: 607 */ 0xF2 /* 'r' -> */, -/* pos 03ff: 608 */ 0xF9 /* 'y' -> */, -/* pos 0400: 609 */ 0xBA /* ':' -> */, -/* pos 0401: 610 */ 0x00, 0x46 /* - terminal marker 70 - */, -/* pos 0403: 611 */ 0xE1 /* 'a' -> */, -/* pos 0404: 612 */ 0xBA /* ':' -> */, -/* pos 0405: 613 */ 0x00, 0x47 /* - terminal marker 71 - */, -/* pos 0407: 614 */ 0xF7 /* 'w' -> */, -/* pos 0408: 615 */ 0xF7 /* 'w' -> */, -/* pos 0409: 616 */ 0xAD /* '-' -> */, -/* pos 040a: 617 */ 0xE1 /* 'a' -> */, -/* pos 040b: 618 */ 0xF5 /* 'u' -> */, -/* pos 040c: 619 */ 0xF4 /* 't' -> */, -/* pos 040d: 620 */ 0xE8 /* 'h' -> */, -/* pos 040e: 621 */ 0xE5 /* 'e' -> */, -/* pos 040f: 622 */ 0xEE /* 'n' -> */, -/* pos 0410: 623 */ 0xF4 /* 't' -> */, -/* pos 0411: 624 */ 0xE9 /* 'i' -> */, -/* pos 0412: 625 */ 0xE3 /* 'c' -> */, -/* pos 0413: 626 */ 0xE1 /* 'a' -> */, -/* pos 0414: 627 */ 0xF4 /* 't' -> */, -/* pos 0415: 628 */ 0xE5 /* 'e' -> */, -/* pos 0416: 629 */ 0xBA /* ':' -> */, -/* pos 0417: 630 */ 0x00, 0x48 /* - terminal marker 72 - */, -/* pos 0419: 631 */ 0xF4 /* 't' -> */, -/* pos 041a: 632 */ 0xE3 /* 'c' -> */, -/* pos 041b: 633 */ 0xE8 /* 'h' -> */, -/* pos 041c: 634 */ 0x00, 0x49 /* - terminal marker 73 - */, -/* pos 041e: 635 */ 0xF4 /* 't' -> */, -/* pos 041f: 636 */ 0x00, 0x4A /* - terminal marker 74 - */, -/* pos 0421: 637 */ 0xEC /* 'l' -> */, -/* pos 0422: 638 */ 0xE5 /* 'e' -> */, -/* pos 0423: 639 */ 0xF4 /* 't' -> */, -/* pos 0424: 640 */ 0xE5 /* 'e' -> */, -/* pos 0425: 641 */ 0x00, 0x4B /* - terminal marker 75 - */, -/* pos 0427: 642 */ 0xE9 /* 'i' -> */, -/* pos 0428: 643 */ 0xAD /* '-' -> */, -/* pos 0429: 644 */ 0xE1 /* 'a' -> */, -/* pos 042a: 645 */ 0xF2 /* 'r' -> */, -/* pos 042b: 646 */ 0xE7 /* 'g' -> */, -/* pos 042c: 647 */ 0xF3 /* 's' -> */, -/* pos 042d: 648 */ 0x00, 0x4C /* - terminal marker 76 - */, -/* pos 042f: 649 */ 0x00, 0x4D /* - terminal marker 77 - */, -/* pos 0431: 650 */ 0xAD /* '-' -> */, -/* pos 0432: 651 */ 0x72 /* 'r' */, 0x07, 0x00 /* (to 0x0439 state 652) */, - 0x66 /* 'f' */, 0x10, 0x00 /* (to 0x0445 state 662) */, +/* pos 038f: 505 */ 0xEE /* 'n' -> */, +/* pos 0390: 506 */ 0xF4 /* 't' -> */, +/* pos 0391: 507 */ 0xE9 /* 'i' -> */, +/* pos 0392: 508 */ 0xE3 /* 'c' -> */, +/* pos 0393: 509 */ 0xE1 /* 'a' -> */, +/* pos 0394: 510 */ 0xF4 /* 't' -> */, +/* pos 0395: 511 */ 0xE5 /* 'e' -> */, +/* pos 0396: 512 */ 0xBA /* ':' -> */, +/* pos 0397: 513 */ 0x00, 0x3D /* - terminal marker 61 - */, +/* pos 0399: 514 */ 0xF2 /* 'r' -> */, +/* pos 039a: 515 */ 0xE9 /* 'i' -> */, +/* pos 039b: 516 */ 0xFA /* 'z' -> */, +/* pos 039c: 517 */ 0xE1 /* 'a' -> */, +/* pos 039d: 518 */ 0xF4 /* 't' -> */, +/* pos 039e: 519 */ 0xE9 /* 'i' -> */, +/* pos 039f: 520 */ 0xEF /* 'o' -> */, +/* pos 03a0: 521 */ 0xEE /* 'n' -> */, +/* pos 03a1: 522 */ 0xBA /* ':' -> */, +/* pos 03a2: 523 */ 0x00, 0x3E /* - terminal marker 62 - */, +/* pos 03a4: 524 */ 0xE5 /* 'e' -> */, +/* pos 03a5: 525 */ 0xF3 /* 's' -> */, +/* pos 03a6: 526 */ 0xE8 /* 'h' -> */, +/* pos 03a7: 527 */ 0xBA /* ':' -> */, +/* pos 03a8: 528 */ 0x00, 0x3F /* - terminal marker 63 - */, +/* pos 03aa: 529 */ 0xF2 /* 'r' -> */, +/* pos 03ab: 530 */ 0xF9 /* 'y' -> */, +/* pos 03ac: 531 */ 0xAD /* '-' -> */, +/* pos 03ad: 532 */ 0xE1 /* 'a' -> */, +/* pos 03ae: 533 */ 0xE6 /* 'f' -> */, +/* pos 03af: 534 */ 0xF4 /* 't' -> */, +/* pos 03b0: 535 */ 0xE5 /* 'e' -> */, +/* pos 03b1: 536 */ 0xF2 /* 'r' -> */, +/* pos 03b2: 537 */ 0xBA /* ':' -> */, +/* pos 03b3: 538 */ 0x00, 0x40 /* - terminal marker 64 - */, +/* pos 03b5: 539 */ 0xF6 /* 'v' -> */, +/* pos 03b6: 540 */ 0xE5 /* 'e' -> */, +/* pos 03b7: 541 */ 0xF2 /* 'r' -> */, +/* pos 03b8: 542 */ 0xBA /* ':' -> */, +/* pos 03b9: 543 */ 0x00, 0x41 /* - terminal marker 65 - */, +/* pos 03bb: 544 */ 0xAD /* '-' -> */, +/* pos 03bc: 545 */ 0xE3 /* 'c' -> */, +/* pos 03bd: 546 */ 0xEF /* 'o' -> */, +/* pos 03be: 547 */ 0xEF /* 'o' -> */, +/* pos 03bf: 548 */ 0xEB /* 'k' -> */, +/* pos 03c0: 549 */ 0xE9 /* 'i' -> */, +/* pos 03c1: 550 */ 0xE5 /* 'e' -> */, +/* pos 03c2: 551 */ 0xBA /* ':' -> */, +/* pos 03c3: 552 */ 0x00, 0x42 /* - terminal marker 66 - */, +/* pos 03c5: 553 */ 0xF2 /* 'r' -> */, +/* pos 03c6: 554 */ 0xE9 /* 'i' -> */, +/* pos 03c7: 555 */ 0xE3 /* 'c' -> */, +/* pos 03c8: 556 */ 0xF4 /* 't' -> */, +/* pos 03c9: 557 */ 0xAD /* '-' -> */, +/* pos 03ca: 558 */ 0xF4 /* 't' -> */, +/* pos 03cb: 559 */ 0xF2 /* 'r' -> */, +/* pos 03cc: 560 */ 0xE1 /* 'a' -> */, +/* pos 03cd: 561 */ 0xEE /* 'n' -> */, +/* pos 03ce: 562 */ 0xF3 /* 's' -> */, +/* pos 03cf: 563 */ 0xF0 /* 'p' -> */, +/* pos 03d0: 564 */ 0xEF /* 'o' -> */, +/* pos 03d1: 565 */ 0xF2 /* 'r' -> */, +/* pos 03d2: 566 */ 0xF4 /* 't' -> */, +/* pos 03d3: 567 */ 0xAD /* '-' -> */, +/* pos 03d4: 568 */ 0xF3 /* 's' -> */, +/* pos 03d5: 569 */ 0xE5 /* 'e' -> */, +/* pos 03d6: 570 */ 0xE3 /* 'c' -> */, +/* pos 03d7: 571 */ 0xF5 /* 'u' -> */, +/* pos 03d8: 572 */ 0xF2 /* 'r' -> */, +/* pos 03d9: 573 */ 0xE9 /* 'i' -> */, +/* pos 03da: 574 */ 0xF4 /* 't' -> */, +/* pos 03db: 575 */ 0xF9 /* 'y' -> */, +/* pos 03dc: 576 */ 0xBA /* ':' -> */, +/* pos 03dd: 577 */ 0x00, 0x43 /* - terminal marker 67 - */, +/* pos 03df: 578 */ 0xF2 /* 'r' -> */, +/* pos 03e0: 579 */ 0xE1 /* 'a' -> */, +/* pos 03e1: 580 */ 0xEE /* 'n' -> */, +/* pos 03e2: 581 */ 0xF3 /* 's' -> */, +/* pos 03e3: 582 */ 0xE6 /* 'f' -> */, +/* pos 03e4: 583 */ 0xE5 /* 'e' -> */, +/* pos 03e5: 584 */ 0xF2 /* 'r' -> */, +/* pos 03e6: 585 */ 0xAD /* '-' -> */, +/* pos 03e7: 586 */ 0xE5 /* 'e' -> */, +/* pos 03e8: 587 */ 0xEE /* 'n' -> */, +/* pos 03e9: 588 */ 0xE3 /* 'c' -> */, +/* pos 03ea: 589 */ 0xEF /* 'o' -> */, +/* pos 03eb: 590 */ 0xE4 /* 'd' -> */, +/* pos 03ec: 591 */ 0xE9 /* 'i' -> */, +/* pos 03ed: 592 */ 0xEE /* 'n' -> */, +/* pos 03ee: 593 */ 0xE7 /* 'g' -> */, +/* pos 03ef: 594 */ 0xBA /* ':' -> */, +/* pos 03f0: 595 */ 0x00, 0x44 /* - terminal marker 68 - */, +/* pos 03f2: 596 */ 0xE5 /* 'e' -> */, +/* pos 03f3: 597 */ 0xF2 /* 'r' -> */, +/* pos 03f4: 598 */ 0xAD /* '-' -> */, +/* pos 03f5: 599 */ 0xE1 /* 'a' -> */, +/* pos 03f6: 600 */ 0xE7 /* 'g' -> */, +/* pos 03f7: 601 */ 0xE5 /* 'e' -> */, +/* pos 03f8: 602 */ 0xEE /* 'n' -> */, +/* pos 03f9: 603 */ 0xF4 /* 't' -> */, +/* pos 03fa: 604 */ 0xBA /* ':' -> */, +/* pos 03fb: 605 */ 0x00, 0x45 /* - terminal marker 69 - */, +/* pos 03fd: 606 */ 0x61 /* 'a' */, 0x07, 0x00 /* (to 0x0404 state 607) */, + 0x69 /* 'i' */, 0x09, 0x00 /* (to 0x0409 state 611) */, 0x08, /* fail */ -/* pos 0439: 652 */ 0xE5 /* 'e' -> */, -/* pos 043a: 653 */ 0xE1 /* 'a' -> */, -/* pos 043b: 654 */ 0xEC /* 'l' -> */, -/* pos 043c: 655 */ 0xAD /* '-' -> */, -/* pos 043d: 656 */ 0xE9 /* 'i' -> */, -/* pos 043e: 657 */ 0xF0 /* 'p' -> */, -/* pos 043f: 658 */ 0xBA /* ':' -> */, -/* pos 0440: 659 */ 0x00, 0x4E /* - terminal marker 78 - */, -/* pos 0442: 660 */ 0xA0 /* ' ' -> */, -/* pos 0443: 661 */ 0x00, 0x4F /* - terminal marker 79 - */, -/* pos 0445: 662 */ 0xEF /* 'o' -> */, -/* pos 0446: 663 */ 0xF2 /* 'r' -> */, -/* pos 0447: 664 */ 0xF7 /* 'w' -> */, -/* pos 0448: 665 */ 0xE1 /* 'a' -> */, -/* pos 0449: 666 */ 0xF2 /* 'r' -> */, -/* pos 044a: 667 */ 0xE4 /* 'd' -> */, -/* pos 044b: 668 */ 0xE5 /* 'e' -> */, -/* pos 044c: 669 */ 0xE4 /* 'd' -> */, -/* pos 044d: 670 */ 0xAD /* '-' -> */, -/* pos 044e: 671 */ 0xE6 /* 'f' -> */, -/* pos 044f: 672 */ 0xEF /* 'o' -> */, -/* pos 0450: 673 */ 0xF2 /* 'r' -> */, -/* pos 0451: 674 */ 0x00, 0x50 /* - terminal marker 80 - */, -/* total size 1107 bytes */ +/* pos 0404: 607 */ 0xF2 /* 'r' -> */, +/* pos 0405: 608 */ 0xF9 /* 'y' -> */, +/* pos 0406: 609 */ 0xBA /* ':' -> */, +/* pos 0407: 610 */ 0x00, 0x46 /* - terminal marker 70 - */, +/* pos 0409: 611 */ 0xE1 /* 'a' -> */, +/* pos 040a: 612 */ 0xBA /* ':' -> */, +/* pos 040b: 613 */ 0x00, 0x47 /* - terminal marker 71 - */, +/* pos 040d: 614 */ 0xF7 /* 'w' -> */, +/* pos 040e: 615 */ 0xF7 /* 'w' -> */, +/* pos 040f: 616 */ 0xAD /* '-' -> */, +/* pos 0410: 617 */ 0xE1 /* 'a' -> */, +/* pos 0411: 618 */ 0xF5 /* 'u' -> */, +/* pos 0412: 619 */ 0xF4 /* 't' -> */, +/* pos 0413: 620 */ 0xE8 /* 'h' -> */, +/* pos 0414: 621 */ 0xE5 /* 'e' -> */, +/* pos 0415: 622 */ 0xEE /* 'n' -> */, +/* pos 0416: 623 */ 0xF4 /* 't' -> */, +/* pos 0417: 624 */ 0xE9 /* 'i' -> */, +/* pos 0418: 625 */ 0xE3 /* 'c' -> */, +/* pos 0419: 626 */ 0xE1 /* 'a' -> */, +/* pos 041a: 627 */ 0xF4 /* 't' -> */, +/* pos 041b: 628 */ 0xE5 /* 'e' -> */, +/* pos 041c: 629 */ 0xBA /* ':' -> */, +/* pos 041d: 630 */ 0x00, 0x48 /* - terminal marker 72 - */, +/* pos 041f: 631 */ 0xF4 /* 't' -> */, +/* pos 0420: 632 */ 0xE3 /* 'c' -> */, +/* pos 0421: 633 */ 0xE8 /* 'h' -> */, +/* pos 0422: 634 */ 0x00, 0x49 /* - terminal marker 73 - */, +/* pos 0424: 635 */ 0xF4 /* 't' -> */, +/* pos 0425: 636 */ 0x00, 0x4A /* - terminal marker 74 - */, +/* pos 0427: 637 */ 0xEC /* 'l' -> */, +/* pos 0428: 638 */ 0xE5 /* 'e' -> */, +/* pos 0429: 639 */ 0xF4 /* 't' -> */, +/* pos 042a: 640 */ 0xE5 /* 'e' -> */, +/* pos 042b: 641 */ 0x00, 0x4B /* - terminal marker 75 - */, +/* pos 042d: 642 */ 0xE9 /* 'i' -> */, +/* pos 042e: 643 */ 0xAD /* '-' -> */, +/* pos 042f: 644 */ 0xE1 /* 'a' -> */, +/* pos 0430: 645 */ 0xF2 /* 'r' -> */, +/* pos 0431: 646 */ 0xE7 /* 'g' -> */, +/* pos 0432: 647 */ 0xF3 /* 's' -> */, +/* pos 0433: 648 */ 0x00, 0x4C /* - terminal marker 76 - */, +/* pos 0435: 649 */ 0x00, 0x4D /* - terminal marker 77 - */, +/* pos 0437: 650 */ 0xAD /* '-' -> */, +/* pos 0438: 651 */ 0x72 /* 'r' */, 0x07, 0x00 /* (to 0x043F state 652) */, + 0x66 /* 'f' */, 0x10, 0x00 /* (to 0x044B state 662) */, + 0x08, /* fail */ +/* pos 043f: 652 */ 0xE5 /* 'e' -> */, +/* pos 0440: 653 */ 0xE1 /* 'a' -> */, +/* pos 0441: 654 */ 0xEC /* 'l' -> */, +/* pos 0442: 655 */ 0xAD /* '-' -> */, +/* pos 0443: 656 */ 0xE9 /* 'i' -> */, +/* pos 0444: 657 */ 0xF0 /* 'p' -> */, +/* pos 0445: 658 */ 0xBA /* ':' -> */, +/* pos 0446: 659 */ 0x00, 0x4E /* - terminal marker 78 - */, +/* pos 0448: 660 */ 0xA0 /* ' ' -> */, +/* pos 0449: 661 */ 0x00, 0x4F /* - terminal marker 79 - */, +/* pos 044b: 662 */ 0xEF /* 'o' -> */, +/* pos 044c: 663 */ 0xF2 /* 'r' -> */, +/* pos 044d: 664 */ 0xF7 /* 'w' -> */, +/* pos 044e: 665 */ 0xE1 /* 'a' -> */, +/* pos 044f: 666 */ 0xF2 /* 'r' -> */, +/* pos 0450: 667 */ 0xE4 /* 'd' -> */, +/* pos 0451: 668 */ 0xE5 /* 'e' -> */, +/* pos 0452: 669 */ 0xE4 /* 'd' -> */, +/* pos 0453: 670 */ 0xAD /* '-' -> */, +/* pos 0454: 671 */ 0xE6 /* 'f' -> */, +/* pos 0455: 672 */ 0xEF /* 'o' -> */, +/* pos 0456: 673 */ 0xF2 /* 'r' -> */, +/* pos 0457: 674 */ 0x00, 0x50 /* - terminal marker 80 - */, +/* pos 0459: 675 */ 0x00, 0x51 /* - terminal marker 81 - */, +/* total size 1115 bytes */ diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c index 19133414..225efa96 100755 --- a/lib/libwebsockets.c +++ b/lib/libwebsockets.c @@ -221,6 +221,13 @@ lws_close_free_wsi(struct lws *wsi, enum lws_close_status reason) } #endif + if (wsi->mode == LWSCM_RAW) { + wsi->vhost->protocols->callback(wsi, + LWS_CALLBACK_RAW_CLOSE, wsi->user_space, NULL, 0); + wsi->socket_is_permanently_unusable = 1; + goto just_kill_connection; + } + if (wsi->mode == LWSCM_HTTP_SERVING_ACCEPTED && wsi->u.http.fd != LWS_INVALID_FILE) { lws_plat_file_close(wsi, wsi->u.http.fd); @@ -424,7 +431,7 @@ just_kill_connection: * for the POLLIN to show a zero-size rx before coming back and doing * the actual close. */ - if (wsi->state != LWSS_SHUTDOWN && + if (wsi->mode != LWSCM_RAW && wsi->state != LWSS_SHUTDOWN && wsi->state != LWSS_CLIENT_UNCONNECTED && reason != LWS_CLOSE_STATUS_NOSTATUS_CONTEXT_DESTROY && !wsi->socket_is_permanently_unusable) { @@ -530,7 +537,7 @@ just_kill_connection: /* tell the user it's all over for this guy */ - if (wsi->protocol && wsi->protocol->callback && + if (wsi->mode != LWSCM_RAW && wsi->protocol && wsi->protocol->callback && ((wsi->state_pre_close == LWSS_ESTABLISHED) || (wsi->state_pre_close == LWSS_RETURNED_CLOSE_ALREADY) || (wsi->state_pre_close == LWSS_AWAITING_CLOSE_ACK) || diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h index 536eecdd..3120bc84 100644 --- a/lib/libwebsockets.h +++ b/lib/libwebsockets.h @@ -1144,6 +1144,14 @@ enum lws_callback_reasons { * LCCSCF_SKIP_SERVER_CERT_HOSTNAME_CHECK still work without this * callback being implemented. */ + LWS_CALLBACK_RAW_RX = 59, + /**< RAW mode connection RX */ + LWS_CALLBACK_RAW_CLOSE = 60, + /**< RAW mode connection is closing */ + LWS_CALLBACK_RAW_WRITEABLE = 61, + /**< RAW mode connection may be written */ + LWS_CALLBACK_RAW_ADOPT = 62, + /**< RAW mode connection was adopted (equivalent to 'created') */ /****** add new things just above ---^ ******/ @@ -2817,7 +2825,7 @@ enum lws_token_indexes { WSI_TOKEN_HTTP_X_REAL_IP = 78, WSI_TOKEN_HTTP1_0 = 79, WSI_TOKEN_X_FORWARDED_FOR = 80, - + WSI_TOKEN_CONNECT = 81, /****** add new things just above ---^ ******/ /* use token storage to stash these internally, not for @@ -3764,6 +3772,24 @@ lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd); */ LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket_vhost(struct lws_vhost *vh, lws_sockfd_type accept_fd); +/* +* lws_adopt_socket_vhost2() - adopt foreign socket as if listen socket accepted it +* for vhost, allow control over defeat SSL and raw transport mode +* \param vhost: lws vhost +* \param accept_fd: fd of already-accepted socket to adopt +* \param allow_ssl: 0 = no SSL even if vhost supports, 1 = SSL if vhost supports +* \param raw: 0 = http[s]/wss[s], 1 = raw mode semantics +* +* Either returns new wsi bound to accept_fd, or closes accept_fd and +* returns NULL, having cleaned up any new wsi pieces. +* +* LWS adopts the socket in http serving mode, it's ready to accept an upgrade +* to ws or just serve http. +*/ +LWS_VISIBLE struct lws * +lws_adopt_socket_vhost2(struct lws_vhost *vh, lws_sockfd_type accept_fd, + int allow_ssl, int raw); + /** * lws_adopt_socket_readbuf() - adopt foreign socket and first rx as if listen socket accepted it * for the default vhost of context. diff --git a/lib/parsers.c b/lib/parsers.c index a1b8c82d..26f53f4b 100644 --- a/lib/parsers.c +++ b/lib/parsers.c @@ -541,6 +541,7 @@ lws_parse(struct lws *wsi, unsigned char c) WSI_TOKEN_PUT_URI, WSI_TOKEN_PATCH_URI, WSI_TOKEN_DELETE_URI, + WSI_TOKEN_CONNECT, }; struct allocated_headers *ah = wsi->u.hdr.ah; struct lws_context *context = wsi->context; diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h index e9507c57..21ffc3ab 100644 --- a/lib/private-libwebsockets.h +++ b/lib/private-libwebsockets.h @@ -572,10 +572,14 @@ enum connection_mode { /* transient, ssl delay hiding */ LWSCM_SSL_ACK_PENDING, LWSCM_SSL_INIT, + /* as above, but complete into LWSCM_RAW */ + LWSCM_SSL_ACK_PENDING_RAW, + LWSCM_SSL_INIT_RAW, /* special internal types */ LWSCM_SERVER_LISTENER, LWSCM_CGI, /* stdin, stdout, stderr for another cgi master wsi */ + LWSCM_RAW, /* raw */ /* HTTP Client related */ LWSCM_HTTP_CLIENT = LWSCM_FLAG_IMPLIES_CALLBACK_CLOSED_CLIENT_HTTP, diff --git a/lib/server.c b/lib/server.c index d4d92ca3..62832a4c 100644 --- a/lib/server.c +++ b/lib/server.c @@ -333,7 +333,7 @@ lws_http_serve(struct lws *wsi, char *uri, const char *origin, char path[256], sym[512]; unsigned char *p = (unsigned char *)sym + 32 + LWS_PRE, *start = p; unsigned char *end = p + sizeof(sym) - 32 - LWS_PRE; -#if !defined(WIN32) && LWS_POSIX && !defined(LWS_WITH_ESP32) +#if !defined(WIN32) && LWS_POSIX size_t len; #endif int n; @@ -350,7 +350,7 @@ lws_http_serve(struct lws *wsi, char *uri, const char *origin, } lwsl_debug(" %s mode %d\n", path, S_IFMT & st.st_mode); -#if !defined(WIN32) && LWS_POSIX && !defined(LWS_WITH_ESP32) +#if !defined(WIN32) && LWS_POSIX if ((S_IFMT & st.st_mode) == S_IFLNK) { len = readlink(path, sym, sizeof(sym) - 1); if (len) { @@ -609,13 +609,14 @@ lws_http_action(struct lws *wsi) WSI_TOKEN_PUT_URI, WSI_TOKEN_PATCH_URI, WSI_TOKEN_DELETE_URI, + WSI_TOKEN_CONNECT, #ifdef LWS_USE_HTTP2 WSI_TOKEN_HTTP_COLON_PATH, #endif }; #if defined(_DEBUG) || defined(LWS_WITH_ACCESS_LOG) static const char * const method_names[] = { - "GET", "POST", "OPTIONS", "PUT", "PATCH", "DELETE", + "GET", "POST", "OPTIONS", "PUT", "PATCH", "DELETE", "CONNECT", #ifdef LWS_USE_HTTP2 ":path", #endif @@ -1211,6 +1212,17 @@ lws_handshake_server(struct lws *wsi, unsigned char **buf, size_t len) wsi->conn_stat_done = 1; } + if (lws_hdr_total_length(wsi, WSI_TOKEN_CONNECT)) { + lwsl_info("Changing to RAW mode\n"); + lws_union_transition(wsi, LWSCM_RAW); + if (!wsi->more_rx_waiting) { + wsi->u.hdr.ah->rxpos = wsi->u.hdr.ah->rxlen; + + //lwsl_notice("%p: dropping ah EST\n", wsi); + lws_header_table_detach(wsi, 1); + } + } + wsi->mode = LWSCM_PRE_WS_SERVING_ACCEPT; lws_set_timeout(wsi, NO_PENDING_TIMEOUT, 0); @@ -1681,10 +1693,12 @@ lws_http_transaction_completed(struct lws *wsi) } LWS_VISIBLE struct lws * -lws_adopt_socket_vhost(struct lws_vhost *vh, lws_sockfd_type accept_fd) +lws_adopt_socket_vhost2(struct lws_vhost *vh, lws_sockfd_type accept_fd, + int allow_ssl, int raw) { struct lws_context *context = vh->context; struct lws *new_wsi = lws_create_new_server_wsi(vh); + int n; if (!new_wsi) { compatible_close(accept_fd); @@ -1710,10 +1724,14 @@ lws_adopt_socket_vhost(struct lws_vhost *vh, lws_sockfd_type accept_fd) /* * A new connection was accepted. Give the user a chance to * set properties of the newly created wsi. There's no protocol - * selected yet so we issue this to protocols[0] + * selected yet so we issue this to the vhosts's default protocol, + * itself by default protocols[0] */ - if ((context->vhost_list->protocols[0].callback)(new_wsi, - LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED, NULL, NULL, 0)) { + n = LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED; + if (raw) + n = LWS_CALLBACK_RAW_ADOPT; + if ((context->vhost_list->protocols[vh->default_protocol_index].callback)( + new_wsi, n, NULL, NULL, 0)) { /* force us off the timeout list by hand */ lws_set_timeout(new_wsi, NO_PENDING_TIMEOUT, 0); compatible_close(new_wsi->sock); @@ -1724,13 +1742,18 @@ lws_adopt_socket_vhost(struct lws_vhost *vh, lws_sockfd_type accept_fd) lws_libev_accept(new_wsi, new_wsi->sock); lws_libuv_accept(new_wsi, new_wsi->sock); - if (!LWS_SSL_ENABLED(new_wsi->vhost)) { + if (!LWS_SSL_ENABLED(new_wsi->vhost) || allow_ssl == 0) { + if (raw) + new_wsi->mode = LWSCM_RAW; if (insert_wsi_socket_into_fds(context, new_wsi)) { lwsl_err("%s: fail inserting socket\n", __func__); goto fail; } } else { - new_wsi->mode = LWSCM_SSL_INIT; + if (raw) + new_wsi->mode = LWSCM_SSL_INIT_RAW; + else + new_wsi->mode = LWSCM_SSL_INIT; if (lws_server_socket_service_ssl(new_wsi, accept_fd)) { lwsl_err("%s: fail ssl negotiation\n", __func__); goto fail; @@ -1748,10 +1771,16 @@ fail: return NULL; } +LWS_VISIBLE struct lws * +lws_adopt_socket_vhost(struct lws_vhost *vh, lws_sockfd_type accept_fd) +{ + return lws_adopt_socket_vhost2(vh, accept_fd, 1, 0); +} + LWS_VISIBLE struct lws * lws_adopt_socket(struct lws_context *context, lws_sockfd_type accept_fd) { - return lws_adopt_socket_vhost(context->vhost_list, accept_fd); + return lws_adopt_socket_vhost2(context->vhost_list, accept_fd, 1, 0); } /* Common read-buffer adoption for lws_adopt_*_readbuf */ @@ -1903,6 +1932,7 @@ lws_server_socket_service(struct lws_context *context, struct lws *wsi, goto try_pollout; } #endif + /* these states imply we MUST have an ah attached */ if (wsi->state == LWSS_HTTP || @@ -1991,6 +2021,17 @@ lws_server_socket_service(struct lws_context *context, struct lws *wsi, goto try_pollout; } + if (wsi->mode == LWSCM_RAW) { + n = user_callback_handle_rxflow(wsi->protocol->callback, + wsi, LWS_CALLBACK_RAW_RX, + wsi->user_space, pt->serv_buf, len); + if (n < 0) { + lwsl_info("raw writeable_fail\n"); + goto fail; + } + break; + } + /* just ignore incoming if waiting for close */ if (wsi->state != LWSS_FLUSHING_STORED_SEND_BEFORE_CLOSE) { /* @@ -2138,13 +2179,13 @@ lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type, int ranges; #endif - if (lws_hdr_total_length(wsi, WSI_TOKEN_HTTP_ACCEPT_ENCODING)) { - char *accept = lws_hdr_simple_ptr(wsi, WSI_TOKEN_HTTP_ACCEPT_ENCODING); - if (strstr(accept, "gzip") && strstr(accept, "deflate")) { - lwsl_debug("client indicates GZIP is acceptable\n"); - fflags |= LWS_FOP_FLAG_COMPR_ACCEPTABLE_GZIP; - } - } + if (lws_hdr_total_length(wsi, WSI_TOKEN_HTTP_ACCEPT_ENCODING)) + if (strstr("gzip", lws_hdr_simple_ptr(wsi, WSI_TOKEN_HTTP_ACCEPT_ENCODING)) && + strstr("deflate", lws_hdr_simple_ptr(wsi, WSI_TOKEN_HTTP_ACCEPT_ENCODING))) { + lwsl_debug("client indicates GZIP is acceptable\n"); + fflags |= LWS_FOP_FLAG_COMPR_ACCEPTABLE_GZIP; + } + wsi->u.http.fd = lws_plat_file_open(wsi, file, &wsi->u.http.filelen, &fflags); @@ -2155,6 +2196,16 @@ lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type, } computed_total_content_length = wsi->u.http.filelen; + if ((fflags & (LWS_FOP_FLAG_COMPR_ACCEPTABLE_GZIP | + LWS_FOP_FLAG_COMPR_IS_GZIP)) == + (LWS_FOP_FLAG_COMPR_ACCEPTABLE_GZIP | LWS_FOP_FLAG_COMPR_IS_GZIP)) { + if (lws_add_http_header_by_token(wsi, + WSI_TOKEN_HTTP_CONTENT_ENCODING, + (unsigned char *)"gzip, deflate", 13, &p, end)) + return -1; + lwsl_debug("file is being provided in gzip\n"); + } + #if defined(LWS_WITH_RANGES) ranges = lws_ranges_init(wsi, rp, wsi->u.http.filelen); @@ -2181,16 +2232,6 @@ lws_serve_http_file(struct lws *wsi, const char *file, const char *content_type, if (lws_add_http_header_status(wsi, n, &p, end)) return -1; - if ((fflags & (LWS_FOP_FLAG_COMPR_ACCEPTABLE_GZIP | - LWS_FOP_FLAG_COMPR_IS_GZIP)) == - (LWS_FOP_FLAG_COMPR_ACCEPTABLE_GZIP | LWS_FOP_FLAG_COMPR_IS_GZIP)) { - if (lws_add_http_header_by_token(wsi, - WSI_TOKEN_HTTP_CONTENT_ENCODING, - (unsigned char *)"gzip", 4, &p, end)) - return -1; - lwsl_debug("file is being provided in gzip\n"); - } - #if defined(LWS_WITH_RANGES) if (ranges < 2 && content_type && content_type[0]) if (lws_add_http_header_by_token(wsi, WSI_TOKEN_HTTP_CONTENT_TYPE, @@ -2372,7 +2413,7 @@ lws_server_get_canonical_hostname(struct lws_context *context, { if (lws_check_opt(info->options, LWS_SERVER_OPTION_SKIP_SERVER_CANONICAL_NAME)) return; -#if LWS_POSIX && !defined(LWS_WITH_ESP32) +#if LWS_POSIX /* find canonical hostname */ gethostname((char *)context->canonical_hostname, sizeof(context->canonical_hostname) - 1); diff --git a/lib/service.c b/lib/service.c index a5cbd0f9..931e8d3a 100644 --- a/lib/service.c +++ b/lib/service.c @@ -27,6 +27,9 @@ lws_calllback_as_writeable(struct lws *wsi) int n; switch (wsi->mode) { + case LWSCM_RAW: + n = LWS_CALLBACK_RAW_WRITEABLE; + break; case LWSCM_WS_CLIENT: n = LWS_CALLBACK_CLIENT_WRITEABLE; break; @@ -195,6 +198,8 @@ lws_handle_POLLOUT_event(struct lws *wsi, struct lws_pollfd *pollfd) */ ret = 1; + if (wsi->mode == LWSCM_RAW) + ret = 0; while (ret == 1) { /* default to nobody has more to spill */ @@ -841,6 +846,7 @@ lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd, int t case LWSCM_HTTP_SERVING_ACCEPTED: case LWSCM_SERVER_LISTENER: case LWSCM_SSL_ACK_PENDING: + case LWSCM_SSL_ACK_PENDING_RAW: if (wsi->state == LWSS_CLIENT_HTTP_ESTABLISHED) goto handled; @@ -861,15 +867,17 @@ lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd, int t case LWSCM_WS_CLIENT: case LWSCM_HTTP2_SERVING: case LWSCM_HTTP_CLIENT_ACCEPTED: + case LWSCM_RAW: /* 1: something requested a callback when it was OK to write */ if ((pollfd->revents & LWS_POLLOUT) && + ((wsi->mode == LWSCM_RAW) || (wsi->state == LWSS_ESTABLISHED || wsi->state == LWSS_HTTP2_ESTABLISHED || wsi->state == LWSS_HTTP2_ESTABLISHED_PRE_SETTINGS || wsi->state == LWSS_RETURNED_CLOSE_ALREADY || - wsi->state == LWSS_FLUSHING_STORED_SEND_BEFORE_CLOSE) && + wsi->state == LWSS_FLUSHING_STORED_SEND_BEFORE_CLOSE)) && lws_handle_POLLOUT_event(wsi, pollfd)) { if (wsi->state == LWSS_RETURNED_CLOSE_ALREADY) wsi->state = LWSS_FLUSHING_STORED_SEND_BEFORE_CLOSE; diff --git a/lib/ssl.c b/lib/ssl.c index a616671e..1a49e0a8 100644 --- a/lib/ssl.c +++ b/lib/ssl.c @@ -496,7 +496,7 @@ lws_server_socket_service_ssl(struct lws *wsi, lws_sockfd_type accept_fd) switch (wsi->mode) { case LWSCM_SSL_INIT: - + case LWSCM_SSL_INIT_RAW: if (wsi->ssl) lwsl_err("%s: leaking ssl\n", __func__); if (accept_fd == LWS_SOCK_INVALID) @@ -590,7 +590,11 @@ lws_server_socket_service_ssl(struct lws *wsi, lws_sockfd_type accept_fd) * pieces come if we're not sorted yet */ - wsi->mode = LWSCM_SSL_ACK_PENDING; + if (wsi->mode == LWSCM_SSL_INIT) + wsi->mode = LWSCM_SSL_ACK_PENDING; + else + wsi->mode = LWSCM_SSL_ACK_PENDING_RAW; + if (insert_wsi_socket_into_fds(context, wsi)) { lwsl_err("%s: failed to insert into fds\n", __func__); goto fail; @@ -604,7 +608,7 @@ lws_server_socket_service_ssl(struct lws *wsi, lws_sockfd_type accept_fd) /* fallthru */ case LWSCM_SSL_ACK_PENDING: - + case LWSCM_SSL_ACK_PENDING_RAW: if (lws_change_pollfd(wsi, LWS_POLLOUT, 0)) { lwsl_err("%s: lws_change_pollfd failed\n", __func__); goto fail; @@ -715,7 +719,10 @@ accepted: lws_set_timeout(wsi, PENDING_TIMEOUT_ESTABLISH_WITH_SERVER, context->timeout_secs); - wsi->mode = LWSCM_HTTP_SERVING; + if (wsi->mode == LWSCM_SSL_ACK_PENDING_RAW) + wsi->mode = LWSCM_RAW; + else + wsi->mode = LWSCM_HTTP_SERVING; lws_http2_configure_if_upgraded(wsi);