File indexing completed on 2024-09-22 04:52:51
0001 0002 #line 1 "Rfc5322HeaderParser.cpp" 0003 /* Copyright (C) 2006 - 2014 Jan Kundrát <jkt@flaska.net> 0004 0005 This file is part of the Trojita Qt IMAP e-mail client, 0006 http://trojita.flaska.net/ 0007 0008 This program is free software; you can redistribute it and/or 0009 modify it under the terms of the GNU General Public License as 0010 published by the Free Software Foundation; either version 2 of 0011 the License or (at your option) version 3 or any later version 0012 accepted by the membership of KDE e.V. (or its successor approved 0013 by the membership of KDE e.V.), which shall act as a proxy 0014 defined in Section 14 of version 3 of the license. 0015 0016 This program is distributed in the hope that it will be useful, 0017 but WITHOUT ANY WARRANTY; without even the implied warranty of 0018 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0019 GNU General Public License for more details. 0020 0021 You should have received a copy of the GNU General Public License 0022 along with this program. If not, see <http://www.gnu.org/licenses/>. 0023 */ 0024 0025 #include <QDebug> 0026 #include "Imap/Parser/Rfc5322HeaderParser.h" 0027 0028 #define DBG(X) do {qDebug() << X << "(current char:" << *p << ")";} while(false); 0029 //#define RAGEL_DEBUG 0030 0031 namespace Imap { 0032 namespace LowLevelParser { 0033 0034 0035 #line 140 "Rfc5322HeaderParser.cpp" 0036 0037 0038 #ifdef __clang__ 0039 #pragma clang diagnostic push 0040 #if defined(__has_warning) && __has_warning("-Wunused-const-variable") 0041 #pragma clang diagnostic ignored "-Wunused-const-variable" 0042 #endif 0043 #endif 0044 0045 #line 46 "Rfc5322HeaderParser.generated.cpp" 0046 static const int8_t _rfc5322_actions[] = { 0047 0, 1, 0, 1, 1, 1, 2, 1, 0048 3, 1, 4, 1, 5, 1, 6, 1, 0049 7, 1, 8, 1, 9, 1, 10, 2, 0050 0, 2, 2, 2, 0, 2, 2, 3, 0051 2, 3, 0, 2, 3, 1, 2, 5, 0052 4, 2, 6, 4, 2, 7, 4, 2, 0053 8, 4 0054 }; 0055 0056 static const int16_t _rfc5322_key_offsets[] = { 0057 0, 0, 1, 4, 7, 11, 16, 20, 0058 25, 30, 35, 40, 45, 49, 54, 59, 0059 64, 67, 87, 107, 109, 112, 131, 133, 0060 136, 141, 146, 151, 155, 160, 165, 170, 0061 175, 178, 188, 193, 199, 204, 209, 214, 0062 219, 224, 229, 233, 238, 243, 248, 251, 0063 257, 259, 262, 270, 272, 275, 277, 296, 0064 298, 301, 320, 327, 329, 332, 340, 342, 0065 345, 347, 367, 369, 372, 392, 399, 401, 0066 404, 412, 414, 417, 419, 438, 440, 443, 0067 463, 468, 473, 475, 478, 483, 488, 493, 0068 498, 503, 508, 513, 518, 523, 528, 531, 0069 551, 571, 573, 576, 595, 597, 600, 609, 0070 617, 619, 622, 624, 632, 634, 637, 639, 0071 658, 660, 663, 682, 689, 691, 694, 702, 0072 704, 707, 709, 729, 731, 734, 754, 761, 0073 763, 766, 774, 776, 779, 781, 800, 802, 0074 805, 825, 845, 865, 867, 870, 878, 880, 0075 883, 885, 893, 895, 898, 900, 919, 927, 0076 929, 932, 934, 944, 946, 949, 951, 957, 0077 959, 962, 970, 972, 975, 977, 986, 994, 0078 996, 999, 1001, 1009, 1011, 1014, 1016, 1024, 0079 1026, 1029, 1031, 1034, 1059, 1084, 1089, 1095, 0080 1119, 1124, 1130, 1139, 1148, 1153, 1159, 1162, 0081 1171, 1179, 1184, 1190, 1193, 1201, 1225, 1230, 0082 1236, 1260, 1269, 1274, 1280, 1288, 1293, 1299, 0083 1302, 1310, 1335, 1340, 1346, 1371, 1380, 1385, 0084 1391, 1399, 1404, 1410, 1413, 1421, 1445, 1450, 0085 1456, 1481, 1506, 1531, 1536, 1542, 1550, 1555, 0086 1561, 1564, 1572, 1580, 1585, 1591, 1594, 1602, 0087 1626, 1634, 1639, 1645, 1648, 1656, 1666, 1671, 0088 1677, 1680, 1690, 1698, 1703, 1709, 1717, 1722, 0089 1728, 1731, 1739, 1748, 1757, 1762, 1768, 1771, 0090 1780, 1788, 1793, 1799, 1802, 1810, 1818, 1823, 0091 1829, 1832, 1840, 1846, 1854, 1856, 1859, 1861, 0092 1869, 1871, 1874, 1876, 1895, 1903, 1905, 1908, 0093 1910, 1920, 1922, 1925, 1927, 1933, 1935, 1938, 0094 1946, 1948, 1951, 1953, 1962, 1970, 1972, 1975, 0095 1977, 1985, 1987, 1990, 1992, 2000, 2005, 2011, 0096 2019, 2024, 2030, 2033, 2041, 2065, 2070, 2076, 0097 2100, 2109, 2114, 2120, 2128, 2133, 2139, 2142, 0098 2150, 2175, 2180, 2186, 2211, 2220, 2225, 2231, 0099 2239, 2244, 2250, 2253, 2261, 2285, 2290, 2296, 0100 2321, 2328, 2335, 2340, 2346, 2354, 2359, 2365, 0101 2368, 2376, 2384, 2389, 2395, 2398, 2406, 2430, 0102 2438, 2443, 2449, 2452, 2460, 2470, 2475, 2481, 0103 2484, 2494, 2502, 2507, 2513, 2521, 2526, 2532, 0104 2535, 2543, 2552, 2561, 2566, 2572, 2575, 2584, 0105 2592, 2597, 2603, 2606, 2614, 2622, 2627, 2633, 0106 2636, 2644, 2653, 2658, 2660, 2666, 2669, 2677, 0107 2679, 2682, 2684, 2692, 2695, 2699, 2707, 2712, 0108 2718, 2726, 2731, 2737, 2740, 2748, 2756, 2761, 0109 2767, 2775, 2780, 2786, 2789, 2797, 2806, 2811, 0110 2820, 2822, 2831, 2834, 2845, 2853, 2858, 2864, 0111 2872, 2877, 2883, 2886, 2894, 2905, 2910, 2916, 0112 2927, 2932, 2938, 2950, 2957, 2966, 2971, 2981, 0113 2987, 2993, 3003, 3013, 3018, 3024, 3034, 3039, 0114 3050, 3058, 3063, 3069, 3072, 3080, 3086, 3097, 0115 3108, 3113, 3119, 3130, 3135, 3141, 3152, 3157, 0116 3163, 3169, 3179, 3189, 3195, 3205, 3215, 3220, 0117 3226, 3235, 3237, 3246, 3249, 3260, 3271, 3276, 0118 3282, 3293, 3298, 3304, 3316, 3326, 3331, 3341, 0119 3347, 3356, 3362, 3372, 3382, 3387, 3393, 3399, 0120 3409, 3419, 3426, 3431, 3439, 3445, 3453, 3458, 0121 3464, 3467, 3475, 3484, 3489, 3499, 3505, 3511, 0122 3521, 3531, 3536, 3542, 3552, 3557, 3568, 3576, 0123 3581, 3587, 3590, 3598, 3604, 3615, 3623, 3628, 0124 3634, 3643, 3650, 3659, 3665, 3670, 3676, 3686, 0125 3691, 3702, 3708, 3711, 3719, 3725, 3735, 3745, 0126 3756, 3761, 3767, 3778, 3783, 3789, 3801, 3811, 0127 3817, 3822, 3828, 3834, 3844, 3854, 3859, 3862, 0128 3866, 3875, 3883, 3885, 3888, 3890, 3898, 3900, 0129 3903, 3905, 3924, 3926, 3929, 3948, 3955, 3957, 0130 3960, 3968, 3970, 3973, 3975, 3995, 3997, 4000, 0131 4020, 4027, 4029, 4032, 4040, 4042, 4045, 4047, 0132 4066, 4068, 4071, 4091, 4111, 4131, 4133, 4136, 0133 4144, 4146, 4149, 4151, 4159, 4161, 4164, 4166, 0134 4185, 4193, 4195, 4198, 4200, 4210, 4212, 4215, 0135 4217, 4223, 4225, 4228, 4236, 4238, 4241, 4243, 0136 4252, 4260, 4262, 4265, 4267, 4275, 4277, 4280, 0137 4282, 4290, 4292, 4295, 4297, 4300, 4325, 4350, 0138 4355, 4361, 4385, 4390, 4396, 4405, 4414, 4419, 0139 4425, 4428, 4437, 4445, 4450, 4456, 4459, 4467, 0140 4491, 4496, 4502, 4526, 4535, 4540, 4546, 4554, 0141 4559, 4565, 4568, 4576, 4601, 4606, 4612, 4637, 0142 4646, 4651, 4657, 4665, 4670, 4676, 4679, 4687, 0143 4711, 4716, 4722, 4747, 4772, 4797, 4802, 4808, 0144 4816, 4821, 4827, 4830, 4838, 4846, 4851, 4857, 0145 4860, 4868, 4892, 4900, 4905, 4911, 4914, 4922, 0146 4932, 4937, 4943, 4946, 4956, 4964, 4969, 4975, 0147 4983, 4988, 4994, 4997, 5005, 5014, 5023, 5028, 0148 5034, 5037, 5046, 5054, 5059, 5065, 5068, 5076, 0149 5084, 5089, 5095, 5098, 5106, 5112, 5125, 5126, 0150 5141, 5156, 5171, 5186, 5201, 5216, 5231, 5246, 0151 5261, 5276, 5291, 5306, 5321, 5336, 5351, 5366, 0152 5381, 5396, 5411, 5426, 5441, 5456, 5471, 5486, 0153 5501, 5516, 5531, 5546, 5561, 5576, 5591, 5606, 0154 5621, 5636, 5651, 5666, 5681, 5696, 5711, 5726, 0155 5741, 5756, 5771, 5786, 5801, 5816, 5831, 5846, 0156 5861, 5876, 5891, 5906, 5921, 5936, 5951, 5966, 0157 5981, 5996, 6011, 6026, 6041, 6056, 6071, 6086, 0158 6101, 6116, 6131, 6146, 6161, 6176, 6191, 6206, 0159 6221, 6236, 6251, 6266, 6281, 6296, 6311, 6326, 0160 6341, 6356, 6371, 6386, 6401, 6416, 6431, 6446, 0161 6461, 6476, 6491, 6506, 6521, 6536, 6551, 6566, 0162 6581, 6596, 6611, 6626, 6641, 6656, 6671, 6686, 0163 6701 0164 }; 0165 0166 static const int8_t _rfc5322_trans_keys[] = { 0167 10, 58, 33, 126, 13, 0, 127, 10, 0168 13, 0, 127, 58, 78, 110, 33, 126, 0169 45, 58, 33, 126, 58, 82, 114, 33, 0170 126, 58, 69, 101, 33, 126, 58, 80, 0171 112, 33, 126, 58, 76, 108, 33, 126, 0172 58, 89, 121, 33, 126, 45, 58, 33, 0173 126, 58, 84, 116, 33, 126, 58, 79, 0174 111, 33, 126, 9, 32, 58, 33, 126, 0175 9, 32, 58, 9, 10, 13, 32, 34, 0176 40, 45, 60, 61, 63, 33, 39, 42, 0177 43, 47, 57, 65, 90, 94, 126, 9, 0178 10, 13, 32, 34, 40, 45, 60, 61, 0179 63, 33, 39, 42, 43, 47, 57, 65, 0180 90, 94, 126, 9, 32, 9, 10, 32, 0181 9, 10, 13, 32, 34, 40, 60, 61, 0182 63, 33, 39, 42, 43, 45, 57, 65, 0183 90, 94, 126, 9, 32, 9, 10, 32, 0184 58, 73, 105, 33, 126, 58, 83, 115, 0185 33, 126, 58, 84, 116, 33, 126, 45, 0186 58, 33, 126, 58, 80, 112, 33, 126, 0187 58, 79, 111, 33, 126, 58, 83, 115, 0188 33, 126, 58, 84, 116, 33, 126, 58, 0189 33, 126, 9, 10, 13, 32, 40, 60, 0190 78, 110, 0, 127, 9, 13, 32, 0, 0191 127, 9, 10, 13, 32, 0, 127, 58, 0192 69, 101, 33, 126, 58, 83, 115, 33, 0193 126, 58, 83, 115, 33, 126, 58, 65, 0194 97, 33, 126, 58, 71, 103, 33, 126, 0195 58, 69, 101, 33, 126, 45, 58, 33, 0196 126, 58, 73, 105, 33, 126, 58, 68, 0197 100, 33, 126, 9, 32, 58, 33, 126, 0198 9, 32, 58, 9, 10, 13, 32, 40, 0199 60, 9, 32, 9, 10, 32, 10, 13, 0200 41, 92, 1, 39, 42, 127, 9, 32, 0201 9, 10, 32, 0, 127, 9, 10, 13, 0202 32, 34, 40, 45, 61, 63, 33, 39, 0203 42, 43, 47, 57, 65, 90, 94, 126, 0204 9, 32, 9, 10, 32, 9, 10, 13, 0205 32, 33, 40, 46, 61, 64, 35, 39, 0206 42, 43, 45, 57, 63, 90, 94, 126, 0207 9, 10, 13, 32, 40, 46, 64, 9, 0208 32, 9, 10, 32, 10, 13, 41, 92, 0209 1, 39, 42, 127, 9, 32, 9, 10, 0210 32, 0, 127, 9, 10, 13, 32, 33, 0211 40, 45, 61, 63, 91, 35, 39, 42, 0212 43, 47, 57, 65, 90, 94, 126, 9, 0213 32, 9, 10, 32, 9, 10, 13, 32, 0214 33, 40, 46, 62, 35, 39, 42, 43, 0215 45, 57, 61, 63, 65, 90, 94, 126, 0216 9, 10, 13, 32, 40, 46, 62, 9, 0217 32, 9, 10, 32, 10, 13, 41, 92, 0218 1, 39, 42, 127, 9, 32, 9, 10, 0219 32, 0, 127, 9, 10, 13, 32, 33, 0220 40, 45, 61, 63, 35, 39, 42, 43, 0221 47, 57, 65, 90, 94, 126, 9, 32, 0222 9, 10, 32, 9, 10, 13, 32, 33, 0223 40, 46, 62, 35, 39, 42, 43, 45, 0224 57, 61, 63, 65, 90, 94, 126, 9, 0225 10, 13, 32, 40, 9, 10, 13, 32, 0226 40, 9, 32, 9, 10, 32, 58, 69, 0227 101, 33, 126, 58, 70, 102, 33, 126, 0228 58, 69, 101, 33, 126, 58, 82, 114, 0229 33, 126, 58, 69, 101, 33, 126, 58, 0230 78, 110, 33, 126, 58, 67, 99, 33, 0231 126, 58, 69, 101, 33, 126, 58, 83, 0232 115, 33, 126, 9, 32, 58, 33, 126, 0233 9, 32, 58, 9, 10, 13, 32, 34, 0234 40, 45, 60, 61, 63, 33, 39, 42, 0235 43, 47, 57, 65, 90, 94, 126, 9, 0236 10, 13, 32, 34, 40, 45, 60, 61, 0237 63, 33, 39, 42, 43, 47, 57, 65, 0238 90, 94, 126, 9, 32, 9, 10, 32, 0239 9, 10, 13, 32, 34, 40, 60, 61, 0240 63, 33, 39, 42, 43, 45, 57, 65, 0241 90, 94, 126, 9, 32, 9, 10, 32, 0242 9, 10, 13, 32, 92, 1, 33, 35, 0243 127, 9, 10, 13, 32, 34, 92, 1, 0244 127, 9, 32, 9, 10, 32, 0, 127, 0245 10, 13, 41, 92, 1, 39, 42, 127, 0246 9, 32, 9, 10, 32, 0, 127, 9, 0247 10, 13, 32, 34, 40, 45, 61, 63, 0248 33, 39, 42, 43, 47, 57, 65, 90, 0249 94, 126, 9, 32, 9, 10, 32, 9, 0250 10, 13, 32, 33, 40, 46, 61, 64, 0251 35, 39, 42, 43, 45, 57, 63, 90, 0252 94, 126, 9, 10, 13, 32, 40, 46, 0253 64, 9, 32, 9, 10, 32, 10, 13, 0254 41, 92, 1, 39, 42, 127, 9, 32, 0255 9, 10, 32, -128, -1, 9, 10, 13, 0256 32, 33, 40, 45, 61, 63, 91, 35, 0257 39, 42, 43, 47, 57, 65, 90, 94, 0258 126, 9, 32, 9, 10, 32, 9, 10, 0259 13, 32, 33, 40, 46, 62, 35, 39, 0260 42, 43, 45, 57, 61, 63, 65, 90, 0261 94, 126, 9, 10, 13, 32, 40, 46, 0262 62, 9, 32, 9, 10, 32, 10, 13, 0263 41, 92, 1, 39, 42, 127, 9, 32, 0264 9, 10, 32, 0, 127, 9, 10, 13, 0265 32, 33, 40, 45, 61, 63, 35, 39, 0266 42, 43, 47, 57, 65, 90, 94, 126, 0267 9, 32, 9, 10, 32, 9, 10, 13, 0268 32, 33, 40, 46, 62, 35, 39, 42, 0269 43, 45, 57, 61, 63, 65, 90, 94, 0270 126, 9, 10, 13, 32, 34, 40, 45, 0271 60, 61, 63, 33, 39, 42, 43, 47, 0272 57, 65, 90, 94, 126, 9, 10, 13, 0273 32, 34, 40, 45, 60, 61, 63, 33, 0274 39, 42, 43, 47, 57, 65, 90, 94, 0275 126, 9, 32, 9, 10, 32, 10, 13, 0276 41, 92, 1, 39, 42, 127, 9, 32, 0277 9, 10, 32, 0, 127, 10, 13, 41, 0278 92, 1, 39, 42, 127, 9, 32, 9, 0279 10, 32, -128, -1, 9, 10, 13, 32, 0280 33, 40, 45, 61, 63, 35, 39, 42, 0281 43, 47, 57, 65, 90, 94, 126, 10, 0282 13, 41, 92, 1, 39, 42, 127, 9, 0283 32, 9, 10, 32, -128, -1, 9, 10, 0284 13, 32, 92, 93, 1, 90, 94, 127, 0285 9, 32, 9, 10, 32, 0, 127, 9, 0286 10, 13, 32, 40, 62, 9, 32, 9, 0287 10, 32, 10, 13, 41, 92, 1, 39, 0288 42, 127, 9, 32, 9, 10, 32, 0, 0289 127, 9, 10, 13, 32, 92, 1, 33, 0290 35, 127, 9, 10, 13, 32, 34, 92, 0291 1, 127, 9, 32, 9, 10, 32, 0, 0292 127, 10, 13, 41, 92, 1, 39, 42, 0293 127, 9, 32, 9, 10, 32, 0, 127, 0294 10, 13, 41, 92, 1, 39, 42, 127, 0295 9, 32, 9, 10, 32, -128, -1, 9, 0296 10, 32, 9, 10, 13, 32, 34, 40, 0297 41, 44, 46, 60, 61, 63, 127, 0, 0298 31, 33, 57, 58, 64, 65, 90, 91, 0299 93, 94, 126, 9, 10, 13, 32, 34, 0300 40, 41, 44, 46, 60, 61, 63, 127, 0301 0, 31, 33, 57, 58, 64, 65, 90, 0302 91, 93, 94, 126, 9, 13, 32, 0, 0303 127, 9, 10, 13, 32, 0, 127, 9, 0304 10, 13, 32, 34, 40, 41, 44, 60, 0305 61, 63, 127, 0, 31, 33, 57, 58, 0306 64, 65, 90, 91, 93, 94, 126, 9, 0307 13, 32, 0, 127, 9, 10, 13, 32, 0308 0, 127, 0, 9, 10, 13, 32, 34, 0309 92, 1, 127, 0, 9, 10, 13, 32, 0310 34, 92, 1, 127, 9, 13, 32, 0, 0311 127, 9, 10, 13, 32, 0, 127, 13, 0312 0, 127, 0, 9, 10, 13, 32, 34, 0313 92, 1, 127, 0, 10, 13, 40, 41, 0314 92, 1, 127, 9, 13, 32, 0, 127, 0315 9, 10, 13, 32, 0, 127, 13, 0, 0316 127, 0, 10, 13, 40, 41, 92, 1, 0317 127, 9, 10, 13, 32, 34, 40, 41, 0318 44, 46, 61, 63, 127, 0, 31, 33, 0319 57, 58, 64, 65, 90, 91, 93, 94, 0320 126, 9, 13, 32, 0, 127, 9, 10, 0321 13, 32, 0, 127, 9, 10, 13, 32, 0322 33, 40, 41, 44, 46, 61, 64, 127, 0323 0, 34, 35, 57, 58, 62, 63, 90, 0324 91, 93, 94, 126, 9, 10, 13, 32, 0325 40, 46, 64, 0, 127, 9, 13, 32, 0326 0, 127, 9, 10, 13, 32, 0, 127, 0327 0, 10, 13, 40, 41, 92, 1, 127, 0328 9, 13, 32, 0, 127, 9, 10, 13, 0329 32, 0, 127, 13, 0, 127, 0, 10, 0330 13, 40, 41, 92, 1, 127, 9, 10, 0331 13, 32, 33, 40, 41, 44, 46, 61, 0332 63, 91, 127, 0, 34, 35, 57, 58, 0333 64, 65, 90, 92, 93, 94, 126, 9, 0334 13, 32, 0, 127, 9, 10, 13, 32, 0335 0, 127, 9, 10, 13, 32, 33, 40, 0336 41, 44, 46, 61, 62, 63, 127, 0, 0337 34, 35, 57, 58, 64, 65, 90, 91, 0338 93, 94, 126, 9, 10, 13, 32, 40, 0339 46, 62, 0, 127, 9, 13, 32, 0, 0340 127, 9, 10, 13, 32, 0, 127, 0, 0341 10, 13, 40, 41, 92, 1, 127, 9, 0342 13, 32, 0, 127, 9, 10, 13, 32, 0343 0, 127, 13, 0, 127, 0, 10, 13, 0344 40, 41, 92, 1, 127, 9, 10, 13, 0345 32, 33, 40, 41, 44, 46, 61, 63, 0346 127, 0, 34, 35, 57, 58, 64, 65, 0347 90, 91, 93, 94, 126, 9, 13, 32, 0348 0, 127, 9, 10, 13, 32, 0, 127, 0349 9, 10, 13, 32, 33, 40, 41, 44, 0350 46, 61, 62, 63, 127, 0, 34, 35, 0351 57, 58, 64, 65, 90, 91, 93, 94, 0352 126, 9, 10, 13, 32, 34, 40, 41, 0353 44, 46, 60, 61, 63, 127, 0, 31, 0354 33, 57, 58, 64, 65, 90, 91, 93, 0355 94, 126, 9, 10, 13, 32, 34, 40, 0356 41, 44, 46, 60, 61, 63, 127, 0, 0357 31, 33, 57, 58, 64, 65, 90, 91, 0358 93, 94, 126, 9, 13, 32, 0, 127, 0359 9, 10, 13, 32, 0, 127, 0, 10, 0360 13, 40, 41, 92, 1, 127, 9, 13, 0361 32, 0, 127, 9, 10, 13, 32, 0, 0362 127, 13, 0, 127, 0, 10, 13, 40, 0363 41, 92, 1, 127, 0, 10, 13, 40, 0364 41, 92, 1, 127, 9, 13, 32, 0, 0365 127, 9, 10, 13, 32, 0, 127, 13, 0366 0, 127, 0, 10, 13, 40, 41, 92, 0367 1, 127, 9, 10, 13, 32, 33, 40, 0368 41, 44, 46, 61, 63, 127, 0, 34, 0369 35, 57, 58, 64, 65, 90, 91, 93, 0370 94, 126, 0, 10, 13, 40, 41, 92, 0371 1, 127, 9, 13, 32, 0, 127, 9, 0372 10, 13, 32, 0, 127, 13, 0, 127, 0373 0, 10, 13, 40, 41, 92, 1, 127, 0374 0, 9, 10, 13, 32, 91, 92, 93, 0375 1, 127, 9, 13, 32, 0, 127, 9, 0376 10, 13, 32, 0, 127, 13, 0, 127, 0377 0, 9, 10, 13, 32, 91, 92, 93, 0378 1, 127, 9, 10, 13, 32, 40, 62, 0379 0, 127, 9, 13, 32, 0, 127, 9, 0380 10, 13, 32, 0, 127, 0, 10, 13, 0381 40, 41, 92, 1, 127, 9, 13, 32, 0382 0, 127, 9, 10, 13, 32, 0, 127, 0383 13, 0, 127, 0, 10, 13, 40, 41, 0384 92, 1, 127, 0, 9, 10, 13, 32, 0385 34, 92, 1, 127, 0, 9, 10, 13, 0386 32, 34, 92, 1, 127, 9, 13, 32, 0387 0, 127, 9, 10, 13, 32, 0, 127, 0388 13, 0, 127, 0, 9, 10, 13, 32, 0389 34, 92, 1, 127, 0, 10, 13, 40, 0390 41, 92, 1, 127, 9, 13, 32, 0, 0391 127, 9, 10, 13, 32, 0, 127, 13, 0392 0, 127, 0, 10, 13, 40, 41, 92, 0393 1, 127, 0, 10, 13, 40, 41, 92, 0394 1, 127, 9, 13, 32, 0, 127, 9, 0395 10, 13, 32, 0, 127, 13, 0, 127, 0396 0, 10, 13, 40, 41, 92, 1, 127, 0397 9, 10, 13, 32, 0, 127, 10, 13, 0398 41, 92, 1, 39, 42, 127, 9, 32, 0399 9, 10, 32, 0, 127, 10, 13, 41, 0400 92, 1, 39, 42, 127, 9, 32, 9, 0401 10, 32, 0, 127, 9, 10, 13, 32, 0402 33, 40, 45, 61, 63, 35, 39, 42, 0403 43, 47, 57, 65, 90, 94, 126, 10, 0404 13, 41, 92, 1, 39, 42, 127, 9, 0405 32, 9, 10, 32, 0, 127, 9, 10, 0406 13, 32, 92, 93, 1, 90, 94, 127, 0407 9, 32, 9, 10, 32, 0, 127, 9, 0408 10, 13, 32, 40, 62, 9, 32, 9, 0409 10, 32, 10, 13, 41, 92, 1, 39, 0410 42, 127, 9, 32, 9, 10, 32, -128, 0411 -1, 9, 10, 13, 32, 92, 1, 33, 0412 35, 127, 9, 10, 13, 32, 34, 92, 0413 1, 127, 9, 32, 9, 10, 32, 0, 0414 127, 10, 13, 41, 92, 1, 39, 42, 0415 127, 9, 32, 9, 10, 32, 0, 127, 0416 9, 10, 13, 32, 40, 60, 0, 127, 0417 9, 13, 32, 0, 127, 9, 10, 13, 0418 32, 0, 127, 0, 10, 13, 40, 41, 0419 92, 1, 127, 9, 13, 32, 0, 127, 0420 9, 10, 13, 32, 0, 127, 13, 0, 0421 127, 0, 10, 13, 40, 41, 92, 1, 0422 127, 9, 10, 13, 32, 34, 40, 41, 0423 44, 46, 61, 63, 127, 0, 31, 33, 0424 57, 58, 64, 65, 90, 91, 93, 94, 0425 126, 9, 13, 32, 0, 127, 9, 10, 0426 13, 32, 0, 127, 9, 10, 13, 32, 0427 33, 40, 41, 44, 46, 61, 64, 127, 0428 0, 34, 35, 57, 58, 62, 63, 90, 0429 91, 93, 94, 126, 9, 10, 13, 32, 0430 40, 46, 64, 0, 127, 9, 13, 32, 0431 0, 127, 9, 10, 13, 32, 0, 127, 0432 0, 10, 13, 40, 41, 92, 1, 127, 0433 9, 13, 32, 0, 127, 9, 10, 13, 0434 32, 0, 127, 13, 0, 127, 0, 10, 0435 13, 40, 41, 92, 1, 127, 9, 10, 0436 13, 32, 33, 40, 41, 44, 46, 61, 0437 63, 91, 127, 0, 34, 35, 57, 58, 0438 64, 65, 90, 92, 93, 94, 126, 9, 0439 13, 32, 0, 127, 9, 10, 13, 32, 0440 0, 127, 9, 10, 13, 32, 33, 40, 0441 41, 44, 46, 61, 62, 63, 127, 0, 0442 34, 35, 57, 58, 64, 65, 90, 91, 0443 93, 94, 126, 9, 10, 13, 32, 40, 0444 46, 62, 0, 127, 9, 13, 32, 0, 0445 127, 9, 10, 13, 32, 0, 127, 0, 0446 10, 13, 40, 41, 92, 1, 127, 9, 0447 13, 32, 0, 127, 9, 10, 13, 32, 0448 0, 127, 13, 0, 127, 0, 10, 13, 0449 40, 41, 92, 1, 127, 9, 10, 13, 0450 32, 33, 40, 41, 44, 46, 61, 63, 0451 127, 0, 34, 35, 57, 58, 64, 65, 0452 90, 91, 93, 94, 126, 9, 13, 32, 0453 0, 127, 9, 10, 13, 32, 0, 127, 0454 9, 10, 13, 32, 33, 40, 41, 44, 0455 46, 61, 62, 63, 127, 0, 34, 35, 0456 57, 58, 64, 65, 90, 91, 93, 94, 0457 126, 9, 10, 13, 32, 40, 0, 127, 0458 9, 10, 13, 32, 40, 0, 127, 9, 0459 13, 32, 0, 127, 9, 10, 13, 32, 0460 0, 127, 0, 10, 13, 40, 41, 92, 0461 1, 127, 9, 13, 32, 0, 127, 9, 0462 10, 13, 32, 0, 127, 13, 0, 127, 0463 0, 10, 13, 40, 41, 92, 1, 127, 0464 0, 10, 13, 40, 41, 92, 1, 127, 0465 9, 13, 32, 0, 127, 9, 10, 13, 0466 32, 0, 127, 13, 0, 127, 0, 10, 0467 13, 40, 41, 92, 1, 127, 9, 10, 0468 13, 32, 33, 40, 41, 44, 46, 61, 0469 63, 127, 0, 34, 35, 57, 58, 64, 0470 65, 90, 91, 93, 94, 126, 0, 10, 0471 13, 40, 41, 92, 1, 127, 9, 13, 0472 32, 0, 127, 9, 10, 13, 32, 0, 0473 127, 13, 0, 127, 0, 10, 13, 40, 0474 41, 92, 1, 127, 0, 9, 10, 13, 0475 32, 91, 92, 93, 1, 127, 9, 13, 0476 32, 0, 127, 9, 10, 13, 32, 0, 0477 127, 13, 0, 127, 0, 9, 10, 13, 0478 32, 91, 92, 93, 1, 127, 9, 10, 0479 13, 32, 40, 62, 0, 127, 9, 13, 0480 32, 0, 127, 9, 10, 13, 32, 0, 0481 127, 0, 10, 13, 40, 41, 92, 1, 0482 127, 9, 13, 32, 0, 127, 9, 10, 0483 13, 32, 0, 127, 13, 0, 127, 0, 0484 10, 13, 40, 41, 92, 1, 127, 0, 0485 9, 10, 13, 32, 34, 92, 1, 127, 0486 0, 9, 10, 13, 32, 34, 92, 1, 0487 127, 9, 13, 32, 0, 127, 9, 10, 0488 13, 32, 0, 127, 13, 0, 127, 0, 0489 9, 10, 13, 32, 34, 92, 1, 127, 0490 0, 10, 13, 40, 41, 92, 1, 127, 0491 9, 13, 32, 0, 127, 9, 10, 13, 0492 32, 0, 127, 13, 0, 127, 0, 10, 0493 13, 40, 41, 92, 1, 127, 0, 10, 0494 13, 40, 41, 92, 1, 127, 9, 13, 0495 32, 0, 127, 9, 10, 13, 32, 0, 0496 127, 13, 0, 127, 0, 10, 13, 40, 0497 41, 92, 1, 127, 9, 10, 13, 32, 0498 40, 60, 62, 0, 127, 10, 13, 40, 0499 60, 62, 9, 32, 9, 10, 13, 32, 0500 40, 62, 9, 10, 32, 10, 13, 41, 0501 92, 1, 39, 42, 127, 9, 32, 9, 0502 10, 32, 0, 127, 9, 10, 13, 32, 0503 40, 44, 0, 127, 13, 0, 127, 10, 0504 13, 0, 127, 9, 10, 13, 32, 40, 0505 44, 0, 127, 9, 13, 32, 0, 127, 0506 9, 10, 13, 32, 0, 127, 0, 10, 0507 13, 40, 41, 92, 1, 127, 9, 13, 0508 32, 0, 127, 9, 10, 13, 32, 0, 0509 127, 13, 0, 127, 0, 10, 13, 40, 0510 41, 92, 1, 127, 9, 10, 13, 32, 0511 40, 60, 0, 127, 9, 13, 32, 0, 0512 127, 9, 10, 13, 32, 0, 127, 0, 0513 10, 13, 40, 41, 92, 1, 127, 9, 0514 13, 32, 0, 127, 9, 10, 13, 32, 0515 0, 127, 13, 0, 127, 0, 10, 13, 0516 40, 41, 92, 1, 127, 9, 10, 13, 0517 32, 40, 60, 62, 0, 127, 10, 13, 0518 40, 60, 62, 10, 13, 60, 62, 92, 0519 1, 40, 42, 127, 9, 32, 9, 10, 0520 13, 32, 41, 62, 92, 1, 127, 9, 0521 10, 32, 0, 9, 10, 13, 32, 40, 0522 41, 44, 92, 1, 127, 0, 10, 13, 0523 40, 41, 92, 1, 127, 9, 13, 32, 0524 0, 127, 9, 10, 13, 32, 0, 127, 0525 9, 10, 13, 32, 40, 62, 0, 127, 0526 9, 13, 32, 0, 127, 9, 10, 13, 0527 32, 0, 127, 13, 0, 127, 0, 10, 0528 13, 40, 41, 92, 1, 127, 0, 9, 0529 10, 13, 32, 40, 41, 44, 92, 1, 0530 127, 9, 13, 32, 0, 127, 9, 10, 0531 13, 32, 0, 127, 0, 9, 10, 13, 0532 32, 40, 41, 60, 92, 1, 127, 9, 0533 13, 32, 0, 127, 9, 10, 13, 32, 0534 0, 127, 0, 9, 10, 13, 32, 40, 0535 41, 60, 62, 92, 1, 127, 10, 13, 0536 40, 60, 62, 0, 127, 0, 10, 13, 0537 41, 60, 62, 92, 1, 127, 9, 13, 0538 32, 0, 127, 0, 9, 10, 13, 32, 0539 41, 62, 92, 1, 127, 9, 10, 13, 0540 32, 0, 127, 10, 13, 60, 62, 0, 0541 127, 0, 9, 10, 13, 32, 40, 41, 0542 92, 1, 127, 0, 9, 10, 13, 32, 0543 40, 41, 92, 1, 127, 9, 13, 32, 0544 0, 127, 9, 10, 13, 32, 0, 127, 0545 0, 10, 13, 40, 41, 60, 62, 92, 0546 1, 127, 9, 13, 32, 0, 127, 0, 0547 9, 10, 13, 32, 40, 41, 62, 92, 0548 1, 127, 0, 10, 13, 40, 41, 92, 0549 1, 127, 9, 13, 32, 0, 127, 9, 0550 10, 13, 32, 0, 127, 13, 0, 127, 0551 0, 10, 13, 40, 41, 92, 1, 127, 0552 9, 10, 13, 32, 0, 127, 0, 9, 0553 10, 13, 32, 40, 41, 44, 92, 1, 0554 127, 0, 9, 10, 13, 32, 40, 41, 0555 44, 92, 1, 127, 9, 13, 32, 0, 0556 127, 9, 10, 13, 32, 0, 127, 0, 0557 9, 10, 13, 32, 40, 41, 60, 92, 0558 1, 127, 9, 13, 32, 0, 127, 9, 0559 10, 13, 32, 0, 127, 0, 9, 10, 0560 13, 32, 41, 60, 62, 92, 1, 127, 0561 9, 13, 32, 0, 127, 9, 10, 13, 0562 32, 0, 127, 10, 13, 60, 62, 0, 0563 127, 0, 9, 10, 13, 32, 40, 41, 0564 92, 1, 127, 0, 9, 10, 13, 32, 0565 40, 41, 92, 1, 127, 10, 13, 60, 0566 62, 0, 127, 9, 10, 13, 32, 41, 0567 92, 1, 39, 42, 127, 9, 10, 13, 0568 32, 41, 92, 1, 39, 42, 127, 9, 0569 13, 32, 0, 127, 9, 10, 13, 32, 0570 0, 127, 10, 13, 60, 62, 92, 1, 0571 40, 42, 127, 9, 32, 9, 10, 13, 0572 32, 41, 62, 92, 1, 127, 9, 10, 0573 32, 0, 9, 10, 13, 32, 40, 41, 0574 44, 92, 1, 127, 0, 9, 10, 13, 0575 32, 40, 41, 44, 92, 1, 127, 9, 0576 13, 32, 0, 127, 9, 10, 13, 32, 0577 0, 127, 0, 9, 10, 13, 32, 40, 0578 41, 60, 92, 1, 127, 9, 13, 32, 0579 0, 127, 9, 10, 13, 32, 0, 127, 0580 0, 9, 10, 13, 32, 40, 41, 60, 0581 62, 92, 1, 127, 0, 10, 13, 40, 0582 41, 60, 62, 92, 1, 127, 9, 13, 0583 32, 0, 127, 0, 9, 10, 13, 32, 0584 41, 62, 92, 1, 127, 9, 10, 13, 0585 32, 0, 127, 9, 10, 13, 32, 40, 0586 60, 62, 0, 127, 10, 13, 60, 62, 0587 0, 127, 0, 9, 10, 13, 32, 40, 0588 41, 92, 1, 127, 0, 9, 10, 13, 0589 32, 40, 41, 92, 1, 127, 9, 13, 0590 32, 0, 127, 9, 10, 13, 32, 0, 0591 127, 10, 13, 60, 62, 0, 127, 9, 0592 10, 13, 32, 41, 92, 1, 39, 42, 0593 127, 9, 10, 13, 32, 41, 92, 1, 0594 39, 42, 127, 10, 13, 40, 60, 62, 0595 0, 127, 9, 13, 32, 0, 127, 9, 0596 10, 13, 32, 40, 62, 0, 127, 9, 0597 10, 13, 32, 0, 127, 0, 10, 13, 0598 40, 41, 92, 1, 127, 9, 13, 32, 0599 0, 127, 9, 10, 13, 32, 0, 127, 0600 13, 0, 127, 0, 10, 13, 40, 41, 0601 92, 1, 127, 0, 10, 13, 41, 60, 0602 62, 92, 1, 127, 9, 13, 32, 0, 0603 127, 0, 9, 10, 13, 32, 41, 62, 0604 92, 1, 127, 9, 10, 13, 32, 0, 0605 127, 10, 13, 60, 62, 0, 127, 0, 0606 9, 10, 13, 32, 40, 41, 92, 1, 0607 127, 0, 9, 10, 13, 32, 40, 41, 0608 92, 1, 127, 9, 13, 32, 0, 127, 0609 9, 10, 13, 32, 0, 127, 0, 10, 0610 13, 40, 41, 60, 62, 92, 1, 127, 0611 9, 13, 32, 0, 127, 0, 9, 10, 0612 13, 32, 40, 41, 62, 92, 1, 127, 0613 0, 10, 13, 40, 41, 92, 1, 127, 0614 9, 13, 32, 0, 127, 9, 10, 13, 0615 32, 0, 127, 13, 0, 127, 0, 10, 0616 13, 40, 41, 92, 1, 127, 9, 10, 0617 13, 32, 0, 127, 0, 9, 10, 13, 0618 32, 40, 41, 44, 92, 1, 127, 0, 0619 10, 13, 40, 41, 92, 1, 127, 9, 0620 13, 32, 0, 127, 9, 10, 13, 32, 0621 0, 127, 9, 10, 13, 32, 40, 60, 0622 62, 0, 127, 10, 13, 40, 60, 62, 0623 0, 127, 0, 10, 13, 41, 60, 62, 0624 92, 1, 127, 10, 13, 60, 62, 0, 0625 127, 9, 13, 32, 0, 127, 9, 10, 0626 13, 32, 0, 127, 0, 10, 13, 40, 0627 41, 60, 62, 92, 1, 127, 9, 13, 0628 32, 0, 127, 0, 9, 10, 13, 32, 0629 40, 41, 62, 92, 1, 127, 9, 10, 0630 13, 32, 0, 127, 13, 0, 127, 0, 0631 10, 13, 40, 41, 92, 1, 127, 10, 0632 13, 60, 62, 0, 127, 0, 9, 10, 0633 13, 32, 40, 41, 92, 1, 127, 0, 0634 9, 10, 13, 32, 40, 41, 92, 1, 0635 127, 0, 9, 10, 13, 32, 40, 41, 0636 44, 92, 1, 127, 9, 13, 32, 0, 0637 127, 9, 10, 13, 32, 0, 127, 0, 0638 9, 10, 13, 32, 40, 41, 60, 92, 0639 1, 127, 9, 13, 32, 0, 127, 9, 0640 10, 13, 32, 0, 127, 0, 9, 10, 0641 13, 32, 40, 41, 60, 62, 92, 1, 0642 127, 0, 10, 13, 40, 41, 60, 62, 0643 92, 1, 127, 10, 13, 60, 62, 0, 0644 127, 9, 13, 32, 0, 127, 9, 10, 0645 13, 32, 0, 127, 10, 13, 60, 62, 0646 0, 127, 0, 9, 10, 13, 32, 40, 0647 41, 92, 1, 127, 0, 9, 10, 13, 0648 32, 40, 41, 92, 1, 127, 13, 79, 0649 111, 0, 127, 13, 0, 127, 10, 13, 0650 0, 127, 9, 10, 13, 32, 92, 1, 0651 33, 35, 127, 9, 10, 13, 32, 34, 0652 92, 1, 127, 9, 32, 9, 10, 32, 0653 0, 127, 10, 13, 41, 92, 1, 39, 0654 42, 127, 9, 32, 9, 10, 32, 0, 0655 127, 9, 10, 13, 32, 34, 40, 45, 0656 61, 63, 33, 39, 42, 43, 47, 57, 0657 65, 90, 94, 126, 9, 32, 9, 10, 0658 32, 9, 10, 13, 32, 33, 40, 46, 0659 61, 64, 35, 39, 42, 43, 45, 57, 0660 63, 90, 94, 126, 9, 10, 13, 32, 0661 40, 46, 64, 9, 32, 9, 10, 32, 0662 10, 13, 41, 92, 1, 39, 42, 127, 0663 9, 32, 9, 10, 32, 0, 127, 9, 0664 10, 13, 32, 33, 40, 45, 61, 63, 0665 91, 35, 39, 42, 43, 47, 57, 65, 0666 90, 94, 126, 9, 32, 9, 10, 32, 0667 9, 10, 13, 32, 33, 40, 46, 62, 0668 35, 39, 42, 43, 45, 57, 61, 63, 0669 65, 90, 94, 126, 9, 10, 13, 32, 0670 40, 46, 62, 9, 32, 9, 10, 32, 0671 10, 13, 41, 92, 1, 39, 42, 127, 0672 9, 32, 9, 10, 32, 0, 127, 9, 0673 10, 13, 32, 33, 40, 45, 61, 63, 0674 35, 39, 42, 43, 47, 57, 65, 90, 0675 94, 126, 9, 32, 9, 10, 32, 9, 0676 10, 13, 32, 33, 40, 46, 62, 35, 0677 39, 42, 43, 45, 57, 61, 63, 65, 0678 90, 94, 126, 9, 10, 13, 32, 34, 0679 40, 45, 60, 61, 63, 33, 39, 42, 0680 43, 47, 57, 65, 90, 94, 126, 9, 0681 10, 13, 32, 34, 40, 45, 60, 61, 0682 63, 33, 39, 42, 43, 47, 57, 65, 0683 90, 94, 126, 9, 32, 9, 10, 32, 0684 10, 13, 41, 92, 1, 39, 42, 127, 0685 9, 32, 9, 10, 32, 0, 127, 10, 0686 13, 41, 92, 1, 39, 42, 127, 9, 0687 32, 9, 10, 32, 0, 127, 9, 10, 0688 13, 32, 33, 40, 45, 61, 63, 35, 0689 39, 42, 43, 47, 57, 65, 90, 94, 0690 126, 10, 13, 41, 92, 1, 39, 42, 0691 127, 9, 32, 9, 10, 32, -128, -1, 0692 9, 10, 13, 32, 92, 93, 1, 90, 0693 94, 127, 9, 32, 9, 10, 32, 0, 0694 127, 9, 10, 13, 32, 40, 62, 9, 0695 32, 9, 10, 32, 10, 13, 41, 92, 0696 1, 39, 42, 127, 9, 32, 9, 10, 0697 32, -128, -1, 9, 10, 13, 32, 92, 0698 1, 33, 35, 127, 9, 10, 13, 32, 0699 34, 92, 1, 127, 9, 32, 9, 10, 0700 32, 0, 127, 10, 13, 41, 92, 1, 0701 39, 42, 127, 9, 32, 9, 10, 32, 0702 0, 127, 10, 13, 41, 92, 1, 39, 0703 42, 127, 9, 32, 9, 10, 32, 0, 0704 127, 9, 10, 32, 9, 10, 13, 32, 0705 34, 40, 41, 44, 46, 60, 61, 63, 0706 127, 0, 31, 33, 57, 58, 64, 65, 0707 90, 91, 93, 94, 126, 9, 10, 13, 0708 32, 34, 40, 41, 44, 46, 60, 61, 0709 63, 127, 0, 31, 33, 57, 58, 64, 0710 65, 90, 91, 93, 94, 126, 9, 13, 0711 32, 0, 127, 9, 10, 13, 32, 0, 0712 127, 9, 10, 13, 32, 34, 40, 41, 0713 44, 60, 61, 63, 127, 0, 31, 33, 0714 57, 58, 64, 65, 90, 91, 93, 94, 0715 126, 9, 13, 32, 0, 127, 9, 10, 0716 13, 32, 0, 127, 0, 9, 10, 13, 0717 32, 34, 92, 1, 127, 0, 9, 10, 0718 13, 32, 34, 92, 1, 127, 9, 13, 0719 32, 0, 127, 9, 10, 13, 32, 0, 0720 127, 13, 0, 127, 0, 9, 10, 13, 0721 32, 34, 92, 1, 127, 0, 10, 13, 0722 40, 41, 92, 1, 127, 9, 13, 32, 0723 0, 127, 9, 10, 13, 32, 0, 127, 0724 13, 0, 127, 0, 10, 13, 40, 41, 0725 92, 1, 127, 9, 10, 13, 32, 34, 0726 40, 41, 44, 46, 61, 63, 127, 0, 0727 31, 33, 57, 58, 64, 65, 90, 91, 0728 93, 94, 126, 9, 13, 32, 0, 127, 0729 9, 10, 13, 32, 0, 127, 9, 10, 0730 13, 32, 33, 40, 41, 44, 46, 61, 0731 64, 127, 0, 34, 35, 57, 58, 62, 0732 63, 90, 91, 93, 94, 126, 9, 10, 0733 13, 32, 40, 46, 64, 0, 127, 9, 0734 13, 32, 0, 127, 9, 10, 13, 32, 0735 0, 127, 0, 10, 13, 40, 41, 92, 0736 1, 127, 9, 13, 32, 0, 127, 9, 0737 10, 13, 32, 0, 127, 13, 0, 127, 0738 0, 10, 13, 40, 41, 92, 1, 127, 0739 9, 10, 13, 32, 33, 40, 41, 44, 0740 46, 61, 63, 91, 127, 0, 34, 35, 0741 57, 58, 64, 65, 90, 92, 93, 94, 0742 126, 9, 13, 32, 0, 127, 9, 10, 0743 13, 32, 0, 127, 9, 10, 13, 32, 0744 33, 40, 41, 44, 46, 61, 62, 63, 0745 127, 0, 34, 35, 57, 58, 64, 65, 0746 90, 91, 93, 94, 126, 9, 10, 13, 0747 32, 40, 46, 62, 0, 127, 9, 13, 0748 32, 0, 127, 9, 10, 13, 32, 0, 0749 127, 0, 10, 13, 40, 41, 92, 1, 0750 127, 9, 13, 32, 0, 127, 9, 10, 0751 13, 32, 0, 127, 13, 0, 127, 0, 0752 10, 13, 40, 41, 92, 1, 127, 9, 0753 10, 13, 32, 33, 40, 41, 44, 46, 0754 61, 63, 127, 0, 34, 35, 57, 58, 0755 64, 65, 90, 91, 93, 94, 126, 9, 0756 13, 32, 0, 127, 9, 10, 13, 32, 0757 0, 127, 9, 10, 13, 32, 33, 40, 0758 41, 44, 46, 61, 62, 63, 127, 0, 0759 34, 35, 57, 58, 64, 65, 90, 91, 0760 93, 94, 126, 9, 10, 13, 32, 34, 0761 40, 41, 44, 46, 60, 61, 63, 127, 0762 0, 31, 33, 57, 58, 64, 65, 90, 0763 91, 93, 94, 126, 9, 10, 13, 32, 0764 34, 40, 41, 44, 46, 60, 61, 63, 0765 127, 0, 31, 33, 57, 58, 64, 65, 0766 90, 91, 93, 94, 126, 9, 13, 32, 0767 0, 127, 9, 10, 13, 32, 0, 127, 0768 0, 10, 13, 40, 41, 92, 1, 127, 0769 9, 13, 32, 0, 127, 9, 10, 13, 0770 32, 0, 127, 13, 0, 127, 0, 10, 0771 13, 40, 41, 92, 1, 127, 0, 10, 0772 13, 40, 41, 92, 1, 127, 9, 13, 0773 32, 0, 127, 9, 10, 13, 32, 0, 0774 127, 13, 0, 127, 0, 10, 13, 40, 0775 41, 92, 1, 127, 9, 10, 13, 32, 0776 33, 40, 41, 44, 46, 61, 63, 127, 0777 0, 34, 35, 57, 58, 64, 65, 90, 0778 91, 93, 94, 126, 0, 10, 13, 40, 0779 41, 92, 1, 127, 9, 13, 32, 0, 0780 127, 9, 10, 13, 32, 0, 127, 13, 0781 0, 127, 0, 10, 13, 40, 41, 92, 0782 1, 127, 0, 9, 10, 13, 32, 91, 0783 92, 93, 1, 127, 9, 13, 32, 0, 0784 127, 9, 10, 13, 32, 0, 127, 13, 0785 0, 127, 0, 9, 10, 13, 32, 91, 0786 92, 93, 1, 127, 9, 10, 13, 32, 0787 40, 62, 0, 127, 9, 13, 32, 0, 0788 127, 9, 10, 13, 32, 0, 127, 0, 0789 10, 13, 40, 41, 92, 1, 127, 9, 0790 13, 32, 0, 127, 9, 10, 13, 32, 0791 0, 127, 13, 0, 127, 0, 10, 13, 0792 40, 41, 92, 1, 127, 0, 9, 10, 0793 13, 32, 34, 92, 1, 127, 0, 9, 0794 10, 13, 32, 34, 92, 1, 127, 9, 0795 13, 32, 0, 127, 9, 10, 13, 32, 0796 0, 127, 13, 0, 127, 0, 9, 10, 0797 13, 32, 34, 92, 1, 127, 0, 10, 0798 13, 40, 41, 92, 1, 127, 9, 13, 0799 32, 0, 127, 9, 10, 13, 32, 0, 0800 127, 13, 0, 127, 0, 10, 13, 40, 0801 41, 92, 1, 127, 0, 10, 13, 40, 0802 41, 92, 1, 127, 9, 13, 32, 0, 0803 127, 9, 10, 13, 32, 0, 127, 13, 0804 0, 127, 0, 10, 13, 40, 41, 92, 0805 1, 127, 9, 10, 13, 32, 0, 127, 0806 13, 73, 76, 77, 82, 105, 108, 109, 0807 114, 33, 57, 59, 126, 13, 9, 13, 0808 32, 73, 76, 77, 82, 105, 108, 109, 0809 114, 33, 57, 59, 126, 9, 13, 32, 0810 73, 76, 77, 82, 105, 108, 109, 114, 0811 33, 57, 59, 126, 9, 13, 32, 73, 0812 76, 77, 82, 105, 108, 109, 114, 33, 0813 57, 59, 126, 9, 13, 32, 73, 76, 0814 77, 82, 105, 108, 109, 114, 33, 57, 0815 59, 126, 9, 13, 32, 73, 76, 77, 0816 82, 105, 108, 109, 114, 33, 57, 59, 0817 126, 9, 13, 32, 73, 76, 77, 82, 0818 105, 108, 109, 114, 33, 57, 59, 126, 0819 9, 13, 32, 73, 76, 77, 82, 105, 0820 108, 109, 114, 33, 57, 59, 126, 9, 0821 13, 32, 73, 76, 77, 82, 105, 108, 0822 109, 114, 33, 57, 59, 126, 9, 13, 0823 32, 73, 76, 77, 82, 105, 108, 109, 0824 114, 33, 57, 59, 126, 9, 13, 32, 0825 73, 76, 77, 82, 105, 108, 109, 114, 0826 33, 57, 59, 126, 9, 13, 32, 73, 0827 76, 77, 82, 105, 108, 109, 114, 33, 0828 57, 59, 126, 9, 13, 32, 73, 76, 0829 77, 82, 105, 108, 109, 114, 33, 57, 0830 59, 126, 9, 13, 32, 73, 76, 77, 0831 82, 105, 108, 109, 114, 33, 57, 59, 0832 126, 9, 13, 32, 73, 76, 77, 82, 0833 105, 108, 109, 114, 33, 57, 59, 126, 0834 9, 13, 32, 73, 76, 77, 82, 105, 0835 108, 109, 114, 33, 57, 59, 126, 9, 0836 13, 32, 73, 76, 77, 82, 105, 108, 0837 109, 114, 33, 57, 59, 126, 9, 13, 0838 32, 73, 76, 77, 82, 105, 108, 109, 0839 114, 33, 57, 59, 126, 9, 13, 32, 0840 73, 76, 77, 82, 105, 108, 109, 114, 0841 33, 57, 59, 126, 9, 13, 32, 73, 0842 76, 77, 82, 105, 108, 109, 114, 33, 0843 57, 59, 126, 9, 13, 32, 73, 76, 0844 77, 82, 105, 108, 109, 114, 33, 57, 0845 59, 126, 9, 13, 32, 73, 76, 77, 0846 82, 105, 108, 109, 114, 33, 57, 59, 0847 126, 9, 13, 32, 73, 76, 77, 82, 0848 105, 108, 109, 114, 33, 57, 59, 126, 0849 9, 13, 32, 73, 76, 77, 82, 105, 0850 108, 109, 114, 33, 57, 59, 126, 9, 0851 13, 32, 73, 76, 77, 82, 105, 108, 0852 109, 114, 33, 57, 59, 126, 9, 13, 0853 32, 73, 76, 77, 82, 105, 108, 109, 0854 114, 33, 57, 59, 126, 9, 13, 32, 0855 73, 76, 77, 82, 105, 108, 109, 114, 0856 33, 57, 59, 126, 9, 13, 32, 73, 0857 76, 77, 82, 105, 108, 109, 114, 33, 0858 57, 59, 126, 9, 13, 32, 73, 76, 0859 77, 82, 105, 108, 109, 114, 33, 57, 0860 59, 126, 9, 13, 32, 73, 76, 77, 0861 82, 105, 108, 109, 114, 33, 57, 59, 0862 126, 9, 13, 32, 73, 76, 77, 82, 0863 105, 108, 109, 114, 33, 57, 59, 126, 0864 9, 13, 32, 73, 76, 77, 82, 105, 0865 108, 109, 114, 33, 57, 59, 126, 9, 0866 13, 32, 73, 76, 77, 82, 105, 108, 0867 109, 114, 33, 57, 59, 126, 9, 13, 0868 32, 73, 76, 77, 82, 105, 108, 109, 0869 114, 33, 57, 59, 126, 9, 13, 32, 0870 73, 76, 77, 82, 105, 108, 109, 114, 0871 33, 57, 59, 126, 9, 13, 32, 73, 0872 76, 77, 82, 105, 108, 109, 114, 33, 0873 57, 59, 126, 9, 13, 32, 73, 76, 0874 77, 82, 105, 108, 109, 114, 33, 57, 0875 59, 126, 9, 13, 32, 73, 76, 77, 0876 82, 105, 108, 109, 114, 33, 57, 59, 0877 126, 9, 13, 32, 73, 76, 77, 82, 0878 105, 108, 109, 114, 33, 57, 59, 126, 0879 9, 13, 32, 73, 76, 77, 82, 105, 0880 108, 109, 114, 33, 57, 59, 126, 9, 0881 13, 32, 73, 76, 77, 82, 105, 108, 0882 109, 114, 33, 57, 59, 126, 9, 13, 0883 32, 73, 76, 77, 82, 105, 108, 109, 0884 114, 33, 57, 59, 126, 9, 13, 32, 0885 73, 76, 77, 82, 105, 108, 109, 114, 0886 33, 57, 59, 126, 9, 13, 32, 73, 0887 76, 77, 82, 105, 108, 109, 114, 33, 0888 57, 59, 126, 9, 13, 32, 73, 76, 0889 77, 82, 105, 108, 109, 114, 33, 57, 0890 59, 126, 9, 13, 32, 73, 76, 77, 0891 82, 105, 108, 109, 114, 33, 57, 59, 0892 126, 9, 13, 32, 73, 76, 77, 82, 0893 105, 108, 109, 114, 33, 57, 59, 126, 0894 9, 13, 32, 73, 76, 77, 82, 105, 0895 108, 109, 114, 33, 57, 59, 126, 9, 0896 13, 32, 73, 76, 77, 82, 105, 108, 0897 109, 114, 33, 57, 59, 126, 9, 13, 0898 32, 73, 76, 77, 82, 105, 108, 109, 0899 114, 33, 57, 59, 126, 9, 13, 32, 0900 73, 76, 77, 82, 105, 108, 109, 114, 0901 33, 57, 59, 126, 9, 13, 32, 73, 0902 76, 77, 82, 105, 108, 109, 114, 33, 0903 57, 59, 126, 9, 13, 32, 73, 76, 0904 77, 82, 105, 108, 109, 114, 33, 57, 0905 59, 126, 9, 13, 32, 73, 76, 77, 0906 82, 105, 108, 109, 114, 33, 57, 59, 0907 126, 9, 13, 32, 73, 76, 77, 82, 0908 105, 108, 109, 114, 33, 57, 59, 126, 0909 9, 13, 32, 73, 76, 77, 82, 105, 0910 108, 109, 114, 33, 57, 59, 126, 9, 0911 13, 32, 73, 76, 77, 82, 105, 108, 0912 109, 114, 33, 57, 59, 126, 9, 13, 0913 32, 73, 76, 77, 82, 105, 108, 109, 0914 114, 33, 57, 59, 126, 9, 13, 32, 0915 73, 76, 77, 82, 105, 108, 109, 114, 0916 33, 57, 59, 126, 9, 13, 32, 73, 0917 76, 77, 82, 105, 108, 109, 114, 33, 0918 57, 59, 126, 9, 13, 32, 73, 76, 0919 77, 82, 105, 108, 109, 114, 33, 57, 0920 59, 126, 9, 13, 32, 73, 76, 77, 0921 82, 105, 108, 109, 114, 33, 57, 59, 0922 126, 9, 13, 32, 73, 76, 77, 82, 0923 105, 108, 109, 114, 33, 57, 59, 126, 0924 9, 13, 32, 73, 76, 77, 82, 105, 0925 108, 109, 114, 33, 57, 59, 126, 9, 0926 13, 32, 73, 76, 77, 82, 105, 108, 0927 109, 114, 33, 57, 59, 126, 9, 13, 0928 32, 73, 76, 77, 82, 105, 108, 109, 0929 114, 33, 57, 59, 126, 9, 13, 32, 0930 73, 76, 77, 82, 105, 108, 109, 114, 0931 33, 57, 59, 126, 9, 13, 32, 73, 0932 76, 77, 82, 105, 108, 109, 114, 33, 0933 57, 59, 126, 9, 13, 32, 73, 76, 0934 77, 82, 105, 108, 109, 114, 33, 57, 0935 59, 126, 9, 13, 32, 73, 76, 77, 0936 82, 105, 108, 109, 114, 33, 57, 59, 0937 126, 9, 13, 32, 73, 76, 77, 82, 0938 105, 108, 109, 114, 33, 57, 59, 126, 0939 9, 13, 32, 73, 76, 77, 82, 105, 0940 108, 109, 114, 33, 57, 59, 126, 9, 0941 13, 32, 73, 76, 77, 82, 105, 108, 0942 109, 114, 33, 57, 59, 126, 9, 13, 0943 32, 73, 76, 77, 82, 105, 108, 109, 0944 114, 33, 57, 59, 126, 9, 13, 32, 0945 73, 76, 77, 82, 105, 108, 109, 114, 0946 33, 57, 59, 126, 9, 13, 32, 73, 0947 76, 77, 82, 105, 108, 109, 114, 33, 0948 57, 59, 126, 9, 13, 32, 73, 76, 0949 77, 82, 105, 108, 109, 114, 33, 57, 0950 59, 126, 9, 13, 32, 73, 76, 77, 0951 82, 105, 108, 109, 114, 33, 57, 59, 0952 126, 9, 13, 32, 73, 76, 77, 82, 0953 105, 108, 109, 114, 33, 57, 59, 126, 0954 9, 13, 32, 73, 76, 77, 82, 105, 0955 108, 109, 114, 33, 57, 59, 126, 9, 0956 13, 32, 73, 76, 77, 82, 105, 108, 0957 109, 114, 33, 57, 59, 126, 9, 13, 0958 32, 73, 76, 77, 82, 105, 108, 109, 0959 114, 33, 57, 59, 126, 9, 13, 32, 0960 73, 76, 77, 82, 105, 108, 109, 114, 0961 33, 57, 59, 126, 9, 13, 32, 73, 0962 76, 77, 82, 105, 108, 109, 114, 33, 0963 57, 59, 126, 9, 13, 32, 73, 76, 0964 77, 82, 105, 108, 109, 114, 33, 57, 0965 59, 126, 9, 13, 32, 73, 76, 77, 0966 82, 105, 108, 109, 114, 33, 57, 59, 0967 126, 9, 13, 32, 73, 76, 77, 82, 0968 105, 108, 109, 114, 33, 57, 59, 126, 0969 9, 13, 32, 73, 76, 77, 82, 105, 0970 108, 109, 114, 33, 57, 59, 126, 9, 0971 13, 32, 73, 76, 77, 82, 105, 108, 0972 109, 114, 33, 57, 59, 126, 9, 13, 0973 32, 73, 76, 77, 82, 105, 108, 109, 0974 114, 33, 57, 59, 126, 9, 13, 32, 0975 73, 76, 77, 82, 105, 108, 109, 114, 0976 33, 57, 59, 126, 9, 13, 32, 73, 0977 76, 77, 82, 105, 108, 109, 114, 33, 0978 57, 59, 126, 9, 13, 32, 73, 76, 0979 77, 82, 105, 108, 109, 114, 33, 57, 0980 59, 126, 9, 13, 32, 73, 76, 77, 0981 82, 105, 108, 109, 114, 33, 57, 59, 0982 126, 9, 13, 32, 73, 76, 77, 82, 0983 105, 108, 109, 114, 33, 57, 59, 126, 0984 9, 13, 32, 73, 76, 77, 82, 105, 0985 108, 109, 114, 33, 57, 59, 126, 9, 0986 13, 32, 73, 76, 77, 82, 105, 108, 0987 109, 114, 33, 57, 59, 126, 9, 13, 0988 32, 73, 76, 77, 82, 105, 108, 109, 0989 114, 33, 57, 59, 126, 9, 13, 32, 0990 73, 76, 77, 82, 105, 108, 109, 114, 0991 33, 57, 59, 126, 9, 13, 32, 73, 0992 76, 77, 82, 105, 108, 109, 114, 33, 0993 57, 59, 126, 9, 13, 32, 73, 76, 0994 77, 82, 105, 108, 109, 114, 33, 57, 0995 59, 126, 9, 13, 32, 73, 76, 77, 0996 82, 105, 108, 109, 114, 33, 57, 59, 0997 126, 9, 13, 32, 73, 76, 77, 82, 0998 105, 108, 109, 114, 33, 57, 59, 126, 0999 9, 13, 32, 73, 76, 77, 82, 105, 1000 108, 109, 114, 33, 57, 59, 126, 9, 1001 13, 32, 73, 76, 77, 82, 105, 108, 1002 109, 114, 33, 57, 59, 126, 9, 13, 1003 32, 73, 76, 77, 82, 105, 108, 109, 1004 114, 33, 57, 59, 126, 9, 13, 32, 1005 73, 76, 77, 82, 105, 108, 109, 114, 1006 33, 57, 59, 126, 0 1007 }; 1008 1009 static const int8_t _rfc5322_single_lengths[] = { 1010 0, 1, 1, 1, 2, 3, 2, 3, 1011 3, 3, 3, 3, 2, 3, 3, 3, 1012 3, 10, 10, 2, 3, 9, 2, 3, 1013 3, 3, 3, 2, 3, 3, 3, 3, 1014 1, 8, 3, 4, 3, 3, 3, 3, 1015 3, 3, 2, 3, 3, 3, 3, 6, 1016 2, 3, 4, 2, 3, 0, 9, 2, 1017 3, 9, 7, 2, 3, 4, 2, 3, 1018 0, 10, 2, 3, 8, 7, 2, 3, 1019 4, 2, 3, 0, 9, 2, 3, 8, 1020 5, 5, 2, 3, 3, 3, 3, 3, 1021 3, 3, 3, 3, 3, 3, 3, 10, 1022 10, 2, 3, 9, 2, 3, 5, 6, 1023 2, 3, 0, 4, 2, 3, 0, 9, 1024 2, 3, 9, 7, 2, 3, 4, 2, 1025 3, 0, 10, 2, 3, 8, 7, 2, 1026 3, 4, 2, 3, 0, 9, 2, 3, 1027 8, 10, 10, 2, 3, 4, 2, 3, 1028 0, 4, 2, 3, 0, 9, 4, 2, 1029 3, 0, 6, 2, 3, 0, 6, 2, 1030 3, 4, 2, 3, 0, 5, 6, 2, 1031 3, 0, 4, 2, 3, 0, 4, 2, 1032 3, 0, 3, 13, 13, 3, 4, 12, 1033 3, 4, 7, 7, 3, 4, 1, 7, 1034 6, 3, 4, 1, 6, 12, 3, 4, 1035 12, 7, 3, 4, 6, 3, 4, 1, 1036 6, 13, 3, 4, 13, 7, 3, 4, 1037 6, 3, 4, 1, 6, 12, 3, 4, 1038 13, 13, 13, 3, 4, 6, 3, 4, 1039 1, 6, 6, 3, 4, 1, 6, 12, 1040 6, 3, 4, 1, 6, 8, 3, 4, 1041 1, 8, 6, 3, 4, 6, 3, 4, 1042 1, 6, 7, 7, 3, 4, 1, 7, 1043 6, 3, 4, 1, 6, 6, 3, 4, 1044 1, 6, 4, 4, 2, 3, 0, 4, 1045 2, 3, 0, 9, 4, 2, 3, 0, 1046 6, 2, 3, 0, 6, 2, 3, 4, 1047 2, 3, 0, 5, 6, 2, 3, 0, 1048 4, 2, 3, 0, 6, 3, 4, 6, 1049 3, 4, 1, 6, 12, 3, 4, 12, 1050 7, 3, 4, 6, 3, 4, 1, 6, 1051 13, 3, 4, 13, 7, 3, 4, 6, 1052 3, 4, 1, 6, 12, 3, 4, 13, 1053 5, 5, 3, 4, 6, 3, 4, 1, 1054 6, 6, 3, 4, 1, 6, 12, 6, 1055 3, 4, 1, 6, 8, 3, 4, 1, 1056 8, 6, 3, 4, 6, 3, 4, 1, 1057 6, 7, 7, 3, 4, 1, 7, 6, 1058 3, 4, 1, 6, 6, 3, 4, 1, 1059 6, 7, 5, 2, 6, 3, 4, 2, 1060 3, 0, 6, 1, 2, 6, 3, 4, 1061 6, 3, 4, 1, 6, 6, 3, 4, 1062 6, 3, 4, 1, 6, 7, 5, 5, 1063 2, 7, 3, 9, 6, 3, 4, 6, 1064 3, 4, 1, 6, 9, 3, 4, 9, 1065 3, 4, 10, 5, 7, 3, 8, 4, 1066 4, 8, 8, 3, 4, 8, 3, 9, 1067 6, 3, 4, 1, 6, 4, 9, 9, 1068 3, 4, 9, 3, 4, 9, 3, 4, 1069 4, 8, 8, 4, 6, 6, 3, 4, 1070 5, 2, 7, 3, 9, 9, 3, 4, 1071 9, 3, 4, 10, 8, 3, 8, 4, 1072 7, 4, 8, 8, 3, 4, 4, 6, 1073 6, 5, 3, 6, 4, 6, 3, 4, 1074 1, 6, 7, 3, 8, 4, 4, 8, 1075 8, 3, 4, 8, 3, 9, 6, 3, 1076 4, 1, 6, 4, 9, 6, 3, 4, 1077 7, 5, 7, 4, 3, 4, 8, 3, 1078 9, 4, 1, 6, 4, 8, 8, 9, 1079 3, 4, 9, 3, 4, 10, 8, 4, 1080 3, 4, 4, 8, 8, 3, 1, 2, 1081 5, 6, 2, 3, 0, 4, 2, 3, 1082 0, 9, 2, 3, 9, 7, 2, 3, 1083 4, 2, 3, 0, 10, 2, 3, 8, 1084 7, 2, 3, 4, 2, 3, 0, 9, 1085 2, 3, 8, 10, 10, 2, 3, 4, 1086 2, 3, 0, 4, 2, 3, 0, 9, 1087 4, 2, 3, 0, 6, 2, 3, 0, 1088 6, 2, 3, 4, 2, 3, 0, 5, 1089 6, 2, 3, 0, 4, 2, 3, 0, 1090 4, 2, 3, 0, 3, 13, 13, 3, 1091 4, 12, 3, 4, 7, 7, 3, 4, 1092 1, 7, 6, 3, 4, 1, 6, 12, 1093 3, 4, 12, 7, 3, 4, 6, 3, 1094 4, 1, 6, 13, 3, 4, 13, 7, 1095 3, 4, 6, 3, 4, 1, 6, 12, 1096 3, 4, 13, 13, 13, 3, 4, 6, 1097 3, 4, 1, 6, 6, 3, 4, 1, 1098 6, 12, 6, 3, 4, 1, 6, 8, 1099 3, 4, 1, 8, 6, 3, 4, 6, 1100 3, 4, 1, 6, 7, 7, 3, 4, 1101 1, 7, 6, 3, 4, 1, 6, 6, 1102 3, 4, 1, 6, 4, 9, 1, 11, 1103 11, 11, 11, 11, 11, 11, 11, 11, 1104 11, 11, 11, 11, 11, 11, 11, 11, 1105 11, 11, 11, 11, 11, 11, 11, 11, 1106 11, 11, 11, 11, 11, 11, 11, 11, 1107 11, 11, 11, 11, 11, 11, 11, 11, 1108 11, 11, 11, 11, 11, 11, 11, 11, 1109 11, 11, 11, 11, 11, 11, 11, 11, 1110 11, 11, 11, 11, 11, 11, 11, 11, 1111 11, 11, 11, 11, 11, 11, 11, 11, 1112 11, 11, 11, 11, 11, 11, 11, 11, 1113 11, 11, 11, 11, 11, 11, 11, 11, 1114 11, 11, 11, 11, 11, 11, 11, 11, 1115 11, 11, 11, 11, 11, 11, 11, 11, 1116 11 1117 }; 1118 1119 static const int8_t _rfc5322_range_lengths[] = { 1120 0, 0, 1, 1, 1, 1, 1, 1, 1121 1, 1, 1, 1, 1, 1, 1, 1, 1122 0, 5, 5, 0, 0, 5, 0, 0, 1123 1, 1, 1, 1, 1, 1, 1, 1, 1124 1, 1, 1, 1, 1, 1, 1, 1, 1125 1, 1, 1, 1, 1, 1, 0, 0, 1126 0, 0, 2, 0, 0, 1, 5, 0, 1127 0, 5, 0, 0, 0, 2, 0, 0, 1128 1, 5, 0, 0, 6, 0, 0, 0, 1129 2, 0, 0, 1, 5, 0, 0, 6, 1130 0, 0, 0, 0, 1, 1, 1, 1, 1131 1, 1, 1, 1, 1, 1, 0, 5, 1132 5, 0, 0, 5, 0, 0, 2, 1, 1133 0, 0, 1, 2, 0, 0, 1, 5, 1134 0, 0, 5, 0, 0, 0, 2, 0, 1135 0, 1, 5, 0, 0, 6, 0, 0, 1136 0, 2, 0, 0, 1, 5, 0, 0, 1137 6, 5, 5, 0, 0, 2, 0, 0, 1138 1, 2, 0, 0, 1, 5, 2, 0, 1139 0, 1, 2, 0, 0, 1, 0, 0, 1140 0, 2, 0, 0, 1, 2, 1, 0, 1141 0, 1, 2, 0, 0, 1, 2, 0, 1142 0, 1, 0, 6, 6, 1, 1, 6, 1143 1, 1, 1, 1, 1, 1, 1, 1, 1144 1, 1, 1, 1, 1, 6, 1, 1, 1145 6, 1, 1, 1, 1, 1, 1, 1, 1146 1, 6, 1, 1, 6, 1, 1, 1, 1147 1, 1, 1, 1, 1, 6, 1, 1, 1148 6, 6, 6, 1, 1, 1, 1, 1, 1149 1, 1, 1, 1, 1, 1, 1, 6, 1150 1, 1, 1, 1, 1, 1, 1, 1, 1151 1, 1, 1, 1, 1, 1, 1, 1, 1152 1, 1, 1, 1, 1, 1, 1, 1, 1153 1, 1, 1, 1, 1, 1, 1, 1, 1154 1, 1, 1, 2, 0, 0, 1, 2, 1155 0, 0, 1, 5, 2, 0, 0, 1, 1156 2, 0, 0, 1, 0, 0, 0, 2, 1157 0, 0, 1, 2, 1, 0, 0, 1, 1158 2, 0, 0, 1, 1, 1, 1, 1, 1159 1, 1, 1, 1, 6, 1, 1, 6, 1160 1, 1, 1, 1, 1, 1, 1, 1, 1161 6, 1, 1, 6, 1, 1, 1, 1, 1162 1, 1, 1, 1, 6, 1, 1, 6, 1163 1, 1, 1, 1, 1, 1, 1, 1, 1164 1, 1, 1, 1, 1, 1, 6, 1, 1165 1, 1, 1, 1, 1, 1, 1, 1, 1166 1, 1, 1, 1, 1, 1, 1, 1, 1167 1, 1, 1, 1, 1, 1, 1, 1, 1168 1, 1, 1, 1, 1, 1, 1, 1, 1169 1, 1, 0, 0, 0, 0, 2, 0, 1170 0, 1, 1, 1, 1, 1, 1, 1, 1171 1, 1, 1, 1, 1, 1, 1, 1, 1172 1, 1, 1, 1, 1, 1, 0, 2, 1173 0, 1, 0, 1, 1, 1, 1, 1, 1174 1, 1, 1, 1, 1, 1, 1, 1, 1175 1, 1, 1, 1, 1, 1, 1, 1, 1176 1, 1, 1, 1, 1, 1, 1, 1, 1177 1, 1, 1, 1, 1, 1, 1, 1, 1178 1, 1, 1, 1, 1, 1, 1, 1, 1179 1, 1, 1, 1, 2, 2, 1, 1, 1180 2, 0, 1, 0, 1, 1, 1, 1, 1181 1, 1, 1, 1, 1, 1, 1, 1, 1182 1, 1, 1, 1, 1, 1, 1, 2, 1183 2, 1, 1, 1, 1, 1, 1, 1, 1184 1, 1, 1, 1, 1, 1, 1, 1, 1185 1, 1, 1, 1, 1, 1, 1, 1, 1186 1, 1, 1, 1, 1, 1, 1, 1, 1187 1, 1, 1, 1, 1, 1, 1, 1, 1188 1, 1, 1, 1, 1, 1, 1, 1, 1189 1, 1, 1, 1, 1, 1, 1, 1, 1190 1, 1, 1, 1, 1, 1, 1, 1, 1191 2, 1, 0, 0, 1, 2, 0, 0, 1192 1, 5, 0, 0, 5, 0, 0, 0, 1193 2, 0, 0, 1, 5, 0, 0, 6, 1194 0, 0, 0, 2, 0, 0, 1, 5, 1195 0, 0, 6, 5, 5, 0, 0, 2, 1196 0, 0, 1, 2, 0, 0, 1, 5, 1197 2, 0, 0, 1, 2, 0, 0, 1, 1198 0, 0, 0, 2, 0, 0, 1, 2, 1199 1, 0, 0, 1, 2, 0, 0, 1, 1200 2, 0, 0, 1, 0, 6, 6, 1, 1201 1, 6, 1, 1, 1, 1, 1, 1, 1202 1, 1, 1, 1, 1, 1, 1, 6, 1203 1, 1, 6, 1, 1, 1, 1, 1, 1204 1, 1, 1, 6, 1, 1, 6, 1, 1205 1, 1, 1, 1, 1, 1, 1, 6, 1206 1, 1, 6, 6, 6, 1, 1, 1, 1207 1, 1, 1, 1, 1, 1, 1, 1, 1208 1, 6, 1, 1, 1, 1, 1, 1, 1209 1, 1, 1, 1, 1, 1, 1, 1, 1210 1, 1, 1, 1, 1, 1, 1, 1, 1211 1, 1, 1, 1, 1, 1, 1, 1, 1212 1, 1, 1, 1, 1, 2, 0, 2, 1213 2, 2, 2, 2, 2, 2, 2, 2, 1214 2, 2, 2, 2, 2, 2, 2, 2, 1215 2, 2, 2, 2, 2, 2, 2, 2, 1216 2, 2, 2, 2, 2, 2, 2, 2, 1217 2, 2, 2, 2, 2, 2, 2, 2, 1218 2, 2, 2, 2, 2, 2, 2, 2, 1219 2, 2, 2, 2, 2, 2, 2, 2, 1220 2, 2, 2, 2, 2, 2, 2, 2, 1221 2, 2, 2, 2, 2, 2, 2, 2, 1222 2, 2, 2, 2, 2, 2, 2, 2, 1223 2, 2, 2, 2, 2, 2, 2, 2, 1224 2, 2, 2, 2, 2, 2, 2, 2, 1225 2, 2, 2, 2, 2, 2, 2, 2, 1226 2 1227 }; 1228 1229 static const int16_t _rfc5322_index_offsets[] = { 1230 0, 0, 2, 5, 8, 12, 17, 21, 1231 26, 31, 36, 41, 46, 50, 55, 60, 1232 65, 69, 85, 101, 104, 108, 123, 126, 1233 130, 135, 140, 145, 149, 154, 159, 164, 1234 169, 172, 182, 187, 193, 198, 203, 208, 1235 213, 218, 223, 227, 232, 237, 242, 246, 1236 253, 256, 260, 267, 270, 274, 276, 291, 1237 294, 298, 313, 321, 324, 328, 335, 338, 1238 342, 344, 360, 363, 367, 382, 390, 393, 1239 397, 404, 407, 411, 413, 428, 431, 435, 1240 450, 456, 462, 465, 469, 474, 479, 484, 1241 489, 494, 499, 504, 509, 514, 519, 523, 1242 539, 555, 558, 562, 577, 580, 584, 592, 1243 600, 603, 607, 609, 616, 619, 623, 625, 1244 640, 643, 647, 662, 670, 673, 677, 684, 1245 687, 691, 693, 709, 712, 716, 731, 739, 1246 742, 746, 753, 756, 760, 762, 777, 780, 1247 784, 799, 815, 831, 834, 838, 845, 848, 1248 852, 854, 861, 864, 868, 870, 885, 892, 1249 895, 899, 901, 910, 913, 917, 919, 926, 1250 929, 933, 940, 943, 947, 949, 957, 965, 1251 968, 972, 974, 981, 984, 988, 990, 997, 1252 1000, 1004, 1006, 1010, 1030, 1050, 1055, 1061, 1253 1080, 1085, 1091, 1100, 1109, 1114, 1120, 1123, 1254 1132, 1140, 1145, 1151, 1154, 1162, 1181, 1186, 1255 1192, 1211, 1220, 1225, 1231, 1239, 1244, 1250, 1256 1253, 1261, 1281, 1286, 1292, 1312, 1321, 1326, 1257 1332, 1340, 1345, 1351, 1354, 1362, 1381, 1386, 1258 1392, 1412, 1432, 1452, 1457, 1463, 1471, 1476, 1259 1482, 1485, 1493, 1501, 1506, 1512, 1515, 1523, 1260 1542, 1550, 1555, 1561, 1564, 1572, 1582, 1587, 1261 1593, 1596, 1606, 1614, 1619, 1625, 1633, 1638, 1262 1644, 1647, 1655, 1664, 1673, 1678, 1684, 1687, 1263 1696, 1704, 1709, 1715, 1718, 1726, 1734, 1739, 1264 1745, 1748, 1756, 1762, 1769, 1772, 1776, 1778, 1265 1785, 1788, 1792, 1794, 1809, 1816, 1819, 1823, 1266 1825, 1834, 1837, 1841, 1843, 1850, 1853, 1857, 1267 1864, 1867, 1871, 1873, 1881, 1889, 1892, 1896, 1268 1898, 1905, 1908, 1912, 1914, 1922, 1927, 1933, 1269 1941, 1946, 1952, 1955, 1963, 1982, 1987, 1993, 1270 2012, 2021, 2026, 2032, 2040, 2045, 2051, 2054, 1271 2062, 2082, 2087, 2093, 2113, 2122, 2127, 2133, 1272 2141, 2146, 2152, 2155, 2163, 2182, 2187, 2193, 1273 2213, 2220, 2227, 2232, 2238, 2246, 2251, 2257, 1274 2260, 2268, 2276, 2281, 2287, 2290, 2298, 2317, 1275 2325, 2330, 2336, 2339, 2347, 2357, 2362, 2368, 1276 2371, 2381, 2389, 2394, 2400, 2408, 2413, 2419, 1277 2422, 2430, 2439, 2448, 2453, 2459, 2462, 2471, 1278 2479, 2484, 2490, 2493, 2501, 2509, 2514, 2520, 1279 2523, 2531, 2540, 2546, 2549, 2556, 2560, 2567, 1280 2570, 2574, 2576, 2584, 2587, 2591, 2599, 2604, 1281 2610, 2618, 2623, 2629, 2632, 2640, 2648, 2653, 1282 2659, 2667, 2672, 2678, 2681, 2689, 2698, 2704, 1283 2712, 2715, 2724, 2728, 2739, 2747, 2752, 2758, 1284 2766, 2771, 2777, 2780, 2788, 2799, 2804, 2810, 1285 2821, 2826, 2832, 2844, 2851, 2860, 2865, 2875, 1286 2881, 2887, 2897, 2907, 2912, 2918, 2928, 2933, 1287 2944, 2952, 2957, 2963, 2966, 2974, 2980, 2991, 1288 3002, 3007, 3013, 3024, 3029, 3035, 3046, 3051, 1289 3057, 3063, 3073, 3083, 3089, 3098, 3107, 3112, 1290 3118, 3126, 3129, 3138, 3142, 3153, 3164, 3169, 1291 3175, 3186, 3191, 3197, 3209, 3219, 3224, 3234, 1292 3240, 3249, 3255, 3265, 3275, 3280, 3286, 3292, 1293 3301, 3310, 3317, 3322, 3330, 3336, 3344, 3349, 1294 3355, 3358, 3366, 3375, 3380, 3390, 3396, 3402, 1295 3412, 3422, 3427, 3433, 3443, 3448, 3459, 3467, 1296 3472, 3478, 3481, 3489, 3495, 3506, 3514, 3519, 1297 3525, 3534, 3541, 3550, 3556, 3561, 3567, 3577, 1298 3582, 3593, 3599, 3602, 3610, 3616, 3626, 3636, 1299 3647, 3652, 3658, 3669, 3674, 3680, 3692, 3702, 1300 3708, 3713, 3719, 3725, 3735, 3745, 3750, 3753, 1301 3757, 3765, 3773, 3776, 3780, 3782, 3789, 3792, 1302 3796, 3798, 3813, 3816, 3820, 3835, 3843, 3846, 1303 3850, 3857, 3860, 3864, 3866, 3882, 3885, 3889, 1304 3904, 3912, 3915, 3919, 3926, 3929, 3933, 3935, 1305 3950, 3953, 3957, 3972, 3988, 4004, 4007, 4011, 1306 4018, 4021, 4025, 4027, 4034, 4037, 4041, 4043, 1307 4058, 4065, 4068, 4072, 4074, 4083, 4086, 4090, 1308 4092, 4099, 4102, 4106, 4113, 4116, 4120, 4122, 1309 4130, 4138, 4141, 4145, 4147, 4154, 4157, 4161, 1310 4163, 4170, 4173, 4177, 4179, 4183, 4203, 4223, 1311 4228, 4234, 4253, 4258, 4264, 4273, 4282, 4287, 1312 4293, 4296, 4305, 4313, 4318, 4324, 4327, 4335, 1313 4354, 4359, 4365, 4384, 4393, 4398, 4404, 4412, 1314 4417, 4423, 4426, 4434, 4454, 4459, 4465, 4485, 1315 4494, 4499, 4505, 4513, 4518, 4524, 4527, 4535, 1316 4554, 4559, 4565, 4585, 4605, 4625, 4630, 4636, 1317 4644, 4649, 4655, 4658, 4666, 4674, 4679, 4685, 1318 4688, 4696, 4715, 4723, 4728, 4734, 4737, 4745, 1319 4755, 4760, 4766, 4769, 4779, 4787, 4792, 4798, 1320 4806, 4811, 4817, 4820, 4828, 4837, 4846, 4851, 1321 4857, 4860, 4869, 4877, 4882, 4888, 4891, 4899, 1322 4907, 4912, 4918, 4921, 4929, 4935, 4947, 4949, 1323 4963, 4977, 4991, 5005, 5019, 5033, 5047, 5061, 1324 5075, 5089, 5103, 5117, 5131, 5145, 5159, 5173, 1325 5187, 5201, 5215, 5229, 5243, 5257, 5271, 5285, 1326 5299, 5313, 5327, 5341, 5355, 5369, 5383, 5397, 1327 5411, 5425, 5439, 5453, 5467, 5481, 5495, 5509, 1328 5523, 5537, 5551, 5565, 5579, 5593, 5607, 5621, 1329 5635, 5649, 5663, 5677, 5691, 5705, 5719, 5733, 1330 5747, 5761, 5775, 5789, 5803, 5817, 5831, 5845, 1331 5859, 5873, 5887, 5901, 5915, 5929, 5943, 5957, 1332 5971, 5985, 5999, 6013, 6027, 6041, 6055, 6069, 1333 6083, 6097, 6111, 6125, 6139, 6153, 6167, 6181, 1334 6195, 6209, 6223, 6237, 6251, 6265, 6279, 6293, 1335 6307, 6321, 6335, 6349, 6363, 6377, 6391, 6405, 1336 6419 1337 }; 1338 1339 static const int16_t _rfc5322_indicies[] = { 1340 0, 1, 4, 3, 2, 5, 4, 2, 1341 6, 5, 4, 2, 4, 7, 7, 3, 1342 2, 8, 4, 3, 2, 4, 9, 9, 1343 3, 2, 4, 10, 10, 3, 2, 4, 1344 11, 11, 3, 2, 4, 12, 12, 3, 1345 2, 4, 13, 13, 3, 2, 14, 4, 1346 3, 2, 4, 15, 15, 3, 2, 4, 1347 16, 16, 3, 2, 17, 17, 18, 3, 1348 2, 17, 17, 19, 2, 20, 21, 22, 1349 20, 24, 25, 23, 26, 23, 23, 23, 1350 23, 23, 23, 23, 2, 27, 28, 29, 1351 27, 24, 30, 23, 31, 23, 23, 23, 1352 23, 23, 23, 23, 2, 27, 27, 2, 1353 27, 28, 27, 2, 32, 33, 34, 32, 1354 24, 35, 26, 23, 23, 23, 23, 23, 1355 23, 23, 2, 36, 36, 2, 36, 37, 1356 36, 2, 4, 38, 38, 3, 2, 4, 1357 39, 39, 3, 2, 4, 40, 40, 3, 1358 2, 41, 4, 3, 2, 4, 42, 42, 1359 3, 2, 4, 43, 43, 3, 2, 4, 1360 44, 44, 3, 2, 4, 45, 45, 3, 1361 2, 46, 3, 2, 46, 47, 48, 46, 1362 49, 50, 51, 51, 4, 2, 46, 5, 1363 46, 4, 2, 46, 52, 5, 46, 4, 1364 2, 4, 53, 53, 3, 2, 4, 54, 1365 54, 3, 2, 4, 55, 55, 3, 2, 1366 4, 56, 56, 3, 2, 4, 57, 57, 1367 3, 2, 4, 58, 58, 3, 2, 59, 1368 4, 3, 2, 4, 60, 60, 3, 2, 1369 4, 61, 61, 3, 2, 62, 62, 63, 1370 3, 2, 62, 62, 64, 2, 65, 66, 1371 67, 65, 68, 69, 2, 65, 65, 2, 1372 65, 66, 65, 2, 70, 71, 65, 72, 1373 68, 68, 2, 68, 68, 2, 68, 70, 1374 68, 2, 73, 2, 69, 74, 75, 69, 1375 77, 78, 76, 76, 76, 76, 76, 76, 1376 76, 76, 2, 69, 69, 2, 69, 74, 1377 69, 2, 79, 80, 81, 79, 76, 82, 1378 83, 76, 84, 76, 76, 76, 76, 76, 1379 2, 79, 80, 81, 79, 82, 83, 84, 1380 2, 79, 79, 2, 79, 80, 79, 2, 1381 85, 86, 79, 87, 82, 82, 2, 82, 1382 82, 2, 82, 85, 82, 2, 88, 2, 1383 89, 90, 91, 89, 92, 93, 92, 92, 1384 92, 94, 92, 92, 92, 92, 92, 2, 1385 89, 89, 2, 89, 90, 89, 2, 95, 1386 96, 97, 95, 92, 98, 99, 100, 92, 1387 92, 92, 92, 92, 92, 2, 95, 96, 1388 97, 95, 98, 101, 100, 2, 95, 95, 1389 2, 95, 96, 95, 2, 102, 103, 95, 1390 104, 98, 98, 2, 98, 98, 2, 98, 1391 102, 98, 2, 105, 2, 101, 106, 107, 1392 101, 108, 109, 108, 108, 108, 108, 108, 1393 108, 108, 108, 2, 101, 101, 2, 101, 1394 106, 101, 2, 95, 96, 97, 95, 108, 1395 98, 101, 100, 108, 108, 108, 108, 108, 1396 108, 2, 110, 111, 112, 110, 113, 2, 1397 114, 115, 116, 114, 117, 2, 114, 114, 1398 2, 114, 118, 114, 2, 4, 119, 119, 1399 3, 2, 4, 120, 120, 3, 2, 4, 1400 121, 121, 3, 2, 4, 122, 122, 3, 1401 2, 4, 123, 123, 3, 2, 4, 124, 1402 124, 3, 2, 4, 125, 125, 3, 2, 1403 4, 126, 126, 3, 2, 4, 127, 127, 1404 3, 2, 128, 128, 129, 3, 2, 128, 1405 128, 130, 2, 131, 132, 133, 131, 135, 1406 136, 134, 137, 134, 134, 134, 134, 134, 1407 134, 134, 2, 138, 139, 140, 138, 135, 1408 141, 134, 142, 134, 134, 134, 134, 134, 1409 134, 134, 2, 138, 138, 2, 138, 139, 1410 138, 2, 143, 144, 145, 143, 135, 146, 1411 137, 134, 134, 134, 134, 134, 134, 134, 1412 2, 147, 147, 2, 147, 148, 147, 2, 1413 150, 151, 152, 150, 153, 149, 149, 2, 1414 150, 151, 152, 150, 147, 153, 149, 2, 1415 150, 150, 2, 150, 151, 150, 2, 154, 1416 2, 156, 157, 147, 158, 155, 155, 2, 1417 155, 155, 2, 155, 156, 155, 2, 159, 1418 2, 142, 160, 161, 142, 163, 164, 162, 1419 162, 162, 162, 162, 162, 162, 162, 2, 1420 142, 142, 2, 142, 160, 142, 2, 165, 1421 166, 167, 165, 162, 168, 169, 162, 170, 1422 162, 162, 162, 162, 162, 2, 165, 166, 1423 167, 165, 168, 169, 170, 2, 165, 165, 1424 2, 165, 166, 165, 2, 171, 172, 165, 1425 173, 168, 168, 2, 168, 168, 2, 168, 1426 171, 168, 2, 2, 174, 175, 176, 177, 1427 175, 178, 179, 178, 178, 178, 180, 178, 1428 178, 178, 178, 178, 2, 175, 175, 2, 1429 175, 176, 175, 2, 181, 182, 183, 181, 1430 178, 184, 185, 186, 178, 178, 178, 178, 1431 178, 178, 2, 181, 182, 183, 181, 184, 1432 187, 186, 2, 181, 181, 2, 181, 182, 1433 181, 2, 188, 189, 181, 190, 184, 184, 1434 2, 184, 184, 2, 184, 188, 184, 2, 1435 191, 2, 187, 192, 193, 187, 194, 195, 1436 194, 194, 194, 194, 194, 194, 194, 194, 1437 2, 187, 187, 2, 187, 192, 187, 2, 1438 181, 182, 183, 181, 194, 184, 187, 186, 1439 194, 194, 194, 194, 194, 194, 2, 196, 1440 197, 198, 196, 200, 201, 199, 202, 199, 1441 199, 199, 199, 199, 199, 199, 2, 203, 1442 204, 205, 203, 135, 206, 134, 137, 134, 1443 134, 134, 134, 134, 134, 134, 2, 207, 1444 207, 2, 207, 208, 207, 2, 210, 211, 1445 207, 212, 209, 209, 2, 209, 209, 2, 1446 209, 210, 209, 2, 213, 2, 214, 215, 1447 187, 216, 195, 195, 2, 195, 195, 2, 1448 195, 214, 195, 2, 2, 217, 187, 192, 1449 193, 187, 178, 195, 178, 178, 178, 178, 1450 178, 178, 178, 178, 2, 218, 219, 175, 1451 220, 179, 179, 2, 179, 179, 2, 179, 1452 218, 179, 2, 2, 221, 222, 223, 224, 1453 222, 225, 226, 180, 180, 2, 222, 222, 1454 2, 222, 223, 222, 2, 227, 2, 228, 1455 229, 230, 228, 231, 186, 2, 228, 228, 1456 2, 228, 229, 228, 2, 232, 233, 228, 1457 234, 231, 231, 2, 231, 231, 2, 231, 1458 232, 231, 2, 235, 2, 237, 238, 239, 1459 237, 240, 236, 236, 2, 237, 238, 239, 1460 237, 165, 240, 236, 2, 237, 237, 2, 1461 237, 238, 237, 2, 241, 2, 242, 243, 1462 142, 244, 164, 164, 2, 164, 164, 2, 1463 164, 242, 164, 2, 245, 2, 246, 247, 1464 138, 248, 141, 141, 2, 141, 141, 2, 1465 141, 246, 141, 2, 2, 249, 138, 250, 1466 138, 2, 251, 252, 253, 251, 255, 256, 1467 4, 4, 4, 257, 254, 254, 4, 4, 1468 254, 4, 254, 4, 254, 2, 258, 259, 1469 260, 258, 255, 261, 4, 4, 4, 262, 1470 254, 254, 4, 4, 254, 4, 254, 4, 1471 254, 2, 258, 5, 258, 4, 2, 258, 1472 263, 5, 258, 4, 2, 264, 265, 266, 1473 264, 255, 267, 4, 4, 257, 254, 254, 1474 4, 4, 254, 4, 254, 4, 254, 2, 1475 268, 5, 268, 4, 2, 268, 269, 5, 1476 268, 4, 2, 4, 271, 272, 273, 271, 1477 4, 274, 270, 2, 4, 271, 272, 273, 1478 271, 268, 274, 270, 2, 271, 5, 271, 1479 4, 2, 271, 275, 5, 271, 4, 2, 1480 277, 276, 2, 4, 271, 275, 273, 271, 1481 268, 274, 270, 2, 4, 279, 280, 4, 1482 268, 281, 278, 2, 278, 5, 278, 4, 1483 2, 278, 282, 5, 278, 4, 2, 284, 1484 283, 2, 4, 282, 280, 4, 268, 281, 1485 278, 2, 262, 285, 286, 262, 288, 289, 1486 4, 4, 4, 287, 287, 4, 4, 287, 1487 4, 287, 4, 287, 2, 262, 5, 262, 1488 4, 2, 262, 290, 5, 262, 4, 2, 1489 291, 292, 293, 291, 287, 294, 4, 4, 1490 295, 287, 296, 4, 4, 287, 4, 287, 1491 4, 287, 2, 291, 292, 293, 291, 294, 1492 295, 296, 4, 2, 291, 5, 291, 4, 1493 2, 291, 297, 5, 291, 4, 2, 4, 1494 298, 299, 4, 291, 300, 294, 2, 294, 1495 5, 294, 4, 2, 294, 301, 5, 294, 1496 4, 2, 303, 302, 2, 4, 301, 299, 1497 4, 291, 300, 294, 2, 304, 305, 306, 1498 304, 307, 308, 4, 4, 4, 307, 307, 1499 309, 4, 4, 307, 4, 307, 4, 307, 1500 2, 304, 5, 304, 4, 2, 304, 310, 1501 5, 304, 4, 2, 311, 312, 313, 311, 1502 307, 314, 4, 4, 315, 307, 316, 307, 1503 4, 4, 307, 4, 307, 4, 307, 2, 1504 311, 312, 313, 311, 314, 317, 316, 4, 1505 2, 311, 5, 311, 4, 2, 311, 318, 1506 5, 311, 4, 2, 4, 319, 320, 4, 1507 311, 321, 314, 2, 314, 5, 314, 4, 1508 2, 314, 322, 5, 314, 4, 2, 324, 1509 323, 2, 4, 322, 320, 4, 311, 321, 1510 314, 2, 317, 325, 326, 317, 327, 328, 1511 4, 4, 4, 327, 327, 4, 4, 327, 1512 4, 327, 4, 327, 2, 317, 5, 317, 1513 4, 2, 317, 329, 5, 317, 4, 2, 1514 311, 312, 313, 311, 327, 314, 4, 4, 1515 317, 327, 316, 327, 4, 4, 327, 4, 1516 327, 4, 327, 2, 330, 331, 332, 330, 1517 334, 335, 4, 4, 4, 336, 333, 333, 1518 4, 4, 333, 4, 333, 4, 333, 2, 1519 337, 338, 339, 337, 255, 340, 4, 4, 1520 4, 257, 254, 254, 4, 4, 254, 4, 1521 254, 4, 254, 2, 341, 5, 341, 4, 1522 2, 341, 342, 5, 341, 4, 2, 4, 1523 344, 345, 4, 341, 346, 343, 2, 343, 1524 5, 343, 4, 2, 343, 347, 5, 343, 1525 4, 2, 349, 348, 2, 4, 347, 345, 1526 4, 341, 346, 343, 2, 4, 350, 351, 1527 4, 317, 352, 328, 2, 328, 5, 328, 1528 4, 2, 328, 353, 5, 328, 4, 2, 1529 355, 354, 2, 4, 353, 351, 4, 317, 1530 352, 328, 2, 317, 325, 326, 317, 307, 1531 328, 4, 4, 4, 307, 307, 4, 4, 1532 307, 4, 307, 4, 307, 2, 4, 356, 1533 357, 4, 304, 358, 308, 2, 308, 5, 1534 308, 4, 2, 308, 359, 5, 308, 4, 1535 2, 361, 360, 2, 4, 359, 357, 4, 1536 304, 358, 308, 2, 4, 362, 363, 364, 1537 362, 4, 365, 366, 309, 2, 362, 5, 1538 362, 4, 2, 362, 367, 5, 362, 4, 1539 2, 369, 368, 2, 4, 362, 367, 364, 1540 362, 4, 365, 366, 309, 2, 370, 371, 1541 372, 370, 373, 316, 4, 2, 370, 5, 1542 370, 4, 2, 370, 374, 5, 370, 4, 1543 2, 4, 375, 376, 4, 370, 377, 373, 1544 2, 373, 5, 373, 4, 2, 373, 378, 1545 5, 373, 4, 2, 380, 379, 2, 4, 1546 378, 376, 4, 370, 377, 373, 2, 4, 1547 382, 383, 384, 382, 4, 385, 381, 2, 1548 4, 382, 383, 384, 382, 291, 385, 381, 1549 2, 382, 5, 382, 4, 2, 382, 386, 1550 5, 382, 4, 2, 388, 387, 2, 4, 1551 382, 386, 384, 382, 291, 385, 381, 2, 1552 4, 389, 390, 4, 262, 391, 289, 2, 1553 289, 5, 289, 4, 2, 289, 392, 5, 1554 289, 4, 2, 394, 393, 2, 4, 392, 1555 390, 4, 262, 391, 289, 2, 4, 395, 1556 396, 4, 258, 397, 261, 2, 261, 5, 1557 261, 4, 2, 261, 398, 5, 261, 4, 1558 2, 400, 399, 2, 4, 398, 396, 4, 1559 258, 397, 261, 2, 258, 401, 5, 258, 1560 4, 2, 402, 403, 114, 404, 117, 117, 1561 2, 117, 117, 2, 117, 402, 117, 2, 1562 405, 2, 406, 407, 101, 408, 109, 109, 1563 2, 109, 109, 2, 109, 406, 109, 2, 1564 409, 2, 101, 106, 107, 101, 92, 109, 1565 92, 92, 92, 92, 92, 92, 92, 92, 1566 2, 410, 411, 89, 412, 93, 93, 2, 1567 93, 93, 2, 93, 410, 93, 2, 413, 1568 2, 414, 415, 416, 414, 417, 418, 94, 1569 94, 2, 414, 414, 2, 414, 415, 414, 1570 2, 419, 2, 420, 421, 422, 420, 423, 1571 100, 2, 420, 420, 2, 420, 421, 420, 1572 2, 424, 425, 420, 426, 423, 423, 2, 1573 423, 423, 2, 423, 424, 423, 2, 2, 1574 427, 429, 430, 431, 429, 432, 428, 428, 1575 2, 429, 430, 431, 429, 79, 432, 428, 1576 2, 429, 429, 2, 429, 430, 429, 2, 1577 433, 2, 434, 435, 69, 436, 78, 78, 1578 2, 78, 78, 2, 78, 434, 78, 2, 1579 437, 2, 438, 439, 440, 438, 441, 442, 1580 4, 2, 438, 5, 438, 4, 2, 438, 1581 443, 5, 438, 4, 2, 4, 444, 445, 1582 4, 438, 446, 441, 2, 441, 5, 441, 1583 4, 2, 441, 447, 5, 441, 4, 2, 1584 449, 448, 2, 4, 447, 445, 4, 438, 1585 446, 441, 2, 442, 450, 451, 442, 453, 1586 454, 4, 4, 4, 452, 452, 4, 4, 1587 452, 4, 452, 4, 452, 2, 442, 5, 1588 442, 4, 2, 442, 455, 5, 442, 4, 1589 2, 456, 457, 458, 456, 452, 459, 4, 1590 4, 460, 452, 461, 4, 4, 452, 4, 1591 452, 4, 452, 2, 456, 457, 458, 456, 1592 459, 460, 461, 4, 2, 456, 5, 456, 1593 4, 2, 456, 462, 5, 456, 4, 2, 1594 4, 463, 464, 4, 456, 465, 459, 2, 1595 459, 5, 459, 4, 2, 459, 466, 5, 1596 459, 4, 2, 468, 467, 2, 4, 466, 1597 464, 4, 456, 465, 459, 2, 469, 470, 1598 471, 469, 472, 473, 4, 4, 4, 472, 1599 472, 474, 4, 4, 472, 4, 472, 4, 1600 472, 2, 469, 5, 469, 4, 2, 469, 1601 475, 5, 469, 4, 2, 476, 477, 478, 1602 476, 472, 479, 4, 4, 480, 472, 481, 1603 472, 4, 4, 472, 4, 472, 4, 472, 1604 2, 476, 477, 478, 476, 479, 482, 481, 1605 4, 2, 476, 5, 476, 4, 2, 476, 1606 483, 5, 476, 4, 2, 4, 484, 485, 1607 4, 476, 486, 479, 2, 479, 5, 479, 1608 4, 2, 479, 487, 5, 479, 4, 2, 1609 489, 488, 2, 4, 487, 485, 4, 476, 1610 486, 479, 2, 482, 490, 491, 482, 492, 1611 493, 4, 4, 4, 492, 492, 4, 4, 1612 492, 4, 492, 4, 492, 2, 482, 5, 1613 482, 4, 2, 482, 494, 5, 482, 4, 1614 2, 476, 477, 478, 476, 492, 479, 4, 1615 4, 482, 492, 481, 492, 4, 4, 492, 1616 4, 492, 4, 492, 2, 495, 496, 497, 1617 495, 498, 4, 2, 499, 500, 501, 499, 1618 502, 4, 2, 499, 5, 499, 4, 2, 1619 499, 503, 5, 499, 4, 2, 4, 504, 1620 505, 4, 499, 506, 502, 2, 502, 5, 1621 502, 4, 2, 502, 507, 5, 502, 4, 1622 2, 509, 508, 2, 4, 507, 505, 4, 1623 499, 506, 502, 2, 4, 510, 511, 4, 1624 482, 512, 493, 2, 493, 5, 493, 4, 1625 2, 493, 513, 5, 493, 4, 2, 515, 1626 514, 2, 4, 513, 511, 4, 482, 512, 1627 493, 2, 482, 490, 491, 482, 472, 493, 1628 4, 4, 4, 472, 472, 4, 4, 472, 1629 4, 472, 4, 472, 2, 4, 516, 517, 1630 4, 469, 518, 473, 2, 473, 5, 473, 1631 4, 2, 473, 519, 5, 473, 4, 2, 1632 521, 520, 2, 4, 519, 517, 4, 469, 1633 518, 473, 2, 4, 522, 523, 524, 522, 1634 4, 525, 526, 474, 2, 522, 5, 522, 1635 4, 2, 522, 527, 5, 522, 4, 2, 1636 529, 528, 2, 4, 522, 527, 524, 522, 1637 4, 525, 526, 474, 2, 530, 531, 532, 1638 530, 533, 481, 4, 2, 530, 5, 530, 1639 4, 2, 530, 534, 5, 530, 4, 2, 1640 4, 535, 536, 4, 530, 537, 533, 2, 1641 533, 5, 533, 4, 2, 533, 538, 5, 1642 533, 4, 2, 540, 539, 2, 4, 538, 1643 536, 4, 530, 537, 533, 2, 4, 542, 1644 543, 544, 542, 4, 545, 541, 2, 4, 1645 542, 543, 544, 542, 456, 545, 541, 2, 1646 542, 5, 542, 4, 2, 542, 546, 5, 1647 542, 4, 2, 548, 547, 2, 4, 542, 1648 546, 544, 542, 456, 545, 541, 2, 4, 1649 549, 550, 4, 442, 551, 454, 2, 454, 1650 5, 454, 4, 2, 454, 552, 5, 454, 1651 4, 2, 554, 553, 2, 4, 552, 550, 1652 4, 442, 551, 454, 2, 4, 555, 556, 1653 4, 46, 557, 49, 2, 49, 5, 49, 1654 4, 2, 49, 558, 5, 49, 4, 2, 1655 560, 559, 2, 4, 558, 556, 4, 46, 1656 557, 49, 2, 563, 564, 565, 563, 566, 1657 4, 567, 562, 561, 568, 569, 570, 2, 1658 567, 561, 571, 571, 2, 571, 568, 569, 1659 571, 572, 567, 2, 571, 568, 571, 2, 1660 573, 574, 571, 575, 572, 572, 2, 572, 1661 572, 2, 572, 573, 572, 2, 576, 2, 1662 578, 579, 580, 578, 581, 582, 577, 2, 1663 584, 583, 2, 585, 584, 583, 2, 586, 1664 587, 588, 586, 589, 590, 583, 2, 586, 1665 584, 586, 583, 2, 586, 591, 584, 586, 1666 583, 2, 583, 592, 593, 583, 586, 594, 1667 589, 2, 589, 584, 589, 583, 2, 589, 1668 595, 584, 589, 583, 2, 597, 596, 2, 1669 583, 595, 593, 583, 586, 594, 589, 2, 1670 590, 598, 599, 590, 600, 601, 583, 2, 1671 590, 584, 590, 583, 2, 590, 602, 584, 1672 590, 583, 2, 583, 603, 604, 583, 590, 1673 605, 600, 2, 600, 584, 600, 583, 2, 1674 600, 606, 584, 600, 583, 2, 608, 607, 1675 2, 583, 606, 604, 583, 590, 605, 600, 1676 2, 611, 612, 613, 611, 614, 583, 567, 1677 610, 609, 568, 569, 615, 2, 567, 609, 1678 616, 617, 572, 618, 619, 615, 615, 609, 1679 620, 620, 2, 620, 616, 617, 620, 571, 1680 618, 575, 572, 2, 620, 616, 620, 2, 1681 577, 622, 623, 624, 622, 581, 625, 626, 1682 627, 621, 2, 583, 629, 630, 583, 631, 1683 632, 628, 2, 628, 584, 628, 583, 2, 1684 628, 633, 584, 628, 583, 2, 631, 634, 1685 635, 631, 628, 567, 583, 2, 631, 584, 1686 631, 583, 2, 631, 636, 584, 631, 583, 1687 2, 638, 637, 2, 583, 633, 630, 583, 1688 631, 632, 628, 2, 583, 639, 640, 641, 1689 639, 589, 631, 642, 632, 628, 2, 639, 1690 584, 639, 583, 2, 639, 643, 584, 639, 1691 583, 2, 583, 642, 644, 645, 642, 600, 1692 631, 646, 632, 628, 2, 642, 584, 642, 1693 583, 2, 642, 647, 584, 642, 583, 2, 1694 610, 649, 650, 651, 649, 614, 610, 628, 1695 618, 652, 648, 609, 634, 635, 648, 583, 1696 567, 610, 609, 610, 653, 654, 610, 628, 1697 618, 652, 648, 609, 655, 584, 655, 583, 1698 2, 583, 655, 653, 654, 655, 631, 618, 1699 632, 628, 2, 655, 656, 584, 655, 583, 1700 2, 658, 659, 637, 660, 657, 609, 583, 1701 655, 629, 630, 655, 583, 631, 632, 628, 1702 2, 583, 655, 656, 630, 655, 583, 631, 1703 632, 628, 2, 661, 584, 661, 583, 2, 1704 661, 662, 584, 661, 583, 2, 610, 663, 1705 664, 648, 611, 665, 666, 667, 614, 609, 1706 668, 584, 668, 583, 2, 583, 668, 663, 1707 664, 668, 628, 669, 666, 670, 665, 2, 1708 583, 671, 672, 583, 669, 670, 665, 2, 1709 665, 584, 665, 583, 2, 665, 673, 584, 1710 665, 583, 2, 675, 674, 2, 583, 673, 1711 672, 583, 669, 670, 665, 2, 668, 676, 1712 584, 668, 583, 2, 577, 678, 679, 680, 1713 678, 581, 681, 682, 683, 677, 2, 583, 1714 684, 685, 686, 684, 589, 669, 687, 670, 1715 665, 2, 684, 584, 684, 583, 2, 684, 1716 688, 584, 684, 583, 2, 583, 687, 689, 1717 690, 687, 600, 669, 691, 670, 665, 2, 1718 687, 584, 687, 583, 2, 687, 692, 584, 1719 687, 583, 2, 610, 693, 694, 695, 693, 1720 611, 665, 666, 667, 614, 609, 696, 584, 1721 696, 583, 2, 696, 697, 584, 696, 583, 1722 2, 699, 700, 674, 701, 698, 609, 583, 1723 668, 671, 672, 668, 583, 669, 670, 665, 1724 2, 583, 668, 676, 672, 668, 583, 669, 1725 670, 665, 2, 703, 704, 576, 660, 702, 1726 609, 620, 573, 574, 620, 571, 575, 572, 1727 572, 2, 620, 616, 574, 620, 571, 575, 1728 572, 572, 2, 669, 584, 669, 583, 2, 1729 669, 705, 584, 669, 583, 2, 706, 707, 1730 572, 708, 709, 570, 570, 561, 710, 710, 1731 2, 710, 706, 707, 710, 571, 708, 575, 1732 572, 2, 710, 706, 710, 2, 577, 711, 1733 712, 713, 711, 581, 625, 714, 627, 621, 1734 2, 583, 715, 716, 717, 715, 589, 631, 1735 718, 632, 628, 2, 715, 584, 715, 583, 1736 2, 715, 719, 584, 715, 583, 2, 583, 1737 718, 720, 721, 718, 600, 631, 722, 632, 1738 628, 2, 718, 584, 718, 583, 2, 718, 1739 723, 584, 718, 583, 2, 610, 725, 726, 1740 727, 725, 614, 728, 628, 708, 729, 724, 1741 609, 610, 730, 731, 648, 728, 628, 708, 1742 729, 724, 609, 732, 584, 732, 583, 2, 1743 583, 732, 730, 731, 732, 631, 708, 632, 1744 628, 2, 732, 733, 584, 732, 583, 2, 1745 728, 634, 635, 728, 724, 583, 567, 610, 1746 609, 735, 736, 637, 737, 734, 609, 583, 1747 732, 629, 630, 732, 583, 631, 632, 628, 1748 2, 583, 732, 733, 630, 732, 583, 631, 1749 632, 628, 2, 738, 584, 738, 583, 2, 1750 738, 739, 584, 738, 583, 2, 741, 742, 1751 576, 737, 740, 561, 710, 573, 574, 710, 1752 571, 575, 572, 572, 2, 710, 706, 574, 1753 710, 571, 575, 572, 572, 2, 743, 744, 1754 745, 4, 567, 562, 561, 746, 5, 746, 1755 4, 2, 746, 743, 744, 746, 747, 567, 1756 4, 2, 746, 748, 5, 746, 4, 2, 1757 4, 749, 750, 4, 746, 751, 747, 2, 1758 747, 5, 747, 4, 2, 747, 752, 5, 1759 747, 4, 2, 754, 753, 2, 4, 752, 1760 750, 4, 746, 751, 747, 2, 562, 755, 1761 756, 562, 747, 708, 757, 745, 561, 758, 1762 5, 758, 4, 2, 4, 758, 755, 756, 1763 758, 746, 708, 751, 747, 2, 758, 759, 1764 5, 758, 4, 2, 761, 762, 753, 737, 1765 760, 561, 4, 758, 749, 750, 758, 4, 1766 746, 751, 747, 2, 4, 758, 759, 750, 1767 758, 4, 746, 751, 747, 2, 763, 5, 1768 763, 4, 2, 763, 764, 5, 763, 4, 1769 2, 562, 765, 766, 745, 563, 767, 768, 1770 769, 566, 561, 770, 5, 770, 4, 2, 1771 4, 770, 765, 766, 770, 747, 763, 768, 1772 771, 767, 2, 4, 772, 773, 4, 763, 1773 771, 767, 2, 767, 5, 767, 4, 2, 1774 767, 774, 5, 767, 4, 2, 776, 775, 1775 2, 4, 774, 773, 4, 763, 771, 767, 1776 2, 770, 777, 5, 770, 4, 2, 577, 1777 779, 780, 781, 779, 581, 782, 783, 784, 1778 778, 2, 583, 786, 787, 583, 788, 789, 1779 785, 2, 785, 584, 785, 583, 2, 785, 1780 790, 584, 785, 583, 2, 792, 793, 794, 1781 792, 795, 583, 567, 791, 561, 634, 635, 1782 796, 583, 567, 791, 561, 791, 730, 731, 1783 791, 628, 708, 797, 796, 561, 735, 736, 1784 637, 737, 798, 561, 788, 584, 788, 583, 1785 2, 788, 799, 584, 788, 583, 2, 791, 1786 800, 801, 796, 792, 785, 768, 802, 795, 1787 561, 803, 584, 803, 583, 2, 583, 803, 1788 800, 801, 803, 628, 788, 768, 789, 785, 1789 2, 803, 804, 584, 803, 583, 2, 806, 1790 805, 2, 583, 790, 787, 583, 788, 789, 1791 785, 2, 808, 809, 805, 810, 807, 561, 1792 583, 803, 786, 787, 803, 583, 788, 789, 1793 785, 2, 583, 803, 804, 787, 803, 583, 1794 788, 789, 785, 2, 583, 811, 812, 813, 1795 811, 589, 788, 814, 789, 785, 2, 811, 1796 584, 811, 583, 2, 811, 815, 584, 811, 1797 583, 2, 583, 814, 816, 817, 814, 600, 1798 788, 818, 789, 785, 2, 814, 584, 814, 1799 583, 2, 814, 819, 584, 814, 583, 2, 1800 610, 821, 822, 823, 821, 614, 792, 785, 1801 768, 824, 820, 609, 610, 800, 801, 648, 1802 792, 785, 768, 824, 820, 609, 808, 809, 1803 805, 810, 825, 609, 826, 584, 826, 583, 1804 2, 826, 827, 584, 826, 583, 2, 829, 1805 830, 775, 810, 828, 561, 4, 770, 772, 1806 773, 770, 4, 763, 771, 767, 2, 4, 1807 770, 777, 773, 770, 4, 763, 771, 767, 1808 2, 5, 831, 831, 4, 2, 832, 831, 1809 2, 833, 832, 831, 2, 835, 836, 837, 1810 835, 838, 834, 834, 2, 835, 836, 837, 1811 835, 36, 838, 834, 2, 835, 835, 2, 1812 835, 836, 835, 2, 839, 2, 841, 842, 1813 36, 843, 840, 840, 2, 840, 840, 2, 1814 840, 841, 840, 2, 844, 2, 31, 845, 1815 846, 31, 848, 849, 847, 847, 847, 847, 1816 847, 847, 847, 847, 2, 31, 31, 2, 1817 31, 845, 31, 2, 850, 851, 852, 850, 1818 847, 853, 854, 847, 855, 847, 847, 847, 1819 847, 847, 2, 850, 851, 852, 850, 853, 1820 854, 855, 2, 850, 850, 2, 850, 851, 1821 850, 2, 856, 857, 850, 858, 853, 853, 1822 2, 853, 853, 2, 853, 856, 853, 2, 1823 859, 2, 860, 861, 862, 860, 863, 864, 1824 863, 863, 863, 865, 863, 863, 863, 863, 1825 863, 2, 860, 860, 2, 860, 861, 860, 1826 2, 866, 867, 868, 866, 863, 869, 870, 1827 871, 863, 863, 863, 863, 863, 863, 2, 1828 866, 867, 868, 866, 869, 872, 871, 2, 1829 866, 866, 2, 866, 867, 866, 2, 873, 1830 874, 866, 875, 869, 869, 2, 869, 869, 1831 2, 869, 873, 869, 2, 876, 2, 872, 1832 877, 878, 872, 879, 880, 879, 879, 879, 1833 879, 879, 879, 879, 879, 2, 872, 872, 1834 2, 872, 877, 872, 2, 866, 867, 868, 1835 866, 879, 869, 872, 871, 879, 879, 879, 1836 879, 879, 879, 2, 881, 882, 883, 881, 1837 885, 886, 884, 887, 884, 884, 884, 884, 1838 884, 884, 884, 2, 888, 889, 890, 888, 1839 24, 891, 23, 26, 23, 23, 23, 23, 1840 23, 23, 23, 2, 892, 892, 2, 892, 1841 893, 892, 2, 895, 896, 892, 897, 894, 1842 894, 2, 894, 894, 2, 894, 895, 894, 1843 2, 898, 2, 899, 900, 872, 901, 880, 1844 880, 2, 880, 880, 2, 880, 899, 880, 1845 2, 902, 2, 872, 877, 878, 872, 863, 1846 880, 863, 863, 863, 863, 863, 863, 863, 1847 863, 2, 903, 904, 860, 905, 864, 864, 1848 2, 864, 864, 2, 864, 903, 864, 2, 1849 2, 906, 907, 908, 909, 907, 910, 911, 1850 865, 865, 2, 907, 907, 2, 907, 908, 1851 907, 2, 912, 2, 913, 914, 915, 913, 1852 916, 871, 2, 913, 913, 2, 913, 914, 1853 913, 2, 917, 918, 913, 919, 916, 916, 1854 2, 916, 916, 2, 916, 917, 916, 2, 1855 2, 920, 922, 923, 924, 922, 925, 921, 1856 921, 2, 922, 923, 924, 922, 850, 925, 1857 921, 2, 922, 922, 2, 922, 923, 922, 1858 2, 926, 2, 927, 928, 31, 929, 849, 1859 849, 2, 849, 849, 2, 849, 927, 849, 1860 2, 930, 2, 931, 932, 27, 933, 30, 1861 30, 2, 30, 30, 2, 30, 931, 30, 1862 2, 934, 2, 27, 935, 27, 2, 936, 1863 937, 938, 936, 940, 941, 4, 4, 4, 1864 942, 939, 939, 4, 4, 939, 4, 939, 1865 4, 939, 2, 943, 944, 945, 943, 940, 1866 946, 4, 4, 4, 947, 939, 939, 4, 1867 4, 939, 4, 939, 4, 939, 2, 943, 1868 5, 943, 4, 2, 943, 948, 5, 943, 1869 4, 2, 949, 950, 951, 949, 940, 952, 1870 4, 4, 942, 939, 939, 4, 4, 939, 1871 4, 939, 4, 939, 2, 953, 5, 953, 1872 4, 2, 953, 954, 5, 953, 4, 2, 1873 4, 956, 957, 958, 956, 4, 959, 955, 1874 2, 4, 956, 957, 958, 956, 953, 959, 1875 955, 2, 956, 5, 956, 4, 2, 956, 1876 960, 5, 956, 4, 2, 962, 961, 2, 1877 4, 956, 960, 958, 956, 953, 959, 955, 1878 2, 4, 964, 965, 4, 953, 966, 963, 1879 2, 963, 5, 963, 4, 2, 963, 967, 1880 5, 963, 4, 2, 969, 968, 2, 4, 1881 967, 965, 4, 953, 966, 963, 2, 947, 1882 970, 971, 947, 973, 974, 4, 4, 4, 1883 972, 972, 4, 4, 972, 4, 972, 4, 1884 972, 2, 947, 5, 947, 4, 2, 947, 1885 975, 5, 947, 4, 2, 976, 977, 978, 1886 976, 972, 979, 4, 4, 980, 972, 981, 1887 4, 4, 972, 4, 972, 4, 972, 2, 1888 976, 977, 978, 976, 979, 980, 981, 4, 1889 2, 976, 5, 976, 4, 2, 976, 982, 1890 5, 976, 4, 2, 4, 983, 984, 4, 1891 976, 985, 979, 2, 979, 5, 979, 4, 1892 2, 979, 986, 5, 979, 4, 2, 988, 1893 987, 2, 4, 986, 984, 4, 976, 985, 1894 979, 2, 989, 990, 991, 989, 992, 993, 1895 4, 4, 4, 992, 992, 994, 4, 4, 1896 992, 4, 992, 4, 992, 2, 989, 5, 1897 989, 4, 2, 989, 995, 5, 989, 4, 1898 2, 996, 997, 998, 996, 992, 999, 4, 1899 4, 1000, 992, 1001, 992, 4, 4, 992, 1900 4, 992, 4, 992, 2, 996, 997, 998, 1901 996, 999, 1002, 1001, 4, 2, 996, 5, 1902 996, 4, 2, 996, 1003, 5, 996, 4, 1903 2, 4, 1004, 1005, 4, 996, 1006, 999, 1904 2, 999, 5, 999, 4, 2, 999, 1007, 1905 5, 999, 4, 2, 1009, 1008, 2, 4, 1906 1007, 1005, 4, 996, 1006, 999, 2, 1002, 1907 1010, 1011, 1002, 1012, 1013, 4, 4, 4, 1908 1012, 1012, 4, 4, 1012, 4, 1012, 4, 1909 1012, 2, 1002, 5, 1002, 4, 2, 1002, 1910 1014, 5, 1002, 4, 2, 996, 997, 998, 1911 996, 1012, 999, 4, 4, 1002, 1012, 1001, 1912 1012, 4, 4, 1012, 4, 1012, 4, 1012, 1913 2, 1015, 1016, 1017, 1015, 1019, 1020, 4, 1914 4, 4, 1021, 1018, 1018, 4, 4, 1018, 1915 4, 1018, 4, 1018, 2, 1022, 1023, 1024, 1916 1022, 940, 1025, 4, 4, 4, 942, 939, 1917 939, 4, 4, 939, 4, 939, 4, 939, 1918 2, 1026, 5, 1026, 4, 2, 1026, 1027, 1919 5, 1026, 4, 2, 4, 1029, 1030, 4, 1920 1026, 1031, 1028, 2, 1028, 5, 1028, 4, 1921 2, 1028, 1032, 5, 1028, 4, 2, 1034, 1922 1033, 2, 4, 1032, 1030, 4, 1026, 1031, 1923 1028, 2, 4, 1035, 1036, 4, 1002, 1037, 1924 1013, 2, 1013, 5, 1013, 4, 2, 1013, 1925 1038, 5, 1013, 4, 2, 1040, 1039, 2, 1926 4, 1038, 1036, 4, 1002, 1037, 1013, 2, 1927 1002, 1010, 1011, 1002, 992, 1013, 4, 4, 1928 4, 992, 992, 4, 4, 992, 4, 992, 1929 4, 992, 2, 4, 1041, 1042, 4, 989, 1930 1043, 993, 2, 993, 5, 993, 4, 2, 1931 993, 1044, 5, 993, 4, 2, 1046, 1045, 1932 2, 4, 1044, 1042, 4, 989, 1043, 993, 1933 2, 4, 1047, 1048, 1049, 1047, 4, 1050, 1934 1051, 994, 2, 1047, 5, 1047, 4, 2, 1935 1047, 1052, 5, 1047, 4, 2, 1054, 1053, 1936 2, 4, 1047, 1052, 1049, 1047, 4, 1050, 1937 1051, 994, 2, 1055, 1056, 1057, 1055, 1058, 1938 1001, 4, 2, 1055, 5, 1055, 4, 2, 1939 1055, 1059, 5, 1055, 4, 2, 4, 1060, 1940 1061, 4, 1055, 1062, 1058, 2, 1058, 5, 1941 1058, 4, 2, 1058, 1063, 5, 1058, 4, 1942 2, 1065, 1064, 2, 4, 1063, 1061, 4, 1943 1055, 1062, 1058, 2, 4, 1067, 1068, 1069, 1944 1067, 4, 1070, 1066, 2, 4, 1067, 1068, 1945 1069, 1067, 976, 1070, 1066, 2, 1067, 5, 1946 1067, 4, 2, 1067, 1071, 5, 1067, 4, 1947 2, 1073, 1072, 2, 4, 1067, 1071, 1069, 1948 1067, 976, 1070, 1066, 2, 4, 1074, 1075, 1949 4, 947, 1076, 974, 2, 974, 5, 974, 1950 4, 2, 974, 1077, 5, 974, 4, 2, 1951 1079, 1078, 2, 4, 1077, 1075, 4, 947, 1952 1076, 974, 2, 4, 1080, 1081, 4, 943, 1953 1082, 946, 2, 946, 5, 946, 4, 2, 1954 946, 1083, 5, 946, 4, 2, 1085, 1084, 1955 2, 4, 1083, 1081, 4, 943, 1082, 946, 1956 2, 943, 1086, 5, 943, 4, 2, 1087, 1957 1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 1958 3, 3, 1, 1087, 1, 4, 1087, 4, 1959 1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 1960 3, 3, 1, 36, 1092, 36, 1094, 1095, 1961 1096, 1097, 1094, 1095, 1096, 1097, 1093, 1093, 1962 1, 46, 1087, 46, 1088, 1089, 1090, 1091, 1963 1088, 1089, 1090, 1091, 3, 3, 1, 114, 1964 1098, 114, 1100, 1101, 1102, 1103, 1100, 1101, 1965 1102, 1103, 1099, 1099, 1, 147, 1104, 147, 1966 1106, 1107, 1108, 1109, 1106, 1107, 1108, 1109, 1967 1105, 1105, 1, 207, 1104, 207, 1106, 1107, 1968 1108, 1109, 1106, 1107, 1108, 1109, 1105, 1105, 1969 1, 138, 1104, 138, 1106, 1107, 1108, 1109, 1970 1106, 1107, 1108, 1109, 1105, 1105, 1, 258, 1971 1087, 258, 1088, 1089, 1090, 1091, 1088, 1089, 1972 1090, 1091, 3, 3, 1, 268, 1104, 268, 1973 1106, 1107, 1108, 1109, 1106, 1107, 1108, 1109, 1974 1105, 1105, 1, 271, 1087, 271, 1088, 1089, 1975 1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 1976 1, 278, 1087, 278, 1088, 1089, 1090, 1091, 1977 1088, 1089, 1090, 1091, 3, 3, 1, 262, 1978 1087, 262, 1088, 1089, 1090, 1091, 1088, 1089, 1979 1090, 1091, 3, 3, 1, 291, 1087, 291, 1980 1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 1981 3, 3, 1, 294, 1087, 294, 1088, 1089, 1982 1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 1983 1, 304, 1087, 304, 1088, 1089, 1090, 1091, 1984 1088, 1089, 1090, 1091, 3, 3, 1, 311, 1985 1087, 311, 1088, 1089, 1090, 1091, 1088, 1089, 1986 1090, 1091, 3, 3, 1, 314, 1087, 314, 1987 1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 1988 3, 3, 1, 317, 1087, 317, 1088, 1089, 1989 1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 1990 1, 341, 1104, 341, 1106, 1107, 1108, 1109, 1991 1106, 1107, 1108, 1109, 1105, 1105, 1, 343, 1992 1087, 343, 1088, 1089, 1090, 1091, 1088, 1089, 1993 1090, 1091, 3, 3, 1, 328, 1087, 328, 1994 1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 1995 3, 3, 1, 308, 1087, 308, 1088, 1089, 1996 1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 1997 1, 362, 1087, 362, 1088, 1089, 1090, 1091, 1998 1088, 1089, 1090, 1091, 3, 3, 1, 370, 1999 1087, 370, 1088, 1089, 1090, 1091, 1088, 1089, 2000 1090, 1091, 3, 3, 1, 373, 1087, 373, 2001 1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 2002 3, 3, 1, 382, 1087, 382, 1088, 1089, 2003 1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 2004 1, 289, 1087, 289, 1088, 1089, 1090, 1091, 2005 1088, 1089, 1090, 1091, 3, 3, 1, 261, 2006 1087, 261, 1088, 1089, 1090, 1091, 1088, 1089, 2007 1090, 1091, 3, 3, 1, 258, 1104, 258, 2008 1106, 1107, 1108, 1109, 1106, 1107, 1108, 1109, 2009 1105, 1105, 1, 438, 1087, 438, 1088, 1089, 2010 1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 2011 1, 441, 1087, 441, 1088, 1089, 1090, 1091, 2012 1088, 1089, 1090, 1091, 3, 3, 1, 442, 2013 1087, 442, 1088, 1089, 1090, 1091, 1088, 1089, 2014 1090, 1091, 3, 3, 1, 456, 1087, 456, 2015 1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 2016 3, 3, 1, 459, 1087, 459, 1088, 1089, 2017 1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 2018 1, 469, 1087, 469, 1088, 1089, 1090, 1091, 2019 1088, 1089, 1090, 1091, 3, 3, 1, 476, 2020 1087, 476, 1088, 1089, 1090, 1091, 1088, 1089, 2021 1090, 1091, 3, 3, 1, 479, 1087, 479, 2022 1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 2023 3, 3, 1, 482, 1087, 482, 1088, 1089, 2024 1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 2025 1, 499, 1098, 499, 1100, 1101, 1102, 1103, 2026 1100, 1101, 1102, 1103, 1099, 1099, 1, 502, 2027 1087, 502, 1088, 1089, 1090, 1091, 1088, 1089, 2028 1090, 1091, 3, 3, 1, 493, 1087, 493, 2029 1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 2030 3, 3, 1, 473, 1087, 473, 1088, 1089, 2031 1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 2032 1, 522, 1087, 522, 1088, 1089, 1090, 1091, 2033 1088, 1089, 1090, 1091, 3, 3, 1, 530, 2034 1087, 530, 1088, 1089, 1090, 1091, 1088, 1089, 2035 1090, 1091, 3, 3, 1, 533, 1087, 533, 2036 1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 2037 3, 3, 1, 542, 1087, 542, 1088, 1089, 2038 1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 2039 1, 454, 1087, 454, 1088, 1089, 1090, 1091, 2040 1088, 1089, 1090, 1091, 3, 3, 1, 49, 2041 1087, 49, 1088, 1089, 1090, 1091, 1088, 1089, 2042 1090, 1091, 3, 3, 1, 583, 1110, 583, 2043 1112, 1113, 1114, 1115, 1112, 1113, 1114, 1115, 2044 1111, 1111, 1, 586, 1110, 586, 1112, 1113, 2045 1114, 1115, 1112, 1113, 1114, 1115, 1111, 1111, 2046 1, 589, 1110, 589, 1112, 1113, 1114, 1115, 2047 1112, 1113, 1114, 1115, 1111, 1111, 1, 590, 2048 1110, 590, 1112, 1113, 1114, 1115, 1112, 1113, 2049 1114, 1115, 1111, 1111, 1, 600, 1110, 600, 2050 1112, 1113, 1114, 1115, 1112, 1113, 1114, 1115, 2051 1111, 1111, 1, 628, 1110, 628, 1112, 1113, 2052 1114, 1115, 1112, 1113, 1114, 1115, 1111, 1111, 2053 1, 631, 1110, 631, 1112, 1113, 1114, 1115, 2054 1112, 1113, 1114, 1115, 1111, 1111, 1, 639, 2055 1110, 639, 1112, 1113, 1114, 1115, 1112, 1113, 2056 1114, 1115, 1111, 1111, 1, 642, 1110, 642, 2057 1112, 1113, 1114, 1115, 1112, 1113, 1114, 1115, 2058 1111, 1111, 1, 655, 1110, 655, 1112, 1113, 2059 1114, 1115, 1112, 1113, 1114, 1115, 1111, 1111, 2060 1, 661, 1110, 661, 1112, 1113, 1114, 1115, 2061 1112, 1113, 1114, 1115, 1111, 1111, 1, 665, 2062 1110, 665, 1112, 1113, 1114, 1115, 1112, 1113, 2063 1114, 1115, 1111, 1111, 1, 668, 1110, 668, 2064 1112, 1113, 1114, 1115, 1112, 1113, 1114, 1115, 2065 1111, 1111, 1, 684, 1110, 684, 1112, 1113, 2066 1114, 1115, 1112, 1113, 1114, 1115, 1111, 1111, 2067 1, 687, 1110, 687, 1112, 1113, 1114, 1115, 2068 1112, 1113, 1114, 1115, 1111, 1111, 1, 696, 2069 1110, 696, 1112, 1113, 1114, 1115, 1112, 1113, 2070 1114, 1115, 1111, 1111, 1, 669, 1110, 669, 2071 1112, 1113, 1114, 1115, 1112, 1113, 1114, 1115, 2072 1111, 1111, 1, 715, 1110, 715, 1112, 1113, 2073 1114, 1115, 1112, 1113, 1114, 1115, 1111, 1111, 2074 1, 718, 1110, 718, 1112, 1113, 1114, 1115, 2075 1112, 1113, 1114, 1115, 1111, 1111, 1, 732, 2076 1110, 732, 1112, 1113, 1114, 1115, 1112, 1113, 2077 1114, 1115, 1111, 1111, 1, 738, 1110, 738, 2078 1112, 1113, 1114, 1115, 1112, 1113, 1114, 1115, 2079 1111, 1111, 1, 746, 1087, 746, 1088, 1089, 2080 1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 2081 1, 747, 1087, 747, 1088, 1089, 1090, 1091, 2082 1088, 1089, 1090, 1091, 3, 3, 1, 758, 2083 1087, 758, 1088, 1089, 1090, 1091, 1088, 1089, 2084 1090, 1091, 3, 3, 1, 763, 1087, 763, 2085 1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 2086 3, 3, 1, 767, 1087, 767, 1088, 1089, 2087 1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 2088 1, 770, 1087, 770, 1088, 1089, 1090, 1091, 2089 1088, 1089, 1090, 1091, 3, 3, 1, 785, 2090 1110, 785, 1112, 1113, 1114, 1115, 1112, 1113, 2091 1114, 1115, 1111, 1111, 1, 788, 1110, 788, 2092 1112, 1113, 1114, 1115, 1112, 1113, 1114, 1115, 2093 1111, 1111, 1, 803, 1110, 803, 1112, 1113, 2094 1114, 1115, 1112, 1113, 1114, 1115, 1111, 1111, 2095 1, 811, 1110, 811, 1112, 1113, 1114, 1115, 2096 1112, 1113, 1114, 1115, 1111, 1111, 1, 814, 2097 1110, 814, 1112, 1113, 1114, 1115, 1112, 1113, 2098 1114, 1115, 1111, 1111, 1, 826, 1110, 826, 2099 1112, 1113, 1114, 1115, 1112, 1113, 1114, 1115, 2100 1111, 1111, 1, 831, 1087, 831, 1088, 1089, 2101 1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 2102 1, 892, 1092, 892, 1094, 1095, 1096, 1097, 2103 1094, 1095, 1096, 1097, 1093, 1093, 1, 27, 2104 1092, 27, 1094, 1095, 1096, 1097, 1094, 1095, 2105 1096, 1097, 1093, 1093, 1, 943, 1087, 943, 2106 1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 2107 3, 3, 1, 953, 1092, 953, 1094, 1095, 2108 1096, 1097, 1094, 1095, 1096, 1097, 1093, 1093, 2109 1, 956, 1087, 956, 1088, 1089, 1090, 1091, 2110 1088, 1089, 1090, 1091, 3, 3, 1, 963, 2111 1087, 963, 1088, 1089, 1090, 1091, 1088, 1089, 2112 1090, 1091, 3, 3, 1, 947, 1087, 947, 2113 1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 2114 3, 3, 1, 976, 1087, 976, 1088, 1089, 2115 1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 2116 1, 979, 1087, 979, 1088, 1089, 1090, 1091, 2117 1088, 1089, 1090, 1091, 3, 3, 1, 989, 2118 1087, 989, 1088, 1089, 1090, 1091, 1088, 1089, 2119 1090, 1091, 3, 3, 1, 996, 1087, 996, 2120 1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 2121 3, 3, 1, 999, 1087, 999, 1088, 1089, 2122 1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 2123 1, 1002, 1087, 1002, 1088, 1089, 1090, 1091, 2124 1088, 1089, 1090, 1091, 3, 3, 1, 1026, 2125 1092, 1026, 1094, 1095, 1096, 1097, 1094, 1095, 2126 1096, 1097, 1093, 1093, 1, 1028, 1087, 1028, 2127 1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 2128 3, 3, 1, 1013, 1087, 1013, 1088, 1089, 2129 1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 2130 1, 993, 1087, 993, 1088, 1089, 1090, 1091, 2131 1088, 1089, 1090, 1091, 3, 3, 1, 1047, 2132 1087, 1047, 1088, 1089, 1090, 1091, 1088, 1089, 2133 1090, 1091, 3, 3, 1, 1055, 1087, 1055, 2134 1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 2135 3, 3, 1, 1058, 1087, 1058, 1088, 1089, 2136 1090, 1091, 1088, 1089, 1090, 1091, 3, 3, 2137 1, 1067, 1087, 1067, 1088, 1089, 1090, 1091, 2138 1088, 1089, 1090, 1091, 3, 3, 1, 974, 2139 1087, 974, 1088, 1089, 1090, 1091, 1088, 1089, 2140 1090, 1091, 3, 3, 1, 946, 1087, 946, 2141 1088, 1089, 1090, 1091, 1088, 1089, 1090, 1091, 2142 3, 3, 1, 943, 1092, 943, 1094, 1095, 2143 1096, 1097, 1094, 1095, 1096, 1097, 1093, 1093, 2144 1, 0 2145 }; 2146 2147 static const int16_t _rfc5322_trans_targs[] = { 2148 742, 0, 0, 2, 3, 4, 743, 6, 2149 7, 8, 9, 10, 11, 12, 13, 14, 2150 15, 16, 645, 17, 18, 19, 644, 21, 2151 568, 640, 577, 18, 19, 20, 640, 577, 2152 21, 22, 23, 573, 21, 744, 25, 26, 2153 27, 28, 29, 30, 31, 32, 33, 34, 2154 35, 388, 393, 565, 745, 37, 38, 39, 2155 40, 41, 42, 43, 44, 45, 46, 308, 2156 47, 47, 48, 49, 50, 54, 51, 52, 2157 53, 50, 55, 56, 57, 299, 304, 58, 2158 59, 60, 61, 54, 65, 62, 63, 64, 2159 61, 65, 66, 67, 68, 284, 288, 69, 2160 70, 71, 72, 283, 80, 76, 73, 74, 2161 75, 72, 77, 78, 79, 279, 81, 82, 2162 83, 275, 81, 82, 83, 275, 746, 85, 2163 86, 87, 88, 89, 90, 91, 92, 93, 2164 94, 179, 95, 96, 97, 178, 99, 102, 2165 174, 111, 96, 97, 98, 174, 111, 99, 2166 100, 101, 107, 99, 747, 103, 103, 104, 2167 105, 106, 103, 107, 108, 109, 110, 107, 2168 112, 113, 114, 165, 170, 115, 116, 117, 2169 118, 111, 122, 119, 120, 121, 118, 122, 2170 123, 124, 125, 150, 154, 126, 127, 128, 2171 129, 149, 137, 133, 130, 131, 132, 129, 2172 134, 135, 136, 145, 138, 139, 140, 99, 2173 102, 141, 111, 138, 139, 140, 141, 138, 2174 748, 141, 142, 143, 144, 141, 146, 147, 2175 148, 145, 151, 152, 153, 150, 154, 155, 2176 156, 157, 158, 154, 158, 159, 160, 161, 2177 162, 163, 164, 161, 166, 166, 167, 168, 2178 169, 166, 171, 172, 173, 170, 175, 176, 2179 177, 174, 749, 180, 181, 274, 183, 186, 2180 269, 197, 180, 181, 182, 269, 197, 750, 2181 183, 184, 185, 192, 183, 751, 187, 187, 2182 188, 189, 190, 752, 187, 191, 192, 193, 2183 194, 195, 753, 192, 196, 198, 199, 200, 2184 258, 264, 754, 201, 202, 203, 204, 197, 2185 209, 755, 205, 206, 207, 756, 204, 208, 2186 209, 210, 211, 212, 240, 245, 757, 213, 2187 214, 215, 216, 239, 225, 221, 758, 217, 2188 218, 219, 759, 216, 220, 222, 223, 224, 2189 234, 760, 226, 227, 228, 183, 186, 229, 2190 197, 226, 227, 228, 229, 226, 761, 229, 2191 230, 231, 232, 762, 229, 233, 235, 236, 2192 237, 763, 234, 238, 241, 242, 243, 764, 2193 240, 244, 245, 246, 247, 248, 250, 765, 2194 245, 249, 250, 251, 252, 253, 766, 254, 2195 255, 256, 767, 253, 257, 259, 259, 260, 2196 261, 262, 768, 259, 263, 265, 266, 267, 2197 769, 264, 268, 270, 271, 272, 770, 269, 2198 273, 771, 276, 277, 278, 275, 280, 281, 2199 282, 279, 285, 286, 287, 284, 288, 289, 2200 290, 291, 292, 288, 292, 293, 294, 295, 2201 296, 297, 298, 295, 300, 300, 301, 302, 2202 303, 300, 305, 306, 307, 304, 308, 309, 2203 310, 311, 316, 772, 312, 313, 314, 773, 2204 311, 315, 317, 318, 319, 377, 383, 774, 2205 320, 321, 322, 323, 316, 328, 775, 324, 2206 325, 326, 776, 323, 327, 328, 329, 330, 2207 331, 359, 364, 777, 332, 333, 334, 335, 2208 358, 344, 340, 778, 336, 337, 338, 779, 2209 335, 339, 341, 342, 343, 353, 780, 345, 2210 346, 347, 348, 345, 346, 347, 348, 781, 2211 349, 350, 351, 782, 348, 352, 354, 355, 2212 356, 783, 353, 357, 360, 361, 362, 784, 2213 359, 363, 364, 365, 366, 367, 369, 785, 2214 364, 368, 369, 370, 371, 372, 786, 373, 2215 374, 375, 787, 372, 376, 378, 378, 379, 2216 380, 381, 788, 378, 382, 384, 385, 386, 2217 789, 383, 387, 389, 390, 391, 790, 388, 2218 392, 394, 505, 393, 521, 522, 523, 402, 2219 395, 397, 480, 396, 398, 399, 400, 401, 2220 398, 403, 405, 406, 407, 408, 413, 403, 2221 404, 791, 405, 406, 407, 408, 413, 792, 2222 409, 410, 411, 793, 408, 412, 414, 415, 2223 416, 421, 794, 417, 418, 419, 795, 416, 2224 420, 422, 443, 421, 478, 479, 453, 423, 2225 424, 426, 427, 475, 425, 428, 436, 437, 2226 438, 431, 439, 434, 428, 429, 430, 431, 2227 434, 796, 432, 433, 797, 428, 435, 436, 2228 437, 438, 439, 798, 440, 441, 442, 799, 2229 444, 442, 451, 452, 448, 445, 447, 446, 2230 800, 444, 449, 450, 427, 442, 801, 454, 2231 461, 456, 462, 472, 455, 421, 459, 457, 2232 458, 802, 456, 460, 803, 456, 463, 464, 2233 465, 421, 466, 459, 463, 464, 465, 466, 2234 804, 467, 468, 469, 805, 469, 470, 471, 2235 469, 806, 453, 473, 474, 462, 423, 476, 2236 477, 807, 481, 483, 484, 502, 482, 485, 2237 486, 487, 488, 485, 486, 487, 488, 808, 2238 489, 490, 491, 809, 492, 491, 500, 501, 2239 496, 497, 493, 495, 494, 810, 492, 498, 2240 499, 484, 491, 811, 480, 503, 504, 506, 2241 508, 514, 507, 509, 812, 510, 511, 512, 2242 813, 509, 513, 515, 517, 518, 516, 814, 2243 514, 519, 520, 393, 815, 524, 531, 526, 2244 532, 562, 525, 529, 527, 528, 816, 526, 2245 530, 817, 533, 551, 552, 553, 536, 554, 2246 546, 533, 534, 535, 536, 546, 818, 537, 2247 536, 540, 541, 542, 538, 539, 538, 819, 2248 543, 545, 548, 544, 820, 533, 547, 542, 2249 549, 550, 532, 551, 552, 553, 554, 821, 2250 555, 556, 557, 822, 558, 557, 560, 561, 2251 559, 558, 557, 823, 523, 563, 564, 566, 2252 567, 824, 569, 569, 570, 571, 572, 569, 2253 573, 574, 575, 576, 573, 578, 579, 580, 2254 631, 636, 581, 582, 583, 584, 577, 588, 2255 585, 586, 587, 584, 588, 589, 590, 591, 2256 616, 620, 592, 593, 594, 595, 615, 603, 2257 599, 596, 597, 598, 595, 600, 601, 602, 2258 611, 604, 605, 606, 21, 568, 607, 577, 2259 604, 605, 606, 607, 604, 825, 607, 608, 2260 609, 610, 607, 612, 613, 614, 611, 617, 2261 618, 619, 616, 620, 621, 622, 623, 624, 2262 620, 624, 625, 626, 627, 628, 629, 630, 2263 627, 632, 632, 633, 634, 635, 632, 637, 2264 638, 639, 636, 641, 642, 643, 640, 826, 2265 646, 647, 740, 649, 652, 735, 663, 646, 2266 647, 648, 735, 663, 827, 649, 650, 651, 2267 658, 649, 828, 653, 653, 654, 655, 656, 2268 829, 653, 657, 658, 659, 660, 661, 830, 2269 658, 662, 664, 665, 666, 724, 730, 831, 2270 667, 668, 669, 670, 663, 675, 832, 671, 2271 672, 673, 833, 670, 674, 675, 676, 677, 2272 678, 706, 711, 834, 679, 680, 681, 682, 2273 705, 691, 687, 835, 683, 684, 685, 836, 2274 682, 686, 688, 689, 690, 700, 837, 692, 2275 693, 694, 649, 652, 695, 663, 692, 693, 2276 694, 695, 692, 838, 695, 696, 697, 698, 2277 839, 695, 699, 701, 702, 703, 840, 700, 2278 704, 707, 708, 709, 841, 706, 710, 711, 2279 712, 713, 714, 716, 842, 711, 715, 716, 2280 717, 718, 719, 843, 720, 721, 722, 844, 2281 719, 723, 725, 725, 726, 727, 728, 845, 2282 725, 729, 731, 732, 733, 846, 730, 734, 2283 736, 737, 738, 847, 735, 739, 848, 1, 2284 5, 24, 36, 84, 1, 2, 5, 24, 2285 36, 84, 1, 2, 5, 24, 36, 84, 2286 1, 2, 5, 24, 36, 84, 1, 2, 2287 5, 24, 36, 84 2288 }; 2289 2290 static const int8_t _rfc5322_trans_actions[] = { 2291 0, 0, 21, 0, 0, 0, 0, 0, 2292 0, 0, 0, 0, 0, 0, 0, 0, 2293 0, 0, 9, 9, 3, 3, 3, 1, 2294 0, 3, 3, 0, 0, 0, 0, 0, 2295 3, 3, 3, 3, 0, 0, 0, 0, 2296 0, 0, 0, 0, 0, 0, 0, 0, 2297 0, 0, 3, 0, 0, 0, 0, 0, 2298 0, 0, 0, 0, 0, 0, 0, 9, 2299 9, 0, 0, 0, 0, 0, 0, 0, 2300 5, 5, 0, 0, 1, 0, 0, 0, 2301 0, 0, 0, 1, 1, 0, 0, 5, 2302 5, 0, 0, 0, 1, 0, 1, 0, 2303 0, 0, 0, 1, 0, 0, 0, 0, 2304 5, 5, 0, 0, 1, 0, 7, 7, 2305 7, 7, 0, 0, 0, 0, 0, 0, 2306 0, 0, 0, 0, 0, 0, 0, 0, 2307 0, 9, 9, 3, 3, 3, 1, 0, 2308 3, 3, 0, 0, 0, 0, 0, 3, 2309 3, 3, 3, 0, 0, 1, 0, 0, 2310 0, 5, 5, 0, 0, 0, 5, 5, 2311 0, 0, 1, 0, 0, 0, 0, 0, 2312 0, 1, 1, 0, 0, 5, 5, 0, 2313 0, 0, 1, 0, 1, 0, 0, 0, 2314 0, 1, 0, 0, 0, 0, 5, 5, 2315 0, 0, 1, 0, 35, 35, 35, 32, 2316 7, 35, 35, 3, 3, 3, 3, 0, 2317 0, 0, 0, 0, 5, 5, 0, 0, 2318 5, 5, 0, 0, 5, 5, 0, 0, 2319 0, 5, 1, 5, 0, 0, 0, 0, 2320 0, 0, 5, 5, 1, 0, 0, 0, 2321 5, 5, 0, 0, 5, 5, 0, 0, 2322 5, 5, 0, 3, 3, 3, 1, 0, 2323 3, 3, 0, 0, 0, 0, 0, 0, 2324 3, 3, 3, 3, 0, 0, 1, 0, 2325 0, 0, 5, 0, 5, 5, 0, 0, 2326 0, 5, 0, 5, 5, 0, 0, 1, 2327 0, 0, 0, 0, 0, 0, 0, 1, 2328 1, 0, 0, 0, 5, 0, 5, 5, 2329 0, 0, 0, 1, 0, 1, 0, 0, 2330 0, 0, 0, 1, 0, 0, 0, 0, 2331 0, 5, 0, 5, 5, 0, 0, 1, 2332 0, 0, 35, 35, 35, 32, 7, 35, 2333 35, 3, 3, 3, 3, 0, 0, 0, 2334 0, 0, 5, 0, 5, 5, 0, 0, 2335 5, 0, 5, 5, 0, 0, 5, 0, 2336 5, 5, 0, 0, 0, 5, 1, 0, 2337 5, 5, 0, 0, 0, 0, 0, 0, 2338 0, 5, 0, 5, 5, 1, 0, 0, 2339 0, 5, 0, 5, 5, 0, 0, 5, 2340 0, 5, 5, 0, 0, 5, 0, 5, 2341 5, 0, 0, 0, 5, 5, 0, 0, 2342 5, 5, 0, 0, 5, 5, 0, 0, 2343 0, 5, 1, 5, 0, 0, 0, 0, 2344 0, 0, 5, 5, 1, 0, 0, 0, 2345 5, 5, 0, 0, 5, 5, 0, 0, 2346 0, 0, 0, 0, 0, 0, 5, 0, 2347 5, 5, 0, 0, 1, 0, 0, 0, 2348 0, 0, 0, 0, 1, 1, 0, 0, 2349 0, 5, 0, 5, 5, 0, 0, 0, 2350 1, 0, 1, 0, 0, 0, 0, 0, 2351 1, 0, 0, 0, 0, 0, 5, 0, 2352 5, 5, 0, 0, 1, 0, 0, 7, 2353 7, 7, 7, 0, 0, 0, 0, 0, 2354 0, 0, 5, 0, 5, 5, 0, 0, 2355 5, 0, 5, 5, 0, 0, 5, 0, 2356 5, 5, 0, 0, 0, 5, 1, 0, 2357 5, 5, 0, 0, 0, 0, 0, 0, 2358 0, 5, 0, 5, 5, 1, 0, 0, 2359 0, 5, 0, 5, 5, 0, 0, 5, 2360 0, 5, 5, 0, 0, 5, 0, 5, 2361 5, 1, 1, 1, 0, 0, 1, 0, 2362 0, 0, 1, 0, 0, 0, 0, 5, 2363 5, 7, 7, 7, 7, 7, 7, 0, 2364 0, 0, 0, 0, 0, 0, 0, 0, 2365 0, 0, 5, 0, 5, 5, 0, 0, 2366 0, 3, 0, 0, 0, 5, 0, 5, 2367 5, 1, 1, 1, 0, 0, 1, 1, 2368 0, 0, 0, 23, 0, 7, 7, 7, 2369 7, 7, 7, 29, 0, 0, 0, 0, 2370 5, 0, 0, 0, 0, 5, 5, 0, 2371 0, 0, 0, 0, 0, 0, 3, 0, 2372 1, 1, 0, 0, 23, 0, 0, 0, 2373 0, 23, 5, 5, 5, 0, 0, 0, 2374 0, 0, 0, 26, 0, 0, 5, 0, 2375 0, 0, 5, 5, 0, 7, 7, 7, 2376 7, 7, 7, 29, 0, 0, 0, 0, 2377 0, 0, 0, 3, 0, 1, 0, 0, 2378 0, 0, 26, 5, 5, 5, 23, 5, 2379 5, 0, 0, 0, 0, 23, 0, 7, 2380 7, 7, 7, 0, 0, 0, 0, 0, 2381 0, 0, 3, 0, 1, 1, 0, 0, 2382 1, 26, 0, 0, 0, 0, 26, 5, 2383 5, 5, 0, 0, 23, 5, 5, 0, 2384 0, 1, 0, 0, 0, 0, 0, 5, 2385 0, 5, 5, 0, 0, 23, 0, 0, 2386 23, 5, 5, 0, 0, 0, 0, 0, 2387 0, 26, 0, 5, 0, 0, 0, 5, 2388 5, 0, 7, 7, 7, 7, 7, 7, 2389 29, 0, 0, 0, 0, 5, 0, 1, 2390 1, 0, 0, 1, 1, 23, 23, 0, 2391 0, 0, 26, 0, 0, 5, 5, 26, 2392 5, 5, 5, 0, 0, 0, 0, 0, 2393 0, 0, 3, 0, 1, 1, 0, 0, 2394 26, 26, 0, 0, 26, 5, 5, 0, 2395 19, 0, 1, 0, 0, 0, 5, 5, 2396 0, 0, 0, 5, 5, 0, 0, 1, 2397 0, 0, 0, 0, 0, 0, 1, 1, 2398 0, 0, 5, 5, 0, 0, 0, 1, 2399 0, 1, 0, 0, 0, 0, 1, 0, 2400 0, 0, 0, 5, 5, 0, 0, 1, 2401 0, 35, 35, 35, 32, 7, 35, 35, 2402 3, 3, 3, 3, 0, 0, 0, 0, 2403 0, 5, 5, 0, 0, 5, 5, 0, 2404 0, 5, 5, 0, 0, 0, 5, 1, 2405 5, 0, 0, 0, 0, 0, 0, 5, 2406 5, 1, 0, 0, 0, 5, 5, 0, 2407 0, 5, 5, 0, 0, 5, 5, 0, 2408 3, 3, 3, 1, 0, 3, 3, 0, 2409 0, 0, 0, 0, 0, 3, 3, 3, 2410 3, 0, 0, 1, 0, 0, 0, 5, 2411 0, 5, 5, 0, 0, 0, 5, 0, 2412 5, 5, 0, 0, 1, 0, 0, 0, 2413 0, 0, 0, 0, 1, 1, 0, 0, 2414 0, 5, 0, 5, 5, 0, 0, 0, 2415 1, 0, 1, 0, 0, 0, 0, 0, 2416 1, 0, 0, 0, 0, 0, 5, 0, 2417 5, 5, 0, 0, 1, 0, 0, 35, 2418 35, 35, 32, 7, 35, 35, 3, 3, 2419 3, 3, 0, 0, 0, 0, 0, 5, 2420 0, 5, 5, 0, 0, 5, 0, 5, 2421 5, 0, 0, 5, 0, 5, 5, 0, 2422 0, 0, 5, 1, 0, 5, 5, 0, 2423 0, 0, 0, 0, 0, 0, 5, 0, 2424 5, 5, 1, 0, 0, 0, 5, 0, 2425 5, 5, 0, 0, 5, 0, 5, 5, 2426 0, 0, 5, 0, 5, 5, 0, 0, 2427 9, 9, 9, 9, 13, 13, 41, 41, 2428 41, 41, 11, 11, 38, 38, 38, 38, 2429 15, 15, 44, 44, 44, 44, 17, 17, 2430 47, 47, 47, 47 2431 }; 2432 2433 static const int8_t _rfc5322_eof_actions[] = { 2434 0, 0, 21, 21, 21, 21, 21, 21, 2435 21, 21, 21, 21, 21, 21, 21, 21, 2436 21, 21, 21, 21, 21, 21, 21, 21, 2437 21, 21, 21, 21, 21, 21, 21, 21, 2438 21, 21, 21, 21, 21, 21, 21, 21, 2439 21, 21, 21, 21, 21, 21, 21, 21, 2440 21, 21, 21, 21, 21, 21, 21, 21, 2441 21, 21, 21, 21, 21, 21, 21, 21, 2442 21, 21, 21, 21, 21, 21, 21, 21, 2443 21, 21, 21, 21, 21, 21, 21, 21, 2444 21, 21, 21, 21, 21, 21, 21, 21, 2445 21, 21, 21, 21, 21, 21, 21, 21, 2446 21, 21, 21, 21, 21, 21, 21, 21, 2447 21, 21, 21, 21, 21, 21, 21, 21, 2448 21, 21, 21, 21, 21, 21, 21, 21, 2449 21, 21, 21, 21, 21, 21, 21, 21, 2450 21, 21, 21, 21, 21, 21, 21, 21, 2451 21, 21, 21, 21, 21, 21, 21, 21, 2452 21, 21, 21, 21, 21, 21, 21, 21, 2453 21, 21, 21, 21, 21, 21, 21, 21, 2454 21, 21, 21, 21, 21, 21, 21, 21, 2455 21, 21, 21, 21, 21, 21, 21, 21, 2456 21, 21, 21, 21, 21, 21, 21, 21, 2457 21, 21, 21, 21, 21, 21, 21, 21, 2458 21, 21, 21, 21, 21, 21, 21, 21, 2459 21, 21, 21, 21, 21, 21, 21, 21, 2460 21, 21, 21, 21, 21, 21, 21, 21, 2461 21, 21, 21, 21, 21, 21, 21, 21, 2462 21, 21, 21, 21, 21, 21, 21, 21, 2463 21, 21, 21, 21, 21, 21, 21, 21, 2464 21, 21, 21, 21, 21, 21, 21, 21, 2465 21, 21, 21, 21, 21, 21, 21, 21, 2466 21, 21, 21, 21, 21, 21, 21, 21, 2467 21, 21, 21, 21, 21, 21, 21, 21, 2468 21, 21, 21, 21, 21, 21, 21, 21, 2469 21, 21, 21, 21, 21, 21, 21, 21, 2470 21, 21, 21, 21, 21, 21, 21, 21, 2471 21, 21, 21, 21, 21, 21, 21, 21, 2472 21, 21, 21, 21, 21, 21, 21, 21, 2473 21, 21, 21, 21, 21, 21, 21, 21, 2474 21, 21, 21, 21, 21, 21, 21, 21, 2475 21, 21, 21, 21, 21, 21, 21, 21, 2476 21, 21, 21, 21, 21, 21, 21, 21, 2477 21, 21, 21, 21, 21, 21, 21, 21, 2478 21, 21, 21, 21, 21, 21, 21, 21, 2479 21, 21, 21, 21, 21, 21, 21, 21, 2480 21, 21, 21, 21, 21, 21, 21, 21, 2481 21, 21, 21, 21, 21, 21, 21, 21, 2482 21, 21, 21, 21, 21, 21, 21, 21, 2483 21, 21, 21, 21, 21, 21, 21, 21, 2484 21, 21, 21, 21, 21, 21, 21, 21, 2485 21, 21, 21, 21, 21, 21, 21, 21, 2486 21, 21, 21, 21, 21, 21, 21, 21, 2487 21, 21, 21, 21, 21, 21, 21, 21, 2488 21, 21, 21, 21, 21, 21, 21, 21, 2489 21, 21, 21, 21, 21, 21, 21, 21, 2490 21, 21, 21, 21, 21, 21, 21, 21, 2491 21, 21, 21, 21, 21, 21, 21, 21, 2492 21, 21, 21, 21, 21, 21, 21, 21, 2493 21, 21, 21, 21, 21, 21, 21, 21, 2494 21, 21, 21, 21, 21, 21, 21, 21, 2495 21, 21, 21, 21, 21, 21, 21, 21, 2496 21, 21, 21, 21, 21, 21, 21, 21, 2497 21, 21, 21, 21, 21, 21, 21, 21, 2498 21, 21, 21, 21, 21, 21, 21, 21, 2499 21, 21, 21, 21, 21, 21, 21, 21, 2500 21, 21, 21, 21, 21, 21, 21, 21, 2501 21, 21, 21, 21, 21, 21, 21, 21, 2502 21, 21, 21, 21, 21, 21, 21, 21, 2503 21, 21, 21, 21, 21, 21, 21, 21, 2504 21, 21, 21, 21, 21, 21, 21, 21, 2505 21, 21, 21, 21, 21, 21, 21, 21, 2506 21, 21, 21, 21, 21, 21, 21, 21, 2507 21, 21, 21, 21, 21, 21, 21, 21, 2508 21, 21, 21, 21, 21, 21, 21, 21, 2509 21, 21, 21, 21, 21, 21, 21, 21, 2510 21, 21, 21, 21, 21, 21, 21, 21, 2511 21, 21, 21, 21, 21, 21, 21, 21, 2512 21, 21, 21, 21, 21, 21, 21, 21, 2513 21, 21, 21, 21, 21, 21, 21, 21, 2514 21, 21, 21, 21, 21, 21, 21, 21, 2515 21, 21, 21, 21, 21, 21, 21, 21, 2516 21, 21, 21, 21, 21, 21, 21, 21, 2517 21, 21, 21, 21, 21, 21, 21, 21, 2518 21, 21, 21, 21, 21, 21, 21, 21, 2519 21, 21, 21, 21, 21, 21, 21, 21, 2520 21, 21, 21, 21, 21, 21, 21, 21, 2521 21, 21, 21, 21, 21, 21, 21, 21, 2522 21, 21, 21, 21, 21, 21, 21, 21, 2523 21, 21, 21, 21, 21, 21, 21, 21, 2524 21, 21, 21, 21, 21, 21, 21, 21, 2525 21, 21, 21, 21, 21, 21, 21, 21, 2526 21, 21, 21, 21, 21, 0, 0, 0, 2527 13, 0, 11, 15, 15, 15, 0, 15, 2528 0, 0, 0, 0, 0, 0, 0, 0, 2529 0, 15, 0, 0, 0, 0, 0, 0, 2530 0, 0, 0, 15, 0, 0, 0, 0, 2531 0, 0, 0, 0, 0, 11, 0, 0, 2532 0, 0, 0, 0, 0, 0, 0, 17, 2533 17, 17, 17, 17, 17, 17, 17, 17, 2534 17, 17, 17, 17, 17, 17, 17, 17, 2535 17, 17, 17, 17, 0, 0, 0, 0, 2536 0, 0, 17, 17, 17, 17, 17, 17, 2537 0, 13, 13, 0, 13, 0, 0, 0, 2538 0, 0, 0, 0, 0, 0, 13, 0, 2539 0, 0, 0, 0, 0, 0, 0, 0, 2540 13 2541 }; 2542 2543 static const int rfc5322_start = 741; 2544 static const int rfc5322_first_final = 741; 2545 static const int rfc5322_error = 0; 2546 2547 static const int rfc5322_en_main = 741; 2548 2549 2550 #line 150 "Rfc5322HeaderParser.cpp" 2551 2552 #ifdef __clang__ 2553 #pragma clang diagnostic pop 2554 #endif 2555 2556 Rfc5322HeaderParser::Rfc5322HeaderParser(): 2557 listPostNo(false), m_error(false) 2558 { 2559 } 2560 2561 void Rfc5322HeaderParser::clear() 2562 { 2563 m_error = false; 2564 references.clear(); 2565 listPost.clear(); 2566 messageId.clear(); 2567 inReplyTo.clear(); 2568 listPostNo = false; 2569 } 2570 2571 bool Rfc5322HeaderParser::parse(const QByteArray &data) 2572 { 2573 clear(); 2574 2575 const char *p = data.constData(); 2576 const char *pe = p + data.length(); 2577 const char *eof = pe; 2578 int cs; 2579 2580 QByteArray str; 2581 QList<QByteArray> list; 2582 2583 2584 #line 2585 "Rfc5322HeaderParser.generated.cpp" 2585 { 2586 cs = rfc5322_start; 2587 } 2588 2589 #line 183 "Rfc5322HeaderParser.cpp" 2590 2591 #line 2592 "Rfc5322HeaderParser.generated.cpp" 2592 { 2593 int _klen; 2594 unsigned int _trans; 2595 const int8_t *_acts; 2596 unsigned int _nacts; 2597 const int8_t *_keys; 2598 2599 if ( p == pe ) 2600 goto _test_eof; 2601 if ( cs == 0 ) 2602 goto _out; 2603 _resume: 2604 _keys = _rfc5322_trans_keys + _rfc5322_key_offsets[cs]; 2605 _trans = _rfc5322_index_offsets[cs]; 2606 2607 _klen = _rfc5322_single_lengths[cs]; 2608 if ( _klen > 0 ) { 2609 const int8_t *_lower = _keys; 2610 const int8_t *_mid; 2611 const int8_t *_upper = _keys + _klen - 1; 2612 while (1) { 2613 if ( _upper < _lower ) 2614 break; 2615 2616 _mid = _lower + ((_upper-_lower) >> 1); 2617 if ( (*p) < *_mid ) 2618 _upper = _mid - 1; 2619 else if ( (*p) > *_mid ) 2620 _lower = _mid + 1; 2621 else { 2622 _trans += (unsigned int)(_mid - _keys); 2623 goto _match; 2624 } 2625 } 2626 _keys += _klen; 2627 _trans += _klen; 2628 } 2629 2630 _klen = _rfc5322_range_lengths[cs]; 2631 if ( _klen > 0 ) { 2632 const int8_t *_lower = _keys; 2633 const int8_t *_mid; 2634 const int8_t *_upper = _keys + (_klen<<1) - 2; 2635 while (1) { 2636 if ( _upper < _lower ) 2637 break; 2638 2639 _mid = _lower + (((_upper-_lower) >> 1) & ~1); 2640 if ( (*p) < _mid[0] ) 2641 _upper = _mid - 2; 2642 else if ( (*p) > _mid[1] ) 2643 _lower = _mid + 2; 2644 else { 2645 _trans += (unsigned int)((_mid - _keys)>>1); 2646 goto _match; 2647 } 2648 } 2649 _trans += _klen; 2650 } 2651 2652 _match: 2653 _trans = _rfc5322_indicies[_trans]; 2654 cs = _rfc5322_trans_targs[_trans]; 2655 2656 if ( _rfc5322_trans_actions[_trans] == 0 ) 2657 goto _again; 2658 2659 _acts = _rfc5322_actions + _rfc5322_trans_actions[_trans]; 2660 _nacts = (unsigned int) *_acts++; 2661 while ( _nacts-- > 0 ) 2662 { 2663 switch ( *_acts++ ) 2664 { 2665 case 0: 2666 #line 35 "Rfc5322HeaderParser.cpp" 2667 { 2668 #ifdef RAGEL_DEBUG 2669 qDebug() << "push_current_char " << *p; 2670 #endif 2671 str.append(*p); 2672 } 2673 break; 2674 case 1: 2675 #line 42 "Rfc5322HeaderParser.cpp" 2676 { 2677 #ifdef RAGEL_DEBUG 2678 qDebug() << "clear_str"; 2679 #endif 2680 str.clear(); 2681 } 2682 break; 2683 case 2: 2684 #line 49 "Rfc5322HeaderParser.cpp" 2685 { 2686 switch (*p) { 2687 case 'n': 2688 str += "\n"; 2689 break; 2690 case 'r': 2691 str += "\r"; 2692 break; 2693 case '0': 2694 str += "\0"; 2695 break; 2696 case '\\': 2697 str += "\\"; 2698 break; 2699 default: 2700 str += '\\' + *p; 2701 } 2702 #ifdef RAGEL_DEBUG 2703 qDebug() << "push_current_backslashed \\" << *p; 2704 #endif 2705 } 2706 break; 2707 case 3: 2708 #line 71 "Rfc5322HeaderParser.cpp" 2709 { 2710 #ifdef RAGEL_DEBUG 2711 qDebug() << "push_string_list " << str.data(); 2712 #endif 2713 list.append(str); 2714 str.clear(); 2715 } 2716 break; 2717 case 4: 2718 #line 79 "Rfc5322HeaderParser.cpp" 2719 { 2720 #ifdef RAGEL_DEBUG 2721 qDebug() << "clear_list"; 2722 #endif 2723 list.clear(); 2724 str.clear(); 2725 } 2726 break; 2727 case 5: 2728 #line 87 "Rfc5322HeaderParser.cpp" 2729 { 2730 if (list.size() == 1) { 2731 #ifdef RAGEL_DEBUG 2732 qDebug() << "Message-Id: " << list[0].data(); 2733 #endif 2734 messageId += list; 2735 } else { 2736 #ifdef RAGEL_DEBUG 2737 qDebug() << "invalid Message-Id"; 2738 #endif 2739 } 2740 } 2741 break; 2742 case 6: 2743 #line 100 "Rfc5322HeaderParser.cpp" 2744 { 2745 inReplyTo += list; 2746 #ifdef RAGEL_DEBUG 2747 qDebug() << "In-Reply-To: " << list; 2748 #endif 2749 } 2750 break; 2751 case 7: 2752 #line 107 "Rfc5322HeaderParser.cpp" 2753 { 2754 references += list; 2755 #ifdef RAGEL_DEBUG 2756 qDebug() << "got_references_header:" << references; 2757 #endif 2758 } 2759 break; 2760 case 8: 2761 #line 114 "Rfc5322HeaderParser.cpp" 2762 { 2763 listPost += list; 2764 #ifdef RAGEL_DEBUG 2765 qDebug() << "got_list_post_header:" << listPost; 2766 #endif 2767 } 2768 break; 2769 case 9: 2770 #line 121 "Rfc5322HeaderParser.cpp" 2771 { 2772 listPostNo = true; 2773 #ifdef RAGEL_DEBUG 2774 qDebug() << "got_list_post_no"; 2775 #endif 2776 } 2777 break; 2778 case 10: 2779 #line 128 "Rfc5322HeaderParser.cpp" 2780 { 2781 #ifdef RAGEL_DEBUG 2782 qDebug() << "Error when parsing RFC5322 headers"; 2783 #endif 2784 m_error = true; 2785 } 2786 break; 2787 #line 2788 "Rfc5322HeaderParser.generated.cpp" 2788 } 2789 } 2790 2791 _again: 2792 if ( cs == 0 ) 2793 goto _out; 2794 if ( ++p != pe ) 2795 goto _resume; 2796 _test_eof: {} 2797 if ( p == eof ) 2798 { 2799 const int8_t *__acts = _rfc5322_actions + _rfc5322_eof_actions[cs]; 2800 unsigned int __nacts = (unsigned int) *__acts++; 2801 while ( __nacts-- > 0 ) { 2802 switch ( *__acts++ ) { 2803 case 5: 2804 #line 87 "Rfc5322HeaderParser.cpp" 2805 { 2806 if (list.size() == 1) { 2807 #ifdef RAGEL_DEBUG 2808 qDebug() << "Message-Id: " << list[0].data(); 2809 #endif 2810 messageId += list; 2811 } else { 2812 #ifdef RAGEL_DEBUG 2813 qDebug() << "invalid Message-Id"; 2814 #endif 2815 } 2816 } 2817 break; 2818 case 6: 2819 #line 100 "Rfc5322HeaderParser.cpp" 2820 { 2821 inReplyTo += list; 2822 #ifdef RAGEL_DEBUG 2823 qDebug() << "In-Reply-To: " << list; 2824 #endif 2825 } 2826 break; 2827 case 7: 2828 #line 107 "Rfc5322HeaderParser.cpp" 2829 { 2830 references += list; 2831 #ifdef RAGEL_DEBUG 2832 qDebug() << "got_references_header:" << references; 2833 #endif 2834 } 2835 break; 2836 case 8: 2837 #line 114 "Rfc5322HeaderParser.cpp" 2838 { 2839 listPost += list; 2840 #ifdef RAGEL_DEBUG 2841 qDebug() << "got_list_post_header:" << listPost; 2842 #endif 2843 } 2844 break; 2845 case 10: 2846 #line 128 "Rfc5322HeaderParser.cpp" 2847 { 2848 #ifdef RAGEL_DEBUG 2849 qDebug() << "Error when parsing RFC5322 headers"; 2850 #endif 2851 m_error = true; 2852 } 2853 break; 2854 #line 2855 "Rfc5322HeaderParser.generated.cpp" 2855 } 2856 } 2857 } 2858 2859 _out: {} 2860 } 2861 2862 #line 184 "Rfc5322HeaderParser.cpp" 2863 2864 return !m_error; 2865 } 2866 2867 } 2868 } 2869 2870 #if 0 2871 #include <iostream> 2872 int main() 2873 { 2874 QByteArray data; 2875 std::string line; 2876 2877 while (std::getline(std::cin, line)) { 2878 data += line.c_str(); 2879 data += '\n'; 2880 } 2881 2882 Imap::Parser::Rfc5322HeaderParser parser; 2883 bool res = parser.parse(data); 2884 if (!res) { 2885 qDebug() << "Parsing error."; 2886 return 1; 2887 } 2888 2889 qDebug() << "References:" << parser.references; 2890 2891 return 0; 2892 } 2893 #endif