Skip to content

Commit 624656f

Browse files
Allow $ by itself across JsonPathMatcher implementations (#6591)
* Allow `$` by itself across JsonPathMatcher implementations Fixes #4937 * Apply suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Do not use `"$."` in tests * Do not use `"$."` in JsonPathMatchers --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
1 parent f48a28a commit 624656f

19 files changed

Lines changed: 1014 additions & 875 deletions

File tree

rewrite-hcl/src/main/antlr/JsonPathParser.g4

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ parser grammar JsonPathParser;
33
options { tokenVocab=JsonPathLexer; }
44

55
jsonPath
6-
: ROOT? expression+
6+
: ROOT expression*
7+
| expression+
78
;
89

910
expression

rewrite-hcl/src/main/java/org/openrewrite/hcl/JsonPathMatcher.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,10 @@ private <T> Optional<T> find0(Cursor cursor, List<Tree> cursorPath) {
7373
}
7474
JsonPathParser.JsonPathContext ctx = parse();
7575
// The stop may be optimized by interpreting the ExpressionContext and pre-determining the last visit.
76-
JsonPathParser.ExpressionContext stop = (JsonPathParser.ExpressionContext) ctx.children.get(ctx.children.size() - 1);
76+
ParseTree lastChild = ctx.children.get(ctx.children.size() - 1);
77+
JsonPathParser.ExpressionContext stop = lastChild instanceof JsonPathParser.ExpressionContext ?
78+
(JsonPathParser.ExpressionContext) lastChild :
79+
null;
7780
@SuppressWarnings("ConstantConditions") JsonPathParserVisitor<Object> v = new JsonPathParserHclVisitor(cursorPath, start, stop, false);
7881
Object result = v.visit(ctx);
7982

@@ -105,14 +108,22 @@ private static List<Tree> resolvedAncestors(Cursor cursor) {
105108

106109
private JsonPathParser.JsonPathContext parse() {
107110
if (parsed == null) {
108-
parsed = jsonPath().jsonPath();
111+
JsonPathParser parser = jsonPath(jsonPath);
112+
parsed = parser.jsonPath();
113+
// Ensure all input was consumed
114+
if (parser.getCurrentToken().getType() != org.antlr.v4.runtime.Token.EOF) {
115+
throw new IllegalArgumentException(
116+
"Syntax error at line 1:" + parser.getCurrentToken().getCharPositionInLine() +
117+
" extraneous input '" + parser.getCurrentToken().getText() +
118+
"' expecting EOF. Original input: '" + jsonPath + "'");
119+
}
109120
}
110121
return parsed;
111122
}
112123

113-
private JsonPathParser jsonPath() {
124+
private JsonPathParser jsonPath(String path) {
114125
ThrowingErrorListener errorListener = new ThrowingErrorListener(this.jsonPath);
115-
JsonPathLexer lexer = new JsonPathLexer(CharStreams.fromString(this.jsonPath));
126+
JsonPathLexer lexer = new JsonPathLexer(CharStreams.fromString(path));
116127
lexer.removeErrorListeners();
117128
lexer.addErrorListener(errorListener);
118129
JsonPathParser parser = new JsonPathParser(new CommonTokenStream(lexer));

rewrite-hcl/src/main/java/org/openrewrite/hcl/internal/grammar/JsonPathParser.interp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,4 +102,4 @@ indexes
102102

103103

104104
atn:
105-
[4, 1, 38, 192, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 1, 0, 3, 0, 38, 8, 0, 1, 0, 4, 0, 41, 8, 0, 11, 0, 12, 0, 42, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 49, 8, 1, 1, 2, 1, 2, 1, 2, 3, 2, 54, 8, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 64, 8, 4, 11, 4, 12, 4, 65, 3, 4, 68, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 4, 5, 75, 8, 5, 11, 5, 12, 5, 76, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 85, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 120, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 131, 8, 7, 10, 7, 12, 7, 134, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 144, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 155, 8, 10, 1, 10, 1, 10, 1, 10, 3, 10, 160, 8, 10, 1, 10, 3, 10, 163, 8, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 3, 14, 174, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 181, 8, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 4, 17, 188, 8, 17, 11, 17, 12, 17, 189, 1, 17, 0, 1, 14, 18, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 0, 2, 2, 0, 18, 20, 22, 25, 1, 0, 21, 22, 207, 0, 37, 1, 0, 0, 0, 2, 48, 1, 0, 0, 0, 4, 53, 1, 0, 0, 0, 6, 55, 1, 0, 0, 0, 8, 58, 1, 0, 0, 0, 10, 71, 1, 0, 0, 0, 12, 84, 1, 0, 0, 0, 14, 119, 1, 0, 0, 0, 16, 143, 1, 0, 0, 0, 18, 145, 1, 0, 0, 0, 20, 162, 1, 0, 0, 0, 22, 164, 1, 0, 0, 0, 24, 166, 1, 0, 0, 0, 26, 168, 1, 0, 0, 0, 28, 180, 1, 0, 0, 0, 30, 182, 1, 0, 0, 0, 32, 184, 1, 0, 0, 0, 34, 187, 1, 0, 0, 0, 36, 38, 5, 13, 0, 0, 37, 36, 1, 0, 0, 0, 37, 38, 1, 0, 0, 0, 38, 40, 1, 0, 0, 0, 39, 41, 3, 2, 1, 0, 40, 39, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 40, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 1, 1, 0, 0, 0, 44, 45, 5, 11, 0, 0, 45, 49, 3, 4, 2, 0, 46, 49, 3, 6, 3, 0, 47, 49, 3, 8, 4, 0, 48, 44, 1, 0, 0, 0, 48, 46, 1, 0, 0, 0, 48, 47, 1, 0, 0, 0, 49, 3, 1, 0, 0, 0, 50, 54, 3, 8, 4, 0, 51, 54, 3, 24, 12, 0, 52, 54, 3, 26, 13, 0, 53, 50, 1, 0, 0, 0, 53, 51, 1, 0, 0, 0, 53, 52, 1, 0, 0, 0, 54, 5, 1, 0, 0, 0, 55, 56, 5, 12, 0, 0, 56, 57, 3, 4, 2, 0, 57, 7, 1, 0, 0, 0, 58, 67, 5, 6, 0, 0, 59, 68, 3, 10, 5, 0, 60, 68, 3, 28, 14, 0, 61, 68, 3, 34, 17, 0, 62, 64, 3, 24, 12, 0, 63, 62, 1, 0, 0, 0, 64, 65, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, 68, 1, 0, 0, 0, 67, 59, 1, 0, 0, 0, 67, 60, 1, 0, 0, 0, 67, 61, 1, 0, 0, 0, 67, 63, 1, 0, 0, 0, 68, 69, 1, 0, 0, 0, 69, 70, 5, 7, 0, 0, 70, 9, 1, 0, 0, 0, 71, 72, 5, 16, 0, 0, 72, 74, 5, 8, 0, 0, 73, 75, 3, 12, 6, 0, 74, 73, 1, 0, 0, 0, 75, 76, 1, 0, 0, 0, 76, 74, 1, 0, 0, 0, 76, 77, 1, 0, 0, 0, 77, 78, 1, 0, 0, 0, 78, 79, 5, 9, 0, 0, 79, 11, 1, 0, 0, 0, 80, 85, 3, 14, 7, 0, 81, 85, 3, 18, 9, 0, 82, 85, 3, 16, 8, 0, 83, 85, 3, 20, 10, 0, 84, 80, 1, 0, 0, 0, 84, 81, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 83, 1, 0, 0, 0, 85, 13, 1, 0, 0, 0, 86, 87, 6, 7, -1, 0, 87, 88, 3, 18, 9, 0, 88, 89, 5, 30, 0, 0, 89, 90, 3, 18, 9, 0, 90, 120, 1, 0, 0, 0, 91, 92, 3, 18, 9, 0, 92, 93, 5, 30, 0, 0, 93, 94, 3, 14, 7, 7, 94, 120, 1, 0, 0, 0, 95, 96, 3, 18, 9, 0, 96, 97, 5, 30, 0, 0, 97, 98, 3, 16, 8, 0, 98, 120, 1, 0, 0, 0, 99, 100, 3, 16, 8, 0, 100, 101, 5, 30, 0, 0, 101, 102, 3, 16, 8, 0, 102, 120, 1, 0, 0, 0, 103, 104, 3, 16, 8, 0, 104, 105, 5, 30, 0, 0, 105, 106, 3, 14, 7, 4, 106, 120, 1, 0, 0, 0, 107, 108, 3, 16, 8, 0, 108, 109, 5, 30, 0, 0, 109, 110, 3, 18, 9, 0, 110, 120, 1, 0, 0, 0, 111, 112, 3, 20, 10, 0, 112, 113, 5, 33, 0, 0, 113, 114, 3, 22, 11, 0, 114, 120, 1, 0, 0, 0, 115, 116, 3, 22, 11, 0, 116, 117, 5, 33, 0, 0, 117, 118, 3, 20, 10, 0, 118, 120, 1, 0, 0, 0, 119, 86, 1, 0, 0, 0, 119, 91, 1, 0, 0, 0, 119, 95, 1, 0, 0, 0, 119, 99, 1, 0, 0, 0, 119, 103, 1, 0, 0, 0, 119, 107, 1, 0, 0, 0, 119, 111, 1, 0, 0, 0, 119, 115, 1, 0, 0, 0, 120, 132, 1, 0, 0, 0, 121, 122, 10, 11, 0, 0, 122, 123, 5, 30, 0, 0, 123, 131, 3, 14, 7, 12, 124, 125, 10, 10, 0, 0, 125, 126, 5, 30, 0, 0, 126, 131, 3, 18, 9, 0, 127, 128, 10, 9, 0, 0, 128, 129, 5, 30, 0, 0, 129, 131, 3, 16, 8, 0, 130, 121, 1, 0, 0, 0, 130, 124, 1, 0, 0, 0, 130, 127, 1, 0, 0, 0, 131, 134, 1, 0, 0, 0, 132, 130, 1, 0, 0, 0, 132, 133, 1, 0, 0, 0, 133, 15, 1, 0, 0, 0, 134, 132, 1, 0, 0, 0, 135, 136, 3, 20, 10, 0, 136, 137, 5, 17, 0, 0, 137, 138, 3, 22, 11, 0, 138, 144, 1, 0, 0, 0, 139, 140, 3, 22, 11, 0, 140, 141, 5, 17, 0, 0, 141, 142, 3, 20, 10, 0, 142, 144, 1, 0, 0, 0, 143, 135, 1, 0, 0, 0, 143, 139, 1, 0, 0, 0, 144, 17, 1, 0, 0, 0, 145, 146, 3, 20, 10, 0, 146, 147, 5, 3, 0, 0, 147, 148, 5, 38, 0, 0, 148, 149, 5, 36, 0, 0, 149, 19, 1, 0, 0, 0, 150, 159, 5, 10, 0, 0, 151, 152, 5, 11, 0, 0, 152, 160, 5, 21, 0, 0, 153, 155, 5, 11, 0, 0, 154, 153, 1, 0, 0, 0, 154, 155, 1, 0, 0, 0, 155, 156, 1, 0, 0, 0, 156, 157, 5, 6, 0, 0, 157, 158, 5, 22, 0, 0, 158, 160, 5, 7, 0, 0, 159, 151, 1, 0, 0, 0, 159, 154, 1, 0, 0, 0, 159, 160, 1, 0, 0, 0, 160, 163, 1, 0, 0, 0, 161, 163, 3, 0, 0, 0, 162, 150, 1, 0, 0, 0, 162, 161, 1, 0, 0, 0, 163, 21, 1, 0, 0, 0, 164, 165, 7, 0, 0, 0, 165, 23, 1, 0, 0, 0, 166, 167, 7, 1, 0, 0, 167, 25, 1, 0, 0, 0, 168, 169, 5, 14, 0, 0, 169, 27, 1, 0, 0, 0, 170, 171, 3, 30, 15, 0, 171, 173, 5, 15, 0, 0, 172, 174, 3, 32, 16, 0, 173, 172, 1, 0, 0, 0, 173, 174, 1, 0, 0, 0, 174, 181, 1, 0, 0, 0, 175, 176, 5, 15, 0, 0, 176, 181, 5, 23, 0, 0, 177, 178, 5, 24, 0, 0, 178, 181, 5, 15, 0, 0, 179, 181, 3, 26, 13, 0, 180, 170, 1, 0, 0, 0, 180, 175, 1, 0, 0, 0, 180, 177, 1, 0, 0, 0, 180, 179, 1, 0, 0, 0, 181, 29, 1, 0, 0, 0, 182, 183, 5, 23, 0, 0, 183, 31, 1, 0, 0, 0, 184, 185, 5, 23, 0, 0, 185, 33, 1, 0, 0, 0, 186, 188, 5, 23, 0, 0, 187, 186, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189, 187, 1, 0, 0, 0, 189, 190, 1, 0, 0, 0, 190, 35, 1, 0, 0, 0, 18, 37, 42, 48, 53, 65, 67, 76, 84, 119, 130, 132, 143, 154, 159, 162, 173, 180, 189]
105+
[4, 1, 38, 198, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 1, 0, 1, 0, 5, 0, 39, 8, 0, 10, 0, 12, 0, 42, 9, 0, 1, 0, 4, 0, 45, 8, 0, 11, 0, 12, 0, 46, 3, 0, 49, 8, 0, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 55, 8, 1, 1, 2, 1, 2, 1, 2, 3, 2, 60, 8, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 4, 4, 70, 8, 4, 11, 4, 12, 4, 71, 3, 4, 74, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 4, 5, 81, 8, 5, 11, 5, 12, 5, 82, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 91, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 126, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 137, 8, 7, 10, 7, 12, 7, 140, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 150, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 161, 8, 10, 1, 10, 1, 10, 1, 10, 3, 10, 166, 8, 10, 1, 10, 3, 10, 169, 8, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 3, 14, 180, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 187, 8, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 4, 17, 194, 8, 17, 11, 17, 12, 17, 195, 1, 17, 0, 1, 14, 18, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 0, 2, 2, 0, 18, 20, 22, 25, 1, 0, 21, 22, 214, 0, 48, 1, 0, 0, 0, 2, 54, 1, 0, 0, 0, 4, 59, 1, 0, 0, 0, 6, 61, 1, 0, 0, 0, 8, 64, 1, 0, 0, 0, 10, 77, 1, 0, 0, 0, 12, 90, 1, 0, 0, 0, 14, 125, 1, 0, 0, 0, 16, 149, 1, 0, 0, 0, 18, 151, 1, 0, 0, 0, 20, 168, 1, 0, 0, 0, 22, 170, 1, 0, 0, 0, 24, 172, 1, 0, 0, 0, 26, 174, 1, 0, 0, 0, 28, 186, 1, 0, 0, 0, 30, 188, 1, 0, 0, 0, 32, 190, 1, 0, 0, 0, 34, 193, 1, 0, 0, 0, 36, 40, 5, 13, 0, 0, 37, 39, 3, 2, 1, 0, 38, 37, 1, 0, 0, 0, 39, 42, 1, 0, 0, 0, 40, 38, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 49, 1, 0, 0, 0, 42, 40, 1, 0, 0, 0, 43, 45, 3, 2, 1, 0, 44, 43, 1, 0, 0, 0, 45, 46, 1, 0, 0, 0, 46, 44, 1, 0, 0, 0, 46, 47, 1, 0, 0, 0, 47, 49, 1, 0, 0, 0, 48, 36, 1, 0, 0, 0, 48, 44, 1, 0, 0, 0, 49, 1, 1, 0, 0, 0, 50, 51, 5, 11, 0, 0, 51, 55, 3, 4, 2, 0, 52, 55, 3, 6, 3, 0, 53, 55, 3, 8, 4, 0, 54, 50, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 54, 53, 1, 0, 0, 0, 55, 3, 1, 0, 0, 0, 56, 60, 3, 8, 4, 0, 57, 60, 3, 24, 12, 0, 58, 60, 3, 26, 13, 0, 59, 56, 1, 0, 0, 0, 59, 57, 1, 0, 0, 0, 59, 58, 1, 0, 0, 0, 60, 5, 1, 0, 0, 0, 61, 62, 5, 12, 0, 0, 62, 63, 3, 4, 2, 0, 63, 7, 1, 0, 0, 0, 64, 73, 5, 6, 0, 0, 65, 74, 3, 10, 5, 0, 66, 74, 3, 28, 14, 0, 67, 74, 3, 34, 17, 0, 68, 70, 3, 24, 12, 0, 69, 68, 1, 0, 0, 0, 70, 71, 1, 0, 0, 0, 71, 69, 1, 0, 0, 0, 71, 72, 1, 0, 0, 0, 72, 74, 1, 0, 0, 0, 73, 65, 1, 0, 0, 0, 73, 66, 1, 0, 0, 0, 73, 67, 1, 0, 0, 0, 73, 69, 1, 0, 0, 0, 74, 75, 1, 0, 0, 0, 75, 76, 5, 7, 0, 0, 76, 9, 1, 0, 0, 0, 77, 78, 5, 16, 0, 0, 78, 80, 5, 8, 0, 0, 79, 81, 3, 12, 6, 0, 80, 79, 1, 0, 0, 0, 81, 82, 1, 0, 0, 0, 82, 80, 1, 0, 0, 0, 82, 83, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 85, 5, 9, 0, 0, 85, 11, 1, 0, 0, 0, 86, 91, 3, 14, 7, 0, 87, 91, 3, 18, 9, 0, 88, 91, 3, 16, 8, 0, 89, 91, 3, 20, 10, 0, 90, 86, 1, 0, 0, 0, 90, 87, 1, 0, 0, 0, 90, 88, 1, 0, 0, 0, 90, 89, 1, 0, 0, 0, 91, 13, 1, 0, 0, 0, 92, 93, 6, 7, -1, 0, 93, 94, 3, 18, 9, 0, 94, 95, 5, 30, 0, 0, 95, 96, 3, 18, 9, 0, 96, 126, 1, 0, 0, 0, 97, 98, 3, 18, 9, 0, 98, 99, 5, 30, 0, 0, 99, 100, 3, 14, 7, 7, 100, 126, 1, 0, 0, 0, 101, 102, 3, 18, 9, 0, 102, 103, 5, 30, 0, 0, 103, 104, 3, 16, 8, 0, 104, 126, 1, 0, 0, 0, 105, 106, 3, 16, 8, 0, 106, 107, 5, 30, 0, 0, 107, 108, 3, 16, 8, 0, 108, 126, 1, 0, 0, 0, 109, 110, 3, 16, 8, 0, 110, 111, 5, 30, 0, 0, 111, 112, 3, 14, 7, 4, 112, 126, 1, 0, 0, 0, 113, 114, 3, 16, 8, 0, 114, 115, 5, 30, 0, 0, 115, 116, 3, 18, 9, 0, 116, 126, 1, 0, 0, 0, 117, 118, 3, 20, 10, 0, 118, 119, 5, 33, 0, 0, 119, 120, 3, 22, 11, 0, 120, 126, 1, 0, 0, 0, 121, 122, 3, 22, 11, 0, 122, 123, 5, 33, 0, 0, 123, 124, 3, 20, 10, 0, 124, 126, 1, 0, 0, 0, 125, 92, 1, 0, 0, 0, 125, 97, 1, 0, 0, 0, 125, 101, 1, 0, 0, 0, 125, 105, 1, 0, 0, 0, 125, 109, 1, 0, 0, 0, 125, 113, 1, 0, 0, 0, 125, 117, 1, 0, 0, 0, 125, 121, 1, 0, 0, 0, 126, 138, 1, 0, 0, 0, 127, 128, 10, 11, 0, 0, 128, 129, 5, 30, 0, 0, 129, 137, 3, 14, 7, 12, 130, 131, 10, 10, 0, 0, 131, 132, 5, 30, 0, 0, 132, 137, 3, 18, 9, 0, 133, 134, 10, 9, 0, 0, 134, 135, 5, 30, 0, 0, 135, 137, 3, 16, 8, 0, 136, 127, 1, 0, 0, 0, 136, 130, 1, 0, 0, 0, 136, 133, 1, 0, 0, 0, 137, 140, 1, 0, 0, 0, 138, 136, 1, 0, 0, 0, 138, 139, 1, 0, 0, 0, 139, 15, 1, 0, 0, 0, 140, 138, 1, 0, 0, 0, 141, 142, 3, 20, 10, 0, 142, 143, 5, 17, 0, 0, 143, 144, 3, 22, 11, 0, 144, 150, 1, 0, 0, 0, 145, 146, 3, 22, 11, 0, 146, 147, 5, 17, 0, 0, 147, 148, 3, 20, 10, 0, 148, 150, 1, 0, 0, 0, 149, 141, 1, 0, 0, 0, 149, 145, 1, 0, 0, 0, 150, 17, 1, 0, 0, 0, 151, 152, 3, 20, 10, 0, 152, 153, 5, 3, 0, 0, 153, 154, 5, 38, 0, 0, 154, 155, 5, 36, 0, 0, 155, 19, 1, 0, 0, 0, 156, 165, 5, 10, 0, 0, 157, 158, 5, 11, 0, 0, 158, 166, 5, 21, 0, 0, 159, 161, 5, 11, 0, 0, 160, 159, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 162, 1, 0, 0, 0, 162, 163, 5, 6, 0, 0, 163, 164, 5, 22, 0, 0, 164, 166, 5, 7, 0, 0, 165, 157, 1, 0, 0, 0, 165, 160, 1, 0, 0, 0, 165, 166, 1, 0, 0, 0, 166, 169, 1, 0, 0, 0, 167, 169, 3, 0, 0, 0, 168, 156, 1, 0, 0, 0, 168, 167, 1, 0, 0, 0, 169, 21, 1, 0, 0, 0, 170, 171, 7, 0, 0, 0, 171, 23, 1, 0, 0, 0, 172, 173, 7, 1, 0, 0, 173, 25, 1, 0, 0, 0, 174, 175, 5, 14, 0, 0, 175, 27, 1, 0, 0, 0, 176, 177, 3, 30, 15, 0, 177, 179, 5, 15, 0, 0, 178, 180, 3, 32, 16, 0, 179, 178, 1, 0, 0, 0, 179, 180, 1, 0, 0, 0, 180, 187, 1, 0, 0, 0, 181, 182, 5, 15, 0, 0, 182, 187, 5, 23, 0, 0, 183, 184, 5, 24, 0, 0, 184, 187, 5, 15, 0, 0, 185, 187, 3, 26, 13, 0, 186, 176, 1, 0, 0, 0, 186, 181, 1, 0, 0, 0, 186, 183, 1, 0, 0, 0, 186, 185, 1, 0, 0, 0, 187, 29, 1, 0, 0, 0, 188, 189, 5, 23, 0, 0, 189, 31, 1, 0, 0, 0, 190, 191, 5, 23, 0, 0, 191, 33, 1, 0, 0, 0, 192, 194, 5, 23, 0, 0, 193, 192, 1, 0, 0, 0, 194, 195, 1, 0, 0, 0, 195, 193, 1, 0, 0, 0, 195, 196, 1, 0, 0, 0, 196, 35, 1, 0, 0, 0, 19, 40, 46, 48, 54, 59, 71, 73, 82, 90, 125, 136, 138, 149, 160, 165, 168, 179, 186, 195]

0 commit comments

Comments
 (0)