From a2dd7a0b382975a9b94dcd20909d889543c343c5 Mon Sep 17 00:00:00 2001 From: Roni HE Date: Thu, 6 Feb 2020 08:14:51 -0800 Subject: [PATCH] Fix: Vitess show character set where right now the show character set are hardcoded to be filtered with where statement. since we don't really want to expand the results or forward the query to an underlying mysql because vitess only supports these 2 charsets. closes #5584 * separate show charset vs show charset in parser * changed the executor accordingly * use where_expression_opt in parser, changed AST and executor accordingly Signed-off-by: roni --- go.mod | 2 + go/vt/sqlparser/ast.go | 3 + go/vt/sqlparser/parse_test.go | 10 +- go/vt/sqlparser/sql.go | 3470 +++++++++++++++++---------------- go/vt/sqlparser/sql.y | 10 +- go/vt/vtgate/executor.go | 122 +- go/vt/vtgate/executor_test.go | 114 +- 7 files changed, 1971 insertions(+), 1760 deletions(-) diff --git a/go.mod b/go.mod index 5310d66e0b1..25077ce841a 100644 --- a/go.mod +++ b/go.mod @@ -52,6 +52,8 @@ require ( github.com/mattn/go-runewidth v0.0.1 // indirect github.com/minio/minio-go v0.0.0-20190131015406-c8a261de75c1 github.com/mitchellh/go-testing-interface v1.0.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.1 // indirect github.com/olekukonko/tablewriter v0.0.0-20160115111002-cca8bbc07984 github.com/opentracing-contrib/go-grpc v0.0.0-20180928155321-4b5a12d3ff02 github.com/opentracing/opentracing-go v1.1.0 diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 68de87b3a29..7f30c6a1984 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -1191,6 +1191,9 @@ func (node *Show) Format(buf *TrackedBuffer) { if node.Type == "collation" && node.ShowCollationFilterOpt != nil { buf.Myprintf(" where %v", *node.ShowCollationFilterOpt) } + if node.Type == "charset" && node.ShowTablesOpt != nil { + buf.Myprintf("%v", node.ShowTablesOpt.Filter) + } if node.HasTable() { buf.Myprintf(" %v", node.Table) } diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 537a2c4ca37..b3683e717bb 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1138,13 +1138,19 @@ var ( output: "show charset", }, { input: "show character set like '%foo'", - output: "show charset", + output: "show charset like '%foo'", }, { input: "show charset", output: "show charset", }, { input: "show charset like '%foo'", - output: "show charset", + output: "show charset like '%foo'", + }, { + input: "show charset where 'charset' = 'utf8'", + output: "show charset where 'charset' = 'utf8'", + }, { + input: "show charset where 'charset' = '%foo'", + output: "show charset where 'charset' = '%foo'", }, { input: "show collation", output: "show collation", diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index ef0a39342ff..7063bd9dffd 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -821,7 +821,7 @@ var yyExca = [...]int{ -1, 399, 83, 841, -2, 608, - -1, 695, + -1, 697, 1, 355, 5, 355, 12, 355, @@ -845,17 +845,17 @@ var yyExca = [...]int{ 57, 355, 348, 355, -2, 373, - -1, 698, + -1, 700, 54, 44, 56, 44, -2, 48, - -1, 848, + -1, 852, 113, 647, -2, 643, - -1, 1079, + -1, 1081, 5, 30, -2, 440, - -1, 1109, + -1, 1111, 5, 29, -2, 580, -1, 1355, @@ -871,334 +871,304 @@ var yyExca = [...]int{ const yyPrivate = 57344 -const yyLast = 16546 +const yyLast = 16589 var yyAct = [...]int{ - 323, 1520, 1510, 1317, 1204, 1388, 1112, 1474, 1420, 353, - 651, 1130, 1257, 340, 57, 935, 962, 301, 1258, 1375, - 1291, 1254, 1113, 1042, 971, 933, 650, 3, 327, 1157, - 1264, 961, 81, 797, 1005, 1270, 266, 1229, 884, 266, - 292, 1183, 1070, 873, 811, 396, 975, 880, 711, 1136, - 937, 1174, 958, 922, 902, 850, 588, 1001, 692, 520, - 710, 390, 385, 915, 582, 594, 310, 266, 81, 325, - 382, 691, 266, 603, 266, 387, 700, 665, 300, 56, - 1513, 1497, 61, 1508, 1484, 293, 294, 295, 296, 1505, - 1318, 299, 991, 1024, 1496, 1483, 540, 1246, 1347, 525, - 253, 555, 314, 251, 1285, 255, 666, 1023, 63, 64, - 65, 66, 67, 1449, 616, 615, 625, 626, 618, 619, - 620, 621, 622, 623, 624, 617, 952, 365, 627, 371, - 372, 369, 370, 368, 367, 366, 1028, 261, 257, 258, - 259, 1286, 1287, 373, 374, 1022, 1145, 298, 576, 1144, - 953, 954, 1146, 712, 571, 713, 297, 1165, 572, 569, - 570, 984, 1206, 1378, 1395, 992, 1338, 557, 1336, 559, - 574, 291, 564, 565, 785, 1208, 786, 783, 1507, 1504, - 1475, 1203, 916, 1467, 1524, 1528, 976, 541, 883, 527, - 1421, 551, 255, 1209, 790, 1019, 1016, 1017, 254, 1015, - 556, 558, 978, 1423, 1280, 1429, 1230, 575, 774, 784, - 24, 25, 52, 27, 28, 1207, 787, 1131, 1133, 252, - 1279, 978, 1200, 1278, 523, 530, 268, 256, 1202, 43, - 1036, 1026, 1029, 1035, 29, 48, 49, 1088, 639, 640, - 978, 1456, 1358, 1085, 1232, 620, 621, 622, 623, 624, - 617, 1158, 266, 627, 1215, 38, 260, 266, 959, 54, - 1141, 1098, 1064, 266, 822, 706, 607, 627, 1021, 266, - 521, 1422, 81, 547, 81, 948, 81, 81, 1234, 81, - 1238, 81, 1233, 1450, 1231, 554, 816, 81, 617, 1236, - 1020, 627, 1522, 812, 1132, 1523, 992, 1521, 1235, 977, - 537, 819, 1465, 521, 602, 1191, 1482, 1430, 1428, 1303, - 1084, 1237, 1239, 1438, 1268, 1248, 857, 81, 977, 590, - 31, 32, 34, 33, 36, 1201, 50, 1199, 903, 1025, - 855, 856, 854, 591, 776, 1189, 519, 977, 578, 579, - 639, 640, 974, 972, 1027, 973, 639, 640, 37, 44, - 45, 970, 976, 46, 47, 35, 543, 544, 545, 821, - 1304, 601, 600, 534, 1083, 535, 1082, 70, 536, 39, - 40, 600, 41, 42, 714, 813, 601, 600, 602, 1044, - 266, 266, 266, 601, 600, 825, 826, 602, 553, 81, - 592, 1163, 985, 602, 352, 81, 903, 820, 1095, 981, - 602, 1470, 1190, 71, 597, 982, 690, 1195, 1192, 1185, - 1193, 1188, 1488, 1184, 601, 600, 1186, 1187, 618, 619, - 620, 621, 622, 623, 624, 617, 79, 1384, 627, 1529, - 1194, 602, 1463, 1383, 601, 600, 601, 600, 526, 907, - 1061, 1062, 1063, 1250, 668, 670, 672, 674, 676, 678, - 679, 602, 699, 602, 53, 1178, 393, 250, 1043, 581, - 704, 54, 395, 1490, 708, 560, 1177, 561, 562, 1530, - 563, 853, 566, 669, 671, 1166, 675, 677, 577, 680, - 1466, 616, 615, 625, 626, 618, 619, 620, 621, 622, - 623, 624, 617, 1344, 1402, 627, 616, 615, 625, 626, - 618, 619, 620, 621, 622, 623, 624, 617, 1381, 1212, - 627, 840, 842, 843, 1175, 528, 529, 841, 1047, 874, - 266, 875, 379, 380, 1147, 81, 1148, 22, 354, 51, - 266, 266, 81, 81, 81, 1071, 1426, 1506, 266, 1492, - 581, 266, 1426, 1478, 266, 1426, 581, 581, 266, 1320, - 81, 81, 1426, 1457, 1435, 81, 81, 81, 266, 81, - 81, 1426, 1425, 1373, 1372, 81, 81, 1158, 616, 615, - 625, 626, 618, 619, 620, 621, 622, 623, 624, 617, - 51, 1153, 627, 1350, 1360, 581, 1434, 305, 306, 1357, - 581, 1310, 1309, 799, 81, 1306, 1307, 1306, 1305, 266, - 1077, 581, 919, 581, 1300, 81, 886, 581, 827, 876, - 796, 791, 795, 777, 775, 772, 721, 720, 1137, 549, - 851, 616, 615, 625, 626, 618, 619, 620, 621, 622, - 623, 624, 617, 542, 533, 627, 532, 1255, 979, 320, - 1267, 846, 343, 342, 345, 346, 347, 348, 1137, 81, - 24, 344, 349, 848, 924, 927, 928, 929, 925, 829, - 926, 930, 919, 58, 1271, 1272, 395, 54, 395, 702, - 395, 395, 702, 395, 1107, 395, 1267, 1218, 844, 1108, - 888, 395, 81, 81, 24, 886, 1353, 893, 896, 266, - 24, 1437, 1267, 904, 942, 919, 701, 266, 266, 54, - 307, 266, 266, 918, 1077, 266, 266, 266, 81, 877, - 878, 605, 703, 1407, 705, 703, 773, 701, 1308, 1149, - 951, 81, 1077, 780, 781, 782, 943, 900, 1101, 919, - 945, 1100, 912, 54, 1277, 1077, 701, 707, 823, 54, - 580, 800, 801, 789, 1498, 1390, 802, 803, 804, 54, - 806, 807, 799, 986, 1365, 1006, 808, 809, 1296, 1271, - 1272, 1205, 941, 1152, 1002, 997, 996, 1391, 946, 949, - 950, 1009, 1515, 1511, 1298, 266, 81, 393, 81, 1274, - 1255, 966, 1179, 395, 266, 266, 266, 266, 266, 716, - 266, 266, 817, 793, 266, 81, 1124, 1276, 1122, 1121, - 552, 1125, 552, 1123, 552, 552, 1007, 552, 835, 552, - 1120, 266, 1502, 266, 266, 552, 1495, 1126, 266, 928, - 929, 311, 312, 1214, 1049, 595, 1003, 1004, 993, 994, - 995, 1500, 1059, 1058, 583, 51, 1170, 719, 596, 595, - 550, 593, 1162, 889, 890, 1472, 584, 895, 898, 899, - 636, 1471, 596, 638, 1405, 1160, 1052, 1154, 1351, 924, - 927, 928, 929, 925, 851, 926, 930, 1386, 848, 1012, - 792, 932, 911, 1443, 913, 914, 308, 309, 302, 303, - 1053, 649, 58, 653, 654, 655, 656, 657, 658, 659, - 660, 661, 1054, 664, 667, 667, 667, 673, 667, 667, - 673, 667, 681, 682, 683, 684, 685, 686, 1057, 696, - 1066, 1137, 1442, 1393, 573, 1089, 1056, 1517, 1516, 395, - 266, 266, 266, 266, 266, 1086, 395, 395, 395, 810, - 598, 1517, 266, 1453, 1379, 266, 818, 60, 62, 266, - 55, 1, 1109, 266, 395, 395, 1509, 1114, 1319, 395, - 395, 395, 1387, 395, 395, 1018, 1094, 1473, 1419, 395, - 395, 888, 81, 1290, 969, 960, 69, 1011, 1138, 1013, - 641, 642, 643, 644, 645, 646, 647, 648, 1150, 1116, - 1117, 518, 1119, 68, 1127, 1464, 1040, 968, 831, 1135, - 967, 1115, 1427, 1139, 1118, 1140, 847, 1377, 980, 605, - 1142, 1164, 395, 983, 1297, 1159, 1161, 1469, 727, 725, - 81, 81, 726, 724, 729, 728, 723, 279, 388, 931, - 1155, 1156, 715, 1060, 1008, 599, 72, 1198, 1197, 1014, - 815, 828, 567, 568, 281, 635, 1055, 1143, 394, 1262, - 81, 824, 587, 879, 1169, 1441, 1171, 1172, 1173, 1176, - 1392, 1093, 662, 552, 901, 1182, 266, 328, 1196, 905, - 552, 552, 552, 839, 341, 81, 338, 339, 830, 1106, - 1075, 1076, 609, 326, 318, 694, 909, 910, 552, 552, - 1167, 1168, 687, 552, 552, 552, 1211, 552, 552, 1092, - 885, 887, 923, 552, 552, 921, 393, 920, 383, 329, - 1273, 1269, 395, 693, 1217, 1346, 1448, 1247, 834, 963, - 1222, 81, 81, 1221, 1256, 395, 1228, 26, 1259, 59, - 313, 19, 1241, 987, 988, 989, 990, 1240, 18, 17, - 20, 16, 1052, 15, 14, 81, 1114, 1261, 538, 998, - 999, 1000, 30, 21, 848, 13, 12, 11, 10, 9, - 81, 1282, 81, 81, 1275, 8, 7, 6, 5, 4, - 304, 23, 1266, 2, 0, 1281, 0, 51, 1289, 0, - 395, 0, 395, 0, 0, 0, 0, 0, 1293, 0, - 266, 1288, 653, 0, 0, 1294, 1295, 0, 1284, 395, - 0, 0, 0, 0, 0, 0, 0, 0, 266, 0, - 0, 0, 1181, 0, 81, 0, 0, 81, 81, 81, - 266, 847, 0, 0, 0, 0, 81, 395, 0, 266, - 1301, 1302, 0, 0, 1312, 934, 0, 0, 0, 696, - 0, 1210, 0, 696, 0, 1325, 0, 1313, 0, 1315, - 0, 0, 0, 0, 1327, 0, 0, 0, 0, 849, - 0, 0, 858, 859, 860, 861, 862, 863, 864, 865, - 866, 867, 868, 869, 870, 871, 872, 1326, 0, 1334, - 0, 0, 0, 0, 0, 0, 0, 0, 1352, 0, - 0, 1361, 0, 0, 0, 0, 0, 0, 0, 81, - 1362, 0, 0, 0, 0, 0, 1114, 81, 0, 0, - 1371, 0, 0, 0, 552, 1150, 552, 908, 0, 0, - 0, 0, 81, 905, 0, 0, 1073, 0, 316, 81, - 1074, 0, 0, 552, 0, 0, 0, 0, 1079, 1080, - 1081, 0, 0, 0, 0, 1087, 0, 0, 1090, 1091, - 0, 0, 586, 0, 1097, 0, 0, 0, 1099, 0, - 963, 1102, 1103, 1104, 1105, 0, 395, 0, 81, 81, - 0, 81, 0, 1259, 0, 0, 81, 0, 81, 81, - 81, 266, 1406, 1129, 81, 0, 1065, 0, 264, 1413, - 0, 290, 0, 1408, 0, 1414, 1418, 1415, 1416, 1417, - 0, 81, 266, 1431, 1424, 0, 0, 0, 1380, 0, - 1382, 0, 0, 0, 1180, 395, 317, 0, 0, 386, - 1439, 0, 0, 0, 264, 0, 264, 1259, 0, 0, - 1454, 0, 0, 0, 637, 1394, 0, 81, 1462, 0, - 1461, 0, 0, 1432, 395, 1433, 1455, 0, 81, 81, - 0, 0, 0, 1476, 1110, 1111, 0, 0, 696, 696, - 696, 696, 696, 1220, 1480, 1477, 0, 81, 0, 395, - 1485, 0, 0, 934, 0, 1134, 0, 0, 266, 0, - 0, 696, 0, 0, 0, 0, 81, 0, 0, 0, - 695, 0, 1114, 1494, 0, 0, 0, 1251, 0, 0, - 0, 0, 0, 395, 0, 1067, 1068, 1069, 1501, 81, - 1499, 0, 905, 1385, 0, 1263, 1265, 0, 0, 0, - 0, 0, 1514, 0, 0, 1226, 1227, 0, 1503, 1525, - 0, 697, 0, 0, 0, 0, 0, 0, 0, 1265, - 0, 0, 0, 0, 0, 0, 0, 0, 963, 552, - 963, 0, 0, 0, 395, 0, 395, 1292, 0, 0, - 0, 0, 0, 611, 0, 614, 0, 263, 0, 0, - 0, 628, 629, 630, 631, 632, 633, 634, 552, 612, - 613, 610, 616, 615, 625, 626, 618, 619, 620, 621, - 622, 623, 624, 617, 0, 0, 627, 0, 384, 0, - 0, 0, 0, 522, 264, 524, 0, 0, 1316, 264, - 0, 1321, 1322, 1323, 1220, 264, 1349, 0, 0, 0, - 395, 264, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 585, 589, 1331, 1332, 0, 1333, 0, 0, 1335, - 0, 1337, 0, 0, 0, 0, 0, 1260, 608, 51, - 0, 0, 0, 0, 616, 615, 625, 626, 618, 619, - 620, 621, 622, 623, 624, 617, 0, 0, 627, 0, - 0, 1328, 905, 0, 0, 0, 0, 0, 0, 1330, - 0, 0, 0, 652, 0, 0, 0, 963, 0, 0, - 1339, 1340, 663, 395, 0, 1374, 0, 0, 0, 0, - 0, 1376, 0, 0, 0, 0, 0, 0, 0, 0, - 1354, 1355, 1356, 0, 1359, 0, 395, 1389, 0, 0, - 852, 1224, 1225, 395, 0, 0, 0, 0, 0, 0, - 0, 1370, 264, 264, 264, 1242, 1243, 0, 1244, 1245, - 625, 626, 618, 619, 620, 621, 622, 623, 624, 617, - 1252, 1253, 627, 0, 0, 0, 0, 696, 0, 0, - 0, 0, 1410, 1411, 0, 1412, 0, 0, 0, 0, - 1376, 0, 1376, 1376, 1376, 0, 0, 0, 1292, 0, - 0, 0, 0, 531, 0, 1345, 0, 0, 539, 0, - 0, 0, 0, 0, 546, 1376, 1401, 0, 0, 0, - 548, 0, 0, 0, 0, 0, 695, 0, 0, 0, - 695, 0, 1299, 0, 695, 0, 0, 1367, 1368, 1369, - 615, 625, 626, 618, 619, 620, 621, 622, 623, 624, - 617, 1468, 0, 627, 0, 0, 1389, 963, 0, 0, - 0, 0, 395, 395, 0, 0, 1444, 1445, 1446, 1447, - 552, 0, 0, 1451, 1452, 0, 1343, 0, 905, 0, - 0, 1487, 0, 0, 0, 1458, 1459, 1460, 0, 0, - 0, 0, 264, 1329, 0, 0, 0, 0, 0, 0, - 1493, 0, 264, 264, 0, 0, 0, 0, 0, 0, - 264, 0, 1260, 264, 0, 1409, 264, 0, 1481, 0, - 798, 0, 814, 1376, 0, 1486, 0, 0, 0, 0, - 264, 689, 0, 698, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1491, 0, 1436, 0, 0, 0, 837, - 838, 616, 615, 625, 626, 618, 619, 620, 621, 622, - 623, 624, 617, 0, 0, 627, 1260, 0, 51, 0, - 1223, 264, 0, 0, 0, 0, 0, 0, 0, 0, - 798, 0, 0, 0, 852, 0, 0, 0, 1526, 1527, - 616, 615, 625, 626, 618, 619, 620, 621, 622, 623, - 624, 617, 652, 0, 627, 891, 892, 0, 0, 0, - 0, 1396, 1397, 1398, 1399, 1400, 0, 0, 0, 1403, - 1404, 276, 317, 0, 0, 0, 0, 317, 317, 0, - 0, 317, 317, 317, 0, 0, 0, 906, 0, 1342, - 0, 0, 0, 0, 0, 0, 286, 0, 0, 695, - 695, 695, 695, 695, 1341, 0, 317, 317, 317, 317, - 0, 264, 0, 957, 695, 0, 1512, 0, 0, 264, - 939, 722, 695, 264, 264, 0, 0, 264, 947, 798, - 0, 778, 779, 0, 0, 0, 0, 0, 0, 788, - 0, 0, 384, 0, 0, 794, 0, 269, 0, 0, - 0, 0, 0, 0, 272, 0, 0, 0, 0, 805, - 0, 0, 280, 275, 616, 615, 625, 626, 618, 619, - 620, 621, 622, 623, 624, 617, 0, 0, 627, 616, - 615, 625, 626, 618, 619, 620, 621, 622, 623, 624, - 617, 0, 0, 627, 0, 278, 0, 264, 0, 0, - 836, 285, 0, 0, 0, 0, 264, 264, 264, 264, - 264, 0, 264, 264, 0, 0, 264, 0, 0, 1050, - 1051, 0, 589, 0, 0, 0, 0, 0, 270, 0, - 0, 0, 1518, 264, 0, 1045, 1046, 0, 0, 0, - 264, 0, 0, 0, 0, 798, 0, 0, 0, 0, - 1072, 0, 0, 0, 0, 282, 273, 317, 283, 284, - 289, 0, 0, 0, 274, 277, 0, 271, 288, 287, - 616, 615, 625, 626, 618, 619, 620, 621, 622, 623, - 624, 617, 0, 744, 627, 1078, 0, 0, 0, 0, - 917, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1096, 944, 317, 317, 616, 615, 625, 626, - 618, 619, 620, 621, 622, 623, 624, 617, 0, 0, - 627, 0, 0, 317, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 906, 264, 264, 264, 264, 264, 0, 0, 0, - 0, 0, 0, 0, 1128, 0, 0, 264, 0, 0, - 0, 939, 732, 0, 0, 264, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1010, 0, 0, 0, - 0, 0, 0, 0, 0, 1030, 1031, 1032, 1033, 1034, - 0, 1037, 1038, 0, 0, 1039, 0, 0, 695, 0, - 745, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1041, 0, 0, 0, 0, 0, 0, 1048, - 0, 0, 0, 758, 761, 762, 763, 764, 765, 766, - 0, 767, 768, 769, 770, 771, 746, 747, 748, 749, - 730, 731, 759, 1213, 733, 0, 734, 735, 736, 737, - 738, 739, 740, 741, 742, 743, 750, 751, 752, 753, - 754, 755, 756, 757, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 264, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, - 0, 0, 0, 0, 1249, 0, 0, 0, 0, 0, - 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 760, 0, 0, 0, 0, 0, - 0, 798, 0, 0, 0, 0, 0, 0, 0, 0, - 906, 0, 0, 0, 0, 0, 1283, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 264, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 264, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 323, 1520, 1510, 1317, 1474, 1206, 327, 1114, 653, 1375, + 966, 1420, 1388, 1132, 340, 1291, 1257, 939, 1258, 301, + 57, 962, 353, 1115, 562, 652, 3, 1254, 975, 1009, + 329, 995, 81, 965, 1264, 1270, 266, 551, 799, 266, + 1229, 1072, 396, 888, 877, 1159, 815, 1185, 1176, 713, + 941, 884, 854, 906, 584, 590, 926, 520, 385, 1005, + 937, 354, 51, 712, 390, 605, 596, 266, 81, 979, + 325, 919, 266, 382, 266, 310, 387, 300, 702, 667, + 56, 1513, 1138, 1028, 1497, 1508, 668, 1484, 61, 693, + 540, 1505, 393, 989, 1318, 1496, 1483, 1027, 1246, 1347, + 525, 694, 292, 1286, 1287, 1285, 555, 314, 261, 257, + 258, 259, 956, 51, 63, 64, 65, 66, 67, 253, + 578, 306, 251, 298, 255, 365, 1032, 371, 372, 369, + 370, 368, 367, 366, 1147, 1026, 297, 1146, 957, 958, + 1148, 373, 374, 714, 1167, 715, 988, 293, 294, 295, + 296, 1208, 1378, 299, 1449, 618, 617, 627, 628, 620, + 621, 622, 623, 624, 625, 626, 619, 1395, 996, 629, + 1338, 573, 557, 276, 559, 574, 571, 572, 1336, 577, + 291, 566, 567, 788, 576, 1023, 1020, 1021, 1210, 1019, + 787, 785, 1507, 1504, 1475, 1205, 920, 1524, 286, 1467, + 980, 1528, 1421, 541, 1209, 556, 558, 527, 255, 982, + 1230, 1211, 982, 887, 792, 1423, 776, 254, 1280, 1279, + 1429, 1030, 1033, 789, 1202, 786, 537, 260, 1278, 982, + 1204, 523, 530, 1456, 268, 256, 1133, 1135, 252, 521, + 1040, 1358, 1160, 1039, 641, 642, 1215, 1143, 1232, 269, + 1090, 1100, 266, 1303, 1066, 826, 272, 266, 1025, 708, + 609, 963, 547, 266, 280, 275, 629, 816, 619, 266, + 1087, 629, 952, 823, 81, 1248, 81, 81, 820, 81, + 1024, 81, 1234, 1422, 1238, 521, 1233, 81, 1231, 534, + 554, 535, 70, 1236, 536, 604, 553, 278, 1465, 996, + 1438, 1268, 1235, 285, 1304, 1522, 981, 1482, 1523, 981, + 1521, 978, 976, 1134, 977, 1237, 1239, 81, 519, 1029, + 974, 980, 1430, 1428, 1450, 592, 981, 1203, 71, 1201, + 270, 861, 593, 716, 1031, 561, 907, 561, 561, 907, + 561, 1097, 561, 602, 911, 859, 860, 858, 561, 817, + 543, 544, 545, 641, 642, 639, 778, 282, 273, 604, + 283, 284, 289, 1165, 1193, 1470, 274, 277, 51, 271, + 288, 287, 599, 641, 642, 552, 603, 602, 985, 1488, + 266, 266, 266, 638, 986, 1529, 640, 1384, 1383, 81, + 1180, 1179, 1086, 604, 1191, 81, 594, 1063, 1064, 1065, + 580, 581, 620, 621, 622, 623, 624, 625, 626, 619, + 1168, 697, 629, 393, 651, 1490, 655, 656, 657, 658, + 659, 660, 661, 662, 663, 1530, 666, 669, 669, 669, + 675, 669, 669, 675, 669, 683, 684, 685, 686, 687, + 688, 692, 698, 603, 602, 526, 670, 672, 674, 676, + 678, 680, 681, 671, 673, 701, 677, 679, 1466, 682, + 604, 1192, 706, 829, 830, 710, 1197, 1194, 1187, 1195, + 1190, 825, 1186, 1402, 250, 1188, 1189, 1381, 352, 622, + 623, 624, 625, 626, 619, 1177, 1049, 629, 1085, 1196, + 1084, 618, 617, 627, 628, 620, 621, 622, 623, 624, + 625, 626, 619, 804, 54, 629, 1463, 603, 602, 824, + 79, 583, 603, 602, 857, 844, 846, 847, 1426, 1506, + 266, 845, 528, 529, 604, 81, 603, 602, 1320, 604, + 266, 266, 81, 81, 81, 878, 583, 879, 266, 379, + 380, 266, 22, 604, 266, 1073, 395, 1149, 266, 1150, + 81, 1492, 583, 1426, 1478, 81, 81, 81, 266, 81, + 81, 343, 342, 345, 346, 347, 348, 81, 81, 1160, + 344, 349, 1155, 618, 617, 627, 628, 620, 621, 622, + 623, 624, 625, 626, 619, 880, 561, 629, 803, 798, + 801, 603, 602, 561, 561, 561, 81, 797, 1250, 1426, + 583, 266, 305, 1426, 1457, 1426, 1425, 81, 604, 1373, + 1372, 561, 831, 779, 793, 777, 561, 561, 561, 1435, + 561, 561, 1360, 583, 1357, 583, 1310, 1309, 561, 561, + 1306, 1307, 1306, 1305, 851, 855, 1079, 583, 923, 583, + 890, 583, 1434, 856, 774, 582, 723, 722, 850, 704, + 704, 81, 852, 549, 542, 618, 617, 627, 628, 620, + 621, 622, 623, 624, 625, 626, 619, 897, 900, 629, + 833, 533, 848, 908, 532, 1300, 928, 931, 932, 933, + 929, 892, 930, 934, 81, 81, 1271, 1272, 1139, 983, + 24, 266, 705, 705, 707, 703, 24, 1139, 1255, 266, + 266, 1267, 51, 266, 266, 1218, 1267, 266, 266, 266, + 81, 890, 881, 882, 1109, 58, 946, 655, 703, 1110, + 1353, 1437, 922, 81, 24, 1407, 923, 1308, 1151, 697, + 904, 955, 923, 697, 393, 1103, 1102, 697, 916, 54, + 839, 1267, 1079, 703, 709, 54, 54, 967, 923, 827, + 1079, 801, 395, 791, 395, 395, 1079, 395, 1498, 395, + 938, 1390, 990, 947, 698, 395, 950, 949, 698, 997, + 998, 999, 945, 54, 953, 954, 307, 266, 81, 1365, + 81, 970, 1010, 1296, 1271, 1272, 266, 266, 266, 266, + 266, 1154, 266, 266, 1006, 607, 266, 81, 1001, 1000, + 1207, 1391, 1013, 1011, 627, 628, 620, 621, 622, 623, + 624, 625, 626, 619, 1515, 266, 629, 266, 266, 1511, + 1298, 1274, 266, 1502, 1255, 54, 991, 992, 993, 994, + 1007, 1008, 1181, 821, 795, 1126, 1277, 1276, 1123, 561, + 1127, 561, 1002, 1003, 1004, 1124, 1128, 1122, 932, 933, + 1125, 851, 1495, 1046, 311, 312, 1214, 1051, 561, 1500, + 1061, 1060, 1172, 721, 597, 1054, 597, 395, 550, 852, + 893, 894, 585, 718, 899, 902, 903, 598, 1164, 598, + 595, 855, 1472, 1055, 586, 1471, 1056, 1405, 1162, 856, + 928, 931, 932, 933, 929, 1156, 930, 934, 1351, 915, + 1386, 917, 918, 1016, 794, 936, 308, 309, 1059, 302, + 1443, 1068, 303, 1067, 58, 1442, 1058, 1393, 1139, 575, + 1517, 1516, 1517, 1091, 266, 266, 266, 266, 266, 1116, + 1088, 814, 600, 1453, 320, 1379, 266, 822, 832, 266, + 60, 62, 55, 266, 1, 1111, 1509, 266, 1319, 1387, + 1022, 1473, 1419, 1290, 697, 697, 697, 697, 697, 1096, + 973, 964, 69, 518, 892, 68, 81, 1464, 972, 697, + 971, 1427, 1377, 984, 1166, 987, 1152, 697, 1297, 1163, + 1469, 1112, 1113, 729, 727, 698, 698, 698, 698, 698, + 967, 1129, 728, 1137, 726, 731, 730, 889, 891, 725, + 938, 279, 1136, 395, 388, 1144, 935, 1140, 698, 717, + 395, 395, 395, 1117, 81, 81, 1120, 1171, 1012, 1173, + 1174, 1175, 601, 1169, 1170, 1161, 1118, 1119, 395, 1121, + 1141, 72, 1142, 395, 395, 395, 1200, 395, 395, 1199, + 1018, 819, 316, 569, 81, 395, 395, 1157, 1158, 570, + 1178, 281, 1062, 637, 1057, 1145, 394, 1262, 266, 828, + 589, 1441, 1392, 1095, 664, 905, 328, 81, 1198, 843, + 341, 338, 339, 834, 835, 1108, 561, 611, 326, 318, + 696, 689, 927, 925, 924, 607, 383, 1273, 395, 1269, + 695, 1220, 1213, 1217, 1346, 1448, 838, 26, 59, 1077, + 1078, 313, 19, 18, 17, 561, 20, 16, 15, 14, + 538, 1222, 30, 81, 81, 1247, 1116, 1256, 1094, 1221, + 21, 1184, 13, 1228, 12, 1251, 11, 1241, 10, 883, + 1240, 9, 8, 1259, 7, 6, 5, 81, 1261, 1054, + 4, 304, 23, 852, 2, 909, 0, 0, 0, 0, + 0, 0, 81, 0, 81, 81, 1275, 0, 0, 1282, + 0, 0, 913, 914, 1289, 0, 0, 0, 0, 0, + 0, 1281, 1260, 0, 51, 0, 967, 0, 967, 0, + 0, 0, 266, 0, 1293, 1288, 0, 0, 395, 0, + 0, 1301, 1302, 0, 0, 0, 0, 1266, 0, 0, + 266, 395, 0, 1294, 1295, 0, 81, 0, 0, 81, + 81, 81, 266, 0, 0, 0, 81, 0, 0, 266, + 0, 0, 0, 1284, 0, 1075, 0, 0, 0, 1076, + 0, 0, 0, 0, 0, 0, 0, 1081, 1082, 1083, + 1220, 0, 0, 0, 1089, 0, 0, 1092, 1093, 697, + 0, 1325, 560, 1099, 0, 0, 395, 1101, 395, 0, + 1104, 1105, 1106, 1107, 1334, 643, 644, 645, 646, 647, + 648, 649, 650, 0, 1116, 395, 0, 0, 0, 1327, + 698, 0, 1131, 0, 1352, 0, 0, 1361, 1312, 81, + 0, 1362, 0, 0, 0, 0, 0, 81, 0, 1152, + 1326, 1313, 1371, 1315, 0, 395, 0, 0, 1345, 0, + 0, 0, 81, 967, 0, 0, 0, 0, 0, 81, + 0, 0, 0, 0, 1331, 1332, 0, 1333, 0, 0, + 1335, 0, 1337, 0, 0, 0, 0, 1380, 0, 1382, + 1367, 1368, 1369, 1389, 0, 587, 591, 617, 627, 628, + 620, 621, 622, 623, 624, 625, 626, 619, 81, 81, + 629, 81, 610, 0, 1394, 0, 81, 0, 81, 81, + 81, 266, 1406, 561, 81, 1414, 1259, 1415, 1416, 1417, + 0, 1413, 1408, 0, 699, 0, 1374, 0, 1418, 1424, + 0, 81, 266, 0, 1431, 0, 0, 654, 0, 0, + 1439, 909, 1432, 0, 1433, 0, 665, 0, 0, 0, + 0, 0, 0, 0, 0, 1260, 0, 0, 1409, 0, + 263, 0, 1226, 1227, 1454, 0, 0, 81, 0, 0, + 1259, 1462, 1461, 0, 0, 1455, 0, 0, 81, 81, + 0, 0, 0, 588, 395, 0, 0, 0, 1436, 1477, + 1476, 384, 1480, 0, 0, 0, 522, 81, 524, 0, + 1116, 1485, 1389, 967, 0, 0, 0, 0, 266, 1260, + 0, 51, 0, 0, 0, 0, 81, 0, 0, 264, + 0, 0, 290, 0, 1494, 0, 0, 0, 0, 0, + 0, 0, 1182, 395, 0, 0, 0, 1499, 1501, 81, + 0, 0, 0, 0, 0, 0, 0, 317, 1503, 0, + 386, 0, 1514, 0, 0, 264, 0, 264, 0, 1525, + 0, 0, 395, 0, 0, 0, 0, 0, 563, 564, + 0, 565, 0, 568, 0, 0, 0, 0, 0, 579, + 0, 0, 0, 0, 0, 395, 853, 0, 0, 862, + 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, + 873, 874, 875, 876, 0, 0, 1328, 0, 0, 1512, + 0, 0, 0, 0, 1330, 0, 0, 0, 0, 395, + 0, 0, 0, 0, 0, 1339, 1340, 0, 909, 0, + 0, 1263, 1265, 0, 0, 0, 805, 0, 0, 0, + 0, 0, 0, 0, 912, 1354, 1355, 1356, 0, 1359, + 0, 0, 0, 0, 0, 1265, 0, 0, 818, 0, + 0, 0, 0, 0, 0, 0, 1370, 0, 0, 0, + 395, 0, 395, 1292, 0, 0, 531, 0, 0, 0, + 0, 539, 0, 0, 0, 841, 842, 546, 613, 0, + 616, 0, 0, 548, 0, 0, 630, 631, 632, 633, + 634, 635, 636, 0, 614, 615, 612, 618, 617, 627, + 628, 620, 621, 622, 623, 624, 625, 626, 619, 1350, + 0, 629, 0, 0, 1316, 0, 0, 1321, 1322, 1323, + 0, 1401, 0, 0, 395, 264, 0, 0, 654, 0, + 264, 895, 896, 0, 0, 0, 264, 0, 0, 0, + 0, 0, 264, 0, 0, 0, 0, 618, 617, 627, + 628, 620, 621, 622, 623, 624, 625, 626, 619, 0, + 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1444, 1445, 1446, 1447, 0, 909, 0, 1451, 1452, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 961, + 1458, 1459, 1460, 0, 691, 0, 700, 395, 0, 0, + 0, 0, 0, 0, 0, 1376, 0, 775, 0, 0, + 0, 0, 0, 0, 782, 783, 784, 0, 0, 0, + 395, 0, 0, 1481, 1069, 1070, 1071, 395, 0, 0, + 1486, 0, 802, 0, 0, 0, 0, 806, 807, 808, + 0, 810, 811, 0, 0, 0, 0, 0, 1491, 812, + 813, 0, 0, 264, 264, 264, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1410, 1411, 0, 1412, + 0, 0, 0, 1349, 1376, 0, 1376, 1376, 1376, 0, + 0, 0, 1292, 0, 24, 25, 52, 27, 28, 0, + 0, 0, 0, 1526, 1527, 0, 0, 1052, 1053, 1376, + 591, 0, 0, 43, 0, 0, 0, 0, 29, 48, + 49, 618, 617, 627, 628, 620, 621, 622, 623, 624, + 625, 626, 619, 0, 0, 629, 0, 0, 0, 38, + 0, 0, 0, 54, 724, 1468, 0, 0, 0, 0, + 0, 0, 0, 0, 780, 781, 395, 395, 0, 0, + 0, 0, 790, 0, 0, 384, 0, 0, 796, 0, + 0, 0, 909, 1080, 0, 1487, 0, 0, 0, 0, + 0, 0, 809, 0, 0, 0, 0, 0, 0, 0, + 1098, 0, 0, 0, 1493, 0, 0, 0, 0, 0, + 0, 0, 0, 264, 31, 32, 34, 33, 36, 0, + 50, 0, 0, 264, 264, 0, 0, 1376, 0, 1344, + 0, 264, 0, 0, 264, 840, 0, 264, 0, 0, + 0, 800, 37, 44, 45, 0, 0, 46, 47, 35, + 0, 264, 0, 0, 0, 0, 0, 0, 1224, 1225, + 0, 0, 0, 39, 40, 0, 41, 42, 0, 0, + 0, 0, 1242, 1243, 0, 1244, 1245, 0, 0, 0, + 1015, 0, 1017, 0, 0, 0, 1343, 1252, 1253, 0, + 0, 0, 0, 0, 264, 0, 0, 0, 0, 1044, + 0, 0, 0, 800, 618, 617, 627, 628, 620, 621, + 622, 623, 624, 625, 626, 619, 0, 0, 629, 0, + 0, 0, 0, 0, 0, 921, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 948, 0, + 0, 0, 0, 0, 0, 317, 0, 0, 53, 1299, + 317, 317, 0, 0, 317, 317, 317, 0, 1342, 0, + 910, 618, 617, 627, 628, 620, 621, 622, 623, 624, + 625, 626, 619, 0, 0, 629, 0, 0, 0, 317, + 317, 317, 317, 1341, 264, 0, 0, 0, 0, 0, + 1249, 0, 264, 943, 0, 0, 264, 264, 0, 0, + 264, 951, 800, 0, 0, 0, 0, 0, 1329, 0, + 0, 1014, 0, 0, 0, 0, 0, 0, 0, 0, + 1034, 1035, 1036, 1037, 1038, 0, 1041, 1042, 0, 0, + 1043, 0, 1283, 618, 617, 627, 628, 620, 621, 622, + 623, 624, 625, 626, 619, 0, 0, 629, 0, 1045, + 0, 0, 0, 0, 0, 0, 1050, 0, 618, 617, + 627, 628, 620, 621, 622, 623, 624, 625, 626, 619, + 264, 1223, 629, 0, 0, 0, 0, 0, 0, 264, + 264, 264, 264, 264, 0, 264, 264, 0, 0, 264, + 0, 618, 617, 627, 628, 620, 621, 622, 623, 624, + 625, 626, 619, 0, 0, 629, 746, 0, 264, 0, + 1047, 1048, 0, 0, 0, 264, 0, 1183, 0, 0, + 800, 0, 0, 0, 0, 0, 1396, 1397, 1398, 1399, + 1400, 0, 317, 0, 1403, 1404, 0, 0, 0, 0, + 0, 0, 0, 1348, 0, 0, 1212, 0, 0, 0, + 0, 0, 0, 654, 0, 0, 0, 0, 0, 0, + 0, 1363, 0, 0, 1364, 0, 1074, 1366, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 317, + 317, 0, 0, 0, 0, 734, 618, 617, 627, 628, + 620, 621, 622, 623, 624, 625, 626, 619, 317, 0, + 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 910, 264, 264, 264, + 264, 264, 0, 747, 0, 0, 0, 0, 0, 1130, + 0, 0, 264, 0, 0, 0, 943, 0, 0, 0, + 264, 0, 0, 0, 0, 0, 760, 763, 764, 765, + 766, 767, 768, 0, 769, 770, 771, 772, 773, 748, + 749, 750, 751, 732, 733, 761, 0, 735, 0, 736, + 737, 738, 739, 740, 741, 742, 743, 744, 745, 752, + 753, 754, 755, 756, 757, 758, 759, 0, 0, 0, + 0, 0, 1216, 0, 0, 0, 0, 1518, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1479, 654, 762, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 264, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 317, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 800, 0, 0, 0, 0, 0, + 0, 0, 0, 910, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1385, 0, 1311, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1314, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1324, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 264, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 264, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 264, 0, 0, 0, 0, 0, 0, 264, 0, 0, 0, 0, 0, 0, 0, - 0, 264, 0, 0, 0, 0, 0, 0, 0, 1348, - 0, 0, 0, 0, 0, 0, 0, 1216, 0, 652, - 0, 0, 0, 0, 0, 0, 0, 1363, 0, 0, - 1364, 0, 0, 1366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 906, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1311, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 939, 0, 0, 0, 0, 0, 1314, + 0, 0, 0, 0, 0, 0, 1440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1324, 0, 0, 264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1479, 652, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 943, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 906, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 264, 0, 0, 0, 0, 0, 0, 505, 493, 0, - 450, 508, 423, 440, 516, 441, 444, 481, 408, 463, - 165, 438, 0, 427, 403, 434, 404, 425, 452, 111, - 456, 422, 495, 466, 507, 137, 428, 514, 139, 472, - 0, 211, 153, 0, 0, 454, 497, 461, 490, 449, - 482, 413, 471, 509, 439, 479, 510, 0, 0, 0, - 80, 0, 964, 965, 0, 0, 0, 0, 0, 101, - 0, 476, 504, 436, 478, 480, 402, 473, 0, 406, - 409, 515, 500, 431, 432, 1151, 0, 0, 0, 0, - 0, 0, 453, 462, 487, 447, 0, 0, 0, 0, - 0, 0, 0, 1440, 429, 0, 470, 0, 0, 0, - 410, 407, 0, 0, 451, 0, 0, 0, 412, 0, - 430, 488, 0, 400, 119, 492, 499, 448, 267, 503, - 446, 445, 506, 184, 0, 215, 122, 136, 97, 83, - 93, 0, 121, 162, 191, 195, 496, 426, 435, 105, - 433, 193, 172, 231, 469, 174, 192, 140, 221, 185, - 230, 240, 241, 218, 238, 245, 208, 86, 217, 229, - 102, 203, 88, 227, 214, 151, 131, 132, 87, 1489, - 189, 110, 117, 107, 164, 224, 225, 106, 248, 94, - 237, 90, 95, 236, 158, 220, 228, 152, 145, 89, - 226, 150, 144, 135, 114, 124, 182, 142, 183, 125, - 155, 154, 156, 0, 405, 0, 212, 234, 249, 99, - 421, 219, 243, 244, 0, 0, 100, 118, 113, 181, - 157, 96, 127, 209, 134, 141, 188, 247, 171, 194, - 103, 233, 210, 417, 420, 415, 416, 464, 465, 511, - 512, 513, 489, 411, 0, 418, 419, 0, 494, 501, - 502, 468, 82, 91, 138, 246, 186, 116, 235, 401, - 414, 109, 424, 0, 0, 437, 442, 443, 455, 457, - 458, 459, 460, 467, 474, 475, 477, 483, 484, 485, - 486, 491, 498, 517, 84, 85, 92, 98, 104, 108, - 112, 115, 120, 123, 126, 128, 129, 130, 133, 143, - 146, 147, 148, 149, 159, 160, 161, 163, 166, 167, - 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, - 187, 190, 196, 197, 198, 199, 200, 201, 202, 204, - 205, 206, 207, 213, 216, 222, 223, 232, 239, 242, + 0, 0, 1489, 0, 0, 0, 0, 0, 0, 0, 505, 493, 0, 450, 508, 423, 440, 516, 441, 444, 481, 408, 463, 165, 438, 0, 427, 403, 434, 404, 425, 452, 111, 456, 422, 495, 466, 507, 137, 428, - 514, 139, 472, 0, 211, 153, 0, 0, 454, 497, + 514, 139, 472, 0, 211, 153, 0, 910, 454, 497, 461, 490, 449, 482, 413, 471, 509, 439, 479, 510, - 0, 0, 0, 80, 0, 964, 965, 0, 0, 0, + 0, 264, 0, 80, 0, 968, 969, 0, 0, 0, 0, 0, 101, 0, 476, 504, 436, 478, 480, 402, - 473, 0, 406, 409, 515, 500, 431, 432, 0, 0, + 473, 0, 406, 409, 515, 500, 431, 432, 1153, 0, 0, 0, 0, 0, 0, 453, 462, 487, 447, 0, 0, 0, 0, 0, 0, 0, 0, 429, 0, 470, 0, 0, 0, 410, 407, 0, 0, 451, 0, 0, @@ -1230,7 +1200,7 @@ var yyAct = [...]int{ 403, 434, 404, 425, 452, 111, 456, 422, 495, 466, 507, 137, 428, 514, 139, 472, 0, 211, 153, 0, 0, 454, 497, 461, 490, 449, 482, 413, 471, 509, - 439, 479, 510, 54, 0, 0, 80, 0, 0, 0, + 439, 479, 510, 0, 0, 0, 80, 0, 968, 969, 0, 0, 0, 0, 0, 101, 0, 476, 504, 436, 478, 480, 402, 473, 0, 406, 409, 515, 500, 431, 432, 0, 0, 0, 0, 0, 0, 0, 453, 462, @@ -1264,12 +1234,12 @@ var yyAct = [...]int{ 438, 0, 427, 403, 434, 404, 425, 452, 111, 456, 422, 495, 466, 507, 137, 428, 514, 139, 472, 0, 211, 153, 0, 0, 454, 497, 461, 490, 449, 482, - 413, 471, 509, 439, 479, 510, 0, 0, 0, 80, + 413, 471, 509, 439, 479, 510, 54, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 476, 504, 436, 478, 480, 402, 473, 0, 406, 409, 515, 500, 431, 432, 0, 0, 0, 0, 0, 0, 0, 453, 462, 487, 447, 0, 0, 0, 0, 0, - 0, 1219, 0, 429, 0, 470, 0, 0, 0, 410, + 0, 0, 0, 429, 0, 470, 0, 0, 0, 410, 407, 0, 0, 451, 0, 0, 0, 412, 0, 430, 488, 0, 400, 119, 492, 499, 448, 267, 503, 446, 445, 506, 184, 0, 215, 122, 136, 97, 83, 93, @@ -1299,11 +1269,11 @@ var yyAct = [...]int{ 452, 111, 456, 422, 495, 466, 507, 137, 428, 514, 139, 472, 0, 211, 153, 0, 0, 454, 497, 461, 490, 449, 482, 413, 471, 509, 439, 479, 510, 0, - 0, 0, 265, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 476, 504, 436, 478, 480, 402, 473, 0, 406, 409, 515, 500, 431, 432, 0, 0, 0, 0, 0, 0, 0, 453, 462, 487, 447, 0, 0, - 0, 0, 0, 0, 948, 0, 429, 0, 470, 0, + 0, 0, 0, 0, 1219, 0, 429, 0, 470, 0, 0, 0, 410, 407, 0, 0, 451, 0, 0, 0, 412, 0, 430, 488, 0, 400, 119, 492, 499, 448, 267, 503, 446, 445, 506, 184, 0, 215, 122, 136, @@ -1333,11 +1303,11 @@ var yyAct = [...]int{ 434, 404, 425, 452, 111, 456, 422, 495, 466, 507, 137, 428, 514, 139, 472, 0, 211, 153, 0, 0, 454, 497, 461, 490, 449, 482, 413, 471, 509, 439, - 479, 510, 0, 0, 0, 322, 0, 0, 0, 0, + 479, 510, 0, 0, 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 476, 504, 436, 478, 480, 402, 473, 0, 406, 409, 515, 500, 431, 432, 0, 0, 0, 0, 0, 0, 0, 453, 462, 487, - 447, 0, 0, 0, 0, 0, 0, 845, 0, 429, + 447, 0, 0, 0, 0, 0, 0, 952, 0, 429, 0, 470, 0, 0, 0, 410, 407, 0, 0, 451, 0, 0, 0, 412, 0, 430, 488, 0, 400, 119, 492, 499, 448, 267, 503, 446, 445, 506, 184, 0, @@ -1367,12 +1337,12 @@ var yyAct = [...]int{ 0, 427, 403, 434, 404, 425, 452, 111, 456, 422, 495, 466, 507, 137, 428, 514, 139, 472, 0, 211, 153, 0, 0, 454, 497, 461, 490, 449, 482, 413, - 471, 509, 439, 479, 510, 0, 0, 0, 80, 0, + 471, 509, 439, 479, 510, 0, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 476, 504, 436, 478, 480, 402, 473, 0, 406, 409, 515, 500, 431, 432, 0, 0, 0, 0, 0, 0, 0, 453, 462, 487, 447, 0, 0, 0, 0, 0, 0, - 0, 0, 429, 0, 470, 0, 0, 0, 410, 407, + 849, 0, 429, 0, 470, 0, 0, 0, 410, 407, 0, 0, 451, 0, 0, 0, 412, 0, 430, 488, 0, 400, 119, 492, 499, 448, 267, 503, 446, 445, 506, 184, 0, 215, 122, 136, 97, 83, 93, 0, @@ -1402,7 +1372,7 @@ var yyAct = [...]int{ 111, 456, 422, 495, 466, 507, 137, 428, 514, 139, 472, 0, 211, 153, 0, 0, 454, 497, 461, 490, 449, 482, 413, 471, 509, 439, 479, 510, 0, 0, - 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 476, 504, 436, 478, 480, 402, 473, 0, 406, 409, 515, 500, 431, 432, 0, 0, 0, 0, 0, 0, 0, 453, 462, 487, 447, 0, 0, 0, @@ -1436,7 +1406,7 @@ var yyAct = [...]int{ 404, 425, 452, 111, 456, 422, 495, 466, 507, 137, 428, 514, 139, 472, 0, 211, 153, 0, 0, 454, 497, 461, 490, 449, 482, 413, 471, 509, 439, 479, - 510, 0, 0, 0, 80, 0, 0, 0, 0, 0, + 510, 0, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 476, 504, 436, 478, 480, 402, 473, 0, 406, 409, 515, 500, 431, 432, 0, 0, 0, 0, 0, 0, 0, 453, 462, 487, 447, @@ -1449,11 +1419,11 @@ var yyAct = [...]int{ 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, - 225, 106, 248, 94, 237, 90, 398, 236, 158, 220, + 225, 106, 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, 405, 0, 212, 234, 249, 99, 421, 219, 243, 244, 0, 0, - 100, 118, 113, 181, 399, 397, 127, 209, 134, 141, + 100, 118, 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, 210, 417, 420, 415, 416, 464, 465, 511, 512, 513, 489, 411, 0, 418, 419, 0, 494, 501, 502, 468, 82, 91, 138, 246, @@ -1470,7 +1440,7 @@ var yyAct = [...]int{ 427, 403, 434, 404, 425, 452, 111, 456, 422, 495, 466, 507, 137, 428, 514, 139, 472, 0, 211, 153, 0, 0, 454, 497, 461, 490, 449, 482, 413, 471, - 509, 439, 479, 510, 0, 0, 0, 265, 0, 0, + 509, 439, 479, 510, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 476, 504, 436, 478, 480, 402, 473, 0, 406, 409, 515, 500, 431, 432, 0, 0, 0, 0, 0, 0, 0, 453, @@ -1483,11 +1453,11 @@ var yyAct = [...]int{ 231, 469, 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, 117, - 107, 164, 224, 225, 106, 248, 94, 237, 90, 95, + 107, 164, 224, 225, 106, 248, 94, 237, 90, 398, 236, 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, 405, 0, 212, 234, 249, 99, 421, 219, 243, - 244, 0, 0, 100, 118, 113, 181, 157, 96, 127, + 244, 0, 0, 100, 118, 113, 181, 399, 397, 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, 210, 417, 420, 415, 416, 464, 465, 511, 512, 513, 489, 411, 0, 418, 419, 0, 494, 501, 502, 468, 82, @@ -1505,7 +1475,7 @@ var yyAct = [...]int{ 456, 422, 495, 466, 507, 137, 428, 514, 139, 472, 0, 211, 153, 0, 0, 454, 497, 461, 490, 449, 482, 413, 471, 509, 439, 479, 510, 0, 0, 0, - 80, 0, 0, 0, 0, 0, 0, 0, 0, 101, + 265, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 476, 504, 436, 478, 480, 402, 473, 0, 406, 409, 515, 500, 431, 432, 0, 0, 0, 0, 0, 0, 0, 453, 462, 487, 447, 0, 0, 0, 0, @@ -1515,14 +1485,14 @@ var yyAct = [...]int{ 446, 445, 506, 184, 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, 191, 195, 496, 426, 435, 105, 433, 193, 172, 231, 469, 174, 192, 140, 221, 185, - 230, 240, 241, 218, 238, 245, 208, 86, 217, 709, + 230, 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, 94, - 237, 90, 398, 236, 158, 220, 228, 152, 145, 89, + 237, 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, 405, 0, 212, 234, 249, 99, 421, 219, 243, 244, 0, 0, 100, 118, 113, 181, - 399, 397, 127, 209, 134, 141, 188, 247, 171, 194, + 157, 96, 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, 210, 417, 420, 415, 416, 464, 465, 511, 512, 513, 489, 411, 0, 418, 419, 0, 494, 501, 502, 468, 82, 91, 138, 246, 186, 116, 235, 401, @@ -1550,13 +1520,13 @@ var yyAct = [...]int{ 136, 97, 83, 93, 0, 121, 162, 191, 195, 496, 426, 435, 105, 433, 193, 172, 231, 469, 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, - 86, 217, 389, 102, 203, 88, 227, 214, 151, 131, + 86, 217, 711, 102, 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, 398, 236, 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, 405, 0, 212, 234, 249, 99, 421, 219, 243, 244, 0, 0, 100, - 118, 113, 181, 399, 397, 392, 391, 134, 141, 188, + 118, 113, 181, 399, 397, 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, 210, 417, 420, 415, 416, 464, 465, 511, 512, 513, 489, 411, 0, 418, 419, 0, 494, 501, 502, 468, 82, 91, 138, 246, 186, @@ -1568,642 +1538,842 @@ var yyAct = [...]int{ 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, 222, 223, - 232, 239, 242, 165, 0, 0, 881, 0, 324, 0, - 0, 0, 111, 0, 321, 0, 0, 0, 137, 882, - 364, 139, 0, 0, 211, 153, 0, 0, 0, 0, - 355, 356, 0, 0, 0, 0, 0, 0, 0, 0, - 54, 0, 0, 322, 343, 342, 345, 346, 347, 348, - 0, 0, 101, 344, 349, 350, 351, 0, 0, 0, - 319, 336, 0, 363, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 333, 334, 315, 0, 0, 0, 377, - 0, 335, 0, 0, 330, 331, 332, 337, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, - 0, 267, 0, 0, 375, 0, 184, 0, 215, 122, - 136, 97, 83, 93, 0, 121, 162, 191, 195, 0, - 0, 0, 105, 0, 193, 172, 231, 0, 174, 192, - 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, - 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, - 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, - 106, 248, 94, 237, 90, 95, 236, 158, 220, 228, - 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, - 142, 183, 125, 155, 154, 156, 0, 0, 0, 212, - 234, 249, 99, 0, 219, 243, 244, 0, 0, 100, - 118, 113, 181, 157, 96, 127, 209, 134, 141, 188, - 247, 171, 194, 103, 233, 210, 365, 376, 371, 372, - 369, 370, 368, 367, 366, 378, 357, 358, 359, 360, - 362, 0, 373, 374, 361, 82, 91, 138, 246, 186, - 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, + 232, 239, 242, 505, 493, 0, 450, 508, 423, 440, + 516, 441, 444, 481, 408, 463, 165, 438, 0, 427, + 403, 434, 404, 425, 452, 111, 456, 422, 495, 466, + 507, 137, 428, 514, 139, 472, 0, 211, 153, 0, + 0, 454, 497, 461, 490, 449, 482, 413, 471, 509, + 439, 479, 510, 0, 0, 0, 80, 0, 0, 0, + 0, 0, 0, 0, 0, 101, 0, 476, 504, 436, + 478, 480, 402, 473, 0, 406, 409, 515, 500, 431, + 432, 0, 0, 0, 0, 0, 0, 0, 453, 462, + 487, 447, 0, 0, 0, 0, 0, 0, 0, 0, + 429, 0, 470, 0, 0, 0, 410, 407, 0, 0, + 451, 0, 0, 0, 412, 0, 430, 488, 0, 400, + 119, 492, 499, 448, 267, 503, 446, 445, 506, 184, + 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, + 191, 195, 496, 426, 435, 105, 433, 193, 172, 231, + 469, 174, 192, 140, 221, 185, 230, 240, 241, 218, + 238, 245, 208, 86, 217, 389, 102, 203, 88, 227, + 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, + 164, 224, 225, 106, 248, 94, 237, 90, 398, 236, + 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, + 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, + 405, 0, 212, 234, 249, 99, 421, 219, 243, 244, + 0, 0, 100, 118, 113, 181, 399, 397, 392, 391, + 134, 141, 188, 247, 171, 194, 103, 233, 210, 417, + 420, 415, 416, 464, 465, 511, 512, 513, 489, 411, + 0, 418, 419, 0, 494, 501, 502, 468, 82, 91, + 138, 246, 186, 116, 235, 401, 414, 109, 424, 0, + 0, 437, 442, 443, 455, 457, 458, 459, 460, 467, + 474, 475, 477, 483, 484, 485, 486, 491, 498, 517, + 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, + 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, + 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, + 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, + 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, + 216, 222, 223, 232, 239, 242, 165, 0, 0, 885, + 0, 324, 0, 0, 0, 111, 0, 321, 0, 0, + 0, 137, 886, 364, 139, 0, 0, 211, 153, 0, + 0, 0, 0, 355, 356, 0, 0, 0, 0, 0, + 0, 0, 0, 54, 0, 0, 322, 343, 342, 345, + 346, 347, 348, 0, 0, 101, 344, 349, 350, 351, + 0, 0, 0, 319, 336, 0, 363, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 333, 334, 315, 0, + 0, 0, 377, 0, 335, 0, 0, 330, 331, 332, + 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 119, 0, 0, 0, 267, 0, 0, 375, 0, 184, + 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, + 191, 195, 0, 0, 0, 105, 0, 193, 172, 231, + 0, 174, 192, 140, 221, 185, 230, 240, 241, 218, + 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, + 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, + 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, + 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, + 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, + 0, 0, 212, 234, 249, 99, 0, 219, 243, 244, + 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, + 134, 141, 188, 247, 171, 194, 103, 233, 210, 365, + 376, 371, 372, 369, 370, 368, 367, 366, 378, 357, + 358, 359, 360, 362, 0, 373, 374, 361, 82, 91, + 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 84, 85, 92, - 98, 104, 108, 112, 115, 120, 123, 126, 128, 129, - 130, 133, 143, 146, 147, 148, 149, 159, 160, 161, - 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, - 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, - 201, 202, 204, 205, 206, 207, 213, 216, 222, 223, - 232, 239, 242, 165, 0, 0, 0, 0, 324, 0, - 0, 0, 111, 0, 321, 0, 0, 0, 137, 0, - 364, 139, 0, 0, 211, 153, 0, 0, 0, 0, - 355, 356, 0, 0, 0, 0, 0, 0, 955, 0, - 54, 0, 0, 322, 343, 342, 345, 346, 347, 348, - 0, 0, 101, 344, 349, 350, 351, 956, 0, 0, - 319, 336, 0, 363, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 333, 334, 0, 0, 0, 0, 377, - 0, 335, 0, 0, 330, 331, 332, 337, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, - 0, 267, 0, 0, 375, 0, 184, 0, 215, 122, - 136, 97, 83, 93, 0, 121, 162, 191, 195, 0, - 0, 0, 105, 0, 193, 172, 231, 0, 174, 192, - 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, - 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, - 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, - 106, 248, 94, 237, 90, 95, 236, 158, 220, 228, - 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, - 142, 183, 125, 155, 154, 156, 0, 0, 0, 212, - 234, 249, 99, 0, 219, 243, 244, 0, 0, 100, - 118, 113, 181, 157, 96, 127, 209, 134, 141, 188, - 247, 171, 194, 103, 233, 210, 365, 376, 371, 372, - 369, 370, 368, 367, 366, 378, 357, 358, 359, 360, - 362, 0, 373, 374, 361, 82, 91, 138, 246, 186, - 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 84, 85, 92, - 98, 104, 108, 112, 115, 120, 123, 126, 128, 129, - 130, 133, 143, 146, 147, 148, 149, 159, 160, 161, - 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, - 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, - 201, 202, 204, 205, 206, 207, 213, 216, 222, 223, - 232, 239, 242, 165, 0, 0, 0, 0, 324, 0, - 0, 0, 111, 0, 321, 0, 0, 0, 137, 0, - 364, 139, 0, 0, 211, 153, 0, 0, 0, 0, - 355, 356, 0, 0, 0, 0, 0, 0, 0, 0, - 54, 0, 581, 322, 343, 342, 345, 346, 347, 348, - 0, 0, 101, 344, 349, 350, 351, 0, 0, 0, - 319, 336, 0, 363, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 333, 334, 0, 0, 0, 0, 377, - 0, 335, 0, 0, 330, 331, 332, 337, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, - 0, 267, 0, 0, 375, 0, 184, 0, 215, 122, - 136, 97, 83, 93, 0, 121, 162, 191, 195, 0, - 0, 0, 105, 0, 193, 172, 231, 0, 174, 192, - 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, - 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, - 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, - 106, 248, 94, 237, 90, 95, 236, 158, 220, 228, - 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, - 142, 183, 125, 155, 154, 156, 0, 0, 0, 212, - 234, 249, 99, 0, 219, 243, 244, 0, 0, 100, - 118, 113, 181, 157, 96, 127, 209, 134, 141, 188, - 247, 171, 194, 103, 233, 210, 365, 376, 371, 372, - 369, 370, 368, 367, 366, 378, 357, 358, 359, 360, - 362, 0, 373, 374, 361, 82, 91, 138, 246, 186, - 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, + 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, + 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, + 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, + 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, + 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, + 216, 222, 223, 232, 239, 242, 165, 0, 0, 0, + 0, 324, 0, 0, 0, 111, 0, 321, 0, 0, + 0, 137, 0, 364, 139, 0, 0, 211, 153, 0, + 0, 0, 0, 355, 356, 0, 0, 0, 0, 0, + 0, 959, 0, 54, 0, 0, 322, 343, 342, 345, + 346, 347, 348, 0, 0, 101, 344, 349, 350, 351, + 960, 0, 0, 319, 336, 0, 363, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 333, 334, 0, 0, + 0, 0, 377, 0, 335, 0, 0, 330, 331, 332, + 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 119, 0, 0, 0, 267, 0, 0, 375, 0, 184, + 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, + 191, 195, 0, 0, 0, 105, 0, 193, 172, 231, + 0, 174, 192, 140, 221, 185, 230, 240, 241, 218, + 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, + 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, + 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, + 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, + 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, + 0, 0, 212, 234, 249, 99, 0, 219, 243, 244, + 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, + 134, 141, 188, 247, 171, 194, 103, 233, 210, 365, + 376, 371, 372, 369, 370, 368, 367, 366, 378, 357, + 358, 359, 360, 362, 0, 373, 374, 361, 82, 91, + 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 84, 85, 92, - 98, 104, 108, 112, 115, 120, 123, 126, 128, 129, - 130, 133, 143, 146, 147, 148, 149, 159, 160, 161, - 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, - 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, - 201, 202, 204, 205, 206, 207, 213, 216, 222, 223, - 232, 239, 242, 165, 0, 0, 0, 0, 324, 0, - 0, 0, 111, 0, 321, 0, 0, 0, 137, 0, - 364, 139, 0, 0, 211, 153, 0, 0, 0, 0, - 355, 356, 0, 0, 0, 0, 0, 0, 0, 0, - 54, 0, 0, 322, 343, 342, 345, 346, 347, 348, - 0, 0, 101, 344, 349, 350, 351, 0, 0, 0, - 319, 336, 0, 363, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 333, 334, 315, 0, 0, 0, 377, - 0, 335, 0, 0, 330, 331, 332, 337, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, - 0, 267, 0, 0, 375, 0, 184, 0, 215, 122, - 136, 97, 83, 93, 0, 121, 162, 191, 195, 0, - 0, 0, 105, 0, 193, 172, 231, 0, 174, 192, - 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, - 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, - 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, - 106, 248, 94, 237, 90, 95, 236, 158, 220, 228, - 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, - 142, 183, 125, 155, 154, 156, 0, 0, 0, 212, - 234, 249, 99, 0, 219, 243, 244, 0, 0, 100, - 118, 113, 181, 157, 96, 127, 209, 134, 141, 188, - 247, 171, 194, 103, 233, 210, 365, 376, 371, 372, - 369, 370, 368, 367, 366, 378, 357, 358, 359, 360, - 362, 0, 373, 374, 361, 82, 91, 138, 246, 186, - 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 84, 85, 92, - 98, 104, 108, 112, 115, 120, 123, 126, 128, 129, - 130, 133, 143, 146, 147, 148, 149, 159, 160, 161, - 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, - 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, - 201, 202, 204, 205, 206, 207, 213, 216, 222, 223, - 232, 239, 242, 165, 0, 0, 0, 0, 324, 0, - 0, 0, 111, 0, 321, 0, 0, 0, 137, 0, - 364, 139, 0, 0, 211, 153, 0, 0, 0, 0, - 355, 356, 0, 0, 0, 0, 0, 0, 0, 0, - 54, 0, 0, 322, 343, 897, 345, 346, 347, 348, - 0, 0, 101, 344, 349, 350, 351, 0, 0, 0, - 319, 336, 0, 363, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 333, 334, 315, 0, 0, 0, 377, - 0, 335, 0, 0, 330, 331, 332, 337, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, - 0, 267, 0, 0, 375, 0, 184, 0, 215, 122, - 136, 97, 83, 93, 0, 121, 162, 191, 195, 0, - 0, 0, 105, 0, 193, 172, 231, 0, 174, 192, - 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, - 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, - 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, - 106, 248, 94, 237, 90, 95, 236, 158, 220, 228, - 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, - 142, 183, 125, 155, 154, 156, 0, 0, 0, 212, - 234, 249, 99, 0, 219, 243, 244, 0, 0, 100, - 118, 113, 181, 157, 96, 127, 209, 134, 141, 188, - 247, 171, 194, 103, 233, 210, 365, 376, 371, 372, - 369, 370, 368, 367, 366, 378, 357, 358, 359, 360, - 362, 0, 373, 374, 361, 82, 91, 138, 246, 186, - 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, + 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, + 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, + 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, + 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, + 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, + 216, 222, 223, 232, 239, 242, 165, 0, 0, 0, + 0, 324, 0, 0, 0, 111, 0, 321, 0, 0, + 0, 137, 0, 364, 139, 0, 0, 211, 153, 0, + 0, 0, 0, 355, 356, 0, 0, 0, 0, 0, + 0, 0, 0, 54, 0, 583, 322, 343, 342, 345, + 346, 347, 348, 0, 0, 101, 344, 349, 350, 351, + 0, 0, 0, 319, 336, 0, 363, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 333, 334, 0, 0, + 0, 0, 377, 0, 335, 0, 0, 330, 331, 332, + 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 119, 0, 0, 0, 267, 0, 0, 375, 0, 184, + 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, + 191, 195, 0, 0, 0, 105, 0, 193, 172, 231, + 0, 174, 192, 140, 221, 185, 230, 240, 241, 218, + 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, + 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, + 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, + 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, + 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, + 0, 0, 212, 234, 249, 99, 0, 219, 243, 244, + 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, + 134, 141, 188, 247, 171, 194, 103, 233, 210, 365, + 376, 371, 372, 369, 370, 368, 367, 366, 378, 357, + 358, 359, 360, 362, 0, 373, 374, 361, 82, 91, + 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 84, 85, 92, - 98, 104, 108, 112, 115, 120, 123, 126, 128, 129, - 130, 133, 143, 146, 147, 148, 149, 159, 160, 161, - 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, - 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, - 201, 202, 204, 205, 206, 207, 213, 216, 222, 223, - 232, 239, 242, 165, 0, 0, 0, 0, 324, 0, - 0, 0, 111, 0, 321, 0, 0, 0, 137, 0, - 364, 139, 0, 0, 211, 153, 0, 0, 0, 0, - 355, 356, 0, 0, 0, 0, 0, 0, 0, 0, - 54, 0, 0, 322, 343, 894, 345, 346, 347, 348, - 0, 0, 101, 344, 349, 350, 351, 0, 0, 0, - 319, 336, 0, 363, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 333, 334, 315, 0, 0, 0, 377, - 0, 335, 0, 0, 330, 331, 332, 337, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, - 0, 267, 0, 0, 375, 0, 184, 0, 215, 122, - 136, 97, 83, 93, 0, 121, 162, 191, 195, 0, - 0, 0, 105, 0, 193, 172, 231, 0, 174, 192, - 140, 221, 185, 230, 240, 241, 218, 238, 245, 208, - 86, 217, 229, 102, 203, 88, 227, 214, 151, 131, - 132, 87, 0, 189, 110, 117, 107, 164, 224, 225, - 106, 248, 94, 237, 90, 95, 236, 158, 220, 228, - 152, 145, 89, 226, 150, 144, 135, 114, 124, 182, - 142, 183, 125, 155, 154, 156, 0, 0, 0, 212, - 234, 249, 99, 0, 219, 243, 244, 0, 0, 100, - 118, 113, 181, 157, 96, 127, 209, 134, 141, 188, - 247, 171, 194, 103, 233, 210, 365, 376, 371, 372, - 369, 370, 368, 367, 366, 378, 357, 358, 359, 360, - 362, 0, 373, 374, 361, 82, 91, 138, 246, 186, - 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 84, 85, 92, - 98, 104, 108, 112, 115, 120, 123, 126, 128, 129, - 130, 133, 143, 146, 147, 148, 149, 159, 160, 161, - 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, - 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, - 201, 202, 204, 205, 206, 207, 213, 216, 222, 223, - 232, 239, 242, 24, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, - 324, 0, 0, 0, 111, 0, 321, 0, 0, 0, - 137, 0, 364, 139, 0, 0, 211, 153, 0, 0, - 0, 0, 355, 356, 0, 0, 0, 0, 0, 0, - 0, 0, 54, 0, 0, 322, 343, 342, 345, 346, - 347, 348, 0, 0, 101, 344, 349, 350, 351, 0, - 0, 0, 319, 336, 0, 363, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 333, 334, 0, 0, 0, - 0, 377, 0, 335, 0, 0, 330, 331, 332, 337, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 0, 0, 0, 267, 0, 0, 375, 0, 184, 0, - 215, 122, 136, 97, 83, 93, 0, 121, 162, 191, - 195, 0, 0, 0, 105, 0, 193, 172, 231, 0, - 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, - 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, - 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, - 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, - 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, - 124, 182, 142, 183, 125, 155, 154, 156, 0, 0, - 0, 212, 234, 249, 99, 0, 219, 243, 244, 0, - 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, - 141, 188, 247, 171, 194, 103, 233, 210, 365, 376, - 371, 372, 369, 370, 368, 367, 366, 378, 357, 358, - 359, 360, 362, 0, 373, 374, 361, 82, 91, 138, - 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, + 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, + 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, + 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, + 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, + 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, + 216, 222, 223, 232, 239, 242, 165, 0, 0, 0, + 0, 324, 0, 0, 0, 111, 0, 321, 0, 0, + 0, 137, 0, 364, 139, 0, 0, 211, 153, 0, + 0, 0, 0, 355, 356, 0, 0, 0, 0, 0, + 0, 0, 0, 54, 0, 0, 322, 343, 342, 345, + 346, 347, 348, 0, 0, 101, 344, 349, 350, 351, + 0, 0, 0, 319, 336, 0, 363, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 333, 334, 315, 0, + 0, 0, 377, 0, 335, 0, 0, 330, 331, 332, + 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 119, 0, 0, 0, 267, 0, 0, 375, 0, 184, + 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, + 191, 195, 0, 0, 0, 105, 0, 193, 172, 231, + 0, 174, 192, 140, 221, 185, 230, 240, 241, 218, + 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, + 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, + 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, + 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, + 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, + 0, 0, 212, 234, 249, 99, 0, 219, 243, 244, + 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, + 134, 141, 188, 247, 171, 194, 103, 233, 210, 365, + 376, 371, 372, 369, 370, 368, 367, 366, 378, 357, + 358, 359, 360, 362, 0, 373, 374, 361, 82, 91, + 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, - 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, - 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, - 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, - 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, - 222, 223, 232, 239, 242, 165, 0, 0, 0, 0, - 324, 0, 0, 0, 111, 0, 321, 0, 0, 0, - 137, 0, 364, 139, 0, 0, 211, 153, 0, 0, - 0, 0, 355, 356, 0, 0, 0, 0, 0, 0, - 0, 0, 54, 0, 0, 322, 343, 342, 345, 346, - 347, 348, 0, 0, 101, 344, 349, 350, 351, 0, - 0, 0, 319, 336, 0, 363, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 333, 334, 0, 0, 0, - 0, 377, 0, 335, 0, 0, 330, 331, 332, 337, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 0, 0, 0, 267, 0, 0, 375, 0, 184, 0, - 215, 122, 136, 97, 83, 93, 0, 121, 162, 191, - 195, 0, 0, 0, 105, 0, 193, 172, 231, 0, - 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, - 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, - 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, - 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, - 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, - 124, 182, 142, 183, 125, 155, 154, 156, 0, 0, - 0, 212, 234, 249, 99, 0, 219, 243, 244, 0, - 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, - 141, 188, 247, 171, 194, 103, 233, 210, 365, 376, - 371, 372, 369, 370, 368, 367, 366, 378, 357, 358, - 359, 360, 362, 0, 373, 374, 361, 82, 91, 138, - 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, - 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, - 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, - 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, - 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, - 222, 223, 232, 239, 242, 165, 0, 0, 0, 0, - 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, - 137, 0, 364, 139, 0, 0, 211, 153, 0, 0, - 0, 0, 355, 356, 0, 0, 0, 0, 0, 0, - 0, 0, 54, 0, 0, 322, 343, 342, 345, 346, - 347, 348, 0, 0, 101, 344, 349, 350, 351, 0, - 0, 0, 0, 336, 0, 363, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 333, 334, 0, 0, 0, - 0, 377, 0, 335, 0, 0, 330, 331, 332, 337, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 0, 0, 0, 267, 0, 0, 375, 0, 184, 0, - 215, 122, 136, 97, 83, 93, 0, 121, 162, 191, - 195, 0, 0, 0, 105, 0, 193, 172, 231, 1519, - 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, - 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, - 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, - 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, - 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, - 124, 182, 142, 183, 125, 155, 154, 156, 0, 0, - 0, 212, 234, 249, 99, 0, 219, 243, 244, 0, - 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, - 141, 188, 247, 171, 194, 103, 233, 210, 365, 376, - 371, 372, 369, 370, 368, 367, 366, 378, 357, 358, - 359, 360, 362, 0, 373, 374, 361, 82, 91, 138, - 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, + 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, + 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, + 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, + 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, + 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, + 216, 222, 223, 232, 239, 242, 165, 0, 0, 0, + 0, 324, 0, 0, 0, 111, 0, 321, 0, 0, + 0, 137, 0, 364, 139, 0, 0, 211, 153, 0, + 0, 0, 0, 355, 356, 0, 0, 0, 0, 0, + 0, 0, 0, 54, 0, 0, 322, 343, 901, 345, + 346, 347, 348, 0, 0, 101, 344, 349, 350, 351, + 0, 0, 0, 319, 336, 0, 363, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 333, 334, 315, 0, + 0, 0, 377, 0, 335, 0, 0, 330, 331, 332, + 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 119, 0, 0, 0, 267, 0, 0, 375, 0, 184, + 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, + 191, 195, 0, 0, 0, 105, 0, 193, 172, 231, + 0, 174, 192, 140, 221, 185, 230, 240, 241, 218, + 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, + 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, + 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, + 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, + 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, + 0, 0, 212, 234, 249, 99, 0, 219, 243, 244, + 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, + 134, 141, 188, 247, 171, 194, 103, 233, 210, 365, + 376, 371, 372, 369, 370, 368, 367, 366, 378, 357, + 358, 359, 360, 362, 0, 373, 374, 361, 82, 91, + 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, - 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, - 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, - 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, - 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, - 222, 223, 232, 239, 242, 165, 0, 0, 0, 0, - 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, - 137, 0, 364, 139, 0, 0, 211, 153, 0, 0, - 0, 0, 355, 356, 0, 0, 0, 0, 0, 0, - 0, 0, 54, 0, 581, 322, 343, 342, 345, 346, - 347, 348, 0, 0, 101, 344, 349, 350, 351, 0, - 0, 0, 0, 336, 0, 363, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 333, 334, 0, 0, 0, - 0, 377, 0, 335, 0, 0, 330, 331, 332, 337, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 0, 0, 0, 267, 0, 0, 375, 0, 184, 0, - 215, 122, 136, 97, 83, 93, 0, 121, 162, 191, - 195, 0, 0, 0, 105, 0, 193, 172, 231, 0, - 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, - 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, - 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, - 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, - 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, - 124, 182, 142, 183, 125, 155, 154, 156, 0, 0, - 0, 212, 234, 249, 99, 0, 219, 243, 244, 0, - 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, - 141, 188, 247, 171, 194, 103, 233, 210, 365, 376, - 371, 372, 369, 370, 368, 367, 366, 378, 357, 358, - 359, 360, 362, 0, 373, 374, 361, 82, 91, 138, - 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, - 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, - 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, - 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, - 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, - 222, 223, 232, 239, 242, 165, 0, 0, 0, 0, - 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, - 137, 0, 364, 139, 0, 0, 211, 153, 0, 0, - 0, 0, 355, 356, 0, 0, 0, 0, 0, 0, - 0, 0, 54, 0, 0, 322, 343, 342, 345, 346, - 347, 348, 0, 0, 101, 344, 349, 350, 351, 0, - 0, 0, 0, 336, 0, 363, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 333, 334, 0, 0, 0, - 0, 377, 0, 335, 0, 0, 330, 331, 332, 337, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 0, 0, 0, 267, 0, 0, 375, 0, 184, 0, - 215, 122, 136, 97, 83, 93, 0, 121, 162, 191, - 195, 0, 0, 0, 105, 0, 193, 172, 231, 0, - 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, - 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, - 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, - 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, - 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, - 124, 182, 142, 183, 125, 155, 154, 156, 0, 0, - 0, 212, 234, 249, 99, 0, 219, 243, 244, 0, - 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, - 141, 188, 247, 171, 194, 103, 233, 210, 365, 376, - 371, 372, 369, 370, 368, 367, 366, 378, 357, 358, - 359, 360, 362, 0, 373, 374, 361, 82, 91, 138, - 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, + 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, + 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, + 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, + 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, + 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, + 216, 222, 223, 232, 239, 242, 165, 0, 0, 0, + 0, 324, 0, 0, 0, 111, 0, 321, 0, 0, + 0, 137, 0, 364, 139, 0, 0, 211, 153, 0, + 0, 0, 0, 355, 356, 0, 0, 0, 0, 0, + 0, 0, 0, 54, 0, 0, 322, 343, 898, 345, + 346, 347, 348, 0, 0, 101, 344, 349, 350, 351, + 0, 0, 0, 319, 336, 0, 363, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 333, 334, 315, 0, + 0, 0, 377, 0, 335, 0, 0, 330, 331, 332, + 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 119, 0, 0, 0, 267, 0, 0, 375, 0, 184, + 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, + 191, 195, 0, 0, 0, 105, 0, 193, 172, 231, + 0, 174, 192, 140, 221, 185, 230, 240, 241, 218, + 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, + 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, + 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, + 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, + 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, + 0, 0, 212, 234, 249, 99, 0, 219, 243, 244, + 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, + 134, 141, 188, 247, 171, 194, 103, 233, 210, 365, + 376, 371, 372, 369, 370, 368, 367, 366, 378, 357, + 358, 359, 360, 362, 0, 373, 374, 361, 82, 91, + 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, - 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, - 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, - 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, - 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, - 222, 223, 232, 239, 242, 165, 0, 0, 0, 0, - 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, - 137, 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, - 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, + 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, + 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, + 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, + 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, + 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, + 216, 222, 223, 232, 239, 242, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, + 0, 0, 0, 324, 0, 0, 0, 111, 0, 321, + 0, 0, 0, 137, 0, 364, 139, 0, 0, 211, + 153, 0, 0, 0, 0, 355, 356, 0, 0, 0, + 0, 0, 0, 0, 0, 54, 0, 0, 322, 343, + 342, 345, 346, 347, 348, 0, 0, 101, 344, 349, + 350, 351, 0, 0, 0, 319, 336, 0, 363, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 333, 334, + 0, 0, 0, 0, 377, 0, 335, 0, 0, 330, + 331, 332, 337, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 0, 0, 0, 267, 0, 0, 375, + 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, + 172, 231, 0, 174, 192, 140, 221, 185, 230, 240, + 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, + 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, + 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, + 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, + 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, + 156, 0, 0, 0, 212, 234, 249, 99, 0, 219, + 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, + 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, + 210, 365, 376, 371, 372, 369, 370, 368, 367, 366, + 378, 357, 358, 359, 360, 362, 0, 373, 374, 361, + 82, 91, 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 616, 615, 625, 626, 618, 619, 620, 621, 622, - 623, 624, 617, 0, 0, 627, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 0, 0, 0, 267, 0, 0, 0, 0, 184, 0, - 215, 122, 136, 97, 83, 93, 0, 121, 162, 191, - 195, 0, 0, 0, 105, 0, 193, 172, 231, 0, - 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, - 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, - 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, - 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, - 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, - 124, 182, 142, 183, 125, 155, 154, 156, 0, 0, - 0, 212, 234, 249, 99, 0, 219, 243, 244, 0, - 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, - 141, 188, 247, 171, 194, 103, 233, 210, 0, 0, + 0, 0, 84, 85, 92, 98, 104, 108, 112, 115, + 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, + 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, + 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, + 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, + 207, 213, 216, 222, 223, 232, 239, 242, 165, 0, + 0, 0, 0, 324, 0, 0, 0, 111, 0, 321, + 0, 0, 0, 137, 0, 364, 139, 0, 0, 211, + 153, 0, 0, 0, 0, 355, 356, 0, 0, 0, + 0, 0, 0, 0, 0, 54, 0, 0, 322, 343, + 342, 345, 346, 347, 348, 0, 0, 101, 344, 349, + 350, 351, 0, 0, 0, 319, 336, 0, 363, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 333, 334, + 0, 0, 0, 0, 377, 0, 335, 0, 0, 330, + 331, 332, 337, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 0, 0, 0, 267, 0, 0, 375, + 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, + 172, 231, 0, 174, 192, 140, 221, 185, 230, 240, + 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, + 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, + 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, + 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, + 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, + 156, 0, 0, 0, 212, 234, 249, 99, 0, 219, + 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, + 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, + 210, 365, 376, 371, 372, 369, 370, 368, 367, 366, + 378, 357, 358, 359, 360, 362, 0, 373, 374, 361, + 82, 91, 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 82, 91, 138, - 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, - 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, - 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, - 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, - 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, - 222, 223, 232, 239, 242, 165, 0, 0, 0, 604, - 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, - 137, 0, 0, 139, 0, 0, 211, 153, 0, 0, + 0, 0, 84, 85, 92, 98, 104, 108, 112, 115, + 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, + 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, + 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, + 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, + 207, 213, 216, 222, 223, 232, 239, 242, 165, 0, + 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, + 0, 0, 0, 137, 0, 364, 139, 0, 0, 211, + 153, 0, 0, 0, 0, 355, 356, 0, 0, 0, + 0, 0, 0, 0, 0, 54, 0, 0, 322, 343, + 342, 345, 346, 347, 348, 0, 0, 101, 344, 349, + 350, 351, 0, 0, 0, 0, 336, 0, 363, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 333, 334, + 0, 0, 0, 0, 377, 0, 335, 0, 0, 330, + 331, 332, 337, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 0, 0, 0, 267, 0, 0, 375, + 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, + 172, 231, 1519, 174, 192, 140, 221, 185, 230, 240, + 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, + 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, + 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, + 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, + 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, + 156, 0, 0, 0, 212, 234, 249, 99, 0, 219, + 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, + 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, + 210, 365, 376, 371, 372, 369, 370, 368, 367, 366, + 378, 357, 358, 359, 360, 362, 0, 373, 374, 361, + 82, 91, 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 80, 0, 606, 0, 0, - 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, - 601, 600, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 602, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84, 85, 92, 98, 104, 108, 112, 115, + 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, + 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, + 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, + 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, + 207, 213, 216, 222, 223, 232, 239, 242, 165, 0, + 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, + 0, 0, 0, 137, 0, 364, 139, 0, 0, 211, + 153, 0, 0, 0, 0, 355, 356, 0, 0, 0, + 0, 0, 0, 0, 0, 54, 0, 583, 322, 343, + 342, 345, 346, 347, 348, 0, 0, 101, 344, 349, + 350, 351, 0, 0, 0, 0, 336, 0, 363, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 333, 334, + 0, 0, 0, 0, 377, 0, 335, 0, 0, 330, + 331, 332, 337, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 0, 0, 0, 267, 0, 0, 375, + 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, + 172, 231, 0, 174, 192, 140, 221, 185, 230, 240, + 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, + 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, + 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, + 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, + 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, + 156, 0, 0, 0, 212, 234, 249, 99, 0, 219, + 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, + 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, + 210, 365, 376, 371, 372, 369, 370, 368, 367, 366, + 378, 357, 358, 359, 360, 362, 0, 373, 374, 361, + 82, 91, 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 0, 0, 0, 267, 0, 0, 0, 0, 184, 0, - 215, 122, 136, 97, 83, 93, 0, 121, 162, 191, - 195, 0, 0, 0, 105, 0, 193, 172, 231, 0, - 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, - 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, - 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, - 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, - 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, - 124, 182, 142, 183, 125, 155, 154, 156, 0, 0, - 0, 212, 234, 249, 99, 0, 219, 243, 244, 0, - 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, - 141, 188, 247, 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 82, 91, 138, - 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, + 0, 0, 84, 85, 92, 98, 104, 108, 112, 115, + 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, + 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, + 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, + 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, + 207, 213, 216, 222, 223, 232, 239, 242, 165, 0, + 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, + 0, 0, 0, 137, 0, 364, 139, 0, 0, 211, + 153, 0, 0, 0, 0, 355, 356, 0, 0, 0, + 0, 0, 0, 0, 0, 54, 0, 0, 322, 343, + 342, 345, 346, 347, 348, 0, 0, 101, 344, 349, + 350, 351, 0, 0, 0, 0, 336, 0, 363, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 333, 334, + 0, 0, 0, 0, 377, 0, 335, 0, 0, 330, + 331, 332, 337, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 0, 0, 0, 267, 0, 0, 375, + 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, + 172, 231, 0, 174, 192, 140, 221, 185, 230, 240, + 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, + 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, + 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, + 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, + 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, + 156, 0, 0, 0, 212, 234, 249, 99, 0, 219, + 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, + 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, + 210, 365, 376, 371, 372, 369, 370, 368, 367, 366, + 378, 357, 358, 359, 360, 362, 0, 373, 374, 361, + 82, 91, 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, - 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, - 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, - 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, - 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, - 222, 223, 232, 239, 242, 165, 0, 0, 0, 0, - 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, - 137, 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, - 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, - 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84, 85, 92, 98, 104, 108, 112, 115, + 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, + 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, + 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, + 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, + 207, 213, 216, 222, 223, 232, 239, 242, 165, 0, + 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, + 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, + 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, + 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 618, 617, 627, 628, 620, 621, + 622, 623, 624, 625, 626, 619, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 76, 77, 0, 73, 0, 0, 0, 78, 184, 0, - 215, 122, 136, 97, 83, 93, 0, 121, 162, 191, - 195, 0, 0, 0, 105, 0, 193, 172, 231, 0, - 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, - 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, - 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, - 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, - 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, - 124, 182, 142, 183, 125, 155, 154, 156, 0, 0, - 0, 212, 234, 249, 99, 0, 219, 243, 244, 0, - 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, - 141, 188, 247, 171, 194, 103, 233, 210, 0, 75, + 0, 0, 119, 0, 0, 0, 267, 0, 0, 0, + 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, + 172, 231, 0, 174, 192, 140, 221, 185, 230, 240, + 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, + 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, + 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, + 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, + 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, + 156, 0, 0, 0, 212, 234, 249, 99, 0, 219, + 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, + 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, + 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 82, 91, 138, - 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, + 82, 91, 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, - 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, - 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, - 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, - 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, - 222, 223, 232, 239, 242, 165, 0, 0, 0, 938, - 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, - 137, 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 265, 0, 940, 0, 0, - 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, + 0, 0, 84, 85, 92, 98, 104, 108, 112, 115, + 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, + 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, + 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, + 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, + 207, 213, 216, 222, 223, 232, 239, 242, 165, 0, + 0, 0, 606, 0, 0, 0, 0, 111, 0, 0, + 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, + 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, + 608, 0, 0, 0, 0, 0, 0, 101, 0, 0, + 0, 0, 0, 603, 602, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 0, 0, 0, 267, 0, 0, 0, + 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, + 172, 231, 0, 174, 192, 140, 221, 185, 230, 240, + 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, + 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, + 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, + 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, + 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, + 156, 0, 0, 0, 212, 234, 249, 99, 0, 219, + 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, + 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, + 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, - 0, 0, 0, 267, 0, 0, 0, 0, 184, 0, - 215, 122, 136, 97, 83, 93, 0, 121, 162, 191, - 195, 0, 0, 0, 105, 0, 193, 172, 231, 0, - 174, 192, 140, 221, 185, 230, 240, 241, 218, 238, - 245, 208, 86, 217, 229, 102, 203, 88, 227, 214, - 151, 131, 132, 87, 0, 189, 110, 117, 107, 164, - 224, 225, 106, 248, 94, 237, 90, 95, 236, 158, - 220, 228, 152, 145, 89, 226, 150, 144, 135, 114, - 124, 182, 142, 183, 125, 155, 154, 156, 0, 0, - 0, 212, 234, 249, 99, 0, 219, 243, 244, 0, - 0, 100, 118, 113, 181, 157, 96, 127, 209, 134, - 141, 188, 247, 171, 194, 103, 233, 210, 0, 0, + 82, 91, 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 82, 91, 138, - 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, - 85, 92, 98, 104, 108, 112, 115, 120, 123, 126, - 128, 129, 130, 133, 143, 146, 147, 148, 149, 159, - 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, - 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, - 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, - 222, 223, 232, 239, 242, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, - 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, - 0, 0, 137, 0, 0, 139, 0, 0, 211, 153, + 0, 0, 84, 85, 92, 98, 104, 108, 112, 115, + 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, + 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, + 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, + 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, + 207, 213, 216, 222, 223, 232, 239, 242, 165, 0, + 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, + 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, + 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, + 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, + 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 54, 0, 0, 80, 0, 0, - 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 76, 77, 0, 73, 0, 0, 0, + 78, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, + 172, 231, 0, 174, 192, 140, 221, 185, 230, 240, + 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, + 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, + 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, + 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, + 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, + 156, 0, 0, 0, 212, 234, 249, 99, 0, 219, + 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, + 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, + 210, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 91, 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 119, 0, 0, 0, 267, 0, 0, 0, 0, - 184, 0, 215, 122, 136, 97, 83, 93, 0, 121, - 162, 191, 195, 0, 0, 0, 105, 0, 193, 172, - 231, 0, 174, 192, 140, 221, 185, 230, 240, 241, - 218, 238, 245, 208, 86, 217, 229, 102, 203, 88, - 227, 214, 151, 131, 132, 87, 0, 189, 110, 117, - 107, 164, 224, 225, 106, 248, 94, 237, 90, 95, - 236, 158, 220, 228, 152, 145, 89, 226, 150, 144, - 135, 114, 124, 182, 142, 183, 125, 155, 154, 156, - 0, 0, 0, 212, 234, 249, 99, 0, 219, 243, - 244, 0, 0, 100, 118, 113, 181, 157, 96, 127, - 209, 134, 141, 188, 247, 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, - 91, 138, 246, 186, 116, 235, 0, 0, 109, 0, + 0, 0, 84, 85, 92, 98, 104, 108, 112, 115, + 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, + 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, + 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, + 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, + 207, 213, 216, 222, 223, 232, 239, 242, 165, 0, + 0, 0, 942, 0, 0, 0, 0, 111, 0, 0, + 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, + 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 265, 0, + 944, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 84, 85, 92, 98, 104, 108, 112, 115, 120, - 123, 126, 128, 129, 130, 133, 143, 146, 147, 148, - 149, 159, 160, 161, 163, 166, 167, 168, 169, 170, - 173, 175, 176, 177, 178, 179, 180, 187, 190, 196, - 197, 198, 199, 200, 201, 202, 204, 205, 206, 207, - 213, 216, 222, 223, 232, 239, 242, 24, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, - 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, - 0, 0, 0, 0, 137, 0, 0, 139, 0, 0, - 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 54, 0, 0, 265, - 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 119, 0, 0, 0, 267, 0, 0, 0, + 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, + 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, + 172, 231, 0, 174, 192, 140, 221, 185, 230, 240, + 241, 218, 238, 245, 208, 86, 217, 229, 102, 203, + 88, 227, 214, 151, 131, 132, 87, 0, 189, 110, + 117, 107, 164, 224, 225, 106, 248, 94, 237, 90, + 95, 236, 158, 220, 228, 152, 145, 89, 226, 150, + 144, 135, 114, 124, 182, 142, 183, 125, 155, 154, + 156, 0, 0, 0, 212, 234, 249, 99, 0, 219, + 243, 244, 0, 0, 100, 118, 113, 181, 157, 96, + 127, 209, 134, 141, 188, 247, 171, 194, 103, 233, + 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 82, 91, 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 0, 0, 0, 267, 0, 0, - 0, 0, 184, 0, 215, 122, 136, 97, 83, 93, - 0, 121, 162, 191, 195, 0, 0, 0, 105, 0, - 193, 172, 231, 0, 174, 192, 140, 221, 185, 230, - 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, - 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, - 110, 117, 107, 164, 224, 225, 106, 248, 94, 237, - 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, - 150, 144, 135, 114, 124, 182, 142, 183, 125, 155, - 154, 156, 0, 0, 0, 212, 234, 249, 99, 0, - 219, 243, 244, 0, 0, 100, 118, 113, 181, 157, - 96, 127, 209, 134, 141, 188, 247, 171, 194, 103, - 233, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 82, 91, 138, 246, 186, 116, 235, 0, 0, - 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 84, 85, 92, 98, 104, 108, 112, 115, + 120, 123, 126, 128, 129, 130, 133, 143, 146, 147, + 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, + 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, + 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, + 207, 213, 216, 222, 223, 232, 239, 242, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 85, 92, 98, 104, 108, 112, - 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, - 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, - 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, - 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, - 206, 207, 213, 216, 222, 223, 232, 239, 242, 165, - 0, 0, 0, 938, 0, 0, 0, 0, 111, 0, - 0, 0, 0, 0, 137, 0, 0, 139, 0, 0, - 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 265, - 0, 940, 0, 0, 0, 0, 0, 0, 101, 0, + 165, 0, 0, 0, 0, 0, 0, 0, 0, 111, + 0, 0, 0, 0, 0, 137, 0, 0, 139, 0, + 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, + 80, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 0, 0, 0, 267, 0, 0, - 0, 0, 184, 0, 215, 122, 136, 97, 83, 93, - 0, 121, 162, 191, 195, 0, 0, 0, 105, 0, - 193, 172, 231, 0, 936, 192, 140, 221, 185, 230, - 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, - 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, - 110, 117, 107, 164, 224, 225, 106, 248, 94, 237, - 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, - 150, 144, 135, 114, 124, 182, 142, 183, 125, 155, - 154, 156, 0, 0, 0, 212, 234, 249, 99, 0, - 219, 243, 244, 0, 0, 100, 118, 113, 181, 157, - 96, 127, 209, 134, 141, 188, 247, 171, 194, 103, - 233, 210, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 119, 0, 0, 0, 267, 0, + 0, 0, 0, 184, 0, 215, 122, 136, 97, 83, + 93, 0, 121, 162, 191, 195, 0, 0, 0, 105, + 0, 193, 172, 231, 0, 174, 192, 140, 221, 185, + 230, 240, 241, 218, 238, 245, 208, 86, 217, 229, + 102, 203, 88, 227, 214, 151, 131, 132, 87, 0, + 189, 110, 117, 107, 164, 224, 225, 106, 248, 94, + 237, 90, 95, 236, 158, 220, 228, 152, 145, 89, + 226, 150, 144, 135, 114, 124, 182, 142, 183, 125, + 155, 154, 156, 0, 0, 0, 212, 234, 249, 99, + 0, 219, 243, 244, 0, 0, 100, 118, 113, 181, + 157, 96, 127, 209, 134, 141, 188, 247, 171, 194, + 103, 233, 210, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 82, 91, 138, 246, 186, 116, 235, 0, + 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 84, 85, 92, 98, 104, 108, + 112, 115, 120, 123, 126, 128, 129, 130, 133, 143, + 146, 147, 148, 149, 159, 160, 161, 163, 166, 167, + 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, + 187, 190, 196, 197, 198, 199, 200, 201, 202, 204, + 205, 206, 207, 213, 216, 222, 223, 232, 239, 242, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, + 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, + 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 265, 0, 0, 0, 0, 0, 0, 0, + 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, + 267, 0, 0, 0, 0, 184, 0, 215, 122, 136, + 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, + 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, + 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, + 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, + 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, + 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, + 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, + 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, + 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, + 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, + 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 91, 138, 246, 186, 116, + 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, + 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, + 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, + 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, + 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, + 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, + 239, 242, 165, 0, 0, 0, 942, 0, 0, 0, + 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, + 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 265, 0, 944, 0, 0, 0, 0, 0, + 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, + 267, 0, 0, 0, 0, 184, 0, 215, 122, 136, + 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, + 0, 105, 0, 193, 172, 231, 0, 940, 192, 140, + 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, + 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, + 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, + 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, + 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, + 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, + 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, + 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, + 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 91, 138, 246, 186, 116, + 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, + 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, + 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, + 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, + 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, + 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, + 239, 242, 165, 0, 0, 0, 0, 0, 0, 0, + 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, + 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 80, 0, 0, 836, 0, 0, 837, 0, + 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, + 267, 0, 0, 0, 0, 184, 0, 215, 122, 136, + 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, + 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, + 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, + 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, + 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, + 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, + 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, + 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, + 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, + 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, + 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 91, 138, 246, 186, 116, + 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, + 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, + 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, + 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, + 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, + 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, + 239, 242, 165, 0, 0, 0, 0, 0, 0, 0, + 0, 111, 0, 720, 0, 0, 0, 137, 0, 0, + 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 80, 0, 719, 0, 0, 0, 0, 0, + 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, + 267, 0, 0, 0, 0, 184, 0, 215, 122, 136, + 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, + 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, + 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, + 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, + 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, + 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, + 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, + 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, + 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, + 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, + 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 91, 138, 246, 186, 116, + 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, + 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, + 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, + 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, + 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, + 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, + 239, 242, 165, 0, 0, 0, 0, 0, 0, 0, + 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, + 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 265, 0, 0, 0, 0, 0, 0, 0, + 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, + 267, 0, 0, 0, 0, 184, 0, 215, 122, 136, + 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, + 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, + 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, + 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, + 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, + 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, + 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, + 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, + 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, + 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, + 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 91, 138, 246, 186, 116, + 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, + 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, + 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, + 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, + 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, + 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, + 239, 242, 165, 0, 0, 0, 0, 0, 0, 0, + 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, + 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 265, 0, 944, 0, 0, 0, 0, 0, + 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, + 267, 0, 0, 0, 0, 184, 0, 215, 122, 136, + 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, + 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, + 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, + 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, + 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, + 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, + 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, + 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, + 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, + 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, + 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 91, 138, 246, 186, 116, + 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, + 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, + 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, + 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, + 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, + 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, + 239, 242, 165, 0, 0, 0, 0, 0, 0, 0, + 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, + 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 82, 91, 138, 246, 186, 116, 235, 0, 0, - 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 80, 0, 608, 0, 0, 0, 0, 0, + 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 85, 92, 98, 104, 108, 112, - 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, - 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, - 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, - 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, - 206, 207, 213, 216, 222, 223, 232, 239, 242, 165, - 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, - 0, 0, 0, 0, 137, 0, 0, 139, 0, 0, - 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, - 0, 0, 832, 0, 0, 833, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, + 267, 0, 0, 0, 0, 184, 0, 215, 122, 136, + 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, + 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, + 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, + 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, + 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, + 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, + 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, + 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, + 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, + 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, + 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 91, 138, 246, 186, 116, + 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 0, 0, 0, 267, 0, 0, - 0, 0, 184, 0, 215, 122, 136, 97, 83, 93, - 0, 121, 162, 191, 195, 0, 0, 0, 105, 0, - 193, 172, 231, 0, 174, 192, 140, 221, 185, 230, - 240, 241, 218, 238, 245, 208, 86, 217, 229, 102, - 203, 88, 227, 214, 151, 131, 132, 87, 0, 189, - 110, 117, 107, 164, 224, 225, 106, 248, 94, 237, - 90, 95, 236, 158, 220, 228, 152, 145, 89, 226, - 150, 144, 135, 114, 124, 182, 142, 183, 125, 155, - 154, 156, 0, 0, 0, 212, 234, 249, 99, 0, - 219, 243, 244, 0, 0, 100, 118, 113, 181, 157, - 96, 127, 209, 134, 141, 188, 247, 171, 194, 103, - 233, 210, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, + 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, + 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, + 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, + 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, + 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, + 239, 242, 165, 0, 0, 0, 0, 0, 0, 0, + 690, 111, 0, 0, 0, 0, 0, 137, 0, 0, + 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 82, 91, 138, 246, 186, 116, 235, 0, 0, - 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 265, 0, 0, 0, 0, 0, 0, 0, + 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 84, 85, 92, 98, 104, 108, 112, - 115, 120, 123, 126, 128, 129, 130, 133, 143, 146, - 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, - 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, - 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, - 206, 207, 213, 216, 222, 223, 232, 239, 242, 165, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, + 267, 0, 0, 0, 0, 184, 0, 215, 122, 136, + 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, + 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, + 221, 185, 230, 240, 241, 218, 238, 245, 208, 86, + 217, 229, 102, 203, 88, 227, 214, 151, 131, 132, + 87, 0, 189, 110, 117, 107, 164, 224, 225, 106, + 248, 94, 237, 90, 95, 236, 158, 220, 228, 152, + 145, 89, 226, 150, 144, 135, 114, 124, 182, 142, + 183, 125, 155, 154, 156, 0, 0, 0, 212, 234, + 249, 99, 0, 219, 243, 244, 0, 0, 100, 118, + 113, 181, 157, 96, 127, 209, 134, 141, 188, 247, + 171, 194, 103, 233, 210, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 91, 138, 246, 186, 116, + 235, 0, 0, 109, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 84, 85, 92, 98, + 104, 108, 112, 115, 120, 123, 126, 128, 129, 130, + 133, 143, 146, 147, 148, 149, 159, 160, 161, 163, + 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, + 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, + 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, + 239, 242, 381, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, - 718, 0, 0, 0, 137, 0, 0, 139, 0, 0, + 0, 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, - 0, 717, 0, 0, 0, 0, 0, 0, 101, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 265, + 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2235,14 +2405,14 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 54, 0, 0, 265, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 119, 0, 0, 0, 267, 0, 0, + 0, 0, 0, 119, 0, 262, 0, 267, 0, 0, 0, 0, 184, 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, 191, 195, 0, 0, 0, 105, 0, 193, 172, 231, 0, 174, 192, 140, 221, 185, 230, @@ -2268,8 +2438,8 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 265, - 0, 940, 0, 0, 0, 0, 0, 0, 101, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2301,8 +2471,8 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, - 0, 606, 0, 0, 0, 0, 0, 0, 101, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 265, + 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2331,10 +2501,10 @@ var yyAct = [...]int{ 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, 216, 222, 223, 232, 239, 242, 165, - 0, 0, 0, 0, 0, 0, 0, 688, 111, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 137, 0, 0, 139, 0, 0, 211, 153, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 265, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2363,185 +2533,18 @@ var yyAct = [...]int{ 147, 148, 149, 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, 198, 199, 200, 201, 202, 204, 205, - 206, 207, 213, 216, 222, 223, 232, 239, 242, 381, - 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, - 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, - 0, 137, 0, 0, 139, 0, 0, 211, 153, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 265, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 119, 0, 0, 0, 267, 0, 0, 0, 0, 184, - 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, - 191, 195, 0, 0, 0, 105, 0, 193, 172, 231, - 0, 174, 192, 140, 221, 185, 230, 240, 241, 218, - 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, - 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, - 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, - 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, - 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, - 0, 0, 212, 234, 249, 99, 0, 219, 243, 244, - 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, - 134, 141, 188, 247, 171, 194, 103, 233, 210, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 91, - 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, - 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, - 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, - 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, - 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, - 216, 222, 223, 232, 239, 242, 165, 0, 0, 0, - 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, - 0, 137, 0, 0, 139, 0, 0, 211, 153, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 265, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 119, 0, 262, 0, 267, 0, 0, 0, 0, 184, - 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, - 191, 195, 0, 0, 0, 105, 0, 193, 172, 231, - 0, 174, 192, 140, 221, 185, 230, 240, 241, 218, - 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, - 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, - 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, - 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, - 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, - 0, 0, 212, 234, 249, 99, 0, 219, 243, 244, - 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, - 134, 141, 188, 247, 171, 194, 103, 233, 210, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 91, - 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, - 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, - 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, - 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, - 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, - 216, 222, 223, 232, 239, 242, 165, 0, 0, 0, - 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, - 0, 137, 0, 0, 139, 0, 0, 211, 153, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 119, 0, 0, 0, 267, 0, 0, 0, 0, 184, - 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, - 191, 195, 0, 0, 0, 105, 0, 193, 172, 231, - 0, 174, 192, 140, 221, 185, 230, 240, 241, 218, - 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, - 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, - 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, - 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, - 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, - 0, 0, 212, 234, 249, 99, 0, 219, 243, 244, - 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, - 134, 141, 188, 247, 171, 194, 103, 233, 210, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 91, - 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, - 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, - 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, - 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, - 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, - 216, 222, 223, 232, 239, 242, 165, 0, 0, 0, - 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, - 0, 137, 0, 0, 139, 0, 0, 211, 153, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 265, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 119, 0, 0, 0, 267, 0, 0, 0, 0, 184, - 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, - 191, 195, 0, 0, 0, 105, 0, 193, 172, 231, - 0, 174, 192, 140, 221, 185, 230, 240, 241, 218, - 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, - 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, - 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, - 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, - 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, - 0, 0, 212, 234, 249, 99, 0, 219, 243, 244, - 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, - 134, 141, 188, 247, 171, 194, 103, 233, 210, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 91, - 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, - 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, - 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, - 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, - 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, - 216, 222, 223, 232, 239, 242, 165, 0, 0, 0, - 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, - 0, 137, 0, 0, 139, 0, 0, 211, 153, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 322, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 119, 0, 0, 0, 267, 0, 0, 0, 0, 184, - 0, 215, 122, 136, 97, 83, 93, 0, 121, 162, - 191, 195, 0, 0, 0, 105, 0, 193, 172, 231, - 0, 174, 192, 140, 221, 185, 230, 240, 241, 218, - 238, 245, 208, 86, 217, 229, 102, 203, 88, 227, - 214, 151, 131, 132, 87, 0, 189, 110, 117, 107, - 164, 224, 225, 106, 248, 94, 237, 90, 95, 236, - 158, 220, 228, 152, 145, 89, 226, 150, 144, 135, - 114, 124, 182, 142, 183, 125, 155, 154, 156, 0, - 0, 0, 212, 234, 249, 99, 0, 219, 243, 244, - 0, 0, 100, 118, 113, 181, 157, 96, 127, 209, - 134, 141, 188, 247, 171, 194, 103, 233, 210, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 91, - 138, 246, 186, 116, 235, 0, 0, 109, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 85, 92, 98, 104, 108, 112, 115, 120, 123, - 126, 128, 129, 130, 133, 143, 146, 147, 148, 149, - 159, 160, 161, 163, 166, 167, 168, 169, 170, 173, - 175, 176, 177, 178, 179, 180, 187, 190, 196, 197, - 198, 199, 200, 201, 202, 204, 205, 206, 207, 213, - 216, 222, 223, 232, 239, 242, + 206, 207, 213, 216, 222, 223, 232, 239, 242, } var yyPact = [...]int{ - 204, -1000, -269, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 867, 932, -1000, -1000, -1000, -1000, -1000, -1000, - 312, 11217, -23, 103, 14, 15208, 102, 1958, 15868, -1000, - 4, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -63, -72, - -1000, 684, -1000, -1000, -1000, -1000, -1000, 861, 863, 694, - 856, 780, -1000, 7905, 64, 64, 14878, 6585, -1000, -1000, - 245, 15868, 99, 15868, -151, 60, 60, 60, -1000, -1000, + 1848, -1000, -268, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 899, 935, -1000, -1000, -1000, -1000, -1000, -1000, + 237, 11260, -4, 111, -15, 15251, 110, 140, 15911, -1000, + 13, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -83, -96, + -1000, 718, -1000, -1000, -1000, -1000, -1000, 892, 896, 770, + 886, 813, -1000, 7948, 80, 80, 14921, 6628, -1000, -1000, + 227, 15911, 106, 15911, -150, 78, 78, 78, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -2558,22 +2561,22 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 101, 15868, 578, 576, 247, -1000, 15868, 58, 575, 58, - 58, 58, 15868, -1000, 160, -1000, -1000, -1000, 15868, 561, - 810, 3498, 43, 3498, -1000, 3498, 3498, -1000, 3498, 11, - 3498, -65, 902, 8, -12, -1000, 3498, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 490, 815, 9237, 9237, 867, -1000, 684, -1000, -1000, -1000, - 804, -1000, -1000, 338, 919, -1000, 10887, 153, -1000, 9237, - 1478, 612, -1000, -1000, 612, -1000, -1000, 124, -1000, -1000, - 10227, 10227, 10227, 10227, 10227, 10227, 10227, 10227, -1000, -1000, + 108, 15911, 616, 613, 173, -1000, 15911, 74, 596, 74, + 74, 74, 15911, -1000, 149, -1000, -1000, -1000, 15911, 595, + 838, 284, 48, 3541, -1000, 3541, 3541, -1000, 3541, 20, + 3541, -48, 907, 22, -40, -1000, 3541, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 612, -1000, 8907, 612, 612, 612, 612, 612, - 612, 612, 612, 9237, 612, 612, 612, 612, 612, 612, - 612, 612, 612, 612, 612, 612, 612, 612, 612, 14541, - 13551, 15868, 661, 658, -1000, -1000, 152, 681, 6242, -79, - -1000, -1000, -1000, 291, 13221, -1000, -1000, -1000, 807, -1000, + 454, 853, 9280, 9280, 899, -1000, 718, -1000, -1000, -1000, + 843, -1000, -1000, 306, 921, -1000, 10930, 147, -1000, 9280, + 1573, 691, -1000, -1000, 691, -1000, -1000, 130, -1000, -1000, + 10270, 10270, 10270, 10270, 10270, 10270, 10270, 10270, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 691, -1000, 8950, 691, 691, 691, 691, 691, + 691, 691, 691, 9280, 691, 691, 691, 691, 691, 691, + 691, 691, 691, 691, 691, 691, 691, 691, 691, 14584, + 13594, 15911, 639, 638, -1000, -1000, 146, 688, 6285, -89, + -1000, -1000, -1000, 250, 13264, -1000, -1000, -1000, 833, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -2584,132 +2587,133 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 560, 15868, - -1000, 2173, -1000, 557, 3498, 82, 556, 259, 555, 15868, - 15868, 3498, 3498, 3498, 18, 50, 52, 15868, 687, 67, - 15868, 847, 740, 15868, 554, 552, -1000, 5899, -1000, 3498, - 3498, -1000, -1000, -1000, 3498, 3498, 3498, 15868, 3498, 3498, - -1000, -1000, -1000, -1000, 3498, 3498, -1000, 918, 282, -1000, - -1000, -1000, -1000, 9237, 195, -1000, 739, -1000, -1000, -1000, - -1000, -1000, -1000, 927, 208, 341, 151, 682, -1000, 361, - 861, 490, 780, 12891, 764, -1000, -1000, -1000, 15868, -1000, - 9237, 9237, 442, -1000, 14211, -1000, -1000, 4527, 214, 10227, - 406, 239, 10227, 10227, 10227, 10227, 10227, 10227, 10227, 10227, - 10227, 10227, 10227, 10227, 10227, 10227, 10227, 461, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 551, -1000, 684, 583, - 583, 159, 159, 159, 159, 159, 159, 159, 10557, 6915, - 490, 550, 303, 8907, 7905, 7905, 9237, 9237, 8565, 8235, - 7905, 818, 249, 303, 16198, -1000, -1000, 9897, -1000, -1000, - -1000, -1000, -1000, 490, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 15538, 15538, 7905, 7905, 7905, 7905, 29, 15868, -1000, - 673, 816, -1000, -1000, -1000, 849, 12231, 12561, 29, 640, - 13551, 15868, -1000, -1000, 13551, 15868, 4184, 5556, 681, -79, - 664, -1000, -107, -85, 7245, 150, -1000, -1000, -1000, -1000, - 3155, 212, 581, 330, -54, -1000, -1000, -1000, 698, -1000, - 698, 698, 698, 698, -25, -25, -25, -25, -1000, -1000, - -1000, -1000, -1000, 711, 710, -1000, 698, 698, 698, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 709, 709, 709, - 700, 700, 717, -1000, 15868, 3498, 846, 3498, -1000, 78, - -1000, -1000, -1000, 15868, 15868, 15868, 15868, 15868, 112, 15868, - 15868, 680, -1000, 15868, 3498, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 15868, 367, 15868, 15868, 303, -1000, 458, 15868, -1000, 785, - 9237, 9237, 5213, 9237, -1000, -1000, -1000, 815, -1000, 818, - 897, -1000, 798, 797, 7905, -1000, -1000, 214, 297, -1000, - -1000, 371, -1000, -1000, -1000, -1000, 149, 612, -1000, 2132, - -1000, -1000, -1000, -1000, 406, 10227, 10227, 10227, 387, 2132, - 2096, 1634, 1715, 159, 145, 145, 183, 183, 183, 183, - 183, 320, 320, -1000, -1000, -1000, 490, -1000, -1000, -1000, - 490, 7905, 7905, 679, -1000, -1000, 9237, -1000, 490, 544, - 544, 310, 288, 232, 914, 544, 226, 904, 544, 544, - 7905, 317, -1000, 9237, 490, -1000, 148, -1000, 402, 675, - 672, 544, 490, 544, 544, 644, 612, -1000, 16198, 13551, - 13551, 13551, 13551, 13551, -1000, 767, 756, -1000, 755, 753, - 774, 15868, -1000, 546, 12231, 166, 612, -1000, 13881, -1000, - -1000, 899, 13551, 606, -1000, 606, -1000, 147, -1000, -1000, - 664, -79, -88, -1000, -1000, -1000, -1000, 303, -1000, 466, - 663, 2812, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 708, - 523, -1000, 829, 174, 193, 509, 827, -1000, -1000, -1000, - 813, -1000, 322, -59, -1000, -1000, 414, -25, -25, -1000, - -1000, 150, 806, 150, 150, 150, 454, 454, -1000, -1000, - -1000, -1000, 405, -1000, -1000, -1000, 394, -1000, 729, 15538, - 3498, -1000, -1000, -1000, -1000, 277, 277, 200, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 28, - 707, -1000, -1000, -1000, -1000, 3, 16, 66, -1000, 3498, - -1000, 282, -1000, 449, 9237, -1000, -1000, -1000, -1000, 783, - 303, 303, 141, -1000, -1000, 15868, -1000, -1000, -1000, -1000, - 666, -1000, -1000, -1000, 3841, 7905, -1000, 387, 2132, 1866, - -1000, 10227, 10227, -1000, -1000, 544, 544, 7905, 303, -1000, - -1000, -1000, 97, 461, 97, 10227, 10227, -1000, 10227, 10227, - -1000, -163, 648, 233, -1000, 9237, 363, -1000, 5213, -1000, - 10227, 10227, -1000, -1000, -1000, -1000, 727, 16198, 612, -1000, - 11889, 15538, 636, -1000, 231, 816, 706, 726, 611, -1000, - -1000, -1000, -1000, 754, -1000, 691, -1000, -1000, -1000, -1000, - -1000, 98, 95, 79, 15538, -1000, 867, 9237, 606, -1000, - -1000, 175, -1000, -1000, -130, -97, -1000, -1000, -1000, 3155, - -1000, 3155, 15538, 46, -1000, 509, 509, -1000, -1000, -1000, - 703, 721, 10227, -1000, -1000, -1000, 547, 150, 150, -1000, - 251, -1000, -1000, -1000, 541, -1000, 539, 662, 535, 15868, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 15868, -1000, -1000, - -1000, -1000, -1000, 15538, -173, 491, 15538, 15538, 15538, 15868, - -1000, 367, -1000, 303, -1000, 4870, -1000, 899, 13551, -1000, - -1000, 490, -1000, 10227, 2132, 2132, -1000, -1000, -1000, 490, - 698, 698, -1000, 698, 700, -1000, 698, -7, 698, -9, - 490, 490, 2005, 1990, 1827, 474, 612, -158, -1000, 303, - 9237, -1000, 1550, 527, -1000, 831, 584, 630, -1000, -1000, - 7575, 490, 533, 129, 528, -1000, 867, 16198, 9237, -1000, - -1000, 9237, 699, -1000, 9237, -1000, -1000, -1000, 612, 612, - 612, 528, 861, 303, -1000, -1000, -1000, -1000, 2812, -1000, - 507, -1000, 698, -1000, -1000, -1000, 15538, -49, 925, 2132, - -1000, -1000, -1000, -1000, -1000, -25, 448, -25, 372, -1000, - 366, 3498, -1000, -1000, -1000, -1000, 841, -1000, 4870, -1000, - -1000, 690, 713, -1000, -1000, -1000, 900, 639, -1000, 2132, - -1000, -1000, 106, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 10227, 10227, 10227, 10227, 10227, 490, 434, 303, 10227, - 10227, 826, -1000, 612, -1000, -1000, 678, 15538, 15538, -1000, - 15538, 861, -1000, 303, 303, 15538, 303, 15538, 15538, 15538, - 11547, -1000, 136, 15538, -1000, 505, -1000, 177, -1000, -114, - 150, -1000, 150, 529, 497, -1000, 612, 635, -1000, 230, - 15538, 15868, 898, 857, -1000, -1000, 402, 402, 402, 402, - 20, -1000, -1000, 402, 402, 924, -1000, 612, -1000, 684, - 128, -1000, -1000, -1000, 496, 489, 489, 489, 166, 136, - -1000, 374, 219, 420, -1000, 41, 15538, 334, 823, -1000, - 817, -1000, -1000, -1000, -1000, -1000, 27, 4870, 3155, 486, - -1000, -1000, 9237, 9237, -1000, -1000, -1000, -1000, 490, 45, - -180, -1000, -1000, 16198, 630, 490, 15538, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 351, -1000, -1000, 15868, -1000, -1000, - 403, -1000, -1000, 483, -1000, 15538, -1000, -1000, 707, 303, - 629, -1000, 776, -168, -184, 620, -1000, -1000, -1000, 689, - -1000, -1000, 27, 796, -173, -1000, 772, -1000, 15538, -1000, - 24, -1000, -174, 480, 22, -181, 720, 612, -185, 719, - -1000, 908, 9567, -1000, -1000, 922, 154, 154, 402, 490, - -1000, -1000, -1000, 48, 400, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 590, 15911, + -1000, 2226, -1000, 586, 3541, 90, 557, 281, 555, 15911, + 15911, 3541, 3541, 3541, 32, 66, 59, 15911, 697, 87, + 15911, 881, 781, 15911, 539, 531, -1000, 5942, -1000, 3541, + 284, -1000, 443, 9280, 3541, 3541, 3541, 15911, 3541, 3541, + -1000, -1000, -1000, -1000, -1000, -1000, 3541, 3541, -1000, 920, + 256, -1000, -1000, -1000, -1000, 9280, 187, -1000, 780, -1000, + -1000, -1000, -1000, -1000, -1000, 928, 180, 453, 142, 693, + -1000, 439, 892, 454, 813, 12934, 696, -1000, -1000, -1000, + 15911, -1000, 9280, 9280, 446, -1000, 14254, -1000, -1000, 4570, + 205, 10270, 449, 254, 10270, 10270, 10270, 10270, 10270, 10270, + 10270, 10270, 10270, 10270, 10270, 10270, 10270, 10270, 10270, 477, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 527, -1000, + 718, 502, 502, 158, 158, 158, 158, 158, 158, 158, + 10600, 6958, 454, 584, 303, 8950, 7948, 7948, 9280, 9280, + 8608, 8278, 7948, 845, 257, 303, 16241, -1000, -1000, 9940, + -1000, -1000, -1000, -1000, -1000, 454, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 15581, 15581, 7948, 7948, 7948, 7948, 43, + 15911, -1000, 692, 847, -1000, -1000, -1000, 883, 12274, 12604, + 43, 662, 13594, 15911, -1000, -1000, 13594, 15911, 4227, 5599, + 688, -89, 675, -1000, -121, -97, 7288, 153, -1000, -1000, + -1000, -1000, 3198, 181, 632, 309, -69, -1000, -1000, -1000, + 707, -1000, 707, 707, 707, 707, -22, -22, -22, -22, + -1000, -1000, -1000, -1000, -1000, 744, 743, -1000, 707, 707, + 707, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 739, + 739, 739, 727, 727, 748, -1000, 15911, 3541, 880, 3541, + -1000, 68, -1000, -1000, -1000, 15911, 15911, 15911, 15911, 15911, + 122, 15911, 15911, 687, -1000, 15911, 3541, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 303, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 15911, 284, 15911, 15911, 303, -1000, + 426, 15911, -1000, 818, 9280, 9280, 5256, 9280, -1000, -1000, + -1000, 853, -1000, 845, 897, -1000, 826, 825, 7948, -1000, + -1000, 205, 269, -1000, -1000, 328, -1000, -1000, -1000, -1000, + 141, 691, -1000, 561, -1000, -1000, -1000, -1000, 449, 10270, + 10270, 10270, 397, 561, 2242, 708, 1252, 158, 379, 379, + 163, 163, 163, 163, 163, 304, 304, -1000, -1000, -1000, + 454, -1000, -1000, -1000, 454, 7948, 7948, 686, -1000, -1000, + 9280, -1000, 454, 580, 580, 434, 370, 259, 919, 580, + 239, 912, 580, 580, 7948, 260, -1000, 9280, 454, -1000, + 138, -1000, 479, 680, 679, 580, 454, 580, 580, 684, + 691, -1000, 16241, 13594, 13594, 13594, 13594, 13594, -1000, 804, + 795, -1000, 802, 792, 803, 15911, -1000, 582, 12274, 185, + 691, -1000, 13924, -1000, -1000, 906, 13594, 676, -1000, 676, + -1000, 134, -1000, -1000, 675, -89, -100, -1000, -1000, -1000, + -1000, 303, -1000, 489, 672, 2855, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 736, 514, -1000, 867, 201, 184, 511, + 860, -1000, -1000, -1000, 849, -1000, 294, -72, -1000, -1000, + 349, -22, -22, -1000, -1000, 153, 832, 153, 153, 153, + 425, 425, -1000, -1000, -1000, -1000, 330, -1000, -1000, -1000, + 329, -1000, 779, 15581, 3541, -1000, -1000, -1000, -1000, 336, + 336, 202, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 42, 746, -1000, -1000, -1000, -1000, -8, + 29, 84, -1000, 3541, -1000, 256, -1000, -1000, -1000, -1000, + -1000, 816, 303, 303, 133, -1000, -1000, 15911, -1000, -1000, + -1000, -1000, 694, -1000, -1000, -1000, 3884, 7948, -1000, 397, + 561, 2147, -1000, 10270, 10270, -1000, -1000, 580, 580, 7948, + 303, -1000, -1000, -1000, 101, 477, 101, 10270, 10270, -1000, + 10270, 10270, -1000, -162, 700, 193, -1000, 9280, 518, -1000, + 5256, -1000, 10270, 10270, -1000, -1000, -1000, -1000, 771, 16241, + 691, -1000, 11932, 15581, 685, -1000, 218, 847, 731, 768, + 633, -1000, -1000, -1000, -1000, 794, -1000, 793, -1000, -1000, + -1000, -1000, -1000, 103, 94, 93, 15581, -1000, 899, 9280, + 676, -1000, -1000, 172, -1000, -1000, -129, -135, -1000, -1000, + -1000, 3198, -1000, 3198, 15581, 60, -1000, 511, 511, -1000, + -1000, -1000, 728, 767, 10270, -1000, -1000, -1000, 618, 153, + 153, -1000, 195, -1000, -1000, -1000, 576, -1000, 574, 671, + 570, 15911, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 15911, + -1000, -1000, -1000, -1000, -1000, 15581, -169, 470, 15581, 15581, + 15581, 15911, -1000, 284, -1000, 4913, -1000, 906, 13594, -1000, + -1000, 454, -1000, 10270, 561, 561, -1000, -1000, -1000, 454, + 707, 707, -1000, 707, 727, -1000, 707, 3, 707, -5, + 454, 454, 2114, 2089, 2017, 1960, 691, -157, -1000, 303, + 9280, -1000, 1787, 1623, -1000, 871, 645, 664, -1000, -1000, + 7618, 454, 568, 128, 566, -1000, 899, 16241, 9280, -1000, + -1000, 9280, 724, -1000, 9280, -1000, -1000, -1000, 691, 691, + 691, 566, 892, 303, -1000, -1000, -1000, -1000, 2855, -1000, + 553, -1000, 707, -1000, -1000, -1000, 15581, -60, 926, 561, + -1000, -1000, -1000, -1000, -1000, -22, 417, -22, 327, -1000, + 326, 3541, -1000, -1000, -1000, -1000, 874, -1000, 4913, -1000, + -1000, 706, 747, -1000, -1000, -1000, 904, 670, -1000, 561, + -1000, -1000, 109, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 10270, 10270, 10270, 10270, 10270, 454, 413, 303, 10270, + 10270, 859, -1000, 691, -1000, -1000, 690, 15581, 15581, -1000, + 15581, 892, -1000, 303, 303, 15581, 303, 15581, 15581, 15581, + 11590, -1000, 148, 15581, -1000, 549, -1000, 192, -1000, -116, + 153, -1000, 153, 585, 562, -1000, 691, 665, -1000, 217, + 15581, 15911, 901, 894, -1000, -1000, 479, 479, 479, 479, + 61, -1000, -1000, 479, 479, 924, -1000, 691, -1000, 718, + 120, -1000, -1000, -1000, 547, 543, 543, 543, 185, 148, + -1000, 448, 215, 398, -1000, 57, 15581, 298, 857, -1000, + 854, -1000, -1000, -1000, -1000, -1000, 41, 4913, 3198, 497, + -1000, -1000, 9280, 9280, -1000, -1000, -1000, -1000, 454, 46, + -177, -1000, -1000, 16241, 664, 454, 15581, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 318, -1000, -1000, 15911, -1000, -1000, + 355, -1000, -1000, 495, -1000, 15581, -1000, -1000, 746, 303, + 655, -1000, 812, -167, -181, 650, -1000, -1000, -1000, 703, + -1000, -1000, 41, 824, -169, -1000, 783, -1000, 15581, -1000, + 38, -1000, -172, 462, 36, -179, 766, 691, -184, 761, + -1000, 911, 9610, -1000, -1000, 913, 167, 167, 479, 454, + -1000, -1000, -1000, 64, 356, -1000, -1000, -1000, -1000, -1000, -1000, } var yyPgo = [...]int{ - 0, 1163, 26, 527, 1161, 1160, 1159, 1158, 1157, 1156, - 1155, 1149, 1148, 1147, 1146, 1145, 1143, 1142, 1138, 1134, - 1133, 1131, 1130, 1129, 1128, 1121, 82, 1120, 1119, 1117, - 65, 1108, 66, 1106, 1105, 42, 188, 47, 38, 1318, - 1104, 25, 71, 58, 1103, 35, 1101, 1100, 70, 1098, - 1097, 53, 1095, 1092, 1521, 1082, 62, 1075, 11, 49, - 1074, 1073, 1072, 1069, 69, 639, 1068, 1067, 13, 1066, - 1064, 106, 1063, 55, 10, 12, 9, 18, 1057, 1099, - 28, 1054, 54, 1052, 1051, 1050, 1045, 14, 1042, 56, - 1041, 17, 64, 1039, 19, 63, 30, 21, 6, 75, - 60, 1038, 22, 61, 48, 1037, 1036, 457, 1035, 1034, - 44, 1033, 1032, 23, 1030, 96, 438, 1029, 1028, 1027, - 1026, 45, 0, 394, 388, 73, 1025, 1024, 1022, 1342, - 33, 50, 15, 1019, 40, 191, 43, 1018, 1017, 37, - 1016, 1015, 1014, 1013, 1012, 1009, 1008, 392, 1007, 1006, - 1004, 92, 52, 1003, 1001, 57, 34, 998, 997, 992, - 51, 59, 990, 987, 46, 29, 985, 983, 981, 966, - 965, 31, 16, 964, 20, 963, 8, 958, 24, 957, - 7, 955, 5, 952, 3, 948, 4, 41, 1, 946, - 2, 941, 940, 528, 439, 76, 938, 77, + 0, 1144, 25, 542, 1142, 1141, 1140, 1136, 1135, 1134, + 1132, 1131, 1128, 1126, 1124, 1122, 1120, 1112, 1110, 1109, + 1108, 1107, 1106, 1104, 1103, 1102, 88, 1101, 1098, 1097, + 66, 1096, 75, 1095, 1094, 41, 213, 51, 43, 1042, + 1093, 60, 89, 101, 1090, 35, 1089, 1087, 73, 1086, + 1084, 56, 1083, 1082, 1384, 1081, 58, 1080, 13, 82, + 1079, 1078, 1077, 1075, 70, 934, 1073, 1072, 14, 1071, + 1070, 86, 1069, 52, 8, 16, 22, 18, 1066, 30, + 6, 1065, 53, 1064, 1063, 1062, 1061, 20, 1060, 55, + 1059, 19, 54, 1057, 9, 71, 34, 27, 7, 76, + 63, 1056, 23, 64, 49, 1055, 1054, 474, 1053, 1051, + 46, 1049, 1043, 37, 1041, 90, 445, 1040, 1039, 1036, + 1031, 42, 0, 478, 24, 65, 1022, 1018, 1009, 1443, + 38, 50, 17, 1006, 102, 1252, 44, 1004, 1001, 40, + 999, 996, 995, 994, 992, 984, 983, 93, 980, 979, + 978, 31, 21, 975, 974, 59, 29, 973, 972, 971, + 48, 57, 970, 968, 69, 45, 967, 965, 963, 962, + 961, 33, 10, 960, 15, 953, 11, 952, 28, 951, + 4, 950, 12, 949, 3, 948, 5, 47, 1, 946, + 2, 944, 942, 61, 344, 78, 941, 79, } var yyR1 = [...]int{ @@ -2964,73 +2968,73 @@ var yyChk = [...]int{ -161, 58, -54, 125, -54, 250, -116, 129, -116, -116, 124, -54, 58, 58, 116, 118, 121, 53, -18, -54, -115, 129, 58, -115, -115, -115, -54, 113, -54, 58, - 30, -135, -193, -124, 242, 58, 157, 124, 158, 126, - -135, -135, -135, -135, 161, 162, -135, -112, -111, 224, - 225, 219, 223, 12, 162, 219, 160, -135, -134, -134, - -194, 57, -92, 19, 31, -39, -129, -88, -89, -39, - -87, -2, -26, 37, -30, 21, 34, 66, 11, -126, - 74, 73, 90, -125, 22, -123, 60, 113, -39, -62, - 93, 75, 91, 92, 77, 95, 94, 105, 98, 99, - 100, 101, 102, 103, 104, 96, 97, 108, 83, 84, - 85, 86, 87, 88, 89, -108, -193, -79, -193, 114, - 115, -65, -65, -65, -65, -65, -65, -65, -65, -193, - -2, -74, -39, -193, -193, -193, -193, -193, -193, -193, - -193, -193, -83, -39, -193, -197, -71, -193, -197, -71, - -197, -71, -197, -193, -197, -71, -197, -71, -197, -197, - -71, -193, -193, -193, -193, -193, -193, -55, 26, -54, - -41, -42, -43, -44, -57, -79, -193, -54, -54, -48, - -195, 56, 11, 54, -195, 56, 113, 56, -99, 167, - -100, -104, 232, 234, 83, -128, -123, 60, 29, 30, - 57, 56, -54, -140, -143, -145, -144, -146, -141, -142, - 187, 188, 109, 191, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 30, 147, 183, 184, 185, 186, - 203, 204, 205, 206, 207, 208, 209, 210, 170, 189, - 261, 171, 172, 173, 174, 175, 176, 178, 179, 180, - 181, 182, 58, -135, 126, 58, 75, 58, -54, -54, - -135, -135, -135, 159, 159, 124, 124, 164, -54, 56, - 127, -48, 23, 53, -54, 58, 58, -130, -129, -121, - -135, -135, -135, -135, -135, -54, -135, -135, -135, -135, - 11, -110, 11, 93, -39, -114, 91, 53, 9, 93, - 56, 18, 113, 56, -90, 24, 25, -91, -194, -32, - -66, -123, 61, 64, -31, 44, -54, -39, -39, -72, - 69, 75, 70, 71, -125, 100, -130, -124, -121, -65, - -73, -76, -79, 65, 93, 91, 92, 77, -65, -65, - -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, - -65, -65, -65, -136, 58, 60, 58, -64, -64, -123, - -37, 21, 34, -36, -38, -194, 56, -194, -2, -36, - -36, -39, -39, -80, 60, -36, -80, 60, -36, -36, - -30, -81, -82, 79, -80, -123, -129, -194, -65, -123, - -123, -36, -37, -36, -36, -95, 153, -54, 30, 56, - -50, -52, -51, -53, 43, 47, 49, 44, 45, 46, - 50, -133, 22, -41, -193, -132, 153, -131, 22, -129, - 60, -95, 54, -41, -54, -41, -56, -129, 100, -103, - -100, 56, 233, 235, 236, 53, 72, -39, -152, 108, - -170, -171, -172, -124, 60, 61, -161, -162, -163, -173, - 139, -178, 131, 133, 130, -164, 140, 125, 28, 57, - -157, 69, 75, -153, 215, -147, 55, -147, -147, -147, - -147, -151, 190, -151, -151, -151, 55, 55, -147, -147, - -147, -155, 55, -155, -155, -156, 55, -156, -127, 54, - -54, -135, 23, -135, -117, 121, 118, 119, -181, 117, - 212, 190, 67, 29, 15, 251, 153, 266, 58, 154, - -54, -54, -54, -54, -54, 121, 118, -54, -54, -54, - -135, -54, -113, 91, 12, -129, -129, 60, -54, 39, - -39, -39, -130, -89, -92, -106, 19, 11, 35, 35, - -36, 69, 70, 71, 113, -193, -73, -65, -65, -65, - -35, 148, 74, -194, -194, -36, -36, 56, -39, -194, - -194, -194, 56, 54, 22, 11, 11, -194, 11, 11, - -194, -194, -36, -84, -82, 81, -39, -194, 113, -194, - 56, 56, -194, -194, -194, -194, -63, 30, 35, -2, - -193, -193, -98, -102, -80, -42, -43, -43, -42, -43, - 43, 43, 43, 48, 43, 48, 43, -51, -129, -194, - -58, 51, 128, 52, -193, -131, -59, 12, -41, -59, - -59, 113, -104, -105, 237, 234, 240, 58, 60, 56, - -172, 83, 55, 58, 28, -164, -164, -165, 58, -165, - 28, -149, 29, 69, -154, 216, 61, -151, -151, -152, - 30, -152, -152, -152, -160, 60, -160, 61, 61, 53, - -123, -135, -134, -187, 136, 132, 139, 140, 134, 58, - 125, 28, 131, 133, 153, 130, -187, -118, -119, 127, - 22, 125, 28, 153, -186, 54, 159, 212, 159, 127, - -135, -110, 60, -39, 40, 113, -54, -40, 11, 100, + 30, -113, 91, 12, 242, 58, 157, 124, 158, 126, + -135, -193, -124, -135, -135, -135, 161, 162, -135, -112, + -111, 224, 225, 219, 223, 12, 162, 219, 160, -135, + -134, -134, -194, 57, -92, 19, 31, -39, -129, -88, + -89, -39, -87, -2, -26, 37, -30, 21, 34, 66, + 11, -126, 74, 73, 90, -125, 22, -123, 60, 113, + -39, -62, 93, 75, 91, 92, 77, 95, 94, 105, + 98, 99, 100, 101, 102, 103, 104, 96, 97, 108, + 83, 84, 85, 86, 87, 88, 89, -108, -193, -79, + -193, 114, 115, -65, -65, -65, -65, -65, -65, -65, + -65, -193, -2, -74, -39, -193, -193, -193, -193, -193, + -193, -193, -193, -193, -83, -39, -193, -197, -71, -193, + -197, -71, -197, -71, -197, -193, -197, -71, -197, -71, + -197, -197, -71, -193, -193, -193, -193, -193, -193, -55, + 26, -54, -41, -42, -43, -44, -57, -79, -193, -54, + -54, -48, -195, 56, 11, 54, -195, 56, 113, 56, + -99, 167, -100, -104, 232, 234, 83, -128, -123, 60, + 29, 30, 57, 56, -54, -140, -143, -145, -144, -146, + -141, -142, 187, 188, 109, 191, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 30, 147, 183, 184, + 185, 186, 203, 204, 205, 206, 207, 208, 209, 210, + 170, 189, 261, 171, 172, 173, 174, 175, 176, 178, + 179, 180, 181, 182, 58, -135, 126, 58, 75, 58, + -54, -54, -135, -135, -135, 159, 159, 124, 124, 164, + -54, 56, 127, -48, 23, 53, -54, 58, 58, -130, + -129, -121, -135, -113, 60, -39, -135, -135, -135, -54, + -135, -135, -135, -135, 11, -110, 11, 93, -39, -114, + 91, 53, 9, 93, 56, 18, 113, 56, -90, 24, + 25, -91, -194, -32, -66, -123, 61, 64, -31, 44, + -54, -39, -39, -72, 69, 75, 70, 71, -125, 100, + -130, -124, -121, -65, -73, -76, -79, 65, 93, 91, + 92, 77, -65, -65, -65, -65, -65, -65, -65, -65, + -65, -65, -65, -65, -65, -65, -65, -136, 58, 60, + 58, -64, -64, -123, -37, 21, 34, -36, -38, -194, + 56, -194, -2, -36, -36, -39, -39, -80, 60, -36, + -80, 60, -36, -36, -30, -81, -82, 79, -80, -123, + -129, -194, -65, -123, -123, -36, -37, -36, -36, -95, + 153, -54, 30, 56, -50, -52, -51, -53, 43, 47, + 49, 44, 45, 46, 50, -133, 22, -41, -193, -132, + 153, -131, 22, -129, 60, -95, 54, -41, -54, -41, + -56, -129, 100, -103, -100, 56, 233, 235, 236, 53, + 72, -39, -152, 108, -170, -171, -172, -124, 60, 61, + -161, -162, -163, -173, 139, -178, 131, 133, 130, -164, + 140, 125, 28, 57, -157, 69, 75, -153, 215, -147, + 55, -147, -147, -147, -147, -151, 190, -151, -151, -151, + 55, 55, -147, -147, -147, -155, 55, -155, -155, -156, + 55, -156, -127, 54, -54, -135, 23, -135, -117, 121, + 118, 119, -181, 117, 212, 190, 67, 29, 15, 251, + 153, 266, 58, 154, -54, -54, -54, -54, -54, 121, + 118, -54, -54, -54, -135, -54, -113, -129, -129, 60, + -54, 39, -39, -39, -130, -89, -92, -106, 19, 11, + 35, 35, -36, 69, 70, 71, 113, -193, -73, -65, + -65, -65, -35, 148, 74, -194, -194, -36, -36, 56, + -39, -194, -194, -194, 56, 54, 22, 11, 11, -194, + 11, 11, -194, -194, -36, -84, -82, 81, -39, -194, + 113, -194, 56, 56, -194, -194, -194, -194, -63, 30, + 35, -2, -193, -193, -98, -102, -80, -42, -43, -43, + -42, -43, 43, 43, 43, 48, 43, 48, 43, -51, + -129, -194, -58, 51, 128, 52, -193, -131, -59, 12, + -41, -59, -59, 113, -104, -105, 237, 234, 240, 58, + 60, 56, -172, 83, 55, 58, 28, -164, -164, -165, + 58, -165, 28, -149, 29, 69, -154, 216, 61, -151, + -151, -152, 30, -152, -152, -152, -160, 60, -160, 61, + 61, 53, -123, -135, -134, -187, 136, 132, 139, 140, + 134, 58, 125, 28, 131, 133, 153, 130, -187, -118, + -119, 127, 22, 125, 28, 153, -186, 54, 159, 212, + 159, 127, -135, -110, 40, 113, -54, -40, 11, 100, -124, -37, -35, 74, -65, -65, -194, -194, -38, -139, 109, 187, 147, 185, 181, 201, 192, 214, 183, 215, -136, -139, -65, -65, -65, -65, 260, -87, 82, -39, @@ -3093,7 +3097,7 @@ var yyDef = [...]int{ 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 0, 0, 0, 0, 0, 619, 0, 614, 0, 614, 614, 614, 0, 258, 392, 644, 645, 924, 0, 0, - 0, 938, 0, 938, 270, 938, 938, 273, 938, 0, + 0, 297, 0, 938, 270, 938, 938, 273, 938, 0, 938, 0, 280, 0, 0, 286, 938, 303, 304, 291, 305, 308, 311, 312, 313, 314, 315, 937, 937, 318, 29, 576, 0, 0, 564, 31, 0, 319, 324, 325, @@ -3121,73 +3125,73 @@ var yyDef = [...]int{ 84, 0, 82, 0, 938, 0, 0, 0, 0, 0, 0, 938, 938, 938, 0, 0, 0, 0, 249, 0, 0, 0, 0, 0, 0, 0, 257, 0, 259, 938, - 938, 262, 939, 940, 938, 938, 938, 0, 938, 938, - 269, 271, 272, 274, 938, 938, 276, 0, 294, 292, - 293, 288, 289, 0, 300, 283, 284, 287, 316, 317, - 30, 936, 24, 0, 0, 573, 0, 565, 566, 569, - 572, 29, 326, 0, 332, 330, 331, 322, 0, 339, - 0, 0, 0, 343, 0, 345, 346, 0, 404, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 428, 429, - 430, 431, 432, 433, 434, 407, 0, 421, 0, 0, - 0, 463, 464, 465, 466, 467, 468, 469, 0, 334, - 29, 0, 441, 0, 0, 0, 0, 0, 0, 0, - 0, 329, 0, 538, 0, 492, 500, 0, 493, 501, - 494, 502, 495, 0, 496, 503, 497, 504, 498, 499, - 505, 0, 0, 0, 334, 0, 0, 48, 0, 391, - 0, 349, 351, 352, 353, -2, 0, 375, -2, 0, - 0, 0, 42, 43, 0, 0, 0, 0, 51, 913, - 53, 54, 0, 0, 0, 162, 609, 610, 611, 607, - 206, 0, 0, 150, 146, 90, 91, 92, 139, 94, - 139, 139, 139, 139, 159, 159, 159, 159, 122, 123, - 124, 125, 126, 0, 0, 109, 139, 139, 139, 113, - 129, 130, 131, 132, 133, 134, 135, 136, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 141, 141, 141, - 143, 143, 638, 68, 0, 938, 0, 938, 80, 0, - 220, 222, 223, 0, 0, 0, 0, 0, 0, 0, - 0, 252, 615, 0, 938, 255, 256, 393, 646, 647, - 260, 261, 263, 264, 265, 266, 267, 268, 275, 279, - 0, 297, 0, 0, 281, 282, 0, 0, 577, 0, - 0, 0, 0, 0, 568, 570, 571, 576, 32, 329, - 0, 557, 0, 0, 0, 333, 27, 402, 403, 405, - 422, 0, 424, 426, 344, 340, 0, 547, -2, 412, - 413, 437, 438, 439, 0, 0, 0, 0, 435, 417, - 0, 448, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 462, 522, 523, 0, 460, 461, 470, - 0, 0, 0, 335, 336, 440, 0, 595, 29, 0, - 0, 0, 0, 445, 549, 0, 445, 549, 0, 0, - 0, 544, 541, 0, 0, 546, 0, 509, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 390, 0, 0, - 0, 0, 0, 0, 380, 0, 0, 383, 0, 0, - 0, 0, 374, 0, 0, 395, 858, 376, 0, 378, - 379, 399, 0, 399, 45, 399, 47, 0, 394, 601, - 52, 0, 0, 57, 58, 602, 603, 604, 605, 0, - 81, 207, 209, 212, 213, 214, 85, 86, 87, 0, - 0, 194, 0, 0, 188, 188, 0, 186, 187, 83, - 153, 151, 0, 148, 147, 93, 0, 159, 159, 116, - 117, 162, 0, 162, 162, 162, 0, 0, 110, 111, - 112, 104, 0, 105, 106, 107, 0, 108, 0, 0, - 938, 70, 617, 71, 937, 0, 0, 630, 221, 620, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 0, - 72, 225, 227, 226, 230, 0, 0, 0, 250, 938, - 254, 294, 278, 0, 0, 295, 296, 301, 285, 0, - 574, 575, 0, 567, 25, 0, 612, 613, 558, 559, - 347, 423, 425, 427, 0, 334, 414, 435, 418, 0, - 415, 0, 0, 409, 475, 0, 0, 0, 442, -2, - 479, 480, 0, 0, 0, 0, 0, 515, 0, 0, - 516, 0, 564, 0, 542, 0, 0, 491, 0, 510, - 0, 0, 511, 512, 513, 514, 589, 0, 0, -2, - 0, 0, 399, 597, 0, 350, 369, 371, 0, 366, - 381, 382, 384, 0, 386, 0, 388, 389, 354, 356, - 357, 0, 0, 0, 0, 377, 564, 0, 399, 40, - 41, 0, 55, 56, 0, 0, 62, 163, 164, 0, - 210, 0, 0, 0, 181, 188, 188, 184, 189, 185, - 0, 155, 0, 152, 89, 149, 0, 162, 162, 118, - 0, 119, 120, 121, 0, 137, 0, 0, 0, 0, - 639, 69, 215, 937, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 937, 0, 937, 631, - 632, 633, 634, 0, 75, 0, 0, 0, 0, 0, - 253, 297, 298, 299, 578, 0, 26, 399, 0, 341, + 297, 262, 0, 0, 938, 938, 938, 0, 938, 938, + 269, 939, 940, 271, 272, 274, 938, 938, 276, 0, + 294, 292, 293, 288, 289, 0, 300, 283, 284, 287, + 316, 317, 30, 936, 24, 0, 0, 573, 0, 565, + 566, 569, 572, 29, 326, 0, 332, 330, 331, 322, + 0, 339, 0, 0, 0, 343, 0, 345, 346, 0, + 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 428, 429, 430, 431, 432, 433, 434, 407, 0, 421, + 0, 0, 0, 463, 464, 465, 466, 467, 468, 469, + 0, 334, 29, 0, 441, 0, 0, 0, 0, 0, + 0, 0, 0, 329, 0, 538, 0, 492, 500, 0, + 493, 501, 494, 502, 495, 0, 496, 503, 497, 504, + 498, 499, 505, 0, 0, 0, 334, 0, 0, 48, + 0, 391, 0, 349, 351, 352, 353, -2, 0, 375, + -2, 0, 0, 0, 42, 43, 0, 0, 0, 0, + 51, 913, 53, 54, 0, 0, 0, 162, 609, 610, + 611, 607, 206, 0, 0, 150, 146, 90, 91, 92, + 139, 94, 139, 139, 139, 139, 159, 159, 159, 159, + 122, 123, 124, 125, 126, 0, 0, 109, 139, 139, + 139, 113, 129, 130, 131, 132, 133, 134, 135, 136, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 141, + 141, 141, 143, 143, 638, 68, 0, 938, 0, 938, + 80, 0, 220, 222, 223, 0, 0, 0, 0, 0, + 0, 0, 0, 252, 615, 0, 938, 255, 256, 393, + 646, 647, 260, 261, 298, 299, 263, 264, 265, 266, + 267, 268, 275, 279, 0, 297, 0, 0, 281, 282, + 0, 0, 577, 0, 0, 0, 0, 0, 568, 570, + 571, 576, 32, 329, 0, 557, 0, 0, 0, 333, + 27, 402, 403, 405, 422, 0, 424, 426, 344, 340, + 0, 547, -2, 412, 413, 437, 438, 439, 0, 0, + 0, 0, 435, 417, 0, 448, 449, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 462, 522, 523, + 0, 460, 461, 470, 0, 0, 0, 335, 336, 440, + 0, 595, 29, 0, 0, 0, 0, 445, 549, 0, + 445, 549, 0, 0, 0, 544, 541, 0, 0, 546, + 0, 509, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 390, 0, 0, 0, 0, 0, 0, 380, 0, + 0, 383, 0, 0, 0, 0, 374, 0, 0, 395, + 858, 376, 0, 378, 379, 399, 0, 399, 45, 399, + 47, 0, 394, 601, 52, 0, 0, 57, 58, 602, + 603, 604, 605, 0, 81, 207, 209, 212, 213, 214, + 85, 86, 87, 0, 0, 194, 0, 0, 188, 188, + 0, 186, 187, 83, 153, 151, 0, 148, 147, 93, + 0, 159, 159, 116, 117, 162, 0, 162, 162, 162, + 0, 0, 110, 111, 112, 104, 0, 105, 106, 107, + 0, 108, 0, 0, 938, 70, 617, 71, 937, 0, + 0, 630, 221, 620, 621, 622, 623, 624, 625, 626, + 627, 628, 629, 0, 72, 225, 227, 226, 230, 0, + 0, 0, 250, 938, 254, 294, 278, 295, 296, 301, + 285, 0, 574, 575, 0, 567, 25, 0, 612, 613, + 558, 559, 347, 423, 425, 427, 0, 334, 414, 435, + 418, 0, 415, 0, 0, 409, 475, 0, 0, 0, + 442, -2, 479, 480, 0, 0, 0, 0, 0, 515, + 0, 0, 516, 0, 564, 0, 542, 0, 0, 491, + 0, 510, 0, 0, 511, 512, 513, 514, 589, 0, + 0, -2, 0, 0, 399, 597, 0, 350, 369, 371, + 0, 366, 381, 382, 384, 0, 386, 0, 388, 389, + 354, 356, 357, 0, 0, 0, 0, 377, 564, 0, + 399, 40, 41, 0, 55, 56, 0, 0, 62, 163, + 164, 0, 210, 0, 0, 0, 181, 188, 188, 184, + 189, 185, 0, 155, 0, 152, 89, 149, 0, 162, + 162, 118, 0, 119, 120, 121, 0, 137, 0, 0, + 0, 0, 639, 69, 215, 937, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 937, 0, + 937, 631, 632, 633, 634, 0, 75, 0, 0, 0, + 0, 0, 253, 297, 578, 0, 26, 399, 0, 341, 548, 0, 416, 0, 436, 419, 476, 477, 337, 0, 139, 139, 527, 139, 143, 530, 139, 532, 139, 535, 0, 0, 0, 0, 0, 0, 0, 539, 490, 545, @@ -5088,108 +5092,110 @@ yydefault: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1506 { - yyVAL.statement = &Show{Type: CharsetStr} + showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} + yyVAL.statement = &Show{Type: CharsetStr, ShowTablesOpt: showTablesOpt} } case 262: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1510 +//line sql.y:1511 { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} + showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), ShowTablesOpt: showTablesOpt} } case 263: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1514 +//line sql.y:1516 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 264: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1519 +//line sql.y:1521 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 265: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1523 +//line sql.y:1525 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 266: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1527 +//line sql.y:1529 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName} } case 267: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1531 +//line sql.y:1533 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 268: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1535 +//line sql.y:1537 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 269: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1539 +//line sql.y:1541 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 270: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1543 +//line sql.y:1545 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 271: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1547 +//line sql.y:1549 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 272: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1551 +//line sql.y:1553 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 273: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1555 +//line sql.y:1557 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 274: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1559 +//line sql.y:1561 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 275: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1563 +//line sql.y:1565 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } case 276: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1567 +//line sql.y:1569 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 277: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1571 +//line sql.y:1573 { showTablesOpt := &ShowTablesOpt{Full: yyDollar[2].str, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter} yyVAL.statement = &Show{Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt, OnTable: yyDollar[5].tableName} } case 278: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1576 +//line sql.y:1578 { // this is ugly, but I couldn't find a better way for now if yyDollar[3].str == "processlist" { @@ -5201,19 +5207,19 @@ yydefault: } case 279: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1586 +//line sql.y:1588 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } case 280: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1590 +//line sql.y:1592 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 281: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1594 +//line sql.y:1596 { // Cannot dereference $4 directly, or else the parser stackcannot be pooled. See yyParsePooled showCollationFilterOpt := yyDollar[4].expr @@ -5221,429 +5227,429 @@ yydefault: } case 282: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1600 +//line sql.y:1602 { showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} yyVAL.statement = &Show{Scope: string(yyDollar[2].bytes), Type: string(yyDollar[3].bytes), ShowTablesOpt: showTablesOpt} } case 283: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1605 +//line sql.y:1607 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 284: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1609 +//line sql.y:1611 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } case 285: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1613 +//line sql.y:1615 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), OnTable: yyDollar[5].tableName} } case 286: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1617 +//line sql.y:1619 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 287: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1631 +//line sql.y:1633 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } case 288: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1637 +//line sql.y:1639 { yyVAL.str = string(yyDollar[1].bytes) } case 289: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1641 +//line sql.y:1643 { yyVAL.str = string(yyDollar[1].bytes) } case 290: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1647 +//line sql.y:1649 { yyVAL.str = "" } case 291: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1651 +//line sql.y:1653 { yyVAL.str = "full " } case 292: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1657 +//line sql.y:1659 { yyVAL.str = string(yyDollar[1].bytes) } case 293: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1661 +//line sql.y:1663 { yyVAL.str = string(yyDollar[1].bytes) } case 294: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1667 +//line sql.y:1669 { yyVAL.str = "" } case 295: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1671 +//line sql.y:1673 { yyVAL.str = yyDollar[2].tableIdent.v } case 296: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1675 +//line sql.y:1677 { yyVAL.str = yyDollar[2].tableIdent.v } case 297: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1681 +//line sql.y:1683 { yyVAL.showFilter = nil } case 298: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1685 +//line sql.y:1687 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } case 299: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1689 +//line sql.y:1691 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } case 300: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1695 +//line sql.y:1697 { yyVAL.showFilter = nil } case 301: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1699 +//line sql.y:1701 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } case 302: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1705 +//line sql.y:1707 { yyVAL.str = "" } case 303: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1709 +//line sql.y:1711 { yyVAL.str = SessionStr } case 304: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1713 +//line sql.y:1715 { yyVAL.str = GlobalStr } case 305: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1719 +//line sql.y:1721 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } case 306: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1723 +//line sql.y:1725 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } case 307: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1729 +//line sql.y:1731 { yyVAL.statement = &Begin{} } case 308: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1733 +//line sql.y:1735 { yyVAL.statement = &Begin{} } case 309: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1739 +//line sql.y:1741 { yyVAL.statement = &Commit{} } case 310: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1745 +//line sql.y:1747 { yyVAL.statement = &Rollback{} } case 311: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1751 +//line sql.y:1753 { yyVAL.statement = &OtherRead{} } case 312: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1755 +//line sql.y:1757 { yyVAL.statement = &OtherRead{} } case 313: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1759 +//line sql.y:1761 { yyVAL.statement = &OtherRead{} } case 314: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1763 +//line sql.y:1765 { yyVAL.statement = &OtherAdmin{} } case 315: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1767 +//line sql.y:1769 { yyVAL.statement = &OtherAdmin{} } case 316: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1771 +//line sql.y:1773 { yyVAL.statement = &OtherAdmin{} } case 317: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1775 +//line sql.y:1777 { yyVAL.statement = &OtherAdmin{} } case 318: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1781 +//line sql.y:1783 { yyVAL.statement = &DDL{Action: FlushStr} } case 319: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1785 +//line sql.y:1787 { setAllowComments(yylex, true) } case 320: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1789 +//line sql.y:1791 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } case 321: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1795 +//line sql.y:1797 { yyVAL.bytes2 = nil } case 322: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1799 +//line sql.y:1801 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } case 323: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1805 +//line sql.y:1807 { yyVAL.str = UnionStr } case 324: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1809 +//line sql.y:1811 { yyVAL.str = UnionAllStr } case 325: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1813 +//line sql.y:1815 { yyVAL.str = UnionDistinctStr } case 326: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1818 +//line sql.y:1820 { yyVAL.str = "" } case 327: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1822 +//line sql.y:1824 { yyVAL.str = SQLNoCacheStr } case 328: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1826 +//line sql.y:1828 { yyVAL.str = SQLCacheStr } case 329: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1831 +//line sql.y:1833 { yyVAL.str = "" } case 330: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1835 +//line sql.y:1837 { yyVAL.str = DistinctStr } case 331: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1839 +//line sql.y:1841 { yyVAL.str = DistinctStr } case 332: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1844 +//line sql.y:1846 { yyVAL.str = "" } case 333: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1848 +//line sql.y:1850 { yyVAL.str = StraightJoinHint } case 334: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1853 +//line sql.y:1855 { yyVAL.selectExprs = nil } case 335: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1857 +//line sql.y:1859 { yyVAL.selectExprs = yyDollar[1].selectExprs } case 336: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1863 +//line sql.y:1865 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } case 337: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1867 +//line sql.y:1869 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } case 338: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1873 +//line sql.y:1875 { yyVAL.selectExpr = &StarExpr{} } case 339: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1877 +//line sql.y:1879 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } case 340: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1881 +//line sql.y:1883 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } case 341: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1885 +//line sql.y:1887 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } case 342: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1890 +//line sql.y:1892 { yyVAL.colIdent = ColIdent{} } case 343: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1894 +//line sql.y:1896 { yyVAL.colIdent = yyDollar[1].colIdent } case 344: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1898 +//line sql.y:1900 { yyVAL.colIdent = yyDollar[2].colIdent } case 346: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1905 +//line sql.y:1907 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } case 347: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1910 +//line sql.y:1912 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } case 348: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1914 +//line sql.y:1916 { yyVAL.tableExprs = yyDollar[2].tableExprs } case 349: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1920 +//line sql.y:1922 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } case 350: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1924 +//line sql.y:1926 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } case 353: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1934 +//line sql.y:1936 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } case 354: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1938 +//line sql.y:1940 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } case 355: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1942 +//line sql.y:1944 { // missed alias for subquery yylex.Error("Every derived table must have its own alias") @@ -5651,199 +5657,199 @@ yydefault: } case 356: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1948 +//line sql.y:1950 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } case 357: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1954 +//line sql.y:1956 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } case 358: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1958 +//line sql.y:1960 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } case 359: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1964 +//line sql.y:1966 { yyVAL.columns = Columns{yyDollar[1].colIdent} } case 360: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1968 +//line sql.y:1970 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } case 361: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1974 +//line sql.y:1976 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } case 362: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1978 +//line sql.y:1980 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } case 363: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1991 +//line sql.y:1993 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 364: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1995 +//line sql.y:1997 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 365: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:1999 +//line sql.y:2001 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 366: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2003 +//line sql.y:2005 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} } case 367: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2009 +//line sql.y:2011 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } case 368: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2011 +//line sql.y:2013 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } case 369: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2015 +//line sql.y:2017 { yyVAL.joinCondition = JoinCondition{} } case 370: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2017 +//line sql.y:2019 { yyVAL.joinCondition = yyDollar[1].joinCondition } case 371: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2021 +//line sql.y:2023 { yyVAL.joinCondition = JoinCondition{} } case 372: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2023 +//line sql.y:2025 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } case 373: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2026 +//line sql.y:2028 { yyVAL.empty = struct{}{} } case 374: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2028 +//line sql.y:2030 { yyVAL.empty = struct{}{} } case 375: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2031 +//line sql.y:2033 { yyVAL.tableIdent = NewTableIdent("") } case 376: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2035 +//line sql.y:2037 { yyVAL.tableIdent = yyDollar[1].tableIdent } case 377: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2039 +//line sql.y:2041 { yyVAL.tableIdent = yyDollar[2].tableIdent } case 379: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2046 +//line sql.y:2048 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } case 380: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2052 +//line sql.y:2054 { yyVAL.str = JoinStr } case 381: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2056 +//line sql.y:2058 { yyVAL.str = JoinStr } case 382: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2060 +//line sql.y:2062 { yyVAL.str = JoinStr } case 383: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2066 +//line sql.y:2068 { yyVAL.str = StraightJoinStr } case 384: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2072 +//line sql.y:2074 { yyVAL.str = LeftJoinStr } case 385: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2076 +//line sql.y:2078 { yyVAL.str = LeftJoinStr } case 386: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2080 +//line sql.y:2082 { yyVAL.str = RightJoinStr } case 387: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2084 +//line sql.y:2086 { yyVAL.str = RightJoinStr } case 388: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2090 +//line sql.y:2092 { yyVAL.str = NaturalJoinStr } case 389: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2094 +//line sql.y:2096 { if yyDollar[2].str == LeftJoinStr { yyVAL.str = NaturalLeftJoinStr @@ -5853,463 +5859,463 @@ yydefault: } case 390: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2104 +//line sql.y:2106 { yyVAL.tableName = yyDollar[2].tableName } case 391: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2108 +//line sql.y:2110 { yyVAL.tableName = yyDollar[1].tableName } case 392: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2114 +//line sql.y:2116 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } case 393: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2118 +//line sql.y:2120 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } case 394: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2124 +//line sql.y:2126 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } case 395: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2129 +//line sql.y:2131 { yyVAL.indexHints = nil } case 396: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2133 +//line sql.y:2135 { yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].columns} } case 397: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2137 +//line sql.y:2139 { yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].columns} } case 398: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2141 +//line sql.y:2143 { yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].columns} } case 399: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2146 +//line sql.y:2148 { yyVAL.expr = nil } case 400: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2150 +//line sql.y:2152 { yyVAL.expr = yyDollar[2].expr } case 401: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2156 +//line sql.y:2158 { yyVAL.expr = yyDollar[1].expr } case 402: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2160 +//line sql.y:2162 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } case 403: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2164 +//line sql.y:2166 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } case 404: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2168 +//line sql.y:2170 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } case 405: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2172 +//line sql.y:2174 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].expr} } case 406: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2176 +//line sql.y:2178 { yyVAL.expr = yyDollar[1].expr } case 407: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2180 +//line sql.y:2182 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } case 408: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2186 +//line sql.y:2188 { yyVAL.str = "" } case 409: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2190 +//line sql.y:2192 { yyVAL.str = string(yyDollar[2].bytes) } case 410: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2196 +//line sql.y:2198 { yyVAL.boolVal = BoolVal(true) } case 411: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2200 +//line sql.y:2202 { yyVAL.boolVal = BoolVal(false) } case 412: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2206 +//line sql.y:2208 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr} } case 413: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2210 +//line sql.y:2212 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple} } case 414: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2214 +//line sql.y:2216 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple} } case 415: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2218 +//line sql.y:2220 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } case 416: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2222 +//line sql.y:2224 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } case 417: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2226 +//line sql.y:2228 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr} } case 418: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2230 +//line sql.y:2232 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr} } case 419: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2234 +//line sql.y:2236 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr} } case 420: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2238 +//line sql.y:2240 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr} } case 421: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2242 +//line sql.y:2244 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } case 422: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2248 +//line sql.y:2250 { yyVAL.str = IsNullStr } case 423: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2252 +//line sql.y:2254 { yyVAL.str = IsNotNullStr } case 424: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2256 +//line sql.y:2258 { yyVAL.str = IsTrueStr } case 425: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2260 +//line sql.y:2262 { yyVAL.str = IsNotTrueStr } case 426: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2264 +//line sql.y:2266 { yyVAL.str = IsFalseStr } case 427: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2268 +//line sql.y:2270 { yyVAL.str = IsNotFalseStr } case 428: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2274 +//line sql.y:2276 { yyVAL.str = EqualStr } case 429: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2278 +//line sql.y:2280 { yyVAL.str = LessThanStr } case 430: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2282 +//line sql.y:2284 { yyVAL.str = GreaterThanStr } case 431: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2286 +//line sql.y:2288 { yyVAL.str = LessEqualStr } case 432: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2290 +//line sql.y:2292 { yyVAL.str = GreaterEqualStr } case 433: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2294 +//line sql.y:2296 { yyVAL.str = NotEqualStr } case 434: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2298 +//line sql.y:2300 { yyVAL.str = NullSafeEqualStr } case 435: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2303 +//line sql.y:2305 { yyVAL.expr = nil } case 436: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2307 +//line sql.y:2309 { yyVAL.expr = yyDollar[2].expr } case 437: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2313 +//line sql.y:2315 { yyVAL.colTuple = yyDollar[1].valTuple } case 438: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2317 +//line sql.y:2319 { yyVAL.colTuple = yyDollar[1].subquery } case 439: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2321 +//line sql.y:2323 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } case 440: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2327 +//line sql.y:2329 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } case 441: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2333 +//line sql.y:2335 { yyVAL.exprs = Exprs{yyDollar[1].expr} } case 442: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2337 +//line sql.y:2339 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } case 443: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2343 +//line sql.y:2345 { yyVAL.expr = yyDollar[1].expr } case 444: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2347 +//line sql.y:2349 { yyVAL.expr = yyDollar[1].boolVal } case 445: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2351 +//line sql.y:2353 { yyVAL.expr = yyDollar[1].colName } case 446: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2355 +//line sql.y:2357 { yyVAL.expr = yyDollar[1].expr } case 447: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2359 +//line sql.y:2361 { yyVAL.expr = yyDollar[1].subquery } case 448: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2363 +//line sql.y:2365 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} } case 449: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2367 +//line sql.y:2369 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} } case 450: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2371 +//line sql.y:2373 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} } case 451: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2375 +//line sql.y:2377 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} } case 452: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2379 +//line sql.y:2381 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} } case 453: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2383 +//line sql.y:2385 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} } case 454: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2387 +//line sql.y:2389 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} } case 455: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2391 +//line sql.y:2393 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} } case 456: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2395 +//line sql.y:2397 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } case 457: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2399 +//line sql.y:2401 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } case 458: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2403 +//line sql.y:2405 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} } case 459: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2407 +//line sql.y:2409 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} } case 460: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2411 +//line sql.y:2413 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } case 461: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2415 +//line sql.y:2417 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } case 462: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2419 +//line sql.y:2421 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } case 463: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2423 +//line sql.y:2425 { yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} } case 464: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2427 +//line sql.y:2429 { yyVAL.expr = &UnaryExpr{Operator: UBinaryStr, Expr: yyDollar[2].expr} } case 465: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2431 +//line sql.y:2433 { yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Str, Expr: yyDollar[2].expr} } case 466: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2435 +//line sql.y:2437 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { yyVAL.expr = num @@ -6319,7 +6325,7 @@ yydefault: } case 467: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2443 +//line sql.y:2445 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { // Handle double negative @@ -6335,19 +6341,19 @@ yydefault: } case 468: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2457 +//line sql.y:2459 { yyVAL.expr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].expr} } case 469: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2461 +//line sql.y:2463 { yyVAL.expr = &UnaryExpr{Operator: BangStr, Expr: yyDollar[2].expr} } case 470: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2465 +//line sql.y:2467 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -6357,319 +6363,319 @@ yydefault: } case 475: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2483 +//line sql.y:2485 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } case 476: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2487 +//line sql.y:2489 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } case 477: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2491 +//line sql.y:2493 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } case 478: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2495 +//line sql.y:2497 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } case 479: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2505 +//line sql.y:2507 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } case 480: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2509 +//line sql.y:2511 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } case 481: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2513 +//line sql.y:2515 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } case 482: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2517 +//line sql.y:2519 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } case 483: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2521 +//line sql.y:2523 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } case 484: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2525 +//line sql.y:2527 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } case 485: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2529 +//line sql.y:2531 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } case 486: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2533 +//line sql.y:2535 { yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 487: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2537 +//line sql.y:2539 { yyVAL.expr = &SubstrExpr{StrVal: NewStrVal(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 488: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2541 +//line sql.y:2543 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str} } case 489: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2545 +//line sql.y:2547 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str} } case 490: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2549 +//line sql.y:2551 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } case 491: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2553 +//line sql.y:2555 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } case 492: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2563 +//line sql.y:2565 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } case 493: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2567 +//line sql.y:2569 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } case 494: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2571 +//line sql.y:2573 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } case 495: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2576 +//line sql.y:2578 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } case 496: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2581 +//line sql.y:2583 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } case 497: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2586 +//line sql.y:2588 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } case 498: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2592 +//line sql.y:2594 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } case 499: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2597 +//line sql.y:2599 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } case 500: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2602 +//line sql.y:2604 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].expr} } case 501: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2606 +//line sql.y:2608 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].expr} } case 502: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2610 +//line sql.y:2612 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].expr} } case 503: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2615 +//line sql.y:2617 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].expr} } case 504: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2620 +//line sql.y:2622 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].expr} } case 505: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2625 +//line sql.y:2627 { yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].expr} } case 506: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2629 +//line sql.y:2631 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } case 507: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2633 +//line sql.y:2635 { yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } case 510: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2643 +//line sql.y:2645 { yyVAL.expr = yyDollar[2].expr } case 511: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2653 +//line sql.y:2655 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } case 512: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2657 +//line sql.y:2659 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } case 513: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2661 +//line sql.y:2663 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } case 514: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2665 +//line sql.y:2667 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } case 515: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2669 +//line sql.y:2671 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } case 516: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2673 +//line sql.y:2675 { yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } case 517: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2679 +//line sql.y:2681 { yyVAL.str = "" } case 518: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2683 +//line sql.y:2685 { yyVAL.str = BooleanModeStr } case 519: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2687 +//line sql.y:2689 { yyVAL.str = NaturalLanguageModeStr } case 520: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2691 +//line sql.y:2693 { yyVAL.str = NaturalLanguageModeWithQueryExpansionStr } case 521: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2695 +//line sql.y:2697 { yyVAL.str = QueryExpansionStr } case 522: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2701 +//line sql.y:2703 { yyVAL.str = string(yyDollar[1].bytes) } case 523: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2705 +//line sql.y:2707 { yyVAL.str = string(yyDollar[1].bytes) } case 524: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2711 +//line sql.y:2713 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 525: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2715 +//line sql.y:2717 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: yyDollar[3].str, Operator: CharacterSetStr} } case 526: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2719 +//line sql.y:2721 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal, Charset: string(yyDollar[3].bytes)} } case 527: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2723 +//line sql.y:2725 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 528: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2727 +//line sql.y:2729 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 529: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2731 +//line sql.y:2733 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length @@ -6677,169 +6683,169 @@ yydefault: } case 530: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2737 +//line sql.y:2739 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 531: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2741 +//line sql.y:2743 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 532: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2745 +//line sql.y:2747 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 533: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2749 +//line sql.y:2751 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 534: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2753 +//line sql.y:2755 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].sqlVal} } case 535: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2757 +//line sql.y:2759 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 536: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2761 +//line sql.y:2763 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } case 537: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2766 +//line sql.y:2768 { yyVAL.expr = nil } case 538: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2770 +//line sql.y:2772 { yyVAL.expr = yyDollar[1].expr } case 539: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2775 +//line sql.y:2777 { yyVAL.str = string("") } case 540: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2779 +//line sql.y:2781 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } case 541: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2785 +//line sql.y:2787 { yyVAL.whens = []*When{yyDollar[1].when} } case 542: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2789 +//line sql.y:2791 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } case 543: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2795 +//line sql.y:2797 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } case 544: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2800 +//line sql.y:2802 { yyVAL.expr = nil } case 545: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2804 +//line sql.y:2806 { yyVAL.expr = yyDollar[2].expr } case 546: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2810 +//line sql.y:2812 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } case 547: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2814 +//line sql.y:2816 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } case 548: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2818 +//line sql.y:2820 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } case 549: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2824 +//line sql.y:2826 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } case 550: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2828 +//line sql.y:2830 { yyVAL.expr = NewHexVal(yyDollar[1].bytes) } case 551: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2832 +//line sql.y:2834 { yyVAL.expr = NewBitVal(yyDollar[1].bytes) } case 552: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2836 +//line sql.y:2838 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } case 553: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2840 +//line sql.y:2842 { yyVAL.expr = NewFloatVal(yyDollar[1].bytes) } case 554: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2844 +//line sql.y:2846 { yyVAL.expr = NewHexNum(yyDollar[1].bytes) } case 555: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2848 +//line sql.y:2850 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } case 556: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2852 +//line sql.y:2854 { yyVAL.expr = &NullVal{} } case 557: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2858 +//line sql.y:2860 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -6850,237 +6856,237 @@ yydefault: } case 558: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2867 +//line sql.y:2869 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } case 559: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2871 +//line sql.y:2873 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } case 560: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2876 +//line sql.y:2878 { yyVAL.exprs = nil } case 561: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2880 +//line sql.y:2882 { yyVAL.exprs = yyDollar[3].exprs } case 562: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2885 +//line sql.y:2887 { yyVAL.expr = nil } case 563: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2889 +//line sql.y:2891 { yyVAL.expr = yyDollar[2].expr } case 564: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2894 +//line sql.y:2896 { yyVAL.orderBy = nil } case 565: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2898 +//line sql.y:2900 { yyVAL.orderBy = yyDollar[3].orderBy } case 566: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2904 +//line sql.y:2906 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } case 567: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2908 +//line sql.y:2910 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } case 568: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2914 +//line sql.y:2916 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str} } case 569: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2919 +//line sql.y:2921 { yyVAL.str = AscScr } case 570: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2923 +//line sql.y:2925 { yyVAL.str = AscScr } case 571: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2927 +//line sql.y:2929 { yyVAL.str = DescScr } case 572: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2932 +//line sql.y:2934 { yyVAL.limit = nil } case 573: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2936 +//line sql.y:2938 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } case 574: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2940 +//line sql.y:2942 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } case 575: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2944 +//line sql.y:2946 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } case 576: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2949 +//line sql.y:2951 { yyVAL.str = "" } case 577: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2953 +//line sql.y:2955 { yyVAL.str = ForUpdateStr } case 578: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2957 +//line sql.y:2959 { yyVAL.str = ShareModeStr } case 579: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2970 +//line sql.y:2972 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } case 580: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2974 +//line sql.y:2976 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } case 581: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2978 +//line sql.y:2980 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt} } case 582: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2983 +//line sql.y:2985 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } case 583: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2987 +//line sql.y:2989 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } case 584: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2991 +//line sql.y:2993 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt} } case 585: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2998 +//line sql.y:3000 { yyVAL.columns = Columns{yyDollar[1].colIdent} } case 586: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3002 +//line sql.y:3004 { yyVAL.columns = Columns{yyDollar[3].colIdent} } case 587: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3006 +//line sql.y:3008 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } case 588: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3010 +//line sql.y:3012 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } case 589: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3015 +//line sql.y:3017 { yyVAL.updateExprs = nil } case 590: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3019 +//line sql.y:3021 { yyVAL.updateExprs = yyDollar[5].updateExprs } case 591: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3025 +//line sql.y:3027 { yyVAL.values = Values{yyDollar[1].valTuple} } case 592: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3029 +//line sql.y:3031 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } case 593: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3035 +//line sql.y:3037 { yyVAL.valTuple = yyDollar[1].valTuple } case 594: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3039 +//line sql.y:3041 { yyVAL.valTuple = ValTuple{} } case 595: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3045 +//line sql.y:3047 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } case 596: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3051 +//line sql.y:3053 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = &ParenExpr{yyDollar[1].valTuple[0]} @@ -7090,277 +7096,277 @@ yydefault: } case 597: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3061 +//line sql.y:3063 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } case 598: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3065 +//line sql.y:3067 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } case 599: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3071 +//line sql.y:3073 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } case 600: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3077 +//line sql.y:3079 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } case 601: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3081 +//line sql.y:3083 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } case 602: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3087 +//line sql.y:3089 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("on"))} } case 603: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3091 +//line sql.y:3093 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("off"))} } case 604: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3095 +//line sql.y:3097 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].expr} } case 605: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3099 +//line sql.y:3101 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Expr: yyDollar[2].expr} } case 607: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3106 +//line sql.y:3108 { yyVAL.bytes = []byte("charset") } case 609: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3113 +//line sql.y:3115 { yyVAL.expr = NewStrVal([]byte(yyDollar[1].colIdent.String())) } case 610: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3117 +//line sql.y:3119 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } case 611: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3121 +//line sql.y:3123 { yyVAL.expr = &Default{} } case 614: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3130 +//line sql.y:3132 { yyVAL.byt = 0 } case 615: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3132 +//line sql.y:3134 { yyVAL.byt = 1 } case 616: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3135 +//line sql.y:3137 { yyVAL.empty = struct{}{} } case 617: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3137 +//line sql.y:3139 { yyVAL.empty = struct{}{} } case 618: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3140 +//line sql.y:3142 { yyVAL.str = "" } case 619: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3142 +//line sql.y:3144 { yyVAL.str = IgnoreStr } case 620: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3146 +//line sql.y:3148 { yyVAL.empty = struct{}{} } case 621: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3148 +//line sql.y:3150 { yyVAL.empty = struct{}{} } case 622: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3150 +//line sql.y:3152 { yyVAL.empty = struct{}{} } case 623: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3152 +//line sql.y:3154 { yyVAL.empty = struct{}{} } case 624: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3154 +//line sql.y:3156 { yyVAL.empty = struct{}{} } case 625: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3156 +//line sql.y:3158 { yyVAL.empty = struct{}{} } case 626: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3158 +//line sql.y:3160 { yyVAL.empty = struct{}{} } case 627: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3160 +//line sql.y:3162 { yyVAL.empty = struct{}{} } case 628: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3162 +//line sql.y:3164 { yyVAL.empty = struct{}{} } case 629: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3164 +//line sql.y:3166 { yyVAL.empty = struct{}{} } case 630: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3167 +//line sql.y:3169 { yyVAL.empty = struct{}{} } case 631: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3169 +//line sql.y:3171 { yyVAL.empty = struct{}{} } case 632: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3171 +//line sql.y:3173 { yyVAL.empty = struct{}{} } case 633: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3175 +//line sql.y:3177 { yyVAL.empty = struct{}{} } case 634: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3177 +//line sql.y:3179 { yyVAL.empty = struct{}{} } case 635: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3180 +//line sql.y:3182 { yyVAL.empty = struct{}{} } case 636: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3182 +//line sql.y:3184 { yyVAL.empty = struct{}{} } case 637: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3184 +//line sql.y:3186 { yyVAL.empty = struct{}{} } case 638: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3187 +//line sql.y:3189 { yyVAL.colIdent = ColIdent{} } case 639: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3189 +//line sql.y:3191 { yyVAL.colIdent = yyDollar[2].colIdent } case 640: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3193 +//line sql.y:3195 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } case 641: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3197 +//line sql.y:3199 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } case 643: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3204 +//line sql.y:3206 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } case 644: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3210 +//line sql.y:3212 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } case 645: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3214 +//line sql.y:3216 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } case 647: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3221 +//line sql.y:3223 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } case 935: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3534 +//line sql.y:3536 { if incNesting(yylex) { yylex.Error("max nesting level reached") @@ -7369,31 +7375,31 @@ yydefault: } case 936: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3543 +//line sql.y:3545 { decNesting(yylex) } case 937: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3548 +//line sql.y:3550 { skipToEnd(yylex) } case 938: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3553 +//line sql.y:3555 { skipToEnd(yylex) } case 939: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3557 +//line sql.y:3559 { skipToEnd(yylex) } case 940: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3561 +//line sql.y:3563 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index d1828c91e8e..a80d99ca2b6 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -1502,13 +1502,15 @@ show_statement: $$ = &Show{Type: string($2) + " " + string($3)} } /* SHOW CHARACTER SET and SHOW CHARSET are equivalent */ -| SHOW CHARACTER SET ddl_skip_to_end +| SHOW CHARACTER SET like_or_where_opt { - $$ = &Show{Type: CharsetStr} + showTablesOpt := &ShowTablesOpt{Filter: $4} + $$ = &Show{Type: CharsetStr, ShowTablesOpt: showTablesOpt} } -| SHOW CHARSET ddl_skip_to_end +| SHOW CHARSET like_or_where_opt { - $$ = &Show{Type: string($2)} + showTablesOpt := &ShowTablesOpt{Filter: $3} + $$ = &Show{Type: string($2), ShowTablesOpt: showTablesOpt} } | SHOW CREATE DATABASE ddl_skip_to_end { diff --git a/go/vt/vtgate/executor.go b/go/vt/vtgate/executor.go index 725ec31f2c9..ec9e8312066 100644 --- a/go/vt/vtgate/executor.go +++ b/go/vt/vtgate/executor.go @@ -22,6 +22,7 @@ import ( "errors" "fmt" "net/http" + "regexp" "sort" "strings" "sync" @@ -67,6 +68,13 @@ var ( queriesRoutedByTable = stats.NewCountersWithMultiLabels("QueriesRoutedByTable", "Queries routed from vtgate to vttablet by plan type, keyspace and table", []string{"Plan", "Keyspace", "Table"}) ) +const ( + utf8 = "utf8" + utf8mb4 = "utf8mb4" + both = "both" + charset = "charset" +) + func init() { topoproto.TabletTypeVar(&defaultTabletType, "default_tablet_type", topodatapb.TabletType_MASTER, "The default tablet type to set for queries, when one is not explicitly selected") } @@ -838,23 +846,20 @@ func (e *Executor) handleShow(ctx context.Context, safeSession *SafeSession, sql fields := buildVarCharFields("Charset", "Description", "Default collation") maxLenField := &querypb.Field{Name: "Maxlen", Type: sqltypes.Int32} fields = append(fields, maxLenField) - rows := make([][]sqltypes.Value, 0, 4) - row0 := buildVarCharRow( - "utf8", - "UTF-8 Unicode", - "utf8_general_ci") - row0 = append(row0, sqltypes.NewInt32(3)) - row1 := buildVarCharRow( - "utf8mb4", - "UTF-8 Unicode", - "utf8mb4_general_ci") - row1 = append(row1, sqltypes.NewInt32(4)) - rows = append(rows, row0, row1) + + charsets := []string{utf8, utf8mb4} + filter := show.ShowTablesOpt.Filter + rows, err := generateCharsetRows(filter, charsets) + if err != nil { + return nil, err + } + rowsAffected := uint64(len(rows)) + return &sqltypes.Result{ Fields: fields, Rows: rows, - RowsAffected: 2, - }, nil + RowsAffected: rowsAffected, + }, err case "create table": if destKeyspace == "" && show.HasTable() { // For "show create table", if there isn't a targeted keyspace already @@ -1538,6 +1543,95 @@ func buildVarCharRow(values ...string) []sqltypes.Value { return row } +func generateCharsetRows(showFilter *sqlparser.ShowFilter, colNames []string) ([][]sqltypes.Value, error) { + if showFilter == nil { + return buildCharsetRows(both), nil + } + + var filteredColName string + var err error + + if showFilter.Like != "" { + filteredColName, err = checkLikeOpt(showFilter.Like, colNames) + if err != nil { + return nil, err + } + + } else { + cmpExp, ok := showFilter.Filter.(*sqlparser.ComparisonExpr) + if !ok { + return nil, vterrors.Errorf(vtrpcpb.Code_INVALID_ARGUMENT, "expect a 'LIKE' or '=' expression") + } + + left, ok := cmpExp.Left.(*sqlparser.ColName) + if !ok { + return nil, vterrors.Errorf(vtrpcpb.Code_INVALID_ARGUMENT, "expect left side to be 'charset'") + } + leftOk := left.Name.EqualString(charset) + + if leftOk { + sqlVal, ok := cmpExp.Right.(*sqlparser.SQLVal) + if !ok { + return nil, vterrors.Errorf(vtrpcpb.Code_INVALID_ARGUMENT, "we expect the right side to be a string") + } + rightString := string(sqlVal.Val) + + switch cmpExp.Operator { + case sqlparser.EqualStr: + for _, colName := range colNames { + if rightString == colName { + filteredColName = colName + } + } + case sqlparser.LikeStr: + filteredColName, err = checkLikeOpt(rightString, colNames) + } + } + + } + + return buildCharsetRows(filteredColName), nil +} + +func buildCharsetRows(colName string) [][]sqltypes.Value { + row0 := buildVarCharRow( + "utf8", + "UTF-8 Unicode", + "utf8_general_ci") + row0 = append(row0, sqltypes.NewInt32(3)) + row1 := buildVarCharRow( + "utf8mb4", + "UTF-8 Unicode", + "utf8mb4_general_ci") + row1 = append(row1, sqltypes.NewInt32(4)) + + switch colName { + case utf8: + return [][]sqltypes.Value{row0} + case utf8mb4: + return [][]sqltypes.Value{row1} + case both: + return [][]sqltypes.Value{row0, row1} + } + + return [][]sqltypes.Value{} +} + +func checkLikeOpt(likeOpt string, colNames []string) (string, error) { + likeRegexp := strings.ReplaceAll(likeOpt, "%", ".*") + for _, v := range colNames { + match, err := regexp.MatchString(likeRegexp, v) + if err != nil { + return "", err + } + if match { + return v, nil + } + } + + return "", nil +} + // Prepare executes a prepare statements. func (e *Executor) Prepare(ctx context.Context, method string, safeSession *SafeSession, sql string, bindVars map[string]*querypb.BindVariable) (fld []*querypb.Field, err error) { logStats := NewLogStats(ctx, method, sql, bindVars) diff --git a/go/vt/vtgate/executor_test.go b/go/vt/vtgate/executor_test.go index 683b6b3a2e2..115bf89da7a 100644 --- a/go/vt/vtgate/executor_test.go +++ b/go/vt/vtgate/executor_test.go @@ -49,6 +49,7 @@ import ( vtrpcpb "vitess.io/vitess/go/vt/proto/vtrpc" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestExecutorResultsExceeded(t *testing.T) { @@ -829,16 +830,43 @@ func TestExecutorShow(t *testing.T) { t.Errorf("Got: %v. Want: %v", lastQuery, wantQuery) } - _, err = executor.Execute(context.Background(), "TestExecute", session, fmt.Sprintf("show full columns from unknown from %v", KsTestUnsharded), nil) - if err != nil { - t.Errorf("Unexpected error: %v", err) + for _, query := range []string{"show charset", "show character set"} { + qr, err := executor.Execute(context.Background(), "TestExecute", session, query, nil) + require.NoError(t, err) + wantqr := &sqltypes.Result{ + Fields: append(buildVarCharFields("Charset", "Description", "Default collation"), &querypb.Field{Name: "Maxlen", Type: sqltypes.Int32}), + Rows: [][]sqltypes.Value{ + append(buildVarCharRow( + "utf8", + "UTF-8 Unicode", + "utf8_general_ci"), sqltypes.NewInt32(3)), + append(buildVarCharRow( + "utf8mb4", + "UTF-8 Unicode", + "utf8mb4_general_ci"), + sqltypes.NewInt32(4)), + }, + RowsAffected: 2, + } + if !reflect.DeepEqual(qr, wantqr) { + t.Errorf("%v:\n%+v, want\n%+v", query, qr, wantqr) + } } - - for _, query := range []string{"show charset", "show charset like '%foo'", "show character set", "show character set like '%foo'"} { + for _, query := range []string{"show charset like '%foo'", "show character set like 'foo%'", "show charset like 'foo%'", "show character set where foo like 'utf8'", "show character set where charset like '%foo'", "show charset where charset = '%foo'"} { qr, err := executor.Execute(context.Background(), "TestExecute", session, query, nil) - if err != nil { - t.Error(err) + require.NoError(t, err) + wantqr := &sqltypes.Result{ + Fields: append(buildVarCharFields("Charset", "Description", "Default collation"), &querypb.Field{Name: "Maxlen", Type: sqltypes.Int32}), + Rows: [][]sqltypes.Value{}, + RowsAffected: 0, + } + if !reflect.DeepEqual(qr, wantqr) { + t.Errorf("%v:\n%+v, want\n%+v", query, qr, wantqr) } + } + for _, query := range []string{"show charset like 'utf8'", "show character set like 'utf8'", "show charset where charset = 'utf8'", "show character set where charset = 'utf8'"} { + qr, err := executor.Execute(context.Background(), "TestExecute", session, query, nil) + require.NoError(t, err) wantqr := &sqltypes.Result{ Fields: append(buildVarCharFields("Charset", "Description", "Default collation"), &querypb.Field{Name: "Maxlen", Type: sqltypes.Int32}), Rows: [][]sqltypes.Value{ @@ -846,18 +874,32 @@ func TestExecutorShow(t *testing.T) { "utf8", "UTF-8 Unicode", "utf8_general_ci"), sqltypes.NewInt32(3)), + }, + RowsAffected: 1, + } + if !reflect.DeepEqual(qr, wantqr) { + t.Errorf("%v:\n%+v, want\n%+v", query, qr, wantqr) + } + } + for _, query := range []string{"show charset like 'utf8mb4'", "show character set like 'utf8mb4'", "show charset where charset = 'utf8mb4'", "show character set where charset = 'utf8mb4'"} { + qr, err := executor.Execute(context.Background(), "TestExecute", session, query, nil) + require.NoError(t, err) + wantqr := &sqltypes.Result{ + Fields: append(buildVarCharFields("Charset", "Description", "Default collation"), &querypb.Field{Name: "Maxlen", Type: sqltypes.Int32}), + Rows: [][]sqltypes.Value{ append(buildVarCharRow( "utf8mb4", "UTF-8 Unicode", "utf8mb4_general_ci"), sqltypes.NewInt32(4)), }, - RowsAffected: 2, + RowsAffected: 1, } if !reflect.DeepEqual(qr, wantqr) { t.Errorf("%v:\n%+v, want\n%+v", query, qr, wantqr) } } + qr, err = executor.Execute(context.Background(), "TestExecute", session, "show engines", nil) if err != nil { t.Error(err) @@ -2624,6 +2666,62 @@ func TestDebugVSchema(t *testing.T) { } } +func TestGenerateCharsetRows(t *testing.T) { + rows := make([][]sqltypes.Value, 0, 4) + rows0 := [][]sqltypes.Value{ + append(buildVarCharRow( + "utf8", + "UTF-8 Unicode", + "utf8_general_ci"), + sqltypes.NewInt32(3)), + } + rows1 := [][]sqltypes.Value{ + append(buildVarCharRow( + "utf8mb4", + "UTF-8 Unicode", + "utf8mb4_general_ci"), + sqltypes.NewInt32(4)), + } + rows2 := [][]sqltypes.Value{ + append(buildVarCharRow( + "utf8", + "UTF-8 Unicode", + "utf8_general_ci"), + sqltypes.NewInt32(3)), + append(buildVarCharRow( + "utf8mb4", + "UTF-8 Unicode", + "utf8mb4_general_ci"), + sqltypes.NewInt32(4)), + } + + testcases := []struct { + input string + expected [][]sqltypes.Value + }{ + {input: "show charset", expected: rows2}, + {input: "show character set", expected: rows2}, + {input: "show charset where charset like 'foo%'", expected: rows}, + {input: "show charset where charset like 'utf8%'", expected: rows0}, + {input: "show charset where charset = 'utf8'", expected: rows0}, + {input: "show charset where charset = 'foo%'", expected: rows}, + {input: "show charset where charset = 'utf8mb4'", expected: rows1}, + } + + charsets := []string{"utf8", "utf8mb4"} + + for _, tc := range testcases { + t.Run(tc.input, func(t *testing.T) { + stmt, err := sqlparser.Parse(tc.input) + require.NoError(t, err) + match := stmt.(*sqlparser.Show) + filter := match.ShowTablesOpt.Filter + actual, err := generateCharsetRows(filter, charsets) + require.Equal(t, tc.expected, actual) + }) + } +} + func makeComments(text string) sqlparser.MarginComments { return sqlparser.MarginComments{Trailing: text} }