diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index 4ab597bae47..b6947c3d7fb 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -682,6 +682,7 @@ type DDL struct { NewName TableName IfExists bool TableSpec *TableSpec + OptLike *OptLike PartitionSpec *PartitionSpec VindexSpec *VindexSpec VindexCols []ColIdent @@ -706,10 +707,12 @@ const ( func (node *DDL) Format(buf *TrackedBuffer) { switch node.Action { case CreateStr: - if node.TableSpec == nil { - buf.Myprintf("%s table %v", node.Action, node.NewName) - } else { + if node.OptLike != nil { + buf.Myprintf("%s table %v %v", node.Action, node.NewName, node.OptLike) + } else if node.TableSpec != nil { buf.Myprintf("%s table %v %v", node.Action, node.NewName, node.TableSpec) + } else { + buf.Myprintf("%s table %v", node.Action, node.NewName) } case DropStr: exists := "" @@ -763,6 +766,23 @@ const ( ReorganizeStr = "reorganize partition" ) +// OptLike works for create table xxx like xxx +type OptLike struct { + LikeTable TableName +} + +// Format formats the node. +func (node *OptLike) Format(buf *TrackedBuffer) { + buf.Myprintf("like %v", node.LikeTable) +} + +func (node *OptLike) walkSubtree(visit Visit) error { + if node == nil { + return nil + } + return Walk(visit, node.LikeTable) +} + // PartitionSpec describe partition actions (for alter and create) type PartitionSpec struct { Action string diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index e66d82ca4f7..4bf5cc29bc0 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1945,6 +1945,37 @@ func TestCreateTable(t *testing.T) { } } +func TestCreateTableLike(t *testing.T) { + normal := "create table a like b" + testCases := []struct { + input string + output string + }{ + { + "create table a like b", + normal, + }, + { + "create table a (like b)", + normal, + }, + { + "create table ks.a like unsharded_ks.b", + "create table ks.a like unsharded_ks.b", + }, + } + for _, tcase := range testCases { + tree, err := ParseStrictDDL(tcase.input) + if err != nil { + t.Errorf("input: %s, err: %v", tcase.input, err) + continue + } + if got, want := String(tree.(*DDL)), tcase.output; got != want { + t.Errorf("Parse(%s):\n%s, want\n%s", tcase.input, got, want) + } + } +} + func TestCreateTableEscaped(t *testing.T) { testCases := []struct { input string diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 38ce710fcb0..11a1b817a07 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -101,6 +101,7 @@ type yySymType struct { vindexParam VindexParam vindexParams []VindexParam showFilter *ShowFilter + optLike *OptLike } const LEX_ERROR = 57346 @@ -610,1171 +611,1202 @@ var yyExca = [...]int{ 5, 28, -2, 4, -1, 36, - 153, 271, - 154, 271, - -2, 263, - -1, 248, - 111, 598, - -2, 594, - -1, 249, - 111, 599, - -2, 595, - -1, 319, - 81, 761, + 153, 274, + 154, 274, + -2, 266, + -1, 250, + 111, 601, + -2, 597, + -1, 251, + 111, 602, + -2, 598, + -1, 321, + 81, 764, -2, 59, - -1, 320, - 81, 721, + -1, 322, + 81, 724, -2, 60, - -1, 325, - 81, 703, - -2, 560, -1, 327, - 81, 742, - -2, 562, - -1, 593, + 81, 706, + -2, 563, + -1, 329, + 81, 745, + -2, 565, + -1, 597, 53, 42, 55, 42, -2, 44, - -1, 728, - 111, 601, - -2, 597, - -1, 939, + -1, 733, + 111, 604, + -2, 600, + -1, 945, 5, 29, - -2, 405, - -1, 964, - 5, 28, - -2, 535, - -1, 1190, - 5, 29, - -2, 536, - -1, 1235, + -2, 408, + -1, 970, 5, 28, -2, 538, - -1, 1299, + -1, 1196, 5, 29, -2, 539, + -1, 1241, + 5, 28, + -2, 541, + -1, 1305, + 5, 29, + -2, 542, } const yyPrivate = 57344 -const yyLast = 11024 +const yyLast = 11325 var yyAct = [...]int{ - 249, 1290, 878, 540, 664, 790, 1246, 253, 1097, 826, - 1125, 808, 1098, 1028, 587, 1094, 585, 830, 872, 1196, - 905, 839, 829, 227, 983, 763, 1071, 539, 3, 858, - 753, 78, 1019, 967, 1031, 192, 931, 972, 192, 693, - 843, 311, 324, 603, 779, 219, 760, 730, 791, 478, - 868, 422, 279, 602, 318, 472, 574, 787, 306, 251, - 913, 589, 236, 315, 192, 192, 78, 484, 305, 492, - 192, 313, 78, 54, 280, 49, 189, 226, 1323, 1310, - 304, 1321, 1297, 55, 1318, 879, 1309, 240, 1089, 220, - 221, 222, 223, 554, 1296, 1184, 426, 991, 1256, 1119, - 990, 59, 821, 992, 1120, 1121, 314, 225, 895, 822, - 823, 425, 224, 1010, 447, 187, 183, 184, 185, 604, - 1072, 605, 894, 851, 49, 1209, 61, 62, 63, 64, - 65, 859, 232, 1133, 1134, 1135, 1224, 463, 310, 1173, - 435, 1138, 1136, 470, 464, 461, 1171, 218, 1291, 1320, - 899, 1317, 1074, 458, 459, 1052, 788, 1283, 844, 893, - 1271, 505, 504, 514, 515, 507, 508, 509, 510, 511, - 512, 513, 506, 436, 1247, 516, 429, 180, 449, 181, - 451, 192, 1254, 192, 1076, 181, 1080, 1249, 1075, 192, - 1073, 809, 811, 846, 672, 1078, 192, 852, 663, 846, - 78, 78, 78, 78, 1077, 78, 448, 450, 890, 887, - 888, 982, 886, 981, 78, 1142, 980, 1079, 1081, 424, - 432, 255, 433, 195, 434, 182, 1276, 186, 1003, 1193, - 441, 528, 529, 1058, 947, 925, 1049, 443, 897, 900, - 702, 496, 1051, 78, 505, 504, 514, 515, 507, 508, - 509, 510, 511, 512, 513, 506, 1248, 442, 516, 859, - 481, 827, 516, 694, 506, 1143, 810, 516, 705, 706, - 468, 469, 699, 892, 453, 453, 453, 453, 491, 453, - 1281, 1255, 1253, 737, 1152, 309, 970, 845, 453, 446, - 606, 1091, 932, 845, 1295, 891, 780, 735, 736, 734, - 1039, 490, 489, 1008, 192, 1137, 907, 49, 1093, 762, - 667, 192, 192, 192, 480, 490, 489, 78, 491, 846, - 1272, 489, 525, 78, 1285, 527, 438, 439, 440, 1037, - 486, 780, 491, 954, 896, 482, 1050, 491, 1048, 720, - 722, 723, 454, 695, 721, 569, 944, 898, 423, 922, - 923, 924, 1301, 538, 593, 542, 543, 544, 545, 546, - 547, 548, 549, 550, 1215, 553, 555, 555, 555, 555, - 555, 555, 555, 555, 563, 564, 565, 566, 179, 943, - 600, 942, 1214, 906, 594, 586, 556, 557, 558, 559, - 560, 561, 562, 428, 1038, 490, 489, 490, 489, 1043, - 1040, 1033, 1034, 1041, 1036, 1035, 52, 754, 321, 755, - 490, 489, 491, 845, 491, 848, 733, 1042, 842, 840, - 849, 838, 841, 1045, 844, 701, 78, 491, 1023, 1022, - 1011, 1303, 192, 192, 78, 993, 192, 994, 1282, 192, - 1231, 303, 1212, 192, 1055, 78, 78, 78, 78, 78, - 78, 78, 78, 509, 510, 511, 512, 513, 506, 78, - 78, 516, 700, 1020, 1239, 1319, 192, 430, 431, 21, - 1306, 471, 526, 669, 670, 1239, 1288, 673, 490, 489, - 676, 1279, 1239, 1251, 78, 681, 1239, 471, 192, 452, - 1239, 1240, 1205, 1204, 78, 491, 1116, 471, 246, 1129, - 453, 1192, 471, 679, 707, 1149, 1148, 696, 453, 1145, - 1146, 1145, 1144, 968, 1128, 937, 471, 765, 1004, 453, - 453, 453, 453, 453, 453, 453, 453, 231, 999, 716, - 881, 756, 309, 453, 453, 278, 571, 471, 78, 728, - 576, 579, 580, 581, 577, 709, 578, 582, 765, 471, - 973, 974, 731, 678, 677, 772, 775, 726, 23, 668, - 666, 781, 661, 724, 613, 612, 76, 444, 437, 192, - 767, 423, 192, 192, 192, 192, 192, 471, 792, 1260, - 1259, 1139, 962, 969, 192, 1188, 963, 192, 757, 758, - 56, 192, 1095, 597, 571, 968, 192, 192, 1061, 1151, - 78, 323, 49, 1147, 995, 23, 52, 427, 820, 937, - 789, 784, 816, 78, 767, 599, 949, 542, 777, 269, - 268, 271, 272, 273, 274, 708, 571, 946, 270, 275, - 937, 794, 795, 1234, 797, 598, 703, 596, 817, 805, - 793, 23, 937, 796, 969, 52, 310, 310, 310, 310, - 310, 814, 813, 52, 818, 819, 860, 861, 862, 321, - 948, 586, 233, 812, 192, 834, 815, 78, 596, 78, - 310, 945, 570, 192, 1311, 1219, 192, 78, 853, 874, - 873, 1130, 1110, 764, 766, 998, 665, 968, 869, 52, - 455, 456, 457, 192, 460, 192, 192, 571, 864, 782, - 973, 974, 876, 467, 863, 877, 67, 1132, 870, 871, - 52, 1095, 1024, 976, 901, 675, 465, 902, 802, 800, - 979, 732, 715, 803, 801, 804, 978, 580, 581, 807, - 471, 799, 798, 1315, 904, 323, 323, 323, 323, 1308, - 323, 453, 1057, 453, 1015, 728, 237, 238, 910, 323, - 485, 453, 1314, 914, 920, 530, 531, 532, 533, 534, - 535, 536, 537, 915, 919, 483, 505, 504, 514, 515, - 507, 508, 509, 510, 511, 512, 513, 506, 494, 473, - 516, 611, 927, 445, 1007, 1287, 1286, 731, 883, 1220, - 1232, 474, 1005, 309, 309, 309, 309, 309, 1000, 1186, - 674, 584, 926, 576, 579, 580, 581, 577, 309, 578, - 582, 234, 235, 78, 485, 964, 192, 309, 918, 854, - 855, 856, 857, 953, 56, 228, 917, 1265, 229, 1264, - 78, 1222, 986, 969, 977, 865, 866, 867, 466, 727, - 692, 487, 1273, 1210, 698, 58, 60, 996, 985, 595, - 987, 53, 323, 768, 769, 1, 880, 1027, 608, 776, - 889, 1289, 965, 966, 988, 1245, 1124, 837, 1014, 828, - 1016, 1017, 1018, 783, 421, 785, 786, 78, 78, 66, - 78, 1280, 1001, 1002, 1012, 1013, 836, 835, 1252, 1208, - 310, 847, 1009, 850, 1131, 1284, 1006, 1021, 618, 616, - 934, 617, 615, 78, 935, 620, 619, 614, 242, 203, - 316, 939, 940, 941, 583, 662, 607, 192, 875, 488, - 950, 68, 1044, 671, 1047, 956, 78, 957, 958, 959, - 960, 1030, 1046, 885, 682, 683, 684, 685, 686, 687, - 688, 689, 321, 462, 1054, 205, 524, 916, 690, 691, - 989, 322, 453, 1102, 704, 831, 732, 477, 1059, 1263, - 1221, 323, 952, 1070, 551, 1065, 78, 78, 1096, 323, - 792, 1083, 778, 1064, 1082, 254, 792, 453, 719, 267, - 323, 323, 323, 323, 323, 323, 323, 323, 264, 266, - 728, 1104, 265, 1101, 323, 323, 78, 729, 78, 78, - 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, - 748, 749, 750, 751, 752, 1123, 1099, 1106, 1122, 711, - 1118, 1127, 1140, 1141, 921, 192, 710, 961, 498, 494, - 252, 244, 323, 78, 308, 1090, 567, 309, 1100, 575, - 49, 573, 572, 975, 971, 727, 78, 192, 307, 1060, - 1183, 1105, 1270, 78, 714, 1112, 1113, 1114, 25, 78, - 57, 239, 192, 19, 18, 17, 1150, 20, 16, 1117, - 15, 936, 14, 759, 29, 1160, 13, 1153, 1162, 12, - 1069, 11, 10, 773, 773, 9, 8, 951, 1157, 773, - 1155, 7, 6, 1158, 1161, 1169, 5, 4, 230, 22, - 2, 0, 0, 0, 1181, 0, 773, 0, 0, 0, - 0, 78, 1187, 78, 78, 78, 192, 78, 0, 0, - 0, 0, 0, 78, 0, 0, 0, 1115, 0, 1195, - 1201, 78, 1198, 1199, 1200, 323, 310, 475, 479, 0, - 996, 1203, 0, 0, 0, 0, 0, 0, 323, 0, - 1207, 78, 78, 78, 497, 0, 882, 0, 884, 0, - 0, 0, 0, 0, 1182, 1217, 903, 0, 0, 0, - 1218, 0, 831, 0, 1211, 0, 1213, 505, 504, 514, - 515, 507, 508, 509, 510, 511, 512, 513, 506, 541, - 0, 516, 0, 78, 78, 476, 0, 1223, 552, 0, - 1039, 1233, 323, 0, 323, 0, 78, 0, 1163, 0, - 0, 0, 323, 1244, 0, 1165, 1250, 0, 0, 1235, - 78, 1257, 1029, 1258, 0, 453, 1174, 1175, 1176, 1037, - 190, 1179, 0, 217, 928, 929, 930, 0, 323, 1261, - 78, 1099, 0, 1274, 1189, 1190, 1191, 0, 1194, 0, - 0, 0, 1278, 0, 0, 0, 0, 243, 0, 190, - 190, 0, 0, 1100, 1275, 190, 1236, 0, 1063, 1293, - 1166, 1167, 0, 1168, 0, 0, 1170, 78, 1172, 1298, - 0, 792, 0, 309, 192, 0, 0, 1099, 0, 0, - 1086, 0, 78, 1304, 1038, 1262, 0, 0, 0, 1043, - 1040, 1033, 1034, 1041, 1036, 1035, 0, 1312, 1313, 1100, - 0, 49, 78, 1180, 471, 0, 0, 1042, 0, 0, - 0, 0, 0, 1032, 1206, 1302, 0, 1230, 0, 0, - 0, 1316, 0, 0, 0, 0, 0, 0, 831, 0, - 831, 0, 1241, 1242, 1243, 0, 0, 0, 984, 0, - 505, 504, 514, 515, 507, 508, 509, 510, 511, 512, - 513, 506, 0, 0, 516, 323, 0, 1026, 0, 1266, - 1267, 1268, 1269, 0, 0, 697, 190, 0, 190, 0, - 0, 0, 0, 0, 190, 0, 0, 0, 0, 0, - 0, 190, 1053, 0, 0, 1322, 0, 201, 717, 718, - 0, 1063, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1025, 323, 1294, 323, 0, 0, 0, 1299, - 0, 213, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1067, 1068, 1305, 0, 0, 0, 0, 323, 0, - 0, 0, 0, 0, 1084, 1085, 0, 1087, 1088, 0, - 0, 541, 0, 0, 770, 771, 0, 0, 0, 0, - 0, 323, 0, 0, 0, 831, 0, 0, 1326, 1327, - 0, 196, 1178, 0, 0, 0, 0, 0, 198, 0, - 0, 1177, 471, 323, 0, 204, 200, 0, 0, 0, - 0, 0, 0, 0, 1029, 831, 0, 0, 773, 190, - 0, 1103, 984, 0, 773, 0, 190, 591, 190, 0, - 0, 0, 0, 202, 0, 825, 206, 0, 505, 504, - 514, 515, 507, 508, 509, 510, 511, 512, 513, 506, - 0, 323, 516, 323, 1126, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 197, 505, 504, 514, 515, 507, - 508, 509, 510, 511, 512, 513, 506, 0, 0, 516, - 0, 0, 0, 0, 0, 1164, 0, 0, 1154, 0, - 0, 207, 199, 0, 208, 209, 210, 212, 211, 216, - 0, 1156, 0, 0, 215, 214, 0, 0, 1159, 0, - 0, 0, 0, 0, 323, 1066, 0, 505, 504, 514, - 515, 507, 508, 509, 510, 511, 512, 513, 506, 911, - 912, 516, 479, 0, 0, 505, 504, 514, 515, 507, - 508, 509, 510, 511, 512, 513, 506, 190, 190, 516, - 0, 190, 0, 0, 190, 0, 0, 0, 680, 0, - 1216, 0, 0, 0, 0, 0, 1197, 0, 1197, 1197, - 1197, 0, 1202, 0, 0, 0, 0, 0, 323, 0, - 0, 190, 0, 0, 0, 0, 1197, 0, 0, 0, - 0, 0, 0, 0, 938, 0, 1225, 1226, 0, 1227, - 1228, 1229, 0, 190, 0, 0, 323, 323, 323, 955, - 0, 500, 680, 503, 0, 0, 0, 0, 0, 517, - 518, 519, 520, 521, 522, 523, 0, 501, 502, 499, - 505, 504, 514, 515, 507, 508, 509, 510, 511, 512, - 513, 506, 0, 0, 516, 0, 0, 0, 1237, 1238, - 0, 0, 0, 0, 243, 0, 0, 0, 0, 243, - 243, 1126, 0, 774, 774, 243, 0, 0, 0, 774, - 0, 0, 0, 0, 0, 1197, 0, 0, 0, 243, - 243, 243, 243, 0, 190, 0, 774, 190, 190, 190, - 190, 190, 0, 0, 0, 1277, 0, 0, 0, 806, - 0, 0, 190, 0, 0, 0, 591, 0, 0, 0, - 0, 190, 190, 0, 23, 24, 50, 26, 27, 514, - 515, 507, 508, 509, 510, 511, 512, 513, 506, 773, - 0, 516, 1300, 42, 0, 0, 1056, 0, 28, 47, - 48, 1324, 0, 0, 0, 0, 0, 1307, 0, 507, - 508, 509, 510, 511, 512, 513, 506, 0, 37, 516, - 0, 0, 52, 0, 0, 0, 0, 1197, 504, 514, - 515, 507, 508, 509, 510, 511, 512, 513, 506, 190, - 0, 516, 0, 1092, 0, 0, 0, 0, 190, 0, - 0, 190, 0, 0, 0, 0, 0, 0, 1107, 1108, - 0, 0, 1109, 0, 0, 1111, 0, 0, 190, 0, - 908, 909, 0, 0, 0, 0, 0, 0, 680, 635, - 0, 0, 30, 31, 33, 32, 35, 0, 0, 0, - 243, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 36, 43, 44, 0, 0, 45, - 46, 34, 0, 0, 0, 0, 0, 0, 933, 0, - 0, 0, 0, 38, 39, 0, 40, 41, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 243, 505, 504, - 514, 515, 507, 508, 509, 510, 511, 512, 513, 506, - 0, 0, 516, 243, 0, 0, 623, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1185, 0, 0, 0, 0, 0, 636, 541, - 0, 190, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 51, 649, - 650, 651, 652, 653, 654, 655, 0, 656, 657, 658, - 659, 660, 637, 638, 639, 640, 621, 622, 0, 0, - 624, 0, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 641, 642, 643, 644, 645, 646, 647, 648, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 190, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 243, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 243, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 680, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 774, 0, - 0, 0, 0, 0, 774, 0, 0, 0, 0, 0, - 0, 0, 0, 1292, 541, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 190, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 190, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 591, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 409, 399, 0, 371, - 412, 349, 363, 420, 364, 365, 392, 335, 379, 129, - 361, 0, 352, 330, 358, 331, 350, 373, 97, 376, - 348, 401, 382, 411, 111, 418, 113, 387, 0, 147, - 122, 0, 0, 375, 403, 377, 397, 370, 393, 340, - 386, 413, 362, 390, 414, 0, 0, 0, 77, 0, - 832, 833, 0, 0, 0, 0, 0, 90, 0, 389, - 408, 360, 391, 329, 388, 0, 333, 336, 419, 406, - 355, 356, 997, 0, 0, 0, 0, 0, 0, 374, - 378, 394, 368, 0, 0, 0, 0, 0, 0, 0, - 0, 353, 0, 385, 0, 0, 0, 337, 334, 774, - 0, 372, 0, 0, 0, 339, 0, 354, 395, 190, - 328, 398, 404, 369, 193, 407, 367, 366, 410, 135, - 0, 0, 150, 102, 101, 140, 110, 402, 351, 359, - 93, 357, 142, 131, 162, 384, 132, 141, 114, 154, - 136, 161, 194, 169, 152, 168, 80, 151, 160, 91, - 144, 82, 158, 149, 120, 106, 107, 81, 0, 139, - 96, 100, 95, 128, 155, 156, 94, 177, 85, 167, - 84, 86, 166, 127, 153, 159, 121, 118, 83, 157, - 119, 117, 109, 98, 103, 133, 116, 134, 104, 124, - 123, 125, 0, 332, 0, 148, 164, 178, 88, 347, - 405, 170, 171, 172, 173, 174, 0, 0, 89, 126, - 87, 105, 145, 108, 115, 138, 176, 130, 143, 92, - 163, 146, 343, 346, 341, 342, 380, 381, 415, 416, - 417, 396, 338, 0, 344, 345, 0, 400, 383, 79, - 0, 112, 175, 137, 99, 165, 409, 399, 0, 371, - 412, 349, 363, 420, 364, 365, 392, 335, 379, 129, - 361, 0, 352, 330, 358, 331, 350, 373, 97, 376, - 348, 401, 382, 411, 111, 418, 113, 387, 0, 147, - 122, 0, 0, 375, 403, 377, 397, 370, 393, 340, - 386, 413, 362, 390, 414, 0, 0, 0, 77, 0, - 832, 833, 0, 0, 0, 0, 0, 90, 0, 389, - 408, 360, 391, 329, 388, 0, 333, 336, 419, 406, - 355, 356, 0, 0, 0, 0, 0, 0, 0, 374, - 378, 394, 368, 0, 0, 0, 0, 0, 0, 0, - 0, 353, 0, 385, 0, 0, 0, 337, 334, 0, - 0, 372, 0, 0, 0, 339, 0, 354, 395, 0, - 328, 398, 404, 369, 193, 407, 367, 366, 410, 135, - 0, 0, 150, 102, 101, 140, 110, 402, 351, 359, - 93, 357, 142, 131, 162, 384, 132, 141, 114, 154, - 136, 161, 194, 169, 152, 168, 80, 151, 160, 91, - 144, 82, 158, 149, 120, 106, 107, 81, 0, 139, - 96, 100, 95, 128, 155, 156, 94, 177, 85, 167, - 84, 86, 166, 127, 153, 159, 121, 118, 83, 157, - 119, 117, 109, 98, 103, 133, 116, 134, 104, 124, - 123, 125, 0, 332, 0, 148, 164, 178, 88, 347, - 405, 170, 171, 172, 173, 174, 0, 0, 89, 126, - 87, 105, 145, 108, 115, 138, 176, 130, 143, 92, - 163, 146, 343, 346, 341, 342, 380, 381, 415, 416, - 417, 396, 338, 0, 344, 345, 0, 400, 383, 79, - 0, 112, 175, 137, 99, 165, 409, 399, 0, 371, - 412, 349, 363, 420, 364, 365, 392, 335, 379, 129, - 361, 0, 352, 330, 358, 331, 350, 373, 97, 376, - 348, 401, 382, 411, 111, 418, 113, 387, 0, 147, - 122, 0, 0, 375, 403, 377, 397, 370, 393, 340, - 386, 413, 362, 390, 414, 52, 0, 0, 77, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 0, 389, - 408, 360, 391, 329, 388, 0, 333, 336, 419, 406, - 355, 356, 0, 0, 0, 0, 0, 0, 0, 374, - 378, 394, 368, 0, 0, 0, 0, 0, 0, 0, - 0, 353, 0, 385, 0, 0, 0, 337, 334, 0, - 0, 372, 0, 0, 0, 339, 0, 354, 395, 0, - 328, 398, 404, 369, 193, 407, 367, 366, 410, 135, - 0, 0, 150, 102, 101, 140, 110, 402, 351, 359, - 93, 357, 142, 131, 162, 384, 132, 141, 114, 154, - 136, 161, 194, 169, 152, 168, 80, 151, 160, 91, - 144, 82, 158, 149, 120, 106, 107, 81, 0, 139, - 96, 100, 95, 128, 155, 156, 94, 177, 85, 167, - 84, 86, 166, 127, 153, 159, 121, 118, 83, 157, - 119, 117, 109, 98, 103, 133, 116, 134, 104, 124, - 123, 125, 0, 332, 0, 148, 164, 178, 88, 347, - 405, 170, 171, 172, 173, 174, 0, 0, 89, 126, - 87, 105, 145, 108, 115, 138, 176, 130, 143, 92, - 163, 146, 343, 346, 341, 342, 380, 381, 415, 416, - 417, 396, 338, 0, 344, 345, 0, 400, 383, 79, - 0, 112, 175, 137, 99, 165, 409, 399, 0, 371, - 412, 349, 363, 420, 364, 365, 392, 335, 379, 129, - 361, 0, 352, 330, 358, 331, 350, 373, 97, 376, - 348, 401, 382, 411, 111, 418, 113, 387, 0, 147, - 122, 0, 0, 375, 403, 377, 397, 370, 393, 340, - 386, 413, 362, 390, 414, 0, 0, 0, 77, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 0, 389, - 408, 360, 391, 329, 388, 0, 333, 336, 419, 406, - 355, 356, 0, 0, 0, 0, 0, 0, 0, 374, - 378, 394, 368, 0, 0, 0, 0, 0, 0, 1062, - 0, 353, 0, 385, 0, 0, 0, 337, 334, 0, - 0, 372, 0, 0, 0, 339, 0, 354, 395, 0, - 328, 398, 404, 369, 193, 407, 367, 366, 410, 135, - 0, 0, 150, 102, 101, 140, 110, 402, 351, 359, - 93, 357, 142, 131, 162, 384, 132, 141, 114, 154, - 136, 161, 194, 169, 152, 168, 80, 151, 160, 91, - 144, 82, 158, 149, 120, 106, 107, 81, 0, 139, - 96, 100, 95, 128, 155, 156, 94, 177, 85, 167, - 84, 86, 166, 127, 153, 159, 121, 118, 83, 157, - 119, 117, 109, 98, 103, 133, 116, 134, 104, 124, - 123, 125, 0, 332, 0, 148, 164, 178, 88, 347, - 405, 170, 171, 172, 173, 174, 0, 0, 89, 126, - 87, 105, 145, 108, 115, 138, 176, 130, 143, 92, - 163, 146, 343, 346, 341, 342, 380, 381, 415, 416, - 417, 396, 338, 0, 344, 345, 0, 400, 383, 79, - 0, 112, 175, 137, 99, 165, 409, 399, 0, 371, - 412, 349, 363, 420, 364, 365, 392, 335, 379, 129, - 361, 0, 352, 330, 358, 331, 350, 373, 97, 376, - 348, 401, 382, 411, 111, 418, 113, 387, 0, 147, - 122, 0, 0, 375, 403, 377, 397, 370, 393, 340, - 386, 413, 362, 390, 414, 0, 0, 0, 248, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 0, 389, - 408, 360, 391, 329, 388, 0, 333, 336, 419, 406, - 355, 356, 0, 0, 0, 0, 0, 0, 0, 374, - 378, 394, 368, 0, 0, 0, 0, 0, 0, 725, - 0, 353, 0, 385, 0, 0, 0, 337, 334, 0, - 0, 372, 0, 0, 0, 339, 0, 354, 395, 0, - 328, 398, 404, 369, 193, 407, 367, 366, 410, 135, - 0, 0, 150, 102, 101, 140, 110, 402, 351, 359, - 93, 357, 142, 131, 162, 384, 132, 141, 114, 154, - 136, 161, 194, 169, 152, 168, 80, 151, 160, 91, - 144, 82, 158, 149, 120, 106, 107, 81, 0, 139, - 96, 100, 95, 128, 155, 156, 94, 177, 85, 167, - 84, 86, 166, 127, 153, 159, 121, 118, 83, 157, - 119, 117, 109, 98, 103, 133, 116, 134, 104, 124, - 123, 125, 0, 332, 0, 148, 164, 178, 88, 347, - 405, 170, 171, 172, 173, 174, 0, 0, 89, 126, - 87, 105, 145, 108, 115, 138, 176, 130, 143, 92, - 163, 146, 343, 346, 341, 342, 380, 381, 415, 416, - 417, 396, 338, 0, 344, 345, 0, 400, 383, 79, - 0, 112, 175, 137, 99, 165, 409, 399, 0, 371, - 412, 349, 363, 420, 364, 365, 392, 335, 379, 129, - 361, 0, 352, 330, 358, 331, 350, 373, 97, 376, - 348, 401, 382, 411, 111, 418, 113, 387, 0, 147, - 122, 0, 0, 375, 403, 377, 397, 370, 393, 340, - 386, 413, 362, 390, 414, 0, 0, 0, 77, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 0, 389, - 408, 360, 391, 329, 388, 0, 333, 336, 419, 406, - 355, 356, 0, 0, 0, 0, 0, 0, 0, 374, - 378, 394, 368, 0, 0, 0, 0, 0, 0, 0, - 0, 353, 0, 385, 0, 0, 0, 337, 334, 0, - 0, 372, 0, 0, 0, 339, 0, 354, 395, 0, - 328, 398, 404, 369, 193, 407, 367, 366, 410, 135, - 0, 0, 150, 102, 101, 140, 110, 402, 351, 359, - 93, 357, 142, 131, 162, 384, 132, 141, 114, 154, - 136, 161, 194, 169, 152, 168, 80, 151, 160, 91, - 144, 82, 158, 149, 120, 106, 107, 81, 0, 139, - 96, 100, 95, 128, 155, 156, 94, 177, 85, 167, - 84, 86, 166, 127, 153, 159, 121, 118, 83, 157, - 119, 117, 109, 98, 103, 133, 116, 134, 104, 124, - 123, 125, 0, 332, 0, 148, 164, 178, 88, 347, - 405, 170, 171, 172, 173, 174, 0, 0, 89, 126, - 87, 105, 145, 108, 115, 138, 176, 130, 143, 92, - 163, 146, 343, 346, 341, 342, 380, 381, 415, 416, - 417, 396, 338, 0, 344, 345, 0, 400, 383, 79, - 0, 112, 175, 137, 99, 165, 409, 399, 0, 371, - 412, 349, 363, 420, 364, 365, 392, 335, 379, 129, - 361, 0, 352, 330, 358, 331, 350, 373, 97, 376, - 348, 401, 382, 411, 111, 418, 113, 387, 0, 147, - 122, 0, 0, 375, 403, 377, 397, 370, 393, 340, - 386, 413, 362, 390, 414, 0, 0, 0, 248, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 0, 389, - 408, 360, 391, 329, 388, 0, 333, 336, 419, 406, - 355, 356, 0, 0, 0, 0, 0, 0, 0, 374, - 378, 394, 368, 0, 0, 0, 0, 0, 0, 0, - 0, 353, 0, 385, 0, 0, 0, 337, 334, 0, - 0, 372, 0, 0, 0, 339, 0, 354, 395, 0, - 328, 398, 404, 369, 193, 407, 367, 366, 410, 135, - 0, 0, 150, 102, 101, 140, 110, 402, 351, 359, - 93, 357, 142, 131, 162, 384, 132, 141, 114, 154, - 136, 161, 194, 169, 152, 168, 80, 151, 160, 91, - 144, 82, 158, 149, 120, 106, 107, 81, 0, 139, - 96, 100, 95, 128, 155, 156, 94, 177, 85, 167, - 84, 86, 166, 127, 153, 159, 121, 118, 83, 157, - 119, 117, 109, 98, 103, 133, 116, 134, 104, 124, - 123, 125, 0, 332, 0, 148, 164, 178, 88, 347, - 405, 170, 171, 172, 173, 174, 0, 0, 89, 126, - 87, 105, 145, 108, 115, 138, 176, 130, 143, 92, - 163, 146, 343, 346, 341, 342, 380, 381, 415, 416, - 417, 396, 338, 0, 344, 345, 0, 400, 383, 79, - 0, 112, 175, 137, 99, 165, 409, 399, 0, 371, - 412, 349, 363, 420, 364, 365, 392, 335, 379, 129, - 361, 0, 352, 330, 358, 331, 350, 373, 97, 376, - 348, 401, 382, 411, 111, 418, 113, 387, 0, 147, - 122, 0, 0, 375, 403, 377, 397, 370, 393, 340, - 386, 413, 362, 390, 414, 0, 0, 0, 77, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 0, 389, - 408, 360, 391, 329, 388, 0, 333, 336, 419, 406, - 355, 356, 0, 0, 0, 0, 0, 0, 0, 374, - 378, 394, 368, 0, 0, 0, 0, 0, 0, 0, - 0, 353, 0, 385, 0, 0, 0, 337, 334, 0, - 0, 372, 0, 0, 0, 339, 0, 354, 395, 0, - 328, 398, 404, 369, 193, 407, 367, 366, 410, 135, - 0, 0, 150, 102, 101, 140, 110, 402, 351, 359, - 93, 357, 142, 131, 162, 384, 132, 141, 114, 154, - 136, 161, 194, 169, 152, 168, 80, 151, 160, 91, - 144, 82, 158, 149, 120, 106, 107, 81, 0, 139, - 96, 100, 95, 128, 155, 156, 94, 177, 85, 167, - 84, 326, 166, 127, 153, 159, 121, 118, 83, 157, - 119, 117, 109, 98, 103, 133, 116, 134, 104, 124, - 123, 125, 0, 332, 0, 148, 164, 178, 88, 347, - 405, 170, 171, 172, 173, 174, 0, 0, 89, 327, - 325, 105, 145, 108, 115, 138, 176, 130, 143, 92, - 163, 146, 343, 346, 341, 342, 380, 381, 415, 416, - 417, 396, 338, 0, 344, 345, 0, 400, 383, 79, - 0, 112, 175, 137, 99, 165, 409, 399, 0, 371, - 412, 349, 363, 420, 364, 365, 392, 335, 379, 129, - 361, 0, 352, 330, 358, 331, 350, 373, 97, 376, - 348, 401, 382, 411, 111, 418, 113, 387, 0, 147, - 122, 0, 0, 375, 403, 377, 397, 370, 393, 340, - 386, 413, 362, 390, 414, 0, 0, 0, 191, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 0, 389, - 408, 360, 391, 329, 388, 0, 333, 336, 419, 406, - 355, 356, 0, 0, 0, 0, 0, 0, 0, 374, - 378, 394, 368, 0, 0, 0, 0, 0, 0, 0, - 0, 353, 0, 385, 0, 0, 0, 337, 334, 0, - 0, 372, 0, 0, 0, 339, 0, 354, 395, 0, - 328, 398, 404, 369, 193, 407, 367, 366, 410, 135, - 0, 0, 150, 102, 101, 140, 110, 402, 351, 359, - 93, 357, 142, 131, 162, 384, 132, 141, 114, 154, - 136, 161, 194, 169, 152, 168, 80, 151, 160, 91, - 144, 82, 158, 149, 120, 106, 107, 81, 0, 139, - 96, 100, 95, 128, 155, 156, 94, 177, 85, 167, - 84, 86, 166, 127, 153, 159, 121, 118, 83, 157, - 119, 117, 109, 98, 103, 133, 116, 134, 104, 124, - 123, 125, 0, 332, 0, 148, 164, 178, 88, 347, - 405, 170, 171, 172, 173, 174, 0, 0, 89, 126, - 87, 105, 145, 108, 115, 138, 176, 130, 143, 92, - 163, 146, 343, 346, 341, 342, 380, 381, 415, 416, - 417, 396, 338, 0, 344, 345, 0, 400, 383, 79, - 0, 112, 175, 137, 99, 165, 409, 399, 0, 371, - 412, 349, 363, 420, 364, 365, 392, 335, 379, 129, - 361, 0, 352, 330, 358, 331, 350, 373, 97, 376, - 348, 401, 382, 411, 111, 418, 113, 387, 0, 147, - 122, 0, 0, 375, 403, 377, 397, 370, 393, 340, - 386, 413, 362, 390, 414, 0, 0, 0, 77, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 0, 389, - 408, 360, 391, 329, 388, 0, 333, 336, 419, 406, - 355, 356, 0, 0, 0, 0, 0, 0, 0, 374, - 378, 394, 368, 0, 0, 0, 0, 0, 0, 0, - 0, 353, 0, 385, 0, 0, 0, 337, 334, 0, - 0, 372, 0, 0, 0, 339, 0, 354, 395, 0, - 328, 398, 404, 369, 193, 407, 367, 366, 410, 135, - 0, 0, 150, 102, 101, 140, 110, 402, 351, 359, - 93, 357, 142, 131, 162, 384, 132, 141, 114, 154, - 136, 161, 194, 169, 152, 168, 80, 151, 601, 91, - 144, 82, 158, 149, 120, 106, 107, 81, 0, 139, - 96, 100, 95, 128, 155, 156, 94, 177, 85, 167, - 84, 326, 166, 127, 153, 159, 121, 118, 83, 157, - 119, 117, 109, 98, 103, 133, 116, 134, 104, 124, - 123, 125, 0, 332, 0, 148, 164, 178, 88, 347, - 405, 170, 171, 172, 173, 174, 0, 0, 89, 327, - 325, 105, 145, 108, 115, 138, 176, 130, 143, 92, - 163, 146, 343, 346, 341, 342, 380, 381, 415, 416, - 417, 396, 338, 0, 344, 345, 0, 400, 383, 79, - 0, 112, 175, 137, 99, 165, 409, 399, 0, 371, - 412, 349, 363, 420, 364, 365, 392, 335, 379, 129, - 361, 0, 352, 330, 358, 331, 350, 373, 97, 376, - 348, 401, 382, 411, 111, 418, 113, 387, 0, 147, - 122, 0, 0, 375, 403, 377, 397, 370, 393, 340, - 386, 413, 362, 390, 414, 0, 0, 0, 77, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 0, 389, - 408, 360, 391, 329, 388, 0, 333, 336, 419, 406, - 355, 356, 0, 0, 0, 0, 0, 0, 0, 374, - 378, 394, 368, 0, 0, 0, 0, 0, 0, 0, - 0, 353, 0, 385, 0, 0, 0, 337, 334, 0, - 0, 372, 0, 0, 0, 339, 0, 354, 395, 0, - 328, 398, 404, 369, 193, 407, 367, 366, 410, 135, - 0, 0, 150, 102, 101, 140, 110, 402, 351, 359, - 93, 357, 142, 131, 162, 384, 132, 141, 114, 154, - 136, 161, 194, 169, 152, 168, 80, 151, 317, 91, - 144, 82, 158, 149, 120, 106, 107, 81, 0, 139, - 96, 100, 95, 128, 155, 156, 94, 177, 85, 167, - 84, 326, 166, 127, 153, 159, 121, 118, 83, 157, - 119, 117, 109, 98, 103, 133, 116, 134, 104, 124, - 123, 125, 0, 332, 0, 148, 164, 178, 88, 347, - 405, 170, 171, 172, 173, 174, 0, 0, 89, 327, - 325, 320, 319, 108, 115, 138, 176, 130, 143, 92, - 163, 146, 343, 346, 341, 342, 380, 381, 415, 416, - 417, 396, 338, 0, 344, 345, 0, 400, 383, 79, - 0, 112, 175, 137, 99, 165, 129, 0, 0, 761, - 0, 250, 0, 0, 0, 97, 0, 247, 0, 0, - 0, 111, 290, 113, 0, 0, 147, 122, 0, 0, - 0, 0, 281, 282, 0, 0, 0, 0, 0, 0, - 0, 0, 52, 0, 0, 248, 269, 268, 271, 272, - 273, 274, 0, 0, 90, 270, 275, 276, 277, 0, - 0, 245, 262, 0, 289, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 259, 260, 241, 0, 0, 0, - 301, 0, 261, 0, 0, 256, 257, 258, 263, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 193, 0, 0, 299, 0, 135, 0, 0, 150, - 102, 101, 140, 110, 0, 0, 0, 93, 0, 142, - 131, 162, 0, 132, 141, 114, 154, 136, 161, 194, - 169, 152, 168, 80, 151, 160, 91, 144, 82, 158, - 149, 120, 106, 107, 81, 0, 139, 96, 100, 95, - 128, 155, 156, 94, 177, 85, 167, 84, 86, 166, - 127, 153, 159, 121, 118, 83, 157, 119, 117, 109, - 98, 103, 133, 116, 134, 104, 124, 123, 125, 0, - 0, 0, 148, 164, 178, 88, 0, 0, 170, 171, - 172, 173, 174, 0, 0, 89, 126, 87, 105, 145, - 108, 115, 138, 176, 130, 143, 92, 163, 146, 291, - 300, 297, 298, 295, 296, 294, 293, 292, 302, 283, - 284, 285, 286, 288, 0, 287, 79, 0, 112, 175, - 137, 99, 165, 129, 0, 0, 0, 0, 250, 0, - 0, 0, 97, 0, 247, 0, 0, 0, 111, 290, - 113, 0, 0, 147, 122, 0, 0, 0, 0, 281, - 282, 0, 0, 0, 0, 0, 0, 0, 0, 52, - 0, 471, 248, 269, 268, 271, 272, 273, 274, 0, - 0, 90, 270, 275, 276, 277, 0, 0, 245, 262, - 0, 289, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 259, 260, 0, 0, 0, 0, 301, 0, 261, - 0, 0, 256, 257, 258, 263, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, - 0, 299, 0, 135, 0, 0, 150, 102, 101, 140, - 110, 0, 0, 0, 93, 0, 142, 131, 162, 0, - 132, 141, 114, 154, 136, 161, 194, 169, 152, 168, - 80, 151, 160, 91, 144, 82, 158, 149, 120, 106, - 107, 81, 0, 139, 96, 100, 95, 128, 155, 156, - 94, 177, 85, 167, 84, 86, 166, 127, 153, 159, - 121, 118, 83, 157, 119, 117, 109, 98, 103, 133, - 116, 134, 104, 124, 123, 125, 0, 0, 0, 148, - 164, 178, 88, 0, 0, 170, 171, 172, 173, 174, - 0, 0, 89, 126, 87, 105, 145, 108, 115, 138, - 176, 130, 143, 92, 163, 146, 291, 300, 297, 298, - 295, 296, 294, 293, 292, 302, 283, 284, 285, 286, - 288, 0, 287, 79, 0, 112, 175, 137, 99, 165, - 129, 0, 0, 0, 0, 250, 0, 0, 0, 97, - 0, 247, 0, 0, 0, 111, 290, 113, 0, 0, - 147, 122, 0, 0, 0, 0, 281, 282, 0, 0, - 0, 0, 0, 0, 0, 0, 52, 0, 0, 248, - 269, 268, 271, 272, 273, 274, 0, 0, 90, 270, - 275, 276, 277, 0, 0, 245, 262, 0, 289, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 259, 260, - 241, 0, 0, 0, 301, 0, 261, 0, 0, 256, - 257, 258, 263, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 193, 0, 0, 299, 0, - 135, 0, 0, 150, 102, 101, 140, 110, 0, 0, - 0, 93, 0, 142, 131, 162, 0, 132, 141, 114, - 154, 136, 161, 194, 169, 152, 168, 80, 151, 160, - 91, 144, 82, 158, 149, 120, 106, 107, 81, 0, - 139, 96, 100, 95, 128, 155, 156, 94, 177, 85, - 167, 84, 86, 166, 127, 153, 159, 121, 118, 83, - 157, 119, 117, 109, 98, 103, 133, 116, 134, 104, - 124, 123, 125, 0, 0, 0, 148, 164, 178, 88, - 0, 0, 170, 171, 172, 173, 174, 0, 0, 89, - 126, 87, 105, 145, 108, 115, 138, 176, 130, 143, - 92, 163, 146, 291, 300, 297, 298, 295, 296, 294, - 293, 292, 302, 283, 284, 285, 286, 288, 0, 287, - 79, 0, 112, 175, 137, 99, 165, 129, 0, 0, - 0, 0, 250, 0, 0, 0, 97, 0, 247, 0, - 0, 0, 111, 290, 113, 0, 0, 147, 122, 0, - 0, 0, 0, 281, 282, 0, 0, 0, 0, 0, - 0, 824, 0, 52, 0, 0, 248, 269, 268, 271, - 272, 273, 274, 0, 0, 90, 270, 275, 276, 277, - 0, 0, 245, 262, 0, 289, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 259, 260, 0, 0, 0, - 0, 301, 0, 261, 0, 0, 256, 257, 258, 263, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 193, 0, 0, 299, 0, 135, 0, 0, - 150, 102, 101, 140, 110, 0, 0, 0, 93, 0, - 142, 131, 162, 0, 132, 141, 114, 154, 136, 161, - 194, 169, 152, 168, 80, 151, 160, 91, 144, 82, - 158, 149, 120, 106, 107, 81, 0, 139, 96, 100, - 95, 128, 155, 156, 94, 177, 85, 167, 84, 86, - 166, 127, 153, 159, 121, 118, 83, 157, 119, 117, - 109, 98, 103, 133, 116, 134, 104, 124, 123, 125, - 0, 0, 0, 148, 164, 178, 88, 0, 0, 170, - 171, 172, 173, 174, 0, 0, 89, 126, 87, 105, - 145, 108, 115, 138, 176, 130, 143, 92, 163, 146, - 291, 300, 297, 298, 295, 296, 294, 293, 292, 302, - 283, 284, 285, 286, 288, 23, 287, 79, 0, 112, - 175, 137, 99, 165, 0, 0, 0, 129, 0, 0, - 0, 0, 250, 0, 0, 0, 97, 0, 247, 0, - 0, 0, 111, 290, 113, 0, 0, 147, 122, 0, - 0, 0, 0, 281, 282, 0, 0, 0, 0, 0, - 0, 0, 0, 52, 0, 0, 248, 269, 268, 271, - 272, 273, 274, 0, 0, 90, 270, 275, 276, 277, - 0, 0, 245, 262, 0, 289, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 259, 260, 0, 0, 0, - 0, 301, 0, 261, 0, 0, 256, 257, 258, 263, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 193, 0, 0, 299, 0, 135, 0, 0, - 150, 102, 101, 140, 110, 0, 0, 0, 93, 0, - 142, 131, 162, 0, 132, 141, 114, 154, 136, 161, - 194, 169, 152, 168, 80, 151, 160, 91, 144, 82, - 158, 149, 120, 106, 107, 81, 0, 139, 96, 100, - 95, 128, 155, 156, 94, 177, 85, 167, 84, 86, - 166, 127, 153, 159, 121, 118, 83, 157, 119, 117, - 109, 98, 103, 133, 116, 134, 104, 124, 123, 125, - 0, 0, 0, 148, 164, 178, 88, 0, 0, 170, - 171, 172, 173, 174, 0, 0, 89, 126, 87, 105, - 145, 108, 115, 138, 176, 130, 143, 92, 163, 146, - 291, 300, 297, 298, 295, 296, 294, 293, 292, 302, - 283, 284, 285, 286, 288, 0, 287, 79, 0, 112, - 175, 137, 99, 165, 129, 0, 0, 0, 0, 250, - 0, 0, 0, 97, 0, 247, 0, 0, 0, 111, - 290, 113, 0, 0, 147, 122, 0, 0, 0, 0, - 281, 282, 0, 0, 0, 0, 0, 0, 0, 0, - 52, 0, 0, 248, 269, 268, 271, 272, 273, 274, - 0, 0, 90, 270, 275, 276, 277, 0, 0, 245, - 262, 0, 289, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 259, 260, 0, 0, 0, 0, 301, 0, - 261, 0, 0, 256, 257, 258, 263, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, - 0, 0, 299, 0, 135, 0, 0, 150, 102, 101, - 140, 110, 0, 0, 0, 93, 0, 142, 131, 162, - 0, 132, 141, 114, 154, 136, 161, 194, 169, 152, - 168, 80, 151, 160, 91, 144, 82, 158, 149, 120, - 106, 107, 81, 0, 139, 96, 100, 95, 128, 155, - 156, 94, 177, 85, 167, 84, 86, 166, 127, 153, - 159, 121, 118, 83, 157, 119, 117, 109, 98, 103, - 133, 116, 134, 104, 124, 123, 125, 0, 0, 0, - 148, 164, 178, 88, 0, 0, 170, 171, 172, 173, - 174, 0, 0, 89, 126, 87, 105, 145, 108, 115, - 138, 176, 130, 143, 92, 163, 146, 291, 300, 297, - 298, 295, 296, 294, 293, 292, 302, 283, 284, 285, - 286, 288, 129, 287, 79, 0, 112, 175, 137, 99, - 165, 97, 0, 0, 0, 0, 0, 111, 290, 113, - 0, 0, 147, 122, 0, 0, 0, 0, 281, 282, - 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, - 0, 248, 269, 268, 271, 272, 273, 274, 0, 0, - 90, 270, 275, 276, 277, 0, 0, 0, 262, 0, - 289, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 259, 260, 0, 0, 0, 0, 301, 0, 261, 0, - 0, 256, 257, 258, 263, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, - 299, 0, 135, 0, 0, 150, 102, 101, 140, 110, - 0, 0, 0, 93, 0, 142, 131, 162, 1325, 132, - 141, 114, 154, 136, 161, 194, 169, 152, 168, 80, - 151, 160, 91, 144, 82, 158, 149, 120, 106, 107, - 81, 0, 139, 96, 100, 95, 128, 155, 156, 94, - 177, 85, 167, 84, 86, 166, 127, 153, 159, 121, - 118, 83, 157, 119, 117, 109, 98, 103, 133, 116, - 134, 104, 124, 123, 125, 0, 0, 0, 148, 164, - 178, 88, 0, 0, 170, 171, 172, 173, 174, 0, - 0, 89, 126, 87, 105, 145, 108, 115, 138, 176, - 130, 143, 92, 163, 146, 291, 300, 297, 298, 295, - 296, 294, 293, 292, 302, 283, 284, 285, 286, 288, - 129, 287, 79, 0, 112, 175, 137, 99, 165, 97, - 0, 0, 0, 0, 0, 111, 290, 113, 0, 0, - 147, 122, 0, 0, 0, 0, 281, 282, 0, 0, - 0, 0, 0, 0, 0, 0, 52, 0, 0, 248, - 269, 268, 271, 272, 273, 274, 0, 0, 90, 270, - 275, 276, 277, 0, 0, 0, 262, 0, 289, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 259, 260, - 0, 0, 0, 0, 301, 0, 261, 0, 0, 256, - 257, 258, 263, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 193, 0, 0, 299, 0, - 135, 0, 0, 150, 102, 101, 140, 110, 0, 0, - 0, 93, 0, 142, 131, 162, 0, 132, 141, 114, - 154, 136, 161, 194, 169, 152, 168, 80, 151, 160, - 91, 144, 82, 158, 149, 120, 106, 107, 81, 0, - 139, 96, 100, 95, 128, 155, 156, 94, 177, 85, - 167, 84, 86, 166, 127, 153, 159, 121, 118, 83, - 157, 119, 117, 109, 98, 103, 133, 116, 134, 104, - 124, 123, 125, 0, 0, 0, 148, 164, 178, 88, - 0, 0, 170, 171, 172, 173, 174, 0, 0, 89, - 126, 87, 105, 145, 108, 115, 138, 176, 130, 143, - 92, 163, 146, 291, 300, 297, 298, 295, 296, 294, - 293, 292, 302, 283, 284, 285, 286, 288, 129, 287, - 79, 0, 112, 175, 137, 99, 165, 97, 0, 0, - 0, 0, 0, 111, 0, 113, 0, 0, 147, 122, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, - 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 505, 504, 514, 515, 507, 508, 509, 510, - 511, 512, 513, 506, 0, 0, 516, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 193, 0, 0, 0, 0, 135, 0, - 0, 150, 102, 101, 140, 110, 0, 0, 0, 93, - 0, 142, 131, 162, 0, 132, 141, 114, 154, 136, - 161, 194, 169, 152, 168, 80, 151, 160, 91, 144, - 82, 158, 149, 120, 106, 107, 81, 0, 139, 96, - 100, 95, 128, 155, 156, 94, 177, 85, 167, 84, - 86, 166, 127, 153, 159, 121, 118, 83, 157, 119, - 117, 109, 98, 103, 133, 116, 134, 104, 124, 123, - 125, 0, 0, 0, 148, 164, 178, 88, 0, 0, - 170, 171, 172, 173, 174, 0, 0, 89, 126, 87, - 105, 145, 108, 115, 138, 176, 130, 143, 92, 163, - 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 129, 0, 0, 0, 493, 0, 0, 0, 79, 97, - 112, 175, 137, 99, 165, 111, 0, 113, 0, 0, - 147, 122, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, - 0, 495, 0, 0, 0, 0, 0, 0, 90, 0, - 0, 0, 0, 490, 489, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 491, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 251, 1296, 884, 544, 669, 795, 1252, 1103, 255, 1131, + 831, 813, 1034, 1202, 835, 229, 281, 973, 543, 3, + 1104, 1100, 591, 834, 911, 796, 589, 844, 989, 1077, + 878, 80, 758, 937, 768, 194, 698, 1037, 194, 1025, + 55, 848, 326, 607, 735, 784, 765, 476, 978, 482, + 874, 606, 425, 578, 320, 792, 308, 767, 488, 593, + 253, 496, 307, 238, 194, 194, 80, 919, 228, 317, + 194, 315, 194, 558, 80, 54, 864, 221, 1329, 1316, + 1327, 1303, 1324, 885, 1315, 257, 1302, 1095, 1190, 430, + 306, 59, 1262, 1125, 313, 901, 242, 451, 1139, 1140, + 1141, 189, 185, 186, 187, 997, 1144, 1142, 996, 900, + 826, 998, 1126, 1127, 827, 828, 61, 62, 63, 64, + 65, 222, 223, 224, 225, 608, 227, 609, 226, 191, + 1016, 23, 24, 50, 26, 27, 467, 905, 857, 1215, + 439, 1230, 865, 468, 465, 1179, 899, 1177, 220, 311, + 42, 462, 463, 1326, 1078, 28, 47, 48, 1323, 316, + 1297, 453, 1058, 455, 427, 793, 429, 1253, 1289, 849, + 440, 814, 816, 677, 433, 37, 1260, 183, 668, 52, + 1255, 436, 182, 194, 183, 194, 1080, 858, 988, 452, + 454, 194, 987, 986, 1045, 896, 893, 894, 194, 892, + 428, 1282, 80, 80, 80, 80, 197, 80, 1055, 851, + 184, 532, 533, 188, 1057, 851, 80, 1199, 1082, 1064, + 1086, 953, 1081, 1043, 1079, 903, 906, 931, 707, 1084, + 500, 446, 510, 832, 520, 520, 699, 704, 1083, 30, + 31, 33, 32, 35, 1009, 80, 815, 913, 495, 1254, + 1287, 1085, 1087, 485, 494, 493, 1158, 1148, 1045, 976, + 898, 36, 43, 44, 865, 610, 45, 46, 34, 1097, + 1143, 495, 450, 484, 785, 1261, 1259, 437, 672, 438, + 38, 39, 897, 40, 41, 445, 1301, 1043, 1044, 710, + 711, 851, 447, 1049, 1046, 1039, 1040, 1047, 1042, 1041, + 458, 474, 1014, 850, 472, 473, 194, 1149, 1056, 850, + 1054, 1048, 1291, 194, 194, 194, 700, 1051, 490, 80, + 426, 902, 1307, 426, 912, 80, 1309, 486, 442, 443, + 444, 432, 68, 950, 904, 1221, 494, 493, 530, 1277, + 509, 508, 518, 519, 511, 512, 513, 514, 515, 516, + 517, 510, 1044, 495, 520, 424, 1220, 1049, 1046, 1039, + 1040, 1047, 1042, 1041, 742, 51, 323, 69, 560, 561, + 562, 563, 564, 565, 566, 1048, 493, 1029, 740, 741, + 739, 1038, 494, 493, 1288, 850, 598, 949, 604, 948, + 847, 845, 495, 843, 846, 1028, 849, 854, 311, 495, + 573, 785, 855, 960, 181, 494, 493, 434, 435, 597, + 509, 508, 518, 519, 511, 512, 513, 514, 515, 516, + 517, 510, 495, 52, 520, 194, 725, 727, 728, 1237, + 80, 726, 1017, 738, 1186, 475, 194, 194, 80, 759, + 194, 760, 1218, 194, 282, 49, 999, 194, 1000, 80, + 80, 80, 80, 80, 80, 80, 80, 1061, 938, 928, + 929, 930, 1026, 80, 80, 1245, 1325, 305, 1312, 475, + 194, 509, 508, 518, 519, 511, 512, 513, 514, 515, + 516, 517, 510, 21, 1285, 520, 494, 493, 80, 686, + 1245, 1294, 194, 1099, 49, 1245, 1257, 475, 80, 1278, + 712, 706, 234, 495, 1245, 475, 1245, 1246, 312, 1211, + 1210, 1122, 475, 1266, 684, 1198, 475, 1155, 1154, 618, + 736, 1135, 511, 512, 513, 514, 515, 516, 517, 510, + 674, 675, 520, 1134, 678, 1151, 1152, 681, 705, 1151, + 1150, 233, 80, 733, 513, 514, 515, 516, 517, 510, + 714, 1010, 520, 1005, 494, 493, 943, 475, 1265, 729, + 777, 780, 887, 761, 701, 772, 786, 683, 731, 575, + 475, 495, 682, 194, 23, 673, 194, 194, 194, 194, + 194, 770, 475, 797, 671, 666, 721, 601, 194, 737, + 448, 194, 248, 762, 763, 194, 617, 616, 968, 441, + 194, 194, 969, 1145, 80, 773, 774, 23, 1067, 772, + 56, 781, 852, 782, 974, 789, 975, 80, 1101, 323, + 574, 974, 52, 975, 955, 788, 821, 790, 791, 602, + 820, 600, 600, 799, 800, 1240, 802, 770, 798, 952, + 810, 801, 1194, 23, 575, 575, 457, 457, 457, 457, + 943, 457, 943, 819, 818, 52, 235, 824, 823, 575, + 457, 311, 311, 311, 311, 311, 974, 794, 954, 194, + 839, 1157, 80, 1153, 80, 1001, 311, 825, 194, 49, + 943, 194, 80, 951, 603, 311, 580, 583, 584, 585, + 581, 52, 582, 586, 529, 822, 880, 531, 194, 52, + 194, 194, 708, 1317, 52, 1225, 859, 879, 866, 867, + 868, 456, 1136, 876, 877, 1116, 1004, 979, 980, 720, + 875, 870, 869, 670, 882, 542, 1138, 546, 547, 548, + 549, 550, 551, 552, 553, 554, 1101, 557, 559, 559, + 559, 559, 559, 559, 559, 559, 567, 568, 569, 570, + 733, 1030, 982, 680, 280, 469, 736, 590, 920, 809, + 921, 584, 585, 883, 271, 270, 273, 274, 275, 276, + 985, 807, 907, 272, 277, 908, 808, 927, 805, 984, + 804, 803, 1321, 806, 933, 78, 1314, 713, 239, 240, + 489, 1063, 910, 580, 583, 584, 585, 581, 916, 582, + 586, 732, 1320, 979, 980, 487, 926, 925, 1021, 615, + 477, 970, 449, 1013, 860, 861, 862, 863, 80, 1192, + 325, 194, 478, 1293, 942, 737, 1292, 1238, 431, 959, + 871, 872, 873, 1011, 1006, 80, 1226, 991, 889, 993, + 957, 679, 588, 236, 237, 769, 771, 992, 489, 1002, + 983, 534, 535, 536, 537, 538, 539, 540, 541, 924, + 230, 787, 1271, 231, 56, 1270, 1228, 923, 975, 994, + 470, 697, 491, 1279, 457, 1020, 1216, 1022, 1023, 1024, + 703, 58, 457, 80, 80, 60, 80, 599, 1007, 1008, + 53, 812, 1, 457, 457, 457, 457, 457, 457, 457, + 457, 886, 1033, 895, 323, 1295, 311, 457, 457, 80, + 1027, 1251, 1130, 842, 459, 460, 461, 836, 464, 833, + 67, 423, 66, 194, 1286, 841, 840, 471, 1258, 1214, + 853, 1050, 80, 1015, 856, 1137, 1290, 1018, 1019, 1012, + 623, 621, 622, 620, 625, 624, 619, 1060, 205, 318, + 587, 611, 881, 492, 70, 1053, 325, 325, 325, 325, + 1052, 325, 891, 466, 207, 528, 922, 995, 1071, 1036, + 325, 324, 80, 80, 1102, 1108, 49, 797, 1076, 1070, + 1089, 709, 1088, 797, 481, 1269, 1105, 1227, 958, 555, + 1107, 546, 783, 256, 724, 269, 733, 266, 1096, 498, + 1112, 1110, 80, 268, 80, 80, 267, 715, 732, 967, + 1124, 502, 254, 246, 1111, 310, 571, 1065, 1129, 579, + 312, 312, 312, 312, 312, 1128, 577, 576, 981, 1146, + 1147, 194, 1123, 1133, 977, 590, 309, 817, 1066, 80, + 1189, 1276, 719, 25, 312, 57, 241, 19, 18, 17, + 20, 16, 80, 194, 15, 14, 29, 13, 12, 80, + 11, 10, 9, 940, 8, 80, 7, 941, 194, 6, + 5, 4, 232, 325, 945, 946, 947, 22, 2, 612, + 0, 0, 0, 956, 1167, 1166, 0, 0, 962, 0, + 963, 964, 965, 966, 1168, 734, 0, 0, 743, 744, + 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, + 755, 756, 757, 1175, 0, 1159, 457, 80, 457, 80, + 80, 80, 194, 80, 1193, 1156, 457, 1201, 1161, 80, + 0, 1164, 1204, 1205, 1206, 836, 0, 80, 0, 1209, + 0, 667, 0, 1002, 1207, 0, 0, 1163, 0, 676, + 1213, 0, 0, 311, 0, 0, 0, 80, 80, 80, + 687, 688, 689, 690, 691, 692, 693, 694, 0, 0, + 1223, 0, 0, 1224, 695, 696, 0, 932, 0, 0, + 0, 0, 0, 0, 325, 0, 1035, 0, 0, 0, + 0, 0, 325, 0, 0, 0, 0, 0, 0, 80, + 80, 0, 0, 325, 325, 325, 325, 325, 325, 325, + 325, 1105, 80, 0, 0, 1239, 1241, 325, 325, 1250, + 0, 1256, 0, 0, 0, 0, 80, 1217, 1263, 1219, + 1264, 0, 1069, 0, 0, 0, 0, 971, 972, 1267, + 0, 0, 716, 0, 1075, 0, 80, 0, 1280, 0, + 1229, 0, 498, 0, 1092, 325, 0, 1105, 1284, 0, + 0, 1281, 0, 0, 0, 312, 1172, 1173, 0, 1174, + 0, 0, 1176, 0, 1178, 1299, 0, 0, 244, 0, + 0, 0, 0, 80, 0, 1304, 0, 0, 797, 0, + 194, 1121, 0, 0, 0, 0, 764, 0, 80, 1310, + 1183, 475, 836, 0, 836, 0, 778, 778, 0, 0, + 0, 0, 778, 1318, 1319, 0, 0, 0, 80, 0, + 1212, 0, 0, 0, 0, 0, 0, 0, 457, 778, + 0, 1322, 0, 934, 935, 936, 0, 509, 508, 518, + 519, 511, 512, 513, 514, 515, 516, 517, 510, 0, + 0, 520, 0, 457, 0, 0, 0, 0, 325, 0, + 0, 0, 0, 0, 0, 1069, 0, 0, 0, 0, + 0, 325, 1169, 0, 0, 0, 0, 0, 0, 1171, + 0, 0, 0, 888, 1308, 890, 0, 0, 0, 0, + 1180, 1181, 1182, 909, 0, 1185, 0, 0, 0, 0, + 0, 475, 0, 0, 0, 0, 0, 0, 1195, 1196, + 1197, 0, 1200, 0, 1106, 0, 49, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 325, 0, 325, 836, + 203, 1118, 1119, 1120, 0, 0, 325, 509, 508, 518, + 519, 511, 512, 513, 514, 515, 516, 517, 510, 0, + 0, 520, 0, 0, 215, 504, 0, 507, 1035, 836, + 0, 0, 325, 521, 522, 523, 524, 525, 526, 527, + 0, 505, 506, 503, 509, 508, 518, 519, 511, 512, + 513, 514, 515, 516, 517, 510, 0, 0, 520, 0, + 480, 1236, 508, 518, 519, 511, 512, 513, 514, 515, + 516, 517, 510, 0, 198, 520, 1247, 1248, 1249, 479, + 483, 200, 312, 0, 0, 0, 0, 0, 206, 202, + 0, 0, 0, 0, 0, 192, 501, 0, 219, 0, + 0, 1073, 1074, 1272, 1273, 1274, 1275, 0, 0, 0, + 1188, 0, 0, 0, 1090, 1091, 204, 1093, 1094, 208, + 0, 0, 245, 0, 192, 192, 0, 0, 0, 0, + 192, 545, 192, 0, 0, 0, 0, 0, 0, 0, + 556, 1187, 990, 0, 0, 0, 0, 199, 1300, 0, + 0, 0, 0, 1305, 0, 0, 0, 0, 0, 325, + 0, 0, 0, 0, 0, 1032, 0, 1311, 0, 0, + 0, 457, 0, 0, 209, 201, 0, 210, 211, 212, + 214, 213, 218, 0, 0, 0, 1184, 217, 216, 0, + 1059, 0, 518, 519, 511, 512, 513, 514, 515, 516, + 517, 510, 1332, 1333, 520, 0, 0, 1031, 325, 1106, + 325, 0, 1242, 0, 509, 508, 518, 519, 511, 512, + 513, 514, 515, 516, 517, 510, 0, 0, 520, 0, + 0, 0, 0, 325, 0, 1170, 0, 0, 0, 0, + 0, 1268, 0, 192, 0, 192, 0, 0, 0, 0, + 0, 192, 0, 0, 0, 1106, 325, 49, 192, 509, + 508, 518, 519, 511, 512, 513, 514, 515, 516, 517, + 510, 0, 0, 520, 0, 0, 0, 0, 325, 0, + 1072, 509, 508, 518, 519, 511, 512, 513, 514, 515, + 516, 517, 510, 778, 0, 520, 1109, 990, 0, 778, + 509, 508, 518, 519, 511, 512, 513, 514, 515, 516, + 517, 510, 0, 0, 520, 0, 0, 0, 0, 702, + 0, 0, 0, 0, 0, 0, 325, 0, 325, 1132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1328, 722, 723, 0, 0, 1231, 1232, 0, 1233, + 1234, 1235, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1160, 0, 0, 192, 0, 0, 0, + 0, 0, 0, 192, 595, 192, 1162, 0, 0, 0, + 939, 0, 0, 1165, 0, 0, 0, 0, 0, 325, + 0, 0, 0, 0, 0, 545, 0, 0, 775, 776, + 509, 508, 518, 519, 511, 512, 513, 514, 515, 516, + 517, 510, 0, 0, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, - 135, 0, 0, 150, 102, 101, 140, 110, 0, 0, - 0, 93, 0, 142, 131, 162, 0, 132, 141, 114, - 154, 136, 161, 194, 169, 152, 168, 80, 151, 160, - 91, 144, 82, 158, 149, 120, 106, 107, 81, 0, - 139, 96, 100, 95, 128, 155, 156, 94, 177, 85, - 167, 84, 86, 166, 127, 153, 159, 121, 118, 83, - 157, 119, 117, 109, 98, 103, 133, 116, 134, 104, - 124, 123, 125, 0, 0, 0, 148, 164, 178, 88, - 0, 0, 170, 171, 172, 173, 174, 0, 0, 89, - 126, 87, 105, 145, 108, 115, 138, 176, 130, 143, - 92, 163, 146, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, - 79, 97, 112, 175, 137, 99, 165, 111, 0, 113, - 0, 0, 147, 122, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1222, 0, + 0, 1203, 0, 1203, 1203, 1203, 0, 1208, 0, 0, + 0, 0, 0, 325, 0, 0, 0, 0, 0, 830, + 0, 1203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, - 90, 0, 0, 0, 0, 70, 0, 0, 0, 0, + 0, 325, 325, 325, 0, 192, 0, 0, 0, 0, + 0, 1330, 0, 0, 0, 0, 192, 192, 0, 0, + 192, 0, 0, 192, 0, 0, 0, 685, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1243, 1244, 0, 0, 0, 0, 0, + 192, 0, 0, 0, 640, 0, 1132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1203, 0, 192, 0, 917, 918, 0, 483, 0, 0, + 0, 685, 0, 0, 0, 0, 0, 0, 0, 0, + 1283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 73, 74, 0, 69, 0, 0, - 0, 75, 135, 0, 0, 150, 102, 101, 140, 110, - 0, 0, 0, 93, 0, 142, 131, 162, 0, 132, - 141, 114, 154, 136, 161, 71, 169, 152, 168, 80, - 151, 160, 91, 144, 82, 158, 149, 120, 106, 107, - 81, 0, 139, 96, 100, 95, 128, 155, 156, 94, - 177, 85, 167, 84, 86, 166, 127, 153, 159, 121, - 118, 83, 157, 119, 117, 109, 98, 103, 133, 116, - 134, 104, 124, 123, 125, 0, 0, 0, 148, 164, - 178, 88, 0, 0, 170, 171, 172, 173, 174, 0, - 0, 89, 126, 87, 105, 145, 108, 115, 138, 176, - 130, 143, 92, 163, 146, 0, 72, 0, 0, 0, - 0, 0, 0, 0, 129, 0, 0, 0, 590, 0, - 0, 0, 79, 97, 112, 175, 137, 99, 165, 111, - 0, 113, 0, 0, 147, 122, 0, 0, 0, 0, + 0, 0, 0, 245, 778, 0, 0, 1306, 245, 245, + 0, 628, 779, 779, 245, 0, 0, 0, 779, 944, + 0, 0, 1313, 0, 0, 0, 0, 0, 245, 245, + 245, 245, 0, 192, 961, 779, 192, 192, 192, 192, + 192, 0, 1203, 641, 0, 0, 0, 0, 811, 0, + 0, 192, 0, 0, 0, 595, 0, 0, 0, 0, + 192, 192, 0, 0, 654, 655, 656, 657, 658, 659, + 660, 0, 661, 662, 663, 664, 665, 642, 643, 644, + 645, 626, 627, 0, 0, 629, 0, 630, 631, 632, + 633, 634, 635, 636, 637, 638, 639, 646, 647, 648, + 649, 650, 651, 652, 653, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 191, 0, 592, 0, 0, 0, 0, - 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, + 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, + 914, 915, 1062, 0, 0, 0, 0, 0, 685, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1098, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1113, 1114, 0, 245, 1115, 0, + 0, 1117, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, - 0, 0, 0, 0, 135, 0, 0, 150, 102, 101, - 140, 110, 0, 0, 0, 93, 0, 142, 131, 162, - 0, 132, 141, 114, 154, 136, 161, 194, 169, 152, - 168, 80, 151, 160, 91, 144, 82, 158, 149, 120, - 106, 107, 81, 0, 139, 96, 100, 95, 128, 155, - 156, 94, 177, 85, 167, 84, 86, 166, 127, 153, - 159, 121, 118, 83, 157, 119, 117, 109, 98, 103, - 133, 116, 134, 104, 124, 123, 125, 0, 0, 0, - 148, 164, 178, 88, 0, 0, 170, 171, 172, 173, - 174, 0, 0, 89, 126, 87, 105, 145, 108, 115, - 138, 176, 130, 143, 92, 163, 146, 0, 0, 0, - 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 129, 0, 79, 0, 112, 175, 137, 99, - 165, 97, 0, 0, 0, 0, 0, 111, 0, 113, - 0, 0, 147, 122, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, - 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, - 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, - 0, 0, 135, 0, 0, 150, 102, 101, 140, 110, - 0, 0, 0, 93, 0, 142, 131, 162, 0, 132, - 141, 114, 154, 136, 161, 194, 169, 152, 168, 80, - 151, 160, 91, 144, 82, 158, 149, 120, 106, 107, - 81, 0, 139, 96, 100, 95, 128, 155, 156, 94, - 177, 85, 167, 84, 86, 166, 127, 153, 159, 121, - 118, 83, 157, 119, 117, 109, 98, 103, 133, 116, - 134, 104, 124, 123, 125, 0, 0, 0, 148, 164, - 178, 88, 0, 0, 170, 171, 172, 173, 174, 0, - 0, 89, 126, 87, 105, 145, 108, 115, 138, 176, - 130, 143, 92, 163, 146, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 129, 0, 79, 0, 112, 175, 137, 99, 165, 97, - 0, 0, 0, 0, 0, 111, 0, 113, 0, 0, - 147, 122, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 52, 0, 0, 191, - 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1191, 0, + 0, 0, 0, 0, 0, 545, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 245, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 245, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 685, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 779, + 0, 0, 0, 0, 0, 779, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, - 135, 0, 0, 150, 102, 101, 140, 110, 0, 0, - 0, 93, 0, 142, 131, 162, 0, 132, 141, 114, - 154, 136, 161, 194, 169, 152, 168, 80, 151, 160, - 91, 144, 82, 158, 149, 120, 106, 107, 81, 0, - 139, 96, 100, 95, 128, 155, 156, 94, 177, 85, - 167, 84, 86, 166, 127, 153, 159, 121, 118, 83, - 157, 119, 117, 109, 98, 103, 133, 116, 134, 104, - 124, 123, 125, 0, 0, 0, 148, 164, 178, 88, - 0, 0, 170, 171, 172, 173, 174, 0, 0, 89, - 126, 87, 105, 145, 108, 115, 138, 176, 130, 143, - 92, 163, 146, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, - 79, 97, 112, 175, 137, 99, 165, 111, 0, 113, - 0, 0, 147, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 77, 0, 0, 712, 0, 0, 713, 0, 0, - 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, - 0, 0, 135, 0, 0, 150, 102, 101, 140, 110, - 0, 0, 0, 93, 0, 142, 131, 162, 0, 132, - 141, 114, 154, 136, 161, 194, 169, 152, 168, 80, - 151, 160, 91, 144, 82, 158, 149, 120, 106, 107, - 81, 0, 139, 96, 100, 95, 128, 155, 156, 94, - 177, 85, 167, 84, 86, 166, 127, 153, 159, 121, - 118, 83, 157, 119, 117, 109, 98, 103, 133, 116, - 134, 104, 124, 123, 125, 0, 0, 0, 148, 164, - 178, 88, 0, 0, 170, 171, 172, 173, 174, 0, - 0, 89, 126, 87, 105, 145, 108, 115, 138, 176, - 130, 143, 92, 163, 146, 0, 0, 0, 0, 0, + 0, 0, 0, 192, 0, 0, 0, 0, 0, 1298, + 545, 0, 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 129, 0, 79, 0, 112, 175, 137, 99, 165, 97, - 0, 610, 0, 0, 0, 111, 0, 113, 0, 0, - 147, 122, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, - 0, 609, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, - 135, 0, 0, 150, 102, 101, 140, 110, 0, 0, - 0, 93, 0, 142, 131, 162, 0, 132, 141, 114, - 154, 136, 161, 194, 169, 152, 168, 80, 151, 160, - 91, 144, 82, 158, 149, 120, 106, 107, 81, 0, - 139, 96, 100, 95, 128, 155, 156, 94, 177, 85, - 167, 84, 86, 166, 127, 153, 159, 121, 118, 83, - 157, 119, 117, 109, 98, 103, 133, 116, 134, 104, - 124, 123, 125, 0, 0, 0, 148, 164, 178, 88, - 0, 0, 170, 171, 172, 173, 174, 0, 0, 89, - 126, 87, 105, 145, 108, 115, 138, 176, 130, 143, - 92, 163, 146, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 129, 0, 0, 0, 590, 0, 0, 0, - 79, 97, 112, 175, 137, 99, 165, 111, 0, 113, - 0, 0, 147, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 191, 0, 592, 0, 0, 0, 0, 0, 0, - 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 411, 401, 0, + 373, 414, 351, 365, 422, 366, 367, 394, 337, 381, + 131, 363, 0, 354, 332, 360, 333, 352, 375, 99, + 378, 350, 403, 384, 413, 113, 420, 115, 389, 0, + 149, 124, 0, 0, 377, 405, 379, 399, 372, 395, + 342, 388, 415, 364, 392, 416, 0, 0, 0, 79, + 0, 837, 838, 0, 0, 0, 0, 0, 92, 0, + 391, 410, 362, 393, 331, 390, 0, 335, 338, 421, + 408, 357, 358, 1003, 0, 0, 0, 0, 0, 0, + 376, 380, 396, 370, 0, 0, 0, 0, 0, 0, + 0, 0, 355, 0, 387, 0, 0, 0, 339, 336, + 779, 0, 374, 0, 0, 0, 341, 0, 356, 397, + 192, 330, 400, 406, 371, 195, 409, 369, 368, 412, + 137, 0, 0, 152, 104, 103, 142, 112, 404, 353, + 361, 95, 359, 144, 133, 164, 386, 134, 143, 116, + 156, 138, 163, 196, 171, 154, 170, 82, 153, 162, + 93, 146, 84, 160, 151, 122, 108, 109, 83, 0, + 141, 98, 102, 97, 130, 157, 158, 96, 179, 87, + 169, 86, 88, 168, 129, 155, 161, 123, 120, 85, + 159, 121, 119, 111, 100, 105, 135, 118, 136, 106, + 126, 125, 127, 0, 334, 0, 150, 166, 180, 90, + 349, 407, 172, 173, 174, 175, 176, 0, 0, 91, + 128, 89, 107, 147, 110, 117, 140, 178, 132, 145, + 94, 165, 148, 345, 348, 343, 344, 382, 383, 417, + 418, 419, 398, 340, 0, 346, 347, 0, 402, 385, + 81, 0, 114, 177, 139, 101, 167, 411, 401, 0, + 373, 414, 351, 365, 422, 366, 367, 394, 337, 381, + 131, 363, 0, 354, 332, 360, 333, 352, 375, 99, + 378, 350, 403, 384, 413, 113, 420, 115, 389, 0, + 149, 124, 0, 0, 377, 405, 379, 399, 372, 395, + 342, 388, 415, 364, 392, 416, 0, 0, 0, 79, + 0, 837, 838, 0, 0, 0, 0, 0, 92, 0, + 391, 410, 362, 393, 331, 390, 0, 335, 338, 421, + 408, 357, 358, 0, 0, 0, 0, 0, 0, 0, + 376, 380, 396, 370, 0, 0, 0, 0, 0, 0, + 0, 0, 355, 0, 387, 0, 0, 0, 339, 336, + 0, 0, 374, 0, 0, 0, 341, 0, 356, 397, + 0, 330, 400, 406, 371, 195, 409, 369, 368, 412, + 137, 0, 0, 152, 104, 103, 142, 112, 404, 353, + 361, 95, 359, 144, 133, 164, 386, 134, 143, 116, + 156, 138, 163, 196, 171, 154, 170, 82, 153, 162, + 93, 146, 84, 160, 151, 122, 108, 109, 83, 0, + 141, 98, 102, 97, 130, 157, 158, 96, 179, 87, + 169, 86, 88, 168, 129, 155, 161, 123, 120, 85, + 159, 121, 119, 111, 100, 105, 135, 118, 136, 106, + 126, 125, 127, 0, 334, 0, 150, 166, 180, 90, + 349, 407, 172, 173, 174, 175, 176, 0, 0, 91, + 128, 89, 107, 147, 110, 117, 140, 178, 132, 145, + 94, 165, 148, 345, 348, 343, 344, 382, 383, 417, + 418, 419, 398, 340, 0, 346, 347, 0, 402, 385, + 81, 0, 114, 177, 139, 101, 167, 411, 401, 0, + 373, 414, 351, 365, 422, 366, 367, 394, 337, 381, + 131, 363, 0, 354, 332, 360, 333, 352, 375, 99, + 378, 350, 403, 384, 413, 113, 420, 115, 389, 0, + 149, 124, 0, 0, 377, 405, 379, 399, 372, 395, + 342, 388, 415, 364, 392, 416, 52, 0, 0, 79, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, + 391, 410, 362, 393, 331, 390, 0, 335, 338, 421, + 408, 357, 358, 0, 0, 0, 0, 0, 0, 0, + 376, 380, 396, 370, 0, 0, 0, 0, 0, 0, + 0, 0, 355, 0, 387, 0, 0, 0, 339, 336, + 0, 0, 374, 0, 0, 0, 341, 0, 356, 397, + 0, 330, 400, 406, 371, 195, 409, 369, 368, 412, + 137, 0, 0, 152, 104, 103, 142, 112, 404, 353, + 361, 95, 359, 144, 133, 164, 386, 134, 143, 116, + 156, 138, 163, 196, 171, 154, 170, 82, 153, 162, + 93, 146, 84, 160, 151, 122, 108, 109, 83, 0, + 141, 98, 102, 97, 130, 157, 158, 96, 179, 87, + 169, 86, 88, 168, 129, 155, 161, 123, 120, 85, + 159, 121, 119, 111, 100, 105, 135, 118, 136, 106, + 126, 125, 127, 0, 334, 0, 150, 166, 180, 90, + 349, 407, 172, 173, 174, 175, 176, 0, 0, 91, + 128, 89, 107, 147, 110, 117, 140, 178, 132, 145, + 94, 165, 148, 345, 348, 343, 344, 382, 383, 417, + 418, 419, 398, 340, 0, 346, 347, 0, 402, 385, + 81, 0, 114, 177, 139, 101, 167, 411, 401, 0, + 373, 414, 351, 365, 422, 366, 367, 394, 337, 381, + 131, 363, 0, 354, 332, 360, 333, 352, 375, 99, + 378, 350, 403, 384, 413, 113, 420, 115, 389, 0, + 149, 124, 0, 0, 377, 405, 379, 399, 372, 395, + 342, 388, 415, 364, 392, 416, 0, 0, 0, 79, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, + 391, 410, 362, 393, 331, 390, 0, 335, 338, 421, + 408, 357, 358, 0, 0, 0, 0, 0, 0, 0, + 376, 380, 396, 370, 0, 0, 0, 0, 0, 0, + 1068, 0, 355, 0, 387, 0, 0, 0, 339, 336, + 0, 0, 374, 0, 0, 0, 341, 0, 356, 397, + 0, 330, 400, 406, 371, 195, 409, 369, 368, 412, + 137, 0, 0, 152, 104, 103, 142, 112, 404, 353, + 361, 95, 359, 144, 133, 164, 386, 134, 143, 116, + 156, 138, 163, 196, 171, 154, 170, 82, 153, 162, + 93, 146, 84, 160, 151, 122, 108, 109, 83, 0, + 141, 98, 102, 97, 130, 157, 158, 96, 179, 87, + 169, 86, 88, 168, 129, 155, 161, 123, 120, 85, + 159, 121, 119, 111, 100, 105, 135, 118, 136, 106, + 126, 125, 127, 0, 334, 0, 150, 166, 180, 90, + 349, 407, 172, 173, 174, 175, 176, 0, 0, 91, + 128, 89, 107, 147, 110, 117, 140, 178, 132, 145, + 94, 165, 148, 345, 348, 343, 344, 382, 383, 417, + 418, 419, 398, 340, 0, 346, 347, 0, 402, 385, + 81, 0, 114, 177, 139, 101, 167, 411, 401, 0, + 373, 414, 351, 365, 422, 366, 367, 394, 337, 381, + 131, 363, 0, 354, 332, 360, 333, 352, 375, 99, + 378, 350, 403, 384, 413, 113, 420, 115, 389, 0, + 149, 124, 0, 0, 377, 405, 379, 399, 372, 395, + 342, 388, 415, 364, 392, 416, 0, 0, 0, 250, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, + 391, 410, 362, 393, 331, 390, 0, 335, 338, 421, + 408, 357, 358, 0, 0, 0, 0, 0, 0, 0, + 376, 380, 396, 370, 0, 0, 0, 0, 0, 0, + 730, 0, 355, 0, 387, 0, 0, 0, 339, 336, + 0, 0, 374, 0, 0, 0, 341, 0, 356, 397, + 0, 330, 400, 406, 371, 195, 409, 369, 368, 412, + 137, 0, 0, 152, 104, 103, 142, 112, 404, 353, + 361, 95, 359, 144, 133, 164, 386, 134, 143, 116, + 156, 138, 163, 196, 171, 154, 170, 82, 153, 162, + 93, 146, 84, 160, 151, 122, 108, 109, 83, 0, + 141, 98, 102, 97, 130, 157, 158, 96, 179, 87, + 169, 86, 88, 168, 129, 155, 161, 123, 120, 85, + 159, 121, 119, 111, 100, 105, 135, 118, 136, 106, + 126, 125, 127, 0, 334, 0, 150, 166, 180, 90, + 349, 407, 172, 173, 174, 175, 176, 0, 0, 91, + 128, 89, 107, 147, 110, 117, 140, 178, 132, 145, + 94, 165, 148, 345, 348, 343, 344, 382, 383, 417, + 418, 419, 398, 340, 0, 346, 347, 0, 402, 385, + 81, 0, 114, 177, 139, 101, 167, 411, 401, 0, + 373, 414, 351, 365, 422, 366, 367, 394, 337, 381, + 131, 363, 0, 354, 332, 360, 333, 352, 375, 99, + 378, 350, 403, 384, 413, 113, 420, 115, 389, 0, + 149, 124, 0, 0, 377, 405, 379, 399, 372, 395, + 342, 388, 415, 364, 392, 416, 0, 0, 0, 79, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, + 391, 410, 362, 393, 331, 390, 0, 335, 338, 421, + 408, 357, 358, 0, 0, 0, 0, 0, 0, 0, + 376, 380, 396, 370, 0, 0, 0, 0, 0, 0, + 0, 0, 355, 0, 387, 0, 0, 0, 339, 336, + 0, 0, 374, 0, 0, 0, 341, 0, 356, 397, + 0, 330, 400, 406, 371, 195, 409, 369, 368, 412, + 137, 0, 0, 152, 104, 103, 142, 112, 404, 353, + 361, 95, 359, 144, 133, 164, 386, 134, 143, 116, + 156, 138, 163, 196, 171, 154, 170, 82, 153, 162, + 93, 146, 84, 160, 151, 122, 108, 109, 83, 0, + 141, 98, 102, 97, 130, 157, 158, 96, 179, 87, + 169, 86, 88, 168, 129, 155, 161, 123, 120, 85, + 159, 121, 119, 111, 100, 105, 135, 118, 136, 106, + 126, 125, 127, 0, 334, 0, 150, 166, 180, 90, + 349, 407, 172, 173, 174, 175, 176, 0, 0, 91, + 128, 89, 107, 147, 110, 117, 140, 178, 132, 145, + 94, 165, 148, 345, 348, 343, 344, 382, 383, 417, + 418, 419, 398, 340, 0, 346, 347, 0, 402, 385, + 81, 0, 114, 177, 139, 101, 167, 411, 401, 0, + 373, 414, 351, 365, 422, 366, 367, 394, 337, 381, + 131, 363, 0, 354, 332, 360, 333, 352, 375, 99, + 378, 350, 403, 384, 413, 113, 420, 115, 389, 0, + 149, 124, 0, 0, 377, 405, 379, 399, 372, 395, + 342, 388, 415, 364, 392, 416, 0, 0, 0, 250, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, + 391, 410, 362, 393, 331, 390, 0, 335, 338, 421, + 408, 357, 358, 0, 0, 0, 0, 0, 0, 0, + 376, 380, 396, 370, 0, 0, 0, 0, 0, 0, + 0, 0, 355, 0, 387, 0, 0, 0, 339, 336, + 0, 0, 374, 0, 0, 0, 341, 0, 356, 397, + 0, 330, 400, 406, 371, 195, 409, 369, 368, 412, + 137, 0, 0, 152, 104, 103, 142, 112, 404, 353, + 361, 95, 359, 144, 133, 164, 386, 134, 143, 116, + 156, 138, 163, 196, 171, 154, 170, 82, 153, 162, + 93, 146, 84, 160, 151, 122, 108, 109, 83, 0, + 141, 98, 102, 97, 130, 157, 158, 96, 179, 87, + 169, 86, 88, 168, 129, 155, 161, 123, 120, 85, + 159, 121, 119, 111, 100, 105, 135, 118, 136, 106, + 126, 125, 127, 0, 334, 0, 150, 166, 180, 90, + 349, 407, 172, 173, 174, 175, 176, 0, 0, 91, + 128, 89, 107, 147, 110, 117, 140, 178, 132, 145, + 94, 165, 148, 345, 348, 343, 344, 382, 383, 417, + 418, 419, 398, 340, 0, 346, 347, 0, 402, 385, + 81, 0, 114, 177, 139, 101, 167, 411, 401, 0, + 373, 414, 351, 365, 422, 366, 367, 394, 337, 381, + 131, 363, 0, 354, 332, 360, 333, 352, 375, 99, + 378, 350, 403, 384, 413, 113, 420, 115, 389, 0, + 149, 124, 0, 0, 377, 405, 379, 399, 372, 395, + 342, 388, 415, 364, 392, 416, 0, 0, 0, 79, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, + 391, 410, 362, 393, 331, 390, 0, 335, 338, 421, + 408, 357, 358, 0, 0, 0, 0, 0, 0, 0, + 376, 380, 396, 370, 0, 0, 0, 0, 0, 0, + 0, 0, 355, 0, 387, 0, 0, 0, 339, 336, + 0, 0, 374, 0, 0, 0, 341, 0, 356, 397, + 0, 330, 400, 406, 371, 195, 409, 369, 368, 412, + 137, 0, 0, 152, 104, 103, 142, 112, 404, 353, + 361, 95, 359, 144, 133, 164, 386, 134, 143, 116, + 156, 138, 163, 196, 171, 154, 170, 82, 153, 162, + 93, 146, 84, 160, 151, 122, 108, 109, 83, 0, + 141, 98, 102, 97, 130, 157, 158, 96, 179, 87, + 169, 86, 328, 168, 129, 155, 161, 123, 120, 85, + 159, 121, 119, 111, 100, 105, 135, 118, 136, 106, + 126, 125, 127, 0, 334, 0, 150, 166, 180, 90, + 349, 407, 172, 173, 174, 175, 176, 0, 0, 91, + 329, 327, 107, 147, 110, 117, 140, 178, 132, 145, + 94, 165, 148, 345, 348, 343, 344, 382, 383, 417, + 418, 419, 398, 340, 0, 346, 347, 0, 402, 385, + 81, 0, 114, 177, 139, 101, 167, 411, 401, 0, + 373, 414, 351, 365, 422, 366, 367, 394, 337, 381, + 131, 363, 0, 354, 332, 360, 333, 352, 375, 99, + 378, 350, 403, 384, 413, 113, 420, 115, 389, 0, + 149, 124, 0, 0, 377, 405, 379, 399, 372, 395, + 342, 388, 415, 364, 392, 416, 0, 0, 0, 193, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, + 391, 410, 362, 393, 331, 390, 0, 335, 338, 421, + 408, 357, 358, 0, 0, 0, 0, 0, 0, 0, + 376, 380, 396, 370, 0, 0, 0, 0, 0, 0, + 0, 0, 355, 0, 387, 0, 0, 0, 339, 336, + 0, 0, 374, 0, 0, 0, 341, 0, 356, 397, + 0, 330, 400, 406, 371, 195, 409, 369, 368, 412, + 137, 0, 0, 152, 104, 103, 142, 112, 404, 353, + 361, 95, 359, 144, 133, 164, 386, 134, 143, 116, + 156, 138, 163, 196, 171, 154, 170, 82, 153, 162, + 93, 146, 84, 160, 151, 122, 108, 109, 83, 0, + 141, 98, 102, 97, 130, 157, 158, 96, 179, 87, + 169, 86, 88, 168, 129, 155, 161, 123, 120, 85, + 159, 121, 119, 111, 100, 105, 135, 118, 136, 106, + 126, 125, 127, 0, 334, 0, 150, 166, 180, 90, + 349, 407, 172, 173, 174, 175, 176, 0, 0, 91, + 128, 89, 107, 147, 110, 117, 140, 178, 132, 145, + 94, 165, 148, 345, 348, 343, 344, 382, 383, 417, + 418, 419, 398, 340, 0, 346, 347, 0, 402, 385, + 81, 0, 114, 177, 139, 101, 167, 411, 401, 0, + 373, 414, 351, 365, 422, 366, 367, 394, 337, 381, + 131, 363, 0, 354, 332, 360, 333, 352, 375, 99, + 378, 350, 403, 384, 413, 113, 420, 115, 389, 0, + 149, 124, 0, 0, 377, 405, 379, 399, 372, 395, + 342, 388, 415, 364, 392, 416, 0, 0, 0, 79, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, + 391, 410, 362, 393, 331, 390, 0, 335, 338, 421, + 408, 357, 358, 0, 0, 0, 0, 0, 0, 0, + 376, 380, 396, 370, 0, 0, 0, 0, 0, 0, + 0, 0, 355, 0, 387, 0, 0, 0, 339, 336, + 0, 0, 374, 0, 0, 0, 341, 0, 356, 397, + 0, 330, 400, 406, 371, 195, 409, 369, 368, 412, + 137, 0, 0, 152, 104, 103, 142, 112, 404, 353, + 361, 95, 359, 144, 133, 164, 386, 134, 143, 116, + 156, 138, 163, 196, 171, 154, 170, 82, 153, 605, + 93, 146, 84, 160, 151, 122, 108, 109, 83, 0, + 141, 98, 102, 97, 130, 157, 158, 96, 179, 87, + 169, 86, 328, 168, 129, 155, 161, 123, 120, 85, + 159, 121, 119, 111, 100, 105, 135, 118, 136, 106, + 126, 125, 127, 0, 334, 0, 150, 166, 180, 90, + 349, 407, 172, 173, 174, 175, 176, 0, 0, 91, + 329, 327, 107, 147, 110, 117, 140, 178, 132, 145, + 94, 165, 148, 345, 348, 343, 344, 382, 383, 417, + 418, 419, 398, 340, 0, 346, 347, 0, 402, 385, + 81, 0, 114, 177, 139, 101, 167, 411, 401, 0, + 373, 414, 351, 365, 422, 366, 367, 394, 337, 381, + 131, 363, 0, 354, 332, 360, 333, 352, 375, 99, + 378, 350, 403, 384, 413, 113, 420, 115, 389, 0, + 149, 124, 0, 0, 377, 405, 379, 399, 372, 395, + 342, 388, 415, 364, 392, 416, 0, 0, 0, 79, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, + 391, 410, 362, 393, 331, 390, 0, 335, 338, 421, + 408, 357, 358, 0, 0, 0, 0, 0, 0, 0, + 376, 380, 396, 370, 0, 0, 0, 0, 0, 0, + 0, 0, 355, 0, 387, 0, 0, 0, 339, 336, + 0, 0, 374, 0, 0, 0, 341, 0, 356, 397, + 0, 330, 400, 406, 371, 195, 409, 369, 368, 412, + 137, 0, 0, 152, 104, 103, 142, 112, 404, 353, + 361, 95, 359, 144, 133, 164, 386, 134, 143, 116, + 156, 138, 163, 196, 171, 154, 170, 82, 153, 319, + 93, 146, 84, 160, 151, 122, 108, 109, 83, 0, + 141, 98, 102, 97, 130, 157, 158, 96, 179, 87, + 169, 86, 328, 168, 129, 155, 161, 123, 120, 85, + 159, 121, 119, 111, 100, 105, 135, 118, 136, 106, + 126, 125, 127, 0, 334, 0, 150, 166, 180, 90, + 349, 407, 172, 173, 174, 175, 176, 0, 0, 91, + 329, 327, 322, 321, 110, 117, 140, 178, 132, 145, + 94, 165, 148, 345, 348, 343, 344, 382, 383, 417, + 418, 419, 398, 340, 0, 346, 347, 0, 402, 385, + 81, 0, 114, 177, 139, 101, 167, 131, 0, 0, + 766, 0, 252, 0, 0, 0, 99, 0, 249, 0, + 0, 0, 113, 292, 115, 0, 0, 149, 124, 0, + 0, 0, 0, 283, 284, 0, 0, 0, 0, 0, + 0, 0, 0, 52, 0, 0, 250, 271, 270, 273, + 274, 275, 276, 0, 0, 92, 272, 277, 278, 279, + 0, 0, 247, 264, 0, 291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 261, 262, 243, 0, 0, + 0, 303, 0, 263, 0, 0, 258, 259, 260, 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, - 0, 0, 135, 0, 0, 150, 102, 101, 140, 110, - 0, 0, 0, 93, 0, 142, 131, 162, 0, 588, - 141, 114, 154, 136, 161, 194, 169, 152, 168, 80, - 151, 160, 91, 144, 82, 158, 149, 120, 106, 107, - 81, 0, 139, 96, 100, 95, 128, 155, 156, 94, - 177, 85, 167, 84, 86, 166, 127, 153, 159, 121, - 118, 83, 157, 119, 117, 109, 98, 103, 133, 116, - 134, 104, 124, 123, 125, 0, 0, 0, 148, 164, - 178, 88, 0, 0, 170, 171, 172, 173, 174, 0, - 0, 89, 126, 87, 105, 145, 108, 115, 138, 176, - 130, 143, 92, 163, 146, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, - 0, 0, 79, 97, 112, 175, 137, 99, 165, 111, - 0, 113, 0, 0, 147, 122, 0, 0, 0, 0, + 0, 0, 195, 0, 0, 301, 0, 137, 0, 0, + 152, 104, 103, 142, 112, 0, 0, 0, 95, 0, + 144, 133, 164, 0, 134, 143, 116, 156, 138, 163, + 196, 171, 154, 170, 82, 153, 162, 93, 146, 84, + 160, 151, 122, 108, 109, 83, 0, 141, 98, 102, + 97, 130, 157, 158, 96, 179, 87, 169, 86, 88, + 168, 129, 155, 161, 123, 120, 85, 159, 121, 119, + 111, 100, 105, 135, 118, 136, 106, 126, 125, 127, + 0, 0, 0, 150, 166, 180, 90, 0, 0, 172, + 173, 174, 175, 176, 0, 0, 91, 128, 89, 107, + 147, 110, 117, 140, 178, 132, 145, 94, 165, 148, + 293, 302, 299, 300, 297, 298, 296, 295, 294, 304, + 285, 286, 287, 288, 290, 0, 289, 81, 0, 114, + 177, 139, 101, 167, 131, 0, 0, 0, 0, 252, + 0, 0, 0, 99, 0, 249, 0, 0, 0, 113, + 292, 115, 0, 0, 149, 124, 0, 0, 0, 0, + 283, 284, 0, 0, 0, 0, 0, 0, 0, 0, + 52, 0, 475, 250, 271, 270, 273, 274, 275, 276, + 0, 0, 92, 272, 277, 278, 279, 0, 0, 247, + 264, 0, 291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 52, 0, 0, 191, 0, 0, 0, 0, 0, 0, - 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 261, 262, 0, 0, 0, 0, 303, 0, + 263, 0, 0, 258, 259, 260, 265, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, + 0, 0, 301, 0, 137, 0, 0, 152, 104, 103, + 142, 112, 0, 0, 0, 95, 0, 144, 133, 164, + 0, 134, 143, 116, 156, 138, 163, 196, 171, 154, + 170, 82, 153, 162, 93, 146, 84, 160, 151, 122, + 108, 109, 83, 0, 141, 98, 102, 97, 130, 157, + 158, 96, 179, 87, 169, 86, 88, 168, 129, 155, + 161, 123, 120, 85, 159, 121, 119, 111, 100, 105, + 135, 118, 136, 106, 126, 125, 127, 0, 0, 0, + 150, 166, 180, 90, 0, 0, 172, 173, 174, 175, + 176, 0, 0, 91, 128, 89, 107, 147, 110, 117, + 140, 178, 132, 145, 94, 165, 148, 293, 302, 299, + 300, 297, 298, 296, 295, 294, 304, 285, 286, 287, + 288, 290, 0, 289, 81, 0, 114, 177, 139, 101, + 167, 131, 0, 0, 0, 0, 252, 0, 0, 0, + 99, 0, 249, 0, 0, 0, 113, 292, 115, 0, + 0, 149, 124, 0, 0, 0, 0, 283, 284, 0, + 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, + 250, 271, 270, 273, 274, 275, 276, 0, 0, 92, + 272, 277, 278, 279, 0, 0, 247, 264, 0, 291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, + 262, 243, 0, 0, 0, 303, 0, 263, 0, 0, + 258, 259, 260, 265, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 195, 0, 0, 301, + 0, 137, 0, 0, 152, 104, 103, 142, 112, 0, + 0, 0, 95, 0, 144, 133, 164, 0, 134, 143, + 116, 156, 138, 163, 196, 171, 154, 170, 82, 153, + 162, 93, 146, 84, 160, 151, 122, 108, 109, 83, + 0, 141, 98, 102, 97, 130, 157, 158, 96, 179, + 87, 169, 86, 88, 168, 129, 155, 161, 123, 120, + 85, 159, 121, 119, 111, 100, 105, 135, 118, 136, + 106, 126, 125, 127, 0, 0, 0, 150, 166, 180, + 90, 0, 0, 172, 173, 174, 175, 176, 0, 0, + 91, 128, 89, 107, 147, 110, 117, 140, 178, 132, + 145, 94, 165, 148, 293, 302, 299, 300, 297, 298, + 296, 295, 294, 304, 285, 286, 287, 288, 290, 0, + 289, 81, 0, 114, 177, 139, 101, 167, 131, 0, + 0, 0, 0, 252, 0, 0, 0, 99, 0, 249, + 0, 0, 0, 113, 292, 115, 0, 0, 149, 124, + 0, 0, 0, 0, 283, 284, 0, 0, 0, 0, + 0, 0, 829, 0, 52, 0, 0, 250, 271, 270, + 273, 274, 275, 276, 0, 0, 92, 272, 277, 278, + 279, 0, 0, 247, 264, 0, 291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 261, 262, 0, 0, + 0, 0, 303, 0, 263, 0, 0, 258, 259, 260, + 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 195, 0, 0, 301, 0, 137, 0, + 0, 152, 104, 103, 142, 112, 0, 0, 0, 95, + 0, 144, 133, 164, 0, 134, 143, 116, 156, 138, + 163, 196, 171, 154, 170, 82, 153, 162, 93, 146, + 84, 160, 151, 122, 108, 109, 83, 0, 141, 98, + 102, 97, 130, 157, 158, 96, 179, 87, 169, 86, + 88, 168, 129, 155, 161, 123, 120, 85, 159, 121, + 119, 111, 100, 105, 135, 118, 136, 106, 126, 125, + 127, 0, 0, 0, 150, 166, 180, 90, 0, 0, + 172, 173, 174, 175, 176, 0, 0, 91, 128, 89, + 107, 147, 110, 117, 140, 178, 132, 145, 94, 165, + 148, 293, 302, 299, 300, 297, 298, 296, 295, 294, + 304, 285, 286, 287, 288, 290, 23, 289, 81, 0, + 114, 177, 139, 101, 167, 0, 0, 0, 131, 0, + 0, 0, 0, 252, 0, 0, 0, 99, 0, 249, + 0, 0, 0, 113, 292, 115, 0, 0, 149, 124, + 0, 0, 0, 0, 283, 284, 0, 0, 0, 0, + 0, 0, 0, 0, 52, 0, 0, 250, 271, 270, + 273, 274, 275, 276, 0, 0, 92, 272, 277, 278, + 279, 0, 0, 247, 264, 0, 291, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 261, 262, 0, 0, + 0, 0, 303, 0, 263, 0, 0, 258, 259, 260, + 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 195, 0, 0, 301, 0, 137, 0, + 0, 152, 104, 103, 142, 112, 0, 0, 0, 95, + 0, 144, 133, 164, 0, 134, 143, 116, 156, 138, + 163, 196, 171, 154, 170, 82, 153, 162, 93, 146, + 84, 160, 151, 122, 108, 109, 83, 0, 141, 98, + 102, 97, 130, 157, 158, 96, 179, 87, 169, 86, + 88, 168, 129, 155, 161, 123, 120, 85, 159, 121, + 119, 111, 100, 105, 135, 118, 136, 106, 126, 125, + 127, 0, 0, 0, 150, 166, 180, 90, 0, 0, + 172, 173, 174, 175, 176, 0, 0, 91, 128, 89, + 107, 147, 110, 117, 140, 178, 132, 145, 94, 165, + 148, 293, 302, 299, 300, 297, 298, 296, 295, 294, + 304, 285, 286, 287, 288, 290, 0, 289, 81, 0, + 114, 177, 139, 101, 167, 131, 0, 0, 0, 0, + 252, 0, 0, 0, 99, 0, 249, 0, 0, 0, + 113, 292, 115, 0, 0, 149, 124, 0, 0, 0, + 0, 283, 284, 0, 0, 0, 0, 0, 0, 0, + 0, 52, 0, 0, 250, 271, 270, 273, 274, 275, + 276, 0, 0, 92, 272, 277, 278, 279, 0, 0, + 247, 264, 0, 291, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 261, 262, 0, 0, 0, 0, 303, + 0, 263, 0, 0, 258, 259, 260, 265, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 195, 0, 0, 301, 0, 137, 0, 0, 152, 104, + 103, 142, 112, 0, 0, 0, 95, 0, 144, 133, + 164, 0, 134, 143, 116, 156, 138, 163, 196, 171, + 154, 170, 82, 153, 162, 93, 146, 84, 160, 151, + 122, 108, 109, 83, 0, 141, 98, 102, 97, 130, + 157, 158, 96, 179, 87, 169, 86, 88, 168, 129, + 155, 161, 123, 120, 85, 159, 121, 119, 111, 100, + 105, 135, 118, 136, 106, 126, 125, 127, 0, 0, + 0, 150, 166, 180, 90, 0, 0, 172, 173, 174, + 175, 176, 0, 0, 91, 128, 89, 107, 147, 110, + 117, 140, 178, 132, 145, 94, 165, 148, 293, 302, + 299, 300, 297, 298, 296, 295, 294, 304, 285, 286, + 287, 288, 290, 131, 289, 81, 0, 114, 177, 139, + 101, 167, 99, 0, 0, 0, 0, 0, 113, 292, + 115, 0, 0, 149, 124, 0, 0, 0, 0, 283, + 284, 0, 0, 0, 0, 0, 0, 0, 0, 52, + 0, 0, 250, 271, 270, 273, 274, 275, 276, 0, + 0, 92, 272, 277, 278, 279, 0, 0, 0, 264, + 0, 291, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 261, 262, 0, 0, 0, 0, 303, 0, 263, + 0, 0, 258, 259, 260, 265, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, + 0, 301, 0, 137, 0, 0, 152, 104, 103, 142, + 112, 0, 0, 0, 95, 0, 144, 133, 164, 1331, + 134, 143, 116, 156, 138, 163, 196, 171, 154, 170, + 82, 153, 162, 93, 146, 84, 160, 151, 122, 108, + 109, 83, 0, 141, 98, 102, 97, 130, 157, 158, + 96, 179, 87, 169, 86, 88, 168, 129, 155, 161, + 123, 120, 85, 159, 121, 119, 111, 100, 105, 135, + 118, 136, 106, 126, 125, 127, 0, 0, 0, 150, + 166, 180, 90, 0, 0, 172, 173, 174, 175, 176, + 0, 0, 91, 128, 89, 107, 147, 110, 117, 140, + 178, 132, 145, 94, 165, 148, 293, 302, 299, 300, + 297, 298, 296, 295, 294, 304, 285, 286, 287, 288, + 290, 131, 289, 81, 0, 114, 177, 139, 101, 167, + 99, 0, 0, 0, 0, 0, 113, 292, 115, 0, + 0, 149, 124, 0, 0, 0, 0, 283, 284, 0, + 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, + 250, 271, 270, 273, 274, 275, 276, 0, 0, 92, + 272, 277, 278, 279, 0, 0, 0, 264, 0, 291, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 261, + 262, 0, 0, 0, 0, 303, 0, 263, 0, 0, + 258, 259, 260, 265, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 195, 0, 0, 301, + 0, 137, 0, 0, 152, 104, 103, 142, 112, 0, + 0, 0, 95, 0, 144, 133, 164, 0, 134, 143, + 116, 156, 138, 163, 196, 171, 154, 170, 82, 153, + 162, 93, 146, 84, 160, 151, 122, 108, 109, 83, + 0, 141, 98, 102, 97, 130, 157, 158, 96, 179, + 87, 169, 86, 88, 168, 129, 155, 161, 123, 120, + 85, 159, 121, 119, 111, 100, 105, 135, 118, 136, + 106, 126, 125, 127, 0, 0, 0, 150, 166, 180, + 90, 0, 0, 172, 173, 174, 175, 176, 0, 0, + 91, 128, 89, 107, 147, 110, 117, 140, 178, 132, + 145, 94, 165, 148, 293, 302, 299, 300, 297, 298, + 296, 295, 294, 304, 285, 286, 287, 288, 290, 131, + 289, 81, 0, 114, 177, 139, 101, 167, 99, 0, + 0, 0, 0, 0, 113, 0, 115, 0, 0, 149, + 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, + 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 509, 508, 518, 519, 511, 512, 513, + 514, 515, 516, 517, 510, 0, 0, 520, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 195, 0, 0, 0, 0, 137, + 0, 0, 152, 104, 103, 142, 112, 0, 0, 0, + 95, 0, 144, 133, 164, 0, 134, 143, 116, 156, + 138, 163, 196, 171, 154, 170, 82, 153, 162, 93, + 146, 84, 160, 151, 122, 108, 109, 83, 0, 141, + 98, 102, 97, 130, 157, 158, 96, 179, 87, 169, + 86, 88, 168, 129, 155, 161, 123, 120, 85, 159, + 121, 119, 111, 100, 105, 135, 118, 136, 106, 126, + 125, 127, 0, 0, 0, 150, 166, 180, 90, 0, + 0, 172, 173, 174, 175, 176, 0, 0, 91, 128, + 89, 107, 147, 110, 117, 140, 178, 132, 145, 94, + 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 131, 0, 0, 0, 497, 0, 0, 0, 81, + 99, 114, 177, 139, 101, 167, 113, 0, 115, 0, + 0, 149, 124, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 0, 499, 0, 0, 0, 0, 0, 0, 92, + 0, 0, 0, 0, 494, 493, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 495, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, + 0, 137, 0, 0, 152, 104, 103, 142, 112, 0, + 0, 0, 95, 0, 144, 133, 164, 0, 134, 143, + 116, 156, 138, 163, 196, 171, 154, 170, 82, 153, + 162, 93, 146, 84, 160, 151, 122, 108, 109, 83, + 0, 141, 98, 102, 97, 130, 157, 158, 96, 179, + 87, 169, 86, 88, 168, 129, 155, 161, 123, 120, + 85, 159, 121, 119, 111, 100, 105, 135, 118, 136, + 106, 126, 125, 127, 0, 0, 0, 150, 166, 180, + 90, 0, 0, 172, 173, 174, 175, 176, 0, 0, + 91, 128, 89, 107, 147, 110, 117, 140, 178, 132, + 145, 94, 165, 148, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, + 0, 81, 99, 114, 177, 139, 101, 167, 113, 0, + 115, 0, 0, 149, 124, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, + 0, 92, 0, 0, 0, 0, 72, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 75, 76, 0, 71, 0, + 0, 0, 77, 137, 0, 0, 152, 104, 103, 142, + 112, 0, 0, 0, 95, 0, 144, 133, 164, 0, + 134, 143, 116, 156, 138, 163, 73, 171, 154, 170, + 82, 153, 162, 93, 146, 84, 160, 151, 122, 108, + 109, 83, 0, 141, 98, 102, 97, 130, 157, 158, + 96, 179, 87, 169, 86, 88, 168, 129, 155, 161, + 123, 120, 85, 159, 121, 119, 111, 100, 105, 135, + 118, 136, 106, 126, 125, 127, 0, 0, 0, 150, + 166, 180, 90, 0, 0, 172, 173, 174, 175, 176, + 0, 0, 91, 128, 89, 107, 147, 110, 117, 140, + 178, 132, 145, 94, 165, 148, 0, 74, 0, 0, + 0, 0, 0, 0, 0, 131, 0, 0, 0, 594, + 0, 0, 0, 81, 99, 114, 177, 139, 101, 167, + 113, 0, 115, 0, 0, 149, 124, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 193, 0, 596, 0, 0, 0, + 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 195, 0, 0, 0, 0, 137, 0, 0, 152, 104, + 103, 142, 112, 0, 0, 0, 95, 0, 144, 133, + 164, 0, 134, 143, 116, 156, 138, 163, 196, 171, + 154, 170, 82, 153, 162, 93, 146, 84, 160, 151, + 122, 108, 109, 83, 0, 141, 98, 102, 97, 130, + 157, 158, 96, 179, 87, 169, 86, 88, 168, 129, + 155, 161, 123, 120, 85, 159, 121, 119, 111, 100, + 105, 135, 118, 136, 106, 126, 125, 127, 0, 0, + 0, 150, 166, 180, 90, 0, 0, 172, 173, 174, + 175, 176, 0, 0, 91, 128, 89, 107, 147, 110, + 117, 140, 178, 132, 145, 94, 165, 148, 0, 0, + 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 131, 0, 81, 0, 114, 177, 139, + 101, 167, 99, 0, 0, 0, 0, 0, 113, 0, + 115, 0, 0, 149, 124, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, + 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, + 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, + 0, 0, 0, 137, 0, 0, 152, 104, 103, 142, + 112, 0, 0, 0, 95, 0, 144, 133, 164, 0, + 134, 143, 116, 156, 138, 163, 196, 171, 154, 170, + 82, 153, 162, 93, 146, 84, 160, 151, 122, 108, + 109, 83, 0, 141, 98, 102, 97, 130, 157, 158, + 96, 179, 87, 169, 86, 88, 168, 129, 155, 161, + 123, 120, 85, 159, 121, 119, 111, 100, 105, 135, + 118, 136, 106, 126, 125, 127, 0, 0, 0, 150, + 166, 180, 90, 0, 0, 172, 173, 174, 175, 176, + 0, 0, 91, 128, 89, 107, 147, 110, 117, 140, + 178, 132, 145, 94, 165, 148, 0, 0, 0, 23, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 131, 0, 81, 0, 114, 177, 139, 101, 167, + 99, 0, 0, 0, 0, 0, 113, 0, 115, 0, + 0, 149, 124, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, + 193, 0, 0, 0, 0, 0, 0, 0, 0, 92, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, + 0, 137, 0, 0, 152, 104, 103, 142, 112, 0, + 0, 0, 95, 0, 144, 133, 164, 0, 134, 143, + 116, 156, 138, 163, 196, 171, 154, 170, 82, 153, + 162, 93, 146, 84, 160, 151, 122, 108, 109, 83, + 0, 141, 98, 102, 97, 130, 157, 158, 96, 179, + 87, 169, 86, 88, 168, 129, 155, 161, 123, 120, + 85, 159, 121, 119, 111, 100, 105, 135, 118, 136, + 106, 126, 125, 127, 0, 0, 0, 150, 166, 180, + 90, 0, 0, 172, 173, 174, 175, 176, 0, 0, + 91, 128, 89, 107, 147, 110, 117, 140, 178, 132, + 145, 94, 165, 148, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, + 0, 81, 99, 114, 177, 139, 101, 167, 113, 0, + 115, 0, 0, 149, 124, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 79, 0, 0, 717, 0, 0, 718, 0, + 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, + 0, 0, 0, 137, 0, 0, 152, 104, 103, 142, + 112, 0, 0, 0, 95, 0, 144, 133, 164, 0, + 134, 143, 116, 156, 138, 163, 196, 171, 154, 170, + 82, 153, 162, 93, 146, 84, 160, 151, 122, 108, + 109, 83, 0, 141, 98, 102, 97, 130, 157, 158, + 96, 179, 87, 169, 86, 88, 168, 129, 155, 161, + 123, 120, 85, 159, 121, 119, 111, 100, 105, 135, + 118, 136, 106, 126, 125, 127, 0, 0, 0, 150, + 166, 180, 90, 0, 0, 172, 173, 174, 175, 176, + 0, 0, 91, 128, 89, 107, 147, 110, 117, 140, + 178, 132, 145, 94, 165, 148, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 131, 0, 81, 0, 114, 177, 139, 101, 167, + 99, 0, 614, 0, 0, 0, 113, 0, 115, 0, + 0, 149, 124, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 79, 0, 613, 0, 0, 0, 0, 0, 0, 92, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 195, 0, 0, 0, + 0, 137, 0, 0, 152, 104, 103, 142, 112, 0, + 0, 0, 95, 0, 144, 133, 164, 0, 134, 143, + 116, 156, 138, 163, 196, 171, 154, 170, 82, 153, + 162, 93, 146, 84, 160, 151, 122, 108, 109, 83, + 0, 141, 98, 102, 97, 130, 157, 158, 96, 179, + 87, 169, 86, 88, 168, 129, 155, 161, 123, 120, + 85, 159, 121, 119, 111, 100, 105, 135, 118, 136, + 106, 126, 125, 127, 0, 0, 0, 150, 166, 180, + 90, 0, 0, 172, 173, 174, 175, 176, 0, 0, + 91, 128, 89, 107, 147, 110, 117, 140, 178, 132, + 145, 94, 165, 148, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 131, 0, 0, 0, 594, 0, 0, + 0, 81, 99, 114, 177, 139, 101, 167, 113, 0, + 115, 0, 0, 149, 124, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 193, 0, 596, 0, 0, 0, 0, 0, + 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, - 0, 0, 0, 0, 135, 0, 0, 150, 102, 101, - 140, 110, 0, 0, 0, 93, 0, 142, 131, 162, - 0, 132, 141, 114, 154, 136, 161, 194, 169, 152, - 168, 80, 151, 160, 91, 144, 82, 158, 149, 120, - 106, 107, 81, 0, 139, 96, 100, 95, 128, 155, - 156, 94, 177, 85, 167, 84, 86, 166, 127, 153, - 159, 121, 118, 83, 157, 119, 117, 109, 98, 103, - 133, 116, 134, 104, 124, 123, 125, 0, 0, 0, - 148, 164, 178, 88, 0, 0, 170, 171, 172, 173, - 174, 0, 0, 89, 126, 87, 105, 145, 108, 115, - 138, 176, 130, 143, 92, 163, 146, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, - 0, 0, 0, 0, 79, 97, 112, 175, 137, 99, - 165, 111, 0, 113, 0, 0, 147, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 191, 0, 592, 0, 0, - 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, + 0, 0, 0, 137, 0, 0, 152, 104, 103, 142, + 112, 0, 0, 0, 95, 0, 144, 133, 164, 0, + 592, 143, 116, 156, 138, 163, 196, 171, 154, 170, + 82, 153, 162, 93, 146, 84, 160, 151, 122, 108, + 109, 83, 0, 141, 98, 102, 97, 130, 157, 158, + 96, 179, 87, 169, 86, 88, 168, 129, 155, 161, + 123, 120, 85, 159, 121, 119, 111, 100, 105, 135, + 118, 136, 106, 126, 125, 127, 0, 0, 0, 150, + 166, 180, 90, 0, 0, 172, 173, 174, 175, 176, + 0, 0, 91, 128, 89, 107, 147, 110, 117, 140, + 178, 132, 145, 94, 165, 148, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131, 0, 0, 0, 0, + 0, 0, 0, 81, 99, 114, 177, 139, 101, 167, + 113, 0, 115, 0, 0, 149, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 52, 0, 0, 193, 0, 0, 0, 0, 0, + 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 193, 0, 0, 0, 0, 135, 0, 0, 150, - 102, 101, 140, 110, 0, 0, 0, 93, 0, 142, - 131, 162, 0, 132, 141, 114, 154, 136, 161, 194, - 169, 152, 168, 80, 151, 160, 91, 144, 82, 158, - 149, 120, 106, 107, 81, 0, 139, 96, 100, 95, - 128, 155, 156, 94, 177, 85, 167, 84, 86, 166, - 127, 153, 159, 121, 118, 83, 157, 119, 117, 109, - 98, 103, 133, 116, 134, 104, 124, 123, 125, 0, - 0, 0, 148, 164, 178, 88, 0, 0, 170, 171, - 172, 173, 174, 0, 0, 89, 126, 87, 105, 145, - 108, 115, 138, 176, 130, 143, 92, 163, 146, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, - 0, 0, 0, 0, 0, 0, 79, 97, 112, 175, - 137, 99, 165, 111, 0, 113, 0, 0, 147, 122, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 77, 0, 495, - 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 193, 0, 0, 0, 0, 135, 0, - 0, 150, 102, 101, 140, 110, 0, 0, 0, 93, - 0, 142, 131, 162, 0, 132, 141, 114, 154, 136, - 161, 194, 169, 152, 168, 80, 151, 160, 91, 144, - 82, 158, 149, 120, 106, 107, 81, 0, 139, 96, - 100, 95, 128, 155, 156, 94, 177, 85, 167, 84, - 86, 166, 127, 153, 159, 121, 118, 83, 157, 119, - 117, 109, 98, 103, 133, 116, 134, 104, 124, 123, - 125, 0, 0, 0, 148, 164, 178, 88, 0, 0, - 170, 171, 172, 173, 174, 0, 0, 89, 126, 87, - 105, 145, 108, 115, 138, 176, 130, 143, 92, 163, - 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 129, 79, 0, - 112, 175, 137, 99, 165, 568, 97, 0, 0, 0, - 0, 0, 111, 0, 113, 0, 0, 147, 122, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, - 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 193, 0, 0, 0, 0, 135, 0, 0, - 150, 102, 101, 140, 110, 0, 0, 0, 93, 0, - 142, 131, 162, 0, 132, 141, 114, 154, 136, 161, - 194, 169, 152, 168, 80, 151, 160, 91, 144, 82, - 158, 149, 120, 106, 107, 81, 0, 139, 96, 100, - 95, 128, 155, 156, 94, 177, 85, 167, 84, 86, - 166, 127, 153, 159, 121, 118, 83, 157, 119, 117, - 109, 98, 103, 133, 116, 134, 104, 124, 123, 125, - 0, 0, 0, 148, 164, 178, 88, 0, 0, 170, - 171, 172, 173, 174, 0, 0, 89, 126, 87, 105, - 145, 108, 115, 138, 176, 130, 143, 92, 163, 146, - 0, 0, 312, 0, 0, 0, 0, 0, 0, 129, - 0, 0, 0, 0, 0, 0, 0, 79, 97, 112, - 175, 137, 99, 165, 111, 0, 113, 0, 0, 147, - 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 191, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 195, 0, 0, 0, 0, 137, 0, 0, 152, 104, + 103, 142, 112, 0, 0, 0, 95, 0, 144, 133, + 164, 0, 134, 143, 116, 156, 138, 163, 196, 171, + 154, 170, 82, 153, 162, 93, 146, 84, 160, 151, + 122, 108, 109, 83, 0, 141, 98, 102, 97, 130, + 157, 158, 96, 179, 87, 169, 86, 88, 168, 129, + 155, 161, 123, 120, 85, 159, 121, 119, 111, 100, + 105, 135, 118, 136, 106, 126, 125, 127, 0, 0, + 0, 150, 166, 180, 90, 0, 0, 172, 173, 174, + 175, 176, 0, 0, 91, 128, 89, 107, 147, 110, + 117, 140, 178, 132, 145, 94, 165, 148, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 131, 0, 0, + 0, 0, 0, 0, 0, 81, 99, 114, 177, 139, + 101, 167, 113, 0, 115, 0, 0, 149, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 193, 0, 596, 0, + 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 193, 0, 0, 0, 0, 135, - 0, 0, 150, 102, 101, 140, 110, 0, 0, 0, - 93, 0, 142, 131, 162, 0, 132, 141, 114, 154, - 136, 161, 194, 169, 152, 168, 80, 151, 160, 91, - 144, 82, 158, 149, 120, 106, 107, 81, 0, 139, - 96, 100, 95, 128, 155, 156, 94, 177, 85, 167, - 84, 86, 166, 127, 153, 159, 121, 118, 83, 157, - 119, 117, 109, 98, 103, 133, 116, 134, 104, 124, - 123, 125, 0, 0, 0, 148, 164, 178, 88, 0, - 0, 170, 171, 172, 173, 174, 0, 0, 89, 126, - 87, 105, 145, 108, 115, 138, 176, 130, 143, 92, - 163, 146, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 129, 0, 0, 0, 0, 0, 0, 0, 79, - 97, 112, 175, 137, 99, 165, 111, 0, 113, 0, - 0, 147, 122, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 191, 0, 0, 0, 0, 0, 0, 0, 0, 90, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 195, 0, 0, 0, 0, 137, 0, 0, + 152, 104, 103, 142, 112, 0, 0, 0, 95, 0, + 144, 133, 164, 0, 134, 143, 116, 156, 138, 163, + 196, 171, 154, 170, 82, 153, 162, 93, 146, 84, + 160, 151, 122, 108, 109, 83, 0, 141, 98, 102, + 97, 130, 157, 158, 96, 179, 87, 169, 86, 88, + 168, 129, 155, 161, 123, 120, 85, 159, 121, 119, + 111, 100, 105, 135, 118, 136, 106, 126, 125, 127, + 0, 0, 0, 150, 166, 180, 90, 0, 0, 172, + 173, 174, 175, 176, 0, 0, 91, 128, 89, 107, + 147, 110, 117, 140, 178, 132, 145, 94, 165, 148, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, + 0, 0, 0, 0, 0, 0, 0, 81, 99, 114, + 177, 139, 101, 167, 113, 0, 115, 0, 0, 149, + 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, + 499, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 188, 0, 193, 0, 0, 0, - 0, 135, 0, 0, 150, 102, 101, 140, 110, 0, - 0, 0, 93, 0, 142, 131, 162, 0, 132, 141, - 114, 154, 136, 161, 194, 169, 152, 168, 80, 151, - 160, 91, 144, 82, 158, 149, 120, 106, 107, 81, - 0, 139, 96, 100, 95, 128, 155, 156, 94, 177, - 85, 167, 84, 86, 166, 127, 153, 159, 121, 118, - 83, 157, 119, 117, 109, 98, 103, 133, 116, 134, - 104, 124, 123, 125, 0, 0, 0, 148, 164, 178, - 88, 0, 0, 170, 171, 172, 173, 174, 0, 0, - 89, 126, 87, 105, 145, 108, 115, 138, 176, 130, - 143, 92, 163, 146, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 129, 0, 0, 0, 0, 0, 0, - 0, 79, 97, 112, 175, 137, 99, 165, 111, 0, - 113, 0, 0, 147, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 195, 0, 0, 0, 0, 137, + 0, 0, 152, 104, 103, 142, 112, 0, 0, 0, + 95, 0, 144, 133, 164, 0, 134, 143, 116, 156, + 138, 163, 196, 171, 154, 170, 82, 153, 162, 93, + 146, 84, 160, 151, 122, 108, 109, 83, 0, 141, + 98, 102, 97, 130, 157, 158, 96, 179, 87, 169, + 86, 88, 168, 129, 155, 161, 123, 120, 85, 159, + 121, 119, 111, 100, 105, 135, 118, 136, 106, 126, + 125, 127, 0, 0, 0, 150, 166, 180, 90, 0, + 0, 172, 173, 174, 175, 176, 0, 0, 91, 128, + 89, 107, 147, 110, 117, 140, 178, 132, 145, 94, + 165, 148, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 131, 81, + 0, 114, 177, 139, 101, 167, 572, 99, 0, 0, + 0, 0, 0, 113, 0, 115, 0, 0, 149, 124, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, + 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 195, 0, 0, 0, 0, 137, 0, + 0, 152, 104, 103, 142, 112, 0, 0, 0, 95, + 0, 144, 133, 164, 0, 134, 143, 116, 156, 138, + 163, 196, 171, 154, 170, 82, 153, 162, 93, 146, + 84, 160, 151, 122, 108, 109, 83, 0, 141, 98, + 102, 97, 130, 157, 158, 96, 179, 87, 169, 86, + 88, 168, 129, 155, 161, 123, 120, 85, 159, 121, + 119, 111, 100, 105, 135, 118, 136, 106, 126, 125, + 127, 0, 0, 0, 150, 166, 180, 90, 0, 0, + 172, 173, 174, 175, 176, 0, 0, 91, 128, 89, + 107, 147, 110, 117, 140, 178, 132, 145, 94, 165, + 148, 0, 0, 314, 0, 0, 0, 0, 0, 0, + 131, 0, 0, 0, 0, 0, 0, 0, 81, 99, + 114, 177, 139, 101, 167, 113, 0, 115, 0, 0, + 149, 124, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, + 137, 0, 0, 152, 104, 103, 142, 112, 0, 0, + 0, 95, 0, 144, 133, 164, 0, 134, 143, 116, + 156, 138, 163, 196, 171, 154, 170, 82, 153, 162, + 93, 146, 84, 160, 151, 122, 108, 109, 83, 0, + 141, 98, 102, 97, 130, 157, 158, 96, 179, 87, + 169, 86, 88, 168, 129, 155, 161, 123, 120, 85, + 159, 121, 119, 111, 100, 105, 135, 118, 136, 106, + 126, 125, 127, 0, 0, 0, 150, 166, 180, 90, + 0, 0, 172, 173, 174, 175, 176, 0, 0, 91, + 128, 89, 107, 147, 110, 117, 140, 178, 132, 145, + 94, 165, 148, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, + 81, 99, 114, 177, 139, 101, 167, 113, 0, 115, + 0, 0, 149, 124, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 193, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, - 0, 0, 0, 135, 0, 0, 150, 102, 101, 140, - 110, 0, 0, 0, 93, 0, 142, 131, 162, 0, - 132, 141, 114, 154, 136, 161, 194, 169, 152, 168, - 80, 151, 160, 91, 144, 82, 158, 149, 120, 106, - 107, 81, 0, 139, 96, 100, 95, 128, 155, 156, - 94, 177, 85, 167, 84, 86, 166, 127, 153, 159, - 121, 118, 83, 157, 119, 117, 109, 98, 103, 133, - 116, 134, 104, 124, 123, 125, 0, 0, 0, 148, - 164, 178, 88, 0, 0, 170, 171, 172, 173, 174, - 0, 0, 89, 126, 87, 105, 145, 108, 115, 138, - 176, 130, 143, 92, 163, 146, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, - 0, 0, 0, 79, 97, 112, 175, 137, 99, 165, - 111, 0, 113, 0, 0, 147, 122, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 190, 0, 195, 0, 0, + 0, 0, 137, 0, 0, 152, 104, 103, 142, 112, + 0, 0, 0, 95, 0, 144, 133, 164, 0, 134, + 143, 116, 156, 138, 163, 196, 171, 154, 170, 82, + 153, 162, 93, 146, 84, 160, 151, 122, 108, 109, + 83, 0, 141, 98, 102, 97, 130, 157, 158, 96, + 179, 87, 169, 86, 88, 168, 129, 155, 161, 123, + 120, 85, 159, 121, 119, 111, 100, 105, 135, 118, + 136, 106, 126, 125, 127, 0, 0, 0, 150, 166, + 180, 90, 0, 0, 172, 173, 174, 175, 176, 0, + 0, 91, 128, 89, 107, 147, 110, 117, 140, 178, + 132, 145, 94, 165, 148, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 131, 0, 0, 0, 0, 0, + 0, 0, 81, 99, 114, 177, 139, 101, 167, 113, + 0, 115, 0, 0, 149, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, + 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 193, 0, 0, 0, 0, 135, 0, 0, 150, 102, - 101, 140, 110, 0, 0, 0, 93, 0, 142, 131, - 162, 0, 132, 141, 114, 154, 136, 161, 194, 169, - 152, 168, 80, 151, 160, 91, 144, 82, 158, 149, - 120, 106, 107, 81, 0, 139, 96, 100, 95, 128, - 155, 156, 94, 177, 85, 167, 84, 86, 166, 127, - 153, 159, 121, 118, 83, 157, 119, 117, 109, 98, - 103, 133, 116, 134, 104, 124, 123, 125, 0, 0, - 0, 148, 164, 178, 88, 0, 0, 170, 171, 172, - 173, 174, 0, 0, 89, 126, 87, 105, 145, 108, - 115, 138, 176, 130, 143, 92, 163, 146, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, - 0, 0, 0, 0, 0, 79, 97, 112, 175, 137, - 99, 165, 111, 0, 113, 0, 0, 147, 122, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, - 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, + 0, 0, 0, 0, 137, 0, 0, 152, 104, 103, + 142, 112, 0, 0, 0, 95, 0, 144, 133, 164, + 0, 134, 143, 116, 156, 138, 163, 196, 171, 154, + 170, 82, 153, 162, 93, 146, 84, 160, 151, 122, + 108, 109, 83, 0, 141, 98, 102, 97, 130, 157, + 158, 96, 179, 87, 169, 86, 88, 168, 129, 155, + 161, 123, 120, 85, 159, 121, 119, 111, 100, 105, + 135, 118, 136, 106, 126, 125, 127, 0, 0, 0, + 150, 166, 180, 90, 0, 0, 172, 173, 174, 175, + 176, 0, 0, 91, 128, 89, 107, 147, 110, 117, + 140, 178, 132, 145, 94, 165, 148, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, + 0, 0, 0, 0, 81, 99, 114, 177, 139, 101, + 167, 113, 0, 115, 0, 0, 149, 124, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, + 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 195, 0, 0, 0, 0, 137, 0, 0, 152, + 104, 103, 142, 112, 0, 0, 0, 95, 0, 144, + 133, 164, 0, 134, 143, 116, 156, 138, 163, 196, + 171, 154, 170, 82, 153, 162, 93, 146, 84, 160, + 151, 122, 108, 109, 83, 0, 141, 98, 102, 97, + 130, 157, 158, 96, 179, 87, 169, 86, 88, 168, + 129, 155, 161, 123, 120, 85, 159, 121, 119, 111, + 100, 105, 135, 118, 136, 106, 126, 125, 127, 0, + 0, 0, 150, 166, 180, 90, 0, 0, 172, 173, + 174, 175, 176, 0, 0, 91, 128, 89, 107, 147, + 110, 117, 140, 178, 132, 145, 94, 165, 148, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 131, 0, + 0, 0, 0, 0, 0, 0, 81, 99, 114, 177, + 139, 101, 167, 113, 0, 115, 0, 0, 149, 124, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 250, 0, 0, + 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 193, 0, 0, 0, 0, 135, 0, 0, - 150, 102, 101, 140, 110, 0, 0, 0, 93, 0, - 142, 131, 162, 0, 132, 141, 114, 154, 136, 161, - 194, 169, 152, 168, 80, 151, 160, 91, 144, 82, - 158, 149, 120, 106, 107, 81, 0, 139, 96, 100, - 95, 128, 155, 156, 94, 177, 85, 167, 84, 86, - 166, 127, 153, 159, 121, 118, 83, 157, 119, 117, - 109, 98, 103, 133, 116, 134, 104, 124, 123, 125, - 0, 0, 0, 148, 164, 178, 88, 0, 0, 170, - 171, 172, 173, 174, 0, 0, 89, 126, 87, 105, - 145, 108, 115, 138, 176, 130, 143, 92, 163, 146, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 79, 0, 112, - 175, 137, 99, 165, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 195, 0, 0, 0, 0, 137, 0, + 0, 152, 104, 103, 142, 112, 0, 0, 0, 95, + 0, 144, 133, 164, 0, 134, 143, 116, 156, 138, + 163, 196, 171, 154, 170, 82, 153, 162, 93, 146, + 84, 160, 151, 122, 108, 109, 83, 0, 141, 98, + 102, 97, 130, 157, 158, 96, 179, 87, 169, 86, + 88, 168, 129, 155, 161, 123, 120, 85, 159, 121, + 119, 111, 100, 105, 135, 118, 136, 106, 126, 125, + 127, 0, 0, 0, 150, 166, 180, 90, 0, 0, + 172, 173, 174, 175, 176, 0, 0, 91, 128, 89, + 107, 147, 110, 117, 140, 178, 132, 145, 94, 165, + 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, + 114, 177, 139, 101, 167, } var yyPact = [...]int{ - 1788, -1000, -182, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 125, -1000, -180, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 849, 876, -1000, -1000, -1000, -1000, -1000, -1000, 278, + 7715, 59, 89, -19, 10404, 85, 1397, 10848, -1000, -9, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -81, -83, 637, + -1000, -1000, -1000, -1000, -1000, 843, 847, 650, 823, 748, + -1000, 5873, 52, 9287, 10182, 5162, -1000, -1000, 266, 10848, + 78, 10848, -151, 10626, 48, 48, 48, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 809, 840, -1000, -1000, -1000, -1000, -1000, -1000, 652, - 7414, 54, 104, -5, 10103, 102, 1364, 10547, -1000, -10, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -97, -102, 635, - -1000, -1000, -1000, -1000, -1000, 808, 812, 656, 791, 706, - -1000, 5572, 60, 8986, 9881, 4861, -1000, 514, 97, 10547, - -144, 10325, 50, 50, 50, -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, @@ -1784,23 +1816,21 @@ 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, -1000, 99, - 10547, -1000, 10547, 47, 511, 47, 47, 47, 10547, -1000, - 146, -1000, -1000, -1000, -1000, 10547, 510, 753, 57, 2861, - 2861, 2861, 2861, 0, 2861, -72, 664, 826, -1000, -1000, - -1000, -1000, -1000, 2861, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 521, 760, 6286, 6286, - 809, -1000, 635, -1000, -1000, -1000, 729, -1000, -1000, 265, - 830, -1000, 7192, 130, -1000, 6286, 1618, 591, -1000, -1000, - 591, -1000, -1000, 119, -1000, -1000, 6742, 6742, 6742, 6742, - 6742, 6742, 6742, 6742, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 591, -1000, - 6049, 591, 591, 591, 591, 591, 591, 591, 591, 6286, - 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, - 591, 591, 591, 9659, 642, 761, -1000, -1000, -1000, 779, - 8092, 8764, 10547, 582, -1000, 560, 4611, -103, -1000, -1000, - -1000, 209, 8542, -1000, -1000, -1000, 751, -1000, -1000, -1000, + -1000, 60, 10848, -1000, 10848, 44, 542, 44, 44, 44, + 10848, -1000, 120, -1000, -1000, -1000, -1000, 10848, 533, 782, + 40, 3162, 3162, 3162, 3162, -2, 3162, -73, 703, 858, + -1000, -1000, -1000, -1000, -1000, 3162, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 441, 791, + 6587, 6587, 849, -1000, 637, -1000, -1000, -1000, 769, -1000, + -1000, 253, 861, -1000, 7493, 119, -1000, 6587, 1382, 645, + -1000, -1000, 645, -1000, -1000, 99, -1000, -1000, 7043, 7043, + 7043, 7043, 7043, 7043, 7043, 7043, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 645, -1000, 6350, 645, 645, 645, 645, 645, 645, 645, + 645, 6587, 645, 645, 645, 645, 645, 645, 645, 645, + 645, 645, 645, 645, 645, 9960, 590, 644, -1000, -1000, + -1000, 820, 8393, 9065, 10848, 576, -1000, 629, 4912, -97, + -1000, -1000, -1000, 184, 8843, -1000, -1000, -1000, 779, -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, @@ -1809,183 +1839,185 @@ 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, 509, -1000, 1869, 505, 2861, 75, 633, 503, 237, - 502, 10547, 10547, 2861, 70, 10547, 777, 663, 10547, 497, - 496, -1000, 4361, -1000, 2861, 2861, 2861, 2861, 2861, 2861, - 2861, 2861, -1000, -1000, -1000, -1000, -1000, -1000, 2861, 2861, - -1000, 829, 252, -1000, -1000, 10547, 6286, -1000, -1000, -1000, - -1000, -1000, -1000, 835, 181, 407, 129, 581, -1000, 244, - 808, 521, 706, 8314, 679, -1000, -1000, 10547, -1000, 6286, - 6286, 271, -1000, 9430, -1000, -1000, 3361, 190, 6742, 352, - 208, 6742, 6742, 6742, 6742, 6742, 6742, 6742, 6742, 6742, - 6742, 6742, 6742, 6742, 6742, 6742, 350, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 474, -1000, 635, 561, 561, - 156, 156, 156, 156, 156, 156, 156, 6970, 5098, 521, - 493, 339, 6049, 5572, 5572, 6286, 6286, 10769, 10769, 5572, - 793, 219, 339, 10769, -1000, 521, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 5572, 5572, 5572, 5572, 11, 10547, -1000, - 10769, 8986, 8986, 8986, 8986, 8986, -1000, 690, 689, -1000, - 677, 676, 683, 10547, -1000, 481, 8092, 141, 591, -1000, - 9208, -1000, -1000, 11, 613, 8986, 10547, -1000, -1000, 4111, - 560, -103, 553, -1000, -121, -116, 5809, 155, -1000, -1000, - -1000, -1000, 2611, 291, 347, -82, -1000, -1000, -1000, 624, - -1000, 624, 624, 624, 624, -49, -49, -49, -49, -1000, - -1000, -1000, -1000, -1000, 650, 644, -1000, 624, 624, 624, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 634, 634, 634, 626, - 626, 649, -1000, 10547, -166, 473, 2861, 765, 2861, -1000, - 93, -1000, 10547, -1000, -1000, 10547, 2861, -1000, -1000, -1000, + -1000, -1000, -1000, 541, 10848, -1000, 1934, -1000, 528, 3162, + 55, 670, 527, 205, 518, 10848, 10848, 3162, 49, 10848, + 818, 701, 10848, 515, 510, -1000, 4662, -1000, 3162, 3162, + 3162, 3162, 3162, 3162, 3162, 3162, -1000, -1000, -1000, -1000, + -1000, -1000, 3162, 3162, -1000, 860, 225, -1000, -1000, 10848, + 6587, -1000, -1000, -1000, -1000, -1000, -1000, 871, 146, 483, + 117, 647, -1000, 265, 843, 441, 748, 8615, 676, -1000, + -1000, 10848, -1000, 6587, 6587, 358, -1000, 9731, -1000, -1000, + 3662, 160, 7043, 369, 289, 7043, 7043, 7043, 7043, 7043, + 7043, 7043, 7043, 7043, 7043, 7043, 7043, 7043, 7043, 7043, + 382, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 506, + -1000, 637, 706, 706, 128, 128, 128, 128, 128, 128, + 128, 7271, 5399, 441, 526, 183, 6350, 5873, 5873, 6587, + 6587, 11070, 11070, 5873, 827, 197, 183, 11070, -1000, 441, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 5873, 5873, 5873, + 5873, 20, 10848, -1000, 11070, 9287, 9287, 9287, 9287, 9287, + -1000, 739, 738, -1000, 736, 729, 717, 10848, -1000, 514, + 8393, 121, 645, -1000, 9509, -1000, -1000, 20, 577, 9287, + 10848, -1000, -1000, 4412, 629, -97, 622, -1000, -113, -111, + 6110, 127, -1000, -1000, -1000, -1000, 2912, 263, 556, 329, + -67, -1000, -1000, -1000, 652, -1000, 652, 652, 652, 652, + -38, -38, -38, -38, -1000, -1000, -1000, -1000, -1000, 668, + 667, -1000, 652, 652, 652, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 10547, 294, 10547, 10547, -1000, 339, -1000, 710, - 6286, 6286, 3861, 6286, -1000, -1000, -1000, 760, -1000, 793, - 807, -1000, 730, 720, 5572, -1000, -1000, 190, 249, -1000, - -1000, 281, -1000, -1000, -1000, -1000, 124, 591, -1000, 1505, - -1000, -1000, -1000, -1000, 352, 6742, 6742, 6742, 152, 1505, - 1866, 1705, 1755, 156, 355, 355, 161, 161, 161, 161, - 161, 1733, 1733, -1000, -1000, -1000, 521, -1000, -1000, -1000, - 521, 5572, 554, -1000, -1000, 6286, -1000, 521, 460, 460, - 326, 324, 616, -1000, 123, 605, 460, 5572, 254, -1000, - 6286, 521, -1000, 460, 521, 460, 460, 552, 591, -1000, - 632, -1000, 205, 761, 648, 661, 498, -1000, -1000, -1000, - -1000, 684, -1000, 678, -1000, -1000, -1000, -1000, -1000, 94, - 91, 89, 10325, -1000, 821, 8986, 571, -1000, -1000, 553, - -103, -127, -1000, -1000, -1000, 339, -1000, 378, 549, 2361, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 631, 471, -1000, - 770, 165, 171, 461, 764, -1000, -1000, 755, -1000, 235, - -93, -1000, -1000, 370, -49, -49, -1000, -1000, 155, 714, - 155, 155, 155, 404, 404, -1000, -1000, -1000, -1000, 369, - -1000, -1000, -1000, 368, -1000, 660, 10325, 2861, -1000, 3611, - -1000, -1000, -1000, -1000, -1000, -1000, 1172, 272, 214, -1000, + -1000, 666, 666, 666, 653, 653, 671, -1000, 10848, -168, + 505, 3162, 815, 3162, -1000, 80, -1000, 10848, -1000, -1000, + 10848, 3162, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 10848, 235, 10848, + 10848, -1000, 183, -1000, 760, 6587, 6587, 4162, 6587, -1000, + -1000, -1000, 791, -1000, 827, 848, -1000, 773, 772, 5873, + -1000, -1000, 160, 304, -1000, -1000, 391, -1000, -1000, -1000, + -1000, 116, 645, -1000, 1619, -1000, -1000, -1000, -1000, 369, + 7043, 7043, 7043, 318, 1619, 1738, 1528, 1399, 128, 446, + 446, 129, 129, 129, 129, 129, 426, 426, -1000, -1000, + -1000, 441, -1000, -1000, -1000, 441, 5873, 625, -1000, -1000, + 6587, -1000, 441, 501, 501, 334, 311, 628, -1000, 110, + 613, 501, 5873, 324, -1000, 6587, 441, -1000, 501, 441, + 501, 501, 568, 645, -1000, 611, -1000, 178, 644, 665, + 700, 751, -1000, -1000, -1000, -1000, 737, -1000, 728, -1000, + -1000, -1000, -1000, -1000, 71, 70, 66, 10626, -1000, 856, + 9287, 604, -1000, -1000, 622, -97, -119, -1000, -1000, -1000, + 183, -1000, 389, 620, 2662, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 662, 496, -1000, 806, 181, 187, 494, 805, + -1000, -1000, -1000, 784, -1000, 234, -76, -1000, -1000, 372, + -38, -38, -1000, -1000, 127, 778, 127, 127, 127, 403, + 403, -1000, -1000, -1000, -1000, 335, -1000, -1000, -1000, 317, + -1000, 699, 10626, 3162, -1000, 3912, -1000, -1000, -1000, -1000, + -1000, -1000, 230, 166, 186, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 17, -1000, 3162, -1000, + 225, -1000, 398, 6587, -1000, -1000, 752, 183, 183, 108, + -1000, -1000, 10848, -1000, -1000, -1000, -1000, 597, -1000, -1000, + -1000, 3412, 5873, -1000, 318, 1619, 1638, -1000, 7043, 7043, + -1000, -1000, 501, 5873, 183, -1000, -1000, -1000, 47, 382, + 47, 7043, 7043, 4162, 7043, 7043, -161, 595, 189, -1000, + 6587, 415, -1000, -1000, -1000, -1000, -1000, 684, 11070, 645, + -1000, 8165, 10626, 849, 11070, 6587, 6587, -1000, -1000, 6587, + 661, -1000, 6587, -1000, -1000, -1000, 645, 645, 645, 456, + -1000, 849, 604, -1000, -1000, -1000, -131, -116, -1000, -1000, + -1000, 2912, -1000, 2912, 10626, 36, -1000, 476, 464, -1000, + -1000, 658, 674, 39, -1000, -1000, -1000, 547, 127, 127, + -1000, 200, -1000, -1000, -1000, 484, -1000, 480, 618, 462, + 10848, -1000, -1000, 616, -1000, 175, -1000, -1000, 10626, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 10, -1000, 2861, -1000, 252, -1000, 385, 6286, -1000, -1000, - 703, 339, 339, 122, -1000, -1000, 10547, -1000, -1000, -1000, - -1000, 587, -1000, -1000, -1000, 3111, 5572, -1000, 152, 1505, - 1523, -1000, 6742, 6742, -1000, -1000, 460, 5572, 339, -1000, - -1000, -1000, 13, 350, 13, 6742, 6742, 3861, 6742, 6742, - -160, 575, 211, -1000, 6286, 230, -1000, -1000, -1000, -1000, - -1000, 659, 10769, 591, -1000, 7864, 10325, 809, 10769, 6286, - 6286, -1000, -1000, 6286, 628, -1000, 6286, -1000, -1000, -1000, - 591, 591, 591, 441, -1000, 809, 571, -1000, -1000, -1000, - -125, -124, -1000, -1000, -1000, 2611, -1000, 2611, 10325, 25, - -1000, 457, 442, -1000, -1000, 627, 655, 74, -1000, -1000, - -1000, 525, 155, 155, -1000, 158, -1000, -1000, -1000, 456, - -1000, 454, 548, 450, 10547, -1000, -1000, 544, -1000, 203, - -1000, -1000, 10325, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 10325, 10547, -1000, -1000, -1000, - -1000, -1000, 10325, -1000, 294, -1000, 339, -1000, 3611, -1000, - 821, 8986, -1000, -1000, 521, -1000, 6742, 1505, 1505, -1000, - -1000, 521, 624, 624, -1000, 624, 626, -1000, 624, -19, - 624, -26, 521, 521, 1426, 1453, -1000, 1258, 1085, 591, - -151, -1000, 339, 6286, -1000, 772, 540, 530, -1000, -1000, - 5335, 521, 446, 118, 441, 808, -1000, 339, 339, 339, - 10325, 339, 10325, 10325, 10325, 7636, 10325, 808, -1000, -1000, - -1000, -1000, 2361, -1000, 437, -1000, 624, -1000, -1000, -1000, - 10325, -77, 834, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -49, 383, -49, 322, -1000, 304, - 2861, 3611, 2611, -1000, 621, -1000, -1000, -1000, -1000, 763, - -1000, 818, 539, -1000, 1505, -1000, -1000, 79, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 6742, 6742, -1000, - 6742, 6742, 6742, 521, 381, 339, 762, -1000, 591, -1000, - -1000, 599, 10325, 10325, -1000, -1000, 435, -1000, 431, 431, - 431, 141, -1000, -1000, 121, 10325, -1000, 427, 154, -1000, - -133, 155, -1000, 155, 524, 523, -1000, -1000, -1000, 10325, - 591, 815, 811, -1000, -1000, 674, 674, 674, 674, 69, - -1000, -1000, 833, -1000, 591, -1000, 635, 115, -1000, 10325, - -1000, -1000, -1000, -1000, -1000, 121, -1000, 424, 199, 379, - -1000, 23, 258, 758, -1000, 757, -1000, -1000, -1000, -1000, - -1000, 420, 3, -1000, 6286, 6286, -1000, -1000, -1000, -1000, - 521, 45, -170, 10769, 530, 521, 10325, -1000, -1000, -1000, - 292, -1000, -1000, 10547, -1000, 372, -1000, -1000, 633, 415, - -1000, 10325, 339, 462, -1000, 700, -164, -174, 458, -1000, - -1000, -1000, 620, -1000, -166, -1000, 3, 718, -1000, 694, - -1000, 10325, -1000, -1000, 4, -167, 409, 1, -171, -1000, - 591, -175, 6514, -1000, 674, 521, -1000, -1000, + -1000, 10626, 10848, -1000, -1000, -1000, -1000, -1000, 10626, -1000, + 235, -1000, 183, -1000, 3912, -1000, 856, 9287, -1000, -1000, + 441, -1000, 7043, 1619, 1619, -1000, -1000, 441, 652, 652, + -1000, 652, 653, -1000, 652, -18, 652, -20, 441, 441, + 1245, 1597, -1000, 379, 1552, 645, -158, -1000, 183, 6587, + -1000, 792, 566, 587, -1000, -1000, 5636, 441, 460, 106, + 456, 843, -1000, 183, 183, 183, 10626, 183, 10626, 10626, + 10626, 7937, 10626, 843, -1000, -1000, -1000, -1000, 2662, -1000, + 454, -1000, 652, -1000, -1000, -1000, 10626, -63, 867, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -38, 383, -38, 296, -1000, 275, 3162, 3912, 2912, -1000, + 651, -1000, -1000, -1000, -1000, 810, -1000, 853, 589, -1000, + 1619, -1000, -1000, 84, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 7043, 7043, -1000, 7043, 7043, 7043, 441, + 370, 183, 799, -1000, 645, -1000, -1000, 601, 10626, 10626, + -1000, -1000, 451, -1000, 449, 449, 449, 121, -1000, -1000, + 114, 10626, -1000, 440, 148, -1000, -139, 127, -1000, 127, + 502, 457, -1000, -1000, -1000, 10626, 645, 851, 846, -1000, + -1000, 1345, 1345, 1345, 1345, 248, -1000, -1000, 864, -1000, + 645, -1000, 637, 90, -1000, 10626, -1000, -1000, -1000, -1000, + -1000, 114, -1000, 427, 169, 325, -1000, 34, 246, 798, + -1000, 795, -1000, -1000, -1000, -1000, -1000, 435, 15, -1000, + 6587, 6587, -1000, -1000, -1000, -1000, 441, 37, -171, 11070, + 587, 441, 10626, -1000, -1000, -1000, 262, -1000, -1000, 10848, + -1000, 267, -1000, -1000, 670, 413, -1000, 10626, 183, 582, + -1000, 747, -166, -174, 559, -1000, -1000, -1000, 649, -1000, + -168, -1000, 15, 768, -1000, 743, -1000, 10626, -1000, -1000, + 11, -169, 410, 5, -172, -1000, 645, -175, 6815, -1000, + 1345, 441, -1000, -1000, } var yyPgo = [...]int{ - 0, 1100, 27, 469, 1099, 1098, 1097, 1096, 1092, 1091, - 1086, 1085, 1082, 1081, 1079, 1076, 1074, 1072, 1070, 1068, - 1067, 1065, 1064, 1063, 101, 1061, 1060, 1058, 67, 1054, - 62, 1052, 1050, 36, 309, 46, 25, 908, 1049, 16, - 68, 58, 1048, 37, 1044, 1043, 71, 1042, 56, 1041, - 1039, 41, 1036, 1034, 11, 33, 1031, 1030, 1028, 1027, - 59, 498, 1026, 992, 989, 988, 979, 978, 47, 3, - 8, 52, 12, 975, 221, 7, 972, 44, 964, 962, - 960, 959, 83, 957, 49, 954, 23, 55, 953, 19, - 57, 24, 15, 5, 63, 53, 951, 48, 54, 43, - 950, 947, 378, 946, 945, 39, 943, 20, 140, 393, - 933, 932, 924, 921, 42, 0, 535, 342, 69, 919, - 918, 916, 1195, 60, 61, 14, 914, 45, 489, 30, - 910, 909, 26, 907, 906, 905, 902, 901, 899, 898, - 197, 896, 895, 894, 29, 9, 893, 892, 50, 18, - 891, 889, 888, 32, 51, 887, 886, 40, 881, 879, - 874, 869, 22, 17, 867, 10, 866, 6, 865, 21, - 861, 1, 860, 13, 857, 2, 856, 4, 34, 855, - 851, 74, 143, 849, 846, 93, + 0, 1078, 18, 483, 1077, 1072, 1071, 1070, 1069, 1066, + 1064, 1062, 1061, 1060, 1058, 1057, 1056, 1055, 1054, 1051, + 1050, 1049, 1048, 1047, 91, 1046, 1045, 1043, 58, 1042, + 63, 1041, 1040, 33, 57, 46, 34, 1278, 1038, 26, + 62, 56, 1036, 48, 1034, 1028, 71, 1027, 53, 1026, + 1019, 94, 1016, 1015, 11, 17, 1013, 1012, 1011, 1009, + 60, 592, 1007, 1006, 1003, 997, 995, 994, 44, 3, + 7, 16, 20, 993, 85, 8, 992, 45, 989, 988, + 987, 985, 40, 984, 49, 981, 15, 47, 975, 13, + 55, 28, 21, 5, 69, 51, 971, 25, 54, 43, + 967, 966, 404, 965, 964, 36, 963, 24, 140, 331, + 962, 960, 955, 954, 42, 0, 754, 300, 61, 953, + 952, 951, 1490, 67, 59, 22, 950, 77, 711, 32, + 949, 948, 29, 946, 945, 944, 943, 942, 941, 940, + 187, 939, 936, 935, 76, 10, 934, 933, 50, 30, + 930, 929, 928, 39, 52, 926, 925, 41, 924, 922, + 921, 920, 919, 23, 14, 913, 9, 912, 6, 911, + 27, 905, 1, 903, 12, 902, 2, 901, 4, 37, + 892, 890, 444, 301, 887, 885, 73, } var yyR1 = [...]int{ - 0, 179, 180, 180, 1, 1, 1, 1, 1, 1, + 0, 180, 181, 181, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 6, 3, 4, 4, 5, 5, 7, 7, 27, 27, 8, 9, 9, 9, - 183, 183, 46, 46, 90, 90, 10, 10, 10, 10, + 184, 184, 46, 46, 90, 90, 10, 10, 10, 10, 95, 95, 99, 99, 99, 100, 100, 100, 100, 130, - 130, 11, 11, 11, 11, 11, 11, 11, 177, 177, - 176, 175, 175, 174, 174, 173, 16, 159, 160, 160, - 160, 160, 154, 133, 133, 133, 133, 136, 136, 134, - 134, 134, 134, 134, 134, 134, 135, 135, 135, 135, - 135, 137, 137, 137, 137, 137, 138, 138, 138, 138, + 130, 11, 11, 11, 11, 11, 11, 11, 11, 178, + 178, 177, 176, 176, 175, 175, 174, 16, 159, 161, + 161, 160, 160, 160, 160, 154, 133, 133, 133, 133, + 136, 136, 134, 134, 134, 134, 134, 134, 134, 135, + 135, 135, 135, 135, 137, 137, 137, 137, 137, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 139, 139, 139, 139, 139, 139, 139, 139, 153, - 153, 140, 140, 148, 148, 149, 149, 149, 146, 146, - 147, 147, 150, 150, 150, 141, 141, 141, 141, 141, - 141, 141, 143, 143, 151, 151, 144, 144, 144, 145, - 145, 145, 152, 152, 152, 152, 152, 142, 142, 155, - 155, 168, 168, 167, 167, 167, 158, 158, 164, 164, - 164, 164, 164, 157, 157, 166, 166, 165, 156, 156, - 169, 161, 161, 161, 162, 162, 162, 163, 163, 163, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 178, - 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 172, 170, 170, 171, 171, 13, 14, 14, 14, 14, - 14, 15, 15, 17, 18, 18, 18, 18, 18, 18, + 138, 138, 138, 138, 139, 139, 139, 139, 139, 139, + 139, 139, 153, 153, 140, 140, 148, 148, 149, 149, + 149, 146, 146, 147, 147, 150, 150, 150, 141, 141, + 141, 141, 141, 141, 141, 143, 143, 151, 151, 144, + 144, 144, 145, 145, 145, 152, 152, 152, 152, 152, + 142, 142, 155, 155, 169, 169, 168, 168, 168, 158, + 158, 165, 165, 165, 165, 165, 157, 157, 167, 167, + 166, 156, 156, 170, 162, 162, 162, 163, 163, 163, + 164, 164, 164, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 173, 171, 171, 172, 172, 13, 14, + 14, 14, 14, 14, 15, 15, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 106, 106, 104, 104, 105, 105, 105, 107, 107, - 107, 131, 131, 131, 19, 19, 21, 21, 22, 23, - 20, 20, 20, 20, 20, 20, 20, 184, 24, 25, - 25, 26, 26, 26, 30, 30, 30, 28, 28, 29, - 29, 35, 35, 34, 34, 36, 36, 36, 36, 119, - 119, 119, 118, 118, 38, 38, 39, 39, 40, 40, - 41, 41, 41, 53, 53, 89, 89, 91, 91, 42, - 42, 42, 42, 43, 43, 44, 44, 45, 45, 126, - 126, 125, 125, 125, 124, 124, 47, 47, 47, 49, - 48, 48, 48, 48, 50, 50, 52, 52, 51, 51, - 54, 54, 54, 54, 55, 55, 37, 37, 37, 37, - 37, 37, 37, 103, 103, 57, 57, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 67, 67, 67, - 67, 67, 67, 58, 58, 58, 58, 58, 58, 58, - 33, 33, 68, 68, 68, 74, 69, 69, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 18, 18, 18, 18, 106, 106, 104, 104, 105, 105, + 105, 107, 107, 107, 131, 131, 131, 19, 19, 21, + 21, 22, 23, 20, 20, 20, 20, 20, 20, 20, + 185, 24, 25, 25, 26, 26, 26, 30, 30, 30, + 28, 28, 29, 29, 35, 35, 34, 34, 36, 36, + 36, 36, 119, 119, 119, 118, 118, 38, 38, 39, + 39, 40, 40, 41, 41, 41, 53, 53, 89, 89, + 91, 91, 42, 42, 42, 42, 43, 43, 44, 44, + 45, 45, 126, 126, 125, 125, 125, 124, 124, 47, + 47, 47, 49, 48, 48, 48, 48, 50, 50, 52, + 52, 51, 51, 54, 54, 54, 54, 55, 55, 37, + 37, 37, 37, 37, 37, 37, 103, 103, 57, 57, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 67, 67, 67, 67, 67, 67, 58, 58, 58, 58, + 58, 58, 58, 33, 33, 68, 68, 68, 74, 69, + 69, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 65, 65, 65, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 64, 64, - 64, 64, 64, 64, 64, 64, 185, 185, 66, 66, - 66, 66, 31, 31, 31, 31, 31, 129, 129, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 78, 78, 32, 32, 76, 76, 77, 79, - 79, 75, 75, 75, 60, 60, 60, 60, 60, 60, - 60, 60, 62, 62, 62, 80, 80, 81, 81, 82, - 82, 83, 83, 84, 85, 85, 85, 86, 86, 86, - 86, 87, 87, 87, 59, 59, 59, 59, 59, 59, - 88, 88, 88, 88, 92, 92, 70, 70, 72, 72, - 71, 73, 93, 93, 97, 94, 94, 98, 98, 98, - 96, 96, 96, 121, 121, 121, 101, 101, 108, 108, - 109, 109, 102, 102, 110, 110, 110, 110, 110, 110, - 110, 110, 110, 110, 111, 111, 111, 112, 112, 113, - 113, 113, 120, 120, 116, 116, 117, 117, 122, 122, - 123, 123, 114, 114, 114, 114, 114, 114, 114, 114, + 61, 61, 61, 65, 65, 65, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 64, 64, 64, 64, 64, 64, 64, 64, 186, + 186, 66, 66, 66, 66, 31, 31, 31, 31, 31, + 129, 129, 132, 132, 132, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 78, 78, 32, 32, 76, + 76, 77, 79, 79, 75, 75, 75, 60, 60, 60, + 60, 60, 60, 60, 60, 62, 62, 62, 80, 80, + 81, 81, 82, 82, 83, 83, 84, 85, 85, 85, + 86, 86, 86, 86, 87, 87, 87, 59, 59, 59, + 59, 59, 59, 88, 88, 88, 88, 92, 92, 70, + 70, 72, 72, 71, 73, 93, 93, 97, 94, 94, + 98, 98, 98, 96, 96, 96, 121, 121, 121, 101, + 101, 108, 108, 109, 109, 102, 102, 110, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 111, 111, 111, + 112, 112, 113, 113, 113, 120, 120, 116, 116, 117, + 117, 122, 122, 123, 123, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, @@ -1994,7 +2026,7 @@ var yyR1 = [...]int{ 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 115, 115, 115, 115, 115, + 114, 114, 114, 114, 114, 114, 114, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, @@ -2004,8 +2036,8 @@ var yyR1 = [...]int{ 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 181, 182, 127, - 128, 128, 128, + 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, + 182, 183, 127, 128, 128, 128, } var yyR2 = [...]int{ @@ -2015,60 +2047,61 @@ var yyR2 = [...]int{ 1, 3, 7, 8, 1, 1, 8, 8, 7, 6, 1, 1, 1, 3, 0, 4, 3, 4, 5, 4, 1, 3, 3, 2, 2, 2, 2, 2, 1, 1, - 1, 2, 8, 4, 6, 5, 5, 5, 0, 2, - 1, 0, 2, 1, 3, 3, 4, 4, 1, 3, - 3, 3, 8, 3, 1, 1, 1, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 1, 2, 2, 2, 1, 4, 4, 2, 2, - 3, 3, 3, 3, 1, 1, 1, 1, 1, 6, - 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 0, 3, 0, 5, 0, 3, 5, 0, 1, - 0, 1, 0, 1, 2, 0, 2, 2, 2, 2, - 2, 2, 0, 3, 0, 1, 0, 3, 3, 0, - 2, 2, 0, 2, 1, 2, 1, 0, 2, 5, - 4, 1, 2, 2, 3, 2, 0, 1, 2, 3, - 3, 2, 2, 1, 1, 1, 3, 2, 3, 1, - 10, 0, 1, 3, 1, 2, 3, 1, 1, 1, - 6, 7, 7, 12, 7, 7, 7, 4, 5, 1, + 1, 2, 2, 8, 4, 6, 5, 5, 5, 0, + 2, 1, 0, 2, 1, 3, 3, 4, 4, 2, + 4, 1, 3, 3, 3, 8, 3, 1, 1, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 1, 2, 2, 2, 1, 4, + 4, 2, 2, 3, 3, 3, 3, 1, 1, 1, + 1, 1, 6, 6, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 0, 3, 0, 5, 0, 3, + 5, 0, 1, 0, 1, 0, 1, 2, 0, 2, + 2, 2, 2, 2, 2, 0, 3, 0, 1, 0, + 3, 3, 0, 2, 2, 0, 2, 1, 2, 1, + 0, 2, 5, 4, 1, 2, 2, 3, 2, 0, + 1, 2, 3, 3, 2, 2, 1, 1, 1, 3, + 2, 3, 1, 10, 0, 1, 3, 1, 2, 3, + 1, 1, 1, 6, 7, 7, 12, 7, 7, 7, + 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 7, 1, 3, 8, 8, 5, 4, + 6, 5, 4, 4, 3, 2, 3, 4, 4, 4, + 4, 4, 4, 4, 4, 3, 3, 3, 3, 4, + 3, 7, 5, 4, 2, 2, 4, 4, 2, 2, + 2, 2, 2, 3, 1, 1, 0, 1, 0, 2, + 2, 0, 2, 2, 0, 1, 1, 2, 1, 1, + 2, 1, 1, 2, 2, 2, 2, 2, 3, 3, + 0, 2, 0, 2, 1, 2, 2, 0, 1, 1, + 0, 1, 0, 1, 0, 1, 1, 3, 1, 2, + 3, 5, 0, 1, 2, 1, 1, 0, 2, 1, + 3, 1, 1, 1, 3, 3, 3, 7, 1, 3, + 1, 3, 4, 4, 4, 3, 2, 4, 0, 1, + 0, 2, 0, 1, 0, 1, 2, 1, 1, 1, + 2, 2, 1, 2, 3, 2, 3, 2, 2, 2, + 1, 1, 3, 0, 5, 5, 5, 0, 2, 1, + 3, 3, 2, 3, 1, 2, 0, 3, 1, 1, + 3, 3, 4, 4, 5, 3, 4, 5, 6, 2, + 1, 2, 1, 2, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 0, 2, 1, 1, 1, 3, 1, + 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 2, 2, 2, 2, 2, 2, 2, 3, 1, + 1, 1, 1, 4, 5, 6, 4, 4, 6, 6, + 6, 6, 8, 8, 6, 8, 8, 9, 7, 5, + 4, 2, 2, 2, 2, 2, 2, 2, 2, 0, + 2, 4, 4, 4, 4, 0, 3, 4, 7, 3, + 1, 1, 2, 3, 3, 1, 2, 2, 1, 2, + 1, 2, 2, 1, 2, 0, 1, 0, 2, 1, + 2, 4, 0, 2, 1, 3, 5, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 0, 3, + 0, 2, 0, 3, 1, 3, 2, 0, 1, 1, + 0, 2, 4, 4, 0, 2, 4, 2, 1, 3, + 5, 4, 6, 1, 3, 3, 5, 0, 5, 1, + 3, 1, 2, 3, 1, 1, 3, 3, 1, 3, + 3, 3, 3, 1, 2, 1, 1, 1, 1, 1, + 1, 0, 2, 0, 3, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, + 1, 1, 0, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 7, 1, 3, 8, 8, 5, 4, 6, 5, 4, - 4, 3, 2, 3, 4, 4, 4, 4, 4, 4, - 4, 4, 3, 3, 3, 3, 4, 3, 7, 5, - 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, - 3, 1, 1, 0, 1, 0, 2, 2, 0, 2, - 2, 0, 1, 1, 2, 1, 1, 2, 1, 1, - 2, 2, 2, 2, 2, 3, 3, 0, 2, 0, - 2, 1, 2, 2, 0, 1, 1, 0, 1, 0, - 1, 0, 1, 1, 3, 1, 2, 3, 5, 0, - 1, 2, 1, 1, 0, 2, 1, 3, 1, 1, - 1, 3, 3, 3, 7, 1, 3, 1, 3, 4, - 4, 4, 3, 2, 4, 0, 1, 0, 2, 0, - 1, 0, 1, 2, 1, 1, 1, 2, 2, 1, - 2, 3, 2, 3, 2, 2, 2, 1, 1, 3, - 0, 5, 5, 5, 0, 2, 1, 3, 3, 2, - 3, 1, 2, 0, 3, 1, 1, 3, 3, 4, - 4, 5, 3, 4, 5, 6, 2, 1, 2, 1, - 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 0, 2, 1, 1, 1, 3, 1, 3, 1, 1, - 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, - 2, 2, 2, 2, 2, 3, 1, 1, 1, 1, - 4, 5, 6, 4, 4, 6, 6, 6, 6, 8, - 8, 6, 8, 8, 9, 7, 5, 4, 2, 2, - 2, 2, 2, 2, 2, 2, 0, 2, 4, 4, - 4, 4, 0, 3, 4, 7, 3, 1, 1, 2, - 3, 3, 1, 2, 2, 1, 2, 1, 2, 2, - 1, 2, 0, 1, 0, 2, 1, 2, 4, 0, - 2, 1, 3, 5, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 0, 3, 0, 2, 0, - 3, 1, 3, 2, 0, 1, 1, 0, 2, 4, - 4, 0, 2, 4, 2, 1, 3, 5, 4, 6, - 1, 3, 3, 5, 0, 5, 1, 3, 1, 2, - 3, 1, 1, 3, 3, 1, 3, 3, 3, 3, - 1, 2, 1, 1, 1, 1, 1, 1, 0, 2, - 0, 3, 0, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, - 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2088,280 +2121,281 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 0, 1, 1, + 1, 1, 0, 0, 1, 1, } var yyChk = [...]int{ - -1000, -179, -1, -2, -6, -7, -8, -9, -10, -11, + -1000, -180, -1, -2, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -17, -18, -19, -21, -22, -23, -20, -3, -4, 6, 7, -27, 9, 10, 30, -16, 114, 115, 117, 116, 143, 118, 136, 50, 155, 156, - 158, 159, 25, 137, 138, 141, 142, 31, 32, -181, - 8, 240, 54, -180, 255, -82, 15, -26, 5, -24, - -184, -24, -24, -24, -24, -24, -159, 54, -113, 123, - 71, 151, 232, 120, 121, 127, -116, 57, -115, 248, - 155, 166, 160, 187, 179, 177, 180, 219, 207, 217, - 66, 158, 228, 139, 175, 171, 169, 27, 192, 253, - 170, 133, 132, 193, 197, 220, 164, 165, 222, 191, - 135, 33, 250, 35, 147, 223, 195, 190, 186, 189, - 163, 185, 39, 199, 198, 200, 218, 182, 172, 18, - 226, 142, 145, 194, 196, 128, 149, 252, 224, 168, - 134, 146, 141, 227, 159, 221, 230, 38, 204, 162, - 131, 156, 153, 183, 148, 173, 174, 188, 161, 184, - 157, 150, 143, 229, 205, 254, 181, 178, 154, 152, - 210, 211, 212, 213, 214, 251, 225, 176, 206, -102, - 123, 125, 121, 121, 122, 123, 232, 120, 121, -51, - -122, 57, -115, 123, 151, 121, 107, 180, 114, 208, - 122, 33, 149, -131, 121, -104, 152, 207, 210, 211, - 212, 214, 213, 57, 221, 220, 215, -122, 157, -127, - -127, -127, -127, -127, 209, 209, -2, -86, 17, 16, - -5, -3, -181, 6, 20, 21, -30, 40, 41, -25, - -36, 98, -37, -122, -56, 73, -61, 29, 57, -115, - 23, -60, -57, -75, -73, -74, 107, 108, 109, 96, - 97, 104, 74, 110, -65, -63, -64, -66, 59, 58, - 67, 60, 61, 62, 63, 68, 69, 70, -116, -71, - -181, 44, 45, 241, 242, 243, 244, 247, 245, 76, - 34, 231, 239, 238, 237, 235, 236, 233, 234, 126, - 232, 102, 240, -102, -39, -40, -41, -42, -53, -74, - -181, -51, 11, -46, -51, -94, -130, 157, -98, 221, - 220, -117, -96, -116, -114, 219, 180, 218, 119, 72, - 22, 24, 202, 75, 107, 16, 76, 106, 241, 114, - 48, 233, 234, 231, 243, 244, 232, 208, 29, 10, - 25, 137, 21, 100, 116, 79, 80, 140, 23, 138, - 70, 19, 51, 11, 13, 14, 126, 125, 91, 122, - 46, 8, 110, 26, 88, 42, 28, 44, 89, 17, - 235, 236, 31, 247, 144, 102, 49, 36, 73, 68, - 52, 71, 15, 47, 90, 117, 240, 45, 120, 6, - 246, 30, 136, 43, 121, 209, 78, 124, 69, 5, - 127, 32, 9, 50, 53, 237, 238, 239, 34, 77, - 12, -160, -154, 57, 122, -51, 240, -116, -109, 126, - -109, -109, 121, -51, -51, -108, 126, 57, -108, -108, - -108, -51, 111, -51, 57, 30, 232, 57, 149, 121, - 150, 123, -128, -181, -117, -128, -128, -128, 153, 154, - -128, 217, -106, 209, 216, 52, 12, -128, -127, -127, - -182, 56, -87, 19, 31, -37, -122, -83, -84, -37, - -82, -2, -24, 36, -28, 21, 65, 11, -119, 72, - 71, 88, -118, 22, -116, 59, 111, -37, -58, 91, - 73, 89, 90, 75, 93, 92, 103, 96, 97, 98, - 99, 100, 101, 102, 94, 95, 106, 81, 82, 83, - 84, 85, 86, 87, -103, -181, -74, -181, 112, 113, - -61, -61, -61, -61, -61, -61, -61, -61, -181, -2, - -69, -37, -181, -181, -181, -181, -181, -181, -181, -181, - -181, -78, -37, -181, -185, -181, -185, -185, -185, -185, - -185, -185, -185, -181, -181, -181, -181, -52, 26, -51, - 30, 55, -47, -49, -48, -50, 42, 46, 48, 43, - 44, 45, 49, -126, 22, -39, -181, -125, 145, -124, - 22, -122, 59, -51, -46, -183, 55, 11, 53, 55, - -94, 157, -95, -99, 222, 224, 81, -121, -116, 59, - 29, 30, 56, 55, -133, -136, -138, -137, -139, -134, - -135, 177, 178, 107, 181, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 30, 139, 173, 174, 175, - 176, 193, 194, 195, 196, 197, 198, 199, 200, 160, - 161, 162, 163, 164, 165, 166, 168, 169, 170, 171, - 172, 57, -128, 123, -177, 53, 57, 73, 57, -51, - -51, -128, 124, -51, 23, 52, -51, 57, 57, -123, - -122, -114, -128, -128, -128, -128, -128, -128, -128, -128, - -128, -128, 11, -105, 11, 91, -51, -37, 9, 91, - 55, 18, 111, 55, -85, 24, 25, -86, -182, -30, - -62, -116, 60, 63, -29, 43, -51, -37, -37, -67, - 68, 73, 69, 70, -118, 98, -123, -117, -114, -61, - -68, -71, -74, 64, 91, 89, 90, 75, -61, -61, - -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, - -61, -61, -61, -129, 57, 59, 57, -60, -60, -116, - -35, 21, -34, -36, -182, 55, -182, -2, -34, -34, - -37, -37, -75, -116, -122, -75, -34, -28, -76, -77, - 77, -75, -182, -34, -35, -34, -34, -90, 145, -51, - -93, -97, -75, -40, -41, -41, -40, -41, 42, 42, - 42, 47, 42, 47, 42, -48, -122, -182, -54, 50, - 125, 51, -181, -124, -90, 53, -39, -51, -98, -95, - 55, 223, 225, 226, 52, -37, -145, 106, -161, -162, - -163, -117, 59, 60, -154, -155, -156, -164, 130, -169, - 128, 131, 127, -157, 133, 122, 28, -150, 68, 73, - -146, 205, -140, 54, -140, -140, -140, -140, -144, 180, - -144, -144, -144, 54, 54, -140, -140, -140, -148, 54, - -148, -148, -149, 54, -149, -120, 53, -51, -175, 251, - -176, 57, -128, 23, -128, -110, 119, 116, 117, -172, - 115, 202, 180, 66, 29, 15, 241, 145, 254, 57, - 146, -51, -51, -128, -51, -107, 89, 12, -122, -122, - 38, -37, -37, -123, -84, -87, -101, 19, 11, 34, - 34, -34, 68, 69, 70, 111, -181, -68, -61, -61, - -61, -33, 140, 72, -182, -182, -34, 55, -37, -182, - -182, -182, 55, 53, 22, 55, 11, 111, 55, 11, - -182, -34, -79, -77, 79, -37, -182, -182, -182, -182, - -182, -59, 30, 34, -2, -181, -181, -55, 55, 12, - 81, -44, -43, 52, 53, -45, 52, -43, 42, 42, - 122, 122, 122, -91, -116, -55, -39, -55, -99, -100, - 227, 224, 230, 57, 59, 55, -163, 81, 54, 57, - 28, -157, -157, 57, 57, 28, -141, 29, 68, -147, - 206, 60, -144, -144, -145, 30, -145, -145, -145, -153, - 59, -153, 60, 60, 52, -116, -128, -174, -173, -117, - -127, -178, 151, 129, 130, 133, 132, 57, 122, 28, - 128, 131, 145, 127, -178, 151, -111, -112, 124, 22, - 122, 28, 145, -128, -105, 59, -37, 39, 111, -51, - -38, 11, 98, -117, -35, -33, 72, -61, -61, -182, - -36, -132, 107, 177, 139, 175, 171, 191, 182, 204, - 173, 205, -129, -132, -61, -61, -117, -61, -61, 248, - -82, 80, -37, 78, -92, 52, -93, -70, -72, -71, - -181, -2, -88, -116, -91, -82, -97, -37, -37, -37, - 54, -37, -181, -181, -181, -182, 55, -82, -55, 224, - 228, 229, -162, -163, -166, -165, -116, -169, 57, 57, - 54, -143, 52, 59, 60, 61, 68, 231, 67, 56, - -145, -145, 57, 107, 56, 55, 56, 55, 56, 55, - -51, 55, 81, -127, -116, -127, -116, -51, -127, -116, - -107, -55, -39, -182, -61, -182, -140, -140, -140, -149, - -140, 165, -140, 165, -182, -182, -182, 55, 19, -182, - 55, 19, -181, -32, 246, -37, 27, -92, 55, -182, - -182, -182, 55, 111, -182, -86, -89, -116, -89, -89, - -89, -125, -116, -86, 56, 55, -140, -89, -151, 202, - 9, -144, 59, -144, 60, 60, -128, -173, -163, 54, - 26, -80, 13, -144, 57, -61, -61, -61, -61, -61, - -182, 59, 28, -72, 34, -2, -181, -116, -116, 55, - 56, -182, -182, -182, -54, -168, -167, 53, 135, 66, - -165, 56, -152, 128, 28, 127, 231, -145, -145, 56, - 56, -89, -181, -81, 14, 16, -182, -182, -182, -182, - -31, 91, 251, 9, -70, -2, 111, -116, -167, 57, - -158, 81, 59, 134, -142, 66, 28, 28, 56, -170, - -171, 145, -37, -69, -182, 249, 49, 252, -93, -182, - -116, 60, -51, 59, -177, -182, 55, -116, 39, 250, - 253, 54, -175, -171, 34, 39, -89, 147, 251, 56, - 148, 252, -181, 253, -61, 144, -182, -182, + 158, 159, 25, 137, 138, 141, 142, 31, 32, -182, + 8, 240, 54, -181, 255, -82, 15, -26, 5, -24, + -185, -24, -24, -24, -24, -24, -159, -161, 54, 89, + -113, 123, 71, 151, 232, 120, 121, 127, -116, 57, + -115, 248, 155, 166, 160, 187, 179, 177, 180, 219, + 207, 217, 66, 158, 228, 139, 175, 171, 169, 27, + 192, 253, 170, 133, 132, 193, 197, 220, 164, 165, + 222, 191, 135, 33, 250, 35, 147, 223, 195, 190, + 186, 189, 163, 185, 39, 199, 198, 200, 218, 182, + 172, 18, 226, 142, 145, 194, 196, 128, 149, 252, + 224, 168, 134, 146, 141, 227, 159, 221, 230, 38, + 204, 162, 131, 156, 153, 183, 148, 173, 174, 188, + 161, 184, 157, 150, 143, 229, 205, 254, 181, 178, + 154, 152, 210, 211, 212, 213, 214, 251, 225, 176, + 206, -102, 123, 125, 121, 121, 122, 123, 232, 120, + 121, -51, -122, 57, -115, 123, 151, 121, 107, 180, + 114, 208, 122, 33, 149, -131, 121, -104, 152, 207, + 210, 211, 212, 214, 213, 57, 221, 220, 215, -122, + 157, -127, -127, -127, -127, -127, 209, 209, -2, -86, + 17, 16, -5, -3, -182, 6, 20, 21, -30, 40, + 41, -25, -36, 98, -37, -122, -56, 73, -61, 29, + 57, -115, 23, -60, -57, -75, -73, -74, 107, 108, + 109, 96, 97, 104, 74, 110, -65, -63, -64, -66, + 59, 58, 67, 60, 61, 62, 63, 68, 69, 70, + -116, -71, -182, 44, 45, 241, 242, 243, 244, 247, + 245, 76, 34, 231, 239, 238, 237, 235, 236, 233, + 234, 126, 232, 102, 240, -102, -39, -40, -41, -42, + -53, -74, -182, -51, 11, -46, -51, -94, -130, 157, + -98, 221, 220, -117, -96, -116, -114, 219, 180, 218, + 119, 72, 22, 24, 202, 75, 107, 16, 76, 106, + 241, 114, 48, 233, 234, 231, 243, 244, 232, 208, + 29, 10, 25, 137, 21, 100, 116, 79, 80, 140, + 23, 138, 70, 19, 51, 11, 13, 14, 126, 125, + 91, 122, 46, 8, 110, 26, 88, 42, 28, 44, + 89, 17, 235, 236, 31, 247, 144, 102, 49, 36, + 73, 68, 52, 71, 15, 47, 90, 117, 240, 45, + 120, 6, 246, 30, 136, 43, 121, 209, 78, 124, + 69, 5, 127, 32, 9, 50, 53, 237, 238, 239, + 34, 77, 12, -160, 89, -154, 57, -51, 122, -51, + 240, -116, -109, 126, -109, -109, 121, -51, -51, -108, + 126, 57, -108, -108, -108, -51, 111, -51, 57, 30, + 232, 57, 149, 121, 150, 123, -128, -182, -117, -128, + -128, -128, 153, 154, -128, 217, -106, 209, 216, 52, + 12, -128, -127, -127, -183, 56, -87, 19, 31, -37, + -122, -83, -84, -37, -82, -2, -24, 36, -28, 21, + 65, 11, -119, 72, 71, 88, -118, 22, -116, 59, + 111, -37, -58, 91, 73, 89, 90, 75, 93, 92, + 103, 96, 97, 98, 99, 100, 101, 102, 94, 95, + 106, 81, 82, 83, 84, 85, 86, 87, -103, -182, + -74, -182, 112, 113, -61, -61, -61, -61, -61, -61, + -61, -61, -182, -2, -69, -37, -182, -182, -182, -182, + -182, -182, -182, -182, -182, -78, -37, -182, -186, -182, + -186, -186, -186, -186, -186, -186, -186, -182, -182, -182, + -182, -52, 26, -51, 30, 55, -47, -49, -48, -50, + 42, 46, 48, 43, 44, 45, 49, -126, 22, -39, + -182, -125, 145, -124, 22, -122, 59, -51, -46, -184, + 55, 11, 53, 55, -94, 157, -95, -99, 222, 224, + 81, -121, -116, 59, 29, 30, 56, 55, -51, -133, + -136, -138, -137, -139, -134, -135, 177, 178, 107, 181, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 30, 139, 173, 174, 175, 176, 193, 194, 195, 196, + 197, 198, 199, 200, 160, 161, 162, 163, 164, 165, + 166, 168, 169, 170, 171, 172, 57, -128, 123, -178, + 53, 57, 73, 57, -51, -51, -128, 124, -51, 23, + 52, -51, 57, 57, -123, -122, -114, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, 11, -105, 11, + 91, -51, -37, 9, 91, 55, 18, 111, 55, -85, + 24, 25, -86, -183, -30, -62, -116, 60, 63, -29, + 43, -51, -37, -37, -67, 68, 73, 69, 70, -118, + 98, -123, -117, -114, -61, -68, -71, -74, 64, 91, + 89, 90, 75, -61, -61, -61, -61, -61, -61, -61, + -61, -61, -61, -61, -61, -61, -61, -61, -129, 57, + 59, 57, -60, -60, -116, -35, 21, -34, -36, -183, + 55, -183, -2, -34, -34, -37, -37, -75, -116, -122, + -75, -34, -28, -76, -77, 77, -75, -183, -34, -35, + -34, -34, -90, 145, -51, -93, -97, -75, -40, -41, + -41, -40, -41, 42, 42, 42, 47, 42, 47, 42, + -48, -122, -183, -54, 50, 125, 51, -182, -124, -90, + 53, -39, -51, -98, -95, 55, 223, 225, 226, 52, + -37, -145, 106, -162, -163, -164, -117, 59, 60, -154, + -155, -156, -165, 130, -170, 128, 131, 127, -157, 133, + 122, 28, 56, -150, 68, 73, -146, 205, -140, 54, + -140, -140, -140, -140, -144, 180, -144, -144, -144, 54, + 54, -140, -140, -140, -148, 54, -148, -148, -149, 54, + -149, -120, 53, -51, -176, 251, -177, 57, -128, 23, + -128, -110, 119, 116, 117, -173, 115, 202, 180, 66, + 29, 15, 241, 145, 254, 57, 146, -51, -51, -128, + -51, -107, 89, 12, -122, -122, 38, -37, -37, -123, + -84, -87, -101, 19, 11, 34, 34, -34, 68, 69, + 70, 111, -182, -68, -61, -61, -61, -33, 140, 72, + -183, -183, -34, 55, -37, -183, -183, -183, 55, 53, + 22, 55, 11, 111, 55, 11, -183, -34, -79, -77, + 79, -37, -183, -183, -183, -183, -183, -59, 30, 34, + -2, -182, -182, -55, 55, 12, 81, -44, -43, 52, + 53, -45, 52, -43, 42, 42, 122, 122, 122, -91, + -116, -55, -39, -55, -99, -100, 227, 224, 230, 57, + 59, 55, -164, 81, 54, 57, 28, -157, -157, 57, + 57, 28, -141, 29, 68, -147, 206, 60, -144, -144, + -145, 30, -145, -145, -145, -153, 59, -153, 60, 60, + 52, -116, -128, -175, -174, -117, -127, -179, 151, 129, + 130, 133, 132, 57, 122, 28, 128, 131, 145, 127, + -179, 151, -111, -112, 124, 22, 122, 28, 145, -128, + -105, 59, -37, 39, 111, -51, -38, 11, 98, -117, + -35, -33, 72, -61, -61, -183, -36, -132, 107, 177, + 139, 175, 171, 191, 182, 204, 173, 205, -129, -132, + -61, -61, -117, -61, -61, 248, -82, 80, -37, 78, + -92, 52, -93, -70, -72, -71, -182, -2, -88, -116, + -91, -82, -97, -37, -37, -37, 54, -37, -182, -182, + -182, -183, 55, -82, -55, 224, 228, 229, -163, -164, + -167, -166, -116, -170, 57, 57, 54, -143, 52, 59, + 60, 61, 68, 231, 67, 56, -145, -145, 57, 107, + 56, 55, 56, 55, 56, 55, -51, 55, 81, -127, + -116, -127, -116, -51, -127, -116, -107, -55, -39, -183, + -61, -183, -140, -140, -140, -149, -140, 165, -140, 165, + -183, -183, -183, 55, 19, -183, 55, 19, -182, -32, + 246, -37, 27, -92, 55, -183, -183, -183, 55, 111, + -183, -86, -89, -116, -89, -89, -89, -125, -116, -86, + 56, 55, -140, -89, -151, 202, 9, -144, 59, -144, + 60, 60, -128, -174, -164, 54, 26, -80, 13, -144, + 57, -61, -61, -61, -61, -61, -183, 59, 28, -72, + 34, -2, -182, -116, -116, 55, 56, -183, -183, -183, + -54, -169, -168, 53, 135, 66, -166, 56, -152, 128, + 28, 127, 231, -145, -145, 56, 56, -89, -182, -81, + 14, 16, -183, -183, -183, -183, -31, 91, 251, 9, + -70, -2, 111, -116, -168, 57, -158, 81, 59, 134, + -142, 66, 28, 28, 56, -171, -172, 145, -37, -69, + -183, 249, 49, 252, -93, -183, -116, 60, -51, 59, + -178, -183, 55, -116, 39, 250, 253, 54, -176, -172, + 34, 39, -89, 147, 251, 56, 148, 252, -182, 253, + -61, 144, -183, -183, } var yyDef = [...]int{ 22, -2, 2, -2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 519, 0, 287, 287, 287, 287, 287, 287, 0, - 589, 572, 0, 0, 0, 0, -2, 275, 276, 0, - 278, 279, 799, 799, 799, 799, 799, 0, 0, 0, - 34, 35, 797, 1, 3, 527, 0, 0, 291, 294, - 289, 0, 572, 0, 0, 0, 61, 0, 0, 785, - 0, 786, 570, 570, 570, 590, 591, 594, 595, 695, - 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, - 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, - 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, - 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, - 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, - 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, - 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, - 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, - 776, 777, 778, 779, 780, 781, 782, 783, 784, 787, - 788, 789, 790, 791, 792, 793, 794, 795, 796, 0, - 0, 573, 0, 568, 0, 568, 568, 568, 0, 232, - 358, 598, 599, 785, 786, 0, 0, 0, 0, 800, - 800, 800, 800, 0, 800, 0, 251, 252, 255, 256, - 257, 258, 259, 800, 272, 273, 264, 274, 277, 280, - 281, 282, 283, 284, 799, 799, 28, 531, 0, 0, - 519, 30, 0, 287, 292, 293, 297, 295, 296, 288, - 0, 305, 309, 0, 366, 0, 371, 373, -2, -2, - 0, 408, 409, 410, 411, 412, 0, 0, 0, 0, - 0, 0, 0, 0, 436, 437, 438, 439, 504, 505, - 506, 507, 508, 509, 510, 511, 375, 376, 501, 551, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 492, - 0, 466, 466, 466, 466, 466, 466, 466, 466, 0, - 0, 0, 0, 0, 0, 316, 318, 319, 320, 339, - 0, 341, 0, 0, 42, 46, 0, 776, 555, -2, - -2, 0, 0, 596, 597, -2, 702, -2, 602, 603, - 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, - 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, - 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, - 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, - 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, - 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, - 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, - 694, 0, 78, 0, 0, 800, 0, 68, 0, 0, - 0, 0, 0, 800, 0, 0, 0, 0, 0, 0, - 0, 231, 0, 233, 800, 800, 800, 800, 800, 800, - 800, 800, 242, 801, 802, 243, 244, 245, 800, 800, - 247, 0, 265, 261, 262, 0, 0, 260, 285, 286, - 29, 798, 23, 0, 0, 528, 0, 520, 521, 524, - 527, 28, 294, 0, 299, 298, 290, 0, 306, 0, - 0, 0, 310, 0, 312, 313, 0, 369, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 393, 394, 395, - 396, 397, 398, 399, 372, 0, 386, 0, 0, 0, - 428, 429, 430, 431, 432, 433, 434, 0, 301, 28, - 0, 406, 0, 0, 0, 0, 0, 0, 0, 0, - 297, 0, 493, 0, 458, 0, 459, 460, 461, 462, - 463, 464, 465, 0, 301, 0, 0, 44, 0, 357, - 0, 0, 0, 0, 0, 0, 346, 0, 0, 349, - 0, 0, 0, 0, 340, 0, 0, 360, 748, 342, - 0, 344, 345, -2, 0, 0, 0, 40, 41, 0, - 47, 776, 49, 50, 0, 0, 0, 159, 563, 564, - 565, 561, 191, 0, 142, 138, 84, 85, 86, 131, - 88, 131, 131, 131, 131, 156, 156, 156, 156, 114, - 115, 116, 117, 118, 0, 0, 101, 131, 131, 131, - 105, 121, 122, 123, 124, 125, 126, 127, 128, 89, - 90, 91, 92, 93, 94, 95, 133, 133, 133, 135, - 135, 592, 63, 0, 71, 0, 800, 0, 800, 76, - 0, 207, 0, 226, 569, 0, 800, 229, 230, 359, - 600, 601, 234, 235, 236, 237, 238, 239, 240, 241, - 246, 250, 0, 268, 0, 0, 254, 253, 532, 0, - 0, 0, 0, 0, 523, 525, 526, 531, 31, 297, - 0, 512, 0, 0, 0, 300, 26, 367, 368, 370, - 387, 0, 389, 391, 311, 307, 0, 502, -2, 377, - 378, 402, 403, 404, 0, 0, 0, 0, 400, 382, - 0, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 427, 477, 478, 0, 425, 426, 435, - 0, 0, 302, 303, 405, 0, 550, 28, 0, 0, - 0, 0, 0, 501, 0, 0, 0, 0, 499, 496, - 0, 0, 467, 0, 0, 0, 0, 0, 0, 356, - 364, 552, 0, 317, 335, 337, 0, 332, 347, 348, - 350, 0, 352, 0, 354, 355, 321, 322, 323, 0, - 0, 0, 0, 343, 364, 0, 364, 43, 556, 48, - 0, 0, 53, 54, 557, 558, 559, 0, 77, 192, - 194, 197, 198, 199, 79, 80, 81, 0, 0, 189, - 0, 0, 0, 0, 0, 183, 184, 145, 143, 0, - 140, 139, 87, 0, 156, 156, 108, 109, 159, 0, - 159, 159, 159, 0, 0, 102, 103, 104, 96, 0, - 97, 98, 99, 0, 100, 0, 0, 800, 65, 0, - 69, 70, 66, 571, 67, 799, 0, 0, 584, 208, - 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, - 0, 225, 800, 228, 265, 249, 0, 0, 266, 267, - 0, 529, 530, 0, 522, 24, 0, 566, 567, 513, - 514, 314, 388, 390, 392, 0, 301, 379, 400, 383, - 0, 380, 0, 0, 374, 440, 0, 0, 407, -2, - 443, 444, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 519, 0, 497, 0, 0, 457, 468, 469, 470, - 471, 544, 0, 0, -2, 0, 0, 519, 0, 0, - 0, 329, 336, 0, 0, 330, 0, 331, 351, 353, - 0, 0, 0, 0, 327, 519, 364, 39, 51, 52, - 0, 0, 58, 160, 161, 0, 195, 0, 0, 0, - 178, 0, 0, 181, 182, 0, 152, 0, 144, 83, - 141, 0, 159, 159, 110, 0, 111, 112, 113, 0, - 129, 0, 0, 0, 0, 593, 64, 72, 73, 0, - 200, 799, 0, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 799, 0, 0, 799, 585, 586, - 587, 588, 0, 227, 268, 269, 270, 533, 0, 25, - 364, 0, 308, 503, 0, 381, 0, 401, 384, 441, - 304, 0, 131, 131, 482, 131, 135, 485, 131, 487, - 131, 490, 0, 0, 0, 0, 502, 0, 0, 0, - 494, 456, 500, 0, 32, 0, 544, 534, 546, 548, - 0, 28, 0, 540, 0, 527, 553, 365, 554, 333, - 0, 338, 0, 0, 0, 341, 0, 527, 38, 55, - 56, 57, 193, 196, 0, 185, 131, 188, 179, 180, - 0, 154, 0, 146, 147, 148, 149, 150, 151, 132, - 106, 107, 157, 158, 156, 0, 156, 0, 136, 0, - 800, 0, 0, 201, 0, 202, 204, 205, 206, 0, - 248, 515, 315, 442, 385, 445, 479, 156, 483, 484, - 486, 488, 489, 491, 447, 446, 448, 0, 0, 451, - 0, 0, 0, 0, 0, 498, 0, 33, 0, 549, - -2, 0, 0, 0, 45, 36, 0, 325, 0, 0, - 0, 360, 328, 37, 170, 0, 187, 0, 162, 155, - 0, 159, 130, 159, 0, 0, 62, 74, 75, 0, - 0, 517, 0, 480, 481, 0, 0, 0, 0, 472, - 455, 495, 0, 547, 0, -2, 0, 542, 541, 0, - 334, 361, 362, 363, 324, 169, 171, 0, 176, 0, - 186, 0, 167, 0, 164, 166, 153, 119, 120, 134, - 137, 0, 0, 27, 0, 0, 449, 450, 452, 453, - 0, 0, 0, 0, 537, 28, 0, 326, 172, 173, - 0, 177, 175, 0, 82, 0, 163, 165, 68, 0, - 221, 0, 518, 516, 454, 0, 0, 0, 545, -2, - 543, 174, 0, 168, 71, 220, 0, 0, 473, 0, - 476, 0, 203, 222, 0, 474, 0, 0, 0, 190, - 0, 0, 0, 475, 0, 0, 223, 224, + 21, 522, 0, 290, 290, 290, 290, 290, 290, 0, + 592, 575, 0, 0, 0, 0, -2, 278, 279, 0, + 281, 282, 802, 802, 802, 802, 802, 0, 0, 0, + 34, 35, 800, 1, 3, 530, 0, 0, 294, 297, + 292, 0, 575, 0, 0, 0, 61, 62, 0, 0, + 0, 788, 0, 789, 573, 573, 573, 593, 594, 597, + 598, 698, 699, 700, 701, 702, 703, 704, 705, 706, + 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, + 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, + 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, + 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, + 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, + 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, + 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, + 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, + 787, 790, 791, 792, 793, 794, 795, 796, 797, 798, + 799, 0, 0, 576, 0, 571, 0, 571, 571, 571, + 0, 235, 361, 601, 602, 788, 789, 0, 0, 0, + 0, 803, 803, 803, 803, 0, 803, 0, 254, 255, + 258, 259, 260, 261, 262, 803, 275, 276, 267, 277, + 280, 283, 284, 285, 286, 287, 802, 802, 28, 534, + 0, 0, 522, 30, 0, 290, 295, 296, 300, 298, + 299, 291, 0, 308, 312, 0, 369, 0, 374, 376, + -2, -2, 0, 411, 412, 413, 414, 415, 0, 0, + 0, 0, 0, 0, 0, 0, 439, 440, 441, 442, + 507, 508, 509, 510, 511, 512, 513, 514, 378, 379, + 504, 554, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 495, 0, 469, 469, 469, 469, 469, 469, 469, + 469, 0, 0, 0, 0, 0, 0, 319, 321, 322, + 323, 342, 0, 344, 0, 0, 42, 46, 0, 779, + 558, -2, -2, 0, 0, 599, 600, -2, 705, -2, + 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, + 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, + 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, + 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, + 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, + 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, + 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, + 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, + 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, + 695, 696, 697, 0, 0, 81, 0, 79, 0, 803, + 0, 69, 0, 0, 0, 0, 0, 803, 0, 0, + 0, 0, 0, 0, 0, 234, 0, 236, 803, 803, + 803, 803, 803, 803, 803, 803, 245, 804, 805, 246, + 247, 248, 803, 803, 250, 0, 268, 264, 265, 0, + 0, 263, 288, 289, 29, 801, 23, 0, 0, 531, + 0, 523, 524, 527, 530, 28, 297, 0, 302, 301, + 293, 0, 309, 0, 0, 0, 313, 0, 315, 316, + 0, 372, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 396, 397, 398, 399, 400, 401, 402, 375, 0, + 389, 0, 0, 0, 431, 432, 433, 434, 435, 436, + 437, 0, 304, 28, 0, 409, 0, 0, 0, 0, + 0, 0, 0, 0, 300, 0, 496, 0, 461, 0, + 462, 463, 464, 465, 466, 467, 468, 0, 304, 0, + 0, 44, 0, 360, 0, 0, 0, 0, 0, 0, + 349, 0, 0, 352, 0, 0, 0, 0, 343, 0, + 0, 363, 751, 345, 0, 347, 348, -2, 0, 0, + 0, 40, 41, 0, 47, 779, 49, 50, 0, 0, + 0, 162, 566, 567, 568, 564, 194, 0, 0, 145, + 141, 87, 88, 89, 134, 91, 134, 134, 134, 134, + 159, 159, 159, 159, 117, 118, 119, 120, 121, 0, + 0, 104, 134, 134, 134, 108, 124, 125, 126, 127, + 128, 129, 130, 131, 92, 93, 94, 95, 96, 97, + 98, 136, 136, 136, 138, 138, 595, 64, 0, 72, + 0, 803, 0, 803, 77, 0, 210, 0, 229, 572, + 0, 803, 232, 233, 362, 603, 604, 237, 238, 239, + 240, 241, 242, 243, 244, 249, 253, 0, 271, 0, + 0, 257, 256, 535, 0, 0, 0, 0, 0, 526, + 528, 529, 534, 31, 300, 0, 515, 0, 0, 0, + 303, 26, 370, 371, 373, 390, 0, 392, 394, 314, + 310, 0, 505, -2, 380, 381, 405, 406, 407, 0, + 0, 0, 0, 403, 385, 0, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 430, 480, + 481, 0, 428, 429, 438, 0, 0, 305, 306, 408, + 0, 553, 28, 0, 0, 0, 0, 0, 504, 0, + 0, 0, 0, 502, 499, 0, 0, 470, 0, 0, + 0, 0, 0, 0, 359, 367, 555, 0, 320, 338, + 340, 0, 335, 350, 351, 353, 0, 355, 0, 357, + 358, 324, 325, 326, 0, 0, 0, 0, 346, 367, + 0, 367, 43, 559, 48, 0, 0, 53, 54, 560, + 561, 562, 0, 78, 195, 197, 200, 201, 202, 82, + 83, 84, 0, 0, 192, 0, 0, 0, 0, 0, + 186, 187, 80, 148, 146, 0, 143, 142, 90, 0, + 159, 159, 111, 112, 162, 0, 162, 162, 162, 0, + 0, 105, 106, 107, 99, 0, 100, 101, 102, 0, + 103, 0, 0, 803, 66, 0, 70, 71, 67, 574, + 68, 802, 0, 0, 587, 211, 577, 578, 579, 580, + 581, 582, 583, 584, 585, 586, 0, 228, 803, 231, + 268, 252, 0, 0, 269, 270, 0, 532, 533, 0, + 525, 24, 0, 569, 570, 516, 517, 317, 391, 393, + 395, 0, 304, 382, 403, 386, 0, 383, 0, 0, + 377, 443, 0, 0, 410, -2, 446, 447, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 522, 0, 500, + 0, 0, 460, 471, 472, 473, 474, 547, 0, 0, + -2, 0, 0, 522, 0, 0, 0, 332, 339, 0, + 0, 333, 0, 334, 354, 356, 0, 0, 0, 0, + 330, 522, 367, 39, 51, 52, 0, 0, 58, 163, + 164, 0, 198, 0, 0, 0, 181, 0, 0, 184, + 185, 0, 155, 0, 147, 86, 144, 0, 162, 162, + 113, 0, 114, 115, 116, 0, 132, 0, 0, 0, + 0, 596, 65, 73, 74, 0, 203, 802, 0, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 802, 0, 0, 802, 588, 589, 590, 591, 0, 230, + 271, 272, 273, 536, 0, 25, 367, 0, 311, 506, + 0, 384, 0, 404, 387, 444, 307, 0, 134, 134, + 485, 134, 138, 488, 134, 490, 134, 493, 0, 0, + 0, 0, 505, 0, 0, 0, 497, 459, 503, 0, + 32, 0, 547, 537, 549, 551, 0, 28, 0, 543, + 0, 530, 556, 368, 557, 336, 0, 341, 0, 0, + 0, 344, 0, 530, 38, 55, 56, 57, 196, 199, + 0, 188, 134, 191, 182, 183, 0, 157, 0, 149, + 150, 151, 152, 153, 154, 135, 109, 110, 160, 161, + 159, 0, 159, 0, 139, 0, 803, 0, 0, 204, + 0, 205, 207, 208, 209, 0, 251, 518, 318, 445, + 388, 448, 482, 159, 486, 487, 489, 491, 492, 494, + 450, 449, 451, 0, 0, 454, 0, 0, 0, 0, + 0, 501, 0, 33, 0, 552, -2, 0, 0, 0, + 45, 36, 0, 328, 0, 0, 0, 363, 331, 37, + 173, 0, 190, 0, 165, 158, 0, 162, 133, 162, + 0, 0, 63, 75, 76, 0, 0, 520, 0, 483, + 484, 0, 0, 0, 0, 475, 458, 498, 0, 550, + 0, -2, 0, 545, 544, 0, 337, 364, 365, 366, + 327, 172, 174, 0, 179, 0, 189, 0, 170, 0, + 167, 169, 156, 122, 123, 137, 140, 0, 0, 27, + 0, 0, 452, 453, 455, 456, 0, 0, 0, 0, + 540, 28, 0, 329, 175, 176, 0, 180, 178, 0, + 85, 0, 166, 168, 69, 0, 224, 0, 521, 519, + 457, 0, 0, 0, 548, -2, 546, 177, 0, 171, + 72, 223, 0, 0, 476, 0, 479, 0, 206, 225, + 0, 477, 0, 0, 0, 193, 0, 0, 0, 478, + 0, 0, 226, 227, } var yyTok1 = [...]int{ @@ -2749,35 +2783,35 @@ yydefault: case 1: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:306 + //line sql.y:308 { setParseTree(yylex, yyDollar[1].statement) } case 2: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:311 + //line sql.y:313 { } case 3: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:312 + //line sql.y:314 { } case 4: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:316 + //line sql.y:318 { yyVAL.statement = yyDollar[1].selStmt } case 22: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:337 + //line sql.y:339 { setParseTree(yylex, nil) } case 23: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:343 + //line sql.y:345 { sel := yyDollar[1].selStmt.(*Select) sel.OrderBy = yyDollar[2].orderBy @@ -2787,55 +2821,55 @@ yydefault: } case 24: yyDollar = yyS[yypt-6 : yypt+1] - //line sql.y:351 + //line sql.y:353 { yyVAL.selStmt = &Union{Type: yyDollar[2].str, Left: yyDollar[1].selStmt, Right: yyDollar[3].selStmt, OrderBy: yyDollar[4].orderBy, Limit: yyDollar[5].limit, Lock: yyDollar[6].str} } case 25: yyDollar = yyS[yypt-7 : yypt+1] - //line sql.y:355 + //line sql.y:357 { yyVAL.selStmt = &Select{Comments: Comments(yyDollar[2].bytes2), Cache: yyDollar[3].str, SelectExprs: SelectExprs{Nextval{Expr: yyDollar[5].expr}}, From: TableExprs{&AliasedTableExpr{Expr: yyDollar[7].tableName}}} } case 26: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:361 + //line sql.y:363 { yyVAL.statement = &Stream{Comments: Comments(yyDollar[2].bytes2), SelectExpr: yyDollar[3].selectExpr, Table: yyDollar[5].tableName} } case 27: yyDollar = yyS[yypt-10 : yypt+1] - //line sql.y:368 + //line sql.y:370 { yyVAL.selStmt = &Select{Comments: Comments(yyDollar[2].bytes2), Cache: yyDollar[3].str, Distinct: yyDollar[4].str, Hints: yyDollar[5].str, SelectExprs: yyDollar[6].selectExprs, From: yyDollar[7].tableExprs, Where: NewWhere(WhereStr, yyDollar[8].expr), GroupBy: GroupBy(yyDollar[9].exprs), Having: NewWhere(HavingStr, yyDollar[10].expr)} } case 28: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:374 + //line sql.y:376 { yyVAL.selStmt = yyDollar[1].selStmt } case 29: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:378 + //line sql.y:380 { yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt} } case 30: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:384 + //line sql.y:386 { yyVAL.selStmt = yyDollar[1].selStmt } case 31: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:388 + //line sql.y:390 { yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt} } case 32: yyDollar = yyS[yypt-7 : yypt+1] - //line sql.y:395 + //line sql.y:397 { // insert_data returns a *Insert pre-filled with Columns & Values ins := yyDollar[6].ins @@ -2849,7 +2883,7 @@ yydefault: } case 33: yyDollar = yyS[yypt-8 : yypt+1] - //line sql.y:407 + //line sql.y:409 { cols := make(Columns, 0, len(yyDollar[7].updateExprs)) vals := make(ValTuple, 0, len(yyDollar[8].updateExprs)) @@ -2861,193 +2895,201 @@ yydefault: } case 34: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:419 + //line sql.y:421 { yyVAL.str = InsertStr } case 35: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:423 + //line sql.y:425 { yyVAL.str = ReplaceStr } case 36: yyDollar = yyS[yypt-8 : yypt+1] - //line sql.y:429 + //line sql.y:431 { yyVAL.statement = &Update{Comments: Comments(yyDollar[2].bytes2), TableExprs: yyDollar[3].tableExprs, Exprs: yyDollar[5].updateExprs, Where: NewWhere(WhereStr, yyDollar[6].expr), OrderBy: yyDollar[7].orderBy, Limit: yyDollar[8].limit} } case 37: yyDollar = yyS[yypt-8 : yypt+1] - //line sql.y:435 + //line sql.y:437 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), TableExprs: TableExprs{&AliasedTableExpr{Expr: yyDollar[4].tableName}}, Partitions: yyDollar[5].partitions, Where: NewWhere(WhereStr, yyDollar[6].expr), OrderBy: yyDollar[7].orderBy, Limit: yyDollar[8].limit} } case 38: yyDollar = yyS[yypt-7 : yypt+1] - //line sql.y:439 + //line sql.y:441 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[4].tableNames, TableExprs: yyDollar[6].tableExprs, Where: NewWhere(WhereStr, yyDollar[7].expr)} } case 39: yyDollar = yyS[yypt-6 : yypt+1] - //line sql.y:443 + //line sql.y:445 { yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[3].tableNames, TableExprs: yyDollar[5].tableExprs, Where: NewWhere(WhereStr, yyDollar[6].expr)} } case 40: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:448 + //line sql.y:450 { } case 41: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:449 + //line sql.y:451 { } case 42: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:453 + //line sql.y:455 { yyVAL.tableNames = TableNames{yyDollar[1].tableName} } case 43: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:457 + //line sql.y:459 { yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName) } case 44: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:462 + //line sql.y:464 { yyVAL.partitions = nil } case 45: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:466 + //line sql.y:468 { yyVAL.partitions = yyDollar[3].partitions } case 46: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:472 + //line sql.y:474 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[3].setExprs} } case 47: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:476 + //line sql.y:478 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Scope: yyDollar[3].str, Exprs: yyDollar[4].setExprs} } case 48: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:480 + //line sql.y:482 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Scope: yyDollar[3].str, Exprs: yyDollar[5].setExprs} } case 49: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:484 + //line sql.y:486 { yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[4].setExprs} } case 50: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:490 + //line sql.y:492 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } case 51: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:494 + //line sql.y:496 { yyVAL.setExprs = append(yyVAL.setExprs, yyDollar[3].setExpr) } case 52: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:500 + //line sql.y:502 { yyVAL.setExpr = yyDollar[3].setExpr } case 53: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:504 + //line sql.y:506 { yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_read_only"), Expr: NewIntVal([]byte("0"))} } case 54: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:508 + //line sql.y:510 { yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_read_only"), Expr: NewIntVal([]byte("1"))} } case 55: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:514 + //line sql.y:516 { yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("repeatable read"))} } case 56: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:518 + //line sql.y:520 { yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("read committed"))} } case 57: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:522 + //line sql.y:524 { yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("read uncommitted"))} } case 58: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:526 + //line sql.y:528 { yyVAL.setExpr = &SetExpr{Name: NewColIdent("tx_isolation"), Expr: NewStrVal([]byte("serializable"))} } case 59: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:532 + //line sql.y:534 { yyVAL.str = SessionStr } case 60: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:536 + //line sql.y:538 { yyVAL.str = GlobalStr } case 61: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:542 + //line sql.y:544 { yyDollar[1].ddl.TableSpec = yyDollar[2].TableSpec yyVAL.statement = yyDollar[1].ddl } case 62: + yyDollar = yyS[yypt-2 : yypt+1] + //line sql.y:549 + { + // Create table [name] like [name] + yyDollar[1].ddl.OptLike = yyDollar[2].optLike + yyVAL.statement = yyDollar[1].ddl + } + case 63: yyDollar = yyS[yypt-8 : yypt+1] - //line sql.y:547 + //line sql.y:555 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[7].tableName, NewName: yyDollar[7].tableName} } - case 63: + case 64: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:552 + //line sql.y:560 { yyVAL.statement = &DDL{Action: CreateStr, NewName: yyDollar[3].tableName.ToViewName()} } - case 64: + case 65: yyDollar = yyS[yypt-6 : yypt+1] - //line sql.y:556 + //line sql.y:564 { yyVAL.statement = &DDL{Action: CreateStr, NewName: yyDollar[5].tableName.ToViewName()} } - case 65: + case 66: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:560 + //line sql.y:568 { yyVAL.statement = &DDL{Action: CreateVindexStr, VindexSpec: &VindexSpec{ Name: yyDollar[3].colIdent, @@ -3055,110 +3097,122 @@ yydefault: Params: yyDollar[5].vindexParams, }} } - case 66: + case 67: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:568 + //line sql.y:576 { yyVAL.statement = &DBDDL{Action: CreateStr, DBName: string(yyDollar[4].bytes)} } - case 67: + case 68: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:572 + //line sql.y:580 { yyVAL.statement = &DBDDL{Action: CreateStr, DBName: string(yyDollar[4].bytes)} } - case 68: + case 69: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:577 + //line sql.y:585 { yyVAL.colIdent = NewColIdent("") } - case 69: + case 70: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:581 + //line sql.y:589 { yyVAL.colIdent = yyDollar[2].colIdent } - case 70: + case 71: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:587 + //line sql.y:595 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 71: + case 72: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:592 + //line sql.y:600 { var v []VindexParam yyVAL.vindexParams = v } - case 72: + case 73: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:597 + //line sql.y:605 { yyVAL.vindexParams = yyDollar[2].vindexParams } - case 73: + case 74: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:603 + //line sql.y:611 { yyVAL.vindexParams = make([]VindexParam, 0, 4) yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[1].vindexParam) } - case 74: + case 75: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:608 + //line sql.y:616 { yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[3].vindexParam) } - case 75: + case 76: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:614 + //line sql.y:622 { yyVAL.vindexParam = VindexParam{Key: yyDollar[1].colIdent, Val: yyDollar[3].str} } - case 76: + case 77: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:620 + //line sql.y:628 { yyVAL.ddl = &DDL{Action: CreateStr, NewName: yyDollar[4].tableName} setDDL(yylex, yyVAL.ddl) } - case 77: + case 78: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:627 + //line sql.y:635 { yyVAL.TableSpec = yyDollar[2].TableSpec yyVAL.TableSpec.Options = yyDollar[4].str } - case 78: + case 79: + yyDollar = yyS[yypt-2 : yypt+1] + //line sql.y:642 + { + yyVAL.optLike = &OptLike{LikeTable: yyDollar[2].tableName} + } + case 80: + yyDollar = yyS[yypt-4 : yypt+1] + //line sql.y:646 + { + yyVAL.optLike = &OptLike{LikeTable: yyDollar[3].tableName} + } + case 81: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:634 + //line sql.y:652 { yyVAL.TableSpec = &TableSpec{} yyVAL.TableSpec.AddColumn(yyDollar[1].columnDefinition) } - case 79: + case 82: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:639 + //line sql.y:657 { yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition) } - case 80: + case 83: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:643 + //line sql.y:661 { yyVAL.TableSpec.AddIndex(yyDollar[3].indexDefinition) } - case 81: + case 84: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:647 + //line sql.y:665 { yyVAL.TableSpec.AddConstraint(yyDollar[3].constraintDefinition) } - case 82: + case 85: yyDollar = yyS[yypt-8 : yypt+1] - //line sql.y:653 + //line sql.y:671 { yyDollar[2].columnType.NotNull = yyDollar[3].boolVal yyDollar[2].columnType.Default = yyDollar[4].optVal @@ -3168,734 +3222,734 @@ yydefault: yyDollar[2].columnType.Comment = yyDollar[8].optVal yyVAL.columnDefinition = &ColumnDefinition{Name: NewColIdent(string(yyDollar[1].bytes)), Type: yyDollar[2].columnType} } - case 83: + case 86: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:664 + //line sql.y:682 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Unsigned = yyDollar[2].boolVal yyVAL.columnType.Zerofill = yyDollar[3].boolVal } - case 87: + case 90: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:675 + //line sql.y:693 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Length = yyDollar[2].optVal } - case 88: + case 91: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:680 + //line sql.y:698 { yyVAL.columnType = yyDollar[1].columnType } - case 89: + case 92: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:686 + //line sql.y:704 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 90: + case 93: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:690 + //line sql.y:708 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 91: + case 94: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:694 + //line sql.y:712 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 92: + case 95: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:698 + //line sql.y:716 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 93: + case 96: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:702 + //line sql.y:720 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 94: + case 97: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:706 + //line sql.y:724 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 95: + case 98: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:710 + //line sql.y:728 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 96: + case 99: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:716 + //line sql.y:734 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 97: + case 100: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:722 + //line sql.y:740 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 98: + case 101: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:728 + //line sql.y:746 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 99: + case 102: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:734 + //line sql.y:752 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 100: + case 103: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:740 + //line sql.y:758 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 101: + case 104: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:748 + //line sql.y:766 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 102: + case 105: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:752 + //line sql.y:770 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 103: + case 106: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:756 + //line sql.y:774 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 104: + case 107: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:760 + //line sql.y:778 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 105: + case 108: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:764 + //line sql.y:782 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 106: + case 109: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:770 + //line sql.y:788 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } - case 107: + case 110: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:774 + //line sql.y:792 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Collate: yyDollar[4].str} } - case 108: + case 111: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:778 + //line sql.y:796 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 109: + case 112: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:782 + //line sql.y:800 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 110: + case 113: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:786 + //line sql.y:804 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 111: + case 114: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:790 + //line sql.y:808 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 112: + case 115: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:794 + //line sql.y:812 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 113: + case 116: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:798 + //line sql.y:816 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str} } - case 114: + case 117: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:802 + //line sql.y:820 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 115: + case 118: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:806 + //line sql.y:824 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 116: + case 119: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:810 + //line sql.y:828 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 117: + case 120: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:814 + //line sql.y:832 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 118: + case 121: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:818 + //line sql.y:836 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 119: + case 122: yyDollar = yyS[yypt-6 : yypt+1] - //line sql.y:822 + //line sql.y:840 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } - case 120: + case 123: yyDollar = yyS[yypt-6 : yypt+1] - //line sql.y:827 + //line sql.y:845 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str} } - case 121: + case 124: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:833 + //line sql.y:851 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 122: + case 125: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:837 + //line sql.y:855 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 123: + case 126: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:841 + //line sql.y:859 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 124: + case 127: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:845 + //line sql.y:863 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 125: + case 128: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:849 + //line sql.y:867 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 126: + case 129: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:853 + //line sql.y:871 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 127: + case 130: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:857 + //line sql.y:875 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 128: + case 131: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:861 + //line sql.y:879 { yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)} } - case 129: + case 132: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:867 + //line sql.y:885 { yyVAL.strs = make([]string, 0, 4) yyVAL.strs = append(yyVAL.strs, "'"+string(yyDollar[1].bytes)+"'") } - case 130: + case 133: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:872 + //line sql.y:890 { yyVAL.strs = append(yyDollar[1].strs, "'"+string(yyDollar[3].bytes)+"'") } - case 131: + case 134: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:877 + //line sql.y:895 { yyVAL.optVal = nil } - case 132: + case 135: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:881 + //line sql.y:899 { yyVAL.optVal = NewIntVal(yyDollar[2].bytes) } - case 133: + case 136: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:886 + //line sql.y:904 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 134: + case 137: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:890 + //line sql.y:908 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), Scale: NewIntVal(yyDollar[4].bytes), } } - case 135: + case 138: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:898 + //line sql.y:916 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 136: + case 139: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:902 + //line sql.y:920 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), } } - case 137: + case 140: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:908 + //line sql.y:926 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: NewIntVal(yyDollar[2].bytes), Scale: NewIntVal(yyDollar[4].bytes), } } - case 138: + case 141: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:916 + //line sql.y:934 { yyVAL.boolVal = BoolVal(false) } - case 139: + case 142: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:920 + //line sql.y:938 { yyVAL.boolVal = BoolVal(true) } - case 140: + case 143: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:925 + //line sql.y:943 { yyVAL.boolVal = BoolVal(false) } - case 141: + case 144: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:929 + //line sql.y:947 { yyVAL.boolVal = BoolVal(true) } - case 142: + case 145: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:935 + //line sql.y:953 { yyVAL.boolVal = BoolVal(false) } - case 143: + case 146: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:939 + //line sql.y:957 { yyVAL.boolVal = BoolVal(false) } - case 144: + case 147: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:943 + //line sql.y:961 { yyVAL.boolVal = BoolVal(true) } - case 145: + case 148: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:948 + //line sql.y:966 { yyVAL.optVal = nil } - case 146: + case 149: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:952 + //line sql.y:970 { yyVAL.optVal = NewStrVal(yyDollar[2].bytes) } - case 147: + case 150: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:956 + //line sql.y:974 { yyVAL.optVal = NewIntVal(yyDollar[2].bytes) } - case 148: + case 151: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:960 + //line sql.y:978 { yyVAL.optVal = NewFloatVal(yyDollar[2].bytes) } - case 149: + case 152: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:964 + //line sql.y:982 { yyVAL.optVal = NewValArg(yyDollar[2].bytes) } - case 150: + case 153: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:968 + //line sql.y:986 { yyVAL.optVal = NewValArg(yyDollar[2].bytes) } - case 151: + case 154: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:972 + //line sql.y:990 { yyVAL.optVal = NewBitVal(yyDollar[2].bytes) } - case 152: + case 155: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:977 + //line sql.y:995 { yyVAL.optVal = nil } - case 153: + case 156: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:981 + //line sql.y:999 { yyVAL.optVal = NewValArg(yyDollar[3].bytes) } - case 154: + case 157: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:986 + //line sql.y:1004 { yyVAL.boolVal = BoolVal(false) } - case 155: + case 158: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:990 + //line sql.y:1008 { yyVAL.boolVal = BoolVal(true) } - case 156: + case 159: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:995 + //line sql.y:1013 { yyVAL.str = "" } - case 157: + case 160: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:999 + //line sql.y:1017 { yyVAL.str = string(yyDollar[3].bytes) } - case 158: + case 161: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1003 + //line sql.y:1021 { yyVAL.str = string(yyDollar[3].bytes) } - case 159: + case 162: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1008 + //line sql.y:1026 { yyVAL.str = "" } - case 160: + case 163: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1012 + //line sql.y:1030 { yyVAL.str = string(yyDollar[2].bytes) } - case 161: + case 164: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1016 + //line sql.y:1034 { yyVAL.str = string(yyDollar[2].bytes) } - case 162: + case 165: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1021 + //line sql.y:1039 { yyVAL.colKeyOpt = colKeyNone } - case 163: + case 166: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1025 + //line sql.y:1043 { yyVAL.colKeyOpt = colKeyPrimary } - case 164: + case 167: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1029 + //line sql.y:1047 { yyVAL.colKeyOpt = colKey } - case 165: + case 168: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1033 + //line sql.y:1051 { yyVAL.colKeyOpt = colKeyUniqueKey } - case 166: + case 169: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1037 + //line sql.y:1055 { yyVAL.colKeyOpt = colKeyUnique } - case 167: + case 170: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1042 + //line sql.y:1060 { yyVAL.optVal = nil } - case 168: + case 171: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1046 + //line sql.y:1064 { yyVAL.optVal = NewStrVal(yyDollar[2].bytes) } - case 169: + case 172: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:1052 + //line sql.y:1070 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns, Options: yyDollar[5].indexOptions} } - case 170: + case 173: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1056 + //line sql.y:1074 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns} } - case 171: + case 174: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1062 + //line sql.y:1080 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } - case 172: + case 175: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1066 + //line sql.y:1084 { yyVAL.indexOptions = append(yyVAL.indexOptions, yyDollar[2].indexOption) } - case 173: + case 176: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1072 + //line sql.y:1090 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Using: string(yyDollar[2].bytes)} } - case 174: + case 177: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1076 + //line sql.y:1094 { // should not be string yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewIntVal(yyDollar[3].bytes)} } - case 175: + case 178: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1081 + //line sql.y:1099 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewStrVal(yyDollar[2].bytes)} } - case 176: + case 179: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1087 + //line sql.y:1105 { yyVAL.str = "" } - case 177: + case 180: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1091 + //line sql.y:1109 { yyVAL.str = string(yyDollar[1].bytes) } - case 178: + case 181: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1097 + //line sql.y:1115 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} } - case 179: + case 182: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1101 + //line sql.y:1119 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(string(yyDollar[3].bytes)), Spatial: true, Unique: false} } - case 180: + case 183: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1105 + //line sql.y:1123 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(string(yyDollar[3].bytes)), Unique: true} } - case 181: + case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1109 + //line sql.y:1127 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes), Name: NewColIdent(string(yyDollar[2].bytes)), Unique: true} } - case 182: + case 185: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1113 + //line sql.y:1131 { yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(string(yyDollar[2].bytes)), Unique: false} } - case 183: + case 186: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1119 + //line sql.y:1137 { yyVAL.str = string(yyDollar[1].bytes) } - case 184: + case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1123 + //line sql.y:1141 { yyVAL.str = string(yyDollar[1].bytes) } - case 185: + case 188: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1129 + //line sql.y:1147 { yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} } - case 186: + case 189: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1133 + //line sql.y:1151 { yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) } - case 187: + case 190: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1139 + //line sql.y:1157 { yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].optVal} } - case 188: + case 191: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1145 + //line sql.y:1163 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].bytes), Details: yyDollar[3].constraintInfo} } - case 189: + case 192: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1149 + //line sql.y:1167 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } - case 190: + case 193: yyDollar = yyS[yypt-10 : yypt+1] - //line sql.y:1156 + //line sql.y:1174 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns} } - case 191: + case 194: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1161 + //line sql.y:1179 { yyVAL.str = "" } - case 192: + case 195: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1165 + //line sql.y:1183 { yyVAL.str = " " + string(yyDollar[1].str) } - case 193: + case 196: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1169 + //line sql.y:1187 { yyVAL.str = string(yyDollar[1].str) + ", " + string(yyDollar[3].str) } - case 194: + case 197: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1177 + //line sql.y:1195 { yyVAL.str = yyDollar[1].str } - case 195: + case 198: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1181 + //line sql.y:1199 { yyVAL.str = yyDollar[1].str + " " + yyDollar[2].str } - case 196: + case 199: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1185 + //line sql.y:1203 { yyVAL.str = yyDollar[1].str + "=" + yyDollar[3].str } - case 197: + case 200: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1191 + //line sql.y:1209 { yyVAL.str = yyDollar[1].colIdent.String() } - case 198: + case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1195 + //line sql.y:1213 { yyVAL.str = "'" + string(yyDollar[1].bytes) + "'" } - case 199: + case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1199 + //line sql.y:1217 { yyVAL.str = string(yyDollar[1].bytes) } - case 200: + case 203: yyDollar = yyS[yypt-6 : yypt+1] - //line sql.y:1205 + //line sql.y:1223 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} } - case 201: + case 204: yyDollar = yyS[yypt-7 : yypt+1] - //line sql.y:1209 + //line sql.y:1227 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} } - case 202: + case 205: yyDollar = yyS[yypt-7 : yypt+1] - //line sql.y:1213 + //line sql.y:1231 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} } - case 203: + case 206: yyDollar = yyS[yypt-12 : yypt+1] - //line sql.y:1217 + //line sql.y:1235 { yyVAL.statement = &DDL{ Action: AddColVindexStr, @@ -3908,9 +3962,9 @@ yydefault: VindexCols: yyDollar[9].columns, } } - case 204: + case 207: yyDollar = yyS[yypt-7 : yypt+1] - //line sql.y:1230 + //line sql.y:1248 { yyVAL.statement = &DDL{ Action: DropColVindexStr, @@ -3920,71 +3974,71 @@ yydefault: }, } } - case 205: + case 208: yyDollar = yyS[yypt-7 : yypt+1] - //line sql.y:1240 + //line sql.y:1258 { // Change this to a rename statement yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[4].tableName, NewName: yyDollar[7].tableName} } - case 206: + case 209: yyDollar = yyS[yypt-7 : yypt+1] - //line sql.y:1245 + //line sql.y:1263 { // Rename an index can just be an alter yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName} } - case 207: + case 210: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1250 + //line sql.y:1268 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName.ToViewName(), NewName: yyDollar[3].tableName.ToViewName()} } - case 208: + case 211: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:1254 + //line sql.y:1272 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, PartitionSpec: yyDollar[5].partSpec} } - case 220: + case 223: yyDollar = yyS[yypt-7 : yypt+1] - //line sql.y:1273 + //line sql.y:1291 { yyVAL.partSpec = &PartitionSpec{Action: ReorganizeStr, Name: yyDollar[3].colIdent, Definitions: yyDollar[6].partDefs} } - case 221: + case 224: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1279 + //line sql.y:1297 { yyVAL.partDefs = []*PartitionDefinition{yyDollar[1].partDef} } - case 222: + case 225: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1283 + //line sql.y:1301 { yyVAL.partDefs = append(yyDollar[1].partDefs, yyDollar[3].partDef) } - case 223: + case 226: yyDollar = yyS[yypt-8 : yypt+1] - //line sql.y:1289 + //line sql.y:1307 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].expr} } - case 224: + case 227: yyDollar = yyS[yypt-8 : yypt+1] - //line sql.y:1293 + //line sql.y:1311 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true} } - case 225: + case 228: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:1299 + //line sql.y:1317 { yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[3].tableName, NewName: yyDollar[5].tableName} } - case 226: + case 229: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1305 + //line sql.y:1323 { var exists bool if yyDollar[3].byt != 0 { @@ -3992,16 +4046,16 @@ yydefault: } yyVAL.statement = &DDL{Action: DropStr, Table: yyDollar[4].tableName, IfExists: exists} } - case 227: + case 230: yyDollar = yyS[yypt-6 : yypt+1] - //line sql.y:1313 + //line sql.y:1331 { // Change this to an alter statement yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[5].tableName, NewName: yyDollar[5].tableName} } - case 228: + case 231: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:1318 + //line sql.y:1336 { var exists bool if yyDollar[3].byt != 0 { @@ -4009,130 +4063,130 @@ yydefault: } yyVAL.statement = &DDL{Action: DropStr, Table: yyDollar[4].tableName.ToViewName(), IfExists: exists} } - case 229: + case 232: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1326 + //line sql.y:1344 { yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].bytes)} } - case 230: + case 233: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1330 + //line sql.y:1348 { yyVAL.statement = &DBDDL{Action: DropStr, DBName: string(yyDollar[4].bytes)} } - case 231: + case 234: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1336 + //line sql.y:1354 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[3].tableName} } - case 232: + case 235: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1340 + //line sql.y:1358 { yyVAL.statement = &DDL{Action: TruncateStr, Table: yyDollar[2].tableName} } - case 233: + case 236: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1345 + //line sql.y:1363 { yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName, NewName: yyDollar[3].tableName} } - case 234: + case 237: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1351 + //line sql.y:1369 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 235: + case 238: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1355 + //line sql.y:1373 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 236: + case 239: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1359 + //line sql.y:1377 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 237: + case 240: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1364 + //line sql.y:1382 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 238: + case 241: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1368 + //line sql.y:1386 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 239: + case 242: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1372 + //line sql.y:1390 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 240: + case 243: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1376 + //line sql.y:1394 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 241: + case 244: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1380 + //line sql.y:1398 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes)} } - case 242: + case 245: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1384 + //line sql.y:1402 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 243: + case 246: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1388 + //line sql.y:1406 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 244: + case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1392 + //line sql.y:1410 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 245: + case 248: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1396 + //line sql.y:1414 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 246: + case 249: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1400 + //line sql.y:1418 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } - case 247: + case 250: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1404 + //line sql.y:1422 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 248: + case 251: yyDollar = yyS[yypt-7 : yypt+1] - //line sql.y:1408 + //line sql.y:1426 { showTablesOpt := &ShowTablesOpt{Full: yyDollar[2].str, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter} yyVAL.statement = &Show{Type: string(yyDollar[3].bytes), ShowTablesOpt: showTablesOpt, OnTable: yyDollar[5].tableName} } - case 249: + case 252: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:1413 + //line sql.y:1431 { // this is ugly, but I couldn't find a better way for now if yyDollar[3].str == "processlist" { @@ -4142,616 +4196,616 @@ yydefault: yyVAL.statement = &Show{Type: yyDollar[3].str, ShowTablesOpt: showTablesOpt} } } - case 250: + case 253: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1423 + //line sql.y:1441 { yyVAL.statement = &Show{Scope: yyDollar[2].str, Type: string(yyDollar[3].bytes)} } - case 251: + case 254: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1427 + //line sql.y:1445 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 252: + case 255: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1431 + //line sql.y:1449 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 253: + case 256: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1435 + //line sql.y:1453 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), ShowCollationFilterOpt: &yyDollar[4].expr} } - case 254: + case 257: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1439 + //line sql.y:1457 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes), OnTable: yyDollar[4].tableName} } - case 255: + case 258: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1443 + //line sql.y:1461 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 256: + case 259: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1447 + //line sql.y:1465 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 257: + case 260: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1451 + //line sql.y:1469 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 258: + case 261: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1455 + //line sql.y:1473 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 259: + case 262: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1459 + //line sql.y:1477 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 260: + case 263: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1469 + //line sql.y:1487 { yyVAL.statement = &Show{Type: string(yyDollar[2].bytes)} } - case 261: + case 264: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1475 + //line sql.y:1493 { yyVAL.str = string(yyDollar[1].bytes) } - case 262: + case 265: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1479 + //line sql.y:1497 { yyVAL.str = string(yyDollar[1].bytes) } - case 263: + case 266: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1485 + //line sql.y:1503 { yyVAL.str = "" } - case 264: + case 267: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1489 + //line sql.y:1507 { yyVAL.str = "full " } - case 265: + case 268: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1495 + //line sql.y:1513 { yyVAL.str = "" } - case 266: + case 269: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1499 + //line sql.y:1517 { yyVAL.str = yyDollar[2].tableIdent.v } - case 267: + case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1503 + //line sql.y:1521 { yyVAL.str = yyDollar[2].tableIdent.v } - case 268: + case 271: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1509 + //line sql.y:1527 { yyVAL.showFilter = nil } - case 269: + case 272: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1513 + //line sql.y:1531 { yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)} } - case 270: + case 273: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1517 + //line sql.y:1535 { yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } - case 271: + case 274: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1523 + //line sql.y:1541 { yyVAL.str = "" } - case 272: + case 275: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1527 + //line sql.y:1545 { yyVAL.str = SessionStr } - case 273: + case 276: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1531 + //line sql.y:1549 { yyVAL.str = GlobalStr } - case 274: + case 277: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1537 + //line sql.y:1555 { yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } - case 275: + case 278: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1541 + //line sql.y:1559 { yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } - case 276: + case 279: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1547 + //line sql.y:1565 { yyVAL.statement = &Begin{} } - case 277: + case 280: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1551 + //line sql.y:1569 { yyVAL.statement = &Begin{} } - case 278: + case 281: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1557 + //line sql.y:1575 { yyVAL.statement = &Commit{} } - case 279: + case 282: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1563 + //line sql.y:1581 { yyVAL.statement = &Rollback{} } - case 280: + case 283: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1569 + //line sql.y:1587 { yyVAL.statement = &OtherRead{} } - case 281: + case 284: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1573 + //line sql.y:1591 { yyVAL.statement = &OtherRead{} } - case 282: + case 285: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1577 + //line sql.y:1595 { yyVAL.statement = &OtherRead{} } - case 283: + case 286: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1581 + //line sql.y:1599 { yyVAL.statement = &OtherAdmin{} } - case 284: + case 287: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1585 + //line sql.y:1603 { yyVAL.statement = &OtherAdmin{} } - case 285: + case 288: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1589 + //line sql.y:1607 { yyVAL.statement = &OtherAdmin{} } - case 286: + case 289: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1593 + //line sql.y:1611 { yyVAL.statement = &OtherAdmin{} } - case 287: + case 290: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1598 + //line sql.y:1616 { setAllowComments(yylex, true) } - case 288: + case 291: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1602 + //line sql.y:1620 { yyVAL.bytes2 = yyDollar[2].bytes2 setAllowComments(yylex, false) } - case 289: + case 292: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1608 + //line sql.y:1626 { yyVAL.bytes2 = nil } - case 290: + case 293: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1612 + //line sql.y:1630 { yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes) } - case 291: + case 294: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1618 + //line sql.y:1636 { yyVAL.str = UnionStr } - case 292: + case 295: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1622 + //line sql.y:1640 { yyVAL.str = UnionAllStr } - case 293: + case 296: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1626 + //line sql.y:1644 { yyVAL.str = UnionDistinctStr } - case 294: + case 297: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1631 + //line sql.y:1649 { yyVAL.str = "" } - case 295: + case 298: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1635 + //line sql.y:1653 { yyVAL.str = SQLNoCacheStr } - case 296: + case 299: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1639 + //line sql.y:1657 { yyVAL.str = SQLCacheStr } - case 297: + case 300: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1644 + //line sql.y:1662 { yyVAL.str = "" } - case 298: + case 301: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1648 + //line sql.y:1666 { yyVAL.str = DistinctStr } - case 299: + case 302: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1653 + //line sql.y:1671 { yyVAL.str = "" } - case 300: + case 303: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1657 + //line sql.y:1675 { yyVAL.str = StraightJoinHint } - case 301: + case 304: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1662 + //line sql.y:1680 { yyVAL.selectExprs = nil } - case 302: + case 305: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1666 + //line sql.y:1684 { yyVAL.selectExprs = yyDollar[1].selectExprs } - case 303: + case 306: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1672 + //line sql.y:1690 { yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } - case 304: + case 307: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1676 + //line sql.y:1694 { yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) } - case 305: + case 308: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1682 + //line sql.y:1700 { yyVAL.selectExpr = &StarExpr{} } - case 306: + case 309: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1686 + //line sql.y:1704 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 307: + case 310: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1690 + //line sql.y:1708 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 308: + case 311: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:1694 + //line sql.y:1712 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 309: + case 312: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1699 + //line sql.y:1717 { yyVAL.colIdent = ColIdent{} } - case 310: + case 313: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1703 + //line sql.y:1721 { yyVAL.colIdent = yyDollar[1].colIdent } - case 311: + case 314: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1707 + //line sql.y:1725 { yyVAL.colIdent = yyDollar[2].colIdent } - case 313: + case 316: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1714 + //line sql.y:1732 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 314: + case 317: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1719 + //line sql.y:1737 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } - case 315: + case 318: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1723 + //line sql.y:1741 { yyVAL.tableExprs = yyDollar[2].tableExprs } - case 316: + case 319: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1729 + //line sql.y:1747 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 317: + case 320: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1733 + //line sql.y:1751 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 320: + case 323: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1743 + //line sql.y:1761 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 321: + case 324: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1747 + //line sql.y:1765 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent} } - case 322: + case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1751 + //line sql.y:1769 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 323: + case 326: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1757 + //line sql.y:1775 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 324: + case 327: yyDollar = yyS[yypt-7 : yypt+1] - //line sql.y:1761 + //line sql.y:1779 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } - case 325: + case 328: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1767 + //line sql.y:1785 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 326: + case 329: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1771 + //line sql.y:1789 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 327: + case 330: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1777 + //line sql.y:1795 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } - case 328: + case 331: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1781 + //line sql.y:1799 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } - case 329: + case 332: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1794 + //line sql.y:1812 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 330: + case 333: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1798 + //line sql.y:1816 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 331: + case 334: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1802 + //line sql.y:1820 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } - case 332: + case 335: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1806 + //line sql.y:1824 { yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr} } - case 333: + case 336: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1812 + //line sql.y:1830 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 334: + case 337: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:1814 + //line sql.y:1832 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } - case 335: + case 338: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1818 + //line sql.y:1836 { yyVAL.joinCondition = JoinCondition{} } - case 336: + case 339: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1820 + //line sql.y:1838 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 337: + case 340: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1824 + //line sql.y:1842 { yyVAL.joinCondition = JoinCondition{} } - case 338: + case 341: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1826 + //line sql.y:1844 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 339: + case 342: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1829 + //line sql.y:1847 { yyVAL.empty = struct{}{} } - case 340: + case 343: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1831 + //line sql.y:1849 { yyVAL.empty = struct{}{} } - case 341: + case 344: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1834 + //line sql.y:1852 { yyVAL.tableIdent = NewTableIdent("") } - case 342: + case 345: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1838 + //line sql.y:1856 { yyVAL.tableIdent = yyDollar[1].tableIdent } - case 343: + case 346: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1842 + //line sql.y:1860 { yyVAL.tableIdent = yyDollar[2].tableIdent } - case 345: + case 348: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1849 + //line sql.y:1867 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 346: + case 349: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1855 + //line sql.y:1873 { yyVAL.str = JoinStr } - case 347: + case 350: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1859 + //line sql.y:1877 { yyVAL.str = JoinStr } - case 348: + case 351: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1863 + //line sql.y:1881 { yyVAL.str = JoinStr } - case 349: + case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1869 + //line sql.y:1887 { yyVAL.str = StraightJoinStr } - case 350: + case 353: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1875 + //line sql.y:1893 { yyVAL.str = LeftJoinStr } - case 351: + case 354: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1879 + //line sql.y:1897 { yyVAL.str = LeftJoinStr } - case 352: + case 355: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1883 + //line sql.y:1901 { yyVAL.str = RightJoinStr } - case 353: + case 356: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1887 + //line sql.y:1905 { yyVAL.str = RightJoinStr } - case 354: + case 357: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1893 + //line sql.y:1911 { yyVAL.str = NaturalJoinStr } - case 355: + case 358: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1897 + //line sql.y:1915 { if yyDollar[2].str == LeftJoinStr { yyVAL.str = NaturalLeftJoinStr @@ -4759,459 +4813,459 @@ yydefault: yyVAL.str = NaturalRightJoinStr } } - case 356: + case 359: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1907 + //line sql.y:1925 { yyVAL.tableName = yyDollar[2].tableName } - case 357: + case 360: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1911 + //line sql.y:1929 { yyVAL.tableName = yyDollar[1].tableName } - case 358: + case 361: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1917 + //line sql.y:1935 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 359: + case 362: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1921 + //line sql.y:1939 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 360: + case 363: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1926 + //line sql.y:1944 { yyVAL.indexHints = nil } - case 361: + case 364: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:1930 + //line sql.y:1948 { yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].columns} } - case 362: + case 365: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:1934 + //line sql.y:1952 { yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].columns} } - case 363: + case 366: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:1938 + //line sql.y:1956 { yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].columns} } - case 364: + case 367: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1943 + //line sql.y:1961 { yyVAL.expr = nil } - case 365: + case 368: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1947 + //line sql.y:1965 { yyVAL.expr = yyDollar[2].expr } - case 366: + case 369: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1953 + //line sql.y:1971 { yyVAL.expr = yyDollar[1].expr } - case 367: + case 370: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1957 + //line sql.y:1975 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 368: + case 371: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1961 + //line sql.y:1979 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 369: + case 372: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1965 + //line sql.y:1983 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 370: + case 373: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1969 + //line sql.y:1987 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].expr} } - case 371: + case 374: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1973 + //line sql.y:1991 { yyVAL.expr = yyDollar[1].expr } - case 372: + case 375: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:1977 + //line sql.y:1995 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 373: + case 376: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:1983 + //line sql.y:2001 { yyVAL.str = "" } - case 374: + case 377: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:1987 + //line sql.y:2005 { yyVAL.str = string(yyDollar[2].bytes) } - case 375: + case 378: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1993 + //line sql.y:2011 { yyVAL.boolVal = BoolVal(true) } - case 376: + case 379: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:1997 + //line sql.y:2015 { yyVAL.boolVal = BoolVal(false) } - case 377: + case 380: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2003 + //line sql.y:2021 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr} } - case 378: + case 381: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2007 + //line sql.y:2025 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple} } - case 379: + case 382: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:2011 + //line sql.y:2029 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple} } - case 380: + case 383: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:2015 + //line sql.y:2033 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } - case 381: + case 384: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:2019 + //line sql.y:2037 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } - case 382: + case 385: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2023 + //line sql.y:2041 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr} } - case 383: + case 386: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:2027 + //line sql.y:2045 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr} } - case 384: + case 387: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:2031 + //line sql.y:2049 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr} } - case 385: + case 388: yyDollar = yyS[yypt-6 : yypt+1] - //line sql.y:2035 + //line sql.y:2053 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr} } - case 386: + case 389: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2039 + //line sql.y:2057 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } - case 387: + case 390: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2045 + //line sql.y:2063 { yyVAL.str = IsNullStr } - case 388: + case 391: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2049 + //line sql.y:2067 { yyVAL.str = IsNotNullStr } - case 389: + case 392: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2053 + //line sql.y:2071 { yyVAL.str = IsTrueStr } - case 390: + case 393: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2057 + //line sql.y:2075 { yyVAL.str = IsNotTrueStr } - case 391: + case 394: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2061 + //line sql.y:2079 { yyVAL.str = IsFalseStr } - case 392: + case 395: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2065 + //line sql.y:2083 { yyVAL.str = IsNotFalseStr } - case 393: + case 396: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2071 + //line sql.y:2089 { yyVAL.str = EqualStr } - case 394: + case 397: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2075 + //line sql.y:2093 { yyVAL.str = LessThanStr } - case 395: + case 398: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2079 + //line sql.y:2097 { yyVAL.str = GreaterThanStr } - case 396: + case 399: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2083 + //line sql.y:2101 { yyVAL.str = LessEqualStr } - case 397: + case 400: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2087 + //line sql.y:2105 { yyVAL.str = GreaterEqualStr } - case 398: + case 401: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2091 + //line sql.y:2109 { yyVAL.str = NotEqualStr } - case 399: + case 402: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2095 + //line sql.y:2113 { yyVAL.str = NullSafeEqualStr } - case 400: + case 403: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:2100 + //line sql.y:2118 { yyVAL.expr = nil } - case 401: + case 404: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2104 + //line sql.y:2122 { yyVAL.expr = yyDollar[2].expr } - case 402: + case 405: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2110 + //line sql.y:2128 { yyVAL.colTuple = yyDollar[1].valTuple } - case 403: + case 406: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2114 + //line sql.y:2132 { yyVAL.colTuple = yyDollar[1].subquery } - case 404: + case 407: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2118 + //line sql.y:2136 { yyVAL.colTuple = ListArg(yyDollar[1].bytes) } - case 405: + case 408: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2124 + //line sql.y:2142 { yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } - case 406: + case 409: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2130 + //line sql.y:2148 { yyVAL.exprs = Exprs{yyDollar[1].expr} } - case 407: + case 410: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2134 + //line sql.y:2152 { yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } - case 408: + case 411: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2140 + //line sql.y:2158 { yyVAL.expr = yyDollar[1].expr } - case 409: + case 412: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2144 + //line sql.y:2162 { yyVAL.expr = yyDollar[1].boolVal } - case 410: + case 413: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2148 + //line sql.y:2166 { yyVAL.expr = yyDollar[1].colName } - case 411: + case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2152 + //line sql.y:2170 { yyVAL.expr = yyDollar[1].expr } - case 412: + case 415: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2156 + //line sql.y:2174 { yyVAL.expr = yyDollar[1].subquery } - case 413: + case 416: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2160 + //line sql.y:2178 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr} } - case 414: + case 417: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2164 + //line sql.y:2182 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr} } - case 415: + case 418: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2168 + //line sql.y:2186 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr} } - case 416: + case 419: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2172 + //line sql.y:2190 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr} } - case 417: + case 420: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2176 + //line sql.y:2194 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr} } - case 418: + case 421: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2180 + //line sql.y:2198 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr} } - case 419: + case 422: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2184 + //line sql.y:2202 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr} } - case 420: + case 423: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2188 + //line sql.y:2206 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr} } - case 421: + case 424: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2192 + //line sql.y:2210 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 422: + case 425: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2196 + //line sql.y:2214 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr} } - case 423: + case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2200 + //line sql.y:2218 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr} } - case 424: + case 427: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2204 + //line sql.y:2222 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr} } - case 425: + case 428: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2208 + //line sql.y:2226 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } - case 426: + case 429: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2212 + //line sql.y:2230 { yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } - case 427: + case 430: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2216 + //line sql.y:2234 { yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } - case 428: + case 431: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2220 + //line sql.y:2238 { yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr} } - case 429: + case 432: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2224 + //line sql.y:2242 { yyVAL.expr = &UnaryExpr{Operator: UBinaryStr, Expr: yyDollar[2].expr} } - case 430: + case 433: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2228 + //line sql.y:2246 { yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Str, Expr: yyDollar[2].expr} } - case 431: + case 434: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2232 + //line sql.y:2250 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { yyVAL.expr = num @@ -5219,9 +5273,9 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UPlusStr, Expr: yyDollar[2].expr} } } - case 432: + case 435: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2240 + //line sql.y:2258 { if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal { // Handle double negative @@ -5235,21 +5289,21 @@ yydefault: yyVAL.expr = &UnaryExpr{Operator: UMinusStr, Expr: yyDollar[2].expr} } } - case 433: + case 436: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2254 + //line sql.y:2272 { yyVAL.expr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].expr} } - case 434: + case 437: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2258 + //line sql.y:2276 { yyVAL.expr = &UnaryExpr{Operator: BangStr, Expr: yyDollar[2].expr} } - case 435: + case 438: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2262 + //line sql.y:2280 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -5257,431 +5311,431 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 440: + case 443: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:2280 + //line sql.y:2298 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } - case 441: + case 444: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:2284 + //line sql.y:2302 { yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } - case 442: + case 445: yyDollar = yyS[yypt-6 : yypt+1] - //line sql.y:2288 + //line sql.y:2306 { yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } - case 443: + case 446: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:2298 + //line sql.y:2316 { yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } - case 444: + case 447: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:2302 + //line sql.y:2320 { yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } - case 445: + case 448: yyDollar = yyS[yypt-6 : yypt+1] - //line sql.y:2306 + //line sql.y:2324 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 446: + case 449: yyDollar = yyS[yypt-6 : yypt+1] - //line sql.y:2310 + //line sql.y:2328 { yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } - case 447: + case 450: yyDollar = yyS[yypt-6 : yypt+1] - //line sql.y:2314 + //line sql.y:2332 { yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } - case 448: + case 451: yyDollar = yyS[yypt-6 : yypt+1] - //line sql.y:2318 + //line sql.y:2336 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: nil} } - case 449: + case 452: yyDollar = yyS[yypt-8 : yypt+1] - //line sql.y:2322 + //line sql.y:2340 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 450: + case 453: yyDollar = yyS[yypt-8 : yypt+1] - //line sql.y:2326 + //line sql.y:2344 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 451: + case 454: yyDollar = yyS[yypt-6 : yypt+1] - //line sql.y:2330 + //line sql.y:2348 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: nil} } - case 452: + case 455: yyDollar = yyS[yypt-8 : yypt+1] - //line sql.y:2334 + //line sql.y:2352 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 453: + case 456: yyDollar = yyS[yypt-8 : yypt+1] - //line sql.y:2338 + //line sql.y:2356 { yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } - case 454: + case 457: yyDollar = yyS[yypt-9 : yypt+1] - //line sql.y:2342 + //line sql.y:2360 { yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str} } - case 455: + case 458: yyDollar = yyS[yypt-7 : yypt+1] - //line sql.y:2346 + //line sql.y:2364 { yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str} } - case 456: + case 459: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:2350 + //line sql.y:2368 { yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } - case 457: + case 460: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:2354 + //line sql.y:2372 { yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } - case 458: + case 461: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2364 + //line sql.y:2382 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } - case 459: + case 462: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2368 + //line sql.y:2386 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } - case 460: + case 463: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2372 + //line sql.y:2390 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } - case 461: + case 464: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2376 + //line sql.y:2394 { yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } - case 462: + case 465: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2381 + //line sql.y:2399 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } - case 463: + case 466: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2386 + //line sql.y:2404 { yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } - case 464: + case 467: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2391 + //line sql.y:2409 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } - case 465: + case 468: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2396 + //line sql.y:2414 { yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } - case 468: + case 471: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:2410 + //line sql.y:2428 { yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } - case 469: + case 472: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:2414 + //line sql.y:2432 { yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } - case 470: + case 473: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:2418 + //line sql.y:2436 { yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } - case 471: + case 474: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:2422 + //line sql.y:2440 { yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } - case 472: + case 475: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:2428 + //line sql.y:2446 { yyVAL.str = "" } - case 473: + case 476: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2432 + //line sql.y:2450 { yyVAL.str = BooleanModeStr } - case 474: + case 477: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:2436 + //line sql.y:2454 { yyVAL.str = NaturalLanguageModeStr } - case 475: + case 478: yyDollar = yyS[yypt-7 : yypt+1] - //line sql.y:2440 + //line sql.y:2458 { yyVAL.str = NaturalLanguageModeWithQueryExpansionStr } - case 476: + case 479: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2444 + //line sql.y:2462 { yyVAL.str = QueryExpansionStr } - case 477: + case 480: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2450 + //line sql.y:2468 { yyVAL.str = string(yyDollar[1].bytes) } - case 478: + case 481: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2454 + //line sql.y:2472 { yyVAL.str = string(yyDollar[1].bytes) } - case 479: + case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2460 + //line sql.y:2478 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 480: + case 483: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2464 + //line sql.y:2482 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: yyDollar[3].str, Operator: CharacterSetStr} } - case 481: + case 484: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2468 + //line sql.y:2486 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal, Charset: string(yyDollar[3].bytes)} } - case 482: + case 485: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2472 + //line sql.y:2490 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 483: + case 486: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2476 + //line sql.y:2494 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 484: + case 487: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2480 + //line sql.y:2498 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } - case 485: + case 488: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2486 + //line sql.y:2504 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 486: + case 489: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2490 + //line sql.y:2508 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 487: + case 490: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2494 + //line sql.y:2512 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 488: + case 491: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2498 + //line sql.y:2516 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 489: + case 492: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2502 + //line sql.y:2520 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].optVal} } - case 490: + case 493: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2506 + //line sql.y:2524 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 491: + case 494: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2510 + //line sql.y:2528 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)} } - case 492: + case 495: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:2515 + //line sql.y:2533 { yyVAL.expr = nil } - case 493: + case 496: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2519 + //line sql.y:2537 { yyVAL.expr = yyDollar[1].expr } - case 494: + case 497: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:2524 + //line sql.y:2542 { yyVAL.str = string("") } - case 495: + case 498: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2528 + //line sql.y:2546 { yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'" } - case 496: + case 499: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2534 + //line sql.y:2552 { yyVAL.whens = []*When{yyDollar[1].when} } - case 497: + case 500: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2538 + //line sql.y:2556 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 498: + case 501: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:2544 + //line sql.y:2562 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 499: + case 502: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:2549 + //line sql.y:2567 { yyVAL.expr = nil } - case 500: + case 503: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2553 + //line sql.y:2571 { yyVAL.expr = yyDollar[2].expr } - case 501: + case 504: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2559 + //line sql.y:2577 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 502: + case 505: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2563 + //line sql.y:2581 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 503: + case 506: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:2567 + //line sql.y:2585 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 504: + case 507: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2573 + //line sql.y:2591 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 505: + case 508: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2577 + //line sql.y:2595 { yyVAL.expr = NewHexVal(yyDollar[1].bytes) } - case 506: + case 509: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2581 + //line sql.y:2599 { yyVAL.expr = NewBitVal(yyDollar[1].bytes) } - case 507: + case 510: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2585 + //line sql.y:2603 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 508: + case 511: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2589 + //line sql.y:2607 { yyVAL.expr = NewFloatVal(yyDollar[1].bytes) } - case 509: + case 512: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2593 + //line sql.y:2611 { yyVAL.expr = NewHexNum(yyDollar[1].bytes) } - case 510: + case 513: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2597 + //line sql.y:2615 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 511: + case 514: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2601 + //line sql.y:2619 { yyVAL.expr = &NullVal{} } - case 512: + case 515: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2607 + //line sql.y:2625 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -5690,239 +5744,239 @@ yydefault: } yyVAL.expr = NewIntVal([]byte("1")) } - case 513: + case 516: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2616 + //line sql.y:2634 { yyVAL.expr = NewIntVal(yyDollar[1].bytes) } - case 514: + case 517: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2620 + //line sql.y:2638 { yyVAL.expr = NewValArg(yyDollar[1].bytes) } - case 515: + case 518: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:2625 + //line sql.y:2643 { yyVAL.exprs = nil } - case 516: + case 519: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2629 + //line sql.y:2647 { yyVAL.exprs = yyDollar[3].exprs } - case 517: + case 520: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:2634 + //line sql.y:2652 { yyVAL.expr = nil } - case 518: + case 521: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2638 + //line sql.y:2656 { yyVAL.expr = yyDollar[2].expr } - case 519: + case 522: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:2643 + //line sql.y:2661 { yyVAL.orderBy = nil } - case 520: + case 523: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2647 + //line sql.y:2665 { yyVAL.orderBy = yyDollar[3].orderBy } - case 521: + case 524: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2653 + //line sql.y:2671 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 522: + case 525: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2657 + //line sql.y:2675 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 523: + case 526: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2663 + //line sql.y:2681 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str} } - case 524: + case 527: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:2668 + //line sql.y:2686 { yyVAL.str = AscScr } - case 525: + case 528: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2672 + //line sql.y:2690 { yyVAL.str = AscScr } - case 526: + case 529: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2676 + //line sql.y:2694 { yyVAL.str = DescScr } - case 527: + case 530: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:2681 + //line sql.y:2699 { yyVAL.limit = nil } - case 528: + case 531: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2685 + //line sql.y:2703 { yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } - case 529: + case 532: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:2689 + //line sql.y:2707 { yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } - case 530: + case 533: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:2693 + //line sql.y:2711 { yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } - case 531: + case 534: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:2698 + //line sql.y:2716 { yyVAL.str = "" } - case 532: + case 535: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2702 + //line sql.y:2720 { yyVAL.str = ForUpdateStr } - case 533: + case 536: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:2706 + //line sql.y:2724 { yyVAL.str = ShareModeStr } - case 534: + case 537: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2719 + //line sql.y:2737 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 535: + case 538: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2723 + //line sql.y:2741 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 536: + case 539: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2727 + //line sql.y:2745 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt} } - case 537: + case 540: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:2732 + //line sql.y:2750 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 538: + case 541: yyDollar = yyS[yypt-4 : yypt+1] - //line sql.y:2736 + //line sql.y:2754 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 539: + case 542: yyDollar = yyS[yypt-6 : yypt+1] - //line sql.y:2740 + //line sql.y:2758 { // Drop the redundant parenthesis. yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt} } - case 540: + case 543: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2747 + //line sql.y:2765 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 541: + case 544: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2751 + //line sql.y:2769 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 542: + case 545: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2755 + //line sql.y:2773 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 543: + case 546: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:2759 + //line sql.y:2777 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 544: + case 547: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:2764 + //line sql.y:2782 { yyVAL.updateExprs = nil } - case 545: + case 548: yyDollar = yyS[yypt-5 : yypt+1] - //line sql.y:2768 + //line sql.y:2786 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 546: + case 549: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2774 + //line sql.y:2792 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 547: + case 550: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2778 + //line sql.y:2796 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 548: + case 551: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2784 + //line sql.y:2802 { yyVAL.valTuple = yyDollar[1].valTuple } - case 549: + case 552: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2788 + //line sql.y:2806 { yyVAL.valTuple = ValTuple{} } - case 550: + case 553: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2794 + //line sql.y:2812 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 551: + case 554: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2800 + //line sql.y:2818 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = &ParenExpr{yyDollar[1].valTuple[0]} @@ -5930,306 +5984,306 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 552: + case 555: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2810 + //line sql.y:2828 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 553: + case 556: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2814 + //line sql.y:2832 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 554: + case 557: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2820 + //line sql.y:2838 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 555: + case 558: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2826 + //line sql.y:2844 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 556: + case 559: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2830 + //line sql.y:2848 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 557: + case 560: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2836 + //line sql.y:2854 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: NewStrVal([]byte("on"))} } - case 558: + case 561: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2840 + //line sql.y:2858 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Expr: yyDollar[3].expr} } - case 559: + case 562: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2844 + //line sql.y:2862 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Expr: yyDollar[2].expr} } - case 561: + case 564: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2851 + //line sql.y:2869 { yyVAL.bytes = []byte("charset") } - case 563: + case 566: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2858 + //line sql.y:2876 { yyVAL.expr = NewStrVal([]byte(yyDollar[1].colIdent.String())) } - case 564: + case 567: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2862 + //line sql.y:2880 { yyVAL.expr = NewStrVal(yyDollar[1].bytes) } - case 565: + case 568: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2866 + //line sql.y:2884 { yyVAL.expr = &Default{} } - case 568: + case 571: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:2875 + //line sql.y:2893 { yyVAL.byt = 0 } - case 569: + case 572: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2877 + //line sql.y:2895 { yyVAL.byt = 1 } - case 570: + case 573: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:2880 + //line sql.y:2898 { yyVAL.empty = struct{}{} } - case 571: + case 574: yyDollar = yyS[yypt-3 : yypt+1] - //line sql.y:2882 + //line sql.y:2900 { yyVAL.empty = struct{}{} } - case 572: + case 575: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:2885 + //line sql.y:2903 { yyVAL.str = "" } - case 573: - yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2887 - { - yyVAL.str = IgnoreStr - } - case 574: - yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2891 - { - yyVAL.empty = struct{}{} - } - case 575: - yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2893 - { - yyVAL.empty = struct{}{} - } case 576: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2895 + //line sql.y:2905 { - yyVAL.empty = struct{}{} + yyVAL.str = IgnoreStr } case 577: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2897 + //line sql.y:2909 { yyVAL.empty = struct{}{} } case 578: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2899 + //line sql.y:2911 { yyVAL.empty = struct{}{} } case 579: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2901 + //line sql.y:2913 { yyVAL.empty = struct{}{} } case 580: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2903 + //line sql.y:2915 { yyVAL.empty = struct{}{} } case 581: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2905 + //line sql.y:2917 { yyVAL.empty = struct{}{} } case 582: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2907 + //line sql.y:2919 { yyVAL.empty = struct{}{} } case 583: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2909 + //line sql.y:2921 { yyVAL.empty = struct{}{} } case 584: - yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:2912 + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2923 { yyVAL.empty = struct{}{} } case 585: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2914 + //line sql.y:2925 { yyVAL.empty = struct{}{} } case 586: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2916 + //line sql.y:2927 { yyVAL.empty = struct{}{} } case 587: - yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2920 + yyDollar = yyS[yypt-0 : yypt+1] + //line sql.y:2930 { yyVAL.empty = struct{}{} } case 588: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2922 + //line sql.y:2932 { yyVAL.empty = struct{}{} } case 589: - yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:2925 + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2934 { yyVAL.empty = struct{}{} } case 590: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2927 + //line sql.y:2938 { yyVAL.empty = struct{}{} } case 591: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2929 + //line sql.y:2940 { yyVAL.empty = struct{}{} } case 592: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:2932 + //line sql.y:2943 { - yyVAL.colIdent = ColIdent{} + yyVAL.empty = struct{}{} } case 593: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2945 + { + yyVAL.empty = struct{}{} + } + case 594: + yyDollar = yyS[yypt-1 : yypt+1] + //line sql.y:2947 + { + yyVAL.empty = struct{}{} + } + case 595: + yyDollar = yyS[yypt-0 : yypt+1] + //line sql.y:2950 + { + yyVAL.colIdent = ColIdent{} + } + case 596: yyDollar = yyS[yypt-2 : yypt+1] - //line sql.y:2934 + //line sql.y:2952 { yyVAL.colIdent = yyDollar[2].colIdent } - case 594: + case 597: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2938 + //line sql.y:2956 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 595: + case 598: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2942 + //line sql.y:2960 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 597: + case 600: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2949 + //line sql.y:2967 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes)) } - case 598: + case 601: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2955 + //line sql.y:2973 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 599: + case 602: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2959 + //line sql.y:2977 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 601: + case 604: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:2966 + //line sql.y:2984 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes)) } - case 797: + case 800: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:3187 + //line sql.y:3205 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 798: + case 801: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:3196 + //line sql.y:3214 { decNesting(yylex) } - case 799: + case 802: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:3201 + //line sql.y:3219 { forceEOF(yylex) } - case 800: + case 803: yyDollar = yyS[yypt-0 : yypt+1] - //line sql.y:3206 + //line sql.y:3224 { forceEOF(yylex) } - case 801: + case 804: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:3210 + //line sql.y:3228 { forceEOF(yylex) } - case 802: + case 805: yyDollar = yyS[yypt-1 : yypt+1] - //line sql.y:3214 + //line sql.y:3232 { forceEOF(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index c6eeb28ebe1..a35f703680e 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -112,6 +112,7 @@ func forceEOF(yylex interface{}) { vindexParam VindexParam vindexParams []VindexParam showFilter *ShowFilter + optLike *OptLike } %token LEX_ERROR @@ -282,6 +283,7 @@ func forceEOF(yylex interface{}) { %type index_or_key %type equal_opt %type table_spec table_column_list +%type create_like %type table_option_list table_option table_opt_value %type index_info %type index_column @@ -543,6 +545,12 @@ create_statement: $1.TableSpec = $2 $$ = $1 } +| create_table_prefix create_like + { + // Create table [name] like [name] + $1.OptLike = $2 + $$ = $1 + } | CREATE constraint_opt INDEX ID using_opt ON table_name ddl_force_eof { // Change this to an alter statement @@ -629,6 +637,16 @@ table_spec: $$.Options = $4 } +create_like: + LIKE table_name + { + $$ = &OptLike{LikeTable: $2} + } +| '(' LIKE table_name ')' + { + $$ = &OptLike{LikeTable: $3} + } + table_column_list: column_definition { diff --git a/go/vt/vtexplain/vtexplain.go b/go/vt/vtexplain/vtexplain.go index bc9c27cc060..ad063ba346f 100644 --- a/go/vt/vtexplain/vtexplain.go +++ b/go/vt/vtexplain/vtexplain.go @@ -198,7 +198,7 @@ func parseSchema(sqlSchema string, opts *Options) ([]*sqlparser.DDL, error) { log.Infof("ignoring %s table statement", ddl.Action) continue } - if ddl.TableSpec == nil { + if ddl.TableSpec == nil && ddl.OptLike == nil { log.Errorf("invalid create table statement: %s", sql) continue } diff --git a/go/vt/vtexplain/vtexplain_vttablet.go b/go/vt/vtexplain/vtexplain_vttablet.go index dae8b3929fe..59d2b0696b2 100644 --- a/go/vt/vtexplain/vtexplain_vttablet.go +++ b/go/vt/vtexplain/vtexplain_vttablet.go @@ -395,8 +395,17 @@ func initTabletEnvironment(ddls []*sqlparser.DDL, opts *Options) error { Rows: [][]sqltypes.Value{showTableRows[i]}, } + if ddl.OptLike != nil { + likeTable := ddl.OptLike.LikeTable.Name.String() + if _, ok := schemaQueries["describe "+likeTable]; !ok { + return fmt.Errorf("check your schema, table[%s] doesnt exist", likeTable) + } + schemaQueries["show index from "+table] = schemaQueries["show index from "+likeTable] + schemaQueries["describe "+table] = schemaQueries["describe "+likeTable] + schemaQueries["select * from "+table+" where 1 != 1"] = schemaQueries["select * from "+likeTable+" where 1 != 1"] + continue + } pkColumns := make(map[string]bool) - indexRows := make([][]sqltypes.Value, 0, 4) for _, idx := range ddl.TableSpec.Indexes { for i, col := range idx.Columns { diff --git a/go/vt/vtexplain/vtexplain_vttablet_test.go b/go/vt/vtexplain/vtexplain_vttablet_test.go index c36a9ab6a34..06e1438cfbd 100644 --- a/go/vt/vtexplain/vtexplain_vttablet_test.go +++ b/go/vt/vtexplain/vtexplain_vttablet_test.go @@ -38,6 +38,10 @@ create table t2 ( create table t3 ( b bit(1) default B'0' ); + +create table t4 like t3; + +create table t5 (like t2); ` ddls, err := parseSchema(testSchema, &Options{StrictDDL: true}) @@ -86,4 +90,32 @@ create table t3 ( if t2.HasPrimary() || len(t2.PKColumns) != 0 { t.Errorf("expected !HasPrimary && t2.PKColumns == [] got %v", t2.PKColumns) } + + t5 := tables["t5"] + if t5 == nil { + t.Fatalf("table t5 wasn't parsed properly") + } + got, _ = json.Marshal(t5.Columns) + if wantCols != string(got) { + t.Errorf("expected %s got %s", wantCols, string(got)) + } + + if t5.HasPrimary() || len(t5.PKColumns) != 0 { + t.Errorf("expected !HasPrimary && t5.PKColumns == [] got %v", t5.PKColumns) + } +} + +func TestErrParseSchema(t *testing.T) { + testSchema := ` +create table t1 like t2; +` + expected := "check your schema, table[t2] doesnt exist" + ddl, err := parseSchema(testSchema, &Options{StrictDDL: true}) + if err != nil { + t.Fatalf("parseSchema: %v", err) + } + err = initTabletEnvironment(ddl, defaultTestOpts()) + if err.Error() != expected { + t.Errorf("want: %s, got %s", expected, err.Error()) + } }