Json key must be enclosed in double quotes (#24113)

Signed-off-by: cai.zhang <cai.zhang@zilliz.com>
This commit is contained in:
cai.zhang 2023-05-16 16:19:22 +08:00 committed by GitHub
parent 3ea4a39078
commit ccd685013a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 319 additions and 246 deletions

View File

@ -85,7 +85,7 @@ FloatingConstant:
Identifier: Nondigit (Nondigit | Digit)*;
StringLiteral: EncodingPrefix? '"' SCharSequence? '"';
JSONIdentifier: Identifier('[' ('"' SCharSequence '"' | '\'' SCharSequence '\'' | SCharSequence | IntegerConstant) ']')+;
JSONIdentifier: Identifier('[' (StringLiteral | DecimalConstant) ']')+;
fragment EncodingPrefix: 'u8' | 'u' | 'U' | 'L';
@ -95,7 +95,7 @@ fragment SChar: ~["\\\r\n] | EscapeSequence | '\\\n' | '\\\r\n';
fragment Nondigit: [a-zA-Z_];
fragment Digit: [0-9];
fragment BinaryConstant: '0' [bB] [0-1]+;
fragment DecimalConstant: NonzeroDigit Digit*;
fragment DecimalConstant: NonzeroDigit Digit* | '0';
fragment OctalConstant: '0' OctalDigit*;
fragment HexadecimalConstant: '0' [xX] HexadecimalDigitSequence;
fragment NonzeroDigit: [1-9];

File diff suppressed because one or more lines are too long

View File

@ -14,7 +14,7 @@ var _ = fmt.Printf
var _ = unicode.IsLetter
var serializedLexerAtn = []uint16{
3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 41, 482,
3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 41, 477,
8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7,
9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12,
4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4,
@ -44,199 +44,197 @@ var serializedLexerAtn = []uint16{
33, 271, 10, 33, 3, 34, 3, 34, 3, 34, 3, 34, 5, 34, 277, 10, 34, 3, 35,
3, 35, 5, 35, 281, 10, 35, 3, 36, 3, 36, 3, 36, 7, 36, 286, 10, 36, 12,
36, 14, 36, 289, 11, 36, 3, 37, 5, 37, 292, 10, 37, 3, 37, 3, 37, 5, 37,
296, 10, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3,
38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 5, 38, 312, 10, 38, 3, 38, 3, 38,
6, 38, 316, 10, 38, 13, 38, 14, 38, 317, 3, 39, 3, 39, 3, 39, 5, 39, 323,
10, 39, 3, 40, 6, 40, 326, 10, 40, 13, 40, 14, 40, 327, 3, 41, 3, 41, 3,
41, 3, 41, 3, 41, 3, 41, 3, 41, 5, 41, 337, 10, 41, 3, 42, 3, 42, 3, 43,
3, 43, 3, 44, 3, 44, 3, 44, 6, 44, 346, 10, 44, 13, 44, 14, 44, 347, 3,
45, 3, 45, 7, 45, 352, 10, 45, 12, 45, 14, 45, 355, 11, 45, 3, 46, 3, 46,
7, 46, 359, 10, 46, 12, 46, 14, 46, 362, 11, 46, 3, 47, 3, 47, 3, 47, 3,
47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51,
3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3,
52, 5, 52, 389, 10, 52, 3, 53, 3, 53, 5, 53, 393, 10, 53, 3, 53, 3, 53,
3, 53, 5, 53, 398, 10, 53, 3, 54, 3, 54, 3, 54, 3, 54, 5, 54, 404, 10,
54, 3, 54, 3, 54, 3, 55, 5, 55, 409, 10, 55, 3, 55, 3, 55, 3, 55, 3, 55,
3, 55, 5, 55, 416, 10, 55, 3, 56, 3, 56, 5, 56, 420, 10, 56, 3, 56, 3,
56, 3, 57, 6, 57, 425, 10, 57, 13, 57, 14, 57, 426, 3, 58, 5, 58, 430,
10, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 5, 58, 437, 10, 58, 3, 59, 6,
59, 440, 10, 59, 13, 59, 14, 59, 441, 3, 60, 3, 60, 5, 60, 446, 10, 60,
3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 5, 61, 455, 10, 61, 3,
61, 5, 61, 458, 10, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 5, 61, 465,
10, 61, 3, 62, 6, 62, 468, 10, 62, 13, 62, 14, 62, 469, 3, 62, 3, 62, 3,
63, 3, 63, 5, 63, 476, 10, 63, 3, 63, 5, 63, 479, 10, 63, 3, 63, 3, 63,
2, 2, 64, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11,
21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20,
39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29,
57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38,
75, 39, 77, 2, 79, 2, 81, 2, 83, 2, 85, 2, 87, 2, 89, 2, 91, 2, 93, 2,
95, 2, 97, 2, 99, 2, 101, 2, 103, 2, 105, 2, 107, 2, 109, 2, 111, 2, 113,
2, 115, 2, 117, 2, 119, 2, 121, 2, 123, 40, 125, 41, 3, 2, 17, 5, 2, 78,
78, 87, 87, 119, 119, 6, 2, 12, 12, 15, 15, 36, 36, 94, 94, 5, 2, 67, 92,
97, 97, 99, 124, 3, 2, 50, 59, 4, 2, 68, 68, 100, 100, 3, 2, 50, 51, 4,
2, 90, 90, 122, 122, 3, 2, 51, 59, 3, 2, 50, 57, 5, 2, 50, 59, 67, 72,
99, 104, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 4, 2, 82, 82, 114,
114, 12, 2, 36, 36, 41, 41, 65, 65, 94, 94, 99, 100, 104, 104, 112, 112,
116, 116, 118, 118, 120, 120, 4, 2, 11, 11, 34, 34, 2, 510, 2, 3, 3, 2,
2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2,
2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3,
2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27,
3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2,
35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2,
2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2,
2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2,
2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3,
2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73,
3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2,
3, 127, 3, 2, 2, 2, 5, 129, 3, 2, 2, 2, 7, 131, 3, 2, 2, 2, 9, 133, 3,
2, 2, 2, 11, 135, 3, 2, 2, 2, 13, 137, 3, 2, 2, 2, 15, 139, 3, 2, 2, 2,
17, 142, 3, 2, 2, 2, 19, 144, 3, 2, 2, 2, 21, 147, 3, 2, 2, 2, 23, 150,
3, 2, 2, 2, 25, 161, 3, 2, 2, 2, 27, 175, 3, 2, 2, 2, 29, 177, 3, 2, 2,
2, 31, 179, 3, 2, 2, 2, 33, 181, 3, 2, 2, 2, 35, 183, 3, 2, 2, 2, 37, 185,
3, 2, 2, 2, 39, 187, 3, 2, 2, 2, 41, 190, 3, 2, 2, 2, 43, 193, 3, 2, 2,
2, 45, 196, 3, 2, 2, 2, 47, 198, 3, 2, 2, 2, 49, 200, 3, 2, 2, 2, 51, 207,
3, 2, 2, 2, 53, 213, 3, 2, 2, 2, 55, 215, 3, 2, 2, 2, 57, 221, 3, 2, 2,
2, 59, 223, 3, 2, 2, 2, 61, 226, 3, 2, 2, 2, 63, 233, 3, 2, 2, 2, 65, 270,
3, 2, 2, 2, 67, 276, 3, 2, 2, 2, 69, 280, 3, 2, 2, 2, 71, 282, 3, 2, 2,
2, 73, 291, 3, 2, 2, 2, 75, 299, 3, 2, 2, 2, 77, 322, 3, 2, 2, 2, 79, 325,
3, 2, 2, 2, 81, 336, 3, 2, 2, 2, 83, 338, 3, 2, 2, 2, 85, 340, 3, 2, 2,
2, 87, 342, 3, 2, 2, 2, 89, 349, 3, 2, 2, 2, 91, 356, 3, 2, 2, 2, 93, 363,
3, 2, 2, 2, 95, 367, 3, 2, 2, 2, 97, 369, 3, 2, 2, 2, 99, 371, 3, 2, 2,
2, 101, 373, 3, 2, 2, 2, 103, 388, 3, 2, 2, 2, 105, 397, 3, 2, 2, 2, 107,
399, 3, 2, 2, 2, 109, 415, 3, 2, 2, 2, 111, 417, 3, 2, 2, 2, 113, 424,
3, 2, 2, 2, 115, 436, 3, 2, 2, 2, 117, 439, 3, 2, 2, 2, 119, 443, 3, 2,
2, 2, 121, 464, 3, 2, 2, 2, 123, 467, 3, 2, 2, 2, 125, 478, 3, 2, 2, 2,
127, 128, 7, 42, 2, 2, 128, 4, 3, 2, 2, 2, 129, 130, 7, 43, 2, 2, 130,
6, 3, 2, 2, 2, 131, 132, 7, 93, 2, 2, 132, 8, 3, 2, 2, 2, 133, 134, 7,
46, 2, 2, 134, 10, 3, 2, 2, 2, 135, 136, 7, 95, 2, 2, 136, 12, 3, 2, 2,
2, 137, 138, 7, 62, 2, 2, 138, 14, 3, 2, 2, 2, 139, 140, 7, 62, 2, 2, 140,
141, 7, 63, 2, 2, 141, 16, 3, 2, 2, 2, 142, 143, 7, 64, 2, 2, 143, 18,
3, 2, 2, 2, 144, 145, 7, 64, 2, 2, 145, 146, 7, 63, 2, 2, 146, 20, 3, 2,
2, 2, 147, 148, 7, 63, 2, 2, 148, 149, 7, 63, 2, 2, 149, 22, 3, 2, 2, 2,
150, 151, 7, 35, 2, 2, 151, 152, 7, 63, 2, 2, 152, 24, 3, 2, 2, 2, 153,
154, 7, 110, 2, 2, 154, 155, 7, 107, 2, 2, 155, 156, 7, 109, 2, 2, 156,
162, 7, 103, 2, 2, 157, 158, 7, 78, 2, 2, 158, 159, 7, 75, 2, 2, 159, 160,
7, 77, 2, 2, 160, 162, 7, 71, 2, 2, 161, 153, 3, 2, 2, 2, 161, 157, 3,
2, 2, 2, 162, 26, 3, 2, 2, 2, 163, 164, 7, 103, 2, 2, 164, 165, 7, 122,
2, 2, 165, 166, 7, 107, 2, 2, 166, 167, 7, 117, 2, 2, 167, 168, 7, 118,
2, 2, 168, 176, 7, 117, 2, 2, 169, 170, 7, 71, 2, 2, 170, 171, 7, 90, 2,
2, 171, 172, 7, 75, 2, 2, 172, 173, 7, 85, 2, 2, 173, 174, 7, 86, 2, 2,
174, 176, 7, 85, 2, 2, 175, 163, 3, 2, 2, 2, 175, 169, 3, 2, 2, 2, 176,
28, 3, 2, 2, 2, 177, 178, 7, 45, 2, 2, 178, 30, 3, 2, 2, 2, 179, 180, 7,
47, 2, 2, 180, 32, 3, 2, 2, 2, 181, 182, 7, 44, 2, 2, 182, 34, 3, 2, 2,
2, 183, 184, 7, 49, 2, 2, 184, 36, 3, 2, 2, 2, 185, 186, 7, 39, 2, 2, 186,
38, 3, 2, 2, 2, 187, 188, 7, 44, 2, 2, 188, 189, 7, 44, 2, 2, 189, 40,
3, 2, 2, 2, 190, 191, 7, 62, 2, 2, 191, 192, 7, 62, 2, 2, 192, 42, 3, 2,
2, 2, 193, 194, 7, 64, 2, 2, 194, 195, 7, 64, 2, 2, 195, 44, 3, 2, 2, 2,
196, 197, 7, 40, 2, 2, 197, 46, 3, 2, 2, 2, 198, 199, 7, 126, 2, 2, 199,
48, 3, 2, 2, 2, 200, 201, 7, 96, 2, 2, 201, 50, 3, 2, 2, 2, 202, 203, 7,
40, 2, 2, 203, 208, 7, 40, 2, 2, 204, 205, 7, 99, 2, 2, 205, 206, 7, 112,
2, 2, 206, 208, 7, 102, 2, 2, 207, 202, 3, 2, 2, 2, 207, 204, 3, 2, 2,
2, 208, 52, 3, 2, 2, 2, 209, 210, 7, 126, 2, 2, 210, 214, 7, 126, 2, 2,
211, 212, 7, 113, 2, 2, 212, 214, 7, 116, 2, 2, 213, 209, 3, 2, 2, 2, 213,
211, 3, 2, 2, 2, 214, 54, 3, 2, 2, 2, 215, 216, 7, 128, 2, 2, 216, 56,
3, 2, 2, 2, 217, 222, 7, 35, 2, 2, 218, 219, 7, 112, 2, 2, 219, 220, 7,
113, 2, 2, 220, 222, 7, 118, 2, 2, 221, 217, 3, 2, 2, 2, 221, 218, 3, 2,
2, 2, 222, 58, 3, 2, 2, 2, 223, 224, 7, 107, 2, 2, 224, 225, 7, 112, 2,
2, 225, 60, 3, 2, 2, 2, 226, 227, 7, 112, 2, 2, 227, 228, 7, 113, 2, 2,
228, 229, 7, 118, 2, 2, 229, 230, 7, 34, 2, 2, 230, 231, 7, 107, 2, 2,
231, 232, 7, 112, 2, 2, 232, 62, 3, 2, 2, 2, 233, 238, 7, 93, 2, 2, 234,
237, 5, 123, 62, 2, 235, 237, 5, 125, 63, 2, 236, 234, 3, 2, 2, 2, 236,
235, 3, 2, 2, 2, 237, 240, 3, 2, 2, 2, 238, 236, 3, 2, 2, 2, 238, 239,
3, 2, 2, 2, 239, 241, 3, 2, 2, 2, 240, 238, 3, 2, 2, 2, 241, 242, 7, 95,
2, 2, 242, 64, 3, 2, 2, 2, 243, 244, 7, 118, 2, 2, 244, 245, 7, 116, 2,
2, 245, 246, 7, 119, 2, 2, 246, 271, 7, 103, 2, 2, 247, 248, 7, 86, 2,
2, 248, 249, 7, 116, 2, 2, 249, 250, 7, 119, 2, 2, 250, 271, 7, 103, 2,
2, 251, 252, 7, 86, 2, 2, 252, 253, 7, 84, 2, 2, 253, 254, 7, 87, 2, 2,
254, 271, 7, 71, 2, 2, 255, 256, 7, 104, 2, 2, 256, 257, 7, 99, 2, 2, 257,
258, 7, 110, 2, 2, 258, 259, 7, 117, 2, 2, 259, 271, 7, 103, 2, 2, 260,
261, 7, 72, 2, 2, 261, 262, 7, 99, 2, 2, 262, 263, 7, 110, 2, 2, 263, 264,
7, 117, 2, 2, 264, 271, 7, 103, 2, 2, 265, 266, 7, 72, 2, 2, 266, 267,
7, 67, 2, 2, 267, 268, 7, 78, 2, 2, 268, 269, 7, 85, 2, 2, 269, 271, 7,
71, 2, 2, 270, 243, 3, 2, 2, 2, 270, 247, 3, 2, 2, 2, 270, 251, 3, 2, 2,
2, 270, 255, 3, 2, 2, 2, 270, 260, 3, 2, 2, 2, 270, 265, 3, 2, 2, 2, 271,
66, 3, 2, 2, 2, 272, 277, 5, 89, 45, 2, 273, 277, 5, 91, 46, 2, 274, 277,
5, 93, 47, 2, 275, 277, 5, 87, 44, 2, 276, 272, 3, 2, 2, 2, 276, 273, 3,
2, 2, 2, 276, 274, 3, 2, 2, 2, 276, 275, 3, 2, 2, 2, 277, 68, 3, 2, 2,
2, 278, 281, 5, 105, 53, 2, 279, 281, 5, 107, 54, 2, 280, 278, 3, 2, 2,
2, 280, 279, 3, 2, 2, 2, 281, 70, 3, 2, 2, 2, 282, 287, 5, 83, 42, 2, 283,
286, 5, 83, 42, 2, 284, 286, 5, 85, 43, 2, 285, 283, 3, 2, 2, 2, 285, 284,
3, 2, 2, 2, 286, 289, 3, 2, 2, 2, 287, 285, 3, 2, 2, 2, 287, 288, 3, 2,
2, 2, 288, 72, 3, 2, 2, 2, 289, 287, 3, 2, 2, 2, 290, 292, 5, 77, 39, 2,
291, 290, 3, 2, 2, 2, 291, 292, 3, 2, 2, 2, 292, 293, 3, 2, 2, 2, 293,
295, 7, 36, 2, 2, 294, 296, 5, 79, 40, 2, 295, 294, 3, 2, 2, 2, 295, 296,
3, 2, 2, 2, 296, 297, 3, 2, 2, 2, 297, 298, 7, 36, 2, 2, 298, 74, 3, 2,
2, 2, 299, 315, 5, 71, 36, 2, 300, 311, 7, 93, 2, 2, 301, 302, 7, 36, 2,
2, 302, 303, 5, 79, 40, 2, 303, 304, 7, 36, 2, 2, 304, 312, 3, 2, 2, 2,
305, 306, 7, 41, 2, 2, 306, 307, 5, 79, 40, 2, 307, 308, 7, 41, 2, 2, 308,
312, 3, 2, 2, 2, 309, 312, 5, 79, 40, 2, 310, 312, 5, 67, 34, 2, 311, 301,
3, 2, 2, 2, 311, 305, 3, 2, 2, 2, 311, 309, 3, 2, 2, 2, 311, 310, 3, 2,
2, 2, 312, 313, 3, 2, 2, 2, 313, 314, 7, 95, 2, 2, 314, 316, 3, 2, 2, 2,
315, 300, 3, 2, 2, 2, 316, 317, 3, 2, 2, 2, 317, 315, 3, 2, 2, 2, 317,
318, 3, 2, 2, 2, 318, 76, 3, 2, 2, 2, 319, 320, 7, 119, 2, 2, 320, 323,
7, 58, 2, 2, 321, 323, 9, 2, 2, 2, 322, 319, 3, 2, 2, 2, 322, 321, 3, 2,
2, 2, 323, 78, 3, 2, 2, 2, 324, 326, 5, 81, 41, 2, 325, 324, 3, 2, 2, 2,
326, 327, 3, 2, 2, 2, 327, 325, 3, 2, 2, 2, 327, 328, 3, 2, 2, 2, 328,
80, 3, 2, 2, 2, 329, 337, 10, 3, 2, 2, 330, 337, 5, 121, 61, 2, 331, 332,
7, 94, 2, 2, 332, 337, 7, 12, 2, 2, 333, 334, 7, 94, 2, 2, 334, 335, 7,
15, 2, 2, 335, 337, 7, 12, 2, 2, 336, 329, 3, 2, 2, 2, 336, 330, 3, 2,
2, 2, 336, 331, 3, 2, 2, 2, 336, 333, 3, 2, 2, 2, 337, 82, 3, 2, 2, 2,
338, 339, 9, 4, 2, 2, 339, 84, 3, 2, 2, 2, 340, 341, 9, 5, 2, 2, 341, 86,
3, 2, 2, 2, 342, 343, 7, 50, 2, 2, 343, 345, 9, 6, 2, 2, 344, 346, 9, 7,
2, 2, 345, 344, 3, 2, 2, 2, 346, 347, 3, 2, 2, 2, 347, 345, 3, 2, 2, 2,
347, 348, 3, 2, 2, 2, 348, 88, 3, 2, 2, 2, 349, 353, 5, 95, 48, 2, 350,
352, 5, 85, 43, 2, 351, 350, 3, 2, 2, 2, 352, 355, 3, 2, 2, 2, 353, 351,
3, 2, 2, 2, 353, 354, 3, 2, 2, 2, 354, 90, 3, 2, 2, 2, 355, 353, 3, 2,
2, 2, 356, 360, 7, 50, 2, 2, 357, 359, 5, 97, 49, 2, 358, 357, 3, 2, 2,
2, 359, 362, 3, 2, 2, 2, 360, 358, 3, 2, 2, 2, 360, 361, 3, 2, 2, 2, 361,
92, 3, 2, 2, 2, 362, 360, 3, 2, 2, 2, 363, 364, 7, 50, 2, 2, 364, 365,
9, 8, 2, 2, 365, 366, 5, 117, 59, 2, 366, 94, 3, 2, 2, 2, 367, 368, 9,
9, 2, 2, 368, 96, 3, 2, 2, 2, 369, 370, 9, 10, 2, 2, 370, 98, 3, 2, 2,
2, 371, 372, 9, 11, 2, 2, 372, 100, 3, 2, 2, 2, 373, 374, 5, 99, 50, 2,
374, 375, 5, 99, 50, 2, 375, 376, 5, 99, 50, 2, 376, 377, 5, 99, 50, 2,
377, 102, 3, 2, 2, 2, 378, 379, 7, 94, 2, 2, 379, 380, 7, 119, 2, 2, 380,
381, 3, 2, 2, 2, 381, 389, 5, 101, 51, 2, 382, 383, 7, 94, 2, 2, 383, 384,
7, 87, 2, 2, 384, 385, 3, 2, 2, 2, 385, 386, 5, 101, 51, 2, 386, 387, 5,
101, 51, 2, 387, 389, 3, 2, 2, 2, 388, 378, 3, 2, 2, 2, 388, 382, 3, 2,
2, 2, 389, 104, 3, 2, 2, 2, 390, 392, 5, 109, 55, 2, 391, 393, 5, 111,
56, 2, 392, 391, 3, 2, 2, 2, 392, 393, 3, 2, 2, 2, 393, 398, 3, 2, 2, 2,
394, 395, 5, 113, 57, 2, 395, 396, 5, 111, 56, 2, 396, 398, 3, 2, 2, 2,
397, 390, 3, 2, 2, 2, 397, 394, 3, 2, 2, 2, 398, 106, 3, 2, 2, 2, 399,
400, 7, 50, 2, 2, 400, 403, 9, 8, 2, 2, 401, 404, 5, 115, 58, 2, 402, 404,
5, 117, 59, 2, 403, 401, 3, 2, 2, 2, 403, 402, 3, 2, 2, 2, 404, 405, 3,
2, 2, 2, 405, 406, 5, 119, 60, 2, 406, 108, 3, 2, 2, 2, 407, 409, 5, 113,
57, 2, 408, 407, 3, 2, 2, 2, 408, 409, 3, 2, 2, 2, 409, 410, 3, 2, 2, 2,
410, 411, 7, 48, 2, 2, 411, 416, 5, 113, 57, 2, 412, 413, 5, 113, 57, 2,
413, 414, 7, 48, 2, 2, 414, 416, 3, 2, 2, 2, 415, 408, 3, 2, 2, 2, 415,
412, 3, 2, 2, 2, 416, 110, 3, 2, 2, 2, 417, 419, 9, 12, 2, 2, 418, 420,
9, 13, 2, 2, 419, 418, 3, 2, 2, 2, 419, 420, 3, 2, 2, 2, 420, 421, 3, 2,
2, 2, 421, 422, 5, 113, 57, 2, 422, 112, 3, 2, 2, 2, 423, 425, 5, 85, 43,
2, 424, 423, 3, 2, 2, 2, 425, 426, 3, 2, 2, 2, 426, 424, 3, 2, 2, 2, 426,
427, 3, 2, 2, 2, 427, 114, 3, 2, 2, 2, 428, 430, 5, 117, 59, 2, 429, 428,
3, 2, 2, 2, 429, 430, 3, 2, 2, 2, 430, 431, 3, 2, 2, 2, 431, 432, 7, 48,
2, 2, 432, 437, 5, 117, 59, 2, 433, 434, 5, 117, 59, 2, 434, 435, 7, 48,
2, 2, 435, 437, 3, 2, 2, 2, 436, 429, 3, 2, 2, 2, 436, 433, 3, 2, 2, 2,
437, 116, 3, 2, 2, 2, 438, 440, 5, 99, 50, 2, 439, 438, 3, 2, 2, 2, 440,
441, 3, 2, 2, 2, 441, 439, 3, 2, 2, 2, 441, 442, 3, 2, 2, 2, 442, 118,
3, 2, 2, 2, 443, 445, 9, 14, 2, 2, 444, 446, 9, 13, 2, 2, 445, 444, 3,
2, 2, 2, 445, 446, 3, 2, 2, 2, 446, 447, 3, 2, 2, 2, 447, 448, 5, 113,
57, 2, 448, 120, 3, 2, 2, 2, 449, 450, 7, 94, 2, 2, 450, 465, 9, 15, 2,
2, 451, 452, 7, 94, 2, 2, 452, 454, 5, 97, 49, 2, 453, 455, 5, 97, 49,
2, 454, 453, 3, 2, 2, 2, 454, 455, 3, 2, 2, 2, 455, 457, 3, 2, 2, 2, 456,
458, 5, 97, 49, 2, 457, 456, 3, 2, 2, 2, 457, 458, 3, 2, 2, 2, 458, 465,
3, 2, 2, 2, 459, 460, 7, 94, 2, 2, 460, 461, 7, 122, 2, 2, 461, 462, 3,
2, 2, 2, 462, 465, 5, 117, 59, 2, 463, 465, 5, 103, 52, 2, 464, 449, 3,
2, 2, 2, 464, 451, 3, 2, 2, 2, 464, 459, 3, 2, 2, 2, 464, 463, 3, 2, 2,
2, 465, 122, 3, 2, 2, 2, 466, 468, 9, 16, 2, 2, 467, 466, 3, 2, 2, 2, 468,
469, 3, 2, 2, 2, 469, 467, 3, 2, 2, 2, 469, 470, 3, 2, 2, 2, 470, 471,
3, 2, 2, 2, 471, 472, 8, 62, 2, 2, 472, 124, 3, 2, 2, 2, 473, 475, 7, 15,
2, 2, 474, 476, 7, 12, 2, 2, 475, 474, 3, 2, 2, 2, 475, 476, 3, 2, 2, 2,
476, 479, 3, 2, 2, 2, 477, 479, 7, 12, 2, 2, 478, 473, 3, 2, 2, 2, 478,
477, 3, 2, 2, 2, 479, 480, 3, 2, 2, 2, 480, 481, 8, 63, 2, 2, 481, 126,
3, 2, 2, 2, 43, 2, 161, 175, 207, 213, 221, 236, 238, 270, 276, 280, 285,
287, 291, 295, 311, 317, 322, 327, 336, 347, 353, 360, 388, 392, 397, 403,
408, 415, 419, 426, 429, 436, 441, 445, 454, 457, 464, 469, 475, 478, 3,
8, 2, 2,
296, 10, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 5, 38, 304, 10,
38, 3, 38, 3, 38, 6, 38, 308, 10, 38, 13, 38, 14, 38, 309, 3, 39, 3, 39,
3, 39, 5, 39, 315, 10, 39, 3, 40, 6, 40, 318, 10, 40, 13, 40, 14, 40, 319,
3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 5, 41, 329, 10, 41, 3,
42, 3, 42, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 6, 44, 338, 10, 44, 13, 44,
14, 44, 339, 3, 45, 3, 45, 7, 45, 344, 10, 45, 12, 45, 14, 45, 347, 11,
45, 3, 45, 5, 45, 350, 10, 45, 3, 46, 3, 46, 7, 46, 354, 10, 46, 12, 46,
14, 46, 357, 11, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3,
49, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52,
3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 5, 52, 384, 10, 52, 3,
53, 3, 53, 5, 53, 388, 10, 53, 3, 53, 3, 53, 3, 53, 5, 53, 393, 10, 53,
3, 54, 3, 54, 3, 54, 3, 54, 5, 54, 399, 10, 54, 3, 54, 3, 54, 3, 55, 5,
55, 404, 10, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 5, 55, 411, 10, 55,
3, 56, 3, 56, 5, 56, 415, 10, 56, 3, 56, 3, 56, 3, 57, 6, 57, 420, 10,
57, 13, 57, 14, 57, 421, 3, 58, 5, 58, 425, 10, 58, 3, 58, 3, 58, 3, 58,
3, 58, 3, 58, 5, 58, 432, 10, 58, 3, 59, 6, 59, 435, 10, 59, 13, 59, 14,
59, 436, 3, 60, 3, 60, 5, 60, 441, 10, 60, 3, 60, 3, 60, 3, 61, 3, 61,
3, 61, 3, 61, 3, 61, 5, 61, 450, 10, 61, 3, 61, 5, 61, 453, 10, 61, 3,
61, 3, 61, 3, 61, 3, 61, 3, 61, 5, 61, 460, 10, 61, 3, 62, 6, 62, 463,
10, 62, 13, 62, 14, 62, 464, 3, 62, 3, 62, 3, 63, 3, 63, 5, 63, 471, 10,
63, 3, 63, 5, 63, 474, 10, 63, 3, 63, 3, 63, 2, 2, 64, 3, 3, 5, 4, 7, 5,
9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27,
15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45,
24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63,
33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 2, 79, 2, 81, 2,
83, 2, 85, 2, 87, 2, 89, 2, 91, 2, 93, 2, 95, 2, 97, 2, 99, 2, 101, 2,
103, 2, 105, 2, 107, 2, 109, 2, 111, 2, 113, 2, 115, 2, 117, 2, 119, 2,
121, 2, 123, 40, 125, 41, 3, 2, 17, 5, 2, 78, 78, 87, 87, 119, 119, 6,
2, 12, 12, 15, 15, 36, 36, 94, 94, 5, 2, 67, 92, 97, 97, 99, 124, 3, 2,
50, 59, 4, 2, 68, 68, 100, 100, 3, 2, 50, 51, 4, 2, 90, 90, 122, 122, 3,
2, 51, 59, 3, 2, 50, 57, 5, 2, 50, 59, 67, 72, 99, 104, 4, 2, 71, 71, 103,
103, 4, 2, 45, 45, 47, 47, 4, 2, 82, 82, 114, 114, 12, 2, 36, 36, 41, 41,
65, 65, 94, 94, 99, 100, 104, 104, 112, 112, 116, 116, 118, 118, 120, 120,
4, 2, 11, 11, 34, 34, 2, 504, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7,
3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2,
15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2,
2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2,
2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2,
2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3,
2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53,
3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2,
61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2,
2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2,
2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 3, 127, 3, 2, 2, 2, 5, 129,
3, 2, 2, 2, 7, 131, 3, 2, 2, 2, 9, 133, 3, 2, 2, 2, 11, 135, 3, 2, 2, 2,
13, 137, 3, 2, 2, 2, 15, 139, 3, 2, 2, 2, 17, 142, 3, 2, 2, 2, 19, 144,
3, 2, 2, 2, 21, 147, 3, 2, 2, 2, 23, 150, 3, 2, 2, 2, 25, 161, 3, 2, 2,
2, 27, 175, 3, 2, 2, 2, 29, 177, 3, 2, 2, 2, 31, 179, 3, 2, 2, 2, 33, 181,
3, 2, 2, 2, 35, 183, 3, 2, 2, 2, 37, 185, 3, 2, 2, 2, 39, 187, 3, 2, 2,
2, 41, 190, 3, 2, 2, 2, 43, 193, 3, 2, 2, 2, 45, 196, 3, 2, 2, 2, 47, 198,
3, 2, 2, 2, 49, 200, 3, 2, 2, 2, 51, 207, 3, 2, 2, 2, 53, 213, 3, 2, 2,
2, 55, 215, 3, 2, 2, 2, 57, 221, 3, 2, 2, 2, 59, 223, 3, 2, 2, 2, 61, 226,
3, 2, 2, 2, 63, 233, 3, 2, 2, 2, 65, 270, 3, 2, 2, 2, 67, 276, 3, 2, 2,
2, 69, 280, 3, 2, 2, 2, 71, 282, 3, 2, 2, 2, 73, 291, 3, 2, 2, 2, 75, 299,
3, 2, 2, 2, 77, 314, 3, 2, 2, 2, 79, 317, 3, 2, 2, 2, 81, 328, 3, 2, 2,
2, 83, 330, 3, 2, 2, 2, 85, 332, 3, 2, 2, 2, 87, 334, 3, 2, 2, 2, 89, 349,
3, 2, 2, 2, 91, 351, 3, 2, 2, 2, 93, 358, 3, 2, 2, 2, 95, 362, 3, 2, 2,
2, 97, 364, 3, 2, 2, 2, 99, 366, 3, 2, 2, 2, 101, 368, 3, 2, 2, 2, 103,
383, 3, 2, 2, 2, 105, 392, 3, 2, 2, 2, 107, 394, 3, 2, 2, 2, 109, 410,
3, 2, 2, 2, 111, 412, 3, 2, 2, 2, 113, 419, 3, 2, 2, 2, 115, 431, 3, 2,
2, 2, 117, 434, 3, 2, 2, 2, 119, 438, 3, 2, 2, 2, 121, 459, 3, 2, 2, 2,
123, 462, 3, 2, 2, 2, 125, 473, 3, 2, 2, 2, 127, 128, 7, 42, 2, 2, 128,
4, 3, 2, 2, 2, 129, 130, 7, 43, 2, 2, 130, 6, 3, 2, 2, 2, 131, 132, 7,
93, 2, 2, 132, 8, 3, 2, 2, 2, 133, 134, 7, 46, 2, 2, 134, 10, 3, 2, 2,
2, 135, 136, 7, 95, 2, 2, 136, 12, 3, 2, 2, 2, 137, 138, 7, 62, 2, 2, 138,
14, 3, 2, 2, 2, 139, 140, 7, 62, 2, 2, 140, 141, 7, 63, 2, 2, 141, 16,
3, 2, 2, 2, 142, 143, 7, 64, 2, 2, 143, 18, 3, 2, 2, 2, 144, 145, 7, 64,
2, 2, 145, 146, 7, 63, 2, 2, 146, 20, 3, 2, 2, 2, 147, 148, 7, 63, 2, 2,
148, 149, 7, 63, 2, 2, 149, 22, 3, 2, 2, 2, 150, 151, 7, 35, 2, 2, 151,
152, 7, 63, 2, 2, 152, 24, 3, 2, 2, 2, 153, 154, 7, 110, 2, 2, 154, 155,
7, 107, 2, 2, 155, 156, 7, 109, 2, 2, 156, 162, 7, 103, 2, 2, 157, 158,
7, 78, 2, 2, 158, 159, 7, 75, 2, 2, 159, 160, 7, 77, 2, 2, 160, 162, 7,
71, 2, 2, 161, 153, 3, 2, 2, 2, 161, 157, 3, 2, 2, 2, 162, 26, 3, 2, 2,
2, 163, 164, 7, 103, 2, 2, 164, 165, 7, 122, 2, 2, 165, 166, 7, 107, 2,
2, 166, 167, 7, 117, 2, 2, 167, 168, 7, 118, 2, 2, 168, 176, 7, 117, 2,
2, 169, 170, 7, 71, 2, 2, 170, 171, 7, 90, 2, 2, 171, 172, 7, 75, 2, 2,
172, 173, 7, 85, 2, 2, 173, 174, 7, 86, 2, 2, 174, 176, 7, 85, 2, 2, 175,
163, 3, 2, 2, 2, 175, 169, 3, 2, 2, 2, 176, 28, 3, 2, 2, 2, 177, 178, 7,
45, 2, 2, 178, 30, 3, 2, 2, 2, 179, 180, 7, 47, 2, 2, 180, 32, 3, 2, 2,
2, 181, 182, 7, 44, 2, 2, 182, 34, 3, 2, 2, 2, 183, 184, 7, 49, 2, 2, 184,
36, 3, 2, 2, 2, 185, 186, 7, 39, 2, 2, 186, 38, 3, 2, 2, 2, 187, 188, 7,
44, 2, 2, 188, 189, 7, 44, 2, 2, 189, 40, 3, 2, 2, 2, 190, 191, 7, 62,
2, 2, 191, 192, 7, 62, 2, 2, 192, 42, 3, 2, 2, 2, 193, 194, 7, 64, 2, 2,
194, 195, 7, 64, 2, 2, 195, 44, 3, 2, 2, 2, 196, 197, 7, 40, 2, 2, 197,
46, 3, 2, 2, 2, 198, 199, 7, 126, 2, 2, 199, 48, 3, 2, 2, 2, 200, 201,
7, 96, 2, 2, 201, 50, 3, 2, 2, 2, 202, 203, 7, 40, 2, 2, 203, 208, 7, 40,
2, 2, 204, 205, 7, 99, 2, 2, 205, 206, 7, 112, 2, 2, 206, 208, 7, 102,
2, 2, 207, 202, 3, 2, 2, 2, 207, 204, 3, 2, 2, 2, 208, 52, 3, 2, 2, 2,
209, 210, 7, 126, 2, 2, 210, 214, 7, 126, 2, 2, 211, 212, 7, 113, 2, 2,
212, 214, 7, 116, 2, 2, 213, 209, 3, 2, 2, 2, 213, 211, 3, 2, 2, 2, 214,
54, 3, 2, 2, 2, 215, 216, 7, 128, 2, 2, 216, 56, 3, 2, 2, 2, 217, 222,
7, 35, 2, 2, 218, 219, 7, 112, 2, 2, 219, 220, 7, 113, 2, 2, 220, 222,
7, 118, 2, 2, 221, 217, 3, 2, 2, 2, 221, 218, 3, 2, 2, 2, 222, 58, 3, 2,
2, 2, 223, 224, 7, 107, 2, 2, 224, 225, 7, 112, 2, 2, 225, 60, 3, 2, 2,
2, 226, 227, 7, 112, 2, 2, 227, 228, 7, 113, 2, 2, 228, 229, 7, 118, 2,
2, 229, 230, 7, 34, 2, 2, 230, 231, 7, 107, 2, 2, 231, 232, 7, 112, 2,
2, 232, 62, 3, 2, 2, 2, 233, 238, 7, 93, 2, 2, 234, 237, 5, 123, 62, 2,
235, 237, 5, 125, 63, 2, 236, 234, 3, 2, 2, 2, 236, 235, 3, 2, 2, 2, 237,
240, 3, 2, 2, 2, 238, 236, 3, 2, 2, 2, 238, 239, 3, 2, 2, 2, 239, 241,
3, 2, 2, 2, 240, 238, 3, 2, 2, 2, 241, 242, 7, 95, 2, 2, 242, 64, 3, 2,
2, 2, 243, 244, 7, 118, 2, 2, 244, 245, 7, 116, 2, 2, 245, 246, 7, 119,
2, 2, 246, 271, 7, 103, 2, 2, 247, 248, 7, 86, 2, 2, 248, 249, 7, 116,
2, 2, 249, 250, 7, 119, 2, 2, 250, 271, 7, 103, 2, 2, 251, 252, 7, 86,
2, 2, 252, 253, 7, 84, 2, 2, 253, 254, 7, 87, 2, 2, 254, 271, 7, 71, 2,
2, 255, 256, 7, 104, 2, 2, 256, 257, 7, 99, 2, 2, 257, 258, 7, 110, 2,
2, 258, 259, 7, 117, 2, 2, 259, 271, 7, 103, 2, 2, 260, 261, 7, 72, 2,
2, 261, 262, 7, 99, 2, 2, 262, 263, 7, 110, 2, 2, 263, 264, 7, 117, 2,
2, 264, 271, 7, 103, 2, 2, 265, 266, 7, 72, 2, 2, 266, 267, 7, 67, 2, 2,
267, 268, 7, 78, 2, 2, 268, 269, 7, 85, 2, 2, 269, 271, 7, 71, 2, 2, 270,
243, 3, 2, 2, 2, 270, 247, 3, 2, 2, 2, 270, 251, 3, 2, 2, 2, 270, 255,
3, 2, 2, 2, 270, 260, 3, 2, 2, 2, 270, 265, 3, 2, 2, 2, 271, 66, 3, 2,
2, 2, 272, 277, 5, 89, 45, 2, 273, 277, 5, 91, 46, 2, 274, 277, 5, 93,
47, 2, 275, 277, 5, 87, 44, 2, 276, 272, 3, 2, 2, 2, 276, 273, 3, 2, 2,
2, 276, 274, 3, 2, 2, 2, 276, 275, 3, 2, 2, 2, 277, 68, 3, 2, 2, 2, 278,
281, 5, 105, 53, 2, 279, 281, 5, 107, 54, 2, 280, 278, 3, 2, 2, 2, 280,
279, 3, 2, 2, 2, 281, 70, 3, 2, 2, 2, 282, 287, 5, 83, 42, 2, 283, 286,
5, 83, 42, 2, 284, 286, 5, 85, 43, 2, 285, 283, 3, 2, 2, 2, 285, 284, 3,
2, 2, 2, 286, 289, 3, 2, 2, 2, 287, 285, 3, 2, 2, 2, 287, 288, 3, 2, 2,
2, 288, 72, 3, 2, 2, 2, 289, 287, 3, 2, 2, 2, 290, 292, 5, 77, 39, 2, 291,
290, 3, 2, 2, 2, 291, 292, 3, 2, 2, 2, 292, 293, 3, 2, 2, 2, 293, 295,
7, 36, 2, 2, 294, 296, 5, 79, 40, 2, 295, 294, 3, 2, 2, 2, 295, 296, 3,
2, 2, 2, 296, 297, 3, 2, 2, 2, 297, 298, 7, 36, 2, 2, 298, 74, 3, 2, 2,
2, 299, 307, 5, 71, 36, 2, 300, 303, 7, 93, 2, 2, 301, 304, 5, 73, 37,
2, 302, 304, 5, 89, 45, 2, 303, 301, 3, 2, 2, 2, 303, 302, 3, 2, 2, 2,
304, 305, 3, 2, 2, 2, 305, 306, 7, 95, 2, 2, 306, 308, 3, 2, 2, 2, 307,
300, 3, 2, 2, 2, 308, 309, 3, 2, 2, 2, 309, 307, 3, 2, 2, 2, 309, 310,
3, 2, 2, 2, 310, 76, 3, 2, 2, 2, 311, 312, 7, 119, 2, 2, 312, 315, 7, 58,
2, 2, 313, 315, 9, 2, 2, 2, 314, 311, 3, 2, 2, 2, 314, 313, 3, 2, 2, 2,
315, 78, 3, 2, 2, 2, 316, 318, 5, 81, 41, 2, 317, 316, 3, 2, 2, 2, 318,
319, 3, 2, 2, 2, 319, 317, 3, 2, 2, 2, 319, 320, 3, 2, 2, 2, 320, 80, 3,
2, 2, 2, 321, 329, 10, 3, 2, 2, 322, 329, 5, 121, 61, 2, 323, 324, 7, 94,
2, 2, 324, 329, 7, 12, 2, 2, 325, 326, 7, 94, 2, 2, 326, 327, 7, 15, 2,
2, 327, 329, 7, 12, 2, 2, 328, 321, 3, 2, 2, 2, 328, 322, 3, 2, 2, 2, 328,
323, 3, 2, 2, 2, 328, 325, 3, 2, 2, 2, 329, 82, 3, 2, 2, 2, 330, 331, 9,
4, 2, 2, 331, 84, 3, 2, 2, 2, 332, 333, 9, 5, 2, 2, 333, 86, 3, 2, 2, 2,
334, 335, 7, 50, 2, 2, 335, 337, 9, 6, 2, 2, 336, 338, 9, 7, 2, 2, 337,
336, 3, 2, 2, 2, 338, 339, 3, 2, 2, 2, 339, 337, 3, 2, 2, 2, 339, 340,
3, 2, 2, 2, 340, 88, 3, 2, 2, 2, 341, 345, 5, 95, 48, 2, 342, 344, 5, 85,
43, 2, 343, 342, 3, 2, 2, 2, 344, 347, 3, 2, 2, 2, 345, 343, 3, 2, 2, 2,
345, 346, 3, 2, 2, 2, 346, 350, 3, 2, 2, 2, 347, 345, 3, 2, 2, 2, 348,
350, 7, 50, 2, 2, 349, 341, 3, 2, 2, 2, 349, 348, 3, 2, 2, 2, 350, 90,
3, 2, 2, 2, 351, 355, 7, 50, 2, 2, 352, 354, 5, 97, 49, 2, 353, 352, 3,
2, 2, 2, 354, 357, 3, 2, 2, 2, 355, 353, 3, 2, 2, 2, 355, 356, 3, 2, 2,
2, 356, 92, 3, 2, 2, 2, 357, 355, 3, 2, 2, 2, 358, 359, 7, 50, 2, 2, 359,
360, 9, 8, 2, 2, 360, 361, 5, 117, 59, 2, 361, 94, 3, 2, 2, 2, 362, 363,
9, 9, 2, 2, 363, 96, 3, 2, 2, 2, 364, 365, 9, 10, 2, 2, 365, 98, 3, 2,
2, 2, 366, 367, 9, 11, 2, 2, 367, 100, 3, 2, 2, 2, 368, 369, 5, 99, 50,
2, 369, 370, 5, 99, 50, 2, 370, 371, 5, 99, 50, 2, 371, 372, 5, 99, 50,
2, 372, 102, 3, 2, 2, 2, 373, 374, 7, 94, 2, 2, 374, 375, 7, 119, 2, 2,
375, 376, 3, 2, 2, 2, 376, 384, 5, 101, 51, 2, 377, 378, 7, 94, 2, 2, 378,
379, 7, 87, 2, 2, 379, 380, 3, 2, 2, 2, 380, 381, 5, 101, 51, 2, 381, 382,
5, 101, 51, 2, 382, 384, 3, 2, 2, 2, 383, 373, 3, 2, 2, 2, 383, 377, 3,
2, 2, 2, 384, 104, 3, 2, 2, 2, 385, 387, 5, 109, 55, 2, 386, 388, 5, 111,
56, 2, 387, 386, 3, 2, 2, 2, 387, 388, 3, 2, 2, 2, 388, 393, 3, 2, 2, 2,
389, 390, 5, 113, 57, 2, 390, 391, 5, 111, 56, 2, 391, 393, 3, 2, 2, 2,
392, 385, 3, 2, 2, 2, 392, 389, 3, 2, 2, 2, 393, 106, 3, 2, 2, 2, 394,
395, 7, 50, 2, 2, 395, 398, 9, 8, 2, 2, 396, 399, 5, 115, 58, 2, 397, 399,
5, 117, 59, 2, 398, 396, 3, 2, 2, 2, 398, 397, 3, 2, 2, 2, 399, 400, 3,
2, 2, 2, 400, 401, 5, 119, 60, 2, 401, 108, 3, 2, 2, 2, 402, 404, 5, 113,
57, 2, 403, 402, 3, 2, 2, 2, 403, 404, 3, 2, 2, 2, 404, 405, 3, 2, 2, 2,
405, 406, 7, 48, 2, 2, 406, 411, 5, 113, 57, 2, 407, 408, 5, 113, 57, 2,
408, 409, 7, 48, 2, 2, 409, 411, 3, 2, 2, 2, 410, 403, 3, 2, 2, 2, 410,
407, 3, 2, 2, 2, 411, 110, 3, 2, 2, 2, 412, 414, 9, 12, 2, 2, 413, 415,
9, 13, 2, 2, 414, 413, 3, 2, 2, 2, 414, 415, 3, 2, 2, 2, 415, 416, 3, 2,
2, 2, 416, 417, 5, 113, 57, 2, 417, 112, 3, 2, 2, 2, 418, 420, 5, 85, 43,
2, 419, 418, 3, 2, 2, 2, 420, 421, 3, 2, 2, 2, 421, 419, 3, 2, 2, 2, 421,
422, 3, 2, 2, 2, 422, 114, 3, 2, 2, 2, 423, 425, 5, 117, 59, 2, 424, 423,
3, 2, 2, 2, 424, 425, 3, 2, 2, 2, 425, 426, 3, 2, 2, 2, 426, 427, 7, 48,
2, 2, 427, 432, 5, 117, 59, 2, 428, 429, 5, 117, 59, 2, 429, 430, 7, 48,
2, 2, 430, 432, 3, 2, 2, 2, 431, 424, 3, 2, 2, 2, 431, 428, 3, 2, 2, 2,
432, 116, 3, 2, 2, 2, 433, 435, 5, 99, 50, 2, 434, 433, 3, 2, 2, 2, 435,
436, 3, 2, 2, 2, 436, 434, 3, 2, 2, 2, 436, 437, 3, 2, 2, 2, 437, 118,
3, 2, 2, 2, 438, 440, 9, 14, 2, 2, 439, 441, 9, 13, 2, 2, 440, 439, 3,
2, 2, 2, 440, 441, 3, 2, 2, 2, 441, 442, 3, 2, 2, 2, 442, 443, 5, 113,
57, 2, 443, 120, 3, 2, 2, 2, 444, 445, 7, 94, 2, 2, 445, 460, 9, 15, 2,
2, 446, 447, 7, 94, 2, 2, 447, 449, 5, 97, 49, 2, 448, 450, 5, 97, 49,
2, 449, 448, 3, 2, 2, 2, 449, 450, 3, 2, 2, 2, 450, 452, 3, 2, 2, 2, 451,
453, 5, 97, 49, 2, 452, 451, 3, 2, 2, 2, 452, 453, 3, 2, 2, 2, 453, 460,
3, 2, 2, 2, 454, 455, 7, 94, 2, 2, 455, 456, 7, 122, 2, 2, 456, 457, 3,
2, 2, 2, 457, 460, 5, 117, 59, 2, 458, 460, 5, 103, 52, 2, 459, 444, 3,
2, 2, 2, 459, 446, 3, 2, 2, 2, 459, 454, 3, 2, 2, 2, 459, 458, 3, 2, 2,
2, 460, 122, 3, 2, 2, 2, 461, 463, 9, 16, 2, 2, 462, 461, 3, 2, 2, 2, 463,
464, 3, 2, 2, 2, 464, 462, 3, 2, 2, 2, 464, 465, 3, 2, 2, 2, 465, 466,
3, 2, 2, 2, 466, 467, 8, 62, 2, 2, 467, 124, 3, 2, 2, 2, 468, 470, 7, 15,
2, 2, 469, 471, 7, 12, 2, 2, 470, 469, 3, 2, 2, 2, 470, 471, 3, 2, 2, 2,
471, 474, 3, 2, 2, 2, 472, 474, 7, 12, 2, 2, 473, 468, 3, 2, 2, 2, 473,
472, 3, 2, 2, 2, 474, 475, 3, 2, 2, 2, 475, 476, 8, 63, 2, 2, 476, 126,
3, 2, 2, 2, 44, 2, 161, 175, 207, 213, 221, 236, 238, 270, 276, 280, 285,
287, 291, 295, 303, 309, 314, 319, 328, 339, 345, 349, 355, 383, 387, 392,
398, 403, 410, 414, 421, 424, 431, 436, 440, 449, 452, 459, 464, 470, 473,
3, 8, 2, 2,
}
var lexerChannelNames = []string{

View File

@ -6,7 +6,6 @@ import (
"strings"
"github.com/antlr/antlr4/runtime/Go/antlr"
"github.com/milvus-io/milvus-proto/go-api/schemapb"
parser "github.com/milvus-io/milvus/internal/parser/planparserv2/generated"
"github.com/milvus-io/milvus/internal/proto/planpb"
@ -561,7 +560,10 @@ func (v *ParserVisitor) getChildColumnInfo(identifier, child antlr.TerminalNode)
// VisitRange translates expr to range plan.
func (v *ParserVisitor) VisitRange(ctx *parser.RangeContext) interface{} {
columnInfo, err := v.getChildColumnInfo(ctx.Identifier(), ctx.JSONIdentifier())
if columnInfo == nil || err != nil {
if err != nil {
return err
}
if columnInfo == nil {
return fmt.Errorf("range operations are only supported on single fields now, got: %s", ctx.Expr(1).GetText())
}
@ -931,10 +933,8 @@ func (v *ParserVisitor) VisitBitOr(ctx *parser.BitOrContext) interface{} {
*/
// More tests refer to plan_parser_v2_test.go::Test_JSONExpr
func (v *ParserVisitor) getColumnInfoFromJSONIdentifier(identifier string) (*planpb.ColumnInfo, error) {
ss := strings.Split(identifier, "[")
fieldName := ss[0]
length := len(ss)
nestedPath := make([]string, 0, length)
fieldName := strings.Split(identifier, "[")[0]
nestedPath := make([]string, 0)
jsonField, err := v.schema.GetFieldFromNameDefaultJSON(fieldName)
if err != nil {
return nil, err
@ -942,8 +942,18 @@ func (v *ParserVisitor) getColumnInfoFromJSONIdentifier(identifier string) (*pla
if fieldName != jsonField.Name {
nestedPath = append(nestedPath, fieldName)
}
for i := 1; i < length; i++ {
path := strings.Trim(strings.Trim(ss[i], "[]"), "\"")
jsonKeyStr := identifier[len(fieldName):]
ss := strings.Split(jsonKeyStr, "][")
for i := 0; i < len(ss); i++ {
path := strings.Trim(ss[i], "[]")
if path == "" {
return nil, fmt.Errorf("invalid identifier: %s", identifier)
}
if strings.HasPrefix(path, "\"") && strings.HasSuffix(path, "\"") {
path = path[1 : len(path)-1]
} else if _, err := strconv.ParseInt(path, 10, 64); err != nil {
return nil, fmt.Errorf("json key must be enclosed in double quotes: \"%s\"", path)
}
nestedPath = append(nestedPath, path)
}

View File

@ -4,15 +4,12 @@ import (
"sync"
"testing"
"github.com/milvus-io/milvus/pkg/log"
"go.uber.org/zap"
"github.com/milvus-io/milvus/internal/proto/planpb"
"github.com/stretchr/testify/assert"
"github.com/milvus-io/milvus-proto/go-api/schemapb"
"github.com/milvus-io/milvus/internal/proto/planpb"
"github.com/milvus-io/milvus/pkg/log"
"github.com/milvus-io/milvus/pkg/util/typeutil"
"github.com/stretchr/testify/assert"
"go.uber.org/zap"
)
func newTestSchema() *schemapb.CollectionSchema {
@ -25,6 +22,12 @@ func newTestSchema() *schemapb.CollectionSchema {
newField := &schemapb.FieldSchema{
FieldID: int64(100 + value), Name: name + "Field", IsPrimaryKey: false, Description: "", DataType: dataType,
}
if value == int32(schemapb.DataType_JSON) {
newField = &schemapb.FieldSchema{
FieldID: int64(100 + value), Name: name + "Field", IsPrimaryKey: false, Description: "", DataType: dataType,
//IsDynamic: true,
}
}
fields = append(fields, newField)
}
@ -687,6 +690,24 @@ func Test_JSONExpr(t *testing.T) {
})
assert.NoError(t, err)
expr = `C["0"] not in [90, 91, 95, 97]`
_, err = CreateSearchPlan(schema, expr, "FloatVectorField", &planpb.QueryInfo{
Topk: 0,
MetricType: "",
SearchParams: "",
RoundDecimal: 0,
})
assert.NoError(t, err)
expr = `C[0] in [90, 91, 95, 97]`
_, err = CreateSearchPlan(schema, expr, "FloatVectorField", &planpb.QueryInfo{
Topk: 0,
MetricType: "",
SearchParams: "",
RoundDecimal: 0,
})
assert.NoError(t, err)
expr = `C["0"] > 90`
_, err = CreateSearchPlan(schema, expr, "FloatVectorField", &planpb.QueryInfo{
Topk: 0,
@ -795,24 +816,6 @@ func Test_JSONExpr(t *testing.T) {
})
assert.NoError(t, err)
expr = `exists JSONField["A"] > 10 `
_, err = CreateSearchPlan(schema, expr, "FloatVectorField", &planpb.QueryInfo{
Topk: 0,
MetricType: "",
SearchParams: "",
RoundDecimal: 0,
})
assert.Error(t, err)
expr = `exists Int64Field `
_, err = CreateSearchPlan(schema, expr, "FloatVectorField", &planpb.QueryInfo{
Topk: 0,
MetricType: "",
SearchParams: "",
RoundDecimal: 0,
})
assert.Error(t, err)
expr = `exists JSONField["A"]["B"]["C"] `
_, err = CreateSearchPlan(schema, expr, "FloatVectorField", &planpb.QueryInfo{
Topk: 0,
@ -831,16 +834,7 @@ func Test_JSONExpr(t *testing.T) {
})
assert.NoError(t, err)
expr = `A[B][0] > 100`
_, err = CreateSearchPlan(schema, expr, "FloatVectorField", &planpb.QueryInfo{
Topk: 0,
MetricType: "",
SearchParams: "",
RoundDecimal: 0,
})
assert.NoError(t, err)
expr = `A['B'][0] > 100`
expr = `A["B"][0] > 100`
_, err = CreateSearchPlan(schema, expr, "FloatVectorField", &planpb.QueryInfo{
Topk: 0,
MetricType: "",
@ -857,6 +851,24 @@ func Test_JSONExpr(t *testing.T) {
RoundDecimal: 0,
})
assert.NoError(t, err)
expr = `A["\"\"B\"\""] > 10`
_, err = CreateSearchPlan(schema, expr, "FloatVectorField", &planpb.QueryInfo{
Topk: 0,
MetricType: "",
SearchParams: "",
RoundDecimal: 0,
})
assert.NoError(t, err)
expr = `A["[\"B\"]"] == "abc\"bbb\"cc"`
_, err = CreateSearchPlan(schema, expr, "FloatVectorField", &planpb.QueryInfo{
Topk: 0,
MetricType: "",
SearchParams: "",
RoundDecimal: 0,
})
assert.NoError(t, err)
}
func Test_InvalidExprOnJSONField(t *testing.T) {
@ -934,6 +946,60 @@ func Test_InvalidExprOnJSONField(t *testing.T) {
RoundDecimal: 0,
})
assert.Error(t, err)
expr = `exists JSONField["A"] > 10 `
_, err = CreateSearchPlan(schema, expr, "FloatVectorField", &planpb.QueryInfo{
Topk: 0,
MetricType: "",
SearchParams: "",
RoundDecimal: 0,
})
assert.Error(t, err)
expr = `exists Int64Field `
_, err = CreateSearchPlan(schema, expr, "FloatVectorField", &planpb.QueryInfo{
Topk: 0,
MetricType: "",
SearchParams: "",
RoundDecimal: 0,
})
assert.Error(t, err)
expr = `A[[""B""]] > 10`
_, err = CreateSearchPlan(schema, expr, "FloatVectorField", &planpb.QueryInfo{
Topk: 0,
MetricType: "",
SearchParams: "",
RoundDecimal: 0,
})
assert.Error(t, err)
expr = `A["[""B""]"] > 10`
_, err = CreateSearchPlan(schema, expr, "FloatVectorField", &planpb.QueryInfo{
Topk: 0,
MetricType: "",
SearchParams: "",
RoundDecimal: 0,
})
assert.Error(t, err)
expr = `A[[""B""]] > 10`
_, err = CreateSearchPlan(schema, expr, "FloatVectorField", &planpb.QueryInfo{
Topk: 0,
MetricType: "",
SearchParams: "",
RoundDecimal: 0,
})
assert.Error(t, err)
expr = `A[B] > 10`
_, err = CreateSearchPlan(schema, expr, "FloatVectorField", &planpb.QueryInfo{
Topk: 0,
MetricType: "",
SearchParams: "",
RoundDecimal: 0,
})
assert.Error(t, err)
}
func Test_InvalidExprWithoutJSONField(t *testing.T) {

View File

@ -3,11 +3,9 @@ package planparserv2
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/antlr/antlr4/runtime/Go/antlr"
antlrparser "github.com/milvus-io/milvus/internal/parser/planparserv2/generated"
"github.com/stretchr/testify/assert"
)
func genNaiveInputStream() *antlr.InputStream {

View File

@ -23,9 +23,8 @@ import (
"github.com/cockroachdb/errors"
"github.com/milvus-io/milvus-proto/go-api/schemapb"
"go.uber.org/zap"
"github.com/milvus-io/milvus/pkg/log"
"go.uber.org/zap"
)
const DynamicFieldMaxLength = 512
@ -249,6 +248,7 @@ func (helper *SchemaHelper) getDefaultJSONField() (*schemapb.FieldSchema, error)
var field *schemapb.FieldSchema
for _, f := range helper.schema.GetFields() {
// TODO @xiaocai2333: get $SYS_META json field
//if f.DataType == schemapb.DataType_JSON && f.GetIsDynamic() {
if f.DataType == schemapb.DataType_JSON {
if field != nil {
// TODO @xiaocai2333: will not return error after support $SYS_META
@ -260,7 +260,7 @@ func (helper *SchemaHelper) getDefaultJSONField() (*schemapb.FieldSchema, error)
}
}
if field == nil {
errMsg := "there is no json field in schema, need to specified field name"
errMsg := "there is no dynamic json field in schema, need to specified field name"
log.Warn(errMsg)
return nil, fmt.Errorf(errMsg)
}

View File

@ -84,6 +84,7 @@ func TestJsonExpr(t *testing.T) {
Name: jsonField,
Description: "this is a json field",
DataType: schemapb.DataType_JSON,
//IsDynamic: true,
}
return &schemapb.CollectionSchema{
Name: collectionName,