diff --git a/go.mod b/go.mod index 9eff0323db..1f15162d51 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,14 @@ module github.com/milvus-io/milvus -go 1.21 +go 1.22 + +toolchain go1.22.0 require ( github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.1.0 github.com/aliyun/credentials-go v1.2.7 - github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e github.com/apache/arrow/go/v12 v12.0.1 github.com/bits-and-blooms/bloom/v3 v3.0.1 github.com/blang/semver/v4 v4.0.0 @@ -46,7 +47,7 @@ require ( go.uber.org/multierr v1.11.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.25.0 - golang.org/x/exp v0.0.0-20230728194245-b0cb94b80691 + golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 golang.org/x/net v0.27.0 golang.org/x/oauth2 v0.21.0 golang.org/x/sync v0.7.0 @@ -92,6 +93,7 @@ require ( github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68 // indirect github.com/alibabacloud-go/tea v1.1.8 // indirect github.com/andybalholm/brotli v1.0.4 // indirect + github.com/antlr4-go/antlr/v4 v4.13.1 // indirect github.com/apache/pulsar-client-go v0.6.1-0.20210728062540-29414db801a7 // indirect github.com/apache/thrift v0.18.1 // indirect github.com/ardielle/ardielle-go v1.5.2 // indirect diff --git a/go.sum b/go.sum index b5108edda4..2d142d0f54 100644 --- a/go.sum +++ b/go.sum @@ -108,6 +108,8 @@ github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQY github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e h1:GCzyKMDDjSGnlpl3clrdAK7I1AaVoaiKDOYkUzChZzg= github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= +github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ= +github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw= github.com/apache/thrift v0.18.1 h1:lNhK/1nqjbwbiOPDBPFJVKxgDEGSepKuTh6OLiXW8kg= github.com/apache/thrift v0.18.1/go.mod h1:rdQn/dCcDKEWjjylUeueum4vQEjG2v8v2PqriUnbr+I= github.com/ardielle/ardielle-go v1.5.2 h1:TilHTpHIQJ27R1Tl/iITBzMwiUGSlVfiVhwDNGM3Zj4= @@ -1047,6 +1049,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20230728194245-b0cb94b80691 h1:/yRP+0AN7mf5DkD3BAI6TOFnd51gEoDEb8o35jIFtgw= golang.org/x/exp v0.0.0-20230728194245-b0cb94b80691/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= +golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= diff --git a/internal/parser/planparserv2/Plan.g4 b/internal/parser/planparserv2/Plan.g4 index 61204d47e8..c0644436a2 100644 --- a/internal/parser/planparserv2/Plan.g4 +++ b/internal/parser/planparserv2/Plan.g4 @@ -9,6 +9,7 @@ expr: | JSONIdentifier # JSONIdentifier | '(' expr ')' # Parens | '[' expr (',' expr)* ','? ']' # Array + | EmptyArray # EmptyArray | expr LIKE StringLiteral # Like | TEXTMATCH'('Identifier',' StringLiteral')' # TextMatch | expr POW expr # Power @@ -17,8 +18,8 @@ expr: | expr op = (MUL | DIV | MOD) expr # MulDivMod | expr op = (ADD | SUB) expr # AddSub | expr op = (SHL | SHR) expr # Shift - | expr op = (IN | NIN) ('[' expr (',' expr)* ','? ']') # Term - | expr op = (IN | NIN) EmptyTerm # EmptyTerm + | expr op = NOT? IN expr # Term +// | EmptyTerm # EmptyTerm | (JSONContains | ArrayContains)'('expr',' expr')' # JSONContains | (JSONContainsAll | ArrayContainsAll)'('expr',' expr')' # JSONContainsAll | (JSONContainsAny | ArrayContainsAny)'('expr',' expr')' # JSONContainsAny @@ -53,7 +54,7 @@ NE: '!='; LIKE: 'like' | 'LIKE'; EXISTS: 'exists' | 'EXISTS'; -TEXTMATCH: 'TextMatch'; +TEXTMATCH: 'TextMatch'|'textmatch'|'TEXTMATCH'; ADD: '+'; SUB: '-'; @@ -73,9 +74,8 @@ OR: '||' | 'or'; BNOT: '~'; NOT: '!' | 'not'; -IN: 'in'; -NIN: 'not in'; -EmptyTerm: '[' (Whitespace | Newline)* ']'; +IN: 'in' | 'IN'; +EmptyArray: '[' (Whitespace | Newline)* ']'; JSONContains: 'json_contains' | 'JSON_CONTAINS'; JSONContainsAll: 'json_contains_all' | 'JSON_CONTAINS_ALL'; diff --git a/internal/parser/planparserv2/README.md b/internal/parser/planparserv2/README.md index 627557b226..6c24fde428 100644 --- a/internal/parser/planparserv2/README.md +++ b/internal/parser/planparserv2/README.md @@ -4,7 +4,7 @@ Please follow [install antlr4](https://github.com/antlr/antlr4/blob/master/doc/go-target.md) to install the antlr tool. -The version of antlr tool: `4.9`. +The version of antlr tool: `4.13.2`. ## Code Generate diff --git a/internal/parser/planparserv2/error_listener.go b/internal/parser/planparserv2/error_listener.go index ae429ad1e5..87be54cff9 100644 --- a/internal/parser/planparserv2/error_listener.go +++ b/internal/parser/planparserv2/error_listener.go @@ -4,7 +4,7 @@ import ( "fmt" "strconv" - "github.com/antlr/antlr4/runtime/Go/antlr" + "github.com/antlr4-go/antlr/v4" ) type errorListener interface { diff --git a/internal/parser/planparserv2/generate.sh b/internal/parser/planparserv2/generate.sh index 0d5b1bb67a..d5991f6684 100755 --- a/internal/parser/planparserv2/generate.sh +++ b/internal/parser/planparserv2/generate.sh @@ -1,5 +1,5 @@ #!/usr/bin/env sh -alias antlr4='java -Xmx500M -cp "../../../scripts/antlr-4.9-complete.jar:$CLASSPATH" org.antlr.v4.Tool' +alias antlr4='java -Xmx500M -cp "../../../scripts/antlr-4.13.2-complete.jar:$CLASSPATH" org.antlr.v4.Tool' rm -fr generated antlr4 -Dlanguage=Go -package planparserv2 -o generated -no-listener -visitor Plan.g4 diff --git a/internal/parser/planparserv2/generated/Plan.interp b/internal/parser/planparserv2/generated/Plan.interp index 1c771926e3..41ef66eeef 100644 --- a/internal/parser/planparserv2/generated/Plan.interp +++ b/internal/parser/planparserv2/generated/Plan.interp @@ -13,7 +13,7 @@ null '!=' null null -'TextMatch' +null '+' '-' '*' @@ -29,8 +29,7 @@ null null '~' null -'in' -'not in' +null null null null @@ -80,8 +79,7 @@ OR BNOT NOT IN -NIN -EmptyTerm +EmptyArray JSONContains JSONContainsAll JSONContainsAny @@ -103,4 +101,4 @@ expr atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 49, 137, 4, 2, 9, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 7, 2, 20, 10, 2, 12, 2, 14, 2, 23, 11, 2, 3, 2, 5, 2, 26, 10, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 2, 65, 10, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 7, 2, 119, 10, 2, 12, 2, 14, 2, 122, 11, 2, 3, 2, 5, 2, 125, 10, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 7, 2, 132, 10, 2, 12, 2, 14, 2, 135, 11, 2, 3, 2, 2, 3, 2, 3, 2, 2, 15, 4, 2, 17, 18, 30, 31, 4, 2, 35, 35, 38, 38, 4, 2, 36, 36, 39, 39, 4, 2, 37, 37, 40, 40, 4, 2, 45, 45, 47, 47, 3, 2, 19, 21, 3, 2, 17, 18, 3, 2, 23, 24, 3, 2, 8, 9, 3, 2, 10, 11, 3, 2, 8, 11, 3, 2, 12, 13, 3, 2, 32, 33, 2, 169, 2, 64, 3, 2, 2, 2, 4, 5, 8, 2, 1, 2, 5, 65, 7, 43, 2, 2, 6, 65, 7, 44, 2, 2, 7, 65, 7, 42, 2, 2, 8, 65, 7, 46, 2, 2, 9, 65, 7, 45, 2, 2, 10, 65, 7, 47, 2, 2, 11, 12, 7, 3, 2, 2, 12, 13, 5, 2, 2, 2, 13, 14, 7, 4, 2, 2, 14, 65, 3, 2, 2, 2, 15, 16, 7, 5, 2, 2, 16, 21, 5, 2, 2, 2, 17, 18, 7, 6, 2, 2, 18, 20, 5, 2, 2, 2, 19, 17, 3, 2, 2, 2, 20, 23, 3, 2, 2, 2, 21, 19, 3, 2, 2, 2, 21, 22, 3, 2, 2, 2, 22, 25, 3, 2, 2, 2, 23, 21, 3, 2, 2, 2, 24, 26, 7, 6, 2, 2, 25, 24, 3, 2, 2, 2, 25, 26, 3, 2, 2, 2, 26, 27, 3, 2, 2, 2, 27, 28, 7, 7, 2, 2, 28, 65, 3, 2, 2, 2, 29, 30, 7, 16, 2, 2, 30, 31, 7, 3, 2, 2, 31, 32, 7, 45, 2, 2, 32, 33, 7, 6, 2, 2, 33, 34, 7, 46, 2, 2, 34, 65, 7, 4, 2, 2, 35, 36, 9, 2, 2, 2, 36, 65, 5, 2, 2, 22, 37, 38, 9, 3, 2, 2, 38, 39, 7, 3, 2, 2, 39, 40, 5, 2, 2, 2, 40, 41, 7, 6, 2, 2, 41, 42, 5, 2, 2, 2, 42, 43, 7, 4, 2, 2, 43, 65, 3, 2, 2, 2, 44, 45, 9, 4, 2, 2, 45, 46, 7, 3, 2, 2, 46, 47, 5, 2, 2, 2, 47, 48, 7, 6, 2, 2, 48, 49, 5, 2, 2, 2, 49, 50, 7, 4, 2, 2, 50, 65, 3, 2, 2, 2, 51, 52, 9, 5, 2, 2, 52, 53, 7, 3, 2, 2, 53, 54, 5, 2, 2, 2, 54, 55, 7, 6, 2, 2, 55, 56, 5, 2, 2, 2, 56, 57, 7, 4, 2, 2, 57, 65, 3, 2, 2, 2, 58, 59, 7, 41, 2, 2, 59, 60, 7, 3, 2, 2, 60, 61, 9, 6, 2, 2, 61, 65, 7, 4, 2, 2, 62, 63, 7, 15, 2, 2, 63, 65, 5, 2, 2, 3, 64, 4, 3, 2, 2, 2, 64, 6, 3, 2, 2, 2, 64, 7, 3, 2, 2, 2, 64, 8, 3, 2, 2, 2, 64, 9, 3, 2, 2, 2, 64, 10, 3, 2, 2, 2, 64, 11, 3, 2, 2, 2, 64, 15, 3, 2, 2, 2, 64, 29, 3, 2, 2, 2, 64, 35, 3, 2, 2, 2, 64, 37, 3, 2, 2, 2, 64, 44, 3, 2, 2, 2, 64, 51, 3, 2, 2, 2, 64, 58, 3, 2, 2, 2, 64, 62, 3, 2, 2, 2, 65, 133, 3, 2, 2, 2, 66, 67, 12, 23, 2, 2, 67, 68, 7, 22, 2, 2, 68, 132, 5, 2, 2, 24, 69, 70, 12, 21, 2, 2, 70, 71, 9, 7, 2, 2, 71, 132, 5, 2, 2, 22, 72, 73, 12, 20, 2, 2, 73, 74, 9, 8, 2, 2, 74, 132, 5, 2, 2, 21, 75, 76, 12, 19, 2, 2, 76, 77, 9, 9, 2, 2, 77, 132, 5, 2, 2, 20, 78, 79, 12, 12, 2, 2, 79, 80, 9, 10, 2, 2, 80, 81, 9, 6, 2, 2, 81, 82, 9, 10, 2, 2, 82, 132, 5, 2, 2, 13, 83, 84, 12, 11, 2, 2, 84, 85, 9, 11, 2, 2, 85, 86, 9, 6, 2, 2, 86, 87, 9, 11, 2, 2, 87, 132, 5, 2, 2, 12, 88, 89, 12, 10, 2, 2, 89, 90, 9, 12, 2, 2, 90, 132, 5, 2, 2, 11, 91, 92, 12, 9, 2, 2, 92, 93, 9, 13, 2, 2, 93, 132, 5, 2, 2, 10, 94, 95, 12, 8, 2, 2, 95, 96, 7, 25, 2, 2, 96, 132, 5, 2, 2, 9, 97, 98, 12, 7, 2, 2, 98, 99, 7, 27, 2, 2, 99, 132, 5, 2, 2, 8, 100, 101, 12, 6, 2, 2, 101, 102, 7, 26, 2, 2, 102, 132, 5, 2, 2, 7, 103, 104, 12, 5, 2, 2, 104, 105, 7, 28, 2, 2, 105, 132, 5, 2, 2, 6, 106, 107, 12, 4, 2, 2, 107, 108, 7, 29, 2, 2, 108, 132, 5, 2, 2, 5, 109, 110, 12, 25, 2, 2, 110, 111, 7, 14, 2, 2, 111, 132, 7, 46, 2, 2, 112, 113, 12, 18, 2, 2, 113, 114, 9, 14, 2, 2, 114, 115, 7, 5, 2, 2, 115, 120, 5, 2, 2, 2, 116, 117, 7, 6, 2, 2, 117, 119, 5, 2, 2, 2, 118, 116, 3, 2, 2, 2, 119, 122, 3, 2, 2, 2, 120, 118, 3, 2, 2, 2, 120, 121, 3, 2, 2, 2, 121, 124, 3, 2, 2, 2, 122, 120, 3, 2, 2, 2, 123, 125, 7, 6, 2, 2, 124, 123, 3, 2, 2, 2, 124, 125, 3, 2, 2, 2, 125, 126, 3, 2, 2, 2, 126, 127, 7, 7, 2, 2, 127, 132, 3, 2, 2, 2, 128, 129, 12, 17, 2, 2, 129, 130, 9, 14, 2, 2, 130, 132, 7, 34, 2, 2, 131, 66, 3, 2, 2, 2, 131, 69, 3, 2, 2, 2, 131, 72, 3, 2, 2, 2, 131, 75, 3, 2, 2, 2, 131, 78, 3, 2, 2, 2, 131, 83, 3, 2, 2, 2, 131, 88, 3, 2, 2, 2, 131, 91, 3, 2, 2, 2, 131, 94, 3, 2, 2, 2, 131, 97, 3, 2, 2, 2, 131, 100, 3, 2, 2, 2, 131, 103, 3, 2, 2, 2, 131, 106, 3, 2, 2, 2, 131, 109, 3, 2, 2, 2, 131, 112, 3, 2, 2, 2, 131, 128, 3, 2, 2, 2, 132, 135, 3, 2, 2, 2, 133, 131, 3, 2, 2, 2, 133, 134, 3, 2, 2, 2, 134, 3, 3, 2, 2, 2, 135, 133, 3, 2, 2, 2, 9, 21, 25, 64, 120, 124, 131, 133] \ No newline at end of file +[4, 1, 46, 123, 2, 0, 7, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 18, 8, 0, 10, 0, 12, 0, 21, 9, 0, 1, 0, 3, 0, 24, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 64, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 80, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 118, 8, 0, 10, 0, 12, 0, 121, 9, 0, 1, 0, 0, 1, 0, 1, 0, 0, 12, 2, 0, 15, 16, 28, 29, 2, 0, 32, 32, 35, 35, 2, 0, 33, 33, 36, 36, 2, 0, 34, 34, 37, 37, 2, 0, 42, 42, 44, 44, 1, 0, 17, 19, 1, 0, 15, 16, 1, 0, 21, 22, 1, 0, 6, 7, 1, 0, 8, 9, 1, 0, 6, 9, 1, 0, 10, 11, 154, 0, 63, 1, 0, 0, 0, 2, 3, 6, 0, -1, 0, 3, 64, 5, 40, 0, 0, 4, 64, 5, 41, 0, 0, 5, 64, 5, 39, 0, 0, 6, 64, 5, 43, 0, 0, 7, 64, 5, 42, 0, 0, 8, 64, 5, 44, 0, 0, 9, 10, 5, 1, 0, 0, 10, 11, 3, 0, 0, 0, 11, 12, 5, 2, 0, 0, 12, 64, 1, 0, 0, 0, 13, 14, 5, 3, 0, 0, 14, 19, 3, 0, 0, 0, 15, 16, 5, 4, 0, 0, 16, 18, 3, 0, 0, 0, 17, 15, 1, 0, 0, 0, 18, 21, 1, 0, 0, 0, 19, 17, 1, 0, 0, 0, 19, 20, 1, 0, 0, 0, 20, 23, 1, 0, 0, 0, 21, 19, 1, 0, 0, 0, 22, 24, 5, 4, 0, 0, 23, 22, 1, 0, 0, 0, 23, 24, 1, 0, 0, 0, 24, 25, 1, 0, 0, 0, 25, 26, 5, 5, 0, 0, 26, 64, 1, 0, 0, 0, 27, 64, 5, 31, 0, 0, 28, 29, 5, 14, 0, 0, 29, 30, 5, 1, 0, 0, 30, 31, 5, 42, 0, 0, 31, 32, 5, 4, 0, 0, 32, 33, 5, 43, 0, 0, 33, 64, 5, 2, 0, 0, 34, 35, 7, 0, 0, 0, 35, 64, 3, 0, 0, 19, 36, 37, 7, 1, 0, 0, 37, 38, 5, 1, 0, 0, 38, 39, 3, 0, 0, 0, 39, 40, 5, 4, 0, 0, 40, 41, 3, 0, 0, 0, 41, 42, 5, 2, 0, 0, 42, 64, 1, 0, 0, 0, 43, 44, 7, 2, 0, 0, 44, 45, 5, 1, 0, 0, 45, 46, 3, 0, 0, 0, 46, 47, 5, 4, 0, 0, 47, 48, 3, 0, 0, 0, 48, 49, 5, 2, 0, 0, 49, 64, 1, 0, 0, 0, 50, 51, 7, 3, 0, 0, 51, 52, 5, 1, 0, 0, 52, 53, 3, 0, 0, 0, 53, 54, 5, 4, 0, 0, 54, 55, 3, 0, 0, 0, 55, 56, 5, 2, 0, 0, 56, 64, 1, 0, 0, 0, 57, 58, 5, 38, 0, 0, 58, 59, 5, 1, 0, 0, 59, 60, 7, 4, 0, 0, 60, 64, 5, 2, 0, 0, 61, 62, 5, 13, 0, 0, 62, 64, 3, 0, 0, 1, 63, 2, 1, 0, 0, 0, 63, 4, 1, 0, 0, 0, 63, 5, 1, 0, 0, 0, 63, 6, 1, 0, 0, 0, 63, 7, 1, 0, 0, 0, 63, 8, 1, 0, 0, 0, 63, 9, 1, 0, 0, 0, 63, 13, 1, 0, 0, 0, 63, 27, 1, 0, 0, 0, 63, 28, 1, 0, 0, 0, 63, 34, 1, 0, 0, 0, 63, 36, 1, 0, 0, 0, 63, 43, 1, 0, 0, 0, 63, 50, 1, 0, 0, 0, 63, 57, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 64, 119, 1, 0, 0, 0, 65, 66, 10, 20, 0, 0, 66, 67, 5, 20, 0, 0, 67, 118, 3, 0, 0, 21, 68, 69, 10, 18, 0, 0, 69, 70, 7, 5, 0, 0, 70, 118, 3, 0, 0, 19, 71, 72, 10, 17, 0, 0, 72, 73, 7, 6, 0, 0, 73, 118, 3, 0, 0, 18, 74, 75, 10, 16, 0, 0, 75, 76, 7, 7, 0, 0, 76, 118, 3, 0, 0, 17, 77, 79, 10, 15, 0, 0, 78, 80, 5, 29, 0, 0, 79, 78, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 5, 30, 0, 0, 82, 118, 3, 0, 0, 16, 83, 84, 10, 10, 0, 0, 84, 85, 7, 8, 0, 0, 85, 86, 7, 4, 0, 0, 86, 87, 7, 8, 0, 0, 87, 118, 3, 0, 0, 11, 88, 89, 10, 9, 0, 0, 89, 90, 7, 9, 0, 0, 90, 91, 7, 4, 0, 0, 91, 92, 7, 9, 0, 0, 92, 118, 3, 0, 0, 10, 93, 94, 10, 8, 0, 0, 94, 95, 7, 10, 0, 0, 95, 118, 3, 0, 0, 9, 96, 97, 10, 7, 0, 0, 97, 98, 7, 11, 0, 0, 98, 118, 3, 0, 0, 8, 99, 100, 10, 6, 0, 0, 100, 101, 5, 23, 0, 0, 101, 118, 3, 0, 0, 7, 102, 103, 10, 5, 0, 0, 103, 104, 5, 25, 0, 0, 104, 118, 3, 0, 0, 6, 105, 106, 10, 4, 0, 0, 106, 107, 5, 24, 0, 0, 107, 118, 3, 0, 0, 5, 108, 109, 10, 3, 0, 0, 109, 110, 5, 26, 0, 0, 110, 118, 3, 0, 0, 4, 111, 112, 10, 2, 0, 0, 112, 113, 5, 27, 0, 0, 113, 118, 3, 0, 0, 3, 114, 115, 10, 22, 0, 0, 115, 116, 5, 12, 0, 0, 116, 118, 5, 43, 0, 0, 117, 65, 1, 0, 0, 0, 117, 68, 1, 0, 0, 0, 117, 71, 1, 0, 0, 0, 117, 74, 1, 0, 0, 0, 117, 77, 1, 0, 0, 0, 117, 83, 1, 0, 0, 0, 117, 88, 1, 0, 0, 0, 117, 93, 1, 0, 0, 0, 117, 96, 1, 0, 0, 0, 117, 99, 1, 0, 0, 0, 117, 102, 1, 0, 0, 0, 117, 105, 1, 0, 0, 0, 117, 108, 1, 0, 0, 0, 117, 111, 1, 0, 0, 0, 117, 114, 1, 0, 0, 0, 118, 121, 1, 0, 0, 0, 119, 117, 1, 0, 0, 0, 119, 120, 1, 0, 0, 0, 120, 1, 1, 0, 0, 0, 121, 119, 1, 0, 0, 0, 6, 19, 23, 63, 79, 117, 119] \ No newline at end of file diff --git a/internal/parser/planparserv2/generated/Plan.tokens b/internal/parser/planparserv2/generated/Plan.tokens index 1a85aa191b..766b852b6b 100644 --- a/internal/parser/planparserv2/generated/Plan.tokens +++ b/internal/parser/planparserv2/generated/Plan.tokens @@ -28,23 +28,22 @@ OR=27 BNOT=28 NOT=29 IN=30 -NIN=31 -EmptyTerm=32 -JSONContains=33 -JSONContainsAll=34 -JSONContainsAny=35 -ArrayContains=36 -ArrayContainsAll=37 -ArrayContainsAny=38 -ArrayLength=39 -BooleanConstant=40 -IntegerConstant=41 -FloatingConstant=42 -Identifier=43 -StringLiteral=44 -JSONIdentifier=45 -Whitespace=46 -Newline=47 +EmptyArray=31 +JSONContains=32 +JSONContainsAll=33 +JSONContainsAny=34 +ArrayContains=35 +ArrayContainsAll=36 +ArrayContainsAny=37 +ArrayLength=38 +BooleanConstant=39 +IntegerConstant=40 +FloatingConstant=41 +Identifier=42 +StringLiteral=43 +JSONIdentifier=44 +Whitespace=45 +Newline=46 '('=1 ')'=2 '['=3 @@ -56,7 +55,6 @@ Newline=47 '>='=9 '=='=10 '!='=11 -'TextMatch'=14 '+'=15 '-'=16 '*'=17 @@ -69,5 +67,3 @@ Newline=47 '|'=24 '^'=25 '~'=28 -'in'=30 -'not in'=31 diff --git a/internal/parser/planparserv2/generated/PlanLexer.interp b/internal/parser/planparserv2/generated/PlanLexer.interp index e85593e186..5291a301fd 100644 --- a/internal/parser/planparserv2/generated/PlanLexer.interp +++ b/internal/parser/planparserv2/generated/PlanLexer.interp @@ -13,7 +13,7 @@ null '!=' null null -'TextMatch' +null '+' '-' '*' @@ -29,8 +29,7 @@ null null '~' null -'in' -'not in' +null null null null @@ -80,8 +79,7 @@ OR BNOT NOT IN -NIN -EmptyTerm +EmptyArray JSONContains JSONContainsAll JSONContainsAny @@ -129,8 +127,7 @@ OR BNOT NOT IN -NIN -EmptyTerm +EmptyArray JSONContains JSONContainsAll JSONContainsAny @@ -180,4 +177,4 @@ mode names: DEFAULT_MODE atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 49, 766, 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, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 182, 10, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 196, 10, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 5, 27, 238, 10, 27, 3, 28, 3, 28, 3, 28, 3, 28, 5, 28, 244, 10, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 252, 10, 30, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 7, 33, 267, 10, 33, 12, 33, 14, 33, 270, 11, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 5, 34, 300, 10, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 5, 35, 336, 10, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 5, 36, 372, 10, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 402, 10, 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, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 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, 440, 10, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 5, 39, 478, 10, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 5, 40, 504, 10, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 5, 41, 533, 10, 41, 3, 42, 3, 42, 3, 42, 3, 42, 5, 42, 539, 10, 42, 3, 43, 3, 43, 5, 43, 543, 10, 43, 3, 44, 3, 44, 3, 44, 7, 44, 548, 10, 44, 12, 44, 14, 44, 551, 11, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 5, 44, 558, 10, 44, 3, 45, 5, 45, 561, 10, 45, 3, 45, 3, 45, 5, 45, 565, 10, 45, 3, 45, 3, 45, 3, 45, 5, 45, 570, 10, 45, 3, 45, 5, 45, 573, 10, 45, 3, 46, 3, 46, 3, 46, 3, 46, 5, 46, 579, 10, 46, 3, 46, 3, 46, 6, 46, 583, 10, 46, 13, 46, 14, 46, 584, 3, 47, 3, 47, 3, 47, 5, 47, 590, 10, 47, 3, 48, 6, 48, 593, 10, 48, 13, 48, 14, 48, 594, 3, 49, 6, 49, 598, 10, 49, 13, 49, 14, 49, 599, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 5, 50, 609, 10, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 618, 10, 51, 3, 52, 3, 52, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 6, 54, 627, 10, 54, 13, 54, 14, 54, 628, 3, 55, 3, 55, 7, 55, 633, 10, 55, 12, 55, 14, 55, 636, 11, 55, 3, 55, 5, 55, 639, 10, 55, 3, 56, 3, 56, 7, 56, 643, 10, 56, 12, 56, 14, 56, 646, 11, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 59, 3, 59, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 5, 62, 673, 10, 62, 3, 63, 3, 63, 5, 63, 677, 10, 63, 3, 63, 3, 63, 3, 63, 5, 63, 682, 10, 63, 3, 64, 3, 64, 3, 64, 3, 64, 5, 64, 688, 10, 64, 3, 64, 3, 64, 3, 65, 5, 65, 693, 10, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 5, 65, 700, 10, 65, 3, 66, 3, 66, 5, 66, 704, 10, 66, 3, 66, 3, 66, 3, 67, 6, 67, 709, 10, 67, 13, 67, 14, 67, 710, 3, 68, 5, 68, 714, 10, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 721, 10, 68, 3, 69, 6, 69, 724, 10, 69, 13, 69, 14, 69, 725, 3, 70, 3, 70, 5, 70, 730, 10, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 5, 71, 739, 10, 71, 3, 71, 5, 71, 742, 10, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 5, 71, 749, 10, 71, 3, 72, 6, 72, 752, 10, 72, 13, 72, 14, 72, 753, 3, 72, 3, 72, 3, 73, 3, 73, 5, 73, 760, 10, 73, 3, 73, 5, 73, 763, 10, 73, 3, 73, 3, 73, 2, 2, 74, 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, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 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, 2, 125, 2, 127, 2, 129, 2, 131, 2, 133, 2, 135, 2, 137, 2, 139, 2, 141, 2, 143, 48, 145, 49, 3, 2, 18, 5, 2, 78, 78, 87, 87, 119, 119, 6, 2, 12, 12, 15, 15, 36, 36, 94, 94, 6, 2, 12, 12, 15, 15, 41, 41, 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, 805, 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, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 3, 147, 3, 2, 2, 2, 5, 149, 3, 2, 2, 2, 7, 151, 3, 2, 2, 2, 9, 153, 3, 2, 2, 2, 11, 155, 3, 2, 2, 2, 13, 157, 3, 2, 2, 2, 15, 159, 3, 2, 2, 2, 17, 162, 3, 2, 2, 2, 19, 164, 3, 2, 2, 2, 21, 167, 3, 2, 2, 2, 23, 170, 3, 2, 2, 2, 25, 181, 3, 2, 2, 2, 27, 195, 3, 2, 2, 2, 29, 197, 3, 2, 2, 2, 31, 207, 3, 2, 2, 2, 33, 209, 3, 2, 2, 2, 35, 211, 3, 2, 2, 2, 37, 213, 3, 2, 2, 2, 39, 215, 3, 2, 2, 2, 41, 217, 3, 2, 2, 2, 43, 220, 3, 2, 2, 2, 45, 223, 3, 2, 2, 2, 47, 226, 3, 2, 2, 2, 49, 228, 3, 2, 2, 2, 51, 230, 3, 2, 2, 2, 53, 237, 3, 2, 2, 2, 55, 243, 3, 2, 2, 2, 57, 245, 3, 2, 2, 2, 59, 251, 3, 2, 2, 2, 61, 253, 3, 2, 2, 2, 63, 256, 3, 2, 2, 2, 65, 263, 3, 2, 2, 2, 67, 299, 3, 2, 2, 2, 69, 335, 3, 2, 2, 2, 71, 371, 3, 2, 2, 2, 73, 401, 3, 2, 2, 2, 75, 439, 3, 2, 2, 2, 77, 477, 3, 2, 2, 2, 79, 503, 3, 2, 2, 2, 81, 532, 3, 2, 2, 2, 83, 538, 3, 2, 2, 2, 85, 542, 3, 2, 2, 2, 87, 557, 3, 2, 2, 2, 89, 560, 3, 2, 2, 2, 91, 574, 3, 2, 2, 2, 93, 589, 3, 2, 2, 2, 95, 592, 3, 2, 2, 2, 97, 597, 3, 2, 2, 2, 99, 608, 3, 2, 2, 2, 101, 617, 3, 2, 2, 2, 103, 619, 3, 2, 2, 2, 105, 621, 3, 2, 2, 2, 107, 623, 3, 2, 2, 2, 109, 638, 3, 2, 2, 2, 111, 640, 3, 2, 2, 2, 113, 647, 3, 2, 2, 2, 115, 651, 3, 2, 2, 2, 117, 653, 3, 2, 2, 2, 119, 655, 3, 2, 2, 2, 121, 657, 3, 2, 2, 2, 123, 672, 3, 2, 2, 2, 125, 681, 3, 2, 2, 2, 127, 683, 3, 2, 2, 2, 129, 699, 3, 2, 2, 2, 131, 701, 3, 2, 2, 2, 133, 708, 3, 2, 2, 2, 135, 720, 3, 2, 2, 2, 137, 723, 3, 2, 2, 2, 139, 727, 3, 2, 2, 2, 141, 748, 3, 2, 2, 2, 143, 751, 3, 2, 2, 2, 145, 762, 3, 2, 2, 2, 147, 148, 7, 42, 2, 2, 148, 4, 3, 2, 2, 2, 149, 150, 7, 43, 2, 2, 150, 6, 3, 2, 2, 2, 151, 152, 7, 93, 2, 2, 152, 8, 3, 2, 2, 2, 153, 154, 7, 46, 2, 2, 154, 10, 3, 2, 2, 2, 155, 156, 7, 95, 2, 2, 156, 12, 3, 2, 2, 2, 157, 158, 7, 62, 2, 2, 158, 14, 3, 2, 2, 2, 159, 160, 7, 62, 2, 2, 160, 161, 7, 63, 2, 2, 161, 16, 3, 2, 2, 2, 162, 163, 7, 64, 2, 2, 163, 18, 3, 2, 2, 2, 164, 165, 7, 64, 2, 2, 165, 166, 7, 63, 2, 2, 166, 20, 3, 2, 2, 2, 167, 168, 7, 63, 2, 2, 168, 169, 7, 63, 2, 2, 169, 22, 3, 2, 2, 2, 170, 171, 7, 35, 2, 2, 171, 172, 7, 63, 2, 2, 172, 24, 3, 2, 2, 2, 173, 174, 7, 110, 2, 2, 174, 175, 7, 107, 2, 2, 175, 176, 7, 109, 2, 2, 176, 182, 7, 103, 2, 2, 177, 178, 7, 78, 2, 2, 178, 179, 7, 75, 2, 2, 179, 180, 7, 77, 2, 2, 180, 182, 7, 71, 2, 2, 181, 173, 3, 2, 2, 2, 181, 177, 3, 2, 2, 2, 182, 26, 3, 2, 2, 2, 183, 184, 7, 103, 2, 2, 184, 185, 7, 122, 2, 2, 185, 186, 7, 107, 2, 2, 186, 187, 7, 117, 2, 2, 187, 188, 7, 118, 2, 2, 188, 196, 7, 117, 2, 2, 189, 190, 7, 71, 2, 2, 190, 191, 7, 90, 2, 2, 191, 192, 7, 75, 2, 2, 192, 193, 7, 85, 2, 2, 193, 194, 7, 86, 2, 2, 194, 196, 7, 85, 2, 2, 195, 183, 3, 2, 2, 2, 195, 189, 3, 2, 2, 2, 196, 28, 3, 2, 2, 2, 197, 198, 7, 86, 2, 2, 198, 199, 7, 103, 2, 2, 199, 200, 7, 122, 2, 2, 200, 201, 7, 118, 2, 2, 201, 202, 7, 79, 2, 2, 202, 203, 7, 99, 2, 2, 203, 204, 7, 118, 2, 2, 204, 205, 7, 101, 2, 2, 205, 206, 7, 106, 2, 2, 206, 30, 3, 2, 2, 2, 207, 208, 7, 45, 2, 2, 208, 32, 3, 2, 2, 2, 209, 210, 7, 47, 2, 2, 210, 34, 3, 2, 2, 2, 211, 212, 7, 44, 2, 2, 212, 36, 3, 2, 2, 2, 213, 214, 7, 49, 2, 2, 214, 38, 3, 2, 2, 2, 215, 216, 7, 39, 2, 2, 216, 40, 3, 2, 2, 2, 217, 218, 7, 44, 2, 2, 218, 219, 7, 44, 2, 2, 219, 42, 3, 2, 2, 2, 220, 221, 7, 62, 2, 2, 221, 222, 7, 62, 2, 2, 222, 44, 3, 2, 2, 2, 223, 224, 7, 64, 2, 2, 224, 225, 7, 64, 2, 2, 225, 46, 3, 2, 2, 2, 226, 227, 7, 40, 2, 2, 227, 48, 3, 2, 2, 2, 228, 229, 7, 126, 2, 2, 229, 50, 3, 2, 2, 2, 230, 231, 7, 96, 2, 2, 231, 52, 3, 2, 2, 2, 232, 233, 7, 40, 2, 2, 233, 238, 7, 40, 2, 2, 234, 235, 7, 99, 2, 2, 235, 236, 7, 112, 2, 2, 236, 238, 7, 102, 2, 2, 237, 232, 3, 2, 2, 2, 237, 234, 3, 2, 2, 2, 238, 54, 3, 2, 2, 2, 239, 240, 7, 126, 2, 2, 240, 244, 7, 126, 2, 2, 241, 242, 7, 113, 2, 2, 242, 244, 7, 116, 2, 2, 243, 239, 3, 2, 2, 2, 243, 241, 3, 2, 2, 2, 244, 56, 3, 2, 2, 2, 245, 246, 7, 128, 2, 2, 246, 58, 3, 2, 2, 2, 247, 252, 7, 35, 2, 2, 248, 249, 7, 112, 2, 2, 249, 250, 7, 113, 2, 2, 250, 252, 7, 118, 2, 2, 251, 247, 3, 2, 2, 2, 251, 248, 3, 2, 2, 2, 252, 60, 3, 2, 2, 2, 253, 254, 7, 107, 2, 2, 254, 255, 7, 112, 2, 2, 255, 62, 3, 2, 2, 2, 256, 257, 7, 112, 2, 2, 257, 258, 7, 113, 2, 2, 258, 259, 7, 118, 2, 2, 259, 260, 7, 34, 2, 2, 260, 261, 7, 107, 2, 2, 261, 262, 7, 112, 2, 2, 262, 64, 3, 2, 2, 2, 263, 268, 7, 93, 2, 2, 264, 267, 5, 143, 72, 2, 265, 267, 5, 145, 73, 2, 266, 264, 3, 2, 2, 2, 266, 265, 3, 2, 2, 2, 267, 270, 3, 2, 2, 2, 268, 266, 3, 2, 2, 2, 268, 269, 3, 2, 2, 2, 269, 271, 3, 2, 2, 2, 270, 268, 3, 2, 2, 2, 271, 272, 7, 95, 2, 2, 272, 66, 3, 2, 2, 2, 273, 274, 7, 108, 2, 2, 274, 275, 7, 117, 2, 2, 275, 276, 7, 113, 2, 2, 276, 277, 7, 112, 2, 2, 277, 278, 7, 97, 2, 2, 278, 279, 7, 101, 2, 2, 279, 280, 7, 113, 2, 2, 280, 281, 7, 112, 2, 2, 281, 282, 7, 118, 2, 2, 282, 283, 7, 99, 2, 2, 283, 284, 7, 107, 2, 2, 284, 285, 7, 112, 2, 2, 285, 300, 7, 117, 2, 2, 286, 287, 7, 76, 2, 2, 287, 288, 7, 85, 2, 2, 288, 289, 7, 81, 2, 2, 289, 290, 7, 80, 2, 2, 290, 291, 7, 97, 2, 2, 291, 292, 7, 69, 2, 2, 292, 293, 7, 81, 2, 2, 293, 294, 7, 80, 2, 2, 294, 295, 7, 86, 2, 2, 295, 296, 7, 67, 2, 2, 296, 297, 7, 75, 2, 2, 297, 298, 7, 80, 2, 2, 298, 300, 7, 85, 2, 2, 299, 273, 3, 2, 2, 2, 299, 286, 3, 2, 2, 2, 300, 68, 3, 2, 2, 2, 301, 302, 7, 108, 2, 2, 302, 303, 7, 117, 2, 2, 303, 304, 7, 113, 2, 2, 304, 305, 7, 112, 2, 2, 305, 306, 7, 97, 2, 2, 306, 307, 7, 101, 2, 2, 307, 308, 7, 113, 2, 2, 308, 309, 7, 112, 2, 2, 309, 310, 7, 118, 2, 2, 310, 311, 7, 99, 2, 2, 311, 312, 7, 107, 2, 2, 312, 313, 7, 112, 2, 2, 313, 314, 7, 117, 2, 2, 314, 315, 7, 97, 2, 2, 315, 316, 7, 99, 2, 2, 316, 317, 7, 110, 2, 2, 317, 336, 7, 110, 2, 2, 318, 319, 7, 76, 2, 2, 319, 320, 7, 85, 2, 2, 320, 321, 7, 81, 2, 2, 321, 322, 7, 80, 2, 2, 322, 323, 7, 97, 2, 2, 323, 324, 7, 69, 2, 2, 324, 325, 7, 81, 2, 2, 325, 326, 7, 80, 2, 2, 326, 327, 7, 86, 2, 2, 327, 328, 7, 67, 2, 2, 328, 329, 7, 75, 2, 2, 329, 330, 7, 80, 2, 2, 330, 331, 7, 85, 2, 2, 331, 332, 7, 97, 2, 2, 332, 333, 7, 67, 2, 2, 333, 334, 7, 78, 2, 2, 334, 336, 7, 78, 2, 2, 335, 301, 3, 2, 2, 2, 335, 318, 3, 2, 2, 2, 336, 70, 3, 2, 2, 2, 337, 338, 7, 108, 2, 2, 338, 339, 7, 117, 2, 2, 339, 340, 7, 113, 2, 2, 340, 341, 7, 112, 2, 2, 341, 342, 7, 97, 2, 2, 342, 343, 7, 101, 2, 2, 343, 344, 7, 113, 2, 2, 344, 345, 7, 112, 2, 2, 345, 346, 7, 118, 2, 2, 346, 347, 7, 99, 2, 2, 347, 348, 7, 107, 2, 2, 348, 349, 7, 112, 2, 2, 349, 350, 7, 117, 2, 2, 350, 351, 7, 97, 2, 2, 351, 352, 7, 99, 2, 2, 352, 353, 7, 112, 2, 2, 353, 372, 7, 123, 2, 2, 354, 355, 7, 76, 2, 2, 355, 356, 7, 85, 2, 2, 356, 357, 7, 81, 2, 2, 357, 358, 7, 80, 2, 2, 358, 359, 7, 97, 2, 2, 359, 360, 7, 69, 2, 2, 360, 361, 7, 81, 2, 2, 361, 362, 7, 80, 2, 2, 362, 363, 7, 86, 2, 2, 363, 364, 7, 67, 2, 2, 364, 365, 7, 75, 2, 2, 365, 366, 7, 80, 2, 2, 366, 367, 7, 85, 2, 2, 367, 368, 7, 97, 2, 2, 368, 369, 7, 67, 2, 2, 369, 370, 7, 80, 2, 2, 370, 372, 7, 91, 2, 2, 371, 337, 3, 2, 2, 2, 371, 354, 3, 2, 2, 2, 372, 72, 3, 2, 2, 2, 373, 374, 7, 99, 2, 2, 374, 375, 7, 116, 2, 2, 375, 376, 7, 116, 2, 2, 376, 377, 7, 99, 2, 2, 377, 378, 7, 123, 2, 2, 378, 379, 7, 97, 2, 2, 379, 380, 7, 101, 2, 2, 380, 381, 7, 113, 2, 2, 381, 382, 7, 112, 2, 2, 382, 383, 7, 118, 2, 2, 383, 384, 7, 99, 2, 2, 384, 385, 7, 107, 2, 2, 385, 386, 7, 112, 2, 2, 386, 402, 7, 117, 2, 2, 387, 388, 7, 67, 2, 2, 388, 389, 7, 84, 2, 2, 389, 390, 7, 84, 2, 2, 390, 391, 7, 67, 2, 2, 391, 392, 7, 91, 2, 2, 392, 393, 7, 97, 2, 2, 393, 394, 7, 69, 2, 2, 394, 395, 7, 81, 2, 2, 395, 396, 7, 80, 2, 2, 396, 397, 7, 86, 2, 2, 397, 398, 7, 67, 2, 2, 398, 399, 7, 75, 2, 2, 399, 400, 7, 80, 2, 2, 400, 402, 7, 85, 2, 2, 401, 373, 3, 2, 2, 2, 401, 387, 3, 2, 2, 2, 402, 74, 3, 2, 2, 2, 403, 404, 7, 99, 2, 2, 404, 405, 7, 116, 2, 2, 405, 406, 7, 116, 2, 2, 406, 407, 7, 99, 2, 2, 407, 408, 7, 123, 2, 2, 408, 409, 7, 97, 2, 2, 409, 410, 7, 101, 2, 2, 410, 411, 7, 113, 2, 2, 411, 412, 7, 112, 2, 2, 412, 413, 7, 118, 2, 2, 413, 414, 7, 99, 2, 2, 414, 415, 7, 107, 2, 2, 415, 416, 7, 112, 2, 2, 416, 417, 7, 117, 2, 2, 417, 418, 7, 97, 2, 2, 418, 419, 7, 99, 2, 2, 419, 420, 7, 110, 2, 2, 420, 440, 7, 110, 2, 2, 421, 422, 7, 67, 2, 2, 422, 423, 7, 84, 2, 2, 423, 424, 7, 84, 2, 2, 424, 425, 7, 67, 2, 2, 425, 426, 7, 91, 2, 2, 426, 427, 7, 97, 2, 2, 427, 428, 7, 69, 2, 2, 428, 429, 7, 81, 2, 2, 429, 430, 7, 80, 2, 2, 430, 431, 7, 86, 2, 2, 431, 432, 7, 67, 2, 2, 432, 433, 7, 75, 2, 2, 433, 434, 7, 80, 2, 2, 434, 435, 7, 85, 2, 2, 435, 436, 7, 97, 2, 2, 436, 437, 7, 67, 2, 2, 437, 438, 7, 78, 2, 2, 438, 440, 7, 78, 2, 2, 439, 403, 3, 2, 2, 2, 439, 421, 3, 2, 2, 2, 440, 76, 3, 2, 2, 2, 441, 442, 7, 99, 2, 2, 442, 443, 7, 116, 2, 2, 443, 444, 7, 116, 2, 2, 444, 445, 7, 99, 2, 2, 445, 446, 7, 123, 2, 2, 446, 447, 7, 97, 2, 2, 447, 448, 7, 101, 2, 2, 448, 449, 7, 113, 2, 2, 449, 450, 7, 112, 2, 2, 450, 451, 7, 118, 2, 2, 451, 452, 7, 99, 2, 2, 452, 453, 7, 107, 2, 2, 453, 454, 7, 112, 2, 2, 454, 455, 7, 117, 2, 2, 455, 456, 7, 97, 2, 2, 456, 457, 7, 99, 2, 2, 457, 458, 7, 112, 2, 2, 458, 478, 7, 123, 2, 2, 459, 460, 7, 67, 2, 2, 460, 461, 7, 84, 2, 2, 461, 462, 7, 84, 2, 2, 462, 463, 7, 67, 2, 2, 463, 464, 7, 91, 2, 2, 464, 465, 7, 97, 2, 2, 465, 466, 7, 69, 2, 2, 466, 467, 7, 81, 2, 2, 467, 468, 7, 80, 2, 2, 468, 469, 7, 86, 2, 2, 469, 470, 7, 67, 2, 2, 470, 471, 7, 75, 2, 2, 471, 472, 7, 80, 2, 2, 472, 473, 7, 85, 2, 2, 473, 474, 7, 97, 2, 2, 474, 475, 7, 67, 2, 2, 475, 476, 7, 80, 2, 2, 476, 478, 7, 91, 2, 2, 477, 441, 3, 2, 2, 2, 477, 459, 3, 2, 2, 2, 478, 78, 3, 2, 2, 2, 479, 480, 7, 99, 2, 2, 480, 481, 7, 116, 2, 2, 481, 482, 7, 116, 2, 2, 482, 483, 7, 99, 2, 2, 483, 484, 7, 123, 2, 2, 484, 485, 7, 97, 2, 2, 485, 486, 7, 110, 2, 2, 486, 487, 7, 103, 2, 2, 487, 488, 7, 112, 2, 2, 488, 489, 7, 105, 2, 2, 489, 490, 7, 118, 2, 2, 490, 504, 7, 106, 2, 2, 491, 492, 7, 67, 2, 2, 492, 493, 7, 84, 2, 2, 493, 494, 7, 84, 2, 2, 494, 495, 7, 67, 2, 2, 495, 496, 7, 91, 2, 2, 496, 497, 7, 97, 2, 2, 497, 498, 7, 78, 2, 2, 498, 499, 7, 71, 2, 2, 499, 500, 7, 80, 2, 2, 500, 501, 7, 73, 2, 2, 501, 502, 7, 86, 2, 2, 502, 504, 7, 74, 2, 2, 503, 479, 3, 2, 2, 2, 503, 491, 3, 2, 2, 2, 504, 80, 3, 2, 2, 2, 505, 506, 7, 118, 2, 2, 506, 507, 7, 116, 2, 2, 507, 508, 7, 119, 2, 2, 508, 533, 7, 103, 2, 2, 509, 510, 7, 86, 2, 2, 510, 511, 7, 116, 2, 2, 511, 512, 7, 119, 2, 2, 512, 533, 7, 103, 2, 2, 513, 514, 7, 86, 2, 2, 514, 515, 7, 84, 2, 2, 515, 516, 7, 87, 2, 2, 516, 533, 7, 71, 2, 2, 517, 518, 7, 104, 2, 2, 518, 519, 7, 99, 2, 2, 519, 520, 7, 110, 2, 2, 520, 521, 7, 117, 2, 2, 521, 533, 7, 103, 2, 2, 522, 523, 7, 72, 2, 2, 523, 524, 7, 99, 2, 2, 524, 525, 7, 110, 2, 2, 525, 526, 7, 117, 2, 2, 526, 533, 7, 103, 2, 2, 527, 528, 7, 72, 2, 2, 528, 529, 7, 67, 2, 2, 529, 530, 7, 78, 2, 2, 530, 531, 7, 85, 2, 2, 531, 533, 7, 71, 2, 2, 532, 505, 3, 2, 2, 2, 532, 509, 3, 2, 2, 2, 532, 513, 3, 2, 2, 2, 532, 517, 3, 2, 2, 2, 532, 522, 3, 2, 2, 2, 532, 527, 3, 2, 2, 2, 533, 82, 3, 2, 2, 2, 534, 539, 5, 109, 55, 2, 535, 539, 5, 111, 56, 2, 536, 539, 5, 113, 57, 2, 537, 539, 5, 107, 54, 2, 538, 534, 3, 2, 2, 2, 538, 535, 3, 2, 2, 2, 538, 536, 3, 2, 2, 2, 538, 537, 3, 2, 2, 2, 539, 84, 3, 2, 2, 2, 540, 543, 5, 125, 63, 2, 541, 543, 5, 127, 64, 2, 542, 540, 3, 2, 2, 2, 542, 541, 3, 2, 2, 2, 543, 86, 3, 2, 2, 2, 544, 549, 5, 103, 52, 2, 545, 548, 5, 103, 52, 2, 546, 548, 5, 105, 53, 2, 547, 545, 3, 2, 2, 2, 547, 546, 3, 2, 2, 2, 548, 551, 3, 2, 2, 2, 549, 547, 3, 2, 2, 2, 549, 550, 3, 2, 2, 2, 550, 558, 3, 2, 2, 2, 551, 549, 3, 2, 2, 2, 552, 553, 7, 38, 2, 2, 553, 554, 7, 111, 2, 2, 554, 555, 7, 103, 2, 2, 555, 556, 7, 118, 2, 2, 556, 558, 7, 99, 2, 2, 557, 544, 3, 2, 2, 2, 557, 552, 3, 2, 2, 2, 558, 88, 3, 2, 2, 2, 559, 561, 5, 93, 47, 2, 560, 559, 3, 2, 2, 2, 560, 561, 3, 2, 2, 2, 561, 572, 3, 2, 2, 2, 562, 564, 7, 36, 2, 2, 563, 565, 5, 95, 48, 2, 564, 563, 3, 2, 2, 2, 564, 565, 3, 2, 2, 2, 565, 566, 3, 2, 2, 2, 566, 573, 7, 36, 2, 2, 567, 569, 7, 41, 2, 2, 568, 570, 5, 97, 49, 2, 569, 568, 3, 2, 2, 2, 569, 570, 3, 2, 2, 2, 570, 571, 3, 2, 2, 2, 571, 573, 7, 41, 2, 2, 572, 562, 3, 2, 2, 2, 572, 567, 3, 2, 2, 2, 573, 90, 3, 2, 2, 2, 574, 582, 5, 87, 44, 2, 575, 578, 7, 93, 2, 2, 576, 579, 5, 89, 45, 2, 577, 579, 5, 109, 55, 2, 578, 576, 3, 2, 2, 2, 578, 577, 3, 2, 2, 2, 579, 580, 3, 2, 2, 2, 580, 581, 7, 95, 2, 2, 581, 583, 3, 2, 2, 2, 582, 575, 3, 2, 2, 2, 583, 584, 3, 2, 2, 2, 584, 582, 3, 2, 2, 2, 584, 585, 3, 2, 2, 2, 585, 92, 3, 2, 2, 2, 586, 587, 7, 119, 2, 2, 587, 590, 7, 58, 2, 2, 588, 590, 9, 2, 2, 2, 589, 586, 3, 2, 2, 2, 589, 588, 3, 2, 2, 2, 590, 94, 3, 2, 2, 2, 591, 593, 5, 99, 50, 2, 592, 591, 3, 2, 2, 2, 593, 594, 3, 2, 2, 2, 594, 592, 3, 2, 2, 2, 594, 595, 3, 2, 2, 2, 595, 96, 3, 2, 2, 2, 596, 598, 5, 101, 51, 2, 597, 596, 3, 2, 2, 2, 598, 599, 3, 2, 2, 2, 599, 597, 3, 2, 2, 2, 599, 600, 3, 2, 2, 2, 600, 98, 3, 2, 2, 2, 601, 609, 10, 3, 2, 2, 602, 609, 5, 141, 71, 2, 603, 604, 7, 94, 2, 2, 604, 609, 7, 12, 2, 2, 605, 606, 7, 94, 2, 2, 606, 607, 7, 15, 2, 2, 607, 609, 7, 12, 2, 2, 608, 601, 3, 2, 2, 2, 608, 602, 3, 2, 2, 2, 608, 603, 3, 2, 2, 2, 608, 605, 3, 2, 2, 2, 609, 100, 3, 2, 2, 2, 610, 618, 10, 4, 2, 2, 611, 618, 5, 141, 71, 2, 612, 613, 7, 94, 2, 2, 613, 618, 7, 12, 2, 2, 614, 615, 7, 94, 2, 2, 615, 616, 7, 15, 2, 2, 616, 618, 7, 12, 2, 2, 617, 610, 3, 2, 2, 2, 617, 611, 3, 2, 2, 2, 617, 612, 3, 2, 2, 2, 617, 614, 3, 2, 2, 2, 618, 102, 3, 2, 2, 2, 619, 620, 9, 5, 2, 2, 620, 104, 3, 2, 2, 2, 621, 622, 9, 6, 2, 2, 622, 106, 3, 2, 2, 2, 623, 624, 7, 50, 2, 2, 624, 626, 9, 7, 2, 2, 625, 627, 9, 8, 2, 2, 626, 625, 3, 2, 2, 2, 627, 628, 3, 2, 2, 2, 628, 626, 3, 2, 2, 2, 628, 629, 3, 2, 2, 2, 629, 108, 3, 2, 2, 2, 630, 634, 5, 115, 58, 2, 631, 633, 5, 105, 53, 2, 632, 631, 3, 2, 2, 2, 633, 636, 3, 2, 2, 2, 634, 632, 3, 2, 2, 2, 634, 635, 3, 2, 2, 2, 635, 639, 3, 2, 2, 2, 636, 634, 3, 2, 2, 2, 637, 639, 7, 50, 2, 2, 638, 630, 3, 2, 2, 2, 638, 637, 3, 2, 2, 2, 639, 110, 3, 2, 2, 2, 640, 644, 7, 50, 2, 2, 641, 643, 5, 117, 59, 2, 642, 641, 3, 2, 2, 2, 643, 646, 3, 2, 2, 2, 644, 642, 3, 2, 2, 2, 644, 645, 3, 2, 2, 2, 645, 112, 3, 2, 2, 2, 646, 644, 3, 2, 2, 2, 647, 648, 7, 50, 2, 2, 648, 649, 9, 9, 2, 2, 649, 650, 5, 137, 69, 2, 650, 114, 3, 2, 2, 2, 651, 652, 9, 10, 2, 2, 652, 116, 3, 2, 2, 2, 653, 654, 9, 11, 2, 2, 654, 118, 3, 2, 2, 2, 655, 656, 9, 12, 2, 2, 656, 120, 3, 2, 2, 2, 657, 658, 5, 119, 60, 2, 658, 659, 5, 119, 60, 2, 659, 660, 5, 119, 60, 2, 660, 661, 5, 119, 60, 2, 661, 122, 3, 2, 2, 2, 662, 663, 7, 94, 2, 2, 663, 664, 7, 119, 2, 2, 664, 665, 3, 2, 2, 2, 665, 673, 5, 121, 61, 2, 666, 667, 7, 94, 2, 2, 667, 668, 7, 87, 2, 2, 668, 669, 3, 2, 2, 2, 669, 670, 5, 121, 61, 2, 670, 671, 5, 121, 61, 2, 671, 673, 3, 2, 2, 2, 672, 662, 3, 2, 2, 2, 672, 666, 3, 2, 2, 2, 673, 124, 3, 2, 2, 2, 674, 676, 5, 129, 65, 2, 675, 677, 5, 131, 66, 2, 676, 675, 3, 2, 2, 2, 676, 677, 3, 2, 2, 2, 677, 682, 3, 2, 2, 2, 678, 679, 5, 133, 67, 2, 679, 680, 5, 131, 66, 2, 680, 682, 3, 2, 2, 2, 681, 674, 3, 2, 2, 2, 681, 678, 3, 2, 2, 2, 682, 126, 3, 2, 2, 2, 683, 684, 7, 50, 2, 2, 684, 687, 9, 9, 2, 2, 685, 688, 5, 135, 68, 2, 686, 688, 5, 137, 69, 2, 687, 685, 3, 2, 2, 2, 687, 686, 3, 2, 2, 2, 688, 689, 3, 2, 2, 2, 689, 690, 5, 139, 70, 2, 690, 128, 3, 2, 2, 2, 691, 693, 5, 133, 67, 2, 692, 691, 3, 2, 2, 2, 692, 693, 3, 2, 2, 2, 693, 694, 3, 2, 2, 2, 694, 695, 7, 48, 2, 2, 695, 700, 5, 133, 67, 2, 696, 697, 5, 133, 67, 2, 697, 698, 7, 48, 2, 2, 698, 700, 3, 2, 2, 2, 699, 692, 3, 2, 2, 2, 699, 696, 3, 2, 2, 2, 700, 130, 3, 2, 2, 2, 701, 703, 9, 13, 2, 2, 702, 704, 9, 14, 2, 2, 703, 702, 3, 2, 2, 2, 703, 704, 3, 2, 2, 2, 704, 705, 3, 2, 2, 2, 705, 706, 5, 133, 67, 2, 706, 132, 3, 2, 2, 2, 707, 709, 5, 105, 53, 2, 708, 707, 3, 2, 2, 2, 709, 710, 3, 2, 2, 2, 710, 708, 3, 2, 2, 2, 710, 711, 3, 2, 2, 2, 711, 134, 3, 2, 2, 2, 712, 714, 5, 137, 69, 2, 713, 712, 3, 2, 2, 2, 713, 714, 3, 2, 2, 2, 714, 715, 3, 2, 2, 2, 715, 716, 7, 48, 2, 2, 716, 721, 5, 137, 69, 2, 717, 718, 5, 137, 69, 2, 718, 719, 7, 48, 2, 2, 719, 721, 3, 2, 2, 2, 720, 713, 3, 2, 2, 2, 720, 717, 3, 2, 2, 2, 721, 136, 3, 2, 2, 2, 722, 724, 5, 119, 60, 2, 723, 722, 3, 2, 2, 2, 724, 725, 3, 2, 2, 2, 725, 723, 3, 2, 2, 2, 725, 726, 3, 2, 2, 2, 726, 138, 3, 2, 2, 2, 727, 729, 9, 15, 2, 2, 728, 730, 9, 14, 2, 2, 729, 728, 3, 2, 2, 2, 729, 730, 3, 2, 2, 2, 730, 731, 3, 2, 2, 2, 731, 732, 5, 133, 67, 2, 732, 140, 3, 2, 2, 2, 733, 734, 7, 94, 2, 2, 734, 749, 9, 16, 2, 2, 735, 736, 7, 94, 2, 2, 736, 738, 5, 117, 59, 2, 737, 739, 5, 117, 59, 2, 738, 737, 3, 2, 2, 2, 738, 739, 3, 2, 2, 2, 739, 741, 3, 2, 2, 2, 740, 742, 5, 117, 59, 2, 741, 740, 3, 2, 2, 2, 741, 742, 3, 2, 2, 2, 742, 749, 3, 2, 2, 2, 743, 744, 7, 94, 2, 2, 744, 745, 7, 122, 2, 2, 745, 746, 3, 2, 2, 2, 746, 749, 5, 137, 69, 2, 747, 749, 5, 123, 62, 2, 748, 733, 3, 2, 2, 2, 748, 735, 3, 2, 2, 2, 748, 743, 3, 2, 2, 2, 748, 747, 3, 2, 2, 2, 749, 142, 3, 2, 2, 2, 750, 752, 9, 17, 2, 2, 751, 750, 3, 2, 2, 2, 752, 753, 3, 2, 2, 2, 753, 751, 3, 2, 2, 2, 753, 754, 3, 2, 2, 2, 754, 755, 3, 2, 2, 2, 755, 756, 8, 72, 2, 2, 756, 144, 3, 2, 2, 2, 757, 759, 7, 15, 2, 2, 758, 760, 7, 12, 2, 2, 759, 758, 3, 2, 2, 2, 759, 760, 3, 2, 2, 2, 760, 763, 3, 2, 2, 2, 761, 763, 7, 12, 2, 2, 762, 757, 3, 2, 2, 2, 762, 761, 3, 2, 2, 2, 763, 764, 3, 2, 2, 2, 764, 765, 8, 73, 2, 2, 765, 146, 3, 2, 2, 2, 56, 2, 181, 195, 237, 243, 251, 266, 268, 299, 335, 371, 401, 439, 477, 503, 532, 538, 542, 547, 549, 557, 560, 564, 569, 572, 578, 584, 589, 594, 599, 608, 617, 628, 634, 638, 644, 672, 676, 681, 687, 692, 699, 703, 710, 713, 720, 725, 729, 738, 741, 748, 753, 759, 762, 3, 8, 2, 2] \ No newline at end of file +[4, 0, 46, 777, 6, -1, 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, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 178, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 192, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 221, 8, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 253, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 259, 8, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 267, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 273, 8, 29, 1, 30, 1, 30, 1, 30, 5, 30, 278, 8, 30, 10, 30, 12, 30, 281, 9, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 311, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 347, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 383, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 413, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 451, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 489, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 515, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 544, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 550, 8, 39, 1, 40, 1, 40, 3, 40, 554, 8, 40, 1, 41, 1, 41, 1, 41, 5, 41, 559, 8, 41, 10, 41, 12, 41, 562, 9, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 569, 8, 41, 1, 42, 3, 42, 572, 8, 42, 1, 42, 1, 42, 3, 42, 576, 8, 42, 1, 42, 1, 42, 1, 42, 3, 42, 581, 8, 42, 1, 42, 3, 42, 584, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 590, 8, 43, 1, 43, 1, 43, 4, 43, 594, 8, 43, 11, 43, 12, 43, 595, 1, 44, 1, 44, 1, 44, 3, 44, 601, 8, 44, 1, 45, 4, 45, 604, 8, 45, 11, 45, 12, 45, 605, 1, 46, 4, 46, 609, 8, 46, 11, 46, 12, 46, 610, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 620, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 629, 8, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 4, 51, 638, 8, 51, 11, 51, 12, 51, 639, 1, 52, 1, 52, 5, 52, 644, 8, 52, 10, 52, 12, 52, 647, 9, 52, 1, 52, 3, 52, 650, 8, 52, 1, 53, 1, 53, 5, 53, 654, 8, 53, 10, 53, 12, 53, 657, 9, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 684, 8, 59, 1, 60, 1, 60, 3, 60, 688, 8, 60, 1, 60, 1, 60, 1, 60, 3, 60, 693, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 699, 8, 61, 1, 61, 1, 61, 1, 62, 3, 62, 704, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 711, 8, 62, 1, 63, 1, 63, 3, 63, 715, 8, 63, 1, 63, 1, 63, 1, 64, 4, 64, 720, 8, 64, 11, 64, 12, 64, 721, 1, 65, 3, 65, 725, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 732, 8, 65, 1, 66, 4, 66, 735, 8, 66, 11, 66, 12, 66, 736, 1, 67, 1, 67, 3, 67, 741, 8, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 750, 8, 68, 1, 68, 3, 68, 753, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 760, 8, 68, 1, 69, 4, 69, 763, 8, 69, 11, 69, 12, 69, 764, 1, 69, 1, 69, 1, 70, 1, 70, 3, 70, 771, 8, 70, 1, 70, 3, 70, 774, 8, 70, 1, 70, 1, 70, 0, 0, 71, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 133, 0, 135, 0, 137, 0, 139, 45, 141, 46, 1, 0, 16, 3, 0, 76, 76, 85, 85, 117, 117, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 4, 0, 10, 10, 13, 13, 39, 39, 92, 92, 3, 0, 65, 90, 95, 95, 97, 122, 1, 0, 48, 57, 2, 0, 66, 66, 98, 98, 1, 0, 48, 49, 2, 0, 88, 88, 120, 120, 1, 0, 49, 57, 1, 0, 48, 55, 3, 0, 48, 57, 65, 70, 97, 102, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 2, 0, 80, 80, 112, 112, 10, 0, 34, 34, 39, 39, 63, 63, 92, 92, 97, 98, 102, 102, 110, 110, 114, 114, 116, 116, 118, 118, 2, 0, 9, 9, 32, 32, 819, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 1, 143, 1, 0, 0, 0, 3, 145, 1, 0, 0, 0, 5, 147, 1, 0, 0, 0, 7, 149, 1, 0, 0, 0, 9, 151, 1, 0, 0, 0, 11, 153, 1, 0, 0, 0, 13, 155, 1, 0, 0, 0, 15, 158, 1, 0, 0, 0, 17, 160, 1, 0, 0, 0, 19, 163, 1, 0, 0, 0, 21, 166, 1, 0, 0, 0, 23, 177, 1, 0, 0, 0, 25, 191, 1, 0, 0, 0, 27, 220, 1, 0, 0, 0, 29, 222, 1, 0, 0, 0, 31, 224, 1, 0, 0, 0, 33, 226, 1, 0, 0, 0, 35, 228, 1, 0, 0, 0, 37, 230, 1, 0, 0, 0, 39, 232, 1, 0, 0, 0, 41, 235, 1, 0, 0, 0, 43, 238, 1, 0, 0, 0, 45, 241, 1, 0, 0, 0, 47, 243, 1, 0, 0, 0, 49, 245, 1, 0, 0, 0, 51, 252, 1, 0, 0, 0, 53, 258, 1, 0, 0, 0, 55, 260, 1, 0, 0, 0, 57, 266, 1, 0, 0, 0, 59, 272, 1, 0, 0, 0, 61, 274, 1, 0, 0, 0, 63, 310, 1, 0, 0, 0, 65, 346, 1, 0, 0, 0, 67, 382, 1, 0, 0, 0, 69, 412, 1, 0, 0, 0, 71, 450, 1, 0, 0, 0, 73, 488, 1, 0, 0, 0, 75, 514, 1, 0, 0, 0, 77, 543, 1, 0, 0, 0, 79, 549, 1, 0, 0, 0, 81, 553, 1, 0, 0, 0, 83, 568, 1, 0, 0, 0, 85, 571, 1, 0, 0, 0, 87, 585, 1, 0, 0, 0, 89, 600, 1, 0, 0, 0, 91, 603, 1, 0, 0, 0, 93, 608, 1, 0, 0, 0, 95, 619, 1, 0, 0, 0, 97, 628, 1, 0, 0, 0, 99, 630, 1, 0, 0, 0, 101, 632, 1, 0, 0, 0, 103, 634, 1, 0, 0, 0, 105, 649, 1, 0, 0, 0, 107, 651, 1, 0, 0, 0, 109, 658, 1, 0, 0, 0, 111, 662, 1, 0, 0, 0, 113, 664, 1, 0, 0, 0, 115, 666, 1, 0, 0, 0, 117, 668, 1, 0, 0, 0, 119, 683, 1, 0, 0, 0, 121, 692, 1, 0, 0, 0, 123, 694, 1, 0, 0, 0, 125, 710, 1, 0, 0, 0, 127, 712, 1, 0, 0, 0, 129, 719, 1, 0, 0, 0, 131, 731, 1, 0, 0, 0, 133, 734, 1, 0, 0, 0, 135, 738, 1, 0, 0, 0, 137, 759, 1, 0, 0, 0, 139, 762, 1, 0, 0, 0, 141, 773, 1, 0, 0, 0, 143, 144, 5, 40, 0, 0, 144, 2, 1, 0, 0, 0, 145, 146, 5, 41, 0, 0, 146, 4, 1, 0, 0, 0, 147, 148, 5, 91, 0, 0, 148, 6, 1, 0, 0, 0, 149, 150, 5, 44, 0, 0, 150, 8, 1, 0, 0, 0, 151, 152, 5, 93, 0, 0, 152, 10, 1, 0, 0, 0, 153, 154, 5, 60, 0, 0, 154, 12, 1, 0, 0, 0, 155, 156, 5, 60, 0, 0, 156, 157, 5, 61, 0, 0, 157, 14, 1, 0, 0, 0, 158, 159, 5, 62, 0, 0, 159, 16, 1, 0, 0, 0, 160, 161, 5, 62, 0, 0, 161, 162, 5, 61, 0, 0, 162, 18, 1, 0, 0, 0, 163, 164, 5, 61, 0, 0, 164, 165, 5, 61, 0, 0, 165, 20, 1, 0, 0, 0, 166, 167, 5, 33, 0, 0, 167, 168, 5, 61, 0, 0, 168, 22, 1, 0, 0, 0, 169, 170, 5, 108, 0, 0, 170, 171, 5, 105, 0, 0, 171, 172, 5, 107, 0, 0, 172, 178, 5, 101, 0, 0, 173, 174, 5, 76, 0, 0, 174, 175, 5, 73, 0, 0, 175, 176, 5, 75, 0, 0, 176, 178, 5, 69, 0, 0, 177, 169, 1, 0, 0, 0, 177, 173, 1, 0, 0, 0, 178, 24, 1, 0, 0, 0, 179, 180, 5, 101, 0, 0, 180, 181, 5, 120, 0, 0, 181, 182, 5, 105, 0, 0, 182, 183, 5, 115, 0, 0, 183, 184, 5, 116, 0, 0, 184, 192, 5, 115, 0, 0, 185, 186, 5, 69, 0, 0, 186, 187, 5, 88, 0, 0, 187, 188, 5, 73, 0, 0, 188, 189, 5, 83, 0, 0, 189, 190, 5, 84, 0, 0, 190, 192, 5, 83, 0, 0, 191, 179, 1, 0, 0, 0, 191, 185, 1, 0, 0, 0, 192, 26, 1, 0, 0, 0, 193, 194, 5, 84, 0, 0, 194, 195, 5, 101, 0, 0, 195, 196, 5, 120, 0, 0, 196, 197, 5, 116, 0, 0, 197, 198, 5, 77, 0, 0, 198, 199, 5, 97, 0, 0, 199, 200, 5, 116, 0, 0, 200, 201, 5, 99, 0, 0, 201, 221, 5, 104, 0, 0, 202, 203, 5, 116, 0, 0, 203, 204, 5, 101, 0, 0, 204, 205, 5, 120, 0, 0, 205, 206, 5, 116, 0, 0, 206, 207, 5, 109, 0, 0, 207, 208, 5, 97, 0, 0, 208, 209, 5, 116, 0, 0, 209, 210, 5, 99, 0, 0, 210, 221, 5, 104, 0, 0, 211, 212, 5, 84, 0, 0, 212, 213, 5, 69, 0, 0, 213, 214, 5, 88, 0, 0, 214, 215, 5, 84, 0, 0, 215, 216, 5, 77, 0, 0, 216, 217, 5, 65, 0, 0, 217, 218, 5, 84, 0, 0, 218, 219, 5, 67, 0, 0, 219, 221, 5, 72, 0, 0, 220, 193, 1, 0, 0, 0, 220, 202, 1, 0, 0, 0, 220, 211, 1, 0, 0, 0, 221, 28, 1, 0, 0, 0, 222, 223, 5, 43, 0, 0, 223, 30, 1, 0, 0, 0, 224, 225, 5, 45, 0, 0, 225, 32, 1, 0, 0, 0, 226, 227, 5, 42, 0, 0, 227, 34, 1, 0, 0, 0, 228, 229, 5, 47, 0, 0, 229, 36, 1, 0, 0, 0, 230, 231, 5, 37, 0, 0, 231, 38, 1, 0, 0, 0, 232, 233, 5, 42, 0, 0, 233, 234, 5, 42, 0, 0, 234, 40, 1, 0, 0, 0, 235, 236, 5, 60, 0, 0, 236, 237, 5, 60, 0, 0, 237, 42, 1, 0, 0, 0, 238, 239, 5, 62, 0, 0, 239, 240, 5, 62, 0, 0, 240, 44, 1, 0, 0, 0, 241, 242, 5, 38, 0, 0, 242, 46, 1, 0, 0, 0, 243, 244, 5, 124, 0, 0, 244, 48, 1, 0, 0, 0, 245, 246, 5, 94, 0, 0, 246, 50, 1, 0, 0, 0, 247, 248, 5, 38, 0, 0, 248, 253, 5, 38, 0, 0, 249, 250, 5, 97, 0, 0, 250, 251, 5, 110, 0, 0, 251, 253, 5, 100, 0, 0, 252, 247, 1, 0, 0, 0, 252, 249, 1, 0, 0, 0, 253, 52, 1, 0, 0, 0, 254, 255, 5, 124, 0, 0, 255, 259, 5, 124, 0, 0, 256, 257, 5, 111, 0, 0, 257, 259, 5, 114, 0, 0, 258, 254, 1, 0, 0, 0, 258, 256, 1, 0, 0, 0, 259, 54, 1, 0, 0, 0, 260, 261, 5, 126, 0, 0, 261, 56, 1, 0, 0, 0, 262, 267, 5, 33, 0, 0, 263, 264, 5, 110, 0, 0, 264, 265, 5, 111, 0, 0, 265, 267, 5, 116, 0, 0, 266, 262, 1, 0, 0, 0, 266, 263, 1, 0, 0, 0, 267, 58, 1, 0, 0, 0, 268, 269, 5, 105, 0, 0, 269, 273, 5, 110, 0, 0, 270, 271, 5, 73, 0, 0, 271, 273, 5, 78, 0, 0, 272, 268, 1, 0, 0, 0, 272, 270, 1, 0, 0, 0, 273, 60, 1, 0, 0, 0, 274, 279, 5, 91, 0, 0, 275, 278, 3, 139, 69, 0, 276, 278, 3, 141, 70, 0, 277, 275, 1, 0, 0, 0, 277, 276, 1, 0, 0, 0, 278, 281, 1, 0, 0, 0, 279, 277, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 282, 1, 0, 0, 0, 281, 279, 1, 0, 0, 0, 282, 283, 5, 93, 0, 0, 283, 62, 1, 0, 0, 0, 284, 285, 5, 106, 0, 0, 285, 286, 5, 115, 0, 0, 286, 287, 5, 111, 0, 0, 287, 288, 5, 110, 0, 0, 288, 289, 5, 95, 0, 0, 289, 290, 5, 99, 0, 0, 290, 291, 5, 111, 0, 0, 291, 292, 5, 110, 0, 0, 292, 293, 5, 116, 0, 0, 293, 294, 5, 97, 0, 0, 294, 295, 5, 105, 0, 0, 295, 296, 5, 110, 0, 0, 296, 311, 5, 115, 0, 0, 297, 298, 5, 74, 0, 0, 298, 299, 5, 83, 0, 0, 299, 300, 5, 79, 0, 0, 300, 301, 5, 78, 0, 0, 301, 302, 5, 95, 0, 0, 302, 303, 5, 67, 0, 0, 303, 304, 5, 79, 0, 0, 304, 305, 5, 78, 0, 0, 305, 306, 5, 84, 0, 0, 306, 307, 5, 65, 0, 0, 307, 308, 5, 73, 0, 0, 308, 309, 5, 78, 0, 0, 309, 311, 5, 83, 0, 0, 310, 284, 1, 0, 0, 0, 310, 297, 1, 0, 0, 0, 311, 64, 1, 0, 0, 0, 312, 313, 5, 106, 0, 0, 313, 314, 5, 115, 0, 0, 314, 315, 5, 111, 0, 0, 315, 316, 5, 110, 0, 0, 316, 317, 5, 95, 0, 0, 317, 318, 5, 99, 0, 0, 318, 319, 5, 111, 0, 0, 319, 320, 5, 110, 0, 0, 320, 321, 5, 116, 0, 0, 321, 322, 5, 97, 0, 0, 322, 323, 5, 105, 0, 0, 323, 324, 5, 110, 0, 0, 324, 325, 5, 115, 0, 0, 325, 326, 5, 95, 0, 0, 326, 327, 5, 97, 0, 0, 327, 328, 5, 108, 0, 0, 328, 347, 5, 108, 0, 0, 329, 330, 5, 74, 0, 0, 330, 331, 5, 83, 0, 0, 331, 332, 5, 79, 0, 0, 332, 333, 5, 78, 0, 0, 333, 334, 5, 95, 0, 0, 334, 335, 5, 67, 0, 0, 335, 336, 5, 79, 0, 0, 336, 337, 5, 78, 0, 0, 337, 338, 5, 84, 0, 0, 338, 339, 5, 65, 0, 0, 339, 340, 5, 73, 0, 0, 340, 341, 5, 78, 0, 0, 341, 342, 5, 83, 0, 0, 342, 343, 5, 95, 0, 0, 343, 344, 5, 65, 0, 0, 344, 345, 5, 76, 0, 0, 345, 347, 5, 76, 0, 0, 346, 312, 1, 0, 0, 0, 346, 329, 1, 0, 0, 0, 347, 66, 1, 0, 0, 0, 348, 349, 5, 106, 0, 0, 349, 350, 5, 115, 0, 0, 350, 351, 5, 111, 0, 0, 351, 352, 5, 110, 0, 0, 352, 353, 5, 95, 0, 0, 353, 354, 5, 99, 0, 0, 354, 355, 5, 111, 0, 0, 355, 356, 5, 110, 0, 0, 356, 357, 5, 116, 0, 0, 357, 358, 5, 97, 0, 0, 358, 359, 5, 105, 0, 0, 359, 360, 5, 110, 0, 0, 360, 361, 5, 115, 0, 0, 361, 362, 5, 95, 0, 0, 362, 363, 5, 97, 0, 0, 363, 364, 5, 110, 0, 0, 364, 383, 5, 121, 0, 0, 365, 366, 5, 74, 0, 0, 366, 367, 5, 83, 0, 0, 367, 368, 5, 79, 0, 0, 368, 369, 5, 78, 0, 0, 369, 370, 5, 95, 0, 0, 370, 371, 5, 67, 0, 0, 371, 372, 5, 79, 0, 0, 372, 373, 5, 78, 0, 0, 373, 374, 5, 84, 0, 0, 374, 375, 5, 65, 0, 0, 375, 376, 5, 73, 0, 0, 376, 377, 5, 78, 0, 0, 377, 378, 5, 83, 0, 0, 378, 379, 5, 95, 0, 0, 379, 380, 5, 65, 0, 0, 380, 381, 5, 78, 0, 0, 381, 383, 5, 89, 0, 0, 382, 348, 1, 0, 0, 0, 382, 365, 1, 0, 0, 0, 383, 68, 1, 0, 0, 0, 384, 385, 5, 97, 0, 0, 385, 386, 5, 114, 0, 0, 386, 387, 5, 114, 0, 0, 387, 388, 5, 97, 0, 0, 388, 389, 5, 121, 0, 0, 389, 390, 5, 95, 0, 0, 390, 391, 5, 99, 0, 0, 391, 392, 5, 111, 0, 0, 392, 393, 5, 110, 0, 0, 393, 394, 5, 116, 0, 0, 394, 395, 5, 97, 0, 0, 395, 396, 5, 105, 0, 0, 396, 397, 5, 110, 0, 0, 397, 413, 5, 115, 0, 0, 398, 399, 5, 65, 0, 0, 399, 400, 5, 82, 0, 0, 400, 401, 5, 82, 0, 0, 401, 402, 5, 65, 0, 0, 402, 403, 5, 89, 0, 0, 403, 404, 5, 95, 0, 0, 404, 405, 5, 67, 0, 0, 405, 406, 5, 79, 0, 0, 406, 407, 5, 78, 0, 0, 407, 408, 5, 84, 0, 0, 408, 409, 5, 65, 0, 0, 409, 410, 5, 73, 0, 0, 410, 411, 5, 78, 0, 0, 411, 413, 5, 83, 0, 0, 412, 384, 1, 0, 0, 0, 412, 398, 1, 0, 0, 0, 413, 70, 1, 0, 0, 0, 414, 415, 5, 97, 0, 0, 415, 416, 5, 114, 0, 0, 416, 417, 5, 114, 0, 0, 417, 418, 5, 97, 0, 0, 418, 419, 5, 121, 0, 0, 419, 420, 5, 95, 0, 0, 420, 421, 5, 99, 0, 0, 421, 422, 5, 111, 0, 0, 422, 423, 5, 110, 0, 0, 423, 424, 5, 116, 0, 0, 424, 425, 5, 97, 0, 0, 425, 426, 5, 105, 0, 0, 426, 427, 5, 110, 0, 0, 427, 428, 5, 115, 0, 0, 428, 429, 5, 95, 0, 0, 429, 430, 5, 97, 0, 0, 430, 431, 5, 108, 0, 0, 431, 451, 5, 108, 0, 0, 432, 433, 5, 65, 0, 0, 433, 434, 5, 82, 0, 0, 434, 435, 5, 82, 0, 0, 435, 436, 5, 65, 0, 0, 436, 437, 5, 89, 0, 0, 437, 438, 5, 95, 0, 0, 438, 439, 5, 67, 0, 0, 439, 440, 5, 79, 0, 0, 440, 441, 5, 78, 0, 0, 441, 442, 5, 84, 0, 0, 442, 443, 5, 65, 0, 0, 443, 444, 5, 73, 0, 0, 444, 445, 5, 78, 0, 0, 445, 446, 5, 83, 0, 0, 446, 447, 5, 95, 0, 0, 447, 448, 5, 65, 0, 0, 448, 449, 5, 76, 0, 0, 449, 451, 5, 76, 0, 0, 450, 414, 1, 0, 0, 0, 450, 432, 1, 0, 0, 0, 451, 72, 1, 0, 0, 0, 452, 453, 5, 97, 0, 0, 453, 454, 5, 114, 0, 0, 454, 455, 5, 114, 0, 0, 455, 456, 5, 97, 0, 0, 456, 457, 5, 121, 0, 0, 457, 458, 5, 95, 0, 0, 458, 459, 5, 99, 0, 0, 459, 460, 5, 111, 0, 0, 460, 461, 5, 110, 0, 0, 461, 462, 5, 116, 0, 0, 462, 463, 5, 97, 0, 0, 463, 464, 5, 105, 0, 0, 464, 465, 5, 110, 0, 0, 465, 466, 5, 115, 0, 0, 466, 467, 5, 95, 0, 0, 467, 468, 5, 97, 0, 0, 468, 469, 5, 110, 0, 0, 469, 489, 5, 121, 0, 0, 470, 471, 5, 65, 0, 0, 471, 472, 5, 82, 0, 0, 472, 473, 5, 82, 0, 0, 473, 474, 5, 65, 0, 0, 474, 475, 5, 89, 0, 0, 475, 476, 5, 95, 0, 0, 476, 477, 5, 67, 0, 0, 477, 478, 5, 79, 0, 0, 478, 479, 5, 78, 0, 0, 479, 480, 5, 84, 0, 0, 480, 481, 5, 65, 0, 0, 481, 482, 5, 73, 0, 0, 482, 483, 5, 78, 0, 0, 483, 484, 5, 83, 0, 0, 484, 485, 5, 95, 0, 0, 485, 486, 5, 65, 0, 0, 486, 487, 5, 78, 0, 0, 487, 489, 5, 89, 0, 0, 488, 452, 1, 0, 0, 0, 488, 470, 1, 0, 0, 0, 489, 74, 1, 0, 0, 0, 490, 491, 5, 97, 0, 0, 491, 492, 5, 114, 0, 0, 492, 493, 5, 114, 0, 0, 493, 494, 5, 97, 0, 0, 494, 495, 5, 121, 0, 0, 495, 496, 5, 95, 0, 0, 496, 497, 5, 108, 0, 0, 497, 498, 5, 101, 0, 0, 498, 499, 5, 110, 0, 0, 499, 500, 5, 103, 0, 0, 500, 501, 5, 116, 0, 0, 501, 515, 5, 104, 0, 0, 502, 503, 5, 65, 0, 0, 503, 504, 5, 82, 0, 0, 504, 505, 5, 82, 0, 0, 505, 506, 5, 65, 0, 0, 506, 507, 5, 89, 0, 0, 507, 508, 5, 95, 0, 0, 508, 509, 5, 76, 0, 0, 509, 510, 5, 69, 0, 0, 510, 511, 5, 78, 0, 0, 511, 512, 5, 71, 0, 0, 512, 513, 5, 84, 0, 0, 513, 515, 5, 72, 0, 0, 514, 490, 1, 0, 0, 0, 514, 502, 1, 0, 0, 0, 515, 76, 1, 0, 0, 0, 516, 517, 5, 116, 0, 0, 517, 518, 5, 114, 0, 0, 518, 519, 5, 117, 0, 0, 519, 544, 5, 101, 0, 0, 520, 521, 5, 84, 0, 0, 521, 522, 5, 114, 0, 0, 522, 523, 5, 117, 0, 0, 523, 544, 5, 101, 0, 0, 524, 525, 5, 84, 0, 0, 525, 526, 5, 82, 0, 0, 526, 527, 5, 85, 0, 0, 527, 544, 5, 69, 0, 0, 528, 529, 5, 102, 0, 0, 529, 530, 5, 97, 0, 0, 530, 531, 5, 108, 0, 0, 531, 532, 5, 115, 0, 0, 532, 544, 5, 101, 0, 0, 533, 534, 5, 70, 0, 0, 534, 535, 5, 97, 0, 0, 535, 536, 5, 108, 0, 0, 536, 537, 5, 115, 0, 0, 537, 544, 5, 101, 0, 0, 538, 539, 5, 70, 0, 0, 539, 540, 5, 65, 0, 0, 540, 541, 5, 76, 0, 0, 541, 542, 5, 83, 0, 0, 542, 544, 5, 69, 0, 0, 543, 516, 1, 0, 0, 0, 543, 520, 1, 0, 0, 0, 543, 524, 1, 0, 0, 0, 543, 528, 1, 0, 0, 0, 543, 533, 1, 0, 0, 0, 543, 538, 1, 0, 0, 0, 544, 78, 1, 0, 0, 0, 545, 550, 3, 105, 52, 0, 546, 550, 3, 107, 53, 0, 547, 550, 3, 109, 54, 0, 548, 550, 3, 103, 51, 0, 549, 545, 1, 0, 0, 0, 549, 546, 1, 0, 0, 0, 549, 547, 1, 0, 0, 0, 549, 548, 1, 0, 0, 0, 550, 80, 1, 0, 0, 0, 551, 554, 3, 121, 60, 0, 552, 554, 3, 123, 61, 0, 553, 551, 1, 0, 0, 0, 553, 552, 1, 0, 0, 0, 554, 82, 1, 0, 0, 0, 555, 560, 3, 99, 49, 0, 556, 559, 3, 99, 49, 0, 557, 559, 3, 101, 50, 0, 558, 556, 1, 0, 0, 0, 558, 557, 1, 0, 0, 0, 559, 562, 1, 0, 0, 0, 560, 558, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 569, 1, 0, 0, 0, 562, 560, 1, 0, 0, 0, 563, 564, 5, 36, 0, 0, 564, 565, 5, 109, 0, 0, 565, 566, 5, 101, 0, 0, 566, 567, 5, 116, 0, 0, 567, 569, 5, 97, 0, 0, 568, 555, 1, 0, 0, 0, 568, 563, 1, 0, 0, 0, 569, 84, 1, 0, 0, 0, 570, 572, 3, 89, 44, 0, 571, 570, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 583, 1, 0, 0, 0, 573, 575, 5, 34, 0, 0, 574, 576, 3, 91, 45, 0, 575, 574, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 584, 5, 34, 0, 0, 578, 580, 5, 39, 0, 0, 579, 581, 3, 93, 46, 0, 580, 579, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 584, 5, 39, 0, 0, 583, 573, 1, 0, 0, 0, 583, 578, 1, 0, 0, 0, 584, 86, 1, 0, 0, 0, 585, 593, 3, 83, 41, 0, 586, 589, 5, 91, 0, 0, 587, 590, 3, 85, 42, 0, 588, 590, 3, 105, 52, 0, 589, 587, 1, 0, 0, 0, 589, 588, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 592, 5, 93, 0, 0, 592, 594, 1, 0, 0, 0, 593, 586, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 593, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 88, 1, 0, 0, 0, 597, 598, 5, 117, 0, 0, 598, 601, 5, 56, 0, 0, 599, 601, 7, 0, 0, 0, 600, 597, 1, 0, 0, 0, 600, 599, 1, 0, 0, 0, 601, 90, 1, 0, 0, 0, 602, 604, 3, 95, 47, 0, 603, 602, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0, 605, 603, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 92, 1, 0, 0, 0, 607, 609, 3, 97, 48, 0, 608, 607, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 608, 1, 0, 0, 0, 610, 611, 1, 0, 0, 0, 611, 94, 1, 0, 0, 0, 612, 620, 8, 1, 0, 0, 613, 620, 3, 137, 68, 0, 614, 615, 5, 92, 0, 0, 615, 620, 5, 10, 0, 0, 616, 617, 5, 92, 0, 0, 617, 618, 5, 13, 0, 0, 618, 620, 5, 10, 0, 0, 619, 612, 1, 0, 0, 0, 619, 613, 1, 0, 0, 0, 619, 614, 1, 0, 0, 0, 619, 616, 1, 0, 0, 0, 620, 96, 1, 0, 0, 0, 621, 629, 8, 2, 0, 0, 622, 629, 3, 137, 68, 0, 623, 624, 5, 92, 0, 0, 624, 629, 5, 10, 0, 0, 625, 626, 5, 92, 0, 0, 626, 627, 5, 13, 0, 0, 627, 629, 5, 10, 0, 0, 628, 621, 1, 0, 0, 0, 628, 622, 1, 0, 0, 0, 628, 623, 1, 0, 0, 0, 628, 625, 1, 0, 0, 0, 629, 98, 1, 0, 0, 0, 630, 631, 7, 3, 0, 0, 631, 100, 1, 0, 0, 0, 632, 633, 7, 4, 0, 0, 633, 102, 1, 0, 0, 0, 634, 635, 5, 48, 0, 0, 635, 637, 7, 5, 0, 0, 636, 638, 7, 6, 0, 0, 637, 636, 1, 0, 0, 0, 638, 639, 1, 0, 0, 0, 639, 637, 1, 0, 0, 0, 639, 640, 1, 0, 0, 0, 640, 104, 1, 0, 0, 0, 641, 645, 3, 111, 55, 0, 642, 644, 3, 101, 50, 0, 643, 642, 1, 0, 0, 0, 644, 647, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 645, 646, 1, 0, 0, 0, 646, 650, 1, 0, 0, 0, 647, 645, 1, 0, 0, 0, 648, 650, 5, 48, 0, 0, 649, 641, 1, 0, 0, 0, 649, 648, 1, 0, 0, 0, 650, 106, 1, 0, 0, 0, 651, 655, 5, 48, 0, 0, 652, 654, 3, 113, 56, 0, 653, 652, 1, 0, 0, 0, 654, 657, 1, 0, 0, 0, 655, 653, 1, 0, 0, 0, 655, 656, 1, 0, 0, 0, 656, 108, 1, 0, 0, 0, 657, 655, 1, 0, 0, 0, 658, 659, 5, 48, 0, 0, 659, 660, 7, 7, 0, 0, 660, 661, 3, 133, 66, 0, 661, 110, 1, 0, 0, 0, 662, 663, 7, 8, 0, 0, 663, 112, 1, 0, 0, 0, 664, 665, 7, 9, 0, 0, 665, 114, 1, 0, 0, 0, 666, 667, 7, 10, 0, 0, 667, 116, 1, 0, 0, 0, 668, 669, 3, 115, 57, 0, 669, 670, 3, 115, 57, 0, 670, 671, 3, 115, 57, 0, 671, 672, 3, 115, 57, 0, 672, 118, 1, 0, 0, 0, 673, 674, 5, 92, 0, 0, 674, 675, 5, 117, 0, 0, 675, 676, 1, 0, 0, 0, 676, 684, 3, 117, 58, 0, 677, 678, 5, 92, 0, 0, 678, 679, 5, 85, 0, 0, 679, 680, 1, 0, 0, 0, 680, 681, 3, 117, 58, 0, 681, 682, 3, 117, 58, 0, 682, 684, 1, 0, 0, 0, 683, 673, 1, 0, 0, 0, 683, 677, 1, 0, 0, 0, 684, 120, 1, 0, 0, 0, 685, 687, 3, 125, 62, 0, 686, 688, 3, 127, 63, 0, 687, 686, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 693, 1, 0, 0, 0, 689, 690, 3, 129, 64, 0, 690, 691, 3, 127, 63, 0, 691, 693, 1, 0, 0, 0, 692, 685, 1, 0, 0, 0, 692, 689, 1, 0, 0, 0, 693, 122, 1, 0, 0, 0, 694, 695, 5, 48, 0, 0, 695, 698, 7, 7, 0, 0, 696, 699, 3, 131, 65, 0, 697, 699, 3, 133, 66, 0, 698, 696, 1, 0, 0, 0, 698, 697, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 701, 3, 135, 67, 0, 701, 124, 1, 0, 0, 0, 702, 704, 3, 129, 64, 0, 703, 702, 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 705, 1, 0, 0, 0, 705, 706, 5, 46, 0, 0, 706, 711, 3, 129, 64, 0, 707, 708, 3, 129, 64, 0, 708, 709, 5, 46, 0, 0, 709, 711, 1, 0, 0, 0, 710, 703, 1, 0, 0, 0, 710, 707, 1, 0, 0, 0, 711, 126, 1, 0, 0, 0, 712, 714, 7, 11, 0, 0, 713, 715, 7, 12, 0, 0, 714, 713, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 717, 3, 129, 64, 0, 717, 128, 1, 0, 0, 0, 718, 720, 3, 101, 50, 0, 719, 718, 1, 0, 0, 0, 720, 721, 1, 0, 0, 0, 721, 719, 1, 0, 0, 0, 721, 722, 1, 0, 0, 0, 722, 130, 1, 0, 0, 0, 723, 725, 3, 133, 66, 0, 724, 723, 1, 0, 0, 0, 724, 725, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 727, 5, 46, 0, 0, 727, 732, 3, 133, 66, 0, 728, 729, 3, 133, 66, 0, 729, 730, 5, 46, 0, 0, 730, 732, 1, 0, 0, 0, 731, 724, 1, 0, 0, 0, 731, 728, 1, 0, 0, 0, 732, 132, 1, 0, 0, 0, 733, 735, 3, 115, 57, 0, 734, 733, 1, 0, 0, 0, 735, 736, 1, 0, 0, 0, 736, 734, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 134, 1, 0, 0, 0, 738, 740, 7, 13, 0, 0, 739, 741, 7, 12, 0, 0, 740, 739, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 742, 1, 0, 0, 0, 742, 743, 3, 129, 64, 0, 743, 136, 1, 0, 0, 0, 744, 745, 5, 92, 0, 0, 745, 760, 7, 14, 0, 0, 746, 747, 5, 92, 0, 0, 747, 749, 3, 113, 56, 0, 748, 750, 3, 113, 56, 0, 749, 748, 1, 0, 0, 0, 749, 750, 1, 0, 0, 0, 750, 752, 1, 0, 0, 0, 751, 753, 3, 113, 56, 0, 752, 751, 1, 0, 0, 0, 752, 753, 1, 0, 0, 0, 753, 760, 1, 0, 0, 0, 754, 755, 5, 92, 0, 0, 755, 756, 5, 120, 0, 0, 756, 757, 1, 0, 0, 0, 757, 760, 3, 133, 66, 0, 758, 760, 3, 119, 59, 0, 759, 744, 1, 0, 0, 0, 759, 746, 1, 0, 0, 0, 759, 754, 1, 0, 0, 0, 759, 758, 1, 0, 0, 0, 760, 138, 1, 0, 0, 0, 761, 763, 7, 15, 0, 0, 762, 761, 1, 0, 0, 0, 763, 764, 1, 0, 0, 0, 764, 762, 1, 0, 0, 0, 764, 765, 1, 0, 0, 0, 765, 766, 1, 0, 0, 0, 766, 767, 6, 69, 0, 0, 767, 140, 1, 0, 0, 0, 768, 770, 5, 13, 0, 0, 769, 771, 5, 10, 0, 0, 770, 769, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 771, 774, 1, 0, 0, 0, 772, 774, 5, 10, 0, 0, 773, 768, 1, 0, 0, 0, 773, 772, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 775, 776, 6, 70, 0, 0, 776, 142, 1, 0, 0, 0, 56, 0, 177, 191, 220, 252, 258, 266, 272, 277, 279, 310, 346, 382, 412, 450, 488, 514, 543, 549, 553, 558, 560, 568, 571, 575, 580, 583, 589, 595, 600, 605, 610, 619, 628, 639, 645, 649, 655, 683, 687, 692, 698, 703, 710, 714, 721, 724, 731, 736, 740, 749, 752, 759, 764, 770, 773, 1, 6, 0, 0] \ No newline at end of file diff --git a/internal/parser/planparserv2/generated/PlanLexer.tokens b/internal/parser/planparserv2/generated/PlanLexer.tokens index 1a85aa191b..766b852b6b 100644 --- a/internal/parser/planparserv2/generated/PlanLexer.tokens +++ b/internal/parser/planparserv2/generated/PlanLexer.tokens @@ -28,23 +28,22 @@ OR=27 BNOT=28 NOT=29 IN=30 -NIN=31 -EmptyTerm=32 -JSONContains=33 -JSONContainsAll=34 -JSONContainsAny=35 -ArrayContains=36 -ArrayContainsAll=37 -ArrayContainsAny=38 -ArrayLength=39 -BooleanConstant=40 -IntegerConstant=41 -FloatingConstant=42 -Identifier=43 -StringLiteral=44 -JSONIdentifier=45 -Whitespace=46 -Newline=47 +EmptyArray=31 +JSONContains=32 +JSONContainsAll=33 +JSONContainsAny=34 +ArrayContains=35 +ArrayContainsAll=36 +ArrayContainsAny=37 +ArrayLength=38 +BooleanConstant=39 +IntegerConstant=40 +FloatingConstant=41 +Identifier=42 +StringLiteral=43 +JSONIdentifier=44 +Whitespace=45 +Newline=46 '('=1 ')'=2 '['=3 @@ -56,7 +55,6 @@ Newline=47 '>='=9 '=='=10 '!='=11 -'TextMatch'=14 '+'=15 '-'=16 '*'=17 @@ -69,5 +67,3 @@ Newline=47 '|'=24 '^'=25 '~'=28 -'in'=30 -'not in'=31 diff --git a/internal/parser/planparserv2/generated/plan_base_visitor.go b/internal/parser/planparserv2/generated/plan_base_visitor.go index e755d534ed..e8ae619676 100644 --- a/internal/parser/planparserv2/generated/plan_base_visitor.go +++ b/internal/parser/planparserv2/generated/plan_base_visitor.go @@ -1,7 +1,7 @@ -// Code generated from Plan.g4 by ANTLR 4.9. DO NOT EDIT. +// Code generated from Plan.g4 by ANTLR 4.13.2. DO NOT EDIT. package planparserv2 // Plan -import "github.com/antlr/antlr4/runtime/Go/antlr" +import "github.com/antlr4-go/antlr/v4" type BasePlanVisitor struct { *antlr.BaseParseTreeVisitor @@ -67,6 +67,10 @@ func (v *BasePlanVisitor) VisitBitOr(ctx *BitOrContext) interface{} { return v.VisitChildren(ctx) } +func (v *BasePlanVisitor) VisitEmptyArray(ctx *EmptyArrayContext) interface{} { + return v.VisitChildren(ctx) +} + func (v *BasePlanVisitor) VisitAddSub(ctx *AddSubContext) interface{} { return v.VisitChildren(ctx) } @@ -123,10 +127,6 @@ func (v *BasePlanVisitor) VisitBitAnd(ctx *BitAndContext) interface{} { return v.VisitChildren(ctx) } -func (v *BasePlanVisitor) VisitEmptyTerm(ctx *EmptyTermContext) interface{} { - return v.VisitChildren(ctx) -} - func (v *BasePlanVisitor) VisitPower(ctx *PowerContext) interface{} { return v.VisitChildren(ctx) } diff --git a/internal/parser/planparserv2/generated/plan_lexer.go b/internal/parser/planparserv2/generated/plan_lexer.go index be5e86413d..89989279b7 100644 --- a/internal/parser/planparserv2/generated/plan_lexer.go +++ b/internal/parser/planparserv2/generated/plan_lexer.go @@ -1,409 +1,19 @@ -// Code generated from Plan.g4 by ANTLR 4.9. DO NOT EDIT. +// Code generated from Plan.g4 by ANTLR 4.13.2. DO NOT EDIT. package planparserv2 import ( "fmt" + "github.com/antlr4-go/antlr/v4" + "sync" "unicode" - - "github.com/antlr/antlr4/runtime/Go/antlr" ) // Suppress unused import error var _ = fmt.Printf +var _ = sync.Once{} var _ = unicode.IsLetter -var serializedLexerAtn = []uint16{ - 3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 49, 766, - 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, - 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, - 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, - 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, - 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, - 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, - 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, - 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, - 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, - 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, - 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, - 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 3, 2, 3, 2, 3, 3, 3, 3, 3, - 4, 3, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 9, 3, - 9, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 13, - 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 182, 10, 13, 3, - 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, - 3, 14, 5, 14, 196, 10, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, - 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 18, 3, 18, 3, 19, - 3, 19, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 23, 3, - 23, 3, 23, 3, 24, 3, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, - 3, 27, 3, 27, 5, 27, 238, 10, 27, 3, 28, 3, 28, 3, 28, 3, 28, 5, 28, 244, - 10, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 252, 10, 30, 3, - 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, - 3, 33, 3, 33, 7, 33, 267, 10, 33, 12, 33, 14, 33, 270, 11, 33, 3, 33, 3, - 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, - 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, - 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 5, 34, 300, 10, 34, 3, 35, 3, 35, - 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, - 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, - 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, - 35, 5, 35, 336, 10, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, - 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, - 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, - 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 5, 36, 372, 10, 36, 3, 37, 3, - 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, - 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, - 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 402, 10, 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, 3, - 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, - 3, 38, 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, 440, 10, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, - 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, - 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, - 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 5, - 39, 478, 10, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, - 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, - 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 5, 40, 504, 10, 40, 3, 41, 3, 41, - 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, - 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, - 3, 41, 3, 41, 3, 41, 3, 41, 5, 41, 533, 10, 41, 3, 42, 3, 42, 3, 42, 3, - 42, 5, 42, 539, 10, 42, 3, 43, 3, 43, 5, 43, 543, 10, 43, 3, 44, 3, 44, - 3, 44, 7, 44, 548, 10, 44, 12, 44, 14, 44, 551, 11, 44, 3, 44, 3, 44, 3, - 44, 3, 44, 3, 44, 5, 44, 558, 10, 44, 3, 45, 5, 45, 561, 10, 45, 3, 45, - 3, 45, 5, 45, 565, 10, 45, 3, 45, 3, 45, 3, 45, 5, 45, 570, 10, 45, 3, - 45, 5, 45, 573, 10, 45, 3, 46, 3, 46, 3, 46, 3, 46, 5, 46, 579, 10, 46, - 3, 46, 3, 46, 6, 46, 583, 10, 46, 13, 46, 14, 46, 584, 3, 47, 3, 47, 3, - 47, 5, 47, 590, 10, 47, 3, 48, 6, 48, 593, 10, 48, 13, 48, 14, 48, 594, - 3, 49, 6, 49, 598, 10, 49, 13, 49, 14, 49, 599, 3, 50, 3, 50, 3, 50, 3, - 50, 3, 50, 3, 50, 3, 50, 5, 50, 609, 10, 50, 3, 51, 3, 51, 3, 51, 3, 51, - 3, 51, 3, 51, 3, 51, 5, 51, 618, 10, 51, 3, 52, 3, 52, 3, 53, 3, 53, 3, - 54, 3, 54, 3, 54, 6, 54, 627, 10, 54, 13, 54, 14, 54, 628, 3, 55, 3, 55, - 7, 55, 633, 10, 55, 12, 55, 14, 55, 636, 11, 55, 3, 55, 5, 55, 639, 10, - 55, 3, 56, 3, 56, 7, 56, 643, 10, 56, 12, 56, 14, 56, 646, 11, 56, 3, 57, - 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 59, 3, 59, 3, 60, 3, 60, 3, 61, 3, - 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, - 3, 62, 3, 62, 3, 62, 5, 62, 673, 10, 62, 3, 63, 3, 63, 5, 63, 677, 10, - 63, 3, 63, 3, 63, 3, 63, 5, 63, 682, 10, 63, 3, 64, 3, 64, 3, 64, 3, 64, - 5, 64, 688, 10, 64, 3, 64, 3, 64, 3, 65, 5, 65, 693, 10, 65, 3, 65, 3, - 65, 3, 65, 3, 65, 3, 65, 5, 65, 700, 10, 65, 3, 66, 3, 66, 5, 66, 704, - 10, 66, 3, 66, 3, 66, 3, 67, 6, 67, 709, 10, 67, 13, 67, 14, 67, 710, 3, - 68, 5, 68, 714, 10, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 5, 68, 721, - 10, 68, 3, 69, 6, 69, 724, 10, 69, 13, 69, 14, 69, 725, 3, 70, 3, 70, 5, - 70, 730, 10, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 5, 71, - 739, 10, 71, 3, 71, 5, 71, 742, 10, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, - 71, 5, 71, 749, 10, 71, 3, 72, 6, 72, 752, 10, 72, 13, 72, 14, 72, 753, - 3, 72, 3, 72, 3, 73, 3, 73, 5, 73, 760, 10, 73, 3, 73, 5, 73, 763, 10, - 73, 3, 73, 3, 73, 2, 2, 74, 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, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, - 89, 46, 91, 47, 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, 2, 125, - 2, 127, 2, 129, 2, 131, 2, 133, 2, 135, 2, 137, 2, 139, 2, 141, 2, 143, - 48, 145, 49, 3, 2, 18, 5, 2, 78, 78, 87, 87, 119, 119, 6, 2, 12, 12, 15, - 15, 36, 36, 94, 94, 6, 2, 12, 12, 15, 15, 41, 41, 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, 805, 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, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, - 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, - 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, - 2, 2, 3, 147, 3, 2, 2, 2, 5, 149, 3, 2, 2, 2, 7, 151, 3, 2, 2, 2, 9, 153, - 3, 2, 2, 2, 11, 155, 3, 2, 2, 2, 13, 157, 3, 2, 2, 2, 15, 159, 3, 2, 2, - 2, 17, 162, 3, 2, 2, 2, 19, 164, 3, 2, 2, 2, 21, 167, 3, 2, 2, 2, 23, 170, - 3, 2, 2, 2, 25, 181, 3, 2, 2, 2, 27, 195, 3, 2, 2, 2, 29, 197, 3, 2, 2, - 2, 31, 207, 3, 2, 2, 2, 33, 209, 3, 2, 2, 2, 35, 211, 3, 2, 2, 2, 37, 213, - 3, 2, 2, 2, 39, 215, 3, 2, 2, 2, 41, 217, 3, 2, 2, 2, 43, 220, 3, 2, 2, - 2, 45, 223, 3, 2, 2, 2, 47, 226, 3, 2, 2, 2, 49, 228, 3, 2, 2, 2, 51, 230, - 3, 2, 2, 2, 53, 237, 3, 2, 2, 2, 55, 243, 3, 2, 2, 2, 57, 245, 3, 2, 2, - 2, 59, 251, 3, 2, 2, 2, 61, 253, 3, 2, 2, 2, 63, 256, 3, 2, 2, 2, 65, 263, - 3, 2, 2, 2, 67, 299, 3, 2, 2, 2, 69, 335, 3, 2, 2, 2, 71, 371, 3, 2, 2, - 2, 73, 401, 3, 2, 2, 2, 75, 439, 3, 2, 2, 2, 77, 477, 3, 2, 2, 2, 79, 503, - 3, 2, 2, 2, 81, 532, 3, 2, 2, 2, 83, 538, 3, 2, 2, 2, 85, 542, 3, 2, 2, - 2, 87, 557, 3, 2, 2, 2, 89, 560, 3, 2, 2, 2, 91, 574, 3, 2, 2, 2, 93, 589, - 3, 2, 2, 2, 95, 592, 3, 2, 2, 2, 97, 597, 3, 2, 2, 2, 99, 608, 3, 2, 2, - 2, 101, 617, 3, 2, 2, 2, 103, 619, 3, 2, 2, 2, 105, 621, 3, 2, 2, 2, 107, - 623, 3, 2, 2, 2, 109, 638, 3, 2, 2, 2, 111, 640, 3, 2, 2, 2, 113, 647, - 3, 2, 2, 2, 115, 651, 3, 2, 2, 2, 117, 653, 3, 2, 2, 2, 119, 655, 3, 2, - 2, 2, 121, 657, 3, 2, 2, 2, 123, 672, 3, 2, 2, 2, 125, 681, 3, 2, 2, 2, - 127, 683, 3, 2, 2, 2, 129, 699, 3, 2, 2, 2, 131, 701, 3, 2, 2, 2, 133, - 708, 3, 2, 2, 2, 135, 720, 3, 2, 2, 2, 137, 723, 3, 2, 2, 2, 139, 727, - 3, 2, 2, 2, 141, 748, 3, 2, 2, 2, 143, 751, 3, 2, 2, 2, 145, 762, 3, 2, - 2, 2, 147, 148, 7, 42, 2, 2, 148, 4, 3, 2, 2, 2, 149, 150, 7, 43, 2, 2, - 150, 6, 3, 2, 2, 2, 151, 152, 7, 93, 2, 2, 152, 8, 3, 2, 2, 2, 153, 154, - 7, 46, 2, 2, 154, 10, 3, 2, 2, 2, 155, 156, 7, 95, 2, 2, 156, 12, 3, 2, - 2, 2, 157, 158, 7, 62, 2, 2, 158, 14, 3, 2, 2, 2, 159, 160, 7, 62, 2, 2, - 160, 161, 7, 63, 2, 2, 161, 16, 3, 2, 2, 2, 162, 163, 7, 64, 2, 2, 163, - 18, 3, 2, 2, 2, 164, 165, 7, 64, 2, 2, 165, 166, 7, 63, 2, 2, 166, 20, - 3, 2, 2, 2, 167, 168, 7, 63, 2, 2, 168, 169, 7, 63, 2, 2, 169, 22, 3, 2, - 2, 2, 170, 171, 7, 35, 2, 2, 171, 172, 7, 63, 2, 2, 172, 24, 3, 2, 2, 2, - 173, 174, 7, 110, 2, 2, 174, 175, 7, 107, 2, 2, 175, 176, 7, 109, 2, 2, - 176, 182, 7, 103, 2, 2, 177, 178, 7, 78, 2, 2, 178, 179, 7, 75, 2, 2, 179, - 180, 7, 77, 2, 2, 180, 182, 7, 71, 2, 2, 181, 173, 3, 2, 2, 2, 181, 177, - 3, 2, 2, 2, 182, 26, 3, 2, 2, 2, 183, 184, 7, 103, 2, 2, 184, 185, 7, 122, - 2, 2, 185, 186, 7, 107, 2, 2, 186, 187, 7, 117, 2, 2, 187, 188, 7, 118, - 2, 2, 188, 196, 7, 117, 2, 2, 189, 190, 7, 71, 2, 2, 190, 191, 7, 90, 2, - 2, 191, 192, 7, 75, 2, 2, 192, 193, 7, 85, 2, 2, 193, 194, 7, 86, 2, 2, - 194, 196, 7, 85, 2, 2, 195, 183, 3, 2, 2, 2, 195, 189, 3, 2, 2, 2, 196, - 28, 3, 2, 2, 2, 197, 198, 7, 86, 2, 2, 198, 199, 7, 103, 2, 2, 199, 200, - 7, 122, 2, 2, 200, 201, 7, 118, 2, 2, 201, 202, 7, 79, 2, 2, 202, 203, - 7, 99, 2, 2, 203, 204, 7, 118, 2, 2, 204, 205, 7, 101, 2, 2, 205, 206, - 7, 106, 2, 2, 206, 30, 3, 2, 2, 2, 207, 208, 7, 45, 2, 2, 208, 32, 3, 2, - 2, 2, 209, 210, 7, 47, 2, 2, 210, 34, 3, 2, 2, 2, 211, 212, 7, 44, 2, 2, - 212, 36, 3, 2, 2, 2, 213, 214, 7, 49, 2, 2, 214, 38, 3, 2, 2, 2, 215, 216, - 7, 39, 2, 2, 216, 40, 3, 2, 2, 2, 217, 218, 7, 44, 2, 2, 218, 219, 7, 44, - 2, 2, 219, 42, 3, 2, 2, 2, 220, 221, 7, 62, 2, 2, 221, 222, 7, 62, 2, 2, - 222, 44, 3, 2, 2, 2, 223, 224, 7, 64, 2, 2, 224, 225, 7, 64, 2, 2, 225, - 46, 3, 2, 2, 2, 226, 227, 7, 40, 2, 2, 227, 48, 3, 2, 2, 2, 228, 229, 7, - 126, 2, 2, 229, 50, 3, 2, 2, 2, 230, 231, 7, 96, 2, 2, 231, 52, 3, 2, 2, - 2, 232, 233, 7, 40, 2, 2, 233, 238, 7, 40, 2, 2, 234, 235, 7, 99, 2, 2, - 235, 236, 7, 112, 2, 2, 236, 238, 7, 102, 2, 2, 237, 232, 3, 2, 2, 2, 237, - 234, 3, 2, 2, 2, 238, 54, 3, 2, 2, 2, 239, 240, 7, 126, 2, 2, 240, 244, - 7, 126, 2, 2, 241, 242, 7, 113, 2, 2, 242, 244, 7, 116, 2, 2, 243, 239, - 3, 2, 2, 2, 243, 241, 3, 2, 2, 2, 244, 56, 3, 2, 2, 2, 245, 246, 7, 128, - 2, 2, 246, 58, 3, 2, 2, 2, 247, 252, 7, 35, 2, 2, 248, 249, 7, 112, 2, - 2, 249, 250, 7, 113, 2, 2, 250, 252, 7, 118, 2, 2, 251, 247, 3, 2, 2, 2, - 251, 248, 3, 2, 2, 2, 252, 60, 3, 2, 2, 2, 253, 254, 7, 107, 2, 2, 254, - 255, 7, 112, 2, 2, 255, 62, 3, 2, 2, 2, 256, 257, 7, 112, 2, 2, 257, 258, - 7, 113, 2, 2, 258, 259, 7, 118, 2, 2, 259, 260, 7, 34, 2, 2, 260, 261, - 7, 107, 2, 2, 261, 262, 7, 112, 2, 2, 262, 64, 3, 2, 2, 2, 263, 268, 7, - 93, 2, 2, 264, 267, 5, 143, 72, 2, 265, 267, 5, 145, 73, 2, 266, 264, 3, - 2, 2, 2, 266, 265, 3, 2, 2, 2, 267, 270, 3, 2, 2, 2, 268, 266, 3, 2, 2, - 2, 268, 269, 3, 2, 2, 2, 269, 271, 3, 2, 2, 2, 270, 268, 3, 2, 2, 2, 271, - 272, 7, 95, 2, 2, 272, 66, 3, 2, 2, 2, 273, 274, 7, 108, 2, 2, 274, 275, - 7, 117, 2, 2, 275, 276, 7, 113, 2, 2, 276, 277, 7, 112, 2, 2, 277, 278, - 7, 97, 2, 2, 278, 279, 7, 101, 2, 2, 279, 280, 7, 113, 2, 2, 280, 281, - 7, 112, 2, 2, 281, 282, 7, 118, 2, 2, 282, 283, 7, 99, 2, 2, 283, 284, - 7, 107, 2, 2, 284, 285, 7, 112, 2, 2, 285, 300, 7, 117, 2, 2, 286, 287, - 7, 76, 2, 2, 287, 288, 7, 85, 2, 2, 288, 289, 7, 81, 2, 2, 289, 290, 7, - 80, 2, 2, 290, 291, 7, 97, 2, 2, 291, 292, 7, 69, 2, 2, 292, 293, 7, 81, - 2, 2, 293, 294, 7, 80, 2, 2, 294, 295, 7, 86, 2, 2, 295, 296, 7, 67, 2, - 2, 296, 297, 7, 75, 2, 2, 297, 298, 7, 80, 2, 2, 298, 300, 7, 85, 2, 2, - 299, 273, 3, 2, 2, 2, 299, 286, 3, 2, 2, 2, 300, 68, 3, 2, 2, 2, 301, 302, - 7, 108, 2, 2, 302, 303, 7, 117, 2, 2, 303, 304, 7, 113, 2, 2, 304, 305, - 7, 112, 2, 2, 305, 306, 7, 97, 2, 2, 306, 307, 7, 101, 2, 2, 307, 308, - 7, 113, 2, 2, 308, 309, 7, 112, 2, 2, 309, 310, 7, 118, 2, 2, 310, 311, - 7, 99, 2, 2, 311, 312, 7, 107, 2, 2, 312, 313, 7, 112, 2, 2, 313, 314, - 7, 117, 2, 2, 314, 315, 7, 97, 2, 2, 315, 316, 7, 99, 2, 2, 316, 317, 7, - 110, 2, 2, 317, 336, 7, 110, 2, 2, 318, 319, 7, 76, 2, 2, 319, 320, 7, - 85, 2, 2, 320, 321, 7, 81, 2, 2, 321, 322, 7, 80, 2, 2, 322, 323, 7, 97, - 2, 2, 323, 324, 7, 69, 2, 2, 324, 325, 7, 81, 2, 2, 325, 326, 7, 80, 2, - 2, 326, 327, 7, 86, 2, 2, 327, 328, 7, 67, 2, 2, 328, 329, 7, 75, 2, 2, - 329, 330, 7, 80, 2, 2, 330, 331, 7, 85, 2, 2, 331, 332, 7, 97, 2, 2, 332, - 333, 7, 67, 2, 2, 333, 334, 7, 78, 2, 2, 334, 336, 7, 78, 2, 2, 335, 301, - 3, 2, 2, 2, 335, 318, 3, 2, 2, 2, 336, 70, 3, 2, 2, 2, 337, 338, 7, 108, - 2, 2, 338, 339, 7, 117, 2, 2, 339, 340, 7, 113, 2, 2, 340, 341, 7, 112, - 2, 2, 341, 342, 7, 97, 2, 2, 342, 343, 7, 101, 2, 2, 343, 344, 7, 113, - 2, 2, 344, 345, 7, 112, 2, 2, 345, 346, 7, 118, 2, 2, 346, 347, 7, 99, - 2, 2, 347, 348, 7, 107, 2, 2, 348, 349, 7, 112, 2, 2, 349, 350, 7, 117, - 2, 2, 350, 351, 7, 97, 2, 2, 351, 352, 7, 99, 2, 2, 352, 353, 7, 112, 2, - 2, 353, 372, 7, 123, 2, 2, 354, 355, 7, 76, 2, 2, 355, 356, 7, 85, 2, 2, - 356, 357, 7, 81, 2, 2, 357, 358, 7, 80, 2, 2, 358, 359, 7, 97, 2, 2, 359, - 360, 7, 69, 2, 2, 360, 361, 7, 81, 2, 2, 361, 362, 7, 80, 2, 2, 362, 363, - 7, 86, 2, 2, 363, 364, 7, 67, 2, 2, 364, 365, 7, 75, 2, 2, 365, 366, 7, - 80, 2, 2, 366, 367, 7, 85, 2, 2, 367, 368, 7, 97, 2, 2, 368, 369, 7, 67, - 2, 2, 369, 370, 7, 80, 2, 2, 370, 372, 7, 91, 2, 2, 371, 337, 3, 2, 2, - 2, 371, 354, 3, 2, 2, 2, 372, 72, 3, 2, 2, 2, 373, 374, 7, 99, 2, 2, 374, - 375, 7, 116, 2, 2, 375, 376, 7, 116, 2, 2, 376, 377, 7, 99, 2, 2, 377, - 378, 7, 123, 2, 2, 378, 379, 7, 97, 2, 2, 379, 380, 7, 101, 2, 2, 380, - 381, 7, 113, 2, 2, 381, 382, 7, 112, 2, 2, 382, 383, 7, 118, 2, 2, 383, - 384, 7, 99, 2, 2, 384, 385, 7, 107, 2, 2, 385, 386, 7, 112, 2, 2, 386, - 402, 7, 117, 2, 2, 387, 388, 7, 67, 2, 2, 388, 389, 7, 84, 2, 2, 389, 390, - 7, 84, 2, 2, 390, 391, 7, 67, 2, 2, 391, 392, 7, 91, 2, 2, 392, 393, 7, - 97, 2, 2, 393, 394, 7, 69, 2, 2, 394, 395, 7, 81, 2, 2, 395, 396, 7, 80, - 2, 2, 396, 397, 7, 86, 2, 2, 397, 398, 7, 67, 2, 2, 398, 399, 7, 75, 2, - 2, 399, 400, 7, 80, 2, 2, 400, 402, 7, 85, 2, 2, 401, 373, 3, 2, 2, 2, - 401, 387, 3, 2, 2, 2, 402, 74, 3, 2, 2, 2, 403, 404, 7, 99, 2, 2, 404, - 405, 7, 116, 2, 2, 405, 406, 7, 116, 2, 2, 406, 407, 7, 99, 2, 2, 407, - 408, 7, 123, 2, 2, 408, 409, 7, 97, 2, 2, 409, 410, 7, 101, 2, 2, 410, - 411, 7, 113, 2, 2, 411, 412, 7, 112, 2, 2, 412, 413, 7, 118, 2, 2, 413, - 414, 7, 99, 2, 2, 414, 415, 7, 107, 2, 2, 415, 416, 7, 112, 2, 2, 416, - 417, 7, 117, 2, 2, 417, 418, 7, 97, 2, 2, 418, 419, 7, 99, 2, 2, 419, 420, - 7, 110, 2, 2, 420, 440, 7, 110, 2, 2, 421, 422, 7, 67, 2, 2, 422, 423, - 7, 84, 2, 2, 423, 424, 7, 84, 2, 2, 424, 425, 7, 67, 2, 2, 425, 426, 7, - 91, 2, 2, 426, 427, 7, 97, 2, 2, 427, 428, 7, 69, 2, 2, 428, 429, 7, 81, - 2, 2, 429, 430, 7, 80, 2, 2, 430, 431, 7, 86, 2, 2, 431, 432, 7, 67, 2, - 2, 432, 433, 7, 75, 2, 2, 433, 434, 7, 80, 2, 2, 434, 435, 7, 85, 2, 2, - 435, 436, 7, 97, 2, 2, 436, 437, 7, 67, 2, 2, 437, 438, 7, 78, 2, 2, 438, - 440, 7, 78, 2, 2, 439, 403, 3, 2, 2, 2, 439, 421, 3, 2, 2, 2, 440, 76, - 3, 2, 2, 2, 441, 442, 7, 99, 2, 2, 442, 443, 7, 116, 2, 2, 443, 444, 7, - 116, 2, 2, 444, 445, 7, 99, 2, 2, 445, 446, 7, 123, 2, 2, 446, 447, 7, - 97, 2, 2, 447, 448, 7, 101, 2, 2, 448, 449, 7, 113, 2, 2, 449, 450, 7, - 112, 2, 2, 450, 451, 7, 118, 2, 2, 451, 452, 7, 99, 2, 2, 452, 453, 7, - 107, 2, 2, 453, 454, 7, 112, 2, 2, 454, 455, 7, 117, 2, 2, 455, 456, 7, - 97, 2, 2, 456, 457, 7, 99, 2, 2, 457, 458, 7, 112, 2, 2, 458, 478, 7, 123, - 2, 2, 459, 460, 7, 67, 2, 2, 460, 461, 7, 84, 2, 2, 461, 462, 7, 84, 2, - 2, 462, 463, 7, 67, 2, 2, 463, 464, 7, 91, 2, 2, 464, 465, 7, 97, 2, 2, - 465, 466, 7, 69, 2, 2, 466, 467, 7, 81, 2, 2, 467, 468, 7, 80, 2, 2, 468, - 469, 7, 86, 2, 2, 469, 470, 7, 67, 2, 2, 470, 471, 7, 75, 2, 2, 471, 472, - 7, 80, 2, 2, 472, 473, 7, 85, 2, 2, 473, 474, 7, 97, 2, 2, 474, 475, 7, - 67, 2, 2, 475, 476, 7, 80, 2, 2, 476, 478, 7, 91, 2, 2, 477, 441, 3, 2, - 2, 2, 477, 459, 3, 2, 2, 2, 478, 78, 3, 2, 2, 2, 479, 480, 7, 99, 2, 2, - 480, 481, 7, 116, 2, 2, 481, 482, 7, 116, 2, 2, 482, 483, 7, 99, 2, 2, - 483, 484, 7, 123, 2, 2, 484, 485, 7, 97, 2, 2, 485, 486, 7, 110, 2, 2, - 486, 487, 7, 103, 2, 2, 487, 488, 7, 112, 2, 2, 488, 489, 7, 105, 2, 2, - 489, 490, 7, 118, 2, 2, 490, 504, 7, 106, 2, 2, 491, 492, 7, 67, 2, 2, - 492, 493, 7, 84, 2, 2, 493, 494, 7, 84, 2, 2, 494, 495, 7, 67, 2, 2, 495, - 496, 7, 91, 2, 2, 496, 497, 7, 97, 2, 2, 497, 498, 7, 78, 2, 2, 498, 499, - 7, 71, 2, 2, 499, 500, 7, 80, 2, 2, 500, 501, 7, 73, 2, 2, 501, 502, 7, - 86, 2, 2, 502, 504, 7, 74, 2, 2, 503, 479, 3, 2, 2, 2, 503, 491, 3, 2, - 2, 2, 504, 80, 3, 2, 2, 2, 505, 506, 7, 118, 2, 2, 506, 507, 7, 116, 2, - 2, 507, 508, 7, 119, 2, 2, 508, 533, 7, 103, 2, 2, 509, 510, 7, 86, 2, - 2, 510, 511, 7, 116, 2, 2, 511, 512, 7, 119, 2, 2, 512, 533, 7, 103, 2, - 2, 513, 514, 7, 86, 2, 2, 514, 515, 7, 84, 2, 2, 515, 516, 7, 87, 2, 2, - 516, 533, 7, 71, 2, 2, 517, 518, 7, 104, 2, 2, 518, 519, 7, 99, 2, 2, 519, - 520, 7, 110, 2, 2, 520, 521, 7, 117, 2, 2, 521, 533, 7, 103, 2, 2, 522, - 523, 7, 72, 2, 2, 523, 524, 7, 99, 2, 2, 524, 525, 7, 110, 2, 2, 525, 526, - 7, 117, 2, 2, 526, 533, 7, 103, 2, 2, 527, 528, 7, 72, 2, 2, 528, 529, - 7, 67, 2, 2, 529, 530, 7, 78, 2, 2, 530, 531, 7, 85, 2, 2, 531, 533, 7, - 71, 2, 2, 532, 505, 3, 2, 2, 2, 532, 509, 3, 2, 2, 2, 532, 513, 3, 2, 2, - 2, 532, 517, 3, 2, 2, 2, 532, 522, 3, 2, 2, 2, 532, 527, 3, 2, 2, 2, 533, - 82, 3, 2, 2, 2, 534, 539, 5, 109, 55, 2, 535, 539, 5, 111, 56, 2, 536, - 539, 5, 113, 57, 2, 537, 539, 5, 107, 54, 2, 538, 534, 3, 2, 2, 2, 538, - 535, 3, 2, 2, 2, 538, 536, 3, 2, 2, 2, 538, 537, 3, 2, 2, 2, 539, 84, 3, - 2, 2, 2, 540, 543, 5, 125, 63, 2, 541, 543, 5, 127, 64, 2, 542, 540, 3, - 2, 2, 2, 542, 541, 3, 2, 2, 2, 543, 86, 3, 2, 2, 2, 544, 549, 5, 103, 52, - 2, 545, 548, 5, 103, 52, 2, 546, 548, 5, 105, 53, 2, 547, 545, 3, 2, 2, - 2, 547, 546, 3, 2, 2, 2, 548, 551, 3, 2, 2, 2, 549, 547, 3, 2, 2, 2, 549, - 550, 3, 2, 2, 2, 550, 558, 3, 2, 2, 2, 551, 549, 3, 2, 2, 2, 552, 553, - 7, 38, 2, 2, 553, 554, 7, 111, 2, 2, 554, 555, 7, 103, 2, 2, 555, 556, - 7, 118, 2, 2, 556, 558, 7, 99, 2, 2, 557, 544, 3, 2, 2, 2, 557, 552, 3, - 2, 2, 2, 558, 88, 3, 2, 2, 2, 559, 561, 5, 93, 47, 2, 560, 559, 3, 2, 2, - 2, 560, 561, 3, 2, 2, 2, 561, 572, 3, 2, 2, 2, 562, 564, 7, 36, 2, 2, 563, - 565, 5, 95, 48, 2, 564, 563, 3, 2, 2, 2, 564, 565, 3, 2, 2, 2, 565, 566, - 3, 2, 2, 2, 566, 573, 7, 36, 2, 2, 567, 569, 7, 41, 2, 2, 568, 570, 5, - 97, 49, 2, 569, 568, 3, 2, 2, 2, 569, 570, 3, 2, 2, 2, 570, 571, 3, 2, - 2, 2, 571, 573, 7, 41, 2, 2, 572, 562, 3, 2, 2, 2, 572, 567, 3, 2, 2, 2, - 573, 90, 3, 2, 2, 2, 574, 582, 5, 87, 44, 2, 575, 578, 7, 93, 2, 2, 576, - 579, 5, 89, 45, 2, 577, 579, 5, 109, 55, 2, 578, 576, 3, 2, 2, 2, 578, - 577, 3, 2, 2, 2, 579, 580, 3, 2, 2, 2, 580, 581, 7, 95, 2, 2, 581, 583, - 3, 2, 2, 2, 582, 575, 3, 2, 2, 2, 583, 584, 3, 2, 2, 2, 584, 582, 3, 2, - 2, 2, 584, 585, 3, 2, 2, 2, 585, 92, 3, 2, 2, 2, 586, 587, 7, 119, 2, 2, - 587, 590, 7, 58, 2, 2, 588, 590, 9, 2, 2, 2, 589, 586, 3, 2, 2, 2, 589, - 588, 3, 2, 2, 2, 590, 94, 3, 2, 2, 2, 591, 593, 5, 99, 50, 2, 592, 591, - 3, 2, 2, 2, 593, 594, 3, 2, 2, 2, 594, 592, 3, 2, 2, 2, 594, 595, 3, 2, - 2, 2, 595, 96, 3, 2, 2, 2, 596, 598, 5, 101, 51, 2, 597, 596, 3, 2, 2, - 2, 598, 599, 3, 2, 2, 2, 599, 597, 3, 2, 2, 2, 599, 600, 3, 2, 2, 2, 600, - 98, 3, 2, 2, 2, 601, 609, 10, 3, 2, 2, 602, 609, 5, 141, 71, 2, 603, 604, - 7, 94, 2, 2, 604, 609, 7, 12, 2, 2, 605, 606, 7, 94, 2, 2, 606, 607, 7, - 15, 2, 2, 607, 609, 7, 12, 2, 2, 608, 601, 3, 2, 2, 2, 608, 602, 3, 2, - 2, 2, 608, 603, 3, 2, 2, 2, 608, 605, 3, 2, 2, 2, 609, 100, 3, 2, 2, 2, - 610, 618, 10, 4, 2, 2, 611, 618, 5, 141, 71, 2, 612, 613, 7, 94, 2, 2, - 613, 618, 7, 12, 2, 2, 614, 615, 7, 94, 2, 2, 615, 616, 7, 15, 2, 2, 616, - 618, 7, 12, 2, 2, 617, 610, 3, 2, 2, 2, 617, 611, 3, 2, 2, 2, 617, 612, - 3, 2, 2, 2, 617, 614, 3, 2, 2, 2, 618, 102, 3, 2, 2, 2, 619, 620, 9, 5, - 2, 2, 620, 104, 3, 2, 2, 2, 621, 622, 9, 6, 2, 2, 622, 106, 3, 2, 2, 2, - 623, 624, 7, 50, 2, 2, 624, 626, 9, 7, 2, 2, 625, 627, 9, 8, 2, 2, 626, - 625, 3, 2, 2, 2, 627, 628, 3, 2, 2, 2, 628, 626, 3, 2, 2, 2, 628, 629, - 3, 2, 2, 2, 629, 108, 3, 2, 2, 2, 630, 634, 5, 115, 58, 2, 631, 633, 5, - 105, 53, 2, 632, 631, 3, 2, 2, 2, 633, 636, 3, 2, 2, 2, 634, 632, 3, 2, - 2, 2, 634, 635, 3, 2, 2, 2, 635, 639, 3, 2, 2, 2, 636, 634, 3, 2, 2, 2, - 637, 639, 7, 50, 2, 2, 638, 630, 3, 2, 2, 2, 638, 637, 3, 2, 2, 2, 639, - 110, 3, 2, 2, 2, 640, 644, 7, 50, 2, 2, 641, 643, 5, 117, 59, 2, 642, 641, - 3, 2, 2, 2, 643, 646, 3, 2, 2, 2, 644, 642, 3, 2, 2, 2, 644, 645, 3, 2, - 2, 2, 645, 112, 3, 2, 2, 2, 646, 644, 3, 2, 2, 2, 647, 648, 7, 50, 2, 2, - 648, 649, 9, 9, 2, 2, 649, 650, 5, 137, 69, 2, 650, 114, 3, 2, 2, 2, 651, - 652, 9, 10, 2, 2, 652, 116, 3, 2, 2, 2, 653, 654, 9, 11, 2, 2, 654, 118, - 3, 2, 2, 2, 655, 656, 9, 12, 2, 2, 656, 120, 3, 2, 2, 2, 657, 658, 5, 119, - 60, 2, 658, 659, 5, 119, 60, 2, 659, 660, 5, 119, 60, 2, 660, 661, 5, 119, - 60, 2, 661, 122, 3, 2, 2, 2, 662, 663, 7, 94, 2, 2, 663, 664, 7, 119, 2, - 2, 664, 665, 3, 2, 2, 2, 665, 673, 5, 121, 61, 2, 666, 667, 7, 94, 2, 2, - 667, 668, 7, 87, 2, 2, 668, 669, 3, 2, 2, 2, 669, 670, 5, 121, 61, 2, 670, - 671, 5, 121, 61, 2, 671, 673, 3, 2, 2, 2, 672, 662, 3, 2, 2, 2, 672, 666, - 3, 2, 2, 2, 673, 124, 3, 2, 2, 2, 674, 676, 5, 129, 65, 2, 675, 677, 5, - 131, 66, 2, 676, 675, 3, 2, 2, 2, 676, 677, 3, 2, 2, 2, 677, 682, 3, 2, - 2, 2, 678, 679, 5, 133, 67, 2, 679, 680, 5, 131, 66, 2, 680, 682, 3, 2, - 2, 2, 681, 674, 3, 2, 2, 2, 681, 678, 3, 2, 2, 2, 682, 126, 3, 2, 2, 2, - 683, 684, 7, 50, 2, 2, 684, 687, 9, 9, 2, 2, 685, 688, 5, 135, 68, 2, 686, - 688, 5, 137, 69, 2, 687, 685, 3, 2, 2, 2, 687, 686, 3, 2, 2, 2, 688, 689, - 3, 2, 2, 2, 689, 690, 5, 139, 70, 2, 690, 128, 3, 2, 2, 2, 691, 693, 5, - 133, 67, 2, 692, 691, 3, 2, 2, 2, 692, 693, 3, 2, 2, 2, 693, 694, 3, 2, - 2, 2, 694, 695, 7, 48, 2, 2, 695, 700, 5, 133, 67, 2, 696, 697, 5, 133, - 67, 2, 697, 698, 7, 48, 2, 2, 698, 700, 3, 2, 2, 2, 699, 692, 3, 2, 2, - 2, 699, 696, 3, 2, 2, 2, 700, 130, 3, 2, 2, 2, 701, 703, 9, 13, 2, 2, 702, - 704, 9, 14, 2, 2, 703, 702, 3, 2, 2, 2, 703, 704, 3, 2, 2, 2, 704, 705, - 3, 2, 2, 2, 705, 706, 5, 133, 67, 2, 706, 132, 3, 2, 2, 2, 707, 709, 5, - 105, 53, 2, 708, 707, 3, 2, 2, 2, 709, 710, 3, 2, 2, 2, 710, 708, 3, 2, - 2, 2, 710, 711, 3, 2, 2, 2, 711, 134, 3, 2, 2, 2, 712, 714, 5, 137, 69, - 2, 713, 712, 3, 2, 2, 2, 713, 714, 3, 2, 2, 2, 714, 715, 3, 2, 2, 2, 715, - 716, 7, 48, 2, 2, 716, 721, 5, 137, 69, 2, 717, 718, 5, 137, 69, 2, 718, - 719, 7, 48, 2, 2, 719, 721, 3, 2, 2, 2, 720, 713, 3, 2, 2, 2, 720, 717, - 3, 2, 2, 2, 721, 136, 3, 2, 2, 2, 722, 724, 5, 119, 60, 2, 723, 722, 3, - 2, 2, 2, 724, 725, 3, 2, 2, 2, 725, 723, 3, 2, 2, 2, 725, 726, 3, 2, 2, - 2, 726, 138, 3, 2, 2, 2, 727, 729, 9, 15, 2, 2, 728, 730, 9, 14, 2, 2, - 729, 728, 3, 2, 2, 2, 729, 730, 3, 2, 2, 2, 730, 731, 3, 2, 2, 2, 731, - 732, 5, 133, 67, 2, 732, 140, 3, 2, 2, 2, 733, 734, 7, 94, 2, 2, 734, 749, - 9, 16, 2, 2, 735, 736, 7, 94, 2, 2, 736, 738, 5, 117, 59, 2, 737, 739, - 5, 117, 59, 2, 738, 737, 3, 2, 2, 2, 738, 739, 3, 2, 2, 2, 739, 741, 3, - 2, 2, 2, 740, 742, 5, 117, 59, 2, 741, 740, 3, 2, 2, 2, 741, 742, 3, 2, - 2, 2, 742, 749, 3, 2, 2, 2, 743, 744, 7, 94, 2, 2, 744, 745, 7, 122, 2, - 2, 745, 746, 3, 2, 2, 2, 746, 749, 5, 137, 69, 2, 747, 749, 5, 123, 62, - 2, 748, 733, 3, 2, 2, 2, 748, 735, 3, 2, 2, 2, 748, 743, 3, 2, 2, 2, 748, - 747, 3, 2, 2, 2, 749, 142, 3, 2, 2, 2, 750, 752, 9, 17, 2, 2, 751, 750, - 3, 2, 2, 2, 752, 753, 3, 2, 2, 2, 753, 751, 3, 2, 2, 2, 753, 754, 3, 2, - 2, 2, 754, 755, 3, 2, 2, 2, 755, 756, 8, 72, 2, 2, 756, 144, 3, 2, 2, 2, - 757, 759, 7, 15, 2, 2, 758, 760, 7, 12, 2, 2, 759, 758, 3, 2, 2, 2, 759, - 760, 3, 2, 2, 2, 760, 763, 3, 2, 2, 2, 761, 763, 7, 12, 2, 2, 762, 757, - 3, 2, 2, 2, 762, 761, 3, 2, 2, 2, 763, 764, 3, 2, 2, 2, 764, 765, 8, 73, - 2, 2, 765, 146, 3, 2, 2, 2, 56, 2, 181, 195, 237, 243, 251, 266, 268, 299, - 335, 371, 401, 439, 477, 503, 532, 538, 542, 547, 549, 557, 560, 564, 569, - 572, 578, 584, 589, 594, 599, 608, 617, 628, 634, 638, 644, 672, 676, 681, - 687, 692, 699, 703, 710, 713, 720, 725, 729, 738, 741, 748, 753, 759, 762, - 3, 8, 2, 2, -} - -var lexerChannelNames = []string{ - "DEFAULT_TOKEN_CHANNEL", "HIDDEN", -} - -var lexerModeNames = []string{ - "DEFAULT_MODE", -} - -var lexerLiteralNames = []string{ - "", "'('", "')'", "'['", "','", "']'", "'<'", "'<='", "'>'", "'>='", "'=='", - "'!='", "", "", "'TextMatch'", "'+'", "'-'", "'*'", "'/'", "'%'", "'**'", - "'<<'", "'>>'", "'&'", "'|'", "'^'", "", "", "'~'", "", "'in'", "'not in'", -} - -var lexerSymbolicNames = []string{ - "", "", "", "", "", "", "LT", "LE", "GT", "GE", "EQ", "NE", "LIKE", "EXISTS", - "TEXTMATCH", "ADD", "SUB", "MUL", "DIV", "MOD", "POW", "SHL", "SHR", "BAND", - "BOR", "BXOR", "AND", "OR", "BNOT", "NOT", "IN", "NIN", "EmptyTerm", "JSONContains", - "JSONContainsAll", "JSONContainsAny", "ArrayContains", "ArrayContainsAll", - "ArrayContainsAny", "ArrayLength", "BooleanConstant", "IntegerConstant", - "FloatingConstant", "Identifier", "StringLiteral", "JSONIdentifier", "Whitespace", - "Newline", -} - -var lexerRuleNames = []string{ - "T__0", "T__1", "T__2", "T__3", "T__4", "LT", "LE", "GT", "GE", "EQ", "NE", - "LIKE", "EXISTS", "TEXTMATCH", "ADD", "SUB", "MUL", "DIV", "MOD", "POW", - "SHL", "SHR", "BAND", "BOR", "BXOR", "AND", "OR", "BNOT", "NOT", "IN", - "NIN", "EmptyTerm", "JSONContains", "JSONContainsAll", "JSONContainsAny", - "ArrayContains", "ArrayContainsAll", "ArrayContainsAny", "ArrayLength", - "BooleanConstant", "IntegerConstant", "FloatingConstant", "Identifier", - "StringLiteral", "JSONIdentifier", "EncodingPrefix", "DoubleSCharSequence", - "SingleSCharSequence", "DoubleSChar", "SingleSChar", "Nondigit", "Digit", - "BinaryConstant", "DecimalConstant", "OctalConstant", "HexadecimalConstant", - "NonzeroDigit", "OctalDigit", "HexadecimalDigit", "HexQuad", "UniversalCharacterName", - "DecimalFloatingConstant", "HexadecimalFloatingConstant", "FractionalConstant", - "ExponentPart", "DigitSequence", "HexadecimalFractionalConstant", "HexadecimalDigitSequence", - "BinaryExponentPart", "EscapeSequence", "Whitespace", "Newline", -} - type PlanLexer struct { *antlr.BaseLexer channelNames []string @@ -411,28 +21,442 @@ type PlanLexer struct { // TODO: EOF string } -// NewPlanLexer produces a new lexer instance for the optional input antlr.CharStream. -// -// The *PlanLexer instance produced may be reused by calling the SetInputStream method. -// The initial lexer configuration is expensive to construct, and the object is not thread-safe; -// however, if used within a Golang sync.Pool, the construction cost amortizes well and the -// objects can be used in a thread-safe manner. -func NewPlanLexer(input antlr.CharStream) *PlanLexer { - l := new(PlanLexer) - lexerDeserializer := antlr.NewATNDeserializer(nil) - lexerAtn := lexerDeserializer.DeserializeFromUInt16(serializedLexerAtn) - lexerDecisionToDFA := make([]*antlr.DFA, len(lexerAtn.DecisionToState)) - for index, ds := range lexerAtn.DecisionToState { - lexerDecisionToDFA[index] = antlr.NewDFA(ds, index) - } - l.BaseLexer = antlr.NewBaseLexer(input) - l.Interpreter = antlr.NewLexerATNSimulator(l, lexerAtn, lexerDecisionToDFA, antlr.NewPredictionContextCache()) +var PlanLexerLexerStaticData struct { + once sync.Once + serializedATN []int32 + ChannelNames []string + ModeNames []string + LiteralNames []string + SymbolicNames []string + RuleNames []string + PredictionContextCache *antlr.PredictionContextCache + atn *antlr.ATN + decisionToDFA []*antlr.DFA +} - l.channelNames = lexerChannelNames - l.modeNames = lexerModeNames - l.RuleNames = lexerRuleNames - l.LiteralNames = lexerLiteralNames - l.SymbolicNames = lexerSymbolicNames +func planlexerLexerInit() { + staticData := &PlanLexerLexerStaticData + staticData.ChannelNames = []string{ + "DEFAULT_TOKEN_CHANNEL", "HIDDEN", + } + staticData.ModeNames = []string{ + "DEFAULT_MODE", + } + staticData.LiteralNames = []string{ + "", "'('", "')'", "'['", "','", "']'", "'<'", "'<='", "'>'", "'>='", + "'=='", "'!='", "", "", "", "'+'", "'-'", "'*'", "'/'", "'%'", "'**'", + "'<<'", "'>>'", "'&'", "'|'", "'^'", "", "", "'~'", + } + staticData.SymbolicNames = []string{ + "", "", "", "", "", "", "LT", "LE", "GT", "GE", "EQ", "NE", "LIKE", + "EXISTS", "TEXTMATCH", "ADD", "SUB", "MUL", "DIV", "MOD", "POW", "SHL", + "SHR", "BAND", "BOR", "BXOR", "AND", "OR", "BNOT", "NOT", "IN", "EmptyArray", + "JSONContains", "JSONContainsAll", "JSONContainsAny", "ArrayContains", + "ArrayContainsAll", "ArrayContainsAny", "ArrayLength", "BooleanConstant", + "IntegerConstant", "FloatingConstant", "Identifier", "StringLiteral", + "JSONIdentifier", "Whitespace", "Newline", + } + staticData.RuleNames = []string{ + "T__0", "T__1", "T__2", "T__3", "T__4", "LT", "LE", "GT", "GE", "EQ", + "NE", "LIKE", "EXISTS", "TEXTMATCH", "ADD", "SUB", "MUL", "DIV", "MOD", + "POW", "SHL", "SHR", "BAND", "BOR", "BXOR", "AND", "OR", "BNOT", "NOT", + "IN", "EmptyArray", "JSONContains", "JSONContainsAll", "JSONContainsAny", + "ArrayContains", "ArrayContainsAll", "ArrayContainsAny", "ArrayLength", + "BooleanConstant", "IntegerConstant", "FloatingConstant", "Identifier", + "StringLiteral", "JSONIdentifier", "EncodingPrefix", "DoubleSCharSequence", + "SingleSCharSequence", "DoubleSChar", "SingleSChar", "Nondigit", "Digit", + "BinaryConstant", "DecimalConstant", "OctalConstant", "HexadecimalConstant", + "NonzeroDigit", "OctalDigit", "HexadecimalDigit", "HexQuad", "UniversalCharacterName", + "DecimalFloatingConstant", "HexadecimalFloatingConstant", "FractionalConstant", + "ExponentPart", "DigitSequence", "HexadecimalFractionalConstant", "HexadecimalDigitSequence", + "BinaryExponentPart", "EscapeSequence", "Whitespace", "Newline", + } + staticData.PredictionContextCache = antlr.NewPredictionContextCache() + staticData.serializedATN = []int32{ + 4, 0, 46, 777, 6, -1, 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, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, + 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, + 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, + 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, + 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, + 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, + 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, + 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, + 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, + 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, + 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, + 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, + 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, + 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 178, 8, 11, 1, 12, 1, + 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, + 3, 12, 192, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, + 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, + 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 221, + 8, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, + 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, + 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, + 25, 253, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 259, 8, 26, 1, 27, 1, + 27, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 267, 8, 28, 1, 29, 1, 29, 1, 29, + 1, 29, 3, 29, 273, 8, 29, 1, 30, 1, 30, 1, 30, 5, 30, 278, 8, 30, 10, 30, + 12, 30, 281, 9, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, + 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, + 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, + 31, 311, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, + 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, + 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, + 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 347, 8, 32, 1, 33, 1, 33, 1, + 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, + 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, + 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, + 3, 33, 383, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, + 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, + 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, + 34, 413, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, + 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, + 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, + 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 451, 8, 35, 1, + 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, + 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, + 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, + 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 489, 8, 36, 1, 37, 1, 37, 1, 37, 1, + 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, + 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, + 37, 515, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, + 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, + 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 544, + 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 550, 8, 39, 1, 40, 1, 40, 3, + 40, 554, 8, 40, 1, 41, 1, 41, 1, 41, 5, 41, 559, 8, 41, 10, 41, 12, 41, + 562, 9, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 569, 8, 41, 1, 42, + 3, 42, 572, 8, 42, 1, 42, 1, 42, 3, 42, 576, 8, 42, 1, 42, 1, 42, 1, 42, + 3, 42, 581, 8, 42, 1, 42, 3, 42, 584, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, + 3, 43, 590, 8, 43, 1, 43, 1, 43, 4, 43, 594, 8, 43, 11, 43, 12, 43, 595, + 1, 44, 1, 44, 1, 44, 3, 44, 601, 8, 44, 1, 45, 4, 45, 604, 8, 45, 11, 45, + 12, 45, 605, 1, 46, 4, 46, 609, 8, 46, 11, 46, 12, 46, 610, 1, 47, 1, 47, + 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 620, 8, 47, 1, 48, 1, 48, 1, + 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 629, 8, 48, 1, 49, 1, 49, 1, 50, + 1, 50, 1, 51, 1, 51, 1, 51, 4, 51, 638, 8, 51, 11, 51, 12, 51, 639, 1, + 52, 1, 52, 5, 52, 644, 8, 52, 10, 52, 12, 52, 647, 9, 52, 1, 52, 3, 52, + 650, 8, 52, 1, 53, 1, 53, 5, 53, 654, 8, 53, 10, 53, 12, 53, 657, 9, 53, + 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, + 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, + 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 684, 8, 59, 1, 60, 1, 60, 3, 60, 688, + 8, 60, 1, 60, 1, 60, 1, 60, 3, 60, 693, 8, 60, 1, 61, 1, 61, 1, 61, 1, + 61, 3, 61, 699, 8, 61, 1, 61, 1, 61, 1, 62, 3, 62, 704, 8, 62, 1, 62, 1, + 62, 1, 62, 1, 62, 1, 62, 3, 62, 711, 8, 62, 1, 63, 1, 63, 3, 63, 715, 8, + 63, 1, 63, 1, 63, 1, 64, 4, 64, 720, 8, 64, 11, 64, 12, 64, 721, 1, 65, + 3, 65, 725, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 732, 8, 65, + 1, 66, 4, 66, 735, 8, 66, 11, 66, 12, 66, 736, 1, 67, 1, 67, 3, 67, 741, + 8, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 750, 8, + 68, 1, 68, 3, 68, 753, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, + 760, 8, 68, 1, 69, 4, 69, 763, 8, 69, 11, 69, 12, 69, 764, 1, 69, 1, 69, + 1, 70, 1, 70, 3, 70, 771, 8, 70, 1, 70, 3, 70, 774, 8, 70, 1, 70, 1, 70, + 0, 0, 71, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, + 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, + 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, + 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, + 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 0, 91, + 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, + 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, + 129, 0, 131, 0, 133, 0, 135, 0, 137, 0, 139, 45, 141, 46, 1, 0, 16, 3, + 0, 76, 76, 85, 85, 117, 117, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 4, 0, + 10, 10, 13, 13, 39, 39, 92, 92, 3, 0, 65, 90, 95, 95, 97, 122, 1, 0, 48, + 57, 2, 0, 66, 66, 98, 98, 1, 0, 48, 49, 2, 0, 88, 88, 120, 120, 1, 0, 49, + 57, 1, 0, 48, 55, 3, 0, 48, 57, 65, 70, 97, 102, 2, 0, 69, 69, 101, 101, + 2, 0, 43, 43, 45, 45, 2, 0, 80, 80, 112, 112, 10, 0, 34, 34, 39, 39, 63, + 63, 92, 92, 97, 98, 102, 102, 110, 110, 114, 114, 116, 116, 118, 118, 2, + 0, 9, 9, 32, 32, 819, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, + 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, + 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, + 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, + 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, + 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, + 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, + 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, + 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, + 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, + 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, + 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 139, 1, 0, 0, + 0, 0, 141, 1, 0, 0, 0, 1, 143, 1, 0, 0, 0, 3, 145, 1, 0, 0, 0, 5, 147, + 1, 0, 0, 0, 7, 149, 1, 0, 0, 0, 9, 151, 1, 0, 0, 0, 11, 153, 1, 0, 0, 0, + 13, 155, 1, 0, 0, 0, 15, 158, 1, 0, 0, 0, 17, 160, 1, 0, 0, 0, 19, 163, + 1, 0, 0, 0, 21, 166, 1, 0, 0, 0, 23, 177, 1, 0, 0, 0, 25, 191, 1, 0, 0, + 0, 27, 220, 1, 0, 0, 0, 29, 222, 1, 0, 0, 0, 31, 224, 1, 0, 0, 0, 33, 226, + 1, 0, 0, 0, 35, 228, 1, 0, 0, 0, 37, 230, 1, 0, 0, 0, 39, 232, 1, 0, 0, + 0, 41, 235, 1, 0, 0, 0, 43, 238, 1, 0, 0, 0, 45, 241, 1, 0, 0, 0, 47, 243, + 1, 0, 0, 0, 49, 245, 1, 0, 0, 0, 51, 252, 1, 0, 0, 0, 53, 258, 1, 0, 0, + 0, 55, 260, 1, 0, 0, 0, 57, 266, 1, 0, 0, 0, 59, 272, 1, 0, 0, 0, 61, 274, + 1, 0, 0, 0, 63, 310, 1, 0, 0, 0, 65, 346, 1, 0, 0, 0, 67, 382, 1, 0, 0, + 0, 69, 412, 1, 0, 0, 0, 71, 450, 1, 0, 0, 0, 73, 488, 1, 0, 0, 0, 75, 514, + 1, 0, 0, 0, 77, 543, 1, 0, 0, 0, 79, 549, 1, 0, 0, 0, 81, 553, 1, 0, 0, + 0, 83, 568, 1, 0, 0, 0, 85, 571, 1, 0, 0, 0, 87, 585, 1, 0, 0, 0, 89, 600, + 1, 0, 0, 0, 91, 603, 1, 0, 0, 0, 93, 608, 1, 0, 0, 0, 95, 619, 1, 0, 0, + 0, 97, 628, 1, 0, 0, 0, 99, 630, 1, 0, 0, 0, 101, 632, 1, 0, 0, 0, 103, + 634, 1, 0, 0, 0, 105, 649, 1, 0, 0, 0, 107, 651, 1, 0, 0, 0, 109, 658, + 1, 0, 0, 0, 111, 662, 1, 0, 0, 0, 113, 664, 1, 0, 0, 0, 115, 666, 1, 0, + 0, 0, 117, 668, 1, 0, 0, 0, 119, 683, 1, 0, 0, 0, 121, 692, 1, 0, 0, 0, + 123, 694, 1, 0, 0, 0, 125, 710, 1, 0, 0, 0, 127, 712, 1, 0, 0, 0, 129, + 719, 1, 0, 0, 0, 131, 731, 1, 0, 0, 0, 133, 734, 1, 0, 0, 0, 135, 738, + 1, 0, 0, 0, 137, 759, 1, 0, 0, 0, 139, 762, 1, 0, 0, 0, 141, 773, 1, 0, + 0, 0, 143, 144, 5, 40, 0, 0, 144, 2, 1, 0, 0, 0, 145, 146, 5, 41, 0, 0, + 146, 4, 1, 0, 0, 0, 147, 148, 5, 91, 0, 0, 148, 6, 1, 0, 0, 0, 149, 150, + 5, 44, 0, 0, 150, 8, 1, 0, 0, 0, 151, 152, 5, 93, 0, 0, 152, 10, 1, 0, + 0, 0, 153, 154, 5, 60, 0, 0, 154, 12, 1, 0, 0, 0, 155, 156, 5, 60, 0, 0, + 156, 157, 5, 61, 0, 0, 157, 14, 1, 0, 0, 0, 158, 159, 5, 62, 0, 0, 159, + 16, 1, 0, 0, 0, 160, 161, 5, 62, 0, 0, 161, 162, 5, 61, 0, 0, 162, 18, + 1, 0, 0, 0, 163, 164, 5, 61, 0, 0, 164, 165, 5, 61, 0, 0, 165, 20, 1, 0, + 0, 0, 166, 167, 5, 33, 0, 0, 167, 168, 5, 61, 0, 0, 168, 22, 1, 0, 0, 0, + 169, 170, 5, 108, 0, 0, 170, 171, 5, 105, 0, 0, 171, 172, 5, 107, 0, 0, + 172, 178, 5, 101, 0, 0, 173, 174, 5, 76, 0, 0, 174, 175, 5, 73, 0, 0, 175, + 176, 5, 75, 0, 0, 176, 178, 5, 69, 0, 0, 177, 169, 1, 0, 0, 0, 177, 173, + 1, 0, 0, 0, 178, 24, 1, 0, 0, 0, 179, 180, 5, 101, 0, 0, 180, 181, 5, 120, + 0, 0, 181, 182, 5, 105, 0, 0, 182, 183, 5, 115, 0, 0, 183, 184, 5, 116, + 0, 0, 184, 192, 5, 115, 0, 0, 185, 186, 5, 69, 0, 0, 186, 187, 5, 88, 0, + 0, 187, 188, 5, 73, 0, 0, 188, 189, 5, 83, 0, 0, 189, 190, 5, 84, 0, 0, + 190, 192, 5, 83, 0, 0, 191, 179, 1, 0, 0, 0, 191, 185, 1, 0, 0, 0, 192, + 26, 1, 0, 0, 0, 193, 194, 5, 84, 0, 0, 194, 195, 5, 101, 0, 0, 195, 196, + 5, 120, 0, 0, 196, 197, 5, 116, 0, 0, 197, 198, 5, 77, 0, 0, 198, 199, + 5, 97, 0, 0, 199, 200, 5, 116, 0, 0, 200, 201, 5, 99, 0, 0, 201, 221, 5, + 104, 0, 0, 202, 203, 5, 116, 0, 0, 203, 204, 5, 101, 0, 0, 204, 205, 5, + 120, 0, 0, 205, 206, 5, 116, 0, 0, 206, 207, 5, 109, 0, 0, 207, 208, 5, + 97, 0, 0, 208, 209, 5, 116, 0, 0, 209, 210, 5, 99, 0, 0, 210, 221, 5, 104, + 0, 0, 211, 212, 5, 84, 0, 0, 212, 213, 5, 69, 0, 0, 213, 214, 5, 88, 0, + 0, 214, 215, 5, 84, 0, 0, 215, 216, 5, 77, 0, 0, 216, 217, 5, 65, 0, 0, + 217, 218, 5, 84, 0, 0, 218, 219, 5, 67, 0, 0, 219, 221, 5, 72, 0, 0, 220, + 193, 1, 0, 0, 0, 220, 202, 1, 0, 0, 0, 220, 211, 1, 0, 0, 0, 221, 28, 1, + 0, 0, 0, 222, 223, 5, 43, 0, 0, 223, 30, 1, 0, 0, 0, 224, 225, 5, 45, 0, + 0, 225, 32, 1, 0, 0, 0, 226, 227, 5, 42, 0, 0, 227, 34, 1, 0, 0, 0, 228, + 229, 5, 47, 0, 0, 229, 36, 1, 0, 0, 0, 230, 231, 5, 37, 0, 0, 231, 38, + 1, 0, 0, 0, 232, 233, 5, 42, 0, 0, 233, 234, 5, 42, 0, 0, 234, 40, 1, 0, + 0, 0, 235, 236, 5, 60, 0, 0, 236, 237, 5, 60, 0, 0, 237, 42, 1, 0, 0, 0, + 238, 239, 5, 62, 0, 0, 239, 240, 5, 62, 0, 0, 240, 44, 1, 0, 0, 0, 241, + 242, 5, 38, 0, 0, 242, 46, 1, 0, 0, 0, 243, 244, 5, 124, 0, 0, 244, 48, + 1, 0, 0, 0, 245, 246, 5, 94, 0, 0, 246, 50, 1, 0, 0, 0, 247, 248, 5, 38, + 0, 0, 248, 253, 5, 38, 0, 0, 249, 250, 5, 97, 0, 0, 250, 251, 5, 110, 0, + 0, 251, 253, 5, 100, 0, 0, 252, 247, 1, 0, 0, 0, 252, 249, 1, 0, 0, 0, + 253, 52, 1, 0, 0, 0, 254, 255, 5, 124, 0, 0, 255, 259, 5, 124, 0, 0, 256, + 257, 5, 111, 0, 0, 257, 259, 5, 114, 0, 0, 258, 254, 1, 0, 0, 0, 258, 256, + 1, 0, 0, 0, 259, 54, 1, 0, 0, 0, 260, 261, 5, 126, 0, 0, 261, 56, 1, 0, + 0, 0, 262, 267, 5, 33, 0, 0, 263, 264, 5, 110, 0, 0, 264, 265, 5, 111, + 0, 0, 265, 267, 5, 116, 0, 0, 266, 262, 1, 0, 0, 0, 266, 263, 1, 0, 0, + 0, 267, 58, 1, 0, 0, 0, 268, 269, 5, 105, 0, 0, 269, 273, 5, 110, 0, 0, + 270, 271, 5, 73, 0, 0, 271, 273, 5, 78, 0, 0, 272, 268, 1, 0, 0, 0, 272, + 270, 1, 0, 0, 0, 273, 60, 1, 0, 0, 0, 274, 279, 5, 91, 0, 0, 275, 278, + 3, 139, 69, 0, 276, 278, 3, 141, 70, 0, 277, 275, 1, 0, 0, 0, 277, 276, + 1, 0, 0, 0, 278, 281, 1, 0, 0, 0, 279, 277, 1, 0, 0, 0, 279, 280, 1, 0, + 0, 0, 280, 282, 1, 0, 0, 0, 281, 279, 1, 0, 0, 0, 282, 283, 5, 93, 0, 0, + 283, 62, 1, 0, 0, 0, 284, 285, 5, 106, 0, 0, 285, 286, 5, 115, 0, 0, 286, + 287, 5, 111, 0, 0, 287, 288, 5, 110, 0, 0, 288, 289, 5, 95, 0, 0, 289, + 290, 5, 99, 0, 0, 290, 291, 5, 111, 0, 0, 291, 292, 5, 110, 0, 0, 292, + 293, 5, 116, 0, 0, 293, 294, 5, 97, 0, 0, 294, 295, 5, 105, 0, 0, 295, + 296, 5, 110, 0, 0, 296, 311, 5, 115, 0, 0, 297, 298, 5, 74, 0, 0, 298, + 299, 5, 83, 0, 0, 299, 300, 5, 79, 0, 0, 300, 301, 5, 78, 0, 0, 301, 302, + 5, 95, 0, 0, 302, 303, 5, 67, 0, 0, 303, 304, 5, 79, 0, 0, 304, 305, 5, + 78, 0, 0, 305, 306, 5, 84, 0, 0, 306, 307, 5, 65, 0, 0, 307, 308, 5, 73, + 0, 0, 308, 309, 5, 78, 0, 0, 309, 311, 5, 83, 0, 0, 310, 284, 1, 0, 0, + 0, 310, 297, 1, 0, 0, 0, 311, 64, 1, 0, 0, 0, 312, 313, 5, 106, 0, 0, 313, + 314, 5, 115, 0, 0, 314, 315, 5, 111, 0, 0, 315, 316, 5, 110, 0, 0, 316, + 317, 5, 95, 0, 0, 317, 318, 5, 99, 0, 0, 318, 319, 5, 111, 0, 0, 319, 320, + 5, 110, 0, 0, 320, 321, 5, 116, 0, 0, 321, 322, 5, 97, 0, 0, 322, 323, + 5, 105, 0, 0, 323, 324, 5, 110, 0, 0, 324, 325, 5, 115, 0, 0, 325, 326, + 5, 95, 0, 0, 326, 327, 5, 97, 0, 0, 327, 328, 5, 108, 0, 0, 328, 347, 5, + 108, 0, 0, 329, 330, 5, 74, 0, 0, 330, 331, 5, 83, 0, 0, 331, 332, 5, 79, + 0, 0, 332, 333, 5, 78, 0, 0, 333, 334, 5, 95, 0, 0, 334, 335, 5, 67, 0, + 0, 335, 336, 5, 79, 0, 0, 336, 337, 5, 78, 0, 0, 337, 338, 5, 84, 0, 0, + 338, 339, 5, 65, 0, 0, 339, 340, 5, 73, 0, 0, 340, 341, 5, 78, 0, 0, 341, + 342, 5, 83, 0, 0, 342, 343, 5, 95, 0, 0, 343, 344, 5, 65, 0, 0, 344, 345, + 5, 76, 0, 0, 345, 347, 5, 76, 0, 0, 346, 312, 1, 0, 0, 0, 346, 329, 1, + 0, 0, 0, 347, 66, 1, 0, 0, 0, 348, 349, 5, 106, 0, 0, 349, 350, 5, 115, + 0, 0, 350, 351, 5, 111, 0, 0, 351, 352, 5, 110, 0, 0, 352, 353, 5, 95, + 0, 0, 353, 354, 5, 99, 0, 0, 354, 355, 5, 111, 0, 0, 355, 356, 5, 110, + 0, 0, 356, 357, 5, 116, 0, 0, 357, 358, 5, 97, 0, 0, 358, 359, 5, 105, + 0, 0, 359, 360, 5, 110, 0, 0, 360, 361, 5, 115, 0, 0, 361, 362, 5, 95, + 0, 0, 362, 363, 5, 97, 0, 0, 363, 364, 5, 110, 0, 0, 364, 383, 5, 121, + 0, 0, 365, 366, 5, 74, 0, 0, 366, 367, 5, 83, 0, 0, 367, 368, 5, 79, 0, + 0, 368, 369, 5, 78, 0, 0, 369, 370, 5, 95, 0, 0, 370, 371, 5, 67, 0, 0, + 371, 372, 5, 79, 0, 0, 372, 373, 5, 78, 0, 0, 373, 374, 5, 84, 0, 0, 374, + 375, 5, 65, 0, 0, 375, 376, 5, 73, 0, 0, 376, 377, 5, 78, 0, 0, 377, 378, + 5, 83, 0, 0, 378, 379, 5, 95, 0, 0, 379, 380, 5, 65, 0, 0, 380, 381, 5, + 78, 0, 0, 381, 383, 5, 89, 0, 0, 382, 348, 1, 0, 0, 0, 382, 365, 1, 0, + 0, 0, 383, 68, 1, 0, 0, 0, 384, 385, 5, 97, 0, 0, 385, 386, 5, 114, 0, + 0, 386, 387, 5, 114, 0, 0, 387, 388, 5, 97, 0, 0, 388, 389, 5, 121, 0, + 0, 389, 390, 5, 95, 0, 0, 390, 391, 5, 99, 0, 0, 391, 392, 5, 111, 0, 0, + 392, 393, 5, 110, 0, 0, 393, 394, 5, 116, 0, 0, 394, 395, 5, 97, 0, 0, + 395, 396, 5, 105, 0, 0, 396, 397, 5, 110, 0, 0, 397, 413, 5, 115, 0, 0, + 398, 399, 5, 65, 0, 0, 399, 400, 5, 82, 0, 0, 400, 401, 5, 82, 0, 0, 401, + 402, 5, 65, 0, 0, 402, 403, 5, 89, 0, 0, 403, 404, 5, 95, 0, 0, 404, 405, + 5, 67, 0, 0, 405, 406, 5, 79, 0, 0, 406, 407, 5, 78, 0, 0, 407, 408, 5, + 84, 0, 0, 408, 409, 5, 65, 0, 0, 409, 410, 5, 73, 0, 0, 410, 411, 5, 78, + 0, 0, 411, 413, 5, 83, 0, 0, 412, 384, 1, 0, 0, 0, 412, 398, 1, 0, 0, 0, + 413, 70, 1, 0, 0, 0, 414, 415, 5, 97, 0, 0, 415, 416, 5, 114, 0, 0, 416, + 417, 5, 114, 0, 0, 417, 418, 5, 97, 0, 0, 418, 419, 5, 121, 0, 0, 419, + 420, 5, 95, 0, 0, 420, 421, 5, 99, 0, 0, 421, 422, 5, 111, 0, 0, 422, 423, + 5, 110, 0, 0, 423, 424, 5, 116, 0, 0, 424, 425, 5, 97, 0, 0, 425, 426, + 5, 105, 0, 0, 426, 427, 5, 110, 0, 0, 427, 428, 5, 115, 0, 0, 428, 429, + 5, 95, 0, 0, 429, 430, 5, 97, 0, 0, 430, 431, 5, 108, 0, 0, 431, 451, 5, + 108, 0, 0, 432, 433, 5, 65, 0, 0, 433, 434, 5, 82, 0, 0, 434, 435, 5, 82, + 0, 0, 435, 436, 5, 65, 0, 0, 436, 437, 5, 89, 0, 0, 437, 438, 5, 95, 0, + 0, 438, 439, 5, 67, 0, 0, 439, 440, 5, 79, 0, 0, 440, 441, 5, 78, 0, 0, + 441, 442, 5, 84, 0, 0, 442, 443, 5, 65, 0, 0, 443, 444, 5, 73, 0, 0, 444, + 445, 5, 78, 0, 0, 445, 446, 5, 83, 0, 0, 446, 447, 5, 95, 0, 0, 447, 448, + 5, 65, 0, 0, 448, 449, 5, 76, 0, 0, 449, 451, 5, 76, 0, 0, 450, 414, 1, + 0, 0, 0, 450, 432, 1, 0, 0, 0, 451, 72, 1, 0, 0, 0, 452, 453, 5, 97, 0, + 0, 453, 454, 5, 114, 0, 0, 454, 455, 5, 114, 0, 0, 455, 456, 5, 97, 0, + 0, 456, 457, 5, 121, 0, 0, 457, 458, 5, 95, 0, 0, 458, 459, 5, 99, 0, 0, + 459, 460, 5, 111, 0, 0, 460, 461, 5, 110, 0, 0, 461, 462, 5, 116, 0, 0, + 462, 463, 5, 97, 0, 0, 463, 464, 5, 105, 0, 0, 464, 465, 5, 110, 0, 0, + 465, 466, 5, 115, 0, 0, 466, 467, 5, 95, 0, 0, 467, 468, 5, 97, 0, 0, 468, + 469, 5, 110, 0, 0, 469, 489, 5, 121, 0, 0, 470, 471, 5, 65, 0, 0, 471, + 472, 5, 82, 0, 0, 472, 473, 5, 82, 0, 0, 473, 474, 5, 65, 0, 0, 474, 475, + 5, 89, 0, 0, 475, 476, 5, 95, 0, 0, 476, 477, 5, 67, 0, 0, 477, 478, 5, + 79, 0, 0, 478, 479, 5, 78, 0, 0, 479, 480, 5, 84, 0, 0, 480, 481, 5, 65, + 0, 0, 481, 482, 5, 73, 0, 0, 482, 483, 5, 78, 0, 0, 483, 484, 5, 83, 0, + 0, 484, 485, 5, 95, 0, 0, 485, 486, 5, 65, 0, 0, 486, 487, 5, 78, 0, 0, + 487, 489, 5, 89, 0, 0, 488, 452, 1, 0, 0, 0, 488, 470, 1, 0, 0, 0, 489, + 74, 1, 0, 0, 0, 490, 491, 5, 97, 0, 0, 491, 492, 5, 114, 0, 0, 492, 493, + 5, 114, 0, 0, 493, 494, 5, 97, 0, 0, 494, 495, 5, 121, 0, 0, 495, 496, + 5, 95, 0, 0, 496, 497, 5, 108, 0, 0, 497, 498, 5, 101, 0, 0, 498, 499, + 5, 110, 0, 0, 499, 500, 5, 103, 0, 0, 500, 501, 5, 116, 0, 0, 501, 515, + 5, 104, 0, 0, 502, 503, 5, 65, 0, 0, 503, 504, 5, 82, 0, 0, 504, 505, 5, + 82, 0, 0, 505, 506, 5, 65, 0, 0, 506, 507, 5, 89, 0, 0, 507, 508, 5, 95, + 0, 0, 508, 509, 5, 76, 0, 0, 509, 510, 5, 69, 0, 0, 510, 511, 5, 78, 0, + 0, 511, 512, 5, 71, 0, 0, 512, 513, 5, 84, 0, 0, 513, 515, 5, 72, 0, 0, + 514, 490, 1, 0, 0, 0, 514, 502, 1, 0, 0, 0, 515, 76, 1, 0, 0, 0, 516, 517, + 5, 116, 0, 0, 517, 518, 5, 114, 0, 0, 518, 519, 5, 117, 0, 0, 519, 544, + 5, 101, 0, 0, 520, 521, 5, 84, 0, 0, 521, 522, 5, 114, 0, 0, 522, 523, + 5, 117, 0, 0, 523, 544, 5, 101, 0, 0, 524, 525, 5, 84, 0, 0, 525, 526, + 5, 82, 0, 0, 526, 527, 5, 85, 0, 0, 527, 544, 5, 69, 0, 0, 528, 529, 5, + 102, 0, 0, 529, 530, 5, 97, 0, 0, 530, 531, 5, 108, 0, 0, 531, 532, 5, + 115, 0, 0, 532, 544, 5, 101, 0, 0, 533, 534, 5, 70, 0, 0, 534, 535, 5, + 97, 0, 0, 535, 536, 5, 108, 0, 0, 536, 537, 5, 115, 0, 0, 537, 544, 5, + 101, 0, 0, 538, 539, 5, 70, 0, 0, 539, 540, 5, 65, 0, 0, 540, 541, 5, 76, + 0, 0, 541, 542, 5, 83, 0, 0, 542, 544, 5, 69, 0, 0, 543, 516, 1, 0, 0, + 0, 543, 520, 1, 0, 0, 0, 543, 524, 1, 0, 0, 0, 543, 528, 1, 0, 0, 0, 543, + 533, 1, 0, 0, 0, 543, 538, 1, 0, 0, 0, 544, 78, 1, 0, 0, 0, 545, 550, 3, + 105, 52, 0, 546, 550, 3, 107, 53, 0, 547, 550, 3, 109, 54, 0, 548, 550, + 3, 103, 51, 0, 549, 545, 1, 0, 0, 0, 549, 546, 1, 0, 0, 0, 549, 547, 1, + 0, 0, 0, 549, 548, 1, 0, 0, 0, 550, 80, 1, 0, 0, 0, 551, 554, 3, 121, 60, + 0, 552, 554, 3, 123, 61, 0, 553, 551, 1, 0, 0, 0, 553, 552, 1, 0, 0, 0, + 554, 82, 1, 0, 0, 0, 555, 560, 3, 99, 49, 0, 556, 559, 3, 99, 49, 0, 557, + 559, 3, 101, 50, 0, 558, 556, 1, 0, 0, 0, 558, 557, 1, 0, 0, 0, 559, 562, + 1, 0, 0, 0, 560, 558, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 569, 1, 0, + 0, 0, 562, 560, 1, 0, 0, 0, 563, 564, 5, 36, 0, 0, 564, 565, 5, 109, 0, + 0, 565, 566, 5, 101, 0, 0, 566, 567, 5, 116, 0, 0, 567, 569, 5, 97, 0, + 0, 568, 555, 1, 0, 0, 0, 568, 563, 1, 0, 0, 0, 569, 84, 1, 0, 0, 0, 570, + 572, 3, 89, 44, 0, 571, 570, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 583, + 1, 0, 0, 0, 573, 575, 5, 34, 0, 0, 574, 576, 3, 91, 45, 0, 575, 574, 1, + 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 584, 5, 34, 0, + 0, 578, 580, 5, 39, 0, 0, 579, 581, 3, 93, 46, 0, 580, 579, 1, 0, 0, 0, + 580, 581, 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 584, 5, 39, 0, 0, 583, + 573, 1, 0, 0, 0, 583, 578, 1, 0, 0, 0, 584, 86, 1, 0, 0, 0, 585, 593, 3, + 83, 41, 0, 586, 589, 5, 91, 0, 0, 587, 590, 3, 85, 42, 0, 588, 590, 3, + 105, 52, 0, 589, 587, 1, 0, 0, 0, 589, 588, 1, 0, 0, 0, 590, 591, 1, 0, + 0, 0, 591, 592, 5, 93, 0, 0, 592, 594, 1, 0, 0, 0, 593, 586, 1, 0, 0, 0, + 594, 595, 1, 0, 0, 0, 595, 593, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, + 88, 1, 0, 0, 0, 597, 598, 5, 117, 0, 0, 598, 601, 5, 56, 0, 0, 599, 601, + 7, 0, 0, 0, 600, 597, 1, 0, 0, 0, 600, 599, 1, 0, 0, 0, 601, 90, 1, 0, + 0, 0, 602, 604, 3, 95, 47, 0, 603, 602, 1, 0, 0, 0, 604, 605, 1, 0, 0, + 0, 605, 603, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 92, 1, 0, 0, 0, 607, + 609, 3, 97, 48, 0, 608, 607, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 608, + 1, 0, 0, 0, 610, 611, 1, 0, 0, 0, 611, 94, 1, 0, 0, 0, 612, 620, 8, 1, + 0, 0, 613, 620, 3, 137, 68, 0, 614, 615, 5, 92, 0, 0, 615, 620, 5, 10, + 0, 0, 616, 617, 5, 92, 0, 0, 617, 618, 5, 13, 0, 0, 618, 620, 5, 10, 0, + 0, 619, 612, 1, 0, 0, 0, 619, 613, 1, 0, 0, 0, 619, 614, 1, 0, 0, 0, 619, + 616, 1, 0, 0, 0, 620, 96, 1, 0, 0, 0, 621, 629, 8, 2, 0, 0, 622, 629, 3, + 137, 68, 0, 623, 624, 5, 92, 0, 0, 624, 629, 5, 10, 0, 0, 625, 626, 5, + 92, 0, 0, 626, 627, 5, 13, 0, 0, 627, 629, 5, 10, 0, 0, 628, 621, 1, 0, + 0, 0, 628, 622, 1, 0, 0, 0, 628, 623, 1, 0, 0, 0, 628, 625, 1, 0, 0, 0, + 629, 98, 1, 0, 0, 0, 630, 631, 7, 3, 0, 0, 631, 100, 1, 0, 0, 0, 632, 633, + 7, 4, 0, 0, 633, 102, 1, 0, 0, 0, 634, 635, 5, 48, 0, 0, 635, 637, 7, 5, + 0, 0, 636, 638, 7, 6, 0, 0, 637, 636, 1, 0, 0, 0, 638, 639, 1, 0, 0, 0, + 639, 637, 1, 0, 0, 0, 639, 640, 1, 0, 0, 0, 640, 104, 1, 0, 0, 0, 641, + 645, 3, 111, 55, 0, 642, 644, 3, 101, 50, 0, 643, 642, 1, 0, 0, 0, 644, + 647, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 645, 646, 1, 0, 0, 0, 646, 650, + 1, 0, 0, 0, 647, 645, 1, 0, 0, 0, 648, 650, 5, 48, 0, 0, 649, 641, 1, 0, + 0, 0, 649, 648, 1, 0, 0, 0, 650, 106, 1, 0, 0, 0, 651, 655, 5, 48, 0, 0, + 652, 654, 3, 113, 56, 0, 653, 652, 1, 0, 0, 0, 654, 657, 1, 0, 0, 0, 655, + 653, 1, 0, 0, 0, 655, 656, 1, 0, 0, 0, 656, 108, 1, 0, 0, 0, 657, 655, + 1, 0, 0, 0, 658, 659, 5, 48, 0, 0, 659, 660, 7, 7, 0, 0, 660, 661, 3, 133, + 66, 0, 661, 110, 1, 0, 0, 0, 662, 663, 7, 8, 0, 0, 663, 112, 1, 0, 0, 0, + 664, 665, 7, 9, 0, 0, 665, 114, 1, 0, 0, 0, 666, 667, 7, 10, 0, 0, 667, + 116, 1, 0, 0, 0, 668, 669, 3, 115, 57, 0, 669, 670, 3, 115, 57, 0, 670, + 671, 3, 115, 57, 0, 671, 672, 3, 115, 57, 0, 672, 118, 1, 0, 0, 0, 673, + 674, 5, 92, 0, 0, 674, 675, 5, 117, 0, 0, 675, 676, 1, 0, 0, 0, 676, 684, + 3, 117, 58, 0, 677, 678, 5, 92, 0, 0, 678, 679, 5, 85, 0, 0, 679, 680, + 1, 0, 0, 0, 680, 681, 3, 117, 58, 0, 681, 682, 3, 117, 58, 0, 682, 684, + 1, 0, 0, 0, 683, 673, 1, 0, 0, 0, 683, 677, 1, 0, 0, 0, 684, 120, 1, 0, + 0, 0, 685, 687, 3, 125, 62, 0, 686, 688, 3, 127, 63, 0, 687, 686, 1, 0, + 0, 0, 687, 688, 1, 0, 0, 0, 688, 693, 1, 0, 0, 0, 689, 690, 3, 129, 64, + 0, 690, 691, 3, 127, 63, 0, 691, 693, 1, 0, 0, 0, 692, 685, 1, 0, 0, 0, + 692, 689, 1, 0, 0, 0, 693, 122, 1, 0, 0, 0, 694, 695, 5, 48, 0, 0, 695, + 698, 7, 7, 0, 0, 696, 699, 3, 131, 65, 0, 697, 699, 3, 133, 66, 0, 698, + 696, 1, 0, 0, 0, 698, 697, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 701, + 3, 135, 67, 0, 701, 124, 1, 0, 0, 0, 702, 704, 3, 129, 64, 0, 703, 702, + 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 705, 1, 0, 0, 0, 705, 706, 5, 46, + 0, 0, 706, 711, 3, 129, 64, 0, 707, 708, 3, 129, 64, 0, 708, 709, 5, 46, + 0, 0, 709, 711, 1, 0, 0, 0, 710, 703, 1, 0, 0, 0, 710, 707, 1, 0, 0, 0, + 711, 126, 1, 0, 0, 0, 712, 714, 7, 11, 0, 0, 713, 715, 7, 12, 0, 0, 714, + 713, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 717, + 3, 129, 64, 0, 717, 128, 1, 0, 0, 0, 718, 720, 3, 101, 50, 0, 719, 718, + 1, 0, 0, 0, 720, 721, 1, 0, 0, 0, 721, 719, 1, 0, 0, 0, 721, 722, 1, 0, + 0, 0, 722, 130, 1, 0, 0, 0, 723, 725, 3, 133, 66, 0, 724, 723, 1, 0, 0, + 0, 724, 725, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 727, 5, 46, 0, 0, 727, + 732, 3, 133, 66, 0, 728, 729, 3, 133, 66, 0, 729, 730, 5, 46, 0, 0, 730, + 732, 1, 0, 0, 0, 731, 724, 1, 0, 0, 0, 731, 728, 1, 0, 0, 0, 732, 132, + 1, 0, 0, 0, 733, 735, 3, 115, 57, 0, 734, 733, 1, 0, 0, 0, 735, 736, 1, + 0, 0, 0, 736, 734, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 134, 1, 0, 0, + 0, 738, 740, 7, 13, 0, 0, 739, 741, 7, 12, 0, 0, 740, 739, 1, 0, 0, 0, + 740, 741, 1, 0, 0, 0, 741, 742, 1, 0, 0, 0, 742, 743, 3, 129, 64, 0, 743, + 136, 1, 0, 0, 0, 744, 745, 5, 92, 0, 0, 745, 760, 7, 14, 0, 0, 746, 747, + 5, 92, 0, 0, 747, 749, 3, 113, 56, 0, 748, 750, 3, 113, 56, 0, 749, 748, + 1, 0, 0, 0, 749, 750, 1, 0, 0, 0, 750, 752, 1, 0, 0, 0, 751, 753, 3, 113, + 56, 0, 752, 751, 1, 0, 0, 0, 752, 753, 1, 0, 0, 0, 753, 760, 1, 0, 0, 0, + 754, 755, 5, 92, 0, 0, 755, 756, 5, 120, 0, 0, 756, 757, 1, 0, 0, 0, 757, + 760, 3, 133, 66, 0, 758, 760, 3, 119, 59, 0, 759, 744, 1, 0, 0, 0, 759, + 746, 1, 0, 0, 0, 759, 754, 1, 0, 0, 0, 759, 758, 1, 0, 0, 0, 760, 138, + 1, 0, 0, 0, 761, 763, 7, 15, 0, 0, 762, 761, 1, 0, 0, 0, 763, 764, 1, 0, + 0, 0, 764, 762, 1, 0, 0, 0, 764, 765, 1, 0, 0, 0, 765, 766, 1, 0, 0, 0, + 766, 767, 6, 69, 0, 0, 767, 140, 1, 0, 0, 0, 768, 770, 5, 13, 0, 0, 769, + 771, 5, 10, 0, 0, 770, 769, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 771, 774, + 1, 0, 0, 0, 772, 774, 5, 10, 0, 0, 773, 768, 1, 0, 0, 0, 773, 772, 1, 0, + 0, 0, 774, 775, 1, 0, 0, 0, 775, 776, 6, 70, 0, 0, 776, 142, 1, 0, 0, 0, + 56, 0, 177, 191, 220, 252, 258, 266, 272, 277, 279, 310, 346, 382, 412, + 450, 488, 514, 543, 549, 553, 558, 560, 568, 571, 575, 580, 583, 589, 595, + 600, 605, 610, 619, 628, 639, 645, 649, 655, 683, 687, 692, 698, 703, 710, + 714, 721, 724, 731, 736, 740, 749, 752, 759, 764, 770, 773, 1, 6, 0, 0, + } + deserializer := antlr.NewATNDeserializer(nil) + staticData.atn = deserializer.Deserialize(staticData.serializedATN) + atn := staticData.atn + staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) + decisionToDFA := staticData.decisionToDFA + for index, state := range atn.DecisionToState { + decisionToDFA[index] = antlr.NewDFA(state, index) + } +} + +// PlanLexerInit initializes any static state used to implement PlanLexer. By default the +// static state used to implement the lexer is lazily initialized during the first call to +// NewPlanLexer(). You can call this function if you wish to initialize the static state ahead +// of time. +func PlanLexerInit() { + staticData := &PlanLexerLexerStaticData + staticData.once.Do(planlexerLexerInit) +} + +// NewPlanLexer produces a new lexer instance for the optional input antlr.CharStream. +func NewPlanLexer(input antlr.CharStream) *PlanLexer { + PlanLexerInit() + l := new(PlanLexer) + l.BaseLexer = antlr.NewBaseLexer(input) + staticData := &PlanLexerLexerStaticData + l.Interpreter = antlr.NewLexerATNSimulator(l, staticData.atn, staticData.decisionToDFA, staticData.PredictionContextCache) + l.channelNames = staticData.ChannelNames + l.modeNames = staticData.ModeNames + l.RuleNames = staticData.RuleNames + l.LiteralNames = staticData.LiteralNames + l.SymbolicNames = staticData.SymbolicNames l.GrammarFileName = "Plan.g4" // TODO: l.EOF = antlr.TokenEOF @@ -471,21 +495,20 @@ const ( PlanLexerBNOT = 28 PlanLexerNOT = 29 PlanLexerIN = 30 - PlanLexerNIN = 31 - PlanLexerEmptyTerm = 32 - PlanLexerJSONContains = 33 - PlanLexerJSONContainsAll = 34 - PlanLexerJSONContainsAny = 35 - PlanLexerArrayContains = 36 - PlanLexerArrayContainsAll = 37 - PlanLexerArrayContainsAny = 38 - PlanLexerArrayLength = 39 - PlanLexerBooleanConstant = 40 - PlanLexerIntegerConstant = 41 - PlanLexerFloatingConstant = 42 - PlanLexerIdentifier = 43 - PlanLexerStringLiteral = 44 - PlanLexerJSONIdentifier = 45 - PlanLexerWhitespace = 46 - PlanLexerNewline = 47 + PlanLexerEmptyArray = 31 + PlanLexerJSONContains = 32 + PlanLexerJSONContainsAll = 33 + PlanLexerJSONContainsAny = 34 + PlanLexerArrayContains = 35 + PlanLexerArrayContainsAll = 36 + PlanLexerArrayContainsAny = 37 + PlanLexerArrayLength = 38 + PlanLexerBooleanConstant = 39 + PlanLexerIntegerConstant = 40 + PlanLexerFloatingConstant = 41 + PlanLexerIdentifier = 42 + PlanLexerStringLiteral = 43 + PlanLexerJSONIdentifier = 44 + PlanLexerWhitespace = 45 + PlanLexerNewline = 46 ) diff --git a/internal/parser/planparserv2/generated/plan_parser.go b/internal/parser/planparserv2/generated/plan_parser.go index a3b2a62115..e5dc91fda2 100644 --- a/internal/parser/planparserv2/generated/plan_parser.go +++ b/internal/parser/planparserv2/generated/plan_parser.go @@ -1,130 +1,144 @@ -// Code generated from Plan.g4 by ANTLR 4.9. DO NOT EDIT. +// Code generated from Plan.g4 by ANTLR 4.13.2. DO NOT EDIT. package planparserv2 // Plan import ( "fmt" - "reflect" "strconv" + "sync" - "github.com/antlr/antlr4/runtime/Go/antlr" + "github.com/antlr4-go/antlr/v4" ) // Suppress unused import errors var _ = fmt.Printf -var _ = reflect.Copy var _ = strconv.Itoa - -var parserATN = []uint16{ - 3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 49, 137, - 4, 2, 9, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, - 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 7, 2, 20, 10, 2, 12, 2, 14, 2, 23, 11, 2, - 3, 2, 5, 2, 26, 10, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, - 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, - 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, - 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 2, 65, 10, 2, 3, 2, 3, 2, 3, 2, 3, 2, - 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, - 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, - 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, - 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, - 7, 2, 119, 10, 2, 12, 2, 14, 2, 122, 11, 2, 3, 2, 5, 2, 125, 10, 2, 3, - 2, 3, 2, 3, 2, 3, 2, 3, 2, 7, 2, 132, 10, 2, 12, 2, 14, 2, 135, 11, 2, - 3, 2, 2, 3, 2, 3, 2, 2, 15, 4, 2, 17, 18, 30, 31, 4, 2, 35, 35, 38, 38, - 4, 2, 36, 36, 39, 39, 4, 2, 37, 37, 40, 40, 4, 2, 45, 45, 47, 47, 3, 2, - 19, 21, 3, 2, 17, 18, 3, 2, 23, 24, 3, 2, 8, 9, 3, 2, 10, 11, 3, 2, 8, - 11, 3, 2, 12, 13, 3, 2, 32, 33, 2, 169, 2, 64, 3, 2, 2, 2, 4, 5, 8, 2, - 1, 2, 5, 65, 7, 43, 2, 2, 6, 65, 7, 44, 2, 2, 7, 65, 7, 42, 2, 2, 8, 65, - 7, 46, 2, 2, 9, 65, 7, 45, 2, 2, 10, 65, 7, 47, 2, 2, 11, 12, 7, 3, 2, - 2, 12, 13, 5, 2, 2, 2, 13, 14, 7, 4, 2, 2, 14, 65, 3, 2, 2, 2, 15, 16, - 7, 5, 2, 2, 16, 21, 5, 2, 2, 2, 17, 18, 7, 6, 2, 2, 18, 20, 5, 2, 2, 2, - 19, 17, 3, 2, 2, 2, 20, 23, 3, 2, 2, 2, 21, 19, 3, 2, 2, 2, 21, 22, 3, - 2, 2, 2, 22, 25, 3, 2, 2, 2, 23, 21, 3, 2, 2, 2, 24, 26, 7, 6, 2, 2, 25, - 24, 3, 2, 2, 2, 25, 26, 3, 2, 2, 2, 26, 27, 3, 2, 2, 2, 27, 28, 7, 7, 2, - 2, 28, 65, 3, 2, 2, 2, 29, 30, 7, 16, 2, 2, 30, 31, 7, 3, 2, 2, 31, 32, - 7, 45, 2, 2, 32, 33, 7, 6, 2, 2, 33, 34, 7, 46, 2, 2, 34, 65, 7, 4, 2, - 2, 35, 36, 9, 2, 2, 2, 36, 65, 5, 2, 2, 22, 37, 38, 9, 3, 2, 2, 38, 39, - 7, 3, 2, 2, 39, 40, 5, 2, 2, 2, 40, 41, 7, 6, 2, 2, 41, 42, 5, 2, 2, 2, - 42, 43, 7, 4, 2, 2, 43, 65, 3, 2, 2, 2, 44, 45, 9, 4, 2, 2, 45, 46, 7, - 3, 2, 2, 46, 47, 5, 2, 2, 2, 47, 48, 7, 6, 2, 2, 48, 49, 5, 2, 2, 2, 49, - 50, 7, 4, 2, 2, 50, 65, 3, 2, 2, 2, 51, 52, 9, 5, 2, 2, 52, 53, 7, 3, 2, - 2, 53, 54, 5, 2, 2, 2, 54, 55, 7, 6, 2, 2, 55, 56, 5, 2, 2, 2, 56, 57, - 7, 4, 2, 2, 57, 65, 3, 2, 2, 2, 58, 59, 7, 41, 2, 2, 59, 60, 7, 3, 2, 2, - 60, 61, 9, 6, 2, 2, 61, 65, 7, 4, 2, 2, 62, 63, 7, 15, 2, 2, 63, 65, 5, - 2, 2, 3, 64, 4, 3, 2, 2, 2, 64, 6, 3, 2, 2, 2, 64, 7, 3, 2, 2, 2, 64, 8, - 3, 2, 2, 2, 64, 9, 3, 2, 2, 2, 64, 10, 3, 2, 2, 2, 64, 11, 3, 2, 2, 2, - 64, 15, 3, 2, 2, 2, 64, 29, 3, 2, 2, 2, 64, 35, 3, 2, 2, 2, 64, 37, 3, - 2, 2, 2, 64, 44, 3, 2, 2, 2, 64, 51, 3, 2, 2, 2, 64, 58, 3, 2, 2, 2, 64, - 62, 3, 2, 2, 2, 65, 133, 3, 2, 2, 2, 66, 67, 12, 23, 2, 2, 67, 68, 7, 22, - 2, 2, 68, 132, 5, 2, 2, 24, 69, 70, 12, 21, 2, 2, 70, 71, 9, 7, 2, 2, 71, - 132, 5, 2, 2, 22, 72, 73, 12, 20, 2, 2, 73, 74, 9, 8, 2, 2, 74, 132, 5, - 2, 2, 21, 75, 76, 12, 19, 2, 2, 76, 77, 9, 9, 2, 2, 77, 132, 5, 2, 2, 20, - 78, 79, 12, 12, 2, 2, 79, 80, 9, 10, 2, 2, 80, 81, 9, 6, 2, 2, 81, 82, - 9, 10, 2, 2, 82, 132, 5, 2, 2, 13, 83, 84, 12, 11, 2, 2, 84, 85, 9, 11, - 2, 2, 85, 86, 9, 6, 2, 2, 86, 87, 9, 11, 2, 2, 87, 132, 5, 2, 2, 12, 88, - 89, 12, 10, 2, 2, 89, 90, 9, 12, 2, 2, 90, 132, 5, 2, 2, 11, 91, 92, 12, - 9, 2, 2, 92, 93, 9, 13, 2, 2, 93, 132, 5, 2, 2, 10, 94, 95, 12, 8, 2, 2, - 95, 96, 7, 25, 2, 2, 96, 132, 5, 2, 2, 9, 97, 98, 12, 7, 2, 2, 98, 99, - 7, 27, 2, 2, 99, 132, 5, 2, 2, 8, 100, 101, 12, 6, 2, 2, 101, 102, 7, 26, - 2, 2, 102, 132, 5, 2, 2, 7, 103, 104, 12, 5, 2, 2, 104, 105, 7, 28, 2, - 2, 105, 132, 5, 2, 2, 6, 106, 107, 12, 4, 2, 2, 107, 108, 7, 29, 2, 2, - 108, 132, 5, 2, 2, 5, 109, 110, 12, 25, 2, 2, 110, 111, 7, 14, 2, 2, 111, - 132, 7, 46, 2, 2, 112, 113, 12, 18, 2, 2, 113, 114, 9, 14, 2, 2, 114, 115, - 7, 5, 2, 2, 115, 120, 5, 2, 2, 2, 116, 117, 7, 6, 2, 2, 117, 119, 5, 2, - 2, 2, 118, 116, 3, 2, 2, 2, 119, 122, 3, 2, 2, 2, 120, 118, 3, 2, 2, 2, - 120, 121, 3, 2, 2, 2, 121, 124, 3, 2, 2, 2, 122, 120, 3, 2, 2, 2, 123, - 125, 7, 6, 2, 2, 124, 123, 3, 2, 2, 2, 124, 125, 3, 2, 2, 2, 125, 126, - 3, 2, 2, 2, 126, 127, 7, 7, 2, 2, 127, 132, 3, 2, 2, 2, 128, 129, 12, 17, - 2, 2, 129, 130, 9, 14, 2, 2, 130, 132, 7, 34, 2, 2, 131, 66, 3, 2, 2, 2, - 131, 69, 3, 2, 2, 2, 131, 72, 3, 2, 2, 2, 131, 75, 3, 2, 2, 2, 131, 78, - 3, 2, 2, 2, 131, 83, 3, 2, 2, 2, 131, 88, 3, 2, 2, 2, 131, 91, 3, 2, 2, - 2, 131, 94, 3, 2, 2, 2, 131, 97, 3, 2, 2, 2, 131, 100, 3, 2, 2, 2, 131, - 103, 3, 2, 2, 2, 131, 106, 3, 2, 2, 2, 131, 109, 3, 2, 2, 2, 131, 112, - 3, 2, 2, 2, 131, 128, 3, 2, 2, 2, 132, 135, 3, 2, 2, 2, 133, 131, 3, 2, - 2, 2, 133, 134, 3, 2, 2, 2, 134, 3, 3, 2, 2, 2, 135, 133, 3, 2, 2, 2, 9, - 21, 25, 64, 120, 124, 131, 133, -} -var literalNames = []string{ - "", "'('", "')'", "'['", "','", "']'", "'<'", "'<='", "'>'", "'>='", "'=='", - "'!='", "", "", "'TextMatch'", "'+'", "'-'", "'*'", "'/'", "'%'", "'**'", - "'<<'", "'>>'", "'&'", "'|'", "'^'", "", "", "'~'", "", "'in'", "'not in'", -} -var symbolicNames = []string{ - "", "", "", "", "", "", "LT", "LE", "GT", "GE", "EQ", "NE", "LIKE", "EXISTS", - "TEXTMATCH", "ADD", "SUB", "MUL", "DIV", "MOD", "POW", "SHL", "SHR", "BAND", - "BOR", "BXOR", "AND", "OR", "BNOT", "NOT", "IN", "NIN", "EmptyTerm", "JSONContains", - "JSONContainsAll", "JSONContainsAny", "ArrayContains", "ArrayContainsAll", - "ArrayContainsAny", "ArrayLength", "BooleanConstant", "IntegerConstant", - "FloatingConstant", "Identifier", "StringLiteral", "JSONIdentifier", "Whitespace", - "Newline", -} - -var ruleNames = []string{ - "expr", -} +var _ = sync.Once{} type PlanParser struct { *antlr.BaseParser } -// NewPlanParser produces a new parser instance for the optional input antlr.TokenStream. -// -// The *PlanParser instance produced may be reused by calling the SetInputStream method. -// The initial parser configuration is expensive to construct, and the object is not thread-safe; -// however, if used within a Golang sync.Pool, the construction cost amortizes well and the -// objects can be used in a thread-safe manner. -func NewPlanParser(input antlr.TokenStream) *PlanParser { - this := new(PlanParser) - deserializer := antlr.NewATNDeserializer(nil) - deserializedATN := deserializer.DeserializeFromUInt16(parserATN) - decisionToDFA := make([]*antlr.DFA, len(deserializedATN.DecisionToState)) - for index, ds := range deserializedATN.DecisionToState { - decisionToDFA[index] = antlr.NewDFA(ds, index) - } - this.BaseParser = antlr.NewBaseParser(input) +var PlanParserStaticData struct { + once sync.Once + serializedATN []int32 + LiteralNames []string + SymbolicNames []string + RuleNames []string + PredictionContextCache *antlr.PredictionContextCache + atn *antlr.ATN + decisionToDFA []*antlr.DFA +} - this.Interpreter = antlr.NewParserATNSimulator(this, deserializedATN, decisionToDFA, antlr.NewPredictionContextCache()) - this.RuleNames = ruleNames - this.LiteralNames = literalNames - this.SymbolicNames = symbolicNames +func planParserInit() { + staticData := &PlanParserStaticData + staticData.LiteralNames = []string{ + "", "'('", "')'", "'['", "','", "']'", "'<'", "'<='", "'>'", "'>='", + "'=='", "'!='", "", "", "", "'+'", "'-'", "'*'", "'/'", "'%'", "'**'", + "'<<'", "'>>'", "'&'", "'|'", "'^'", "", "", "'~'", + } + staticData.SymbolicNames = []string{ + "", "", "", "", "", "", "LT", "LE", "GT", "GE", "EQ", "NE", "LIKE", + "EXISTS", "TEXTMATCH", "ADD", "SUB", "MUL", "DIV", "MOD", "POW", "SHL", + "SHR", "BAND", "BOR", "BXOR", "AND", "OR", "BNOT", "NOT", "IN", "EmptyArray", + "JSONContains", "JSONContainsAll", "JSONContainsAny", "ArrayContains", + "ArrayContainsAll", "ArrayContainsAny", "ArrayLength", "BooleanConstant", + "IntegerConstant", "FloatingConstant", "Identifier", "StringLiteral", + "JSONIdentifier", "Whitespace", "Newline", + } + staticData.RuleNames = []string{ + "expr", + } + staticData.PredictionContextCache = antlr.NewPredictionContextCache() + staticData.serializedATN = []int32{ + 4, 1, 46, 123, 2, 0, 7, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, + 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 18, 8, 0, 10, 0, 12, + 0, 21, 9, 0, 1, 0, 3, 0, 24, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 64, 8, 0, 1, 0, 1, + 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, + 0, 3, 0, 80, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, 5, 0, 118, 8, 0, 10, 0, 12, 0, 121, 9, 0, 1, 0, 0, 1, + 0, 1, 0, 0, 12, 2, 0, 15, 16, 28, 29, 2, 0, 32, 32, 35, 35, 2, 0, 33, 33, + 36, 36, 2, 0, 34, 34, 37, 37, 2, 0, 42, 42, 44, 44, 1, 0, 17, 19, 1, 0, + 15, 16, 1, 0, 21, 22, 1, 0, 6, 7, 1, 0, 8, 9, 1, 0, 6, 9, 1, 0, 10, 11, + 154, 0, 63, 1, 0, 0, 0, 2, 3, 6, 0, -1, 0, 3, 64, 5, 40, 0, 0, 4, 64, 5, + 41, 0, 0, 5, 64, 5, 39, 0, 0, 6, 64, 5, 43, 0, 0, 7, 64, 5, 42, 0, 0, 8, + 64, 5, 44, 0, 0, 9, 10, 5, 1, 0, 0, 10, 11, 3, 0, 0, 0, 11, 12, 5, 2, 0, + 0, 12, 64, 1, 0, 0, 0, 13, 14, 5, 3, 0, 0, 14, 19, 3, 0, 0, 0, 15, 16, + 5, 4, 0, 0, 16, 18, 3, 0, 0, 0, 17, 15, 1, 0, 0, 0, 18, 21, 1, 0, 0, 0, + 19, 17, 1, 0, 0, 0, 19, 20, 1, 0, 0, 0, 20, 23, 1, 0, 0, 0, 21, 19, 1, + 0, 0, 0, 22, 24, 5, 4, 0, 0, 23, 22, 1, 0, 0, 0, 23, 24, 1, 0, 0, 0, 24, + 25, 1, 0, 0, 0, 25, 26, 5, 5, 0, 0, 26, 64, 1, 0, 0, 0, 27, 64, 5, 31, + 0, 0, 28, 29, 5, 14, 0, 0, 29, 30, 5, 1, 0, 0, 30, 31, 5, 42, 0, 0, 31, + 32, 5, 4, 0, 0, 32, 33, 5, 43, 0, 0, 33, 64, 5, 2, 0, 0, 34, 35, 7, 0, + 0, 0, 35, 64, 3, 0, 0, 19, 36, 37, 7, 1, 0, 0, 37, 38, 5, 1, 0, 0, 38, + 39, 3, 0, 0, 0, 39, 40, 5, 4, 0, 0, 40, 41, 3, 0, 0, 0, 41, 42, 5, 2, 0, + 0, 42, 64, 1, 0, 0, 0, 43, 44, 7, 2, 0, 0, 44, 45, 5, 1, 0, 0, 45, 46, + 3, 0, 0, 0, 46, 47, 5, 4, 0, 0, 47, 48, 3, 0, 0, 0, 48, 49, 5, 2, 0, 0, + 49, 64, 1, 0, 0, 0, 50, 51, 7, 3, 0, 0, 51, 52, 5, 1, 0, 0, 52, 53, 3, + 0, 0, 0, 53, 54, 5, 4, 0, 0, 54, 55, 3, 0, 0, 0, 55, 56, 5, 2, 0, 0, 56, + 64, 1, 0, 0, 0, 57, 58, 5, 38, 0, 0, 58, 59, 5, 1, 0, 0, 59, 60, 7, 4, + 0, 0, 60, 64, 5, 2, 0, 0, 61, 62, 5, 13, 0, 0, 62, 64, 3, 0, 0, 1, 63, + 2, 1, 0, 0, 0, 63, 4, 1, 0, 0, 0, 63, 5, 1, 0, 0, 0, 63, 6, 1, 0, 0, 0, + 63, 7, 1, 0, 0, 0, 63, 8, 1, 0, 0, 0, 63, 9, 1, 0, 0, 0, 63, 13, 1, 0, + 0, 0, 63, 27, 1, 0, 0, 0, 63, 28, 1, 0, 0, 0, 63, 34, 1, 0, 0, 0, 63, 36, + 1, 0, 0, 0, 63, 43, 1, 0, 0, 0, 63, 50, 1, 0, 0, 0, 63, 57, 1, 0, 0, 0, + 63, 61, 1, 0, 0, 0, 64, 119, 1, 0, 0, 0, 65, 66, 10, 20, 0, 0, 66, 67, + 5, 20, 0, 0, 67, 118, 3, 0, 0, 21, 68, 69, 10, 18, 0, 0, 69, 70, 7, 5, + 0, 0, 70, 118, 3, 0, 0, 19, 71, 72, 10, 17, 0, 0, 72, 73, 7, 6, 0, 0, 73, + 118, 3, 0, 0, 18, 74, 75, 10, 16, 0, 0, 75, 76, 7, 7, 0, 0, 76, 118, 3, + 0, 0, 17, 77, 79, 10, 15, 0, 0, 78, 80, 5, 29, 0, 0, 79, 78, 1, 0, 0, 0, + 79, 80, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 5, 30, 0, 0, 82, 118, 3, + 0, 0, 16, 83, 84, 10, 10, 0, 0, 84, 85, 7, 8, 0, 0, 85, 86, 7, 4, 0, 0, + 86, 87, 7, 8, 0, 0, 87, 118, 3, 0, 0, 11, 88, 89, 10, 9, 0, 0, 89, 90, + 7, 9, 0, 0, 90, 91, 7, 4, 0, 0, 91, 92, 7, 9, 0, 0, 92, 118, 3, 0, 0, 10, + 93, 94, 10, 8, 0, 0, 94, 95, 7, 10, 0, 0, 95, 118, 3, 0, 0, 9, 96, 97, + 10, 7, 0, 0, 97, 98, 7, 11, 0, 0, 98, 118, 3, 0, 0, 8, 99, 100, 10, 6, + 0, 0, 100, 101, 5, 23, 0, 0, 101, 118, 3, 0, 0, 7, 102, 103, 10, 5, 0, + 0, 103, 104, 5, 25, 0, 0, 104, 118, 3, 0, 0, 6, 105, 106, 10, 4, 0, 0, + 106, 107, 5, 24, 0, 0, 107, 118, 3, 0, 0, 5, 108, 109, 10, 3, 0, 0, 109, + 110, 5, 26, 0, 0, 110, 118, 3, 0, 0, 4, 111, 112, 10, 2, 0, 0, 112, 113, + 5, 27, 0, 0, 113, 118, 3, 0, 0, 3, 114, 115, 10, 22, 0, 0, 115, 116, 5, + 12, 0, 0, 116, 118, 5, 43, 0, 0, 117, 65, 1, 0, 0, 0, 117, 68, 1, 0, 0, + 0, 117, 71, 1, 0, 0, 0, 117, 74, 1, 0, 0, 0, 117, 77, 1, 0, 0, 0, 117, + 83, 1, 0, 0, 0, 117, 88, 1, 0, 0, 0, 117, 93, 1, 0, 0, 0, 117, 96, 1, 0, + 0, 0, 117, 99, 1, 0, 0, 0, 117, 102, 1, 0, 0, 0, 117, 105, 1, 0, 0, 0, + 117, 108, 1, 0, 0, 0, 117, 111, 1, 0, 0, 0, 117, 114, 1, 0, 0, 0, 118, + 121, 1, 0, 0, 0, 119, 117, 1, 0, 0, 0, 119, 120, 1, 0, 0, 0, 120, 1, 1, + 0, 0, 0, 121, 119, 1, 0, 0, 0, 6, 19, 23, 63, 79, 117, 119, + } + deserializer := antlr.NewATNDeserializer(nil) + staticData.atn = deserializer.Deserialize(staticData.serializedATN) + atn := staticData.atn + staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) + decisionToDFA := staticData.decisionToDFA + for index, state := range atn.DecisionToState { + decisionToDFA[index] = antlr.NewDFA(state, index) + } +} + +// PlanParserInit initializes any static state used to implement PlanParser. By default the +// static state used to implement the parser is lazily initialized during the first call to +// NewPlanParser(). You can call this function if you wish to initialize the static state ahead +// of time. +func PlanParserInit() { + staticData := &PlanParserStaticData + staticData.once.Do(planParserInit) +} + +// NewPlanParser produces a new parser instance for the optional input antlr.TokenStream. +func NewPlanParser(input antlr.TokenStream) *PlanParser { + PlanParserInit() + this := new(PlanParser) + this.BaseParser = antlr.NewBaseParser(input) + staticData := &PlanParserStaticData + this.Interpreter = antlr.NewParserATNSimulator(this, staticData.atn, staticData.decisionToDFA, staticData.PredictionContextCache) + this.RuleNames = staticData.RuleNames + this.LiteralNames = staticData.LiteralNames + this.SymbolicNames = staticData.SymbolicNames this.GrammarFileName = "Plan.g4" return this @@ -163,23 +177,22 @@ const ( PlanParserBNOT = 28 PlanParserNOT = 29 PlanParserIN = 30 - PlanParserNIN = 31 - PlanParserEmptyTerm = 32 - PlanParserJSONContains = 33 - PlanParserJSONContainsAll = 34 - PlanParserJSONContainsAny = 35 - PlanParserArrayContains = 36 - PlanParserArrayContainsAll = 37 - PlanParserArrayContainsAny = 38 - PlanParserArrayLength = 39 - PlanParserBooleanConstant = 40 - PlanParserIntegerConstant = 41 - PlanParserFloatingConstant = 42 - PlanParserIdentifier = 43 - PlanParserStringLiteral = 44 - PlanParserJSONIdentifier = 45 - PlanParserWhitespace = 46 - PlanParserNewline = 47 + PlanParserEmptyArray = 31 + PlanParserJSONContains = 32 + PlanParserJSONContainsAll = 33 + PlanParserJSONContainsAny = 34 + PlanParserArrayContains = 35 + PlanParserArrayContainsAll = 36 + PlanParserArrayContainsAny = 37 + PlanParserArrayLength = 38 + PlanParserBooleanConstant = 39 + PlanParserIntegerConstant = 40 + PlanParserFloatingConstant = 41 + PlanParserIdentifier = 42 + PlanParserStringLiteral = 43 + PlanParserJSONIdentifier = 44 + PlanParserWhitespace = 45 + PlanParserNewline = 46 ) // PlanParserRULE_expr is the PlanParser rule. @@ -191,29 +204,33 @@ type IExprContext interface { // GetParser returns the parser. GetParser() antlr.Parser - // IsExprContext differentiates from other interfaces. IsExprContext() } type ExprContext struct { - *antlr.BaseParserRuleContext + antlr.BaseParserRuleContext parser antlr.Parser } func NewEmptyExprContext() *ExprContext { var p = new(ExprContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) p.RuleIndex = PlanParserRULE_expr return p } +func InitEmptyExprContext(p *ExprContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = PlanParserRULE_expr +} + func (*ExprContext) IsExprContext() {} func NewExprContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExprContext { var p = new(ExprContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) p.parser = parser p.RuleIndex = PlanParserRULE_expr @@ -223,8 +240,8 @@ func NewExprContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokin func (s *ExprContext) GetParser() antlr.Parser { return s.parser } -func (s *ExprContext) CopyFrom(ctx *ExprContext) { - s.BaseParserRuleContext.CopyFrom(ctx.BaseParserRuleContext) +func (s *ExprContext) CopyAll(ctx *ExprContext) { + s.CopyFrom(&ctx.BaseParserRuleContext) } func (s *ExprContext) GetRuleContext() antlr.RuleContext { @@ -236,15 +253,15 @@ func (s *ExprContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) s } type JSONIdentifierContext struct { - *ExprContext + ExprContext } func NewJSONIdentifierContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *JSONIdentifierContext { var p = new(JSONIdentifierContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -268,15 +285,15 @@ func (s *JSONIdentifierContext) Accept(visitor antlr.ParseTreeVisitor) interface } type ParensContext struct { - *ExprContext + ExprContext } func NewParensContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ParensContext { var p = new(ParensContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -286,7 +303,13 @@ func (s *ParensContext) GetRuleContext() antlr.RuleContext { } func (s *ParensContext) Expr() IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -306,15 +329,15 @@ func (s *ParensContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type StringContext struct { - *ExprContext + ExprContext } func NewStringContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *StringContext { var p = new(StringContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -338,15 +361,15 @@ func (s *StringContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type FloatingContext struct { - *ExprContext + ExprContext } func NewFloatingContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *FloatingContext { var p = new(FloatingContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -370,15 +393,15 @@ func (s *FloatingContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type JSONContainsAllContext struct { - *ExprContext + ExprContext } func NewJSONContainsAllContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *JSONContainsAllContext { var p = new(JSONContainsAllContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -388,12 +411,20 @@ func (s *JSONContainsAllContext) GetRuleContext() antlr.RuleContext { } func (s *JSONContainsAllContext) AllExpr() []IExprContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExprContext)(nil)).Elem()) - var tst = make([]IExprContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { tst[i] = t.(IExprContext) + i++ } } @@ -401,7 +432,17 @@ func (s *JSONContainsAllContext) AllExpr() []IExprContext { } func (s *JSONContainsAllContext) Expr(i int) IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -429,15 +470,15 @@ func (s *JSONContainsAllContext) Accept(visitor antlr.ParseTreeVisitor) interfac } type LogicalOrContext struct { - *ExprContext + ExprContext } func NewLogicalOrContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *LogicalOrContext { var p = new(LogicalOrContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -447,12 +488,20 @@ func (s *LogicalOrContext) GetRuleContext() antlr.RuleContext { } func (s *LogicalOrContext) AllExpr() []IExprContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExprContext)(nil)).Elem()) - var tst = make([]IExprContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { tst[i] = t.(IExprContext) + i++ } } @@ -460,7 +509,17 @@ func (s *LogicalOrContext) AllExpr() []IExprContext { } func (s *LogicalOrContext) Expr(i int) IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -484,16 +543,16 @@ func (s *LogicalOrContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type MulDivModContext struct { - *ExprContext + ExprContext op antlr.Token } func NewMulDivModContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *MulDivModContext { var p = new(MulDivModContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -507,12 +566,20 @@ func (s *MulDivModContext) GetRuleContext() antlr.RuleContext { } func (s *MulDivModContext) AllExpr() []IExprContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExprContext)(nil)).Elem()) - var tst = make([]IExprContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { tst[i] = t.(IExprContext) + i++ } } @@ -520,7 +587,17 @@ func (s *MulDivModContext) AllExpr() []IExprContext { } func (s *MulDivModContext) Expr(i int) IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -552,15 +629,15 @@ func (s *MulDivModContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type IdentifierContext struct { - *ExprContext + ExprContext } func NewIdentifierContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *IdentifierContext { var p = new(IdentifierContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -584,15 +661,15 @@ func (s *IdentifierContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type LikeContext struct { - *ExprContext + ExprContext } func NewLikeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *LikeContext { var p = new(LikeContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -602,7 +679,13 @@ func (s *LikeContext) GetRuleContext() antlr.RuleContext { } func (s *LikeContext) Expr() IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -630,15 +713,15 @@ func (s *LikeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type LogicalAndContext struct { - *ExprContext + ExprContext } func NewLogicalAndContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *LogicalAndContext { var p = new(LogicalAndContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -648,12 +731,20 @@ func (s *LogicalAndContext) GetRuleContext() antlr.RuleContext { } func (s *LogicalAndContext) AllExpr() []IExprContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExprContext)(nil)).Elem()) - var tst = make([]IExprContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { tst[i] = t.(IExprContext) + i++ } } @@ -661,7 +752,17 @@ func (s *LogicalAndContext) AllExpr() []IExprContext { } func (s *LogicalAndContext) Expr(i int) IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -685,16 +786,16 @@ func (s *LogicalAndContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type EqualityContext struct { - *ExprContext + ExprContext op antlr.Token } func NewEqualityContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *EqualityContext { var p = new(EqualityContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -708,12 +809,20 @@ func (s *EqualityContext) GetRuleContext() antlr.RuleContext { } func (s *EqualityContext) AllExpr() []IExprContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExprContext)(nil)).Elem()) - var tst = make([]IExprContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { tst[i] = t.(IExprContext) + i++ } } @@ -721,7 +830,17 @@ func (s *EqualityContext) AllExpr() []IExprContext { } func (s *EqualityContext) Expr(i int) IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -749,15 +868,15 @@ func (s *EqualityContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type BooleanContext struct { - *ExprContext + ExprContext } func NewBooleanContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *BooleanContext { var p = new(BooleanContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -781,16 +900,16 @@ func (s *BooleanContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type ShiftContext struct { - *ExprContext + ExprContext op antlr.Token } func NewShiftContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ShiftContext { var p = new(ShiftContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -804,12 +923,20 @@ func (s *ShiftContext) GetRuleContext() antlr.RuleContext { } func (s *ShiftContext) AllExpr() []IExprContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExprContext)(nil)).Elem()) - var tst = make([]IExprContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { tst[i] = t.(IExprContext) + i++ } } @@ -817,7 +944,17 @@ func (s *ShiftContext) AllExpr() []IExprContext { } func (s *ShiftContext) Expr(i int) IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -845,7 +982,7 @@ func (s *ShiftContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type ReverseRangeContext struct { - *ExprContext + ExprContext op1 antlr.Token op2 antlr.Token } @@ -853,9 +990,9 @@ type ReverseRangeContext struct { func NewReverseRangeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ReverseRangeContext { var p = new(ReverseRangeContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -873,12 +1010,20 @@ func (s *ReverseRangeContext) GetRuleContext() antlr.RuleContext { } func (s *ReverseRangeContext) AllExpr() []IExprContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExprContext)(nil)).Elem()) - var tst = make([]IExprContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { tst[i] = t.(IExprContext) + i++ } } @@ -886,7 +1031,17 @@ func (s *ReverseRangeContext) AllExpr() []IExprContext { } func (s *ReverseRangeContext) Expr(i int) IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -930,15 +1085,15 @@ func (s *ReverseRangeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} } type BitOrContext struct { - *ExprContext + ExprContext } func NewBitOrContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *BitOrContext { var p = new(BitOrContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -948,12 +1103,20 @@ func (s *BitOrContext) GetRuleContext() antlr.RuleContext { } func (s *BitOrContext) AllExpr() []IExprContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExprContext)(nil)).Elem()) - var tst = make([]IExprContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { tst[i] = t.(IExprContext) + i++ } } @@ -961,7 +1124,17 @@ func (s *BitOrContext) AllExpr() []IExprContext { } func (s *BitOrContext) Expr(i int) IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -984,17 +1157,49 @@ func (s *BitOrContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } } +type EmptyArrayContext struct { + ExprContext +} + +func NewEmptyArrayContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *EmptyArrayContext { + var p = new(EmptyArrayContext) + + InitEmptyExprContext(&p.ExprContext) + p.parser = parser + p.CopyAll(ctx.(*ExprContext)) + + return p +} + +func (s *EmptyArrayContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EmptyArrayContext) EmptyArray() antlr.TerminalNode { + return s.GetToken(PlanParserEmptyArray, 0) +} + +func (s *EmptyArrayContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { + switch t := visitor.(type) { + case PlanVisitor: + return t.VisitEmptyArray(s) + + default: + return t.VisitChildren(s) + } +} + type AddSubContext struct { - *ExprContext + ExprContext op antlr.Token } func NewAddSubContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AddSubContext { var p = new(AddSubContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -1008,12 +1213,20 @@ func (s *AddSubContext) GetRuleContext() antlr.RuleContext { } func (s *AddSubContext) AllExpr() []IExprContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExprContext)(nil)).Elem()) - var tst = make([]IExprContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { tst[i] = t.(IExprContext) + i++ } } @@ -1021,7 +1234,17 @@ func (s *AddSubContext) AllExpr() []IExprContext { } func (s *AddSubContext) Expr(i int) IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -1049,16 +1272,16 @@ func (s *AddSubContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type RelationalContext struct { - *ExprContext + ExprContext op antlr.Token } func NewRelationalContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *RelationalContext { var p = new(RelationalContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -1072,12 +1295,20 @@ func (s *RelationalContext) GetRuleContext() antlr.RuleContext { } func (s *RelationalContext) AllExpr() []IExprContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExprContext)(nil)).Elem()) - var tst = make([]IExprContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { tst[i] = t.(IExprContext) + i++ } } @@ -1085,7 +1316,17 @@ func (s *RelationalContext) AllExpr() []IExprContext { } func (s *RelationalContext) Expr(i int) IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -1121,15 +1362,15 @@ func (s *RelationalContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type ArrayLengthContext struct { - *ExprContext + ExprContext } func NewArrayLengthContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ArrayLengthContext { var p = new(ArrayLengthContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -1161,15 +1402,15 @@ func (s *ArrayLengthContext) Accept(visitor antlr.ParseTreeVisitor) interface{} } type TextMatchContext struct { - *ExprContext + ExprContext } func NewTextMatchContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TextMatchContext { var p = new(TextMatchContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -1201,16 +1442,16 @@ func (s *TextMatchContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type TermContext struct { - *ExprContext + ExprContext op antlr.Token } func NewTermContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *TermContext { var p = new(TermContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -1224,12 +1465,20 @@ func (s *TermContext) GetRuleContext() antlr.RuleContext { } func (s *TermContext) AllExpr() []IExprContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExprContext)(nil)).Elem()) - var tst = make([]IExprContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { tst[i] = t.(IExprContext) + i++ } } @@ -1237,7 +1486,17 @@ func (s *TermContext) AllExpr() []IExprContext { } func (s *TermContext) Expr(i int) IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -1250,8 +1509,8 @@ func (s *TermContext) IN() antlr.TerminalNode { return s.GetToken(PlanParserIN, 0) } -func (s *TermContext) NIN() antlr.TerminalNode { - return s.GetToken(PlanParserNIN, 0) +func (s *TermContext) NOT() antlr.TerminalNode { + return s.GetToken(PlanParserNOT, 0) } func (s *TermContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { @@ -1265,15 +1524,15 @@ func (s *TermContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type JSONContainsContext struct { - *ExprContext + ExprContext } func NewJSONContainsContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *JSONContainsContext { var p = new(JSONContainsContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -1283,12 +1542,20 @@ func (s *JSONContainsContext) GetRuleContext() antlr.RuleContext { } func (s *JSONContainsContext) AllExpr() []IExprContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExprContext)(nil)).Elem()) - var tst = make([]IExprContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { tst[i] = t.(IExprContext) + i++ } } @@ -1296,7 +1563,17 @@ func (s *JSONContainsContext) AllExpr() []IExprContext { } func (s *JSONContainsContext) Expr(i int) IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -1324,7 +1601,7 @@ func (s *JSONContainsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} } type RangeContext struct { - *ExprContext + ExprContext op1 antlr.Token op2 antlr.Token } @@ -1332,9 +1609,9 @@ type RangeContext struct { func NewRangeContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *RangeContext { var p = new(RangeContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -1352,12 +1629,20 @@ func (s *RangeContext) GetRuleContext() antlr.RuleContext { } func (s *RangeContext) AllExpr() []IExprContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExprContext)(nil)).Elem()) - var tst = make([]IExprContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { tst[i] = t.(IExprContext) + i++ } } @@ -1365,7 +1650,17 @@ func (s *RangeContext) AllExpr() []IExprContext { } func (s *RangeContext) Expr(i int) IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -1409,16 +1704,16 @@ func (s *RangeContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type UnaryContext struct { - *ExprContext + ExprContext op antlr.Token } func NewUnaryContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *UnaryContext { var p = new(UnaryContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -1432,7 +1727,13 @@ func (s *UnaryContext) GetRuleContext() antlr.RuleContext { } func (s *UnaryContext) Expr() IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -1468,15 +1769,15 @@ func (s *UnaryContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type IntegerContext struct { - *ExprContext + ExprContext } func NewIntegerContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *IntegerContext { var p = new(IntegerContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -1500,15 +1801,15 @@ func (s *IntegerContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type ArrayContext struct { - *ExprContext + ExprContext } func NewArrayContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ArrayContext { var p = new(ArrayContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -1518,12 +1819,20 @@ func (s *ArrayContext) GetRuleContext() antlr.RuleContext { } func (s *ArrayContext) AllExpr() []IExprContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExprContext)(nil)).Elem()) - var tst = make([]IExprContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { tst[i] = t.(IExprContext) + i++ } } @@ -1531,7 +1840,17 @@ func (s *ArrayContext) AllExpr() []IExprContext { } func (s *ArrayContext) Expr(i int) IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -1551,15 +1870,15 @@ func (s *ArrayContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type JSONContainsAnyContext struct { - *ExprContext + ExprContext } func NewJSONContainsAnyContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *JSONContainsAnyContext { var p = new(JSONContainsAnyContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -1569,12 +1888,20 @@ func (s *JSONContainsAnyContext) GetRuleContext() antlr.RuleContext { } func (s *JSONContainsAnyContext) AllExpr() []IExprContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExprContext)(nil)).Elem()) - var tst = make([]IExprContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { tst[i] = t.(IExprContext) + i++ } } @@ -1582,7 +1909,17 @@ func (s *JSONContainsAnyContext) AllExpr() []IExprContext { } func (s *JSONContainsAnyContext) Expr(i int) IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -1610,15 +1947,15 @@ func (s *JSONContainsAnyContext) Accept(visitor antlr.ParseTreeVisitor) interfac } type BitXorContext struct { - *ExprContext + ExprContext } func NewBitXorContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *BitXorContext { var p = new(BitXorContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -1628,12 +1965,20 @@ func (s *BitXorContext) GetRuleContext() antlr.RuleContext { } func (s *BitXorContext) AllExpr() []IExprContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExprContext)(nil)).Elem()) - var tst = make([]IExprContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { tst[i] = t.(IExprContext) + i++ } } @@ -1641,7 +1986,17 @@ func (s *BitXorContext) AllExpr() []IExprContext { } func (s *BitXorContext) Expr(i int) IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -1665,15 +2020,15 @@ func (s *BitXorContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type ExistsContext struct { - *ExprContext + ExprContext } func NewExistsContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ExistsContext { var p = new(ExistsContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -1687,7 +2042,13 @@ func (s *ExistsContext) EXISTS() antlr.TerminalNode { } func (s *ExistsContext) Expr() IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), 0) + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } if t == nil { return nil @@ -1707,15 +2068,15 @@ func (s *ExistsContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } type BitAndContext struct { - *ExprContext + ExprContext } func NewBitAndContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *BitAndContext { var p = new(BitAndContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -1725,12 +2086,20 @@ func (s *BitAndContext) GetRuleContext() antlr.RuleContext { } func (s *BitAndContext) AllExpr() []IExprContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExprContext)(nil)).Elem()) - var tst = make([]IExprContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { tst[i] = t.(IExprContext) + i++ } } @@ -1738,7 +2107,17 @@ func (s *BitAndContext) AllExpr() []IExprContext { } func (s *BitAndContext) Expr(i int) IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -1761,71 +2140,16 @@ func (s *BitAndContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { } } -type EmptyTermContext struct { - *ExprContext - op antlr.Token -} - -func NewEmptyTermContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *EmptyTermContext { - var p = new(EmptyTermContext) - - p.ExprContext = NewEmptyExprContext() - p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) - - return p -} - -func (s *EmptyTermContext) GetOp() antlr.Token { return s.op } - -func (s *EmptyTermContext) SetOp(v antlr.Token) { s.op = v } - -func (s *EmptyTermContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *EmptyTermContext) Expr() IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), 0) - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *EmptyTermContext) EmptyTerm() antlr.TerminalNode { - return s.GetToken(PlanParserEmptyTerm, 0) -} - -func (s *EmptyTermContext) IN() antlr.TerminalNode { - return s.GetToken(PlanParserIN, 0) -} - -func (s *EmptyTermContext) NIN() antlr.TerminalNode { - return s.GetToken(PlanParserNIN, 0) -} - -func (s *EmptyTermContext) Accept(visitor antlr.ParseTreeVisitor) interface{} { - switch t := visitor.(type) { - case PlanVisitor: - return t.VisitEmptyTerm(s) - - default: - return t.VisitChildren(s) - } -} - type PowerContext struct { - *ExprContext + ExprContext } func NewPowerContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PowerContext { var p = new(PowerContext) - p.ExprContext = NewEmptyExprContext() + InitEmptyExprContext(&p.ExprContext) p.parser = parser - p.CopyFrom(ctx.(*ExprContext)) + p.CopyAll(ctx.(*ExprContext)) return p } @@ -1835,12 +2159,20 @@ func (s *PowerContext) GetRuleContext() antlr.RuleContext { } func (s *PowerContext) AllExpr() []IExprContext { - var ts = s.GetTypedRuleContexts(reflect.TypeOf((*IExprContext)(nil)).Elem()) - var tst = make([]IExprContext, len(ts)) + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } - for i, t := range ts { - if t != nil { + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { tst[i] = t.(IExprContext) + i++ } } @@ -1848,7 +2180,17 @@ func (s *PowerContext) AllExpr() []IExprContext { } func (s *PowerContext) Expr(i int) IExprContext { - var t = s.GetTypedRuleContext(reflect.TypeOf((*IExprContext)(nil)).Elem(), i) + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } if t == nil { return nil @@ -1877,6 +2219,7 @@ func (p *PlanParser) Expr() (localctx IExprContext) { func (p *PlanParser) expr(_p int) (localctx IExprContext) { var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext() + _parentState := p.GetState() localctx = NewExprContext(p, p.GetParserRuleContext(), _parentState) var _prevctx IExprContext = localctx @@ -1885,27 +2228,14 @@ func (p *PlanParser) expr(_p int) (localctx IExprContext) { p.EnterRecursionRule(localctx, 0, PlanParserRULE_expr, _p) var _la int - defer func() { - p.UnrollRecursionContexts(_parentctx) - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - var _alt int p.EnterOuterAlt(localctx, 1) - p.SetState(62) + p.SetState(63) p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } switch p.GetTokenStream().LA(1) { case PlanParserIntegerConstant: @@ -1916,6 +2246,10 @@ func (p *PlanParser) expr(_p int) (localctx IExprContext) { { p.SetState(3) p.Match(PlanParserIntegerConstant) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } case PlanParserFloatingConstant: @@ -1925,6 +2259,10 @@ func (p *PlanParser) expr(_p int) (localctx IExprContext) { { p.SetState(4) p.Match(PlanParserFloatingConstant) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } case PlanParserBooleanConstant: @@ -1934,6 +2272,10 @@ func (p *PlanParser) expr(_p int) (localctx IExprContext) { { p.SetState(5) p.Match(PlanParserBooleanConstant) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } case PlanParserStringLiteral: @@ -1943,6 +2285,10 @@ func (p *PlanParser) expr(_p int) (localctx IExprContext) { { p.SetState(6) p.Match(PlanParserStringLiteral) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } case PlanParserIdentifier: @@ -1952,6 +2298,10 @@ func (p *PlanParser) expr(_p int) (localctx IExprContext) { { p.SetState(7) p.Match(PlanParserIdentifier) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } case PlanParserJSONIdentifier: @@ -1961,6 +2311,10 @@ func (p *PlanParser) expr(_p int) (localctx IExprContext) { { p.SetState(8) p.Match(PlanParserJSONIdentifier) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } case PlanParserT__0: @@ -1970,6 +2324,10 @@ func (p *PlanParser) expr(_p int) (localctx IExprContext) { { p.SetState(9) p.Match(PlanParserT__0) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } { p.SetState(10) @@ -1978,6 +2336,10 @@ func (p *PlanParser) expr(_p int) (localctx IExprContext) { { p.SetState(11) p.Match(PlanParserT__1) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } case PlanParserT__2: @@ -1987,6 +2349,10 @@ func (p *PlanParser) expr(_p int) (localctx IExprContext) { { p.SetState(13) p.Match(PlanParserT__2) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } { p.SetState(14) @@ -1994,13 +2360,22 @@ func (p *PlanParser) expr(_p int) (localctx IExprContext) { } p.SetState(19) p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 0, p.GetParserRuleContext()) - + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 0, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { if _alt == 1 { { p.SetState(15) p.Match(PlanParserT__3) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } { p.SetState(16) @@ -2010,51 +2385,105 @@ func (p *PlanParser) expr(_p int) (localctx IExprContext) { } p.SetState(21) p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 0, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 0, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } } p.SetState(23) p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } _la = p.GetTokenStream().LA(1) if _la == PlanParserT__3 { { p.SetState(22) p.Match(PlanParserT__3) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } } { p.SetState(25) p.Match(PlanParserT__4) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case PlanParserEmptyArray: + localctx = NewEmptyArrayContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + { + p.SetState(27) + p.Match(PlanParserEmptyArray) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } case PlanParserTEXTMATCH: localctx = NewTextMatchContext(p, localctx) p.SetParserRuleContext(localctx) _prevctx = localctx - { - p.SetState(27) - p.Match(PlanParserTEXTMATCH) - } { p.SetState(28) - p.Match(PlanParserT__0) + p.Match(PlanParserTEXTMATCH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } { p.SetState(29) - p.Match(PlanParserIdentifier) + p.Match(PlanParserT__0) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } { p.SetState(30) - p.Match(PlanParserT__3) + p.Match(PlanParserIdentifier) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } { p.SetState(31) - p.Match(PlanParserStringLiteral) + p.Match(PlanParserT__3) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } { p.SetState(32) + p.Match(PlanParserStringLiteral) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(33) p.Match(PlanParserT__1) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } } case PlanParserADD, PlanParserSUB, PlanParserBNOT, PlanParserNOT: @@ -2062,7 +2491,7 @@ func (p *PlanParser) expr(_p int) (localctx IExprContext) { p.SetParserRuleContext(localctx) _prevctx = localctx { - p.SetState(33) + p.SetState(34) var _lt = p.GetTokenStream().LT(1) @@ -2070,7 +2499,7 @@ func (p *PlanParser) expr(_p int) (localctx IExprContext) { _la = p.GetTokenStream().LA(1) - if !(((_la)&-(0x1f+1)) == 0 && ((1< ArrayField[0] > 0`, `ArrayField[0] > 1`, `ArrayField[0] == 1`, + `ArrayField in []`, } for _, expr = range exprs { _, err = CreateSearchPlan(schema, expr, "FloatVectorField", &planpb.QueryInfo{ @@ -1218,7 +1219,6 @@ func Test_ArrayExpr(t *testing.T) { `ArrayField + 3 == 1`, `ArrayField in [1,2,3]`, `ArrayField[0] in [1, "abc",3.3]`, - `ArrayField in []`, `0 < ArrayField < 100`, `100 > ArrayField > 0`, `ArrayField > 1`, diff --git a/internal/parser/planparserv2/pool.go b/internal/parser/planparserv2/pool.go index 5792af5923..4fa65d59e8 100644 --- a/internal/parser/planparserv2/pool.go +++ b/internal/parser/planparserv2/pool.go @@ -3,7 +3,7 @@ package planparserv2 import ( "context" - "github.com/antlr/antlr4/runtime/Go/antlr" + "github.com/antlr4-go/antlr/v4" pool "github.com/jolestar/go-commons-pool/v2" antlrparser "github.com/milvus-io/milvus/internal/parser/planparserv2/generated" diff --git a/internal/parser/planparserv2/pool_test.go b/internal/parser/planparserv2/pool_test.go index 2b39fd8684..447770d326 100644 --- a/internal/parser/planparserv2/pool_test.go +++ b/internal/parser/planparserv2/pool_test.go @@ -3,7 +3,7 @@ package planparserv2 import ( "testing" - "github.com/antlr/antlr4/runtime/Go/antlr" + "github.com/antlr4-go/antlr/v4" "github.com/stretchr/testify/assert" antlrparser "github.com/milvus-io/milvus/internal/parser/planparserv2/generated" diff --git a/scripts/antlr-4.13.2-complete.jar b/scripts/antlr-4.13.2-complete.jar new file mode 100644 index 0000000000..75bfcc3976 Binary files /dev/null and b/scripts/antlr-4.13.2-complete.jar differ diff --git a/scripts/antlr-4.9-complete.jar b/scripts/antlr-4.9-complete.jar deleted file mode 100644 index c1ca306cc0..0000000000 Binary files a/scripts/antlr-4.9-complete.jar and /dev/null differ