From 5ff205ff8ea4027d3d1494b5d7525b0f604fe247 Mon Sep 17 00:00:00 2001 From: David Weitzman Date: Mon, 18 Mar 2019 12:03:35 -0700 Subject: [PATCH] vtgate executor: route "show create table" to the user-provided or vschema-indicated keyspace Previously the sql parser treated everything after `CREATE TABLE` as opaque. This change updates the sql parser to look at the create table argument to help direct queries to the appropriate keyspace. Signed-off-by: David Weitzman --- go/vt/sqlparser/ast.go | 10 + go/vt/sqlparser/parse_test.go | 2 +- go/vt/sqlparser/sql.go | 1812 ++++++++++++++++----------------- go/vt/sqlparser/sql.y | 4 +- go/vt/vtgate/executor.go | 19 + go/vt/vtgate/executor_test.go | 28 + 6 files changed, 962 insertions(+), 913 deletions(-) diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 631e26ec499..fc7c4b45e8d 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -1517,6 +1517,7 @@ func (f *ForeignKeyDefinition) walkSubtree(visit Visit) error { type Show struct { Type string OnTable TableName + Table TableName ShowTablesOpt *ShowTablesOpt Scope string ShowCollationFilterOpt *Expr @@ -1547,6 +1548,9 @@ func (node *Show) Format(buf *TrackedBuffer) { if node.Type == "collation" && node.ShowCollationFilterOpt != nil { buf.Myprintf(" where %v", *node.ShowCollationFilterOpt) } + if node.HasTable() { + buf.Myprintf(" %v", node.Table) + } } // HasOnTable returns true if the show statement has an "on" clause @@ -1554,6 +1558,12 @@ func (node *Show) HasOnTable() bool { return node.OnTable.Name.v != "" } +// HasTable returns true if the show statement has a parsed table name. +// Not all show statements parse table names. +func (node *Show) HasTable() bool { + return node.Table.Name.v != "" +} + func (node *Show) walkSubtree(visit Visit) error { return nil } diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index fc1c98008b6..4ba5574c629 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1107,7 +1107,7 @@ var ( output: "show create procedure", }, { input: "show create table t", - output: "show create table", + output: "show create table t", }, { input: "show create trigger t", output: "show create trigger", diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 446f7e38514..65cb1ea8f66 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -711,424 +711,311 @@ var yyExca = [...]int{ const yyPrivate = 57344 -const yyLast = 12766 +const yyLast = 12688 var yyAct = [...]int{ - 269, 1432, 1386, 567, 1101, 1012, 1216, 273, 1422, 863, - 1329, 1294, 1156, 1030, 1190, 1013, 286, 247, 840, 1153, - 892, 299, 1157, 906, 1281, 838, 942, 862, 872, 57, - 566, 3, 81, 1036, 1169, 1163, 209, 1124, 339, 209, - 791, 859, 238, 781, 1055, 788, 721, 969, 1072, 842, - 1081, 876, 809, 827, 624, 758, 607, 499, 505, 790, - 902, 623, 333, 820, 440, 511, 271, 209, 81, 951, - 519, 256, 209, 330, 209, 328, 56, 300, 51, 1425, - 1409, 1420, 246, 1396, 1417, 1217, 1408, 239, 240, 241, - 242, 1395, 1146, 245, 581, 1253, 445, 61, 1185, 1186, - 1184, 582, 608, 473, 260, 853, 925, 1361, 532, 531, - 541, 542, 534, 535, 536, 537, 538, 539, 540, 533, - 924, 493, 543, 63, 64, 65, 66, 67, 471, 51, - 204, 200, 201, 202, 886, 244, 311, 252, 317, 318, - 315, 316, 314, 313, 312, 854, 855, 625, 929, 626, - 243, 1125, 319, 320, 489, 1043, 1063, 923, 1042, 885, - 1284, 1044, 490, 487, 488, 196, 458, 198, 1300, 475, - 893, 477, 1236, 1234, 237, 482, 483, 1104, 1103, 492, - 696, 694, 1419, 1416, 1387, 1100, 821, 1379, 1127, 877, - 1330, 1440, 459, 1031, 1033, 447, 336, 209, 198, 1105, - 209, 474, 476, 1332, 700, 687, 209, 920, 917, 918, - 1088, 916, 209, 879, 695, 81, 1338, 81, 1179, 81, - 81, 1129, 81, 1133, 81, 1128, 1178, 1126, 1436, 275, - 1177, 443, 1131, 81, 1368, 879, 697, 450, 211, 1086, - 879, 1130, 927, 930, 199, 936, 555, 556, 935, 860, - 1264, 203, 1097, 1111, 1132, 1134, 987, 963, 1099, 730, - 197, 523, 465, 81, 1056, 1202, 543, 727, 944, 441, - 1032, 1331, 533, 518, 722, 543, 517, 516, 922, 1362, - 507, 1377, 1347, 508, 1167, 627, 495, 496, 810, 472, - 1148, 441, 470, 518, 470, 689, 470, 470, 893, 470, - 921, 470, 1382, 810, 1394, 996, 1087, 765, 1061, 878, - 470, 1092, 1089, 1082, 1090, 1085, 1203, 1339, 1337, 1083, - 1084, 763, 764, 762, 439, 513, 209, 209, 209, 1400, - 51, 878, 81, 1091, 1434, 1441, 878, 1435, 81, 1433, - 1290, 875, 873, 926, 874, 552, 943, 882, 554, 871, - 877, 509, 606, 883, 1098, 723, 1096, 516, 928, 455, - 536, 537, 538, 539, 540, 533, 1375, 1402, 543, 461, - 462, 463, 1289, 518, 1442, 1076, 565, 446, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 70, 580, 583, - 583, 583, 589, 583, 583, 589, 583, 597, 598, 599, - 600, 601, 602, 615, 612, 621, 54, 584, 586, 588, - 590, 592, 594, 595, 585, 587, 761, 591, 593, 782, - 596, 783, 452, 71, 453, 1075, 1064, 454, 1378, 613, - 541, 542, 534, 535, 536, 537, 538, 539, 540, 533, - 209, 1045, 543, 1046, 981, 81, 980, 748, 750, 751, - 209, 209, 81, 749, 448, 449, 209, 22, 1311, 209, - 336, 195, 209, 517, 516, 206, 209, 1287, 81, 81, - 1108, 733, 734, 81, 81, 81, 81, 81, 81, 1073, - 518, 1219, 982, 81, 81, 534, 535, 536, 537, 538, - 539, 540, 533, 1056, 812, 543, 329, 498, 298, 1051, - 553, 442, 784, 444, 709, 706, 517, 516, 960, 961, - 962, 81, 705, 1150, 690, 209, 688, 251, 685, 517, - 516, 81, 470, 518, 467, 735, 325, 326, 460, 470, - 79, 1344, 517, 516, 701, 707, 518, 1335, 1418, 1404, - 498, 729, 1335, 1390, 1343, 470, 470, 1199, 759, 518, - 470, 470, 470, 470, 470, 470, 611, 1335, 498, 880, - 470, 470, 756, 1335, 1369, 81, 338, 531, 541, 542, - 534, 535, 536, 537, 538, 539, 540, 533, 728, 823, - 543, 737, 800, 804, 1335, 1334, 1279, 1278, 811, 1266, - 498, 752, 1166, 754, 1154, 517, 516, 1166, 81, 81, - 795, 1263, 498, 1102, 824, 209, 289, 288, 291, 292, - 293, 294, 518, 209, 209, 290, 295, 209, 209, 1209, - 1208, 81, 785, 786, 1205, 1206, 451, 1205, 1204, 457, - 796, 797, 51, 618, 81, 464, 806, 975, 498, 824, - 498, 466, 848, 807, 24, 24, 817, 569, 793, 498, - 634, 633, 755, 847, 793, 617, 1259, 1346, 1114, 816, - 1037, 818, 819, 1037, 24, 991, 989, 58, 1007, 894, - 895, 896, 1008, 1316, 824, 619, 1207, 617, 846, 1047, - 852, 986, 1001, 850, 851, 984, 1000, 975, 209, 81, - 839, 81, 54, 54, 612, 81, 81, 209, 209, 867, - 209, 209, 975, 824, 209, 81, 1166, 975, 908, 990, - 988, 617, 54, 338, 620, 338, 731, 338, 338, 699, - 338, 209, 338, 209, 209, 985, 209, 253, 910, 983, - 54, 338, 829, 832, 833, 834, 830, 1410, 831, 835, - 1296, 497, 904, 905, 743, 887, 1271, 907, 1195, 336, - 1170, 1171, 948, 1050, 903, 605, 760, 614, 898, 897, - 1427, 521, 864, 1423, 1197, 1173, 470, 1154, 470, 756, - 1077, 725, 703, 1176, 1026, 54, 833, 834, 888, 889, - 890, 891, 470, 1024, 759, 1175, 1022, 1021, 1025, 1020, - 952, 1023, 1414, 953, 899, 900, 901, 257, 258, 1407, - 1110, 512, 959, 532, 531, 541, 542, 534, 535, 536, - 537, 538, 539, 540, 533, 1412, 510, 543, 965, 958, - 957, 1068, 500, 632, 468, 209, 209, 209, 209, 209, - 338, 1014, 1384, 964, 501, 1060, 629, 209, 1383, 1314, - 209, 1058, 611, 1052, 209, 1257, 611, 1292, 209, 974, - 913, 1009, 702, 837, 254, 255, 970, 512, 956, 755, - 248, 995, 1351, 81, 249, 58, 955, 993, 1350, 635, - 795, 1298, 1048, 1038, 1037, 491, 1429, 1428, 1429, 691, - 692, 1015, 1039, 720, 1018, 698, 266, 514, 329, 1027, - 1365, 704, 1285, 1035, 726, 60, 62, 616, 1010, 1011, - 55, 1, 612, 612, 612, 612, 612, 1040, 1421, 1065, - 1066, 81, 81, 1218, 1293, 919, 1385, 839, 1328, 1034, - 1189, 1057, 870, 861, 69, 612, 1053, 1054, 1016, 1017, - 438, 1019, 68, 1376, 1067, 869, 1069, 1070, 1071, 868, - 81, 1336, 1283, 338, 744, 881, 1062, 1074, 884, 1196, - 338, 1059, 1381, 640, 638, 209, 639, 637, 1080, 642, - 641, 636, 222, 331, 81, 836, 338, 338, 1093, 628, - 909, 338, 338, 338, 338, 338, 338, 515, 72, 1095, - 1094, 338, 338, 915, 485, 486, 224, 551, 1107, 470, - 954, 864, 760, 1041, 829, 832, 833, 834, 830, 337, - 831, 835, 1161, 736, 1170, 1171, 732, 504, 1349, 739, - 1117, 81, 81, 1155, 1118, 1014, 1123, 470, 1297, 521, - 1136, 994, 338, 1147, 578, 1135, 756, 808, 274, 747, - 1158, 287, 284, 285, 822, 81, 738, 1006, 525, 272, - 264, 1160, 610, 603, 828, 826, 1165, 849, 81, 825, - 81, 81, 1172, 1174, 611, 611, 611, 611, 611, 1188, - 1168, 792, 794, 787, 609, 1113, 1181, 1252, 1360, 611, - 1180, 742, 1183, 802, 802, 1187, 26, 611, 209, 802, - 1192, 59, 259, 19, 18, 17, 1159, 20, 51, 16, - 15, 14, 1116, 456, 30, 209, 814, 815, 1193, 1194, - 21, 81, 13, 12, 81, 81, 209, 1200, 1201, 11, - 10, 9, 81, 8, 7, 209, 1141, 911, 6, 338, - 5, 4, 250, 23, 1211, 2, 933, 934, 0, 937, - 938, 0, 338, 939, 1223, 0, 1212, 0, 1214, 0, - 1225, 0, 0, 0, 0, 0, 0, 1224, 0, 0, - 941, 0, 0, 1232, 0, 947, 0, 0, 0, 0, - 0, 0, 0, 557, 558, 559, 560, 561, 562, 563, - 564, 0, 0, 0, 1014, 1258, 864, 0, 864, 0, - 0, 0, 1268, 0, 0, 0, 0, 338, 81, 338, - 0, 0, 612, 931, 932, 1267, 81, 1048, 0, 1277, - 0, 0, 0, 338, 0, 0, 0, 262, 0, 0, - 0, 81, 0, 0, 0, 0, 0, 0, 81, 0, - 0, 0, 0, 0, 1251, 1286, 0, 1288, 0, 338, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1299, 0, 0, 0, 1273, 1274, 1275, 0, 0, - 1229, 1230, 0, 1231, 81, 81, 1233, 81, 1235, 0, - 0, 0, 81, 0, 81, 81, 81, 209, 0, 972, - 81, 1158, 1315, 973, 0, 1322, 0, 0, 470, 0, - 977, 978, 979, 1317, 1333, 1327, 1323, 81, 1324, 1325, - 1326, 992, 1340, 0, 0, 0, 998, 0, 999, 0, - 0, 1002, 1003, 1004, 1005, 0, 864, 0, 0, 0, - 0, 1348, 802, 0, 0, 0, 1280, 0, 1341, 1366, - 1342, 0, 0, 1029, 0, 0, 81, 1159, 1158, 1374, - 1318, 1373, 0, 0, 611, 0, 1295, 81, 81, 1367, - 0, 0, 0, 0, 0, 1392, 0, 1389, 1388, 0, - 0, 338, 0, 0, 0, 0, 0, 0, 0, 81, - 1345, 1397, 0, 1014, 0, 0, 0, 0, 0, 0, - 209, 0, 0, 0, 1112, 0, 0, 0, 81, 0, - 219, 0, 0, 0, 1159, 1406, 51, 0, 0, 0, - 0, 1249, 498, 0, 0, 0, 0, 1411, 0, 1078, - 338, 81, 757, 1413, 232, 766, 767, 768, 769, 770, - 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, - 1426, 1437, 0, 0, 0, 1415, 0, 0, 338, 532, - 531, 541, 542, 534, 535, 536, 537, 538, 539, 540, - 533, 0, 0, 543, 0, 0, 502, 506, 0, 0, - 0, 0, 338, 0, 0, 212, 0, 0, 0, 1122, - 813, 0, 215, 524, 0, 1295, 864, 0, 0, 0, - 223, 218, 0, 0, 0, 0, 338, 0, 0, 0, - 503, 0, 0, 469, 0, 0, 0, 1424, 0, 0, - 0, 0, 0, 0, 0, 0, 802, 1210, 568, 1162, - 1164, 0, 221, 0, 0, 0, 0, 579, 231, 0, - 0, 0, 0, 0, 1213, 0, 207, 0, 0, 236, - 0, 0, 0, 1164, 0, 1222, 0, 0, 0, 0, - 0, 0, 0, 0, 213, 0, 338, 0, 338, 1191, - 0, 0, 0, 0, 263, 0, 0, 207, 0, 0, - 0, 0, 207, 0, 207, 0, 0, 0, 0, 0, - 0, 225, 216, 0, 226, 227, 228, 230, 0, 229, - 235, 0, 0, 0, 217, 220, 0, 214, 234, 233, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1215, - 0, 0, 1220, 1221, 0, 0, 0, 0, 0, 0, - 338, 0, 1226, 0, 0, 0, 0, 0, 0, 1228, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1237, 1238, 1239, 0, 1242, 0, 0, 1245, 0, 1248, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 966, 967, 968, 0, 1260, 1261, 1262, 0, 1265, 0, - 0, 0, 0, 0, 0, 802, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1276, 1250, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 338, 207, 0, 0, - 207, 1246, 498, 0, 1282, 0, 207, 0, 0, 724, - 0, 0, 207, 0, 0, 0, 0, 0, 0, 338, - 478, 0, 479, 480, 0, 481, 338, 484, 0, 0, - 0, 0, 0, 0, 745, 746, 494, 0, 0, 532, - 531, 541, 542, 534, 535, 536, 537, 538, 539, 540, - 533, 0, 0, 543, 0, 0, 0, 1310, 0, 0, + 269, 1432, 1422, 1386, 1101, 1012, 1216, 1281, 567, 1294, + 1329, 299, 1030, 1156, 286, 273, 1190, 863, 840, 247, + 57, 906, 942, 1013, 1157, 1153, 1055, 862, 1169, 1163, + 1036, 238, 81, 872, 1124, 892, 209, 339, 969, 209, + 791, 788, 859, 1081, 471, 300, 51, 781, 721, 1072, + 838, 624, 842, 827, 566, 3, 607, 876, 758, 809, + 499, 790, 505, 902, 440, 820, 333, 209, 81, 623, + 271, 951, 209, 608, 209, 511, 239, 240, 241, 242, + 519, 328, 245, 256, 330, 311, 582, 317, 318, 315, + 316, 314, 313, 312, 56, 1425, 1409, 51, 1420, 1396, + 1417, 319, 320, 1217, 260, 252, 246, 581, 1408, 1395, + 1146, 1253, 336, 445, 625, 473, 626, 61, 886, 1361, 532, 531, 541, 542, 534, 535, 536, 537, 538, 539, - 540, 533, 1319, 1320, 543, 1321, 0, 0, 0, 0, - 1282, 0, 1282, 1282, 1282, 0, 0, 568, 1191, 0, - 798, 799, 0, 0, 1243, 498, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1282, 1352, 1353, 1354, 1355, - 1356, 1357, 1358, 1359, 0, 0, 0, 1363, 1364, 1401, - 0, 0, 0, 0, 0, 0, 207, 207, 207, 1370, - 1371, 1372, 532, 531, 541, 542, 534, 535, 536, 537, - 538, 539, 540, 533, 1380, 858, 543, 0, 0, 0, - 0, 0, 0, 0, 0, 338, 338, 0, 0, 0, - 0, 0, 0, 0, 0, 1393, 0, 1120, 1121, 0, - 0, 0, 1398, 0, 802, 0, 0, 1399, 0, 0, - 1137, 1138, 1139, 1140, 0, 1142, 1143, 1144, 1145, 0, - 1403, 0, 0, 0, 0, 0, 1405, 1151, 1152, 0, - 0, 0, 0, 0, 527, 0, 530, 0, 0, 0, - 0, 0, 544, 545, 546, 547, 548, 549, 550, 1282, - 528, 529, 526, 532, 531, 541, 542, 534, 535, 536, - 537, 538, 539, 540, 533, 1438, 1439, 543, 0, 0, - 207, 0, 0, 0, 0, 0, 949, 950, 686, 506, - 207, 207, 1240, 498, 0, 693, 207, 1198, 0, 207, - 0, 0, 207, 0, 0, 0, 708, 0, 0, 0, - 0, 710, 711, 0, 0, 0, 712, 713, 714, 715, - 716, 717, 0, 0, 0, 0, 718, 719, 0, 0, - 532, 531, 541, 542, 534, 535, 536, 537, 538, 539, - 540, 533, 498, 0, 543, 0, 0, 0, 0, 1247, - 0, 976, 0, 0, 0, 207, 1227, 0, 0, 0, - 0, 0, 0, 0, 708, 0, 0, 0, 997, 0, - 0, 0, 0, 0, 1119, 0, 0, 0, 0, 532, + 540, 533, 1185, 1186, 543, 854, 855, 925, 204, 200, + 201, 202, 1184, 63, 64, 65, 66, 67, 489, 1043, + 853, 924, 1042, 1125, 244, 1044, 490, 487, 488, 196, + 493, 198, 243, 1063, 885, 1284, 1300, 893, 1236, 1234, + 237, 469, 482, 483, 696, 458, 1104, 1103, 694, 929, + 1419, 475, 1416, 477, 1387, 877, 1100, 821, 923, 1379, + 1127, 1330, 1440, 1338, 459, 447, 198, 209, 1105, 700, + 209, 1088, 1031, 1033, 1332, 687, 209, 1179, 695, 1436, + 1178, 1177, 209, 474, 476, 81, 879, 81, 492, 81, + 81, 879, 81, 1129, 81, 1133, 443, 1128, 697, 1126, + 1086, 1097, 1368, 81, 1131, 450, 211, 1099, 920, 917, + 918, 199, 916, 1130, 936, 1056, 1264, 935, 555, 556, + 727, 1111, 987, 963, 197, 730, 1132, 1134, 523, 203, + 470, 465, 470, 81, 470, 470, 860, 470, 1202, 470, + 543, 507, 1331, 927, 930, 495, 496, 455, 470, 1032, 531, 541, 542, 534, 535, 536, 537, 538, 539, 540, - 533, 0, 0, 543, 532, 531, 541, 542, 534, 535, - 536, 537, 538, 539, 540, 533, 263, 0, 543, 0, - 0, 263, 263, 0, 0, 803, 803, 263, 0, 0, - 0, 803, 1256, 532, 531, 541, 542, 534, 535, 536, - 537, 538, 539, 540, 533, 0, 0, 543, 0, 0, - 263, 263, 263, 263, 0, 207, 0, 0, 0, 0, - 0, 0, 0, 207, 844, 0, 0, 207, 207, 0, - 532, 531, 541, 542, 534, 535, 536, 537, 538, 539, - 540, 533, 1255, 0, 543, 0, 0, 1301, 1302, 0, - 1303, 1304, 0, 1305, 1306, 0, 1307, 1308, 1309, 0, - 0, 0, 1312, 1313, 0, 0, 0, 0, 0, 0, - 0, 0, 1109, 0, 0, 0, 0, 0, 0, 0, - 532, 531, 541, 542, 534, 535, 536, 537, 538, 539, - 540, 533, 0, 0, 543, 1244, 0, 0, 207, 0, - 0, 0, 912, 0, 914, 0, 0, 207, 207, 0, - 207, 207, 0, 1241, 207, 0, 0, 0, 940, 0, - 0, 0, 0, 0, 1149, 0, 0, 0, 0, 0, - 0, 207, 0, 945, 946, 0, 207, 0, 0, 0, - 0, 708, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 263, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1182, 0, 0, 657, 532, + 533, 1362, 722, 543, 1339, 1337, 893, 1087, 51, 518, + 70, 472, 1092, 1089, 1082, 1090, 1085, 508, 944, 922, + 1083, 1084, 878, 552, 275, 1434, 554, 878, 1435, 1203, + 1433, 1377, 1394, 516, 1091, 1347, 209, 209, 209, 1167, + 627, 921, 81, 1098, 533, 1096, 71, 543, 81, 518, + 452, 1148, 453, 810, 565, 454, 569, 570, 571, 572, + 573, 574, 575, 576, 577, 1441, 580, 583, 583, 583, + 589, 583, 583, 589, 583, 597, 598, 599, 600, 601, + 602, 509, 612, 723, 926, 441, 336, 606, 461, 462, + 463, 810, 765, 996, 689, 879, 943, 446, 478, 928, + 479, 480, 1061, 481, 1442, 484, 763, 764, 762, 585, + 587, 1382, 591, 593, 494, 596, 733, 734, 439, 615, + 513, 748, 750, 751, 441, 1400, 621, 749, 1290, 812, + 584, 586, 588, 590, 592, 594, 595, 532, 531, 541, + 542, 534, 535, 536, 537, 538, 539, 540, 533, 54, + 209, 543, 982, 517, 516, 81, 517, 516, 1289, 761, + 209, 209, 81, 1150, 517, 516, 209, 1076, 1075, 209, + 518, 882, 209, 518, 448, 449, 209, 883, 81, 81, + 729, 518, 1064, 81, 81, 81, 209, 81, 81, 22, + 970, 878, 1402, 81, 81, 1378, 875, 873, 1311, 874, + 470, 1287, 517, 516, 871, 877, 1108, 470, 298, 960, + 961, 962, 1073, 709, 1249, 498, 498, 728, 782, 518, + 783, 81, 1375, 470, 470, 209, 195, 1219, 470, 470, + 470, 81, 470, 470, 517, 516, 1056, 735, 470, 470, + 79, 1246, 498, 54, 1045, 1051, 1046, 707, 759, 251, + 701, 518, 532, 531, 541, 542, 534, 535, 536, 537, + 538, 539, 540, 533, 1335, 1418, 543, 1404, 498, 1335, + 1390, 756, 1335, 498, 1344, 81, 338, 784, 755, 532, 531, 541, 542, 534, 535, 536, 537, 538, 539, 540, - 533, 0, 971, 543, 0, 0, 0, 532, 531, 541, - 542, 534, 535, 536, 537, 538, 539, 540, 533, 0, - 263, 543, 532, 531, 541, 542, 534, 535, 536, 537, - 538, 539, 540, 533, 0, 0, 543, 0, 263, 532, + 533, 325, 326, 543, 981, 553, 980, 1335, 1369, 1343, + 800, 804, 706, 737, 705, 754, 811, 690, 81, 81, + 51, 752, 688, 517, 516, 209, 1335, 1334, 1279, 1278, + 1266, 498, 1199, 209, 209, 569, 686, 209, 209, 685, + 518, 81, 467, 693, 795, 460, 785, 786, 1263, 498, + 1209, 1208, 796, 797, 81, 1205, 1206, 266, 806, 710, + 711, 611, 817, 58, 712, 713, 714, 1037, 716, 717, + 1205, 1204, 880, 807, 718, 719, 975, 498, 839, 824, + 498, 816, 612, 818, 819, 336, 497, 848, 618, 534, + 535, 536, 537, 538, 539, 540, 533, 823, 864, 543, + 846, 793, 498, 975, 894, 895, 896, 850, 209, 81, + 824, 81, 851, 634, 633, 81, 81, 209, 209, 867, + 209, 209, 824, 1166, 209, 81, 908, 1410, 1154, 24, + 619, 1166, 617, 338, 793, 338, 1114, 338, 338, 24, + 338, 209, 338, 209, 209, 991, 209, 1259, 847, 1037, + 617, 338, 989, 1007, 470, 1346, 470, 1008, 824, 1207, + 1047, 852, 1001, 1243, 498, 904, 905, 1316, 1000, 986, + 470, 536, 537, 538, 539, 540, 533, 54, 984, 543, + 975, 521, 888, 889, 890, 891, 975, 54, 756, 990, + 1240, 498, 1166, 617, 759, 755, 988, 620, 899, 900, + 901, 532, 531, 541, 542, 534, 535, 536, 537, 538, + 539, 540, 533, 985, 952, 543, 953, 24, 731, 699, + 1296, 964, 983, 887, 959, 1271, 907, 1195, 532, 531, + 541, 542, 534, 535, 536, 537, 538, 539, 540, 533, + 1050, 965, 543, 1170, 1171, 209, 209, 209, 209, 209, + 338, 903, 898, 897, 253, 1102, 629, 209, 910, 1014, + 209, 760, 1427, 743, 209, 54, 1423, 1197, 209, 1173, + 1154, 974, 829, 832, 833, 834, 830, 1077, 831, 835, + 912, 725, 914, 81, 703, 1176, 1010, 1011, 995, 993, + 612, 612, 612, 612, 612, 1009, 940, 1175, 1024, 1039, + 1048, 1015, 54, 1025, 1018, 839, 1022, 1034, 1021, 1027, + 1020, 1023, 1414, 612, 795, 1407, 1035, 1110, 1038, 1016, + 1017, 948, 1019, 1057, 1040, 1412, 1026, 864, 833, 834, + 958, 81, 81, 957, 557, 558, 559, 560, 561, 562, + 563, 564, 257, 258, 1065, 1066, 512, 611, 736, 1068, + 500, 611, 1053, 1054, 632, 1067, 468, 1069, 1070, 1071, + 81, 510, 501, 338, 1060, 1384, 1383, 1080, 1074, 1314, + 338, 1058, 1052, 1257, 1292, 209, 498, 470, 913, 702, + 837, 1093, 254, 255, 81, 512, 338, 338, 248, 956, + 1351, 338, 338, 338, 58, 338, 338, 955, 249, 1350, + 1298, 338, 338, 1037, 491, 470, 792, 794, 1429, 1428, + 1107, 720, 514, 532, 531, 541, 542, 534, 535, 536, + 537, 538, 539, 540, 533, 1118, 1117, 543, 1116, 739, + 1429, 81, 81, 1155, 1147, 1365, 1123, 1136, 1285, 521, + 1158, 726, 338, 1014, 60, 756, 62, 616, 55, 1135, + 1, 1421, 1141, 1218, 1293, 81, 289, 288, 291, 292, + 293, 294, 919, 1165, 1385, 290, 295, 1174, 81, 1328, + 81, 81, 1189, 870, 1159, 861, 51, 1181, 69, 438, + 68, 1376, 869, 787, 1180, 1160, 868, 1188, 1336, 1183, + 1283, 881, 1062, 802, 802, 1187, 884, 760, 209, 802, + 1193, 1194, 1196, 1079, 1059, 1192, 1381, 640, 638, 639, + 637, 642, 864, 641, 864, 209, 814, 815, 636, 222, + 331, 81, 836, 628, 81, 81, 209, 909, 1200, 1201, + 515, 1106, 81, 1211, 72, 209, 1095, 1094, 915, 338, + 485, 486, 224, 551, 954, 1212, 1041, 1214, 337, 1161, + 1223, 732, 338, 504, 1349, 1297, 994, 578, 808, 611, + 611, 611, 611, 611, 1224, 274, 747, 287, 284, 285, + 738, 1232, 1006, 525, 611, 272, 1116, 264, 610, 603, + 612, 828, 611, 757, 826, 1225, 766, 767, 768, 769, + 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, + 780, 1258, 1014, 825, 1172, 1168, 1267, 338, 81, 338, + 1268, 609, 1251, 931, 932, 1113, 81, 1252, 1360, 742, + 26, 1277, 59, 338, 972, 1048, 259, 19, 973, 18, + 17, 81, 20, 16, 15, 977, 978, 979, 81, 14, + 456, 813, 30, 1273, 1274, 1275, 992, 21, 13, 338, + 12, 998, 864, 999, 11, 10, 1002, 1003, 1004, 1005, + 1286, 9, 1288, 8, 1229, 1230, 7, 1231, 6, 5, + 1233, 4, 1235, 250, 23, 2, 470, 0, 1029, 0, + 0, 0, 1295, 0, 81, 81, 1299, 81, 0, 0, + 0, 1158, 81, 0, 81, 81, 81, 209, 0, 1323, + 81, 1324, 1325, 1326, 1315, 262, 0, 1322, 0, 0, + 0, 0, 0, 0, 0, 1327, 1333, 81, 0, 0, + 1340, 0, 0, 0, 1348, 1159, 0, 0, 1318, 0, + 1280, 0, 0, 0, 0, 0, 0, 1317, 0, 0, + 0, 0, 802, 0, 0, 0, 0, 0, 1158, 1341, + 1366, 1342, 0, 0, 0, 0, 81, 0, 1345, 1374, + 1373, 0, 0, 0, 0, 0, 0, 81, 81, 0, + 0, 0, 0, 0, 0, 0, 1388, 0, 0, 0, + 1392, 338, 1159, 0, 51, 1389, 0, 0, 0, 81, + 0, 1397, 0, 1367, 0, 0, 503, 0, 0, 0, + 209, 1014, 1291, 0, 0, 0, 0, 0, 81, 0, + 0, 1295, 864, 0, 1122, 1406, 0, 0, 0, 0, + 0, 966, 967, 968, 0, 0, 0, 0, 1411, 1078, + 338, 81, 207, 1413, 0, 236, 0, 0, 1415, 0, + 0, 0, 0, 0, 1426, 0, 0, 0, 1256, 611, + 0, 1437, 0, 0, 0, 0, 0, 1250, 338, 0, + 263, 0, 0, 207, 0, 0, 0, 0, 207, 0, + 207, 1255, 541, 542, 534, 535, 536, 537, 538, 539, + 540, 533, 338, 219, 543, 1424, 532, 531, 541, 542, + 534, 535, 536, 537, 538, 539, 540, 533, 0, 0, + 543, 0, 0, 0, 0, 0, 338, 232, 0, 532, 531, 541, 542, 534, 535, 536, 537, 538, 539, 540, - 533, 1430, 0, 543, 803, 207, 207, 207, 207, 207, - 0, 0, 0, 0, 0, 0, 645, 1028, 0, 0, - 207, 0, 0, 0, 844, 0, 0, 0, 207, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1254, 0, - 0, 0, 0, 658, 0, 0, 0, 568, 0, 0, - 0, 0, 0, 0, 0, 1269, 0, 0, 1270, 0, - 0, 1272, 0, 0, 0, 671, 674, 675, 676, 677, - 678, 679, 0, 680, 681, 682, 683, 684, 659, 660, - 661, 662, 643, 644, 672, 1079, 646, 0, 647, 648, - 649, 650, 651, 652, 653, 654, 655, 656, 663, 664, - 665, 666, 667, 668, 669, 670, 0, 0, 0, 0, - 0, 0, 0, 1106, 0, 24, 25, 52, 27, 28, - 0, 0, 0, 0, 0, 207, 0, 0, 0, 0, - 0, 0, 0, 0, 43, 263, 0, 0, 0, 29, - 48, 49, 0, 0, 0, 0, 263, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 708, 38, - 673, 0, 0, 54, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 803, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 32, 34, 33, 36, 0, - 50, 0, 0, 0, 0, 0, 0, 0, 1391, 568, - 0, 0, 0, 0, 0, 0, 0, 0, 207, 0, + 533, 0, 0, 543, 0, 0, 802, 0, 0, 1162, + 1164, 532, 531, 541, 542, 534, 535, 536, 537, 538, + 539, 540, 533, 0, 0, 543, 0, 0, 0, 0, + 0, 0, 0, 1164, 502, 506, 0, 1226, 212, 0, + 0, 0, 0, 0, 1228, 215, 338, 0, 338, 1191, + 0, 524, 0, 223, 218, 1237, 1238, 1239, 0, 1242, + 0, 0, 1245, 0, 1248, 0, 0, 0, 0, 613, + 0, 0, 0, 207, 0, 0, 207, 0, 0, 1260, + 1261, 1262, 207, 1265, 0, 221, 568, 0, 207, 0, + 0, 231, 0, 0, 0, 579, 0, 0, 0, 1215, + 1276, 0, 1220, 1221, 0, 206, 0, 0, 1120, 1121, + 338, 0, 0, 0, 0, 0, 0, 213, 0, 0, + 0, 1137, 1138, 1139, 1140, 0, 1142, 1143, 1144, 1145, + 0, 0, 0, 0, 0, 0, 329, 0, 1151, 1152, + 0, 442, 0, 444, 225, 216, 0, 226, 227, 228, + 230, 0, 229, 235, 1119, 0, 0, 217, 220, 0, + 214, 234, 233, 0, 0, 802, 0, 0, 0, 0, + 0, 0, 1310, 0, 532, 531, 541, 542, 534, 535, + 536, 537, 538, 539, 540, 533, 338, 0, 543, 829, + 832, 833, 834, 830, 1282, 831, 835, 0, 1198, 1170, + 1171, 0, 207, 207, 207, 0, 0, 0, 0, 338, + 0, 0, 0, 0, 0, 0, 338, 0, 0, 0, + 0, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 0, + 0, 0, 1363, 1364, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1370, 1371, 1372, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1227, 0, 0, + 0, 0, 1319, 1320, 0, 1321, 451, 0, 0, 457, + 1282, 0, 1282, 1282, 1282, 464, 0, 724, 1191, 0, + 1393, 466, 0, 0, 0, 0, 0, 1398, 0, 0, + 0, 0, 0, 0, 0, 1282, 0, 0, 0, 0, + 0, 0, 745, 746, 0, 1403, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 207, 207, 0, 0, + 0, 0, 207, 0, 1380, 207, 0, 0, 207, 0, + 0, 0, 708, 0, 0, 338, 338, 0, 0, 0, + 1438, 1439, 207, 0, 0, 568, 0, 0, 798, 799, + 0, 0, 0, 0, 802, 0, 0, 1399, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1301, 1302, + 0, 1303, 1304, 0, 1305, 1306, 1405, 1307, 1308, 1309, + 0, 207, 0, 1312, 1313, 605, 0, 614, 0, 0, + 708, 0, 0, 0, 0, 0, 527, 0, 530, 1282, + 0, 0, 0, 858, 544, 545, 546, 547, 548, 549, + 550, 0, 528, 529, 526, 532, 531, 541, 542, 534, + 535, 536, 537, 538, 539, 540, 533, 0, 0, 543, + 971, 0, 263, 0, 0, 0, 0, 263, 263, 0, + 0, 803, 803, 263, 0, 0, 0, 803, 1247, 0, + 532, 531, 541, 542, 534, 535, 536, 537, 538, 539, + 540, 533, 0, 0, 543, 657, 263, 263, 263, 263, + 0, 207, 0, 0, 0, 0, 0, 0, 0, 207, + 844, 0, 0, 207, 207, 0, 532, 531, 541, 542, + 534, 535, 536, 537, 538, 539, 540, 533, 0, 635, + 543, 0, 0, 0, 949, 950, 0, 506, 0, 691, + 692, 0, 0, 0, 0, 698, 0, 0, 329, 0, + 0, 704, 532, 531, 541, 542, 534, 535, 536, 537, + 538, 539, 540, 533, 0, 715, 543, 0, 0, 0, + 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, + 0, 0, 1430, 0, 207, 0, 0, 0, 0, 0, + 0, 0, 0, 207, 207, 0, 207, 207, 0, 976, + 207, 0, 0, 0, 744, 0, 0, 0, 0, 0, + 658, 0, 0, 0, 0, 0, 997, 207, 0, 945, + 946, 0, 207, 0, 0, 0, 0, 708, 0, 0, + 0, 0, 671, 674, 675, 676, 677, 678, 679, 263, + 680, 681, 682, 683, 684, 659, 660, 661, 662, 643, + 644, 672, 0, 646, 0, 647, 648, 649, 650, 651, + 652, 653, 654, 655, 656, 663, 664, 665, 666, 667, + 668, 669, 670, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 263, 1244, 0, 0, + 0, 0, 0, 0, 822, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 263, 0, 0, 849, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 803, 207, 207, 207, 207, 207, 0, 673, 0, 0, + 0, 0, 0, 1028, 0, 0, 207, 0, 0, 0, + 844, 0, 1241, 0, 207, 0, 0, 0, 0, 0, + 1109, 0, 0, 0, 0, 24, 25, 52, 27, 28, + 0, 532, 531, 541, 542, 534, 535, 536, 537, 538, + 539, 540, 533, 0, 43, 543, 0, 911, 0, 29, + 48, 49, 0, 0, 0, 0, 933, 934, 0, 937, + 938, 0, 0, 939, 0, 0, 0, 0, 0, 38, + 0, 0, 1149, 54, 0, 0, 0, 0, 0, 0, + 941, 0, 0, 0, 0, 947, 532, 531, 541, 542, + 534, 535, 536, 537, 538, 539, 540, 533, 0, 0, + 543, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1182, 0, 0, 0, 0, 0, 0, + 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 0, 31, 32, 34, 33, 36, 0, + 50, 0, 263, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 708, 0, 0, 0, 0, 0, 0, 37, 44, 45, 0, 0, 46, 47, 35, 0, - 0, 0, 0, 0, 0, 207, 0, 0, 0, 0, - 0, 39, 40, 0, 41, 42, 207, 0, 0, 0, - 0, 0, 0, 0, 0, 207, 0, 0, 0, 0, + 0, 0, 0, 0, 803, 0, 0, 0, 0, 0, + 0, 39, 40, 0, 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1254, 0, 0, 0, + 0, 0, 0, 0, 0, 568, 0, 0, 0, 0, + 0, 0, 0, 1269, 207, 0, 1270, 0, 0, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 803, 0, 0, + 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 0, 207, 0, 0, 0, 0, 0, 0, 0, + 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1291, 0, 0, 0, 0, 0, + 0, 0, 0, 803, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 426, 415, 844, 386, 429, - 364, 378, 437, 379, 380, 408, 350, 394, 139, 376, - 0, 367, 345, 373, 346, 365, 388, 103, 391, 363, - 417, 397, 428, 120, 435, 122, 402, 0, 159, 131, - 0, 0, 390, 419, 392, 413, 385, 409, 355, 401, - 430, 377, 406, 431, 0, 0, 0, 80, 0, 865, - 866, 0, 0, 0, 0, 0, 96, 0, 404, 425, - 375, 405, 407, 344, 403, 0, 348, 351, 436, 421, - 370, 371, 1049, 0, 0, 0, 0, 0, 0, 389, - 393, 410, 383, 0, 0, 0, 803, 0, 0, 0, - 0, 368, 0, 400, 0, 0, 0, 352, 349, 0, - 207, 387, 0, 0, 0, 354, 0, 369, 411, 0, - 343, 109, 414, 420, 384, 210, 424, 382, 381, 427, - 146, 0, 162, 111, 119, 83, 90, 0, 110, 137, - 151, 155, 418, 366, 374, 99, 372, 153, 141, 175, - 399, 142, 152, 123, 167, 147, 174, 182, 183, 164, - 181, 190, 84, 163, 173, 97, 156, 86, 171, 161, - 129, 115, 116, 85, 0, 150, 102, 107, 101, 138, - 168, 169, 100, 193, 91, 180, 88, 92, 179, 136, - 166, 172, 130, 127, 87, 170, 128, 126, 118, 105, - 112, 144, 125, 145, 113, 133, 132, 134, 0, 347, - 0, 160, 177, 194, 94, 362, 165, 184, 185, 186, - 187, 188, 189, 0, 0, 95, 108, 104, 143, 135, - 93, 114, 157, 117, 124, 149, 192, 140, 154, 98, - 176, 158, 358, 361, 356, 357, 395, 396, 432, 433, - 434, 412, 353, 0, 359, 360, 0, 416, 422, 423, - 398, 82, 89, 121, 191, 148, 106, 178, 426, 415, - 0, 386, 429, 364, 378, 437, 379, 380, 408, 350, - 394, 139, 376, 0, 367, 345, 373, 346, 365, 388, - 103, 391, 363, 417, 397, 428, 120, 435, 122, 402, - 0, 159, 131, 0, 0, 390, 419, 392, 413, 385, - 409, 355, 401, 430, 377, 406, 431, 0, 0, 0, - 80, 0, 865, 866, 0, 0, 0, 0, 0, 96, - 0, 404, 425, 375, 405, 407, 344, 403, 0, 348, - 351, 436, 421, 370, 371, 0, 0, 0, 0, 0, - 0, 0, 389, 393, 410, 383, 0, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 400, 0, 0, 0, - 352, 349, 0, 0, 387, 0, 0, 0, 354, 0, - 369, 411, 0, 343, 109, 414, 420, 384, 210, 424, - 382, 381, 427, 146, 0, 162, 111, 119, 83, 90, - 0, 110, 137, 151, 155, 418, 366, 374, 99, 372, - 153, 141, 175, 399, 142, 152, 123, 167, 147, 174, - 182, 183, 164, 181, 190, 84, 163, 173, 97, 156, - 86, 171, 161, 129, 115, 116, 85, 0, 150, 102, - 107, 101, 138, 168, 169, 100, 193, 91, 180, 88, - 92, 179, 136, 166, 172, 130, 127, 87, 170, 128, - 126, 118, 105, 112, 144, 125, 145, 113, 133, 132, - 134, 0, 347, 0, 160, 177, 194, 94, 362, 165, - 184, 185, 186, 187, 188, 189, 0, 0, 95, 108, - 104, 143, 135, 93, 114, 157, 117, 124, 149, 192, - 140, 154, 98, 176, 158, 358, 361, 356, 357, 395, - 396, 432, 433, 434, 412, 353, 0, 359, 360, 0, - 416, 422, 423, 398, 82, 89, 121, 191, 148, 106, - 178, 426, 415, 0, 386, 429, 364, 378, 437, 379, - 380, 408, 350, 394, 139, 376, 0, 367, 345, 373, - 346, 365, 388, 103, 391, 363, 417, 397, 428, 120, - 435, 122, 402, 0, 159, 131, 0, 0, 390, 419, - 392, 413, 385, 409, 355, 401, 430, 377, 406, 431, - 54, 0, 0, 80, 0, 0, 0, 0, 0, 0, - 0, 0, 96, 0, 404, 425, 375, 405, 407, 344, - 403, 0, 348, 351, 436, 421, 370, 371, 0, 0, - 0, 0, 0, 0, 0, 389, 393, 410, 383, 0, - 0, 0, 0, 0, 0, 0, 0, 368, 0, 400, - 0, 0, 0, 352, 349, 0, 0, 387, 0, 0, - 0, 354, 0, 369, 411, 0, 343, 109, 414, 420, - 384, 210, 424, 382, 381, 427, 146, 0, 162, 111, - 119, 83, 90, 0, 110, 137, 151, 155, 418, 366, - 374, 99, 372, 153, 141, 175, 399, 142, 152, 123, - 167, 147, 174, 182, 183, 164, 181, 190, 84, 163, - 173, 97, 156, 86, 171, 161, 129, 115, 116, 85, - 0, 150, 102, 107, 101, 138, 168, 169, 100, 193, - 91, 180, 88, 92, 179, 136, 166, 172, 130, 127, - 87, 170, 128, 126, 118, 105, 112, 144, 125, 145, - 113, 133, 132, 134, 0, 347, 0, 160, 177, 194, - 94, 362, 165, 184, 185, 186, 187, 188, 189, 0, - 0, 95, 108, 104, 143, 135, 93, 114, 157, 117, - 124, 149, 192, 140, 154, 98, 176, 158, 358, 361, - 356, 357, 395, 396, 432, 433, 434, 412, 353, 0, - 359, 360, 0, 416, 422, 423, 398, 82, 89, 121, - 191, 148, 106, 178, 426, 415, 0, 386, 429, 364, - 378, 437, 379, 380, 408, 350, 394, 139, 376, 0, - 367, 345, 373, 346, 365, 388, 103, 391, 363, 417, - 397, 428, 120, 435, 122, 402, 0, 159, 131, 0, - 0, 390, 419, 392, 413, 385, 409, 355, 401, 430, - 377, 406, 431, 0, 0, 0, 80, 0, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 404, 425, 375, - 405, 407, 344, 403, 0, 348, 351, 436, 421, 370, - 371, 0, 0, 0, 0, 0, 0, 0, 389, 393, - 410, 383, 0, 0, 0, 0, 0, 0, 1115, 0, - 368, 0, 400, 0, 0, 0, 352, 349, 0, 0, - 387, 0, 0, 0, 354, 0, 369, 411, 0, 343, - 109, 414, 420, 384, 210, 424, 382, 381, 427, 146, - 0, 162, 111, 119, 83, 90, 0, 110, 137, 151, - 155, 418, 366, 374, 99, 372, 153, 141, 175, 399, - 142, 152, 123, 167, 147, 174, 182, 183, 164, 181, - 190, 84, 163, 173, 97, 156, 86, 171, 161, 129, - 115, 116, 85, 0, 150, 102, 107, 101, 138, 168, - 169, 100, 193, 91, 180, 88, 92, 179, 136, 166, - 172, 130, 127, 87, 170, 128, 126, 118, 105, 112, - 144, 125, 145, 113, 133, 132, 134, 0, 347, 0, - 160, 177, 194, 94, 362, 165, 184, 185, 186, 187, - 188, 189, 0, 0, 95, 108, 104, 143, 135, 93, - 114, 157, 117, 124, 149, 192, 140, 154, 98, 176, - 158, 358, 361, 356, 357, 395, 396, 432, 433, 434, - 412, 353, 0, 359, 360, 0, 416, 422, 423, 398, - 82, 89, 121, 191, 148, 106, 178, 426, 415, 0, - 386, 429, 364, 378, 437, 379, 380, 408, 350, 394, - 139, 376, 0, 367, 345, 373, 346, 365, 388, 103, - 391, 363, 417, 397, 428, 120, 435, 122, 402, 0, - 159, 131, 0, 0, 390, 419, 392, 413, 385, 409, - 355, 401, 430, 377, 406, 431, 0, 0, 0, 268, - 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, - 404, 425, 375, 405, 407, 344, 403, 0, 348, 351, - 436, 421, 370, 371, 0, 0, 0, 0, 0, 0, - 0, 389, 393, 410, 383, 0, 0, 0, 0, 0, - 0, 753, 0, 368, 0, 400, 0, 0, 0, 352, - 349, 0, 0, 387, 0, 0, 0, 354, 0, 369, - 411, 0, 343, 109, 414, 420, 384, 210, 424, 382, - 381, 427, 146, 0, 162, 111, 119, 83, 90, 0, - 110, 137, 151, 155, 418, 366, 374, 99, 372, 153, - 141, 175, 399, 142, 152, 123, 167, 147, 174, 182, - 183, 164, 181, 190, 84, 163, 173, 97, 156, 86, - 171, 161, 129, 115, 116, 85, 0, 150, 102, 107, - 101, 138, 168, 169, 100, 193, 91, 180, 88, 92, - 179, 136, 166, 172, 130, 127, 87, 170, 128, 126, - 118, 105, 112, 144, 125, 145, 113, 133, 132, 134, - 0, 347, 0, 160, 177, 194, 94, 362, 165, 184, - 185, 186, 187, 188, 189, 0, 0, 95, 108, 104, - 143, 135, 93, 114, 157, 117, 124, 149, 192, 140, - 154, 98, 176, 158, 358, 361, 356, 357, 395, 396, - 432, 433, 434, 412, 353, 0, 359, 360, 0, 416, - 422, 423, 398, 82, 89, 121, 191, 148, 106, 178, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1391, 568, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1210, 0, 0, + 0, 0, 0, 844, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1213, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1222, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 426, 415, 0, 386, + 429, 364, 378, 437, 379, 380, 408, 350, 394, 139, + 376, 0, 367, 345, 373, 346, 365, 388, 103, 391, + 363, 417, 397, 428, 120, 435, 122, 402, 0, 159, + 131, 0, 0, 390, 419, 392, 413, 385, 409, 355, + 401, 430, 377, 406, 431, 0, 0, 0, 80, 0, + 865, 866, 803, 0, 0, 0, 0, 96, 0, 404, + 425, 375, 405, 407, 344, 403, 207, 348, 351, 436, + 421, 370, 371, 1049, 0, 0, 0, 0, 0, 0, + 389, 393, 410, 383, 0, 0, 0, 0, 0, 0, + 0, 0, 368, 0, 400, 0, 0, 0, 352, 349, + 0, 0, 387, 0, 0, 0, 354, 0, 369, 411, + 0, 343, 109, 414, 420, 384, 210, 424, 382, 381, + 427, 146, 0, 162, 111, 119, 83, 90, 0, 110, + 137, 151, 155, 418, 366, 374, 99, 372, 153, 141, + 175, 399, 142, 152, 123, 167, 147, 174, 182, 183, + 164, 181, 190, 84, 163, 173, 97, 156, 86, 171, + 161, 129, 115, 116, 85, 0, 150, 102, 107, 101, + 138, 168, 169, 100, 193, 91, 180, 88, 92, 179, + 136, 166, 172, 130, 127, 87, 170, 128, 126, 118, + 105, 112, 144, 125, 145, 113, 133, 132, 134, 0, + 347, 0, 160, 177, 194, 94, 362, 165, 184, 185, + 186, 187, 188, 189, 0, 0, 95, 108, 104, 143, + 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, + 98, 176, 158, 358, 361, 356, 357, 395, 396, 432, + 433, 434, 412, 353, 0, 359, 360, 0, 416, 422, + 423, 398, 82, 89, 121, 191, 148, 106, 178, 1401, 426, 415, 0, 386, 429, 364, 378, 437, 379, 380, 408, 350, 394, 139, 376, 0, 367, 345, 373, 346, 365, 388, 103, 391, 363, 417, 397, 428, 120, 435, 122, 402, 0, 159, 131, 0, 0, 390, 419, 392, 413, 385, 409, 355, 401, 430, 377, 406, 431, 0, - 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 80, 0, 865, 866, 0, 0, 0, 0, 0, 96, 0, 404, 425, 375, 405, 407, 344, 403, 0, 348, 351, 436, 421, 370, 371, 0, 0, 0, 0, 0, 0, 0, 389, 393, 410, 383, 0, 0, @@ -1154,7 +1041,7 @@ var yyAct = [...]int{ 345, 373, 346, 365, 388, 103, 391, 363, 417, 397, 428, 120, 435, 122, 402, 0, 159, 131, 0, 0, 390, 419, 392, 413, 385, 409, 355, 401, 430, 377, - 406, 431, 0, 0, 0, 268, 0, 0, 0, 0, + 406, 431, 54, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 404, 425, 375, 405, 407, 344, 403, 0, 348, 351, 436, 421, 370, 371, 0, 0, 0, 0, 0, 0, 0, 389, 393, 410, @@ -1185,7 +1072,7 @@ var yyAct = [...]int{ 425, 375, 405, 407, 344, 403, 0, 348, 351, 436, 421, 370, 371, 0, 0, 0, 0, 0, 0, 0, 389, 393, 410, 383, 0, 0, 0, 0, 0, 0, - 0, 0, 368, 0, 400, 0, 0, 0, 352, 349, + 1115, 0, 368, 0, 400, 0, 0, 0, 352, 349, 0, 0, 387, 0, 0, 0, 354, 0, 369, 411, 0, 343, 109, 414, 420, 384, 210, 424, 382, 381, 427, 146, 0, 162, 111, 119, 83, 90, 0, 110, @@ -1193,12 +1080,12 @@ var yyAct = [...]int{ 175, 399, 142, 152, 123, 167, 147, 174, 182, 183, 164, 181, 190, 84, 163, 173, 97, 156, 86, 171, 161, 129, 115, 116, 85, 0, 150, 102, 107, 101, - 138, 168, 169, 100, 193, 91, 180, 88, 341, 179, + 138, 168, 169, 100, 193, 91, 180, 88, 92, 179, 136, 166, 172, 130, 127, 87, 170, 128, 126, 118, 105, 112, 144, 125, 145, 113, 133, 132, 134, 0, 347, 0, 160, 177, 194, 94, 362, 165, 184, 185, 186, 187, 188, 189, 0, 0, 95, 108, 104, 143, - 342, 340, 114, 157, 117, 124, 149, 192, 140, 154, + 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, 98, 176, 158, 358, 361, 356, 357, 395, 396, 432, 433, 434, 412, 353, 0, 359, 360, 0, 416, 422, 423, 398, 82, 89, 121, 191, 148, 106, 178, 426, @@ -1207,11 +1094,11 @@ var yyAct = [...]int{ 388, 103, 391, 363, 417, 397, 428, 120, 435, 122, 402, 0, 159, 131, 0, 0, 390, 419, 392, 413, 385, 409, 355, 401, 430, 377, 406, 431, 0, 0, - 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 268, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 404, 425, 375, 405, 407, 344, 403, 0, 348, 351, 436, 421, 370, 371, 0, 0, 0, 0, 0, 0, 0, 389, 393, 410, 383, 0, 0, 0, - 0, 0, 0, 0, 0, 368, 0, 400, 0, 0, + 0, 0, 0, 753, 0, 368, 0, 400, 0, 0, 0, 352, 349, 0, 0, 387, 0, 0, 0, 354, 0, 369, 411, 0, 343, 109, 414, 420, 384, 210, 424, 382, 381, 427, 146, 0, 162, 111, 119, 83, @@ -1244,13 +1131,13 @@ var yyAct = [...]int{ 111, 119, 83, 90, 0, 110, 137, 151, 155, 418, 366, 374, 99, 372, 153, 141, 175, 399, 142, 152, 123, 167, 147, 174, 182, 183, 164, 181, 190, 84, - 163, 622, 97, 156, 86, 171, 161, 129, 115, 116, + 163, 173, 97, 156, 86, 171, 161, 129, 115, 116, 85, 0, 150, 102, 107, 101, 138, 168, 169, 100, - 193, 91, 180, 88, 341, 179, 136, 166, 172, 130, + 193, 91, 180, 88, 92, 179, 136, 166, 172, 130, 127, 87, 170, 128, 126, 118, 105, 112, 144, 125, 145, 113, 133, 132, 134, 0, 347, 0, 160, 177, 194, 94, 362, 165, 184, 185, 186, 187, 188, 189, - 0, 0, 95, 108, 104, 143, 342, 340, 114, 157, + 0, 0, 95, 108, 104, 143, 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, 98, 176, 158, 358, 361, 356, 357, 395, 396, 432, 433, 434, 412, 353, 0, 359, 360, 0, 416, 422, 423, 398, 82, 89, @@ -1259,7 +1146,7 @@ var yyAct = [...]int{ 0, 367, 345, 373, 346, 365, 388, 103, 391, 363, 417, 397, 428, 120, 435, 122, 402, 0, 159, 131, 0, 0, 390, 419, 392, 413, 385, 409, 355, 401, - 430, 377, 406, 431, 0, 0, 0, 80, 0, 0, + 430, 377, 406, 431, 0, 0, 0, 268, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 404, 425, 375, 405, 407, 344, 403, 0, 348, 351, 436, 421, 370, 371, 0, 0, 0, 0, 0, 0, 0, 389, @@ -1270,303 +1157,134 @@ var yyAct = [...]int{ 146, 0, 162, 111, 119, 83, 90, 0, 110, 137, 151, 155, 418, 366, 374, 99, 372, 153, 141, 175, 399, 142, 152, 123, 167, 147, 174, 182, 183, 164, - 181, 190, 84, 163, 332, 97, 156, 86, 171, 161, - 129, 115, 116, 85, 0, 150, 102, 107, 101, 138, - 168, 169, 100, 193, 91, 180, 88, 341, 179, 136, - 166, 172, 130, 127, 87, 170, 128, 126, 118, 105, - 112, 144, 125, 145, 113, 133, 132, 134, 0, 347, - 0, 160, 177, 194, 94, 362, 165, 184, 185, 186, - 187, 188, 189, 0, 0, 95, 108, 104, 143, 342, - 340, 335, 334, 117, 124, 149, 192, 140, 154, 98, - 176, 158, 358, 361, 356, 357, 395, 396, 432, 433, - 434, 412, 353, 0, 359, 360, 0, 416, 422, 423, - 398, 82, 89, 121, 191, 148, 106, 178, 139, 0, - 0, 0, 0, 270, 0, 0, 0, 103, 0, 267, - 0, 0, 0, 120, 310, 122, 0, 0, 159, 131, - 0, 0, 0, 0, 301, 302, 0, 0, 0, 0, - 0, 0, 856, 0, 54, 0, 0, 268, 289, 288, - 291, 292, 293, 294, 0, 0, 96, 290, 295, 296, - 297, 857, 0, 0, 265, 282, 0, 309, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 279, 280, 0, - 0, 0, 0, 323, 0, 281, 0, 0, 276, 277, - 278, 283, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 109, 0, 0, 0, 210, 0, 0, 321, 0, - 146, 0, 162, 111, 119, 83, 90, 0, 110, 137, - 151, 155, 0, 0, 0, 99, 0, 153, 141, 175, - 0, 142, 152, 123, 167, 147, 174, 182, 183, 164, - 181, 190, 84, 163, 173, 97, 156, 86, 171, 161, - 129, 115, 116, 85, 0, 150, 102, 107, 101, 138, - 168, 169, 100, 193, 91, 180, 88, 92, 179, 136, - 166, 172, 130, 127, 87, 170, 128, 126, 118, 105, - 112, 144, 125, 145, 113, 133, 132, 134, 0, 0, - 0, 160, 177, 194, 94, 0, 165, 184, 185, 186, - 187, 188, 189, 0, 0, 95, 108, 104, 143, 135, - 93, 114, 157, 117, 124, 149, 192, 140, 154, 98, - 176, 158, 311, 322, 317, 318, 315, 316, 314, 313, - 312, 324, 303, 304, 305, 306, 308, 0, 319, 320, - 307, 82, 89, 121, 191, 148, 106, 178, 139, 0, - 0, 789, 0, 270, 0, 0, 0, 103, 0, 267, - 0, 0, 0, 120, 310, 122, 0, 0, 159, 131, - 0, 0, 0, 0, 301, 302, 0, 0, 0, 0, - 0, 0, 0, 0, 54, 0, 0, 268, 289, 288, - 291, 292, 293, 294, 0, 0, 96, 290, 295, 296, - 297, 0, 0, 0, 265, 282, 0, 309, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 279, 280, 261, - 0, 0, 0, 323, 0, 281, 0, 0, 276, 277, - 278, 283, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 109, 0, 0, 0, 210, 0, 0, 321, 0, - 146, 0, 162, 111, 119, 83, 90, 0, 110, 137, - 151, 155, 0, 0, 0, 99, 0, 153, 141, 175, - 0, 142, 152, 123, 167, 147, 174, 182, 183, 164, - 181, 190, 84, 163, 173, 97, 156, 86, 171, 161, - 129, 115, 116, 85, 0, 150, 102, 107, 101, 138, - 168, 169, 100, 193, 91, 180, 88, 92, 179, 136, - 166, 172, 130, 127, 87, 170, 128, 126, 118, 105, - 112, 144, 125, 145, 113, 133, 132, 134, 0, 0, - 0, 160, 177, 194, 94, 0, 165, 184, 185, 186, - 187, 188, 189, 0, 0, 95, 108, 104, 143, 135, - 93, 114, 157, 117, 124, 149, 192, 140, 154, 98, - 176, 158, 311, 322, 317, 318, 315, 316, 314, 313, - 312, 324, 303, 304, 305, 306, 308, 0, 319, 320, - 307, 82, 89, 121, 191, 148, 106, 178, 139, 0, - 0, 0, 0, 270, 0, 0, 0, 103, 0, 267, - 0, 0, 0, 120, 310, 122, 0, 0, 159, 131, - 0, 0, 0, 0, 301, 302, 0, 0, 0, 0, - 0, 0, 0, 0, 54, 0, 498, 268, 289, 288, - 291, 292, 293, 294, 0, 0, 96, 290, 295, 296, - 297, 0, 0, 0, 265, 282, 0, 309, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 279, 280, 0, - 0, 0, 0, 323, 0, 281, 0, 0, 276, 277, - 278, 283, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 109, 0, 0, 0, 210, 0, 0, 321, 0, - 146, 0, 162, 111, 119, 83, 90, 0, 110, 137, - 151, 155, 0, 0, 0, 99, 0, 153, 141, 175, - 0, 142, 152, 123, 167, 147, 174, 182, 183, 164, - 181, 190, 84, 163, 173, 97, 156, 86, 171, 161, - 129, 115, 116, 85, 0, 150, 102, 107, 101, 138, - 168, 169, 100, 193, 91, 180, 88, 92, 179, 136, - 166, 172, 130, 127, 87, 170, 128, 126, 118, 105, - 112, 144, 125, 145, 113, 133, 132, 134, 0, 0, - 0, 160, 177, 194, 94, 0, 165, 184, 185, 186, - 187, 188, 189, 0, 0, 95, 108, 104, 143, 135, - 93, 114, 157, 117, 124, 149, 192, 140, 154, 98, - 176, 158, 311, 322, 317, 318, 315, 316, 314, 313, - 312, 324, 303, 304, 305, 306, 308, 0, 319, 320, - 307, 82, 89, 121, 191, 148, 106, 178, 139, 0, - 0, 0, 0, 270, 0, 0, 0, 103, 0, 267, - 0, 0, 0, 120, 310, 122, 0, 0, 159, 131, - 0, 0, 0, 0, 301, 302, 0, 0, 0, 0, - 0, 0, 0, 0, 54, 0, 0, 268, 289, 288, - 291, 292, 293, 294, 0, 0, 96, 290, 295, 296, - 297, 0, 0, 0, 265, 282, 0, 309, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 279, 280, 261, - 0, 0, 0, 323, 0, 281, 0, 0, 276, 277, - 278, 283, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 109, 0, 0, 0, 210, 0, 0, 321, 0, - 146, 0, 162, 111, 119, 83, 90, 0, 110, 137, - 151, 155, 0, 0, 0, 99, 0, 153, 141, 175, - 0, 142, 152, 123, 167, 147, 174, 182, 183, 164, 181, 190, 84, 163, 173, 97, 156, 86, 171, 161, 129, 115, 116, 85, 0, 150, 102, 107, 101, 138, 168, 169, 100, 193, 91, 180, 88, 92, 179, 136, 166, 172, 130, 127, 87, 170, 128, 126, 118, 105, - 112, 144, 125, 145, 113, 133, 132, 134, 0, 0, - 0, 160, 177, 194, 94, 0, 165, 184, 185, 186, + 112, 144, 125, 145, 113, 133, 132, 134, 0, 347, + 0, 160, 177, 194, 94, 362, 165, 184, 185, 186, 187, 188, 189, 0, 0, 95, 108, 104, 143, 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, 98, - 176, 158, 311, 322, 317, 318, 315, 316, 314, 313, - 312, 324, 303, 304, 305, 306, 308, 24, 319, 320, - 307, 82, 89, 121, 191, 148, 106, 178, 0, 139, - 0, 0, 0, 0, 270, 0, 0, 0, 103, 0, - 267, 0, 0, 0, 120, 310, 122, 0, 0, 159, - 131, 0, 0, 0, 0, 301, 302, 0, 0, 0, - 0, 0, 0, 0, 0, 54, 0, 0, 268, 289, - 288, 291, 292, 293, 294, 0, 0, 96, 290, 295, - 296, 297, 0, 0, 0, 265, 282, 0, 309, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 279, 280, - 0, 0, 0, 0, 323, 0, 281, 0, 0, 276, - 277, 278, 283, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 109, 0, 0, 0, 210, 0, 0, 321, - 0, 146, 0, 162, 111, 119, 83, 90, 0, 110, - 137, 151, 155, 0, 0, 0, 99, 0, 153, 141, - 175, 0, 142, 152, 123, 167, 147, 174, 182, 183, - 164, 181, 190, 84, 163, 173, 97, 156, 86, 171, - 161, 129, 115, 116, 85, 0, 150, 102, 107, 101, - 138, 168, 169, 100, 193, 91, 180, 88, 92, 179, - 136, 166, 172, 130, 127, 87, 170, 128, 126, 118, - 105, 112, 144, 125, 145, 113, 133, 132, 134, 0, - 0, 0, 160, 177, 194, 94, 0, 165, 184, 185, - 186, 187, 188, 189, 0, 0, 95, 108, 104, 143, - 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, - 98, 176, 158, 311, 322, 317, 318, 315, 316, 314, - 313, 312, 324, 303, 304, 305, 306, 308, 0, 319, - 320, 307, 82, 89, 121, 191, 148, 106, 178, 139, - 0, 0, 0, 0, 270, 0, 0, 0, 103, 0, - 267, 0, 0, 0, 120, 310, 122, 0, 0, 159, - 131, 0, 0, 0, 0, 301, 302, 0, 0, 0, - 0, 0, 0, 0, 0, 54, 0, 0, 268, 289, - 288, 291, 292, 293, 294, 0, 0, 96, 290, 295, - 296, 297, 0, 0, 0, 265, 282, 0, 309, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 279, 280, - 0, 0, 0, 0, 323, 0, 281, 0, 0, 276, - 277, 278, 283, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 109, 0, 0, 0, 210, 0, 0, 321, - 0, 146, 0, 162, 111, 119, 83, 90, 0, 110, - 137, 151, 155, 0, 0, 0, 99, 0, 153, 141, - 175, 0, 142, 152, 123, 167, 147, 174, 182, 183, - 164, 181, 190, 84, 163, 173, 97, 156, 86, 171, - 161, 129, 115, 116, 85, 0, 150, 102, 107, 101, - 138, 168, 169, 100, 193, 91, 180, 88, 92, 179, - 136, 166, 172, 130, 127, 87, 170, 128, 126, 118, - 105, 112, 144, 125, 145, 113, 133, 132, 134, 0, - 0, 0, 160, 177, 194, 94, 0, 165, 184, 185, - 186, 187, 188, 189, 0, 0, 95, 108, 104, 143, - 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, - 98, 176, 158, 311, 322, 317, 318, 315, 316, 314, - 313, 312, 324, 303, 304, 305, 306, 308, 0, 319, - 320, 307, 82, 89, 121, 191, 148, 106, 178, 139, - 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, - 0, 0, 0, 0, 120, 310, 122, 0, 0, 159, - 131, 0, 0, 0, 0, 301, 302, 0, 0, 0, - 0, 0, 0, 0, 0, 54, 0, 0, 268, 289, - 288, 291, 292, 293, 294, 0, 0, 96, 290, 295, - 296, 297, 0, 0, 0, 0, 282, 0, 309, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 279, 280, - 0, 0, 0, 0, 323, 0, 281, 0, 0, 276, - 277, 278, 283, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 109, 0, 0, 0, 210, 0, 0, 321, - 0, 146, 0, 162, 111, 119, 83, 90, 0, 110, - 137, 151, 155, 0, 0, 0, 99, 0, 153, 141, - 175, 1431, 142, 152, 123, 167, 147, 174, 182, 183, - 164, 181, 190, 84, 163, 173, 97, 156, 86, 171, - 161, 129, 115, 116, 85, 0, 150, 102, 107, 101, - 138, 168, 169, 100, 193, 91, 180, 88, 92, 179, - 136, 166, 172, 130, 127, 87, 170, 128, 126, 118, - 105, 112, 144, 125, 145, 113, 133, 132, 134, 0, - 0, 0, 160, 177, 194, 94, 0, 165, 184, 185, - 186, 187, 188, 189, 0, 0, 95, 108, 104, 143, - 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, - 98, 176, 158, 311, 322, 317, 318, 315, 316, 314, - 313, 312, 324, 303, 304, 305, 306, 308, 0, 319, - 320, 307, 82, 89, 121, 191, 148, 106, 178, 139, - 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, - 0, 0, 0, 0, 120, 310, 122, 0, 0, 159, - 131, 0, 0, 0, 0, 301, 302, 0, 0, 0, - 0, 0, 0, 0, 0, 54, 0, 498, 268, 289, - 288, 291, 292, 293, 294, 0, 0, 96, 290, 295, - 296, 297, 0, 0, 0, 0, 282, 0, 309, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 279, 280, - 0, 0, 0, 0, 323, 0, 281, 0, 0, 276, - 277, 278, 283, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 109, 0, 0, 0, 210, 0, 0, 321, - 0, 146, 0, 162, 111, 119, 83, 90, 0, 110, - 137, 151, 155, 0, 0, 0, 99, 0, 153, 141, - 175, 0, 142, 152, 123, 167, 147, 174, 182, 183, - 164, 181, 190, 84, 163, 173, 97, 156, 86, 171, - 161, 129, 115, 116, 85, 0, 150, 102, 107, 101, - 138, 168, 169, 100, 193, 91, 180, 88, 92, 179, - 136, 166, 172, 130, 127, 87, 170, 128, 126, 118, - 105, 112, 144, 125, 145, 113, 133, 132, 134, 0, - 0, 0, 160, 177, 194, 94, 0, 165, 184, 185, - 186, 187, 188, 189, 0, 0, 95, 108, 104, 143, - 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, - 98, 176, 158, 311, 322, 317, 318, 315, 316, 314, - 313, 312, 324, 303, 304, 305, 306, 308, 0, 319, - 320, 307, 82, 89, 121, 191, 148, 106, 178, 139, - 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, - 0, 0, 0, 0, 120, 310, 122, 0, 0, 159, - 131, 0, 0, 0, 0, 301, 302, 0, 0, 0, - 0, 0, 0, 0, 0, 54, 0, 0, 268, 289, - 288, 291, 292, 293, 294, 0, 0, 96, 290, 295, - 296, 297, 0, 0, 0, 0, 282, 0, 309, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 279, 280, - 0, 0, 0, 0, 323, 0, 281, 0, 0, 276, - 277, 278, 283, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 109, 0, 0, 0, 210, 0, 0, 321, - 0, 146, 0, 162, 111, 119, 83, 90, 0, 110, - 137, 151, 155, 0, 0, 0, 99, 0, 153, 141, - 175, 0, 142, 152, 123, 167, 147, 174, 182, 183, - 164, 181, 190, 84, 163, 173, 97, 156, 86, 171, - 161, 129, 115, 116, 85, 0, 150, 102, 107, 101, - 138, 168, 169, 100, 193, 91, 180, 88, 92, 179, - 136, 166, 172, 130, 127, 87, 170, 128, 126, 118, - 105, 112, 144, 125, 145, 113, 133, 132, 134, 0, - 0, 0, 160, 177, 194, 94, 0, 165, 184, 185, - 186, 187, 188, 189, 0, 0, 95, 108, 104, 143, - 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, - 98, 176, 158, 311, 322, 317, 318, 315, 316, 314, - 313, 312, 324, 303, 304, 305, 306, 308, 0, 319, - 320, 307, 82, 89, 121, 191, 148, 106, 178, 139, - 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, - 0, 0, 0, 0, 120, 0, 122, 0, 0, 159, - 131, 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, 96, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 532, 531, 541, 542, 534, 535, - 536, 537, 538, 539, 540, 533, 0, 0, 543, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 109, 0, 0, 0, 210, 0, 0, 0, - 0, 146, 0, 162, 111, 119, 83, 90, 0, 110, - 137, 151, 155, 0, 0, 0, 99, 0, 153, 141, - 175, 0, 142, 152, 123, 167, 147, 174, 182, 183, - 164, 181, 190, 84, 163, 173, 97, 156, 86, 171, - 161, 129, 115, 116, 85, 0, 150, 102, 107, 101, - 138, 168, 169, 100, 193, 91, 180, 88, 92, 179, - 136, 166, 172, 130, 127, 87, 170, 128, 126, 118, - 105, 112, 144, 125, 145, 113, 133, 132, 134, 0, - 0, 0, 160, 177, 194, 94, 0, 165, 184, 185, - 186, 187, 188, 189, 0, 0, 95, 108, 104, 143, - 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, - 98, 176, 158, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 82, 89, 121, 191, 148, 106, 178, 139, - 0, 0, 0, 520, 0, 0, 0, 0, 103, 0, - 0, 0, 0, 0, 120, 0, 122, 0, 0, 159, - 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, - 522, 0, 0, 0, 0, 0, 0, 96, 0, 0, - 0, 0, 0, 517, 516, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 518, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 109, 0, 0, 0, 210, 0, 0, 0, - 0, 146, 0, 162, 111, 119, 83, 90, 0, 110, - 137, 151, 155, 0, 0, 0, 99, 0, 153, 141, - 175, 0, 142, 152, 123, 167, 147, 174, 182, 183, - 164, 181, 190, 84, 163, 173, 97, 156, 86, 171, - 161, 129, 115, 116, 85, 0, 150, 102, 107, 101, - 138, 168, 169, 100, 193, 91, 180, 88, 92, 179, - 136, 166, 172, 130, 127, 87, 170, 128, 126, 118, - 105, 112, 144, 125, 145, 113, 133, 132, 134, 0, - 0, 0, 160, 177, 194, 94, 0, 165, 184, 185, - 186, 187, 188, 189, 0, 0, 95, 108, 104, 143, - 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, - 98, 176, 158, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 139, 0, 82, 89, 121, 191, 148, 106, 178, 103, - 0, 0, 0, 0, 0, 120, 0, 122, 0, 0, - 159, 131, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, + 176, 158, 358, 361, 356, 357, 395, 396, 432, 433, + 434, 412, 353, 0, 359, 360, 0, 416, 422, 423, + 398, 82, 89, 121, 191, 148, 106, 178, 426, 415, + 0, 386, 429, 364, 378, 437, 379, 380, 408, 350, + 394, 139, 376, 0, 367, 345, 373, 346, 365, 388, + 103, 391, 363, 417, 397, 428, 120, 435, 122, 402, + 0, 159, 131, 0, 0, 390, 419, 392, 413, 385, + 409, 355, 401, 430, 377, 406, 431, 0, 0, 0, + 80, 0, 0, 0, 0, 0, 0, 0, 0, 96, + 0, 404, 425, 375, 405, 407, 344, 403, 0, 348, + 351, 436, 421, 370, 371, 0, 0, 0, 0, 0, + 0, 0, 389, 393, 410, 383, 0, 0, 0, 0, + 0, 0, 0, 0, 368, 0, 400, 0, 0, 0, + 352, 349, 0, 0, 387, 0, 0, 0, 354, 0, + 369, 411, 0, 343, 109, 414, 420, 384, 210, 424, + 382, 381, 427, 146, 0, 162, 111, 119, 83, 90, + 0, 110, 137, 151, 155, 418, 366, 374, 99, 372, + 153, 141, 175, 399, 142, 152, 123, 167, 147, 174, + 182, 183, 164, 181, 190, 84, 163, 173, 97, 156, + 86, 171, 161, 129, 115, 116, 85, 0, 150, 102, + 107, 101, 138, 168, 169, 100, 193, 91, 180, 88, + 341, 179, 136, 166, 172, 130, 127, 87, 170, 128, + 126, 118, 105, 112, 144, 125, 145, 113, 133, 132, + 134, 0, 347, 0, 160, 177, 194, 94, 362, 165, + 184, 185, 186, 187, 188, 189, 0, 0, 95, 108, + 104, 143, 342, 340, 114, 157, 117, 124, 149, 192, + 140, 154, 98, 176, 158, 358, 361, 356, 357, 395, + 396, 432, 433, 434, 412, 353, 0, 359, 360, 0, + 416, 422, 423, 398, 82, 89, 121, 191, 148, 106, + 178, 426, 415, 0, 386, 429, 364, 378, 437, 379, + 380, 408, 350, 394, 139, 376, 0, 367, 345, 373, + 346, 365, 388, 103, 391, 363, 417, 397, 428, 120, + 435, 122, 402, 0, 159, 131, 0, 0, 390, 419, + 392, 413, 385, 409, 355, 401, 430, 377, 406, 431, + 0, 0, 0, 208, 0, 0, 0, 0, 0, 0, + 0, 0, 96, 0, 404, 425, 375, 405, 407, 344, + 403, 0, 348, 351, 436, 421, 370, 371, 0, 0, + 0, 0, 0, 0, 0, 389, 393, 410, 383, 0, + 0, 0, 0, 0, 0, 0, 0, 368, 0, 400, + 0, 0, 0, 352, 349, 0, 0, 387, 0, 0, + 0, 354, 0, 369, 411, 0, 343, 109, 414, 420, + 384, 210, 424, 382, 381, 427, 146, 0, 162, 111, + 119, 83, 90, 0, 110, 137, 151, 155, 418, 366, + 374, 99, 372, 153, 141, 175, 399, 142, 152, 123, + 167, 147, 174, 182, 183, 164, 181, 190, 84, 163, + 173, 97, 156, 86, 171, 161, 129, 115, 116, 85, + 0, 150, 102, 107, 101, 138, 168, 169, 100, 193, + 91, 180, 88, 92, 179, 136, 166, 172, 130, 127, + 87, 170, 128, 126, 118, 105, 112, 144, 125, 145, + 113, 133, 132, 134, 0, 347, 0, 160, 177, 194, + 94, 362, 165, 184, 185, 186, 187, 188, 189, 0, + 0, 95, 108, 104, 143, 135, 93, 114, 157, 117, + 124, 149, 192, 140, 154, 98, 176, 158, 358, 361, + 356, 357, 395, 396, 432, 433, 434, 412, 353, 0, + 359, 360, 0, 416, 422, 423, 398, 82, 89, 121, + 191, 148, 106, 178, 426, 415, 0, 386, 429, 364, + 378, 437, 379, 380, 408, 350, 394, 139, 376, 0, + 367, 345, 373, 346, 365, 388, 103, 391, 363, 417, + 397, 428, 120, 435, 122, 402, 0, 159, 131, 0, + 0, 390, 419, 392, 413, 385, 409, 355, 401, 430, + 377, 406, 431, 0, 0, 0, 80, 0, 0, 0, + 0, 0, 0, 0, 0, 96, 0, 404, 425, 375, + 405, 407, 344, 403, 0, 348, 351, 436, 421, 370, + 371, 0, 0, 0, 0, 0, 0, 0, 389, 393, + 410, 383, 0, 0, 0, 0, 0, 0, 0, 0, + 368, 0, 400, 0, 0, 0, 352, 349, 0, 0, + 387, 0, 0, 0, 354, 0, 369, 411, 0, 343, + 109, 414, 420, 384, 210, 424, 382, 381, 427, 146, + 0, 162, 111, 119, 83, 90, 0, 110, 137, 151, + 155, 418, 366, 374, 99, 372, 153, 141, 175, 399, + 142, 152, 123, 167, 147, 174, 182, 183, 164, 181, + 190, 84, 163, 622, 97, 156, 86, 171, 161, 129, + 115, 116, 85, 0, 150, 102, 107, 101, 138, 168, + 169, 100, 193, 91, 180, 88, 341, 179, 136, 166, + 172, 130, 127, 87, 170, 128, 126, 118, 105, 112, + 144, 125, 145, 113, 133, 132, 134, 0, 347, 0, + 160, 177, 194, 94, 362, 165, 184, 185, 186, 187, + 188, 189, 0, 0, 95, 108, 104, 143, 342, 340, + 114, 157, 117, 124, 149, 192, 140, 154, 98, 176, + 158, 358, 361, 356, 357, 395, 396, 432, 433, 434, + 412, 353, 0, 359, 360, 0, 416, 422, 423, 398, + 82, 89, 121, 191, 148, 106, 178, 426, 415, 0, + 386, 429, 364, 378, 437, 379, 380, 408, 350, 394, + 139, 376, 0, 367, 345, 373, 346, 365, 388, 103, + 391, 363, 417, 397, 428, 120, 435, 122, 402, 0, + 159, 131, 0, 0, 390, 419, 392, 413, 385, 409, + 355, 401, 430, 377, 406, 431, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 109, 76, 77, 0, 73, 0, 0, - 0, 78, 146, 0, 162, 111, 119, 83, 90, 0, + 404, 425, 375, 405, 407, 344, 403, 0, 348, 351, + 436, 421, 370, 371, 0, 0, 0, 0, 0, 0, + 0, 389, 393, 410, 383, 0, 0, 0, 0, 0, + 0, 0, 0, 368, 0, 400, 0, 0, 0, 352, + 349, 0, 0, 387, 0, 0, 0, 354, 0, 369, + 411, 0, 343, 109, 414, 420, 384, 210, 424, 382, + 381, 427, 146, 0, 162, 111, 119, 83, 90, 0, + 110, 137, 151, 155, 418, 366, 374, 99, 372, 153, + 141, 175, 399, 142, 152, 123, 167, 147, 174, 182, + 183, 164, 181, 190, 84, 163, 332, 97, 156, 86, + 171, 161, 129, 115, 116, 85, 0, 150, 102, 107, + 101, 138, 168, 169, 100, 193, 91, 180, 88, 341, + 179, 136, 166, 172, 130, 127, 87, 170, 128, 126, + 118, 105, 112, 144, 125, 145, 113, 133, 132, 134, + 0, 347, 0, 160, 177, 194, 94, 362, 165, 184, + 185, 186, 187, 188, 189, 0, 0, 95, 108, 104, + 143, 342, 340, 335, 334, 117, 124, 149, 192, 140, + 154, 98, 176, 158, 358, 361, 356, 357, 395, 396, + 432, 433, 434, 412, 353, 0, 359, 360, 0, 416, + 422, 423, 398, 82, 89, 121, 191, 148, 106, 178, + 139, 0, 0, 0, 0, 270, 0, 0, 0, 103, + 0, 267, 0, 0, 0, 120, 310, 122, 0, 0, + 159, 131, 0, 0, 0, 0, 301, 302, 0, 0, + 0, 0, 0, 0, 856, 0, 54, 0, 0, 268, + 289, 288, 291, 292, 293, 294, 0, 0, 96, 290, + 295, 296, 297, 857, 0, 0, 265, 282, 0, 309, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 279, + 280, 0, 0, 0, 0, 323, 0, 281, 0, 0, + 276, 277, 278, 283, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 109, 0, 0, 0, 210, 0, 0, + 321, 0, 146, 0, 162, 111, 119, 83, 90, 0, 110, 137, 151, 155, 0, 0, 0, 99, 0, 153, 141, 175, 0, 142, 152, 123, 167, 147, 174, 182, 183, 164, 181, 190, 84, 163, 173, 97, 156, 86, @@ -1577,21 +1295,71 @@ var yyAct = [...]int{ 0, 0, 0, 160, 177, 194, 94, 0, 165, 184, 185, 186, 187, 188, 189, 0, 0, 95, 108, 104, 143, 135, 93, 114, 157, 117, 124, 149, 192, 140, - 154, 98, 176, 158, 0, 75, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 82, 89, 121, 191, 148, 106, 178, - 139, 0, 0, 0, 843, 0, 0, 0, 0, 103, - 0, 0, 0, 0, 0, 120, 0, 122, 0, 0, - 159, 131, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, - 0, 845, 0, 0, 0, 0, 0, 0, 96, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 154, 98, 176, 158, 311, 322, 317, 318, 315, 316, + 314, 313, 312, 324, 303, 304, 305, 306, 308, 0, + 319, 320, 307, 82, 89, 121, 191, 148, 106, 178, + 139, 0, 0, 789, 0, 270, 0, 0, 0, 103, + 0, 267, 0, 0, 0, 120, 310, 122, 0, 0, + 159, 131, 0, 0, 0, 0, 301, 302, 0, 0, + 0, 0, 0, 0, 0, 0, 54, 0, 0, 268, + 289, 288, 291, 292, 293, 294, 0, 0, 96, 290, + 295, 296, 297, 0, 0, 0, 265, 282, 0, 309, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 279, + 280, 261, 0, 0, 0, 323, 0, 281, 0, 0, + 276, 277, 278, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 210, 0, 0, - 0, 0, 146, 0, 162, 111, 119, 83, 90, 0, + 321, 0, 146, 0, 162, 111, 119, 83, 90, 0, + 110, 137, 151, 155, 0, 0, 0, 99, 0, 153, + 141, 175, 0, 142, 152, 123, 167, 147, 174, 182, + 183, 164, 181, 190, 84, 163, 173, 97, 156, 86, + 171, 161, 129, 115, 116, 85, 0, 150, 102, 107, + 101, 138, 168, 169, 100, 193, 91, 180, 88, 92, + 179, 136, 166, 172, 130, 127, 87, 170, 128, 126, + 118, 105, 112, 144, 125, 145, 113, 133, 132, 134, + 0, 0, 0, 160, 177, 194, 94, 0, 165, 184, + 185, 186, 187, 188, 189, 0, 0, 95, 108, 104, + 143, 135, 93, 114, 157, 117, 124, 149, 192, 140, + 154, 98, 176, 158, 311, 322, 317, 318, 315, 316, + 314, 313, 312, 324, 303, 304, 305, 306, 308, 0, + 319, 320, 307, 82, 89, 121, 191, 148, 106, 178, + 139, 0, 0, 0, 0, 270, 0, 0, 0, 103, + 0, 267, 0, 0, 0, 120, 310, 122, 0, 0, + 159, 131, 0, 0, 0, 0, 301, 302, 0, 0, + 0, 0, 0, 0, 0, 0, 54, 0, 498, 268, + 289, 288, 291, 292, 293, 294, 0, 0, 96, 290, + 295, 296, 297, 0, 0, 0, 265, 282, 0, 309, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 279, + 280, 0, 0, 0, 0, 323, 0, 281, 0, 0, + 276, 277, 278, 283, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 109, 0, 0, 0, 210, 0, 0, + 321, 0, 146, 0, 162, 111, 119, 83, 90, 0, + 110, 137, 151, 155, 0, 0, 0, 99, 0, 153, + 141, 175, 0, 142, 152, 123, 167, 147, 174, 182, + 183, 164, 181, 190, 84, 163, 173, 97, 156, 86, + 171, 161, 129, 115, 116, 85, 0, 150, 102, 107, + 101, 138, 168, 169, 100, 193, 91, 180, 88, 92, + 179, 136, 166, 172, 130, 127, 87, 170, 128, 126, + 118, 105, 112, 144, 125, 145, 113, 133, 132, 134, + 0, 0, 0, 160, 177, 194, 94, 0, 165, 184, + 185, 186, 187, 188, 189, 0, 0, 95, 108, 104, + 143, 135, 93, 114, 157, 117, 124, 149, 192, 140, + 154, 98, 176, 158, 311, 322, 317, 318, 315, 316, + 314, 313, 312, 324, 303, 304, 305, 306, 308, 0, + 319, 320, 307, 82, 89, 121, 191, 148, 106, 178, + 139, 0, 0, 0, 0, 270, 0, 0, 0, 103, + 0, 267, 0, 0, 0, 120, 310, 122, 0, 0, + 159, 131, 0, 0, 0, 0, 301, 302, 0, 0, + 0, 0, 0, 0, 0, 0, 54, 0, 0, 268, + 289, 288, 291, 292, 293, 294, 0, 0, 96, 290, + 295, 296, 297, 0, 0, 0, 265, 282, 0, 309, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 279, + 280, 261, 0, 0, 0, 323, 0, 281, 0, 0, + 276, 277, 278, 283, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 109, 0, 0, 0, 210, 0, 0, + 321, 0, 146, 0, 162, 111, 119, 83, 90, 0, 110, 137, 151, 155, 0, 0, 0, 99, 0, 153, 141, 175, 0, 142, 152, 123, 167, 147, 174, 182, 183, 164, 181, 190, 84, 163, 173, 97, 156, 86, @@ -1602,16 +1370,167 @@ var yyAct = [...]int{ 0, 0, 0, 160, 177, 194, 94, 0, 165, 184, 185, 186, 187, 188, 189, 0, 0, 95, 108, 104, 143, 135, 93, 114, 157, 117, 124, 149, 192, 140, - 154, 98, 176, 158, 0, 0, 0, 0, 0, 24, + 154, 98, 176, 158, 311, 322, 317, 318, 315, 316, + 314, 313, 312, 324, 303, 304, 305, 306, 308, 24, + 319, 320, 307, 82, 89, 121, 191, 148, 106, 178, + 0, 139, 0, 0, 0, 0, 270, 0, 0, 0, + 103, 0, 267, 0, 0, 0, 120, 310, 122, 0, + 0, 159, 131, 0, 0, 0, 0, 301, 302, 0, + 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, + 268, 289, 288, 291, 292, 293, 294, 0, 0, 96, + 290, 295, 296, 297, 0, 0, 0, 265, 282, 0, + 309, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 139, 0, 82, 89, 121, 191, 148, 106, 178, + 279, 280, 0, 0, 0, 0, 323, 0, 281, 0, + 0, 276, 277, 278, 283, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 109, 0, 0, 0, 210, 0, + 0, 321, 0, 146, 0, 162, 111, 119, 83, 90, + 0, 110, 137, 151, 155, 0, 0, 0, 99, 0, + 153, 141, 175, 0, 142, 152, 123, 167, 147, 174, + 182, 183, 164, 181, 190, 84, 163, 173, 97, 156, + 86, 171, 161, 129, 115, 116, 85, 0, 150, 102, + 107, 101, 138, 168, 169, 100, 193, 91, 180, 88, + 92, 179, 136, 166, 172, 130, 127, 87, 170, 128, + 126, 118, 105, 112, 144, 125, 145, 113, 133, 132, + 134, 0, 0, 0, 160, 177, 194, 94, 0, 165, + 184, 185, 186, 187, 188, 189, 0, 0, 95, 108, + 104, 143, 135, 93, 114, 157, 117, 124, 149, 192, + 140, 154, 98, 176, 158, 311, 322, 317, 318, 315, + 316, 314, 313, 312, 324, 303, 304, 305, 306, 308, + 0, 319, 320, 307, 82, 89, 121, 191, 148, 106, + 178, 139, 0, 0, 0, 0, 270, 0, 0, 0, + 103, 0, 267, 0, 0, 0, 120, 310, 122, 0, + 0, 159, 131, 0, 0, 0, 0, 301, 302, 0, + 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, + 268, 289, 288, 291, 292, 293, 294, 0, 0, 96, + 290, 295, 296, 297, 0, 0, 0, 265, 282, 0, + 309, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 279, 280, 0, 0, 0, 0, 323, 0, 281, 0, + 0, 276, 277, 278, 283, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 109, 0, 0, 0, 210, 0, + 0, 321, 0, 146, 0, 162, 111, 119, 83, 90, + 0, 110, 137, 151, 155, 0, 0, 0, 99, 0, + 153, 141, 175, 0, 142, 152, 123, 167, 147, 174, + 182, 183, 164, 181, 190, 84, 163, 173, 97, 156, + 86, 171, 161, 129, 115, 116, 85, 0, 150, 102, + 107, 101, 138, 168, 169, 100, 193, 91, 180, 88, + 92, 179, 136, 166, 172, 130, 127, 87, 170, 128, + 126, 118, 105, 112, 144, 125, 145, 113, 133, 132, + 134, 0, 0, 0, 160, 177, 194, 94, 0, 165, + 184, 185, 186, 187, 188, 189, 0, 0, 95, 108, + 104, 143, 135, 93, 114, 157, 117, 124, 149, 192, + 140, 154, 98, 176, 158, 311, 322, 317, 318, 315, + 316, 314, 313, 312, 324, 303, 304, 305, 306, 308, + 0, 319, 320, 307, 82, 89, 121, 191, 148, 106, + 178, 139, 0, 0, 0, 0, 0, 0, 0, 0, + 103, 0, 0, 0, 0, 0, 120, 310, 122, 0, + 0, 159, 131, 0, 0, 0, 0, 301, 302, 0, + 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, + 268, 289, 288, 291, 292, 293, 294, 0, 0, 96, + 290, 295, 296, 297, 0, 0, 0, 0, 282, 0, + 309, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 279, 280, 0, 0, 0, 0, 323, 0, 281, 0, + 0, 276, 277, 278, 283, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 109, 0, 0, 0, 210, 0, + 0, 321, 0, 146, 0, 162, 111, 119, 83, 90, + 0, 110, 137, 151, 155, 0, 0, 0, 99, 0, + 153, 141, 175, 1431, 142, 152, 123, 167, 147, 174, + 182, 183, 164, 181, 190, 84, 163, 173, 97, 156, + 86, 171, 161, 129, 115, 116, 85, 0, 150, 102, + 107, 101, 138, 168, 169, 100, 193, 91, 180, 88, + 92, 179, 136, 166, 172, 130, 127, 87, 170, 128, + 126, 118, 105, 112, 144, 125, 145, 113, 133, 132, + 134, 0, 0, 0, 160, 177, 194, 94, 0, 165, + 184, 185, 186, 187, 188, 189, 0, 0, 95, 108, + 104, 143, 135, 93, 114, 157, 117, 124, 149, 192, + 140, 154, 98, 176, 158, 311, 322, 317, 318, 315, + 316, 314, 313, 312, 324, 303, 304, 305, 306, 308, + 0, 319, 320, 307, 82, 89, 121, 191, 148, 106, + 178, 139, 0, 0, 0, 0, 0, 0, 0, 0, + 103, 0, 0, 0, 0, 0, 120, 310, 122, 0, + 0, 159, 131, 0, 0, 0, 0, 301, 302, 0, + 0, 0, 0, 0, 0, 0, 0, 54, 0, 498, + 268, 289, 288, 291, 292, 293, 294, 0, 0, 96, + 290, 295, 296, 297, 0, 0, 0, 0, 282, 0, + 309, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 279, 280, 0, 0, 0, 0, 323, 0, 281, 0, + 0, 276, 277, 278, 283, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 109, 0, 0, 0, 210, 0, + 0, 321, 0, 146, 0, 162, 111, 119, 83, 90, + 0, 110, 137, 151, 155, 0, 0, 0, 99, 0, + 153, 141, 175, 0, 142, 152, 123, 167, 147, 174, + 182, 183, 164, 181, 190, 84, 163, 173, 97, 156, + 86, 171, 161, 129, 115, 116, 85, 0, 150, 102, + 107, 101, 138, 168, 169, 100, 193, 91, 180, 88, + 92, 179, 136, 166, 172, 130, 127, 87, 170, 128, + 126, 118, 105, 112, 144, 125, 145, 113, 133, 132, + 134, 0, 0, 0, 160, 177, 194, 94, 0, 165, + 184, 185, 186, 187, 188, 189, 0, 0, 95, 108, + 104, 143, 135, 93, 114, 157, 117, 124, 149, 192, + 140, 154, 98, 176, 158, 311, 322, 317, 318, 315, + 316, 314, 313, 312, 324, 303, 304, 305, 306, 308, + 0, 319, 320, 307, 82, 89, 121, 191, 148, 106, + 178, 139, 0, 0, 0, 0, 0, 0, 0, 0, + 103, 0, 0, 0, 0, 0, 120, 310, 122, 0, + 0, 159, 131, 0, 0, 0, 0, 301, 302, 0, + 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, + 268, 289, 288, 291, 292, 293, 294, 0, 0, 96, + 290, 295, 296, 297, 0, 0, 0, 0, 282, 0, + 309, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 279, 280, 0, 0, 0, 0, 323, 0, 281, 0, + 0, 276, 277, 278, 283, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 109, 0, 0, 0, 210, 0, + 0, 321, 0, 146, 0, 162, 111, 119, 83, 90, + 0, 110, 137, 151, 155, 0, 0, 0, 99, 0, + 153, 141, 175, 0, 142, 152, 123, 167, 147, 174, + 182, 183, 164, 181, 190, 84, 163, 173, 97, 156, + 86, 171, 161, 129, 115, 116, 85, 0, 150, 102, + 107, 101, 138, 168, 169, 100, 193, 91, 180, 88, + 92, 179, 136, 166, 172, 130, 127, 87, 170, 128, + 126, 118, 105, 112, 144, 125, 145, 113, 133, 132, + 134, 0, 0, 0, 160, 177, 194, 94, 0, 165, + 184, 185, 186, 187, 188, 189, 0, 0, 95, 108, + 104, 143, 135, 93, 114, 157, 117, 124, 149, 192, + 140, 154, 98, 176, 158, 311, 322, 317, 318, 315, + 316, 314, 313, 312, 324, 303, 304, 305, 306, 308, + 0, 319, 320, 307, 82, 89, 121, 191, 148, 106, + 178, 139, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 120, 0, 122, 0, 0, 159, 131, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 532, 531, 541, 542, + 534, 535, 536, 537, 538, 539, 540, 533, 0, 0, + 543, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 109, 0, 0, 0, 210, 0, + 0, 0, 0, 146, 0, 162, 111, 119, 83, 90, + 0, 110, 137, 151, 155, 0, 0, 0, 99, 0, + 153, 141, 175, 0, 142, 152, 123, 167, 147, 174, + 182, 183, 164, 181, 190, 84, 163, 173, 97, 156, + 86, 171, 161, 129, 115, 116, 85, 0, 150, 102, + 107, 101, 138, 168, 169, 100, 193, 91, 180, 88, + 92, 179, 136, 166, 172, 130, 127, 87, 170, 128, + 126, 118, 105, 112, 144, 125, 145, 113, 133, 132, + 134, 0, 0, 0, 160, 177, 194, 94, 0, 165, + 184, 185, 186, 187, 188, 189, 0, 0, 95, 108, + 104, 143, 135, 93, 114, 157, 117, 124, 149, 192, + 140, 154, 98, 176, 158, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 89, 121, 191, 148, 106, + 178, 139, 0, 0, 0, 520, 0, 0, 0, 0, + 103, 0, 0, 0, 0, 0, 120, 0, 122, 0, + 0, 159, 131, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 0, 522, 0, 0, 0, 0, 0, 0, 96, + 0, 0, 0, 0, 0, 517, 516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 210, 0, @@ -1627,19 +1546,19 @@ var yyAct = [...]int{ 184, 185, 186, 187, 188, 189, 0, 0, 95, 108, 104, 143, 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, 98, 176, 158, 0, 0, 0, 0, 0, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 82, 89, 121, 191, 148, 106, 178, 103, 0, 0, 0, 0, 0, 120, 0, 122, 0, 0, 159, 131, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, - 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, - 96, 0, 0, 0, 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, + 96, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 109, 0, 0, 0, 210, - 0, 0, 0, 0, 146, 0, 162, 111, 119, 83, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 109, 76, 77, 0, 73, + 0, 0, 0, 78, 146, 0, 162, 111, 119, 83, 90, 0, 110, 137, 151, 155, 0, 0, 0, 99, 0, 153, 141, 175, 0, 142, 152, 123, 167, 147, 174, 182, 183, 164, 181, 190, 84, 163, 173, 97, @@ -1650,7 +1569,7 @@ var yyAct = [...]int{ 132, 134, 0, 0, 0, 160, 177, 194, 94, 0, 165, 184, 185, 186, 187, 188, 189, 0, 0, 95, 108, 104, 143, 135, 93, 114, 157, 117, 124, 149, - 192, 140, 154, 98, 176, 158, 0, 0, 0, 0, + 192, 140, 154, 98, 176, 158, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 89, 121, 191, 148, 106, 178, 139, 0, 0, 0, 843, 0, 0, 0, @@ -1666,7 +1585,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 109, 0, 0, 0, 210, 0, 0, 0, 0, 146, 0, 162, 111, 119, 83, 90, 0, 110, 137, 151, 155, 0, 0, 0, 99, - 0, 153, 141, 175, 0, 841, 152, 123, 167, 147, + 0, 153, 141, 175, 0, 142, 152, 123, 167, 147, 174, 182, 183, 164, 181, 190, 84, 163, 173, 97, 156, 86, 171, 161, 129, 115, 116, 85, 0, 150, 102, 107, 101, 138, 168, 169, 100, 193, 91, 180, @@ -1676,12 +1595,12 @@ var yyAct = [...]int{ 165, 184, 185, 186, 187, 188, 189, 0, 0, 95, 108, 104, 143, 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, 98, 176, 158, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 82, 89, 121, 191, 148, 106, 178, 103, 0, 0, 0, 0, 0, 120, 0, 122, 0, 0, 159, 131, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 80, 0, 0, 740, 0, 0, 741, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1700,12 +1619,12 @@ var yyAct = [...]int{ 0, 165, 184, 185, 186, 187, 188, 189, 0, 0, 95, 108, 104, 143, 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, 98, 176, 158, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 82, 89, 121, 191, - 148, 106, 178, 103, 0, 631, 0, 0, 0, 120, + 148, 106, 178, 103, 0, 0, 0, 0, 0, 120, 0, 122, 0, 0, 159, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 80, 0, 630, 0, 0, 0, 0, + 54, 0, 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1725,12 +1644,37 @@ var yyAct = [...]int{ 0, 95, 108, 104, 143, 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, 98, 176, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 82, 89, 121, + 191, 148, 106, 178, 139, 0, 0, 0, 843, 0, + 0, 0, 0, 103, 0, 0, 0, 0, 0, 120, + 0, 122, 0, 0, 159, 131, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 208, 0, 845, 0, 0, 0, 0, + 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, + 0, 210, 0, 0, 0, 0, 146, 0, 162, 111, + 119, 83, 90, 0, 110, 137, 151, 155, 0, 0, + 0, 99, 0, 153, 141, 175, 0, 841, 152, 123, + 167, 147, 174, 182, 183, 164, 181, 190, 84, 163, + 173, 97, 156, 86, 171, 161, 129, 115, 116, 85, + 0, 150, 102, 107, 101, 138, 168, 169, 100, 193, + 91, 180, 88, 92, 179, 136, 166, 172, 130, 127, + 87, 170, 128, 126, 118, 105, 112, 144, 125, 145, + 113, 133, 132, 134, 0, 0, 0, 160, 177, 194, + 94, 0, 165, 184, 185, 186, 187, 188, 189, 0, + 0, 95, 108, 104, 143, 135, 93, 114, 157, 117, + 124, 149, 192, 140, 154, 98, 176, 158, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 82, 89, 121, 191, 148, 106, 178, 103, 0, 0, 0, 0, 0, 120, 0, 122, 0, 0, 159, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 54, 0, 0, 208, 0, 0, 0, 0, 0, - 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 80, 0, 0, 740, 0, 0, + 741, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1750,10 +1694,10 @@ var yyAct = [...]int{ 117, 124, 149, 192, 140, 154, 98, 176, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 82, 89, - 121, 191, 148, 106, 178, 103, 0, 0, 0, 0, + 121, 191, 148, 106, 178, 103, 0, 631, 0, 0, 0, 120, 0, 122, 0, 0, 159, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 208, 0, 845, 0, 0, + 0, 0, 0, 0, 0, 80, 0, 630, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1777,7 +1721,7 @@ var yyAct = [...]int{ 89, 121, 191, 148, 106, 178, 103, 0, 0, 0, 0, 0, 120, 0, 122, 0, 0, 159, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 268, 0, 805, 0, + 0, 0, 0, 54, 0, 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1801,7 +1745,7 @@ var yyAct = [...]int{ 82, 89, 121, 191, 148, 106, 178, 103, 0, 0, 0, 0, 0, 120, 0, 122, 0, 0, 159, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 268, 0, 801, + 0, 0, 0, 0, 0, 0, 0, 208, 0, 845, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1825,8 +1769,8 @@ var yyAct = [...]int{ 0, 82, 89, 121, 191, 148, 106, 178, 103, 0, 0, 0, 0, 0, 120, 0, 122, 0, 0, 159, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, - 522, 0, 0, 0, 0, 0, 0, 96, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 268, 0, + 805, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1846,11 +1790,35 @@ var yyAct = [...]int{ 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, 98, 176, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 139, 82, 89, 121, 191, 148, 106, 178, 604, + 139, 0, 82, 89, 121, 191, 148, 106, 178, 103, + 0, 0, 0, 0, 0, 120, 0, 122, 0, 0, + 159, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 268, + 0, 801, 0, 0, 0, 0, 0, 0, 96, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 109, 0, 0, 0, 210, 0, 0, + 0, 0, 146, 0, 162, 111, 119, 83, 90, 0, + 110, 137, 151, 155, 0, 0, 0, 99, 0, 153, + 141, 175, 0, 142, 152, 123, 167, 147, 174, 182, + 183, 164, 181, 190, 84, 163, 173, 97, 156, 86, + 171, 161, 129, 115, 116, 85, 0, 150, 102, 107, + 101, 138, 168, 169, 100, 193, 91, 180, 88, 92, + 179, 136, 166, 172, 130, 127, 87, 170, 128, 126, + 118, 105, 112, 144, 125, 145, 113, 133, 132, 134, + 0, 0, 0, 160, 177, 194, 94, 0, 165, 184, + 185, 186, 187, 188, 189, 0, 0, 95, 108, 104, + 143, 135, 93, 114, 157, 117, 124, 149, 192, 140, + 154, 98, 176, 158, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 139, 0, 82, 89, 121, 191, 148, 106, 178, 103, 0, 0, 0, 0, 0, 120, 0, 122, 0, 0, 159, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 208, 0, 0, 0, 0, 0, 0, 0, 0, 96, + 80, 0, 522, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1869,33 +1837,9 @@ var yyAct = [...]int{ 184, 185, 186, 187, 188, 189, 0, 0, 95, 108, 104, 143, 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, 98, 176, 158, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 327, 0, 0, 0, 0, - 0, 0, 139, 0, 82, 89, 121, 191, 148, 106, - 178, 103, 0, 0, 0, 0, 0, 120, 0, 122, - 0, 0, 159, 131, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, - 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 109, 0, 0, 0, 210, - 0, 0, 0, 0, 146, 0, 162, 111, 119, 83, - 90, 0, 110, 137, 151, 155, 0, 0, 0, 99, - 0, 153, 141, 175, 0, 142, 152, 123, 167, 147, - 174, 182, 183, 164, 181, 190, 84, 163, 173, 97, - 156, 86, 171, 161, 129, 115, 116, 85, 0, 150, - 102, 107, 101, 138, 168, 169, 100, 193, 91, 180, - 88, 92, 179, 136, 166, 172, 130, 127, 87, 170, - 128, 126, 118, 105, 112, 144, 125, 145, 113, 133, - 132, 134, 0, 0, 0, 160, 177, 194, 94, 0, - 165, 184, 185, 186, 187, 188, 189, 0, 0, 95, - 108, 104, 143, 135, 93, 114, 157, 117, 124, 149, - 192, 140, 154, 98, 176, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 139, 0, 82, 89, 121, 191, 148, - 106, 178, 103, 0, 0, 0, 0, 0, 120, 0, + 0, 0, 0, 139, 82, 89, 121, 191, 148, 106, + 178, 604, 103, 0, 0, 0, 0, 0, 120, 0, 122, 0, 0, 159, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 0, 0, 0, 0, 0, 0, 0, @@ -1904,7 +1848,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 109, 0, 205, 0, + 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 210, 0, 0, 0, 0, 146, 0, 162, 111, 119, 83, 90, 0, 110, 137, 151, 155, 0, 0, 0, 99, 0, 153, 141, 175, 0, 142, 152, 123, 167, @@ -1917,12 +1861,12 @@ var yyAct = [...]int{ 0, 165, 184, 185, 186, 187, 188, 189, 0, 0, 95, 108, 104, 143, 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, 98, 176, 158, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 327, 0, 0, 0, 0, 0, 0, 139, 0, 82, 89, 121, 191, 148, 106, 178, 103, 0, 0, 0, 0, 0, 120, 0, 122, 0, 0, 159, 131, 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, 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1953,7 +1897,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, - 0, 0, 210, 0, 0, 0, 0, 146, 0, 162, + 205, 0, 210, 0, 0, 0, 0, 146, 0, 162, 111, 119, 83, 90, 0, 110, 137, 151, 155, 0, 0, 0, 99, 0, 153, 141, 175, 0, 142, 152, 123, 167, 147, 174, 182, 183, 164, 181, 190, 84, @@ -1970,7 +1914,7 @@ var yyAct = [...]int{ 121, 191, 148, 106, 178, 103, 0, 0, 0, 0, 0, 120, 0, 122, 0, 0, 159, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 268, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1990,19 +1934,67 @@ var yyAct = [...]int{ 189, 0, 0, 95, 108, 104, 143, 135, 93, 114, 157, 117, 124, 149, 192, 140, 154, 98, 176, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, - 89, 121, 191, 148, 106, 178, + 0, 0, 0, 0, 0, 0, 0, 139, 0, 82, + 89, 121, 191, 148, 106, 178, 103, 0, 0, 0, + 0, 0, 120, 0, 122, 0, 0, 159, 131, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 208, 0, 0, 0, + 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 109, 0, 0, 0, 210, 0, 0, 0, 0, 146, + 0, 162, 111, 119, 83, 90, 0, 110, 137, 151, + 155, 0, 0, 0, 99, 0, 153, 141, 175, 0, + 142, 152, 123, 167, 147, 174, 182, 183, 164, 181, + 190, 84, 163, 173, 97, 156, 86, 171, 161, 129, + 115, 116, 85, 0, 150, 102, 107, 101, 138, 168, + 169, 100, 193, 91, 180, 88, 92, 179, 136, 166, + 172, 130, 127, 87, 170, 128, 126, 118, 105, 112, + 144, 125, 145, 113, 133, 132, 134, 0, 0, 0, + 160, 177, 194, 94, 0, 165, 184, 185, 186, 187, + 188, 189, 0, 0, 95, 108, 104, 143, 135, 93, + 114, 157, 117, 124, 149, 192, 140, 154, 98, 176, + 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, + 82, 89, 121, 191, 148, 106, 178, 103, 0, 0, + 0, 0, 0, 120, 0, 122, 0, 0, 159, 131, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 268, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 109, 0, 0, 0, 210, 0, 0, 0, 0, + 146, 0, 162, 111, 119, 83, 90, 0, 110, 137, + 151, 155, 0, 0, 0, 99, 0, 153, 141, 175, + 0, 142, 152, 123, 167, 147, 174, 182, 183, 164, + 181, 190, 84, 163, 173, 97, 156, 86, 171, 161, + 129, 115, 116, 85, 0, 150, 102, 107, 101, 138, + 168, 169, 100, 193, 91, 180, 88, 92, 179, 136, + 166, 172, 130, 127, 87, 170, 128, 126, 118, 105, + 112, 144, 125, 145, 113, 133, 132, 134, 0, 0, + 0, 160, 177, 194, 94, 0, 165, 184, 185, 186, + 187, 188, 189, 0, 0, 95, 108, 104, 143, 135, + 93, 114, 157, 117, 124, 149, 192, 140, 154, 98, + 176, 158, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 82, 89, 121, 191, 148, 106, 178, } var yyPact = [...]int{ - 2429, -1000, -192, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 2229, -1000, -174, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 850, 890, -1000, -1000, -1000, -1000, -1000, -1000, - 333, 8382, 40, 121, 8, 11775, 115, 1357, 12257, -1000, - 10, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -66, -81, - -1000, 658, -1000, -1000, -1000, -1000, -1000, 843, 848, 721, - 834, 757, -1000, 6390, 71, 71, 11534, 5390, -1000, -1000, - 234, 12257, 107, 12257, -155, 67, 67, 67, -1000, -1000, + -1000, -1000, 959, 1019, -1000, -1000, -1000, -1000, -1000, -1000, + 246, 8304, 34, 118, 16, 11697, 113, 1430, 12179, -1000, + 6, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -54, -62, + -1000, 791, -1000, -1000, -1000, -1000, -1000, 951, 962, 828, + 942, 882, -1000, 6312, 69, 69, 11456, 5312, -1000, -1000, + 318, 12179, 102, 12179, -138, 67, 67, 67, -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, @@ -2014,22 +2006,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, - -1000, -1000, -1000, -1000, -1000, 114, 12257, 307, -1000, 12257, - 64, 471, 64, 64, 64, 12257, -1000, 150, -1000, -1000, - -1000, 12257, 467, 794, 3286, 46, 3286, -1000, 3286, 3286, - -1000, 3286, 16, 3286, -62, 863, -1000, -1000, -1000, -1000, - -37, -1000, 3286, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 441, 803, 6891, 6891, - 850, -1000, 658, -1000, -1000, -1000, 780, -1000, -1000, 260, - 876, -1000, 8141, 149, -1000, 6891, 1820, 676, -1000, -1000, - 676, -1000, -1000, 133, -1000, -1000, 7641, 7641, 7641, 7641, - 7641, 7641, 7641, 7641, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 676, -1000, - 6641, 676, 676, 676, 676, 676, 676, 676, 676, 6891, - 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, - 676, 676, 676, 676, 676, 11293, 10087, 12257, 622, -1000, - 659, 5127, -86, -1000, -1000, -1000, 203, 9846, -1000, -1000, - -1000, 793, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 112, 12179, 225, -1000, 12179, + 66, 568, 66, 66, 66, 12179, -1000, 149, -1000, -1000, + -1000, 12179, 565, 906, 3208, 58, 3208, -1000, 3208, 3208, + -1000, 3208, 13, 3208, -68, 972, -1000, -1000, -1000, -1000, + 2, -1000, 3208, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 450, 911, 6813, 6813, + 959, -1000, 791, -1000, -1000, -1000, 905, -1000, -1000, 345, + 981, -1000, 8063, 146, -1000, 6813, 1832, 479, -1000, -1000, + 479, -1000, -1000, 135, -1000, -1000, 7563, 7563, 7563, 7563, + 7563, 7563, 7563, 7563, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 479, -1000, + 6563, 479, 479, 479, 479, 479, 479, 479, 479, 6813, + 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, + 479, 479, 479, 479, 479, 11215, 10009, 12179, 657, -1000, + 722, 5049, -119, -1000, -1000, -1000, 248, 9768, -1000, -1000, + -1000, 904, -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, @@ -2038,131 +2030,131 @@ 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, 595, 12257, - -1000, 2218, -1000, 461, 3286, 80, 459, 221, 457, 12257, - 12257, 3286, 24, 57, 113, 12257, 664, 78, 12257, 829, - 720, 12257, 455, 448, -1000, 4864, -1000, 3286, 3286, -1000, - -1000, -1000, 3286, 3286, 3286, 3286, 3286, 3286, -1000, -1000, - -1000, -1000, 3286, 3286, -1000, 872, 263, -1000, -1000, -1000, - -1000, 6891, -1000, 719, -1000, -1000, -1000, -1000, -1000, -1000, - 885, 175, 523, 147, 661, -1000, 447, 843, 441, 757, - 9605, 701, -1000, -1000, 12257, -1000, 6891, 6891, 379, -1000, - 11051, -1000, -1000, 3812, 184, 7641, 352, 231, 7641, 7641, - 7641, 7641, 7641, 7641, 7641, 7641, 7641, 7641, 7641, 7641, - 7641, 7641, 7641, 362, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 445, -1000, 658, 548, 548, 159, 159, 159, - 159, 159, 159, 159, 7891, 5890, 441, 593, 204, 6641, - 6390, 6390, 6891, 6891, 10810, 10569, 6390, 836, 210, 204, - 12498, -1000, -1000, 7391, -1000, -1000, -1000, -1000, -1000, 441, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 12016, 12016, 6390, - 6390, 6390, 6390, 35, 12257, -1000, 549, 690, -1000, -1000, - -1000, 831, 9114, 9364, 35, 600, 10087, 12257, -1000, -1000, - 4601, 659, -86, 625, -1000, -129, -91, 5640, 142, -1000, - -1000, -1000, -1000, 3023, 212, 503, 279, -53, -1000, -1000, - -1000, 691, -1000, 691, 691, 691, 691, -17, -17, -17, - -17, -1000, -1000, -1000, -1000, -1000, 705, 704, -1000, 691, - 691, 691, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 638, 12179, + -1000, 1945, -1000, 562, 3208, 80, 545, 310, 540, 12179, + 12179, 3208, 21, 51, 105, 12179, 744, 73, 12179, 936, + 812, 12179, 537, 535, -1000, 4786, -1000, 3208, 3208, -1000, + -1000, -1000, 3208, 3208, 3208, 12179, 3208, 3208, -1000, -1000, + -1000, -1000, 3208, 3208, -1000, 980, 281, -1000, -1000, -1000, + -1000, 6813, -1000, 809, -1000, -1000, -1000, -1000, -1000, -1000, + 1012, 158, 452, 143, 743, -1000, 382, 951, 450, 882, + 9527, 800, -1000, -1000, 12179, -1000, 6813, 6813, 343, -1000, + 10973, -1000, -1000, 3734, 210, 7563, 385, 306, 7563, 7563, + 7563, 7563, 7563, 7563, 7563, 7563, 7563, 7563, 7563, 7563, + 7563, 7563, 7563, 451, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 510, -1000, 791, 978, 978, 163, 163, 163, + 163, 163, 163, 163, 7813, 5812, 450, 626, 371, 6563, + 6312, 6312, 6813, 6813, 10732, 10491, 6312, 944, 265, 371, + 12420, -1000, -1000, 7313, -1000, -1000, -1000, -1000, -1000, 450, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 11938, 11938, 6312, + 6312, 6312, 6312, 36, 12179, -1000, 647, 810, -1000, -1000, + -1000, 938, 9036, 9286, 36, 675, 10009, 12179, -1000, -1000, + 4523, 722, -119, 686, -1000, -84, -101, 5562, 159, -1000, + -1000, -1000, -1000, 2945, 357, 596, 393, -48, -1000, -1000, + -1000, 749, -1000, 749, 749, 749, 749, -20, -20, -20, + -20, -1000, -1000, -1000, -1000, -1000, 779, 778, -1000, 749, + 749, 749, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 700, 700, 700, 693, 693, 675, -1000, 12257, 3286, 827, - 3286, -1000, 91, -1000, 12016, 12016, 12257, 12257, 128, 12257, - 12257, 656, -1000, 12257, 3286, -1000, -1000, -1000, -1000, -1000, + 777, 777, 777, 752, 752, 785, -1000, 12179, 3208, 935, + 3208, -1000, 122, -1000, 11938, 11938, 12179, 12179, 127, 12179, + 12179, 718, -1000, 12179, 3208, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 12257, 256, 12257, 12257, 204, 12257, -1000, 714, 6891, 6891, - 4338, 6891, -1000, -1000, -1000, 803, -1000, 836, 847, -1000, - 786, 785, 6390, -1000, -1000, 184, 284, -1000, -1000, 440, - -1000, -1000, -1000, -1000, 145, 676, -1000, 2206, -1000, -1000, - -1000, -1000, 352, 7641, 7641, 7641, 710, 2206, 2189, 335, - 473, 159, 261, 261, 168, 168, 168, 168, 168, 388, - 388, -1000, -1000, -1000, 441, -1000, -1000, -1000, 441, 6390, - 632, -1000, -1000, 6891, -1000, 441, 582, 582, 391, 460, - 674, 670, -1000, 144, 655, 654, 582, 6390, 225, -1000, - 6891, 441, -1000, 1936, 631, 627, 582, 441, 582, 582, - 638, 676, -1000, 12498, 10087, 10087, 10087, 10087, 10087, -1000, - 747, 745, -1000, 744, 741, 732, 12257, -1000, 584, 9114, - 143, 676, -1000, 10328, -1000, -1000, 862, 10087, 648, -1000, - -1000, 625, -86, -80, -1000, -1000, -1000, -1000, 204, -1000, - 384, 624, 2760, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 699, 442, -1000, 815, 185, 207, 436, 813, -1000, -1000, - -1000, 806, -1000, 240, -57, -1000, -1000, 366, -17, -17, - -1000, -1000, 142, 791, 142, 142, 142, 420, 420, -1000, - -1000, -1000, -1000, 365, -1000, -1000, -1000, 315, -1000, 718, - 12016, 3286, -1000, -1000, -1000, -1000, 182, 182, 230, -1000, + 12179, 296, 12179, 12179, 371, 12179, -1000, 863, 6813, 6813, + 4260, 6813, -1000, -1000, -1000, 911, -1000, 944, 958, -1000, + 879, 876, 6312, -1000, -1000, 210, 250, -1000, -1000, 431, + -1000, -1000, -1000, -1000, 141, 479, -1000, 1903, -1000, -1000, + -1000, -1000, 385, 7563, 7563, 7563, 334, 1903, 1867, 1357, + 186, 163, 652, 652, 230, 230, 230, 230, 230, 572, + 572, -1000, -1000, -1000, 450, -1000, -1000, -1000, 450, 6312, + 711, -1000, -1000, 6813, -1000, 450, 601, 601, 531, 420, + 747, 738, -1000, 140, 721, 714, 601, 6312, 303, -1000, + 6813, 450, -1000, 900, 693, 687, 601, 450, 601, 601, + 703, 479, -1000, 12420, 10009, 10009, 10009, 10009, 10009, -1000, + 848, 846, -1000, 844, 836, 864, 12179, -1000, 604, 9036, + 152, 479, -1000, 10250, -1000, -1000, 971, 10009, 635, -1000, + -1000, 686, -119, -86, -1000, -1000, -1000, -1000, 371, -1000, + 477, 685, 2681, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 766, 478, -1000, 924, 193, 188, 469, 923, -1000, -1000, + -1000, 915, -1000, 324, -50, -1000, -1000, 412, -20, -20, + -1000, -1000, 159, 899, 159, 159, 159, 443, 443, -1000, + -1000, -1000, -1000, 398, -1000, -1000, -1000, 397, -1000, 805, + 11938, 3208, -1000, -1000, -1000, -1000, 173, 173, 209, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 34, 550, -1000, -1000, -1000, 21, 20, 73, -1000, 3286, - -1000, 263, -1000, 411, 6891, -1000, -1000, -1000, 761, 204, - 204, 141, -1000, -1000, 12257, -1000, -1000, -1000, -1000, 647, - -1000, -1000, -1000, 3549, 6390, -1000, 710, 2206, 1951, -1000, - 7641, 7641, -1000, -1000, 582, 6390, 204, -1000, -1000, -1000, - 43, 362, 43, 7641, 7641, 7641, 7641, 4338, 7641, 7641, - 7641, 7641, -169, 652, 209, -1000, 6891, 434, -1000, -1000, - 7641, 7641, -1000, -1000, -1000, -1000, 715, 12498, 676, -1000, - 8873, 12016, 651, -1000, 202, 690, 698, 713, 952, -1000, - -1000, -1000, -1000, 743, -1000, 731, -1000, -1000, -1000, -1000, - -1000, 106, 102, 94, 12016, -1000, 850, 6891, 648, -1000, - -1000, -1000, -135, -141, -1000, -1000, -1000, 3023, -1000, 3023, - 12016, 51, -1000, 436, 436, -1000, -1000, -1000, 694, 712, - 7641, -1000, -1000, -1000, 491, 142, 142, -1000, 208, -1000, - -1000, -1000, 572, -1000, 569, 621, 564, 12257, -1000, -1000, + 35, 782, -1000, -1000, -1000, 20, 19, 72, -1000, 3208, + -1000, 281, -1000, 437, 6813, -1000, -1000, -1000, 858, 371, + 371, 139, -1000, -1000, 12179, -1000, -1000, -1000, -1000, 705, + -1000, -1000, -1000, 3471, 6312, -1000, 334, 1903, 1581, -1000, + 7563, 7563, -1000, -1000, 601, 6312, 371, -1000, -1000, -1000, + 45, 451, 45, 7563, 7563, 7563, 7563, 4260, 7563, 7563, + 7563, 7563, -151, 628, 260, -1000, 6813, 374, -1000, -1000, + 7563, 7563, -1000, -1000, -1000, -1000, 798, 12420, 479, -1000, + 8795, 11938, 717, -1000, 247, 810, 771, 797, 1647, -1000, + -1000, -1000, -1000, 835, -1000, 823, -1000, -1000, -1000, -1000, + -1000, 87, 86, 83, 11938, -1000, 959, 6813, 635, -1000, + -1000, -1000, -93, -107, -1000, -1000, -1000, 2945, -1000, 2945, + 11938, 47, -1000, 469, 469, -1000, -1000, -1000, 753, 795, + 7563, -1000, -1000, -1000, 556, 159, 159, -1000, 211, -1000, + -1000, -1000, 595, -1000, 580, 684, 575, 12179, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 12257, -1000, -1000, -1000, -1000, -1000, - 12016, -179, 424, 12016, 12016, 12257, -1000, 256, -1000, 204, - -1000, 4075, -1000, 862, 10087, -1000, -1000, 441, -1000, 7641, - 2206, 2206, -1000, -1000, 441, 691, 691, -1000, 691, 693, - -1000, 691, 1, 691, 0, 441, 441, 1887, 2174, 1729, - 2156, -1000, 1636, 1980, 1346, 1657, 676, -162, -1000, 204, - 6891, 2067, 2017, -1000, 818, 542, 601, -1000, -1000, 6140, - 441, 546, 138, 534, -1000, 850, 12498, 6891, -1000, -1000, - 6891, 692, -1000, 6891, -1000, -1000, -1000, 676, 676, 676, - 534, 843, 204, -1000, -1000, -1000, -1000, 2760, -1000, 531, - -1000, 691, -1000, -1000, -1000, 12016, -49, 883, 2206, -1000, - -1000, -1000, -1000, -1000, -17, 408, -17, 312, -1000, 280, - 3286, -1000, -1000, -1000, -1000, 821, -1000, 4075, -1000, -1000, - 686, -1000, -1000, -1000, 858, 619, -1000, 2206, -1000, -1000, - 111, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 7641, 7641, -1000, 7641, 7641, -1000, 7641, 7641, -1000, 7641, - 7641, 7641, 441, 399, 204, 7641, 7641, 811, -1000, 676, - -1000, -1000, 639, 12016, 12016, -1000, 12016, 843, -1000, 204, - 204, 12016, 204, 12016, 12016, 12016, 8632, -1000, 137, 12016, - -1000, 529, -1000, 188, -1000, -106, 142, -1000, 142, 488, - 475, -1000, 676, 602, -1000, 200, 12016, 854, 846, -1000, - -1000, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 15, - -1000, -1000, 1936, 1936, 881, -1000, 676, -1000, 658, 122, - -1000, -1000, -1000, 508, 502, 502, 502, 143, 137, -1000, - 309, 199, 369, -1000, 47, 12016, 236, 810, -1000, 804, - -1000, -1000, -1000, -1000, -1000, 33, 4075, 3023, 487, -1000, - 6891, 6891, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 441, 42, -182, -1000, -1000, 12498, 601, 441, 12016, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 269, -1000, -1000, 12257, - -1000, -1000, 308, -1000, -1000, 484, -1000, 12016, -1000, -1000, - 550, 204, 599, -1000, 760, -177, -186, 537, -1000, -1000, - -1000, 683, -1000, -1000, 33, 781, -179, -1000, 753, -1000, - 12016, -1000, 30, -1000, -180, 482, 28, -184, 711, 676, - -187, 708, -1000, 867, 7141, -1000, -1000, 869, 198, 198, - 1936, 441, -1000, -1000, -1000, 56, 306, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 12179, -1000, -1000, -1000, -1000, -1000, + 11938, -161, 460, 11938, 11938, 12179, -1000, 296, -1000, 371, + -1000, 3997, -1000, 971, 10009, -1000, -1000, 450, -1000, 7563, + 1903, 1903, -1000, -1000, 450, 749, 749, -1000, 749, 752, + -1000, 749, -3, 749, -4, 450, 450, 715, 2203, 688, + 2148, -1000, 476, 1939, 449, 1418, 479, -146, -1000, 371, + 6813, 1396, 1373, -1000, 926, 656, 672, -1000, -1000, 6062, + 450, 573, 134, 555, -1000, 959, 12420, 6813, -1000, -1000, + 6813, 751, -1000, 6813, -1000, -1000, -1000, 479, 479, 479, + 555, 951, 371, -1000, -1000, -1000, -1000, 2681, -1000, 553, + -1000, 749, -1000, -1000, -1000, 11938, -44, 1009, 1903, -1000, + -1000, -1000, -1000, -1000, -20, 432, -20, 388, -1000, 358, + 3208, -1000, -1000, -1000, -1000, 928, -1000, 3997, -1000, -1000, + 746, -1000, -1000, -1000, 967, 683, -1000, 1903, -1000, -1000, + 109, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 7563, 7563, -1000, 7563, 7563, -1000, 7563, 7563, -1000, 7563, + 7563, 7563, 450, 429, 371, 7563, 7563, 921, -1000, 479, + -1000, -1000, 713, 11938, 11938, -1000, 11938, 951, -1000, 371, + 371, 11938, 371, 11938, 11938, 11938, 8554, -1000, 138, 11938, + -1000, 551, -1000, 165, -1000, -157, 159, -1000, 159, 533, + 508, -1000, 479, 680, -1000, 243, 11938, 965, 954, -1000, + -1000, 900, 900, 900, 900, 900, 900, 900, 900, 27, + -1000, -1000, 900, 900, 1006, -1000, 479, -1000, 791, 120, + -1000, -1000, -1000, 532, 507, 507, 507, 152, 138, -1000, + 455, 239, 426, -1000, 49, 11938, 335, 918, -1000, 917, + -1000, -1000, -1000, -1000, -1000, 33, 3997, 2945, 504, -1000, + 6813, 6813, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 450, 60, -166, -1000, -1000, 12420, 672, 450, 11938, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 355, -1000, -1000, 12179, + -1000, -1000, 423, -1000, -1000, 502, -1000, 11938, -1000, -1000, + 782, 371, 659, -1000, 856, -155, -170, 648, -1000, -1000, + -1000, 653, -1000, -1000, 33, 871, -161, -1000, 853, -1000, + 11938, -1000, 29, -1000, -164, 499, 26, -167, 794, 479, + -171, 790, -1000, 979, 7063, -1000, -1000, 1001, 179, 179, + 900, 450, -1000, -1000, -1000, 57, 326, -1000, -1000, -1000, -1000, -1000, -1000, } var yyPgo = [...]int{ - 0, 1125, 30, 457, 1123, 1122, 1121, 1120, 1118, 1114, - 1113, 1111, 1110, 1109, 1103, 1102, 1100, 1094, 1093, 1091, - 1090, 1089, 1087, 1085, 1084, 1083, 97, 1082, 1081, 1076, - 65, 1071, 71, 1068, 1067, 47, 59, 45, 40, 1207, - 1065, 25, 56, 102, 1064, 34, 1060, 1052, 75, 1049, - 53, 1045, 1044, 429, 1043, 1042, 13, 33, 1040, 1039, - 1038, 1037, 66, 886, 1036, 1033, 16, 1032, 1031, 101, - 1029, 55, 3, 12, 21, 22, 1028, 229, 7, 1027, - 52, 1024, 1021, 1018, 1008, 29, 1007, 58, 1006, 17, - 57, 1002, 24, 63, 35, 19, 5, 73, 61, 999, - 15, 62, 54, 993, 990, 461, 987, 986, 46, 985, - 984, 26, 166, 377, 983, 980, 979, 978, 38, 0, - 498, 128, 70, 977, 970, 969, 1490, 69, 49, 18, - 965, 42, 1493, 43, 963, 962, 37, 961, 960, 959, - 957, 956, 954, 953, 134, 952, 951, 949, 20, 41, - 948, 946, 60, 23, 945, 942, 941, 48, 64, 939, - 935, 51, 44, 933, 932, 930, 924, 923, 27, 9, - 922, 14, 920, 10, 918, 28, 916, 2, 915, 11, - 914, 6, 913, 4, 50, 1, 908, 8, 901, 900, - 77, 494, 897, 896, 94, + 0, 1255, 54, 479, 1254, 1253, 1251, 1249, 1248, 1246, + 1243, 1241, 1235, 1234, 1230, 1228, 1227, 1222, 1220, 1219, + 1214, 1213, 1212, 1210, 1209, 1207, 117, 1206, 1202, 1200, + 75, 1199, 83, 1198, 1197, 38, 61, 41, 40, 1285, + 1195, 50, 56, 73, 1191, 28, 1185, 1184, 81, 1183, + 53, 1164, 1161, 1569, 1159, 1158, 12, 30, 1157, 1155, + 1153, 1152, 70, 637, 1150, 1149, 14, 1148, 1147, 86, + 1146, 58, 8, 13, 11, 24, 1145, 314, 15, 1138, + 59, 1137, 1136, 1135, 1134, 20, 1133, 62, 1131, 19, + 60, 1129, 7, 65, 29, 25, 5, 84, 69, 1128, + 23, 66, 51, 1126, 1124, 516, 1123, 1122, 48, 1121, + 1120, 22, 175, 387, 1118, 1117, 1116, 1114, 37, 0, + 498, 44, 80, 1110, 1107, 1103, 1376, 71, 52, 18, + 1102, 31, 171, 47, 1100, 1099, 34, 1098, 1093, 1091, + 1090, 1089, 1088, 1087, 118, 1086, 1084, 1082, 35, 42, + 1076, 1072, 63, 21, 1071, 1070, 1068, 49, 64, 1066, + 1062, 57, 26, 1061, 1060, 1059, 1058, 1055, 27, 17, + 1053, 16, 1052, 10, 1049, 33, 1044, 3, 1042, 9, + 1034, 6, 1033, 4, 43, 1, 1031, 2, 1030, 1028, + 45, 419, 1027, 1026, 107, } var yyR1 = [...]int{ @@ -2415,7 +2407,7 @@ var yyChk = [...]int{ 175, 176, 177, 178, 179, 57, -132, 125, 57, 74, 57, -53, -53, -132, 157, 157, 123, 123, -53, 55, 126, -48, 23, 52, -53, 57, 57, -127, -126, -118, - -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -53, -132, -132, -132, -132, 11, -108, 11, 92, -39, 52, 9, 92, 55, 18, 112, 55, -88, 24, 25, -89, -191, -32, -64, -120, 60, 63, -31, 43, -53, -39, -39, -70, 68, 74, @@ -2539,7 +2531,7 @@ var yyDef = [...]int{ 81, 0, 79, 0, 856, 0, 0, 0, 0, 0, 0, 856, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 0, 0, 249, 0, 251, 856, 856, 254, - 857, 858, 856, 856, 856, 856, 856, 856, 261, 263, + 857, 858, 856, 856, 856, 0, 856, 856, 261, 263, 264, 266, 856, 856, 268, 0, 289, 287, 288, 283, 284, 0, 278, 279, 282, 309, 310, 30, 854, 24, 0, 0, 569, 0, 561, 562, 565, 568, 29, 319, @@ -4463,7 +4455,7 @@ yydefault: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1473 { - yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} + yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName} } case 259: yyDollar = yyS[yypt-4 : yypt+1] diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 149781ad6f1..f657ab8326a 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -1469,9 +1469,9 @@ show_statement: { $$ = &Show{Type: string($2) + " " + string($3)} } -| SHOW CREATE TABLE ddl_skip_to_end +| SHOW CREATE TABLE table_name { - $$ = &Show{Type: string($2) + " " + string($3)} + $$ = &Show{Type: string($2) + " " + string($3), Table: $4} } | SHOW CREATE TRIGGER ddl_skip_to_end { diff --git a/go/vt/vtgate/executor.go b/go/vt/vtgate/executor.go index 9eafc481079..8ebddca2055 100644 --- a/go/vt/vtgate/executor.go +++ b/go/vt/vtgate/executor.go @@ -747,6 +747,25 @@ func (e *Executor) handleShow(ctx context.Context, safeSession *SafeSession, sql Rows: rows, RowsAffected: 2, }, nil + case "create table": + if destKeyspace == "" && show.HasTable() { + // For "show create table", if there isn't a targeted keyspace already + // we can either get a keyspace from the statement or potentially from + // the vschema. + + if !show.Table.Qualifier.IsEmpty() { + // Explicit keyspace was passed. Use that for targeting but remove from the query itself. + destKeyspace = show.Table.Qualifier.String() + show.Table.Qualifier = sqlparser.NewTableIdent("") + sql = sqlparser.String(show) + } else { + // No keyspace was indicated. Try to find one using the vschema. + tbl, err := e.VSchema().FindTable("", show.Table.Name.String()) + if err == nil { + destKeyspace = tbl.Keyspace.Name + } + } + } case sqlparser.KeywordString(sqlparser.TABLES): if show.ShowTablesOpt != nil && show.ShowTablesOpt.DbName != "" { if destKeyspace == "" { diff --git a/go/vt/vtgate/executor_test.go b/go/vt/vtgate/executor_test.go index 1eb6d50aec0..365bfd55d52 100644 --- a/go/vt/vtgate/executor_test.go +++ b/go/vt/vtgate/executor_test.go @@ -674,6 +674,34 @@ func TestExecutorShow(t *testing.T) { t.Errorf("%v:\n%+v, want\n%+v", query, qr, wantqr) } + qr, err = executor.Execute(context.Background(), "TestExecute", session, "show create table unknown_table", nil) + if err != errNoKeyspace { + t.Errorf("Got: %v. Want: %v", err, errNoKeyspace) + } + + // SHOW CREATE table using vschema to find keyspace. + _, err = executor.Execute(context.Background(), "TestExecute", session, "show create table user_seq", nil) + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + + lastQuery := sbclookup.Queries[len(sbclookup.Queries)-1].Sql + wantQuery := "show create table user_seq" + if lastQuery != wantQuery { + t.Errorf("Got: %v. Want: %v", lastQuery, wantQuery) + } + + // SHOW CREATE table with query-provided keyspace + _, err = executor.Execute(context.Background(), "TestExecute", session, fmt.Sprintf("show create table %v.unknown", KsTestUnsharded), nil) + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + lastQuery = sbclookup.Queries[len(sbclookup.Queries)-1].Sql + wantQuery = "show create table unknown" + if lastQuery != wantQuery { + t.Errorf("Got: %v. Want: %v", lastQuery, wantQuery) + } + for _, query := range []string{"show charset", "show charset like '%foo'", "show character set", "show character set like '%foo'"} { qr, err := executor.Execute(context.Background(), "TestExecute", session, query, nil) if err != nil {