diff --git a/.eslintignore b/.eslintignore index ceacd6a..eca74ee 100644 --- a/.eslintignore +++ b/.eslintignore @@ -3,7 +3,6 @@ .idea node_modules reverse_engineering/node_modules -reverse_engineering/antlr/parser forward_engineering/node_modules build release diff --git a/buildConstants.js b/buildConstants.js index 89b6090..5c3f239 100644 --- a/buildConstants.js +++ b/buildConstants.js @@ -2,7 +2,7 @@ const path = require('path'); const DEFAULT_RELEASE_FOLDER_PATH = path.resolve(__dirname, 'release'); -const EXCLUDED_EXTENSIONS = ['.js', '.g4', '.interp', '.tokens', '.ts']; +const EXCLUDED_EXTENSIONS = ['.js', '.g4', '.interp', '.tokens']; const EXCLUDED_FILES = [ '.github', '.DS_Store', diff --git a/localization/en.json b/localization/en.json index fd2dfe9..365c07c 100644 --- a/localization/en.json +++ b/localization/en.json @@ -100,7 +100,7 @@ "MODAL_WINDOW___SUBDOCUMENT_IN_CHILD": "Sub-document in child", "MODAL_WINDOW___ARRAY_IN_PARENT": "Array in parent", "MODAL_WINDOW___CREATE_COLLECTION": "Create Couchbase Collection", - "MODAL_WINDOW___INCLUDE_EMPTY_COLLECTION": "Include empty collections", + "MODAL_WINDOW___INCLUDE_EMPTY_COLLECTION": "Include empty documents", "MODAL_WINDOW___CREATE_BUCKET": "Create Couchbase Scope", "MODAL_WINDOW___ALL_COLLECTIONS": "and all nested collections", "MODAL_WINDOW___COLLECTION_NAME_ERROR": "Collection name is empty or is a reserved word", diff --git a/package-lock.json b/package-lock.json index f677fb3..4002970 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,14 +7,8 @@ "": { "name": "CouchbaseV7Plus", "version": "0.0.3", - "dependencies": { - "antlr4": "4.9.2", - "async": "3.2.5", - "lodash": "4.17.21" - }, "devDependencies": { "@hackolade/hck-esbuild-plugins-pack": "0.0.1", - "@types/couchbase": "2.4.9", "esbuild": "0.19.12", "esbuild-plugin-clean": "1.0.1", "eslint": "8.56.0", @@ -554,24 +548,6 @@ "url": "https://opencollective.com/unts" } }, - "node_modules/@types/couchbase": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/@types/couchbase/-/couchbase-2.4.9.tgz", - "integrity": "sha512-qQzFxeMbFU5U/s26UW4COD2MevkYRhunXx3D+GOuZROanOHmR3Hd3uKjOfqO4DpkXh3DMjVJX9qcMoM3CDdAFg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "20.11.16", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz", - "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", @@ -679,14 +655,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/antlr4": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.9.2.tgz", - "integrity": "sha512-UjMSlenUORL+a+6g4RNZxRh5LcFWybRi2g0ASDBpgXBY6nlavg0BRVAVEQF0dz8jH6SyX3lV7uP5y/krJzc+Hw==", - "engines": { - "node": ">=14" - } - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -702,11 +670,6 @@ "node": ">=8" } }, - "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1749,11 +1712,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -2462,12 +2420,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", diff --git a/package.json b/package.json index 026eada..6b7919b 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,20 @@ ] }, "features": { + "nestedCollections": false, + "forwardEngineering": { + "jsonSchema": { + "keepParentType": { + "binary": {} + } + } + }, + "enableReverseEngineering": true, "enableForwardEngineering": true, - "enableArrayCollections": false + "enableReverseEngineeringDetectionSchemaByContent": false, + "enableReversingDateTypeAsISODate": true, + "supportInferRelationships": true, + "enableREQueryAndSortCriteria": true } }, "description": "Hackolade plugin for Couchbase v7+ with scopes and collections", @@ -34,7 +46,6 @@ }, "devDependencies": { "@hackolade/hck-esbuild-plugins-pack": "0.0.1", - "@types/couchbase": "2.4.9", "esbuild": "0.19.12", "esbuild-plugin-clean": "1.0.1", "eslint": "8.56.0", @@ -43,10 +54,5 @@ "lint-staged": "14.0.1", "prettier": "3.2.4", "simple-git-hooks": "2.9.0" - }, - "dependencies": { - "antlr4": "4.9.2", - "async": "3.2.5", - "lodash": "4.17.21" } } diff --git a/properties_pane/container_level/containerLevelConfig.json b/properties_pane/container_level/containerLevelConfig.json index 5dec4ab..c7c7c7d 100644 --- a/properties_pane/container_level/containerLevelConfig.json +++ b/properties_pane/container_level/containerLevelConfig.json @@ -116,6 +116,7 @@ making sure that you maintain a proper JSON format. [ { "lowerTab": "Details", + "containerLevelKeys": [], "structure": [ { "propertyKeyword": "name", @@ -341,23 +342,6 @@ making sure that you maintain a proper JSON format. "shouldValidate": false, "propertyType": "checkbox" } - ], - "containerLevelKeys": [ - { - "labelName": "Key", - "propertyName": "Key", - "propertyKeyword": "key", - "defaultName": "KEY", - "propertyPrimaryKey": true, - "propertyType": "text", - "typeName": "type", - "typeOptions": ["string"], - "defaultType": "string", - "disabledFieldOption": true, - "validation": { - "disableNameValidationForReservedWords": true - } - } ] } ] diff --git a/reverse_engineering/antlr/antlrErrorListener.js b/reverse_engineering/antlr/antlrErrorListener.js deleted file mode 100644 index 48d2f82..0000000 --- a/reverse_engineering/antlr/antlrErrorListener.js +++ /dev/null @@ -1,9 +0,0 @@ -const antlr4 = require('antlr4'); - -class ExprErrorListener extends antlr4.error.ErrorListener { - syntaxError(recognizer, offendingSymbol, line, column, msg, err) { - throw new Error(`line ${line}:${column} ${msg}`); - } -} - -module.exports = ExprErrorListener; diff --git a/reverse_engineering/antlr/buildParser.sh b/reverse_engineering/antlr/buildParser.sh deleted file mode 100644 index 19ed503..0000000 --- a/reverse_engineering/antlr/buildParser.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -# * run with `sh buildParser.sh` - -# !important: don't forget to change `import` and `export` to `require` and `module.exports` after the parser is built - -# https://www.antlr.org/download/antlr-4.9.2-complete.jar -# -# set antlr4 aliases -# export CLASSPATH=".:/usr/local/lib/antlr-4.9.2-complete.jar:$CLASSPATH" -# alias antlr4='java -jar /usr/local/lib/antlr-4.9.2-complete.jar' -# alias grun='java org.antlr.v4.gui.TestRig' - -# build parser -java -jar /usr/local/lib/antlr-4.9.2-complete.jar -Dlanguage=JavaScript \ - -lib grammars \ - -o parser/ \ - -visitor \ - -no-listener \ - -Xexact-output-dir \ - grammars/n1ql.g4 - -npx prettier --write ./parser/**/*.js diff --git a/reverse_engineering/antlr/grammars/n1ql.g4 b/reverse_engineering/antlr/grammars/n1ql.g4 deleted file mode 100644 index 311452e..0000000 --- a/reverse_engineering/antlr/grammars/n1ql.g4 +++ /dev/null @@ -1,1151 +0,0 @@ -/* - * This is an automotically generated Antlr4 N1QL parser. - * - * Actually, the lexer part is hand-generated, and the parser rules are extracted - * using an Antlr4 parser that parses the rules from the goyacc n1ql.y file. - */ - -grammar n1ql; - -fragment SingleStringCharacter: '\'\'' | '\\\'' | '\\' ~['] | ~['\r\n\\]; -fragment DoubleStringCharacter: '\\"' | '\\' ~["] | ~["\\]; - -STR: '\'' SingleStringCharacter* '\'' -| '"' DoubleStringCharacter* '"'; - -fragment NumStart: '0' | [1-9]; -fragment Digit: [0-9]; - -fragment Int: '0' | NumStart Digit*; -fragment Exponent: [eE][+-]? Digit+; - -INT: Int; - -NUM: Int '.' Digit+ Exponent? | Int Exponent; -BLOCK_COMMENT: '/*' .*? '*/'; - -LINE_COMMENT: '--' ~[\n\r]*; -WHITESPACE: [ \t\n\r\f]+ -> skip; -DOT: '.'; -PLUS: '+'; -MINUS: '-' | [mM][iI][nN][uU][sS]; -STAR: '*'; -DIV: '/'; -MOD: '%'; -DEQ: '=='; -EQ: '='; -NE: '!=' | '<>'; -LT: '<'; -LE: '<='; -GT: '>'; -GE: '>='; -CONCAT: '||'; -LPAREN: '('; -RPAREN: ')'; -LBRACE: '{'; -RBRACE: '}'; -COMMA: ','; -COLON: ':'; -LBRACKET: '['; -RBRACKET: ']'; -RBRACKET_ICASE:']i'; -SEMI: ';'; -NOT_A_TOKEN: '!'; - -ADVISE: [aA][dD][vV][iI][sS][eE]; -ALL: [aA][lL][lL]; -ALTER: [aA][lL][tT][eE][rR]; -ANALYZE: [aA][nN][aA][lL][yY][zZ][eE]; -AND: [aA][nN][dD]; -ANY: [aA][nN][yY]; -ARRAY: [aA][rR][rR][aA][yY]; -AS: [aA][sS]; -ASC: [aA][sS][cC]; -AT: [aA][tT]; -BEGIN: [bB][eE][gG][iI][nN]; -BETWEEN: [bB][eE][tT][wW][eE][eE][nN]; -BINARY: [bB][iI][nN][aA][rR][yY]; -BOOLEAN: [bB][oO][oO][lL][eE][aA][nN]; -BREAK: [bB][rR][eE][aA][kK]; -BUCKET: [bB][uU][cC][kK][eE][tT]; -BUILD: [bB][uU][iI][lL][dD]; -BY: [bB][yY]; -CALL: [cC][aA][lL][lL]; -CASE: [cC][aA][sS][eE]; -CAST: [cC][aA][sS][tT]; -CLUSTER: [cC][lL][uU][sS][tT][eE][rR]; -COLLATE: [cC][oO][lL][lL][aA][tT][eE]; -COLLECTION: [cC][oO][lL][lL][eE][cC][tT][iI][oO][nN]; -COMMIT: [cC][oO][mM][mM][iI][tT]; -COMMITTED: [cC][oO][mM][mM][iI][tT][tT][eE][dD]; -CONNECT: [cC][oO][nN][nN][eE][cC][tT]; -CONTINUE: [cC][oO][nN][tT][iI][nN][uU][eE]; -CORRELATED: [cC][oO][rR][rR][eE][lL][aA][tT][eE][dD]; -COVER: [cC][oO][vV][eE][rR]; -CREATE: [cC][rR][eE][aA][tT][eE]; -CURRENT: [cC][uU][rR][rR][eE][nN][tT]; -DATABASE: [dD][aA][tT][aA][bB][aA][sS][eE]; -DATASET: [dD][aA][tT][aA][sS][eE][tT]; -DATASTORE: [dD][aA][tT][aA][sS][tT][oO][rR][eE]; -DECLARE: [dD][eE][cC][lL][aA][rR][eE]; -DECREMENT: [dD][eE][cC][rR][eE][mM][eE][nN][tT]; -DELETE_: [dD][eE][lL][eE][tT][eE]; -DERIVED: [dD][eE][rR][iI][vV][eE][dD]; -DESC: [dD][eE][sS][cC]; -DESCRIBE: [dD][eE][sS][cC][rR][iI][bB][eE]; -DISTINCT: [dD][iI][sS][tT][iI][nN][cC][tT]; -DO: [dD][oO]; -DROP: [dD][rR][oO][pP]; -EACH: [eE][aA][cC][hH]; -ELEMENT: [eE][lL][eE][mM][eE][nN][tT]; -ELSE: [eE][lL][sS][eE]; -END: [eE][nN][dD]; -EVERY: [eE][vV][eE][rR][yY]; -EXCEPT: [eE][xX][cC][eE][pP][tT]; -EXCLUDE: [eE][xX][cC][lL][uU][dD][eE]; -EXECUTE: [eE][xX][eE][cC][uU][tT][eE]; -EXISTS: [eE][xX][iI][sS][tT][sS]; -EXPLAIN: [eE][xX][pP][lL][aA][iI][nN]; -FALSE: [fF][aA][lL][sS][eE]; -FETCH: [fF][eE][tT][cC][hH]; -FILTER: [fF][iI][lL][tT][eE][rR]; -FIRST: [fF][iI][rR][sS][tT]; -FLATTEN: [fF][lL][aA][tT][tT][eE][nN]; -FLUSH: [fF][lL][uU][sS][hH]; -FOLLOWING: [fF][oO][lL][lL][oO][wW][iI][nN][gG]; -FOR: [fF][oO][rR]; -FORCE: [fF][oO][rR][cC][eE]; -FROM: [fF][rR][oO][mM]; -FTS: [fF][tT][sS]; -FUNCTION: [fF][uU][nN][cC][tT][iI][oO][nN]; -GOLANG: [gG][oO][lL][aA][nN][gG]; -GRANT: [gG][rR][aA][nN][tT]; -GROUP: [gG][rR][oO][uU][pP]; -GROUPS: [gG][rR][oO][uU][pP][sS]; -GSI: [gG][sS][iI]; -HASH: [hH][aA][sS][hH]; -HAVING: [hH][aA][vV][iI][nN][gG]; -IF: [iI][fF]; -IGNORE: [iI][gG][nN][oO][rR][eE]; -ILIKE: [iI][lL][iI][kK][eE]; -IN: [iI][nN]; -INCLUDE: [iI][nN][cC][lL][uU][dD][eE]; -INCREMENT: [iI][nN][cC][rR][eE][mM][eE][nN][tT]; -INDEX: [iI][nN][dD][eE][xX]; -INFER: [iI][nN][fF][eE][rR]; -INLINE: [iI][nN][lL][iI][nN][eE]; -INNER: [iI][nN][nN][eE][rR]; -INSERT: [iI][nN][sS][eE][rR][tT]; -INTERSECT: [iI][nN][tT][eE][rR][sS][eE][cC][tT]; -INTO: [iI][nN][tT][oO]; -IS: [iI][sS]; -ISOLATION: [iI][sS][oO][lL][aA][tT][iI][oO][nN]; -JAVASCRIPT: [jJ][aA][vV][aA][sS][cC][rR][iI][pP][tT]; -JOIN: [jJ][oO][iI][nN]; -KEY: [kK][eE][yY]; -KEYS: [kK][eE][yY][sS]; -KEYSPACE: [kK][eE][yY][sS][pP][aA][cC][eE]; -KNOWN: [kK][nN][oO][wW][nN]; -LANGUAGE: [lL][aA][nN][gG][uU][aA][gG][eE]; -LAST: [lL][aA][sS][tT]; -LEFT: [lL][eE][fF][tT]; -LET_: [lL][eE][tT]; -LETTING: [lL][eE][tT][tT][iI][nN][gG]; -LEVEL: [lL][eE][vV][eE][lL]; -LIKE: [lL][iI][kK][eE]; -LIMIT: [lL][iI][mM][iI][tT]; -LSM: [lL][sS][mM]; -MAP: [mM][aA][pP]; -MAPPING: [mM][aA][pP][pP][iI][nN][gG]; -MATCHED: [mM][aA][tT][cC][hH][eE][dD]; -MATERIALIZED: [mM][aA][tT][eE][rR][iI][aA][lL][iI][zZ][eE][dD]; -MERGE: [mM][eE][rR][gG][eE]; -MISSING: [mM][iI][sS][sS][iI][nN][gG]; -NAMESPACE: [nN][aA][mM][eE][sS][pP][aA][cC][eE]; -NEST: [nN][eE][sS][tT]; -NL: [nN][lL]; -NO: [nN][oO]; -NOT: [nN][oO][tT]; -NTH_VALUE: [nN][tT][hH][_][vV][aA][lL][uU][eE]; -NULL: [nN][uU][lL][lL]; -NULLS: [nN][uU][lL][lL][sS]; -NUMBER: [nN][uN][mM][bB][eE][rR]; -OBJECT: [oO][bB][jJ][eE][cC][tT]; -OFFSET: [oO][fF][fF][sS][eE][tT]; -ON: [oO][nN]; -OPTION: [oO][pP][tT][iI][oO][nN]; -OPTIONS: [oO][pP][tT][iI][oO][nN][sS]; -OR: [oO][rR]; -ORDER: [oO][rR][dD][eE][rR]; -OTHERS: [oO][tT][hH][eE][rR][sS]; -OUTER: [oO][uU][tT][eE][rR]; -OVER: [oO][vV][eE][rR]; -PARSE: [pP][aA][rR][sS][eE]; -PARTITION: [pP][aA][rR][tT][iI][tT][iI][oO][nN]; -PASSWORD: [pP][aA][sS][sS][wW][oO][rR][dD]; -PATH: [pP][aA][tT][hH]; -POOL: [pP][oO][oO][lL]; -PRECEDING: [pP][rR][eE][cC][eE][dD][iI][nN][gG]; -PREPARE: [pP][rR][eE][pP][aA][rR][eE]; -PRIMARY: [pP][rR][iI][mM][aA][rR][yY]; -PRIVATE: [pP][rR][iI][vV][aA][tT][eE]; -PRIVILEGE: [pP][rR][iI][vV][iI][lL][eE][gG][eE]; -PROCEDURE: [pP][rR][oO][cC][eE][dD][uU][rR][eE]; -PROBE: [pP][rR][oO][bB][eE]; -PUBLIC: [pP][uU][bB][lL][iI][cC]; -RANGE: [rR][aA][nN][gG][eE]; -RAW: [rR][aA][wW]; -READ: [rR][eE][aA][dD]; -REALM: [rR][eE][aA][lL][mM]; -REDUCE: [rR][eE][dD][uU][cC][eE]; -RENAME: [rR][eE][nN][aA][mM][eE]; -REPLACE: [rR][eE][pP][lL][aA][cC][eE]; -RESPECT: [rR][eE][sS][pP][eE][cC][tT]; -RETURN: [rR][eE][tT][uU][rR][nN]; -RETURNING: [rR][eE][tT][uU][rR][nN][iI][nN][gG]; -REVOKE: [rR][eE][vV][oO][kK][eE]; -RIGHT: [rR][iI][gG][hH][tT]; -ROLE: [rR][oO][lL][eE]; -ROLLBACK: [rR][oO][lL][lL][bB][aA][cC][kK]; -ROW: [rR][oO][wW]; -ROWS: [rR][oO][wW][sS]; -SATISFIES: [sS][aA][tT][iI][sS][fF][iI][eE][sS]; -SAVEPOINT: [sS][aA][vV][eE][pP][oO][iI][nN][tT]; -SCHEMA: [sS][cC][hH][eE][mM][aA]; -SCOPE: [sS][cC][oO][pP][eE]; -SELECT: [sS][eE][lL][eE][cC][tT]; -SELF: [sS][eE][lL][fF]; -SET: [sS][eE][tT]; -SHOW: [sS][hH][oO][wW]; -SOME: [sS][oO][mM][eE]; -START: [sS][tT][aA][rR][tT]; -STATISTICS: [sS][tT][aA][tT][iI][sS][tT][iI][cC][sS]; -STRING: [sS][tT][rR][iI][nN][gG]; -SYSTEM: [sS][yY][sS][tT][eE][mM]; -THEN: [tT][hH][eE][nN]; -TIES: [tT][iI][eE][sS]; -TO: [tT][oO]; -TRAN: [tT][rR][aA][nN]; -TRANSACTION: [tT][rR][aA][nN][sS][aA][cC][tT][iI][oO][nN]; -TRIGGER: [tT][rR][iI][gG][gG][eE][rR]; -TRUE: [tT][rR][uU][eE]; -TRUNCATE: [tT][rR][uU][nN][cC][aA][tT][eE]; -UNBOUNDED: [uU][nN][bB][oO][uU][nN][dD][eE][dD]; -UNDER: [uU][nN][dD][eE][rR]; -UNION: [uU][nN][iI][oO][nN]; -UNIQUE: [uU][nN][iI][qQ][uU][eE]; -UNKNOWN: [uU][nN][kK][nN][oO][wW][nN]; -UNNEST: [uU][nN][nN][eE][sS][tT]; -UNSET: [uU][nN][sS][eE][tT]; -UPDATE: [uU][pP][dD][aA][tT][eE]; -UPSERT: [uU][pP][sS][eE][rR][tT]; -USE: [uU][sS][eE]; -USER: [uU][sS][eE][rR]; -USING: [uU][sS][iI][nN][gG]; -VALIDATE: [vV][aA][lL][iI][dD][aA][tT][eE]; -VALUE: [vV][aA][lL][uU][eE]; -VALUED: [vV][aA][lL][uU][eE][dD]; -VALUES: [vV][aA][lL][uU][eE][sS]; -VIA: [vV][iI][aA]; -VIEW: [vV][iI][eE][wW]; -WHEN: [wW][hH][eE][nN]; -WHERE: [wW][hH][eE][rR][eE]; -WHILE: [wW][hH][iI][lL][eE]; -WINDOW: [wW][iI][nN][dD][oO][wW]; -WITH: [wW][iI][tT][hH]; -WITHIN: [wW][iI][tT][hH][iI][nN]; -WORK: [wW][oO][rR][kK]; -XOR: [xX][oO][rR]; - -fragment IdentChar: '``' | ~[`]; -fragment IdentFirstChar: [a-zA-Z_]; -fragment IdentLaterChar: [a-zA-Z0-9_]; - -IDENT_ICASE: '`' IdentChar+ '`i'; -IDENT: '`' IdentChar+ '`' | IdentFirstChar IdentLaterChar*; -NAMED_PARAM: '$' IdentFirstChar IdentLaterChar*; -POSITIONAL_PARAM: '$' [1-9] [0-9]*; -NEXT_PARAM: '?'; -statements:input input* -; - -input: stmt_body opt_trailer - | expr_input -; - -opt_trailer: - | opt_trailer SEMI -; -stmt_body: advise - | explain - | prepare - | execute - | stmt -; -stmt: select_stmt - | dml_stmt - | ddl_stmt - | infer - | update_statistics - | role_stmt - | function_stmt - | transaction_stmt -; -advise: ADVISE opt_index stmt -; -opt_index: - | INDEX -; -explain: EXPLAIN stmt -; -prepare: PREPARE opt_force opt_name stmt -; -opt_force: - | FORCE -; -opt_name: - | IDENT from_or_as - | STR from_or_as -; -from_or_as: FROM - | AS -; -execute: EXECUTE expr execute_using -; -execute_using: - | USING construction_expr -; -infer: INFER opt_keyspace_collection simple_keyspace_ref opt_infer_using opt_infer_ustat_with -; -opt_keyspace_collection: - | KEYSPACE - | COLLECTION -; -opt_infer_using: -; -opt_infer_ustat_with: - | infer_ustat_with -; -infer_ustat_with: WITH expr -; -select_stmt: fullselect -; -dml_stmt: insert - | upsert - | delete_ - | update - | merge -; -ddl_stmt: index_stmt - | scope_stmt - | collection_stmt -; -role_stmt: grant_role - | revoke_role -; -index_stmt: create_index - | create_primary_index - | drop_index - | alter_index - | build_index -; -scope_stmt: create_scope - | drop_scope -; -collection_stmt: create_collection - | drop_collection - | flush_collection -; -function_stmt: create_function - | drop_function - | execute_function -; -transaction_stmt: start_transaction - | commit_transaction - | rollback_transaction - | savepoint - | set_transaction_isolation -; -fullselect: select_terms opt_order_by - | select_terms opt_order_by limit opt_offset - | select_terms opt_order_by offset opt_limit -; -select_terms: subselect - | select_terms UNION select_term - | select_terms UNION ALL select_term - | select_terms INTERSECT select_term - | select_terms INTERSECT ALL select_term - | select_terms EXCEPT select_term - | select_terms EXCEPT ALL select_term - | subquery_expr UNION select_term - | subquery_expr UNION ALL select_term - | subquery_expr INTERSECT select_term - | subquery_expr INTERSECT ALL select_term - | subquery_expr EXCEPT select_term - | subquery_expr EXCEPT ALL select_term -; -select_term: subselect - | subquery_expr -; -subselect: from_select - | select_from -; -from_select: opt_with from opt_let opt_where opt_group opt_window_clause select_clause -; -select_from: opt_with select_clause opt_from opt_let opt_where opt_group opt_window_clause -; -select_clause: SELECT projection -; -projection: opt_quantifier projects - | opt_quantifier raw expr opt_as_alias -; -opt_quantifier: - | ALL - | DISTINCT -; -raw: RAW - | ELEMENT - | VALUE -; -projects: project - | projects COMMA project -; -project: STAR - | expr DOT STAR - | expr opt_as_alias -; -opt_as_alias: - | as_alias -; -as_alias: alias - | AS alias -; -alias: IDENT -; -opt_from: - | from -; -from: FROM from_term -; -from_term: simple_from_term - | from_term opt_join_type JOIN simple_from_term on_keys - | from_term opt_join_type JOIN simple_from_term on_key FOR IDENT - | from_term opt_join_type NEST simple_from_term on_keys - | from_term opt_join_type NEST simple_from_term on_key FOR IDENT - | from_term opt_join_type unnest expr opt_as_alias - | from_term opt_join_type JOIN simple_from_term ON expr - | from_term opt_join_type NEST simple_from_term ON expr - | simple_from_term RIGHT opt_outer JOIN simple_from_term ON expr -; -simple_from_term: keyspace_term - | expr opt_as_alias opt_use -; -unnest: UNNEST - | FLATTEN -; -keyspace_term: keyspace_path opt_as_alias opt_use -; -keyspace_path: namespace_term keyspace_name - | namespace_term bucket_name DOT scope_name DOT keyspace_name -; -namespace_term: namespace_name - | SYSTEM COLON -; -namespace_name: IDENT COLON -; -bucket_name: IDENT -; -scope_name: IDENT -; -keyspace_name: IDENT -; -opt_use: - | USE use_options -; -use_options: use_keys - | use_index - | join_hint - | use_index join_hint - | join_hint use_index - | use_keys join_hint - | join_hint use_keys -; -use_keys: opt_primary KEYS expr -; -use_index: INDEX LPAREN index_refs RPAREN -; -join_hint: HASH LPAREN use_hash_option RPAREN - | NL -; -opt_primary: - | PRIMARY -; -index_refs: index_ref - | index_refs COMMA index_ref -; -index_ref: opt_index_name opt_index_using -; -use_hash_option: BUILD - | PROBE -; -opt_use_del_upd: opt_use -; -opt_join_type: - | INNER - | LEFT opt_outer -; -opt_outer: - | OUTER -; -on_keys: ON opt_primary KEYS expr -; -on_key: ON opt_primary KEY expr -; -opt_let: - | let_ -; -let_: LET_ bindings -; -bindings: binding - | bindings COMMA binding -; -binding: alias EQ expr -; -opt_with: - | WITH with_list -; -with_list: with_term - | with_list COMMA with_term -; -with_term: alias AS paren_expr -; -opt_where: - | where -; -where: WHERE expr -; -opt_group: - | group -; -group: GROUP BY group_terms opt_letting opt_having - | letting -; -group_terms: group_term - | group_terms COMMA group_term -; -group_term: expr opt_as_alias -; -opt_letting: - | letting -; -letting: LETTING bindings -; -opt_having: - | having -; -having: HAVING expr -; -opt_order_by: - | order_by -; -order_by: ORDER BY sort_terms -; -sort_terms: sort_term - | sort_terms COMMA sort_term -; -sort_term: expr opt_dir opt_order_nulls -; -opt_dir: - | dir -; -dir: ASC - | DESC -; -opt_order_nulls: - | nulls first_last -; -first_last: FIRST - | LAST -; -nulls: NULLS -; -opt_limit: - | limit -; -limit: LIMIT expr -; -opt_offset: - | offset -; -offset: OFFSET expr -; -insert: INSERT INTO keyspace_ref opt_values_header values_list opt_returning - | INSERT INTO keyspace_ref LPAREN key_val_options_expr_header RPAREN fullselect opt_returning -; -simple_keyspace_ref: keyspace_name opt_as_alias - | keyspace_path opt_as_alias - | bucket_name DOT scope_name DOT keyspace_name opt_as_alias -; -keyspace_ref: simple_keyspace_ref - | param_expr opt_as_alias -; -opt_values_header: - | LPAREN opt_primary KEY COMMA VALUE RPAREN - | LPAREN opt_primary KEY COMMA VALUE COMMA OPTIONS RPAREN -; -key: opt_primary KEY -; -values_list: values - | values_list COMMA next_values -; -values: VALUES key_val_expr - | VALUES key_val_options_expr -; -next_values: values - | key_val_expr - | key_val_options_expr -; -key_val_expr: LPAREN expr COMMA expr RPAREN -; -key_val_options_expr: LPAREN expr COMMA expr COMMA expr RPAREN -; -opt_returning: - | returning -; -returning: RETURNING returns_ -; -returns_: projects - | raw expr -; -key_expr_header: key expr -; -value_expr_header: VALUE expr -; -options_expr_header: OPTIONS expr -; -key_val_options_expr_header: key_expr_header - | key_expr_header COMMA value_expr_header - | key_expr_header COMMA value_expr_header COMMA options_expr_header - | key_expr_header COMMA options_expr_header -; -upsert: UPSERT INTO keyspace_ref opt_values_header values_list opt_returning - | UPSERT INTO keyspace_ref LPAREN key_val_options_expr_header RPAREN fullselect opt_returning -; -delete_: DELETE_ FROM keyspace_ref opt_use_del_upd opt_where opt_limit opt_returning -; -update: UPDATE keyspace_ref opt_use_del_upd set unset opt_where opt_limit opt_returning - | UPDATE keyspace_ref opt_use_del_upd set opt_where opt_limit opt_returning - | UPDATE keyspace_ref opt_use_del_upd unset opt_where opt_limit opt_returning -; -set: SET set_terms -; -set_terms: set_term - | set_terms COMMA set_term -; -set_term: path EQ expr opt_update_for - | function_meta_expr DOT path EQ expr -; -function_meta_expr: function_name LPAREN opt_exprs RPAREN -; -opt_update_for: - | update_for -; -update_for: update_dimensions opt_when END -; -update_dimensions: FOR update_dimension - | update_dimensions FOR update_dimension -; -update_dimension: update_binding - | update_dimension COMMA update_binding -; -update_binding: variable IN expr - | variable WITHIN expr - | variable COLON variable IN expr - | variable COLON variable WITHIN expr -; -variable: IDENT -; -opt_when: - | WHEN expr -; -unset: UNSET unset_terms -; -unset_terms: unset_term - | unset_terms COMMA unset_term -; -unset_term: path opt_update_for -; -merge: MERGE INTO simple_keyspace_ref opt_use_merge USING simple_from_term ON opt_key expr merge_actions opt_limit opt_returning -; -opt_use_merge: opt_use -; -opt_key: - | key -; -merge_actions: - | WHEN MATCHED THEN UPDATE merge_update opt_merge_delete_insert - | WHEN MATCHED THEN DELETE_ merge_delete opt_merge_insert - | WHEN NOT MATCHED THEN INSERT merge_insert -; -opt_merge_delete_insert: - | WHEN MATCHED THEN DELETE_ merge_delete opt_merge_insert - | WHEN NOT MATCHED THEN INSERT merge_insert -; -opt_merge_insert: - | WHEN NOT MATCHED THEN INSERT merge_insert -; -merge_update: set opt_where - | set unset opt_where - | unset opt_where -; -merge_delete: opt_where -; -merge_insert: expr opt_where - | key_val_expr opt_where - | key_val_options_expr opt_where - | LPAREN key_val_options_expr_header RPAREN opt_where -; -grant_role: GRANT role_list TO user_list - | GRANT role_list ON keyspace_scope_list TO user_list -; -role_list: role_name - | role_list COMMA role_name -; -role_name: IDENT - | SELECT - | INSERT - | UPDATE - | DELETE_ -; -keyspace_scope_list: keyspace_scope - | keyspace_scope_list COMMA keyspace_scope -; -keyspace_scope: keyspace_name - | namespace_name keyspace_name - | namespace_name bucket_name DOT scope_name DOT keyspace_name - | bucket_name DOT scope_name DOT keyspace_name - | namespace_name bucket_name DOT scope_name - | bucket_name DOT scope_name -; -user_list: user - | user_list COMMA user -; -user: IDENT - | IDENT COLON IDENT -; -revoke_role: REVOKE role_list FROM user_list - | REVOKE role_list ON keyspace_scope_list FROM user_list -; -create_scope: CREATE SCOPE named_scope_ref if_not_exists? -; -drop_scope: DROP SCOPE named_scope_ref if_exists? -; -create_collection: CREATE COLLECTION named_keyspace_ref if_not_exists? -; -drop_collection: DROP COLLECTION named_keyspace_ref if_exists? -; -flush_collection: flush_or_truncate COLLECTION named_keyspace_ref -; -flush_or_truncate: FLUSH - | TRUNCATE -; -create_index: CREATE INDEX index_name ON named_keyspace_ref LPAREN index_terms RPAREN index_partition index_where opt_index_using opt_index_with if_not_exists? -; - -create_primary_index: CREATE PRIMARY INDEX opt_primary_name ON named_keyspace_ref index_partition opt_index_using opt_index_with if_not_exists? -; -opt_primary_name: - | index_name -; -index_name: IDENT -; -opt_index_name: - | index_name -; -named_keyspace_ref: simple_named_keyspace_ref - | namespace_name bucket_name - | bucket_name DOT scope_name DOT keyspace_name -; -simple_named_keyspace_ref: keyspace_name - | namespace_name bucket_name DOT scope_name DOT keyspace_name -; -named_scope_ref: namespace_name bucket_name DOT scope_name - | bucket_name DOT scope_name -; -index_partition: - | PARTITION BY HASH LPAREN exprs RPAREN -; -opt_index_using: - | index_using -; -index_using: USING VIEW - | USING GSI - | USING FTS -; -opt_index_with: - | index_with -; -index_with: WITH expr -; -index_terms: index_term - | index_terms COMMA index_term -; -index_term: index_term_expr opt_ikattr -; -index_term_expr: index_expr - | all index_expr - | all DISTINCT index_expr - | DISTINCT index_expr -; -index_expr: expr -; -all: ALL - | EACH -; -index_where: - | WHERE index_expr -; -opt_ikattr: - | ikattr - | ikattr ikattr -; -ikattr: ASC - | DESC - | MISSING -; -drop_index: DROP PRIMARY INDEX ON named_keyspace_ref opt_index_using - | DROP INDEX simple_named_keyspace_ref DOT index_name opt_index_using - | DROP INDEX index_name ON named_keyspace_ref opt_index_using -; -alter_index: ALTER INDEX simple_named_keyspace_ref DOT index_name opt_index_using index_with - | ALTER INDEX index_name ON named_keyspace_ref opt_index_using index_with -; -build_index: BUILD INDEX ON named_keyspace_ref LPAREN exprs RPAREN opt_index_using -; -create_function: CREATE opt_replace FUNCTION func_name LPAREN parm_list RPAREN func_body -; -opt_replace: - | OR REPLACE -; -func_name: short_func_name - | long_func_name -; -short_func_name: keyspace_name -; -long_func_name: namespace_term keyspace_name - | namespace_term bucket_name DOT scope_name DOT keyspace_name -; -parm_list: - | DOT DOT DOT - | parameter_terms -; -parameter_terms: IDENT - | parameter_terms COMMA IDENT -; -func_body: LBRACE expr RBRACE - | LANGUAGE INLINE AS expr - | LANGUAGE GOLANG AS STR AT STR - | LANGUAGE JAVASCRIPT AS STR AT STR -; -drop_function: DROP FUNCTION func_name -; -execute_function: EXECUTE FUNCTION func_name LPAREN opt_exprs RPAREN -; -update_statistics: UPDATE STATISTICS opt_for named_keyspace_ref LPAREN update_stat_terms RPAREN opt_infer_ustat_with - | UPDATE STATISTICS opt_for named_keyspace_ref DELETE_ LPAREN update_stat_terms RPAREN - | UPDATE STATISTICS opt_for named_keyspace_ref DELETE_ ALL - | UPDATE STATISTICS opt_for named_keyspace_ref INDEX LPAREN exprs RPAREN opt_index_using opt_infer_ustat_with - | UPDATE STATISTICS opt_for named_keyspace_ref INDEX ALL opt_index_using opt_infer_ustat_with - | UPDATE STATISTICS FOR INDEX simple_named_keyspace_ref DOT index_name opt_index_using opt_infer_ustat_with - | UPDATE STATISTICS FOR INDEX index_name ON named_keyspace_ref opt_index_using opt_infer_ustat_with - | ANALYZE opt_keyspace_collection named_keyspace_ref LPAREN update_stat_terms RPAREN opt_infer_ustat_with - | ANALYZE opt_keyspace_collection named_keyspace_ref DELETE_ STATISTICS LPAREN update_stat_terms RPAREN - | ANALYZE opt_keyspace_collection named_keyspace_ref DELETE_ STATISTICS - | ANALYZE opt_keyspace_collection named_keyspace_ref INDEX LPAREN exprs RPAREN opt_index_using opt_infer_ustat_with - | ANALYZE opt_keyspace_collection named_keyspace_ref INDEX ALL opt_index_using opt_infer_ustat_with - | ANALYZE INDEX simple_named_keyspace_ref DOT index_name opt_index_using opt_infer_ustat_with - | ANALYZE INDEX index_name ON named_keyspace_ref opt_index_using opt_infer_ustat_with -; -opt_for: - | FOR -; -update_stat_terms: update_stat_term - | update_stat_terms COMMA update_stat_term -; -update_stat_term: index_term_expr -; -path: IDENT - | path DOT IDENT - | path DOT IDENT_ICASE - | path DOT LBRACKET expr RBRACKET - | path DOT LBRACKET expr RBRACKET_ICASE - | path LBRACKET expr RBRACKET -; -expr: c_expr - | expr DOT IDENT - | expr DOT IDENT_ICASE - | expr DOT LBRACKET expr RBRACKET - | expr DOT LBRACKET expr RBRACKET_ICASE - | expr LBRACKET expr RBRACKET - | expr LBRACKET expr COLON RBRACKET - | expr LBRACKET expr COLON expr RBRACKET - | expr LBRACKET STAR RBRACKET - | expr PLUS expr - | expr MINUS expr - | expr STAR expr - | expr DIV expr - | expr MOD expr - | expr CONCAT expr - | expr AND expr - | expr OR expr - | NOT expr - | expr EQ expr - | expr DEQ expr - | expr NE expr - | expr LT expr - | expr GT expr - | expr LE expr - | expr GE expr - | expr BETWEEN b_expr AND b_expr - | expr NOT BETWEEN b_expr AND b_expr - | expr LIKE expr - | expr NOT LIKE expr - | expr IN expr - | expr NOT IN expr - | expr WITHIN expr - | expr NOT WITHIN expr - | expr IS NULL - | expr IS NOT NULL - | expr IS MISSING - | expr IS NOT MISSING - | expr IS valued - | expr IS NOT valued - | EXISTS expr -; -valued: VALUED - | KNOWN -; -c_expr: literal - | construction_expr - | IDENT - | IDENT_ICASE - | SELF - | param_expr - | function_expr - | MINUS - | case_expr - | collection_expr - | paren_expr - | COVER LPAREN expr RPAREN -; -b_expr: c_expr - | b_expr DOT IDENT - | b_expr DOT IDENT_ICASE - | b_expr DOT LBRACKET expr RBRACKET - | b_expr DOT LBRACKET expr RBRACKET_ICASE - | b_expr LBRACKET expr RBRACKET - | b_expr LBRACKET expr COLON RBRACKET - | b_expr LBRACKET expr COLON expr RBRACKET - | b_expr LBRACKET STAR RBRACKET - | b_expr PLUS b_expr - | b_expr MINUS b_expr - | b_expr STAR b_expr - | b_expr DIV b_expr - | b_expr MOD b_expr - | b_expr CONCAT b_expr -; -literal: NULL - | MISSING - | FALSE - | TRUE - | NUM - | INT - | STR -; -construction_expr: object - | array -; -object: LBRACE opt_members RBRACE -; -opt_members: - | members -; -members: member - | members COMMA member -; -member: expr COLON expr - | expr -; -array: LBRACKET opt_exprs RBRACKET -; -opt_exprs: - | exprs -; -exprs: expr - | exprs COMMA expr -; -param_expr: NAMED_PARAM - | POSITIONAL_PARAM - | NEXT_PARAM -; -case_expr: CASE simple_or_searched_case END -; -simple_or_searched_case: simple_case - | searched_case -; -simple_case: expr when_thens opt_else -; -when_thens: WHEN expr THEN expr - | when_thens WHEN expr THEN expr -; -searched_case: when_thens opt_else -; -opt_else: - | ELSE expr -; -function_expr: NTH_VALUE LPAREN exprs RPAREN opt_from_first_last opt_nulls_treatment window_function_details - | function_name LPAREN opt_exprs RPAREN opt_filter opt_nulls_treatment opt_window_function - | function_name LPAREN agg_quantifier expr RPAREN opt_filter opt_window_function - | function_name LPAREN STAR RPAREN opt_filter opt_window_function - | long_func_name LPAREN opt_exprs RPAREN -; -function_name: IDENT - | REPLACE -; -collection_expr: collection_cond - | collection_xform -; -collection_cond: ANY coll_bindings satisfies END - | SOME coll_bindings satisfies END - | EVERY coll_bindings satisfies END - | ANY AND EVERY coll_bindings satisfies END - | SOME AND EVERY coll_bindings satisfies END -; -coll_bindings: coll_binding - | coll_bindings COMMA coll_binding -; -coll_binding: variable IN expr - | variable WITHIN expr - | variable COLON variable IN expr - | variable COLON variable WITHIN expr -; -satisfies: SATISFIES expr -; -collection_xform: ARRAY expr FOR coll_bindings opt_when END - | FIRST expr FOR coll_bindings opt_when END - | OBJECT expr COLON expr FOR coll_bindings opt_when END -; -paren_expr: LPAREN expr RPAREN - | LPAREN all_expr RPAREN - | subquery_expr -; -subquery_expr: CORRELATED LPAREN fullselect RPAREN - | LPAREN fullselect RPAREN -; -expr_input: expr - | all_expr -; -all_expr: all expr - | all DISTINCT expr - | DISTINCT expr -; -opt_window_clause: - | WINDOW window_list -; -window_list: window_term - | window_list COMMA window_term -; -window_term: IDENT AS window_specification -; -window_specification: LPAREN opt_window_name opt_window_partition opt_order_by opt_window_frame RPAREN -; -opt_window_name: - | IDENT -; -opt_window_partition: - | PARTITION BY exprs -; -opt_window_frame: - | window_frame_modifier window_frame_extents opt_window_frame_exclusion -; -window_frame_modifier: ROWS - | RANGE - | GROUPS -; -opt_window_frame_exclusion: - | EXCLUDE NO OTHERS - | EXCLUDE CURRENT ROW - | EXCLUDE TIES - | EXCLUDE GROUP -; -window_frame_extents: window_frame_extent - | BETWEEN window_frame_extent AND window_frame_extent -; -window_frame_extent: UNBOUNDED PRECEDING - | UNBOUNDED FOLLOWING - | CURRENT ROW - | expr window_frame_valexpr_modifier -; -window_frame_valexpr_modifier: PRECEDING - | FOLLOWING -; -opt_nulls_treatment: - | nulls_treatment -; -nulls_treatment: RESPECT NULLS - | IGNORE NULLS -; -opt_from_first_last: - | FROM first_last -; -agg_quantifier: ALL - | DISTINCT -; -opt_filter: - | FILTER LPAREN where RPAREN -; -opt_window_function: - | window_function_details -; -window_function_details: OVER IDENT - | OVER window_specification -; -start_transaction: start_or_begin transaction opt_isolation_level -; -commit_transaction: COMMIT opt_transaction -; -rollback_transaction: ROLLBACK opt_transaction opt_savepoint -; -start_or_begin: START - | BEGIN -; -opt_transaction: - | transaction -; -transaction: TRAN - | TRANSACTION - | WORK -; -opt_savepoint: - | TO SAVEPOINT savepoint_name -; -savepoint_name: IDENT -; -opt_isolation_level: - | isolation_level -; -isolation_level: ISOLATION LEVEL isolation_val -; -isolation_val: READ COMMITTED -; -set_transaction_isolation: SET TRANSACTION isolation_level -; -savepoint: SAVEPOINT savepoint_name -; - -if_exists: IF EXISTS -; - -if_not_exists: IF NOT EXISTS -; - diff --git a/reverse_engineering/antlr/n1qlToCollectionVisitor.js b/reverse_engineering/antlr/n1qlToCollectionVisitor.js deleted file mode 100644 index 25ffb5a..0000000 --- a/reverse_engineering/antlr/n1qlToCollectionVisitor.js +++ /dev/null @@ -1,285 +0,0 @@ -const n1qlVisitor = require('./parser/n1qlVisitor'); -const { DEFAULT_NAME } = require('../../shared/constants'); - -class Visitor extends n1qlVisitor { - visitCreate_index(ctx) { - const indxName = this.visit(ctx.index_name()); - const indexKeys = this.visit(ctx.index_terms()); - const { bucketName, scopeName, collectionName } = this.visit(ctx.named_keyspace_ref()); - const usingGSI = this.visitIfExists(ctx, 'opt_index_using', false); - const partitionByHashExpr = this.visitIfExists(ctx, 'index_partition', ''); - const whereClause = this.visitIfExists(ctx, 'index_where', ''); - const withOptions = this.visitIfExists(ctx, 'opt_index_with', {}); - if (isMetaIndex(indexKeys)) { - return { - index: { - indxName, - indxType: 'Metadata', - }, - bucketName, - scopeName, - collectionName, - indexKeys: { - indexKeysPropertyKeyword: 'metadataExpr', - indexKeysIntervals: indexKeys, - }, - }; - } else if (isArrayIndex(indexKeys)) { - return { - index: { - indxName, - indxType: 'Array', - usingGSI, - whereClause, - withOptions, - }, - bucketName, - scopeName, - collectionName, - indexKeys: { - indexKeysPropertyKeyword: 'arrayExpr', - indexKeysIntervals: indexKeys, - }, - }; - } else { - return { - index: { - indxName, - indxType: 'Secondary', - usingGSI, - whereClause, - withOptions, - ...(partitionByHashExpr && { partitionByHash: 'Expression', partitionByHashExpr }), - }, - bucketName, - scopeName, - collectionName, - indexKeys: { - indexKeysPropertyKeyword: 'indxKey', - indexKeysIntervals: indexKeys, - }, - }; - } - } - visitCreate_primary_index(ctx) { - const indxName = this.visit(ctx.opt_primary_name()); - const usingGSI = this.visitIfExists(ctx, 'opt_index_using', false); - const { bucketName, scopeName, collectionName } = this.visit(ctx.named_keyspace_ref()); - const withOptions = this.visitIfExists(ctx, 'opt_index_with', {}); - return { - index: { - indxName, - indxType: 'Primary', - partitionByHash: '', - usingGSI, - withOptions, - }, - bucketName, - scopeName, - collectionName, - }; - } - - visitIndex_partition(ctx) { - return this.visitIfExists(ctx, 'exprs', []).join(', '); - } - - visitIndex_terms(ctx) { - const singleTerm = this.visit(ctx.index_term()); - const otherTerms = this.visitIfExists(ctx, 'index_terms', null); - if (otherTerms) { - return [...otherTerms, singleTerm]; - } - return [singleTerm]; - } - - visitIndex_term(ctx) { - const indexOrder = this.visit(ctx.opt_ikattr()); - const expr = this.visit(ctx.index_term_expr()); - - return { - name: expr, - type: indexOrder === 'DESC' ? 'descending' : 'ascending', - select: { - start: ctx.index_term_expr().start.start, - stop: ctx.index_term_expr().stop.stop + 1, - }, - }; - } - - visitIndex_term_expr(ctx) { - const distinct = getName(ctx.DISTINCT()); - const all = getName(ctx.all()); - return all + distinct + this.visitIfExists(ctx, 'index_expr', ''); - } - - visitOpt_ikattr(ctx) { - return this.visit(ctx.ikattr())[0]; - } - visitIkattr(ctx) { - return ctx.getText(); - } - - visitOpt_index_with(ctx) { - return this.visit(ctx.index_with()); - } - - visitIndex_with(ctx) { - const expression = this.visit(ctx.expr()); - const withOptions = JSON.parse(expression); - if (!withOptions.nodes) { - return withOptions; - } - const mappedNodes = withOptions.nodes.map(node => ({ nodeName: node })); - return { ...withOptions, nodes: mappedNodes }; - } - - visitIndex_where(ctx) { - return this.visit(ctx.index_expr()); - } - - visitIndex_expr(ctx) { - return getName(ctx); - } - - visitOpt_primary_name(ctx) { - return getName(ctx); - } - - visitIndex_name(ctx) { - return getName(ctx); - } - - visitNamed_keyspace_ref(ctx) { - const defaultBucketName = this.visitIfExists(ctx, 'simple_named_keyspace_ref', ''); - const bucketName = this.visitIfExists(ctx, 'bucket_name', ''); - const scopeName = this.visitIfExists(ctx, 'scope_name', DEFAULT_NAME); - const collectionName = this.visitIfExists(ctx, 'keyspace_name', DEFAULT_NAME); - - return { - bucketName: defaultBucketName || bucketName, - scopeName, - collectionName, - }; - } - - visitExpr(ctx) { - return getName(ctx); - } - - visitSimple_named_keyspace_ref(ctx) { - return getName(ctx); - } - - visitKeyspace_name(ctx) { - return getName(ctx); - } - - visitOpt_index_using(ctx) { - const usingStatement = ctx.getText(); - if (!usingStatement) { - return false; - } - return usingStatement.trim().toUpperCase() === 'USINGGSI'; - } - - visitStatements(ctx) { - return this.visit(ctx.input()); - } - - visitInput(ctx) { - return this.visit(ctx.stmt_body()); - } - - visitStmt_body(ctx) { - return this.visit(ctx.stmt()); - } - - visitStmt(ctx) { - return this.visitIfExists(ctx, 'ddl_stmt', []); - } - - visitDdl_stmt(ctx) { - const scopes = this.visitIfExists(ctx, 'scope_stmt', []); - const collections = this.visitIfExists(ctx, 'collection_stmt', []); - const indexes = this.visitIfExists(ctx, 'index_stmt', []); - - return { - scopes, - collections, - indexes, - }; - } - - visitIfExists(ctx, funcName, defaultValue) { - try { - return this.visit(ctx[funcName]()); - } catch (e) { - return defaultValue; - } - } - - visitCreate_scope(ctx) { - const { bucketName, scopeName } = this.visit(ctx.named_scope_ref()); - const ifNotExists = this.visitIfExists(ctx, 'if_not_exists', false); - - return { - bucketName, - scopeName, - ifNotExists, - }; - } - - visitCreate_collection(ctx) { - const { bucketName, scopeName, collectionName } = this.visit(ctx.named_keyspace_ref()); - const ifNotExists = this.visitIfExists(ctx, 'if_not_exists', false); - - return { - bucketName, - scopeName, - collectionName, - ifNotExists, - }; - } - - visitNamed_scope_ref(ctx) { - const bucketName = this.visit(ctx.bucket_name()); - const scopeName = this.visit(ctx.scope_name()); - - return { - bucketName, - scopeName, - }; - } - - visitBucket_name(ctx) { - return getName(ctx); - } - - visitScope_name(ctx) { - return getName(ctx); - } - - visitIf_not_exists(ctx) { - return true; - } -} - -const isMetaIndex = indexKeys => { - return indexKeys.map(key => key.name).some(key => /^\(?META\(\)/i.test(key)); -}; - -const isArrayIndex = indexKeys => { - return indexKeys.map(key => key.name).some(key => /^\(?(ALLARRAY|DISTINCTARRAY|DISTINCT|ARRAY)/i.test(key)); -}; - -const getName = context => { - if (!context) { - return ''; - } - return removeQuotes(context.getText()); -}; - -const removeQuotes = string => string.replace(/^(['`"])(.*)\1$/, '$2'); - -module.exports = Visitor; diff --git a/reverse_engineering/antlr/parser/n1ql.interp b/reverse_engineering/antlr/parser/n1ql.interp deleted file mode 100644 index 1118838..0000000 --- a/reverse_engineering/antlr/parser/n1ql.interp +++ /dev/null @@ -1,752 +0,0 @@ -token literal names: -null -null -null -null -null -null -null -'.' -'+' -null -'*' -'/' -'%' -'==' -'=' -null -'<' -'<=' -'>' -'>=' -'||' -'(' -')' -'{' -'}' -',' -':' -'[' -']' -']i' -';' -'!' -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -'?' - -token symbolic names: -null -STR -INT -NUM -BLOCK_COMMENT -LINE_COMMENT -WHITESPACE -DOT -PLUS -MINUS -STAR -DIV -MOD -DEQ -EQ -NE -LT -LE -GT -GE -CONCAT -LPAREN -RPAREN -LBRACE -RBRACE -COMMA -COLON -LBRACKET -RBRACKET -RBRACKET_ICASE -SEMI -NOT_A_TOKEN -ADVISE -ALL -ALTER -ANALYZE -AND -ANY -ARRAY -AS -ASC -AT -BEGIN -BETWEEN -BINARY -BOOLEAN -BREAK -BUCKET -BUILD -BY -CALL -CASE -CAST -CLUSTER -COLLATE -COLLECTION -COMMIT -COMMITTED -CONNECT -CONTINUE -CORRELATED -COVER -CREATE -CURRENT -DATABASE -DATASET -DATASTORE -DECLARE -DECREMENT -DELETE_ -DERIVED -DESC -DESCRIBE -DISTINCT -DO -DROP -EACH -ELEMENT -ELSE -END -EVERY -EXCEPT -EXCLUDE -EXECUTE -EXISTS -EXPLAIN -FALSE -FETCH -FILTER -FIRST -FLATTEN -FLUSH -FOLLOWING -FOR -FORCE -FROM -FTS -FUNCTION -GOLANG -GRANT -GROUP -GROUPS -GSI -HASH -HAVING -IF -IGNORE -ILIKE -IN -INCLUDE -INCREMENT -INDEX -INFER -INLINE -INNER -INSERT -INTERSECT -INTO -IS -ISOLATION -JAVASCRIPT -JOIN -KEY -KEYS -KEYSPACE -KNOWN -LANGUAGE -LAST -LEFT -LET_ -LETTING -LEVEL -LIKE -LIMIT -LSM -MAP -MAPPING -MATCHED -MATERIALIZED -MERGE -MISSING -NAMESPACE -NEST -NL -NO -NOT -NTH_VALUE -NULL -NULLS -NUMBER -OBJECT -OFFSET -ON -OPTION -OPTIONS -OR -ORDER -OTHERS -OUTER -OVER -PARSE -PARTITION -PASSWORD -PATH -POOL -PRECEDING -PREPARE -PRIMARY -PRIVATE -PRIVILEGE -PROCEDURE -PROBE -PUBLIC -RANGE -RAW -READ -REALM -REDUCE -RENAME -REPLACE -RESPECT -RETURN -RETURNING -REVOKE -RIGHT -ROLE -ROLLBACK -ROW -ROWS -SATISFIES -SAVEPOINT -SCHEMA -SCOPE -SELECT -SELF -SET -SHOW -SOME -START -STATISTICS -STRING -SYSTEM -THEN -TIES -TO -TRAN -TRANSACTION -TRIGGER -TRUE -TRUNCATE -UNBOUNDED -UNDER -UNION -UNIQUE -UNKNOWN -UNNEST -UNSET -UPDATE -UPSERT -USE -USER -USING -VALIDATE -VALUE -VALUED -VALUES -VIA -VIEW -WHEN -WHERE -WHILE -WINDOW -WITH -WITHIN -WORK -XOR -IDENT_ICASE -IDENT -NAMED_PARAM -POSITIONAL_PARAM -NEXT_PARAM - -rule names: -statements -input -opt_trailer -stmt_body -stmt -advise -opt_index -explain -prepare -opt_force -opt_name -from_or_as -execute -execute_using -infer -opt_keyspace_collection -opt_infer_using -opt_infer_ustat_with -infer_ustat_with -select_stmt -dml_stmt -ddl_stmt -role_stmt -index_stmt -scope_stmt -collection_stmt -function_stmt -transaction_stmt -fullselect -select_terms -select_term -subselect -from_select -select_from -select_clause -projection -opt_quantifier -raw -projects -project -opt_as_alias -as_alias -alias -opt_from -from -from_term -simple_from_term -unnest -keyspace_term -keyspace_path -namespace_term -namespace_name -bucket_name -scope_name -keyspace_name -opt_use -use_options -use_keys -use_index -join_hint -opt_primary -index_refs -index_ref -use_hash_option -opt_use_del_upd -opt_join_type -opt_outer -on_keys -on_key -opt_let -let_ -bindings -binding -opt_with -with_list -with_term -opt_where -where -opt_group -group -group_terms -group_term -opt_letting -letting -opt_having -having -opt_order_by -order_by -sort_terms -sort_term -opt_dir -dir -opt_order_nulls -first_last -nulls -opt_limit -limit -opt_offset -offset -insert -simple_keyspace_ref -keyspace_ref -opt_values_header -key -values_list -values -next_values -key_val_expr -key_val_options_expr -opt_returning -returning -returns_ -key_expr_header -value_expr_header -options_expr_header -key_val_options_expr_header -upsert -delete_ -update -set -set_terms -set_term -function_meta_expr -opt_update_for -update_for -update_dimensions -update_dimension -update_binding -variable -opt_when -unset -unset_terms -unset_term -merge -opt_use_merge -opt_key -merge_actions -opt_merge_delete_insert -opt_merge_insert -merge_update -merge_delete -merge_insert -grant_role -role_list -role_name -keyspace_scope_list -keyspace_scope -user_list -user -revoke_role -create_scope -drop_scope -create_collection -drop_collection -flush_collection -flush_or_truncate -create_index -create_primary_index -opt_primary_name -index_name -opt_index_name -named_keyspace_ref -simple_named_keyspace_ref -named_scope_ref -index_partition -opt_index_using -index_using -opt_index_with -index_with -index_terms -index_term -index_term_expr -index_expr -all -index_where -opt_ikattr -ikattr -drop_index -alter_index -build_index -create_function -opt_replace -func_name -short_func_name -long_func_name -parm_list -parameter_terms -func_body -drop_function -execute_function -update_statistics -opt_for -update_stat_terms -update_stat_term -path -expr -valued -c_expr -b_expr -literal -construction_expr -object -opt_members -members -member -array -opt_exprs -exprs -param_expr -case_expr -simple_or_searched_case -simple_case -when_thens -searched_case -opt_else -function_expr -function_name -collection_expr -collection_cond -coll_bindings -coll_binding -satisfies -collection_xform -paren_expr -subquery_expr -expr_input -all_expr -opt_window_clause -window_list -window_term -window_specification -opt_window_name -opt_window_partition -opt_window_frame -window_frame_modifier -opt_window_frame_exclusion -window_frame_extents -window_frame_extent -window_frame_valexpr_modifier -opt_nulls_treatment -nulls_treatment -opt_from_first_last -agg_quantifier -opt_filter -opt_window_function -window_function_details -start_transaction -commit_transaction -rollback_transaction -start_or_begin -opt_transaction -transaction -opt_savepoint -savepoint_name -opt_isolation_level -isolation_level -isolation_val -set_transaction_isolation -savepoint -if_exists -if_not_exists - - -atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 242, 2789, 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, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, 9, 133, 4, 134, 9, 134, 4, 135, 9, 135, 4, 136, 9, 136, 4, 137, 9, 137, 4, 138, 9, 138, 4, 139, 9, 139, 4, 140, 9, 140, 4, 141, 9, 141, 4, 142, 9, 142, 4, 143, 9, 143, 4, 144, 9, 144, 4, 145, 9, 145, 4, 146, 9, 146, 4, 147, 9, 147, 4, 148, 9, 148, 4, 149, 9, 149, 4, 150, 9, 150, 4, 151, 9, 151, 4, 152, 9, 152, 4, 153, 9, 153, 4, 154, 9, 154, 4, 155, 9, 155, 4, 156, 9, 156, 4, 157, 9, 157, 4, 158, 9, 158, 4, 159, 9, 159, 4, 160, 9, 160, 4, 161, 9, 161, 4, 162, 9, 162, 4, 163, 9, 163, 4, 164, 9, 164, 4, 165, 9, 165, 4, 166, 9, 166, 4, 167, 9, 167, 4, 168, 9, 168, 4, 169, 9, 169, 4, 170, 9, 170, 4, 171, 9, 171, 4, 172, 9, 172, 4, 173, 9, 173, 4, 174, 9, 174, 4, 175, 9, 175, 4, 176, 9, 176, 4, 177, 9, 177, 4, 178, 9, 178, 4, 179, 9, 179, 4, 180, 9, 180, 4, 181, 9, 181, 4, 182, 9, 182, 4, 183, 9, 183, 4, 184, 9, 184, 4, 185, 9, 185, 4, 186, 9, 186, 4, 187, 9, 187, 4, 188, 9, 188, 4, 189, 9, 189, 4, 190, 9, 190, 4, 191, 9, 191, 4, 192, 9, 192, 4, 193, 9, 193, 4, 194, 9, 194, 4, 195, 9, 195, 4, 196, 9, 196, 4, 197, 9, 197, 4, 198, 9, 198, 4, 199, 9, 199, 4, 200, 9, 200, 4, 201, 9, 201, 4, 202, 9, 202, 4, 203, 9, 203, 4, 204, 9, 204, 4, 205, 9, 205, 4, 206, 9, 206, 4, 207, 9, 207, 4, 208, 9, 208, 4, 209, 9, 209, 4, 210, 9, 210, 4, 211, 9, 211, 4, 212, 9, 212, 4, 213, 9, 213, 4, 214, 9, 214, 4, 215, 9, 215, 4, 216, 9, 216, 4, 217, 9, 217, 4, 218, 9, 218, 4, 219, 9, 219, 4, 220, 9, 220, 4, 221, 9, 221, 4, 222, 9, 222, 4, 223, 9, 223, 4, 224, 9, 224, 4, 225, 9, 225, 4, 226, 9, 226, 4, 227, 9, 227, 4, 228, 9, 228, 4, 229, 9, 229, 4, 230, 9, 230, 4, 231, 9, 231, 4, 232, 9, 232, 4, 233, 9, 233, 4, 234, 9, 234, 4, 235, 9, 235, 4, 236, 9, 236, 4, 237, 9, 237, 4, 238, 9, 238, 4, 239, 9, 239, 4, 240, 9, 240, 4, 241, 9, 241, 4, 242, 9, 242, 4, 243, 9, 243, 4, 244, 9, 244, 4, 245, 9, 245, 4, 246, 9, 246, 4, 247, 9, 247, 4, 248, 9, 248, 4, 249, 9, 249, 4, 250, 9, 250, 4, 251, 9, 251, 4, 252, 9, 252, 4, 253, 9, 253, 4, 254, 9, 254, 4, 255, 9, 255, 4, 256, 9, 256, 4, 257, 9, 257, 4, 258, 9, 258, 4, 259, 9, 259, 4, 260, 9, 260, 4, 261, 9, 261, 4, 262, 9, 262, 3, 2, 3, 2, 7, 2, 527, 10, 2, 12, 2, 14, 2, 530, 11, 2, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 536, 10, 3, 3, 4, 3, 4, 3, 4, 7, 4, 541, 10, 4, 12, 4, 14, 4, 544, 11, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 551, 10, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 5, 6, 561, 10, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 5, 8, 569, 10, 8, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 5, 11, 581, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 5, 12, 588, 10, 12, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 5, 15, 599, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 5, 17, 610, 10, 17, 3, 18, 3, 18, 3, 19, 3, 19, 5, 19, 616, 10, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 628, 10, 22, 3, 23, 3, 23, 3, 23, 5, 23, 633, 10, 23, 3, 24, 3, 24, 5, 24, 637, 10, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 5, 25, 644, 10, 25, 3, 26, 3, 26, 5, 26, 648, 10, 26, 3, 27, 3, 27, 3, 27, 5, 27, 653, 10, 27, 3, 28, 3, 28, 3, 28, 5, 28, 658, 10, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 5, 29, 665, 10, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 5, 30, 680, 10, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 5, 31, 711, 10, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 7, 31, 734, 10, 31, 12, 31, 14, 31, 737, 11, 31, 3, 32, 3, 32, 5, 32, 741, 10, 32, 3, 33, 3, 33, 5, 33, 745, 10, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 774, 10, 37, 3, 38, 3, 38, 3, 38, 5, 38, 779, 10, 38, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 7, 40, 789, 10, 40, 12, 40, 14, 40, 792, 11, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 5, 41, 802, 10, 41, 3, 42, 3, 42, 5, 42, 806, 10, 42, 3, 43, 3, 43, 3, 43, 5, 43, 811, 10, 43, 3, 44, 3, 44, 3, 45, 3, 45, 5, 45, 817, 10, 45, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 5, 47, 832, 10, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 7, 47, 882, 10, 47, 12, 47, 14, 47, 885, 11, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 5, 48, 892, 10, 48, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 910, 10, 51, 3, 52, 3, 52, 3, 52, 5, 52, 915, 10, 52, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 55, 3, 55, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 5, 57, 929, 10, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 5, 58, 946, 10, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 5, 61, 963, 10, 61, 3, 62, 3, 62, 5, 62, 967, 10, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 7, 63, 975, 10, 63, 12, 63, 14, 63, 978, 11, 63, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 67, 5, 67, 991, 10, 67, 3, 68, 3, 68, 5, 68, 995, 10, 68, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 5, 71, 1009, 10, 71, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 7, 73, 1020, 10, 73, 12, 73, 14, 73, 1023, 11, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 5, 75, 1032, 10, 75, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 7, 76, 1040, 10, 76, 12, 76, 14, 76, 1043, 11, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 5, 78, 1051, 10, 78, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, 5, 80, 1058, 10, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 5, 81, 1067, 10, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 7, 82, 1075, 10, 82, 12, 82, 14, 82, 1078, 11, 82, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 5, 84, 1085, 10, 84, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 5, 86, 1092, 10, 86, 3, 87, 3, 87, 3, 87, 3, 88, 3, 88, 5, 88, 1099, 10, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 7, 90, 1111, 10, 90, 12, 90, 14, 90, 1114, 11, 90, 3, 91, 3, 91, 3, 91, 3, 91, 3, 92, 3, 92, 5, 92, 1122, 10, 92, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 5, 94, 1130, 10, 94, 3, 95, 3, 95, 3, 96, 3, 96, 3, 97, 3, 97, 5, 97, 1138, 10, 97, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 5, 99, 1145, 10, 99, 3, 100, 3, 100, 3, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 5, 101, 1166, 10, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 5, 102, 1181, 10, 102, 3, 103, 3, 103, 3, 103, 3, 103, 5, 103, 1187, 10, 103, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 5, 104, 1206, 10, 104, 3, 105, 3, 105, 3, 105, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 7, 106, 1217, 10, 106, 12, 106, 14, 106, 1220, 11, 106, 3, 107, 3, 107, 3, 107, 3, 107, 5, 107, 1226, 10, 107, 3, 108, 3, 108, 3, 108, 5, 108, 1231, 10, 108, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 111, 3, 111, 5, 111, 1249, 10, 111, 3, 112, 3, 112, 3, 112, 3, 113, 3, 113, 3, 113, 3, 113, 5, 113, 1258, 10, 113, 3, 114, 3, 114, 3, 114, 3, 115, 3, 115, 3, 115, 3, 116, 3, 116, 3, 116, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 5, 117, 1284, 10, 117, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 5, 118, 1302, 10, 118, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 5, 120, 1337, 10, 120, 3, 121, 3, 121, 3, 121, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 7, 122, 1348, 10, 122, 12, 122, 14, 122, 1351, 11, 122, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 5, 123, 1364, 10, 123, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 125, 3, 125, 5, 125, 1373, 10, 125, 3, 126, 3, 126, 3, 126, 3, 126, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 7, 127, 1386, 10, 127, 12, 127, 14, 127, 1389, 11, 127, 3, 128, 3, 128, 3, 128, 3, 128, 3, 128, 3, 128, 7, 128, 1397, 10, 128, 12, 128, 14, 128, 1400, 11, 128, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 5, 129, 1422, 10, 129, 3, 130, 3, 130, 3, 131, 3, 131, 3, 131, 5, 131, 1429, 10, 131, 3, 132, 3, 132, 3, 132, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 7, 133, 1440, 10, 133, 12, 133, 14, 133, 1443, 11, 133, 3, 134, 3, 134, 3, 134, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 136, 3, 136, 3, 137, 3, 137, 5, 137, 1465, 10, 137, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 5, 138, 1488, 10, 138, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 5, 139, 1504, 10, 139, 3, 140, 3, 140, 3, 140, 3, 140, 3, 140, 3, 140, 3, 140, 5, 140, 1513, 10, 140, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 5, 141, 1525, 10, 141, 3, 142, 3, 142, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 5, 143, 1543, 10, 143, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 5, 144, 1557, 10, 144, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 7, 145, 1565, 10, 145, 12, 145, 14, 145, 1568, 11, 145, 3, 146, 3, 146, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 7, 147, 1578, 10, 147, 12, 147, 14, 147, 1581, 11, 147, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 5, 148, 1609, 10, 148, 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, 7, 149, 1617, 10, 149, 12, 149, 14, 149, 1620, 11, 149, 3, 150, 3, 150, 3, 150, 3, 150, 5, 150, 1626, 10, 150, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 5, 151, 1640, 10, 151, 3, 152, 3, 152, 3, 152, 3, 152, 5, 152, 1646, 10, 152, 3, 153, 3, 153, 3, 153, 3, 153, 5, 153, 1652, 10, 153, 3, 154, 3, 154, 3, 154, 3, 154, 5, 154, 1658, 10, 154, 3, 155, 3, 155, 3, 155, 3, 155, 5, 155, 1664, 10, 155, 3, 156, 3, 156, 3, 156, 3, 156, 3, 157, 3, 157, 3, 158, 3, 158, 3, 158, 3, 158, 3, 158, 3, 158, 3, 158, 3, 158, 3, 158, 3, 158, 3, 158, 3, 158, 3, 158, 5, 158, 1685, 10, 158, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 5, 159, 1697, 10, 159, 3, 160, 3, 160, 5, 160, 1701, 10, 160, 3, 161, 3, 161, 3, 162, 3, 162, 5, 162, 1707, 10, 162, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 5, 163, 1719, 10, 163, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 5, 164, 1729, 10, 164, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 5, 165, 1740, 10, 165, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 5, 166, 1750, 10, 166, 3, 167, 3, 167, 5, 167, 1754, 10, 167, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 5, 168, 1762, 10, 168, 3, 169, 3, 169, 5, 169, 1766, 10, 169, 3, 170, 3, 170, 3, 170, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 7, 171, 1777, 10, 171, 12, 171, 14, 171, 1780, 11, 171, 3, 172, 3, 172, 3, 172, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 5, 173, 1795, 10, 173, 3, 174, 3, 174, 3, 175, 3, 175, 3, 176, 3, 176, 3, 176, 5, 176, 1804, 10, 176, 3, 177, 3, 177, 3, 177, 3, 177, 3, 177, 5, 177, 1811, 10, 177, 3, 178, 3, 178, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 5, 179, 1836, 10, 179, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 5, 180, 1854, 10, 180, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 3, 181, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 183, 3, 183, 3, 183, 5, 183, 1877, 10, 183, 3, 184, 3, 184, 5, 184, 1881, 10, 184, 3, 185, 3, 185, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 5, 186, 1895, 10, 186, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 5, 187, 1902, 10, 187, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 7, 188, 1910, 10, 188, 12, 188, 14, 188, 1913, 11, 188, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 5, 189, 1935, 10, 189, 3, 190, 3, 190, 3, 190, 3, 190, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 5, 192, 2070, 10, 192, 3, 193, 3, 193, 5, 193, 2074, 10, 193, 3, 194, 3, 194, 3, 194, 3, 194, 3, 194, 3, 194, 7, 194, 2082, 10, 194, 12, 194, 14, 194, 2085, 11, 194, 3, 195, 3, 195, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 7, 196, 2115, 10, 196, 12, 196, 14, 196, 2118, 11, 196, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 5, 197, 2126, 10, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 7, 197, 2268, 10, 197, 12, 197, 14, 197, 2271, 11, 197, 3, 198, 3, 198, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 5, 199, 2291, 10, 199, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 7, 200, 2354, 10, 200, 12, 200, 14, 200, 2357, 11, 200, 3, 201, 3, 201, 3, 202, 3, 202, 5, 202, 2363, 10, 202, 3, 203, 3, 203, 3, 203, 3, 203, 3, 204, 3, 204, 5, 204, 2371, 10, 204, 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 7, 205, 2379, 10, 205, 12, 205, 14, 205, 2382, 11, 205, 3, 206, 3, 206, 3, 206, 3, 206, 3, 206, 5, 206, 2389, 10, 206, 3, 207, 3, 207, 3, 207, 3, 207, 3, 208, 3, 208, 5, 208, 2397, 10, 208, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 7, 209, 2405, 10, 209, 12, 209, 14, 209, 2408, 11, 209, 3, 210, 3, 210, 3, 211, 3, 211, 3, 211, 3, 211, 3, 212, 3, 212, 5, 212, 2418, 10, 212, 3, 213, 3, 213, 3, 213, 3, 213, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 7, 214, 2436, 10, 214, 12, 214, 14, 214, 2439, 11, 214, 3, 215, 3, 215, 3, 215, 3, 216, 3, 216, 3, 216, 5, 216, 2447, 10, 216, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 5, 217, 2485, 10, 217, 3, 218, 3, 218, 3, 219, 3, 219, 5, 219, 2491, 10, 219, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 5, 220, 2522, 10, 220, 3, 221, 3, 221, 3, 221, 3, 221, 3, 221, 3, 221, 7, 221, 2530, 10, 221, 12, 221, 14, 221, 2533, 11, 221, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 5, 222, 2555, 10, 222, 3, 223, 3, 223, 3, 223, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 5, 224, 2583, 10, 224, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 5, 225, 2594, 10, 225, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 3, 226, 5, 226, 2605, 10, 226, 3, 227, 3, 227, 5, 227, 2609, 10, 227, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 5, 228, 2620, 10, 228, 3, 229, 3, 229, 3, 229, 5, 229, 2625, 10, 229, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 7, 230, 2633, 10, 230, 12, 230, 14, 230, 2636, 11, 230, 3, 231, 3, 231, 3, 231, 3, 231, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 233, 3, 233, 5, 233, 2651, 10, 233, 3, 234, 3, 234, 3, 234, 3, 234, 5, 234, 2657, 10, 234, 3, 235, 3, 235, 3, 235, 3, 235, 3, 235, 5, 235, 2664, 10, 235, 3, 236, 3, 236, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 5, 237, 2679, 10, 237, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 5, 238, 2687, 10, 238, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 5, 239, 2698, 10, 239, 3, 240, 3, 240, 3, 241, 3, 241, 5, 241, 2704, 10, 241, 3, 242, 3, 242, 3, 242, 3, 242, 5, 242, 2710, 10, 242, 3, 243, 3, 243, 3, 243, 5, 243, 2715, 10, 243, 3, 244, 3, 244, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 3, 245, 5, 245, 2725, 10, 245, 3, 246, 3, 246, 5, 246, 2729, 10, 246, 3, 247, 3, 247, 3, 247, 3, 247, 5, 247, 2735, 10, 247, 3, 248, 3, 248, 3, 248, 3, 248, 3, 249, 3, 249, 3, 249, 3, 250, 3, 250, 3, 250, 3, 250, 3, 251, 3, 251, 3, 252, 3, 252, 5, 252, 2752, 10, 252, 3, 253, 3, 253, 3, 254, 3, 254, 3, 254, 3, 254, 5, 254, 2760, 10, 254, 3, 255, 3, 255, 3, 256, 3, 256, 5, 256, 2766, 10, 256, 3, 257, 3, 257, 3, 257, 3, 257, 3, 258, 3, 258, 3, 258, 3, 259, 3, 259, 3, 259, 3, 259, 3, 260, 3, 260, 3, 260, 3, 261, 3, 261, 3, 261, 3, 262, 3, 262, 3, 262, 3, 262, 3, 262, 2, 30, 6, 60, 78, 92, 124, 144, 150, 162, 178, 210, 242, 252, 254, 264, 288, 292, 296, 340, 374, 386, 390, 392, 398, 408, 416, 426, 440, 458, 263, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 2, 21, 4, 2, 41, 41, 97, 97, 5, 2, 79, 79, 176, 176, 225, 225, 4, 2, 92, 92, 217, 217, 4, 2, 50, 50, 173, 173, 4, 2, 42, 42, 73, 73, 4, 2, 91, 91, 129, 129, 7, 2, 71, 71, 117, 117, 195, 195, 219, 219, 239, 239, 4, 2, 93, 93, 211, 211, 4, 2, 35, 35, 78, 78, 5, 2, 42, 42, 73, 73, 142, 142, 4, 2, 127, 127, 226, 226, 7, 2, 3, 5, 88, 88, 142, 142, 149, 149, 210, 210, 3, 2, 240, 242, 4, 2, 181, 181, 239, 239, 5, 2, 103, 103, 175, 175, 190, 190, 4, 2, 94, 94, 167, 167, 4, 2, 35, 35, 75, 75, 4, 2, 44, 44, 200, 200, 4, 2, 207, 208, 236, 236, 2, 2857, 2, 524, 3, 2, 2, 2, 4, 535, 3, 2, 2, 2, 6, 537, 3, 2, 2, 2, 8, 550, 3, 2, 2, 2, 10, 560, 3, 2, 2, 2, 12, 562, 3, 2, 2, 2, 14, 568, 3, 2, 2, 2, 16, 570, 3, 2, 2, 2, 18, 573, 3, 2, 2, 2, 20, 580, 3, 2, 2, 2, 22, 587, 3, 2, 2, 2, 24, 589, 3, 2, 2, 2, 26, 591, 3, 2, 2, 2, 28, 598, 3, 2, 2, 2, 30, 600, 3, 2, 2, 2, 32, 609, 3, 2, 2, 2, 34, 611, 3, 2, 2, 2, 36, 615, 3, 2, 2, 2, 38, 617, 3, 2, 2, 2, 40, 620, 3, 2, 2, 2, 42, 627, 3, 2, 2, 2, 44, 632, 3, 2, 2, 2, 46, 636, 3, 2, 2, 2, 48, 643, 3, 2, 2, 2, 50, 647, 3, 2, 2, 2, 52, 652, 3, 2, 2, 2, 54, 657, 3, 2, 2, 2, 56, 664, 3, 2, 2, 2, 58, 679, 3, 2, 2, 2, 60, 710, 3, 2, 2, 2, 62, 740, 3, 2, 2, 2, 64, 744, 3, 2, 2, 2, 66, 746, 3, 2, 2, 2, 68, 754, 3, 2, 2, 2, 70, 762, 3, 2, 2, 2, 72, 773, 3, 2, 2, 2, 74, 778, 3, 2, 2, 2, 76, 780, 3, 2, 2, 2, 78, 782, 3, 2, 2, 2, 80, 801, 3, 2, 2, 2, 82, 805, 3, 2, 2, 2, 84, 810, 3, 2, 2, 2, 86, 812, 3, 2, 2, 2, 88, 816, 3, 2, 2, 2, 90, 818, 3, 2, 2, 2, 92, 831, 3, 2, 2, 2, 94, 891, 3, 2, 2, 2, 96, 893, 3, 2, 2, 2, 98, 895, 3, 2, 2, 2, 100, 909, 3, 2, 2, 2, 102, 914, 3, 2, 2, 2, 104, 916, 3, 2, 2, 2, 106, 919, 3, 2, 2, 2, 108, 921, 3, 2, 2, 2, 110, 923, 3, 2, 2, 2, 112, 928, 3, 2, 2, 2, 114, 945, 3, 2, 2, 2, 116, 947, 3, 2, 2, 2, 118, 951, 3, 2, 2, 2, 120, 962, 3, 2, 2, 2, 122, 966, 3, 2, 2, 2, 124, 968, 3, 2, 2, 2, 126, 979, 3, 2, 2, 2, 128, 982, 3, 2, 2, 2, 130, 984, 3, 2, 2, 2, 132, 990, 3, 2, 2, 2, 134, 994, 3, 2, 2, 2, 136, 996, 3, 2, 2, 2, 138, 1001, 3, 2, 2, 2, 140, 1008, 3, 2, 2, 2, 142, 1010, 3, 2, 2, 2, 144, 1013, 3, 2, 2, 2, 146, 1024, 3, 2, 2, 2, 148, 1031, 3, 2, 2, 2, 150, 1033, 3, 2, 2, 2, 152, 1044, 3, 2, 2, 2, 154, 1050, 3, 2, 2, 2, 156, 1052, 3, 2, 2, 2, 158, 1057, 3, 2, 2, 2, 160, 1066, 3, 2, 2, 2, 162, 1068, 3, 2, 2, 2, 164, 1079, 3, 2, 2, 2, 166, 1084, 3, 2, 2, 2, 168, 1086, 3, 2, 2, 2, 170, 1091, 3, 2, 2, 2, 172, 1093, 3, 2, 2, 2, 174, 1098, 3, 2, 2, 2, 176, 1100, 3, 2, 2, 2, 178, 1104, 3, 2, 2, 2, 180, 1115, 3, 2, 2, 2, 182, 1121, 3, 2, 2, 2, 184, 1123, 3, 2, 2, 2, 186, 1129, 3, 2, 2, 2, 188, 1131, 3, 2, 2, 2, 190, 1133, 3, 2, 2, 2, 192, 1137, 3, 2, 2, 2, 194, 1139, 3, 2, 2, 2, 196, 1144, 3, 2, 2, 2, 198, 1146, 3, 2, 2, 2, 200, 1165, 3, 2, 2, 2, 202, 1180, 3, 2, 2, 2, 204, 1186, 3, 2, 2, 2, 206, 1205, 3, 2, 2, 2, 208, 1207, 3, 2, 2, 2, 210, 1210, 3, 2, 2, 2, 212, 1225, 3, 2, 2, 2, 214, 1230, 3, 2, 2, 2, 216, 1232, 3, 2, 2, 2, 218, 1238, 3, 2, 2, 2, 220, 1248, 3, 2, 2, 2, 222, 1250, 3, 2, 2, 2, 224, 1257, 3, 2, 2, 2, 226, 1259, 3, 2, 2, 2, 228, 1262, 3, 2, 2, 2, 230, 1265, 3, 2, 2, 2, 232, 1283, 3, 2, 2, 2, 234, 1301, 3, 2, 2, 2, 236, 1303, 3, 2, 2, 2, 238, 1336, 3, 2, 2, 2, 240, 1338, 3, 2, 2, 2, 242, 1341, 3, 2, 2, 2, 244, 1363, 3, 2, 2, 2, 246, 1365, 3, 2, 2, 2, 248, 1372, 3, 2, 2, 2, 250, 1374, 3, 2, 2, 2, 252, 1378, 3, 2, 2, 2, 254, 1390, 3, 2, 2, 2, 256, 1421, 3, 2, 2, 2, 258, 1423, 3, 2, 2, 2, 260, 1428, 3, 2, 2, 2, 262, 1430, 3, 2, 2, 2, 264, 1433, 3, 2, 2, 2, 266, 1444, 3, 2, 2, 2, 268, 1447, 3, 2, 2, 2, 270, 1460, 3, 2, 2, 2, 272, 1464, 3, 2, 2, 2, 274, 1487, 3, 2, 2, 2, 276, 1503, 3, 2, 2, 2, 278, 1512, 3, 2, 2, 2, 280, 1524, 3, 2, 2, 2, 282, 1526, 3, 2, 2, 2, 284, 1542, 3, 2, 2, 2, 286, 1556, 3, 2, 2, 2, 288, 1558, 3, 2, 2, 2, 290, 1569, 3, 2, 2, 2, 292, 1571, 3, 2, 2, 2, 294, 1608, 3, 2, 2, 2, 296, 1610, 3, 2, 2, 2, 298, 1625, 3, 2, 2, 2, 300, 1639, 3, 2, 2, 2, 302, 1641, 3, 2, 2, 2, 304, 1647, 3, 2, 2, 2, 306, 1653, 3, 2, 2, 2, 308, 1659, 3, 2, 2, 2, 310, 1665, 3, 2, 2, 2, 312, 1669, 3, 2, 2, 2, 314, 1671, 3, 2, 2, 2, 316, 1686, 3, 2, 2, 2, 318, 1700, 3, 2, 2, 2, 320, 1702, 3, 2, 2, 2, 322, 1706, 3, 2, 2, 2, 324, 1718, 3, 2, 2, 2, 326, 1728, 3, 2, 2, 2, 328, 1739, 3, 2, 2, 2, 330, 1749, 3, 2, 2, 2, 332, 1753, 3, 2, 2, 2, 334, 1761, 3, 2, 2, 2, 336, 1765, 3, 2, 2, 2, 338, 1767, 3, 2, 2, 2, 340, 1770, 3, 2, 2, 2, 342, 1781, 3, 2, 2, 2, 344, 1794, 3, 2, 2, 2, 346, 1796, 3, 2, 2, 2, 348, 1798, 3, 2, 2, 2, 350, 1803, 3, 2, 2, 2, 352, 1810, 3, 2, 2, 2, 354, 1812, 3, 2, 2, 2, 356, 1835, 3, 2, 2, 2, 358, 1853, 3, 2, 2, 2, 360, 1855, 3, 2, 2, 2, 362, 1864, 3, 2, 2, 2, 364, 1876, 3, 2, 2, 2, 366, 1880, 3, 2, 2, 2, 368, 1882, 3, 2, 2, 2, 370, 1894, 3, 2, 2, 2, 372, 1901, 3, 2, 2, 2, 374, 1903, 3, 2, 2, 2, 376, 1934, 3, 2, 2, 2, 378, 1936, 3, 2, 2, 2, 380, 1940, 3, 2, 2, 2, 382, 2069, 3, 2, 2, 2, 384, 2073, 3, 2, 2, 2, 386, 2075, 3, 2, 2, 2, 388, 2086, 3, 2, 2, 2, 390, 2088, 3, 2, 2, 2, 392, 2125, 3, 2, 2, 2, 394, 2272, 3, 2, 2, 2, 396, 2290, 3, 2, 2, 2, 398, 2292, 3, 2, 2, 2, 400, 2358, 3, 2, 2, 2, 402, 2362, 3, 2, 2, 2, 404, 2364, 3, 2, 2, 2, 406, 2370, 3, 2, 2, 2, 408, 2372, 3, 2, 2, 2, 410, 2388, 3, 2, 2, 2, 412, 2390, 3, 2, 2, 2, 414, 2396, 3, 2, 2, 2, 416, 2398, 3, 2, 2, 2, 418, 2409, 3, 2, 2, 2, 420, 2411, 3, 2, 2, 2, 422, 2417, 3, 2, 2, 2, 424, 2419, 3, 2, 2, 2, 426, 2423, 3, 2, 2, 2, 428, 2440, 3, 2, 2, 2, 430, 2446, 3, 2, 2, 2, 432, 2484, 3, 2, 2, 2, 434, 2486, 3, 2, 2, 2, 436, 2490, 3, 2, 2, 2, 438, 2521, 3, 2, 2, 2, 440, 2523, 3, 2, 2, 2, 442, 2554, 3, 2, 2, 2, 444, 2556, 3, 2, 2, 2, 446, 2582, 3, 2, 2, 2, 448, 2593, 3, 2, 2, 2, 450, 2604, 3, 2, 2, 2, 452, 2608, 3, 2, 2, 2, 454, 2619, 3, 2, 2, 2, 456, 2624, 3, 2, 2, 2, 458, 2626, 3, 2, 2, 2, 460, 2637, 3, 2, 2, 2, 462, 2641, 3, 2, 2, 2, 464, 2650, 3, 2, 2, 2, 466, 2656, 3, 2, 2, 2, 468, 2663, 3, 2, 2, 2, 470, 2665, 3, 2, 2, 2, 472, 2678, 3, 2, 2, 2, 474, 2686, 3, 2, 2, 2, 476, 2697, 3, 2, 2, 2, 478, 2699, 3, 2, 2, 2, 480, 2703, 3, 2, 2, 2, 482, 2709, 3, 2, 2, 2, 484, 2714, 3, 2, 2, 2, 486, 2716, 3, 2, 2, 2, 488, 2724, 3, 2, 2, 2, 490, 2728, 3, 2, 2, 2, 492, 2734, 3, 2, 2, 2, 494, 2736, 3, 2, 2, 2, 496, 2740, 3, 2, 2, 2, 498, 2743, 3, 2, 2, 2, 500, 2747, 3, 2, 2, 2, 502, 2751, 3, 2, 2, 2, 504, 2753, 3, 2, 2, 2, 506, 2759, 3, 2, 2, 2, 508, 2761, 3, 2, 2, 2, 510, 2765, 3, 2, 2, 2, 512, 2767, 3, 2, 2, 2, 514, 2771, 3, 2, 2, 2, 516, 2774, 3, 2, 2, 2, 518, 2778, 3, 2, 2, 2, 520, 2781, 3, 2, 2, 2, 522, 2784, 3, 2, 2, 2, 524, 528, 5, 4, 3, 2, 525, 527, 5, 4, 3, 2, 526, 525, 3, 2, 2, 2, 527, 530, 3, 2, 2, 2, 528, 526, 3, 2, 2, 2, 528, 529, 3, 2, 2, 2, 529, 3, 3, 2, 2, 2, 530, 528, 3, 2, 2, 2, 531, 532, 5, 8, 5, 2, 532, 533, 5, 6, 4, 2, 533, 536, 3, 2, 2, 2, 534, 536, 5, 452, 227, 2, 535, 531, 3, 2, 2, 2, 535, 534, 3, 2, 2, 2, 536, 5, 3, 2, 2, 2, 537, 542, 8, 4, 1, 2, 538, 539, 12, 3, 2, 2, 539, 541, 7, 32, 2, 2, 540, 538, 3, 2, 2, 2, 541, 544, 3, 2, 2, 2, 542, 540, 3, 2, 2, 2, 542, 543, 3, 2, 2, 2, 543, 7, 3, 2, 2, 2, 544, 542, 3, 2, 2, 2, 545, 551, 5, 12, 7, 2, 546, 551, 5, 16, 9, 2, 547, 551, 5, 18, 10, 2, 548, 551, 5, 26, 14, 2, 549, 551, 5, 10, 6, 2, 550, 545, 3, 2, 2, 2, 550, 546, 3, 2, 2, 2, 550, 547, 3, 2, 2, 2, 550, 548, 3, 2, 2, 2, 550, 549, 3, 2, 2, 2, 551, 9, 3, 2, 2, 2, 552, 561, 5, 40, 21, 2, 553, 561, 5, 42, 22, 2, 554, 561, 5, 44, 23, 2, 555, 561, 5, 30, 16, 2, 556, 561, 5, 382, 192, 2, 557, 561, 5, 46, 24, 2, 558, 561, 5, 54, 28, 2, 559, 561, 5, 56, 29, 2, 560, 552, 3, 2, 2, 2, 560, 553, 3, 2, 2, 2, 560, 554, 3, 2, 2, 2, 560, 555, 3, 2, 2, 2, 560, 556, 3, 2, 2, 2, 560, 557, 3, 2, 2, 2, 560, 558, 3, 2, 2, 2, 560, 559, 3, 2, 2, 2, 561, 11, 3, 2, 2, 2, 562, 563, 7, 34, 2, 2, 563, 564, 5, 14, 8, 2, 564, 565, 5, 10, 6, 2, 565, 13, 3, 2, 2, 2, 566, 569, 3, 2, 2, 2, 567, 569, 7, 113, 2, 2, 568, 566, 3, 2, 2, 2, 568, 567, 3, 2, 2, 2, 569, 15, 3, 2, 2, 2, 570, 571, 7, 87, 2, 2, 571, 572, 5, 10, 6, 2, 572, 17, 3, 2, 2, 2, 573, 574, 7, 168, 2, 2, 574, 575, 5, 20, 11, 2, 575, 576, 5, 22, 12, 2, 576, 577, 5, 10, 6, 2, 577, 19, 3, 2, 2, 2, 578, 581, 3, 2, 2, 2, 579, 581, 7, 96, 2, 2, 580, 578, 3, 2, 2, 2, 580, 579, 3, 2, 2, 2, 581, 21, 3, 2, 2, 2, 582, 588, 3, 2, 2, 2, 583, 584, 7, 239, 2, 2, 584, 588, 5, 24, 13, 2, 585, 586, 7, 3, 2, 2, 586, 588, 5, 24, 13, 2, 587, 582, 3, 2, 2, 2, 587, 583, 3, 2, 2, 2, 587, 585, 3, 2, 2, 2, 588, 23, 3, 2, 2, 2, 589, 590, 9, 2, 2, 2, 590, 25, 3, 2, 2, 2, 591, 592, 7, 85, 2, 2, 592, 593, 5, 392, 197, 2, 593, 594, 5, 28, 15, 2, 594, 27, 3, 2, 2, 2, 595, 599, 3, 2, 2, 2, 596, 597, 7, 223, 2, 2, 597, 599, 5, 402, 202, 2, 598, 595, 3, 2, 2, 2, 598, 596, 3, 2, 2, 2, 599, 29, 3, 2, 2, 2, 600, 601, 7, 114, 2, 2, 601, 602, 5, 32, 17, 2, 602, 603, 5, 202, 102, 2, 603, 604, 5, 34, 18, 2, 604, 605, 5, 36, 19, 2, 605, 31, 3, 2, 2, 2, 606, 610, 3, 2, 2, 2, 607, 610, 7, 126, 2, 2, 608, 610, 7, 57, 2, 2, 609, 606, 3, 2, 2, 2, 609, 607, 3, 2, 2, 2, 609, 608, 3, 2, 2, 2, 610, 33, 3, 2, 2, 2, 611, 612, 3, 2, 2, 2, 612, 35, 3, 2, 2, 2, 613, 616, 3, 2, 2, 2, 614, 616, 5, 38, 20, 2, 615, 613, 3, 2, 2, 2, 615, 614, 3, 2, 2, 2, 616, 37, 3, 2, 2, 2, 617, 618, 7, 234, 2, 2, 618, 619, 5, 392, 197, 2, 619, 39, 3, 2, 2, 2, 620, 621, 5, 58, 30, 2, 621, 41, 3, 2, 2, 2, 622, 628, 5, 200, 101, 2, 623, 628, 5, 234, 118, 2, 624, 628, 5, 236, 119, 2, 625, 628, 5, 238, 120, 2, 626, 628, 5, 268, 135, 2, 627, 622, 3, 2, 2, 2, 627, 623, 3, 2, 2, 2, 627, 624, 3, 2, 2, 2, 627, 625, 3, 2, 2, 2, 627, 626, 3, 2, 2, 2, 628, 43, 3, 2, 2, 2, 629, 633, 5, 48, 25, 2, 630, 633, 5, 50, 26, 2, 631, 633, 5, 52, 27, 2, 632, 629, 3, 2, 2, 2, 632, 630, 3, 2, 2, 2, 632, 631, 3, 2, 2, 2, 633, 45, 3, 2, 2, 2, 634, 637, 5, 286, 144, 2, 635, 637, 5, 300, 151, 2, 636, 634, 3, 2, 2, 2, 636, 635, 3, 2, 2, 2, 637, 47, 3, 2, 2, 2, 638, 644, 5, 314, 158, 2, 639, 644, 5, 316, 159, 2, 640, 644, 5, 356, 179, 2, 641, 644, 5, 358, 180, 2, 642, 644, 5, 360, 181, 2, 643, 638, 3, 2, 2, 2, 643, 639, 3, 2, 2, 2, 643, 640, 3, 2, 2, 2, 643, 641, 3, 2, 2, 2, 643, 642, 3, 2, 2, 2, 644, 49, 3, 2, 2, 2, 645, 648, 5, 302, 152, 2, 646, 648, 5, 304, 153, 2, 647, 645, 3, 2, 2, 2, 647, 646, 3, 2, 2, 2, 648, 51, 3, 2, 2, 2, 649, 653, 5, 306, 154, 2, 650, 653, 5, 308, 155, 2, 651, 653, 5, 310, 156, 2, 652, 649, 3, 2, 2, 2, 652, 650, 3, 2, 2, 2, 652, 651, 3, 2, 2, 2, 653, 53, 3, 2, 2, 2, 654, 658, 5, 362, 182, 2, 655, 658, 5, 378, 190, 2, 656, 658, 5, 380, 191, 2, 657, 654, 3, 2, 2, 2, 657, 655, 3, 2, 2, 2, 657, 656, 3, 2, 2, 2, 658, 55, 3, 2, 2, 2, 659, 665, 5, 494, 248, 2, 660, 665, 5, 496, 249, 2, 661, 665, 5, 498, 250, 2, 662, 665, 5, 518, 260, 2, 663, 665, 5, 516, 259, 2, 664, 659, 3, 2, 2, 2, 664, 660, 3, 2, 2, 2, 664, 661, 3, 2, 2, 2, 664, 662, 3, 2, 2, 2, 664, 663, 3, 2, 2, 2, 665, 57, 3, 2, 2, 2, 666, 667, 5, 60, 31, 2, 667, 668, 5, 174, 88, 2, 668, 680, 3, 2, 2, 2, 669, 670, 5, 60, 31, 2, 670, 671, 5, 174, 88, 2, 671, 672, 5, 194, 98, 2, 672, 673, 5, 196, 99, 2, 673, 680, 3, 2, 2, 2, 674, 675, 5, 60, 31, 2, 675, 676, 5, 174, 88, 2, 676, 677, 5, 198, 100, 2, 677, 678, 5, 192, 97, 2, 678, 680, 3, 2, 2, 2, 679, 666, 3, 2, 2, 2, 679, 669, 3, 2, 2, 2, 679, 674, 3, 2, 2, 2, 680, 59, 3, 2, 2, 2, 681, 682, 8, 31, 1, 2, 682, 711, 5, 64, 33, 2, 683, 684, 5, 450, 226, 2, 684, 685, 7, 214, 2, 2, 685, 686, 5, 62, 32, 2, 686, 711, 3, 2, 2, 2, 687, 688, 5, 450, 226, 2, 688, 689, 7, 214, 2, 2, 689, 690, 7, 35, 2, 2, 690, 691, 5, 62, 32, 2, 691, 711, 3, 2, 2, 2, 692, 693, 5, 450, 226, 2, 693, 694, 7, 118, 2, 2, 694, 695, 5, 62, 32, 2, 695, 711, 3, 2, 2, 2, 696, 697, 5, 450, 226, 2, 697, 698, 7, 118, 2, 2, 698, 699, 7, 35, 2, 2, 699, 700, 5, 62, 32, 2, 700, 711, 3, 2, 2, 2, 701, 702, 5, 450, 226, 2, 702, 703, 7, 83, 2, 2, 703, 704, 5, 62, 32, 2, 704, 711, 3, 2, 2, 2, 705, 706, 5, 450, 226, 2, 706, 707, 7, 83, 2, 2, 707, 708, 7, 35, 2, 2, 708, 709, 5, 62, 32, 2, 709, 711, 3, 2, 2, 2, 710, 681, 3, 2, 2, 2, 710, 683, 3, 2, 2, 2, 710, 687, 3, 2, 2, 2, 710, 692, 3, 2, 2, 2, 710, 696, 3, 2, 2, 2, 710, 701, 3, 2, 2, 2, 710, 705, 3, 2, 2, 2, 711, 735, 3, 2, 2, 2, 712, 713, 12, 14, 2, 2, 713, 714, 7, 214, 2, 2, 714, 734, 5, 62, 32, 2, 715, 716, 12, 13, 2, 2, 716, 717, 7, 214, 2, 2, 717, 718, 7, 35, 2, 2, 718, 734, 5, 62, 32, 2, 719, 720, 12, 12, 2, 2, 720, 721, 7, 118, 2, 2, 721, 734, 5, 62, 32, 2, 722, 723, 12, 11, 2, 2, 723, 724, 7, 118, 2, 2, 724, 725, 7, 35, 2, 2, 725, 734, 5, 62, 32, 2, 726, 727, 12, 10, 2, 2, 727, 728, 7, 83, 2, 2, 728, 734, 5, 62, 32, 2, 729, 730, 12, 9, 2, 2, 730, 731, 7, 83, 2, 2, 731, 732, 7, 35, 2, 2, 732, 734, 5, 62, 32, 2, 733, 712, 3, 2, 2, 2, 733, 715, 3, 2, 2, 2, 733, 719, 3, 2, 2, 2, 733, 722, 3, 2, 2, 2, 733, 726, 3, 2, 2, 2, 733, 729, 3, 2, 2, 2, 734, 737, 3, 2, 2, 2, 735, 733, 3, 2, 2, 2, 735, 736, 3, 2, 2, 2, 736, 61, 3, 2, 2, 2, 737, 735, 3, 2, 2, 2, 738, 741, 5, 64, 33, 2, 739, 741, 5, 450, 226, 2, 740, 738, 3, 2, 2, 2, 740, 739, 3, 2, 2, 2, 741, 63, 3, 2, 2, 2, 742, 745, 5, 66, 34, 2, 743, 745, 5, 68, 35, 2, 744, 742, 3, 2, 2, 2, 744, 743, 3, 2, 2, 2, 745, 65, 3, 2, 2, 2, 746, 747, 5, 148, 75, 2, 747, 748, 5, 90, 46, 2, 748, 749, 5, 140, 71, 2, 749, 750, 5, 154, 78, 2, 750, 751, 5, 158, 80, 2, 751, 752, 5, 456, 229, 2, 752, 753, 5, 70, 36, 2, 753, 67, 3, 2, 2, 2, 754, 755, 5, 148, 75, 2, 755, 756, 5, 70, 36, 2, 756, 757, 5, 88, 45, 2, 757, 758, 5, 140, 71, 2, 758, 759, 5, 154, 78, 2, 759, 760, 5, 158, 80, 2, 760, 761, 5, 456, 229, 2, 761, 69, 3, 2, 2, 2, 762, 763, 7, 195, 2, 2, 763, 764, 5, 72, 37, 2, 764, 71, 3, 2, 2, 2, 765, 766, 5, 74, 38, 2, 766, 767, 5, 78, 40, 2, 767, 774, 3, 2, 2, 2, 768, 769, 5, 74, 38, 2, 769, 770, 5, 76, 39, 2, 770, 771, 5, 392, 197, 2, 771, 772, 5, 82, 42, 2, 772, 774, 3, 2, 2, 2, 773, 765, 3, 2, 2, 2, 773, 768, 3, 2, 2, 2, 774, 73, 3, 2, 2, 2, 775, 779, 3, 2, 2, 2, 776, 779, 7, 35, 2, 2, 777, 779, 7, 75, 2, 2, 778, 775, 3, 2, 2, 2, 778, 776, 3, 2, 2, 2, 778, 777, 3, 2, 2, 2, 779, 75, 3, 2, 2, 2, 780, 781, 9, 3, 2, 2, 781, 77, 3, 2, 2, 2, 782, 783, 8, 40, 1, 2, 783, 784, 5, 80, 41, 2, 784, 790, 3, 2, 2, 2, 785, 786, 12, 3, 2, 2, 786, 787, 7, 27, 2, 2, 787, 789, 5, 80, 41, 2, 788, 785, 3, 2, 2, 2, 789, 792, 3, 2, 2, 2, 790, 788, 3, 2, 2, 2, 790, 791, 3, 2, 2, 2, 791, 79, 3, 2, 2, 2, 792, 790, 3, 2, 2, 2, 793, 802, 7, 12, 2, 2, 794, 795, 5, 392, 197, 2, 795, 796, 7, 9, 2, 2, 796, 797, 7, 12, 2, 2, 797, 802, 3, 2, 2, 2, 798, 799, 5, 392, 197, 2, 799, 800, 5, 82, 42, 2, 800, 802, 3, 2, 2, 2, 801, 793, 3, 2, 2, 2, 801, 794, 3, 2, 2, 2, 801, 798, 3, 2, 2, 2, 802, 81, 3, 2, 2, 2, 803, 806, 3, 2, 2, 2, 804, 806, 5, 84, 43, 2, 805, 803, 3, 2, 2, 2, 805, 804, 3, 2, 2, 2, 806, 83, 3, 2, 2, 2, 807, 811, 5, 86, 44, 2, 808, 809, 7, 41, 2, 2, 809, 811, 5, 86, 44, 2, 810, 807, 3, 2, 2, 2, 810, 808, 3, 2, 2, 2, 811, 85, 3, 2, 2, 2, 812, 813, 7, 239, 2, 2, 813, 87, 3, 2, 2, 2, 814, 817, 3, 2, 2, 2, 815, 817, 5, 90, 46, 2, 816, 814, 3, 2, 2, 2, 816, 815, 3, 2, 2, 2, 817, 89, 3, 2, 2, 2, 818, 819, 7, 97, 2, 2, 819, 820, 5, 92, 47, 2, 820, 91, 3, 2, 2, 2, 821, 822, 8, 47, 1, 2, 822, 832, 5, 94, 48, 2, 823, 824, 5, 94, 48, 2, 824, 825, 7, 186, 2, 2, 825, 826, 5, 134, 68, 2, 826, 827, 7, 123, 2, 2, 827, 828, 5, 94, 48, 2, 828, 829, 7, 154, 2, 2, 829, 830, 5, 392, 197, 2, 830, 832, 3, 2, 2, 2, 831, 821, 3, 2, 2, 2, 831, 823, 3, 2, 2, 2, 832, 883, 3, 2, 2, 2, 833, 834, 12, 10, 2, 2, 834, 835, 5, 132, 67, 2, 835, 836, 7, 123, 2, 2, 836, 837, 5, 94, 48, 2, 837, 838, 5, 136, 69, 2, 838, 882, 3, 2, 2, 2, 839, 840, 12, 9, 2, 2, 840, 841, 5, 132, 67, 2, 841, 842, 7, 123, 2, 2, 842, 843, 5, 94, 48, 2, 843, 844, 5, 138, 70, 2, 844, 845, 7, 95, 2, 2, 845, 846, 7, 239, 2, 2, 846, 882, 3, 2, 2, 2, 847, 848, 12, 8, 2, 2, 848, 849, 5, 132, 67, 2, 849, 850, 7, 144, 2, 2, 850, 851, 5, 94, 48, 2, 851, 852, 5, 136, 69, 2, 852, 882, 3, 2, 2, 2, 853, 854, 12, 7, 2, 2, 854, 855, 5, 132, 67, 2, 855, 856, 7, 144, 2, 2, 856, 857, 5, 94, 48, 2, 857, 858, 5, 138, 70, 2, 858, 859, 7, 95, 2, 2, 859, 860, 7, 239, 2, 2, 860, 882, 3, 2, 2, 2, 861, 862, 12, 6, 2, 2, 862, 863, 5, 132, 67, 2, 863, 864, 5, 96, 49, 2, 864, 865, 5, 392, 197, 2, 865, 866, 5, 82, 42, 2, 866, 882, 3, 2, 2, 2, 867, 868, 12, 5, 2, 2, 868, 869, 5, 132, 67, 2, 869, 870, 7, 123, 2, 2, 870, 871, 5, 94, 48, 2, 871, 872, 7, 154, 2, 2, 872, 873, 5, 392, 197, 2, 873, 882, 3, 2, 2, 2, 874, 875, 12, 4, 2, 2, 875, 876, 5, 132, 67, 2, 876, 877, 7, 144, 2, 2, 877, 878, 5, 94, 48, 2, 878, 879, 7, 154, 2, 2, 879, 880, 5, 392, 197, 2, 880, 882, 3, 2, 2, 2, 881, 833, 3, 2, 2, 2, 881, 839, 3, 2, 2, 2, 881, 847, 3, 2, 2, 2, 881, 853, 3, 2, 2, 2, 881, 861, 3, 2, 2, 2, 881, 867, 3, 2, 2, 2, 881, 874, 3, 2, 2, 2, 882, 885, 3, 2, 2, 2, 883, 881, 3, 2, 2, 2, 883, 884, 3, 2, 2, 2, 884, 93, 3, 2, 2, 2, 885, 883, 3, 2, 2, 2, 886, 892, 5, 98, 50, 2, 887, 888, 5, 392, 197, 2, 888, 889, 5, 82, 42, 2, 889, 890, 5, 112, 57, 2, 890, 892, 3, 2, 2, 2, 891, 886, 3, 2, 2, 2, 891, 887, 3, 2, 2, 2, 892, 95, 3, 2, 2, 2, 893, 894, 9, 4, 2, 2, 894, 97, 3, 2, 2, 2, 895, 896, 5, 100, 51, 2, 896, 897, 5, 82, 42, 2, 897, 898, 5, 112, 57, 2, 898, 99, 3, 2, 2, 2, 899, 900, 5, 102, 52, 2, 900, 901, 5, 110, 56, 2, 901, 910, 3, 2, 2, 2, 902, 903, 5, 102, 52, 2, 903, 904, 5, 106, 54, 2, 904, 905, 7, 9, 2, 2, 905, 906, 5, 108, 55, 2, 906, 907, 7, 9, 2, 2, 907, 908, 5, 110, 56, 2, 908, 910, 3, 2, 2, 2, 909, 899, 3, 2, 2, 2, 909, 902, 3, 2, 2, 2, 910, 101, 3, 2, 2, 2, 911, 915, 5, 104, 53, 2, 912, 913, 7, 203, 2, 2, 913, 915, 7, 28, 2, 2, 914, 911, 3, 2, 2, 2, 914, 912, 3, 2, 2, 2, 915, 103, 3, 2, 2, 2, 916, 917, 7, 239, 2, 2, 917, 918, 7, 28, 2, 2, 918, 105, 3, 2, 2, 2, 919, 920, 7, 239, 2, 2, 920, 107, 3, 2, 2, 2, 921, 922, 7, 239, 2, 2, 922, 109, 3, 2, 2, 2, 923, 924, 7, 239, 2, 2, 924, 111, 3, 2, 2, 2, 925, 929, 3, 2, 2, 2, 926, 927, 7, 221, 2, 2, 927, 929, 5, 114, 58, 2, 928, 925, 3, 2, 2, 2, 928, 926, 3, 2, 2, 2, 929, 113, 3, 2, 2, 2, 930, 946, 5, 116, 59, 2, 931, 946, 5, 118, 60, 2, 932, 946, 5, 120, 61, 2, 933, 934, 5, 118, 60, 2, 934, 935, 5, 120, 61, 2, 935, 946, 3, 2, 2, 2, 936, 937, 5, 120, 61, 2, 937, 938, 5, 118, 60, 2, 938, 946, 3, 2, 2, 2, 939, 940, 5, 116, 59, 2, 940, 941, 5, 120, 61, 2, 941, 946, 3, 2, 2, 2, 942, 943, 5, 120, 61, 2, 943, 944, 5, 116, 59, 2, 944, 946, 3, 2, 2, 2, 945, 930, 3, 2, 2, 2, 945, 931, 3, 2, 2, 2, 945, 932, 3, 2, 2, 2, 945, 933, 3, 2, 2, 2, 945, 936, 3, 2, 2, 2, 945, 939, 3, 2, 2, 2, 945, 942, 3, 2, 2, 2, 946, 115, 3, 2, 2, 2, 947, 948, 5, 122, 62, 2, 948, 949, 7, 125, 2, 2, 949, 950, 5, 392, 197, 2, 950, 117, 3, 2, 2, 2, 951, 952, 7, 113, 2, 2, 952, 953, 7, 23, 2, 2, 953, 954, 5, 124, 63, 2, 954, 955, 7, 24, 2, 2, 955, 119, 3, 2, 2, 2, 956, 957, 7, 105, 2, 2, 957, 958, 7, 23, 2, 2, 958, 959, 5, 128, 65, 2, 959, 960, 7, 24, 2, 2, 960, 963, 3, 2, 2, 2, 961, 963, 7, 145, 2, 2, 962, 956, 3, 2, 2, 2, 962, 961, 3, 2, 2, 2, 963, 121, 3, 2, 2, 2, 964, 967, 3, 2, 2, 2, 965, 967, 7, 169, 2, 2, 966, 964, 3, 2, 2, 2, 966, 965, 3, 2, 2, 2, 967, 123, 3, 2, 2, 2, 968, 969, 8, 63, 1, 2, 969, 970, 5, 126, 64, 2, 970, 976, 3, 2, 2, 2, 971, 972, 12, 3, 2, 2, 972, 973, 7, 27, 2, 2, 973, 975, 5, 126, 64, 2, 974, 971, 3, 2, 2, 2, 975, 978, 3, 2, 2, 2, 976, 974, 3, 2, 2, 2, 976, 977, 3, 2, 2, 2, 977, 125, 3, 2, 2, 2, 978, 976, 3, 2, 2, 2, 979, 980, 5, 322, 162, 2, 980, 981, 5, 332, 167, 2, 981, 127, 3, 2, 2, 2, 982, 983, 9, 5, 2, 2, 983, 129, 3, 2, 2, 2, 984, 985, 5, 112, 57, 2, 985, 131, 3, 2, 2, 2, 986, 991, 3, 2, 2, 2, 987, 991, 7, 116, 2, 2, 988, 989, 7, 130, 2, 2, 989, 991, 5, 134, 68, 2, 990, 986, 3, 2, 2, 2, 990, 987, 3, 2, 2, 2, 990, 988, 3, 2, 2, 2, 991, 133, 3, 2, 2, 2, 992, 995, 3, 2, 2, 2, 993, 995, 7, 160, 2, 2, 994, 992, 3, 2, 2, 2, 994, 993, 3, 2, 2, 2, 995, 135, 3, 2, 2, 2, 996, 997, 7, 154, 2, 2, 997, 998, 5, 122, 62, 2, 998, 999, 7, 125, 2, 2, 999, 1000, 5, 392, 197, 2, 1000, 137, 3, 2, 2, 2, 1001, 1002, 7, 154, 2, 2, 1002, 1003, 5, 122, 62, 2, 1003, 1004, 7, 124, 2, 2, 1004, 1005, 5, 392, 197, 2, 1005, 139, 3, 2, 2, 2, 1006, 1009, 3, 2, 2, 2, 1007, 1009, 5, 142, 72, 2, 1008, 1006, 3, 2, 2, 2, 1008, 1007, 3, 2, 2, 2, 1009, 141, 3, 2, 2, 2, 1010, 1011, 7, 131, 2, 2, 1011, 1012, 5, 144, 73, 2, 1012, 143, 3, 2, 2, 2, 1013, 1014, 8, 73, 1, 2, 1014, 1015, 5, 146, 74, 2, 1015, 1021, 3, 2, 2, 2, 1016, 1017, 12, 3, 2, 2, 1017, 1018, 7, 27, 2, 2, 1018, 1020, 5, 146, 74, 2, 1019, 1016, 3, 2, 2, 2, 1020, 1023, 3, 2, 2, 2, 1021, 1019, 3, 2, 2, 2, 1021, 1022, 3, 2, 2, 2, 1022, 145, 3, 2, 2, 2, 1023, 1021, 3, 2, 2, 2, 1024, 1025, 5, 86, 44, 2, 1025, 1026, 7, 16, 2, 2, 1026, 1027, 5, 392, 197, 2, 1027, 147, 3, 2, 2, 2, 1028, 1032, 3, 2, 2, 2, 1029, 1030, 7, 234, 2, 2, 1030, 1032, 5, 150, 76, 2, 1031, 1028, 3, 2, 2, 2, 1031, 1029, 3, 2, 2, 2, 1032, 149, 3, 2, 2, 2, 1033, 1034, 8, 76, 1, 2, 1034, 1035, 5, 152, 77, 2, 1035, 1041, 3, 2, 2, 2, 1036, 1037, 12, 3, 2, 2, 1037, 1038, 7, 27, 2, 2, 1038, 1040, 5, 152, 77, 2, 1039, 1036, 3, 2, 2, 2, 1040, 1043, 3, 2, 2, 2, 1041, 1039, 3, 2, 2, 2, 1041, 1042, 3, 2, 2, 2, 1042, 151, 3, 2, 2, 2, 1043, 1041, 3, 2, 2, 2, 1044, 1045, 5, 86, 44, 2, 1045, 1046, 7, 41, 2, 2, 1046, 1047, 5, 448, 225, 2, 1047, 153, 3, 2, 2, 2, 1048, 1051, 3, 2, 2, 2, 1049, 1051, 5, 156, 79, 2, 1050, 1048, 3, 2, 2, 2, 1050, 1049, 3, 2, 2, 2, 1051, 155, 3, 2, 2, 2, 1052, 1053, 7, 231, 2, 2, 1053, 1054, 5, 392, 197, 2, 1054, 157, 3, 2, 2, 2, 1055, 1058, 3, 2, 2, 2, 1056, 1058, 5, 160, 81, 2, 1057, 1055, 3, 2, 2, 2, 1057, 1056, 3, 2, 2, 2, 1058, 159, 3, 2, 2, 2, 1059, 1060, 7, 102, 2, 2, 1060, 1061, 7, 51, 2, 2, 1061, 1062, 5, 162, 82, 2, 1062, 1063, 5, 166, 84, 2, 1063, 1064, 5, 170, 86, 2, 1064, 1067, 3, 2, 2, 2, 1065, 1067, 5, 168, 85, 2, 1066, 1059, 3, 2, 2, 2, 1066, 1065, 3, 2, 2, 2, 1067, 161, 3, 2, 2, 2, 1068, 1069, 8, 82, 1, 2, 1069, 1070, 5, 164, 83, 2, 1070, 1076, 3, 2, 2, 2, 1071, 1072, 12, 3, 2, 2, 1072, 1073, 7, 27, 2, 2, 1073, 1075, 5, 164, 83, 2, 1074, 1071, 3, 2, 2, 2, 1075, 1078, 3, 2, 2, 2, 1076, 1074, 3, 2, 2, 2, 1076, 1077, 3, 2, 2, 2, 1077, 163, 3, 2, 2, 2, 1078, 1076, 3, 2, 2, 2, 1079, 1080, 5, 392, 197, 2, 1080, 1081, 5, 82, 42, 2, 1081, 165, 3, 2, 2, 2, 1082, 1085, 3, 2, 2, 2, 1083, 1085, 5, 168, 85, 2, 1084, 1082, 3, 2, 2, 2, 1084, 1083, 3, 2, 2, 2, 1085, 167, 3, 2, 2, 2, 1086, 1087, 7, 132, 2, 2, 1087, 1088, 5, 144, 73, 2, 1088, 169, 3, 2, 2, 2, 1089, 1092, 3, 2, 2, 2, 1090, 1092, 5, 172, 87, 2, 1091, 1089, 3, 2, 2, 2, 1091, 1090, 3, 2, 2, 2, 1092, 171, 3, 2, 2, 2, 1093, 1094, 7, 106, 2, 2, 1094, 1095, 5, 392, 197, 2, 1095, 173, 3, 2, 2, 2, 1096, 1099, 3, 2, 2, 2, 1097, 1099, 5, 176, 89, 2, 1098, 1096, 3, 2, 2, 2, 1098, 1097, 3, 2, 2, 2, 1099, 175, 3, 2, 2, 2, 1100, 1101, 7, 158, 2, 2, 1101, 1102, 7, 51, 2, 2, 1102, 1103, 5, 178, 90, 2, 1103, 177, 3, 2, 2, 2, 1104, 1105, 8, 90, 1, 2, 1105, 1106, 5, 180, 91, 2, 1106, 1112, 3, 2, 2, 2, 1107, 1108, 12, 3, 2, 2, 1108, 1109, 7, 27, 2, 2, 1109, 1111, 5, 180, 91, 2, 1110, 1107, 3, 2, 2, 2, 1111, 1114, 3, 2, 2, 2, 1112, 1110, 3, 2, 2, 2, 1112, 1113, 3, 2, 2, 2, 1113, 179, 3, 2, 2, 2, 1114, 1112, 3, 2, 2, 2, 1115, 1116, 5, 392, 197, 2, 1116, 1117, 5, 182, 92, 2, 1117, 1118, 5, 186, 94, 2, 1118, 181, 3, 2, 2, 2, 1119, 1122, 3, 2, 2, 2, 1120, 1122, 5, 184, 93, 2, 1121, 1119, 3, 2, 2, 2, 1121, 1120, 3, 2, 2, 2, 1122, 183, 3, 2, 2, 2, 1123, 1124, 9, 6, 2, 2, 1124, 185, 3, 2, 2, 2, 1125, 1130, 3, 2, 2, 2, 1126, 1127, 5, 190, 96, 2, 1127, 1128, 5, 188, 95, 2, 1128, 1130, 3, 2, 2, 2, 1129, 1125, 3, 2, 2, 2, 1129, 1126, 3, 2, 2, 2, 1130, 187, 3, 2, 2, 2, 1131, 1132, 9, 7, 2, 2, 1132, 189, 3, 2, 2, 2, 1133, 1134, 7, 150, 2, 2, 1134, 191, 3, 2, 2, 2, 1135, 1138, 3, 2, 2, 2, 1136, 1138, 5, 194, 98, 2, 1137, 1135, 3, 2, 2, 2, 1137, 1136, 3, 2, 2, 2, 1138, 193, 3, 2, 2, 2, 1139, 1140, 7, 135, 2, 2, 1140, 1141, 5, 392, 197, 2, 1141, 195, 3, 2, 2, 2, 1142, 1145, 3, 2, 2, 2, 1143, 1145, 5, 198, 100, 2, 1144, 1142, 3, 2, 2, 2, 1144, 1143, 3, 2, 2, 2, 1145, 197, 3, 2, 2, 2, 1146, 1147, 7, 153, 2, 2, 1147, 1148, 5, 392, 197, 2, 1148, 199, 3, 2, 2, 2, 1149, 1150, 7, 117, 2, 2, 1150, 1151, 7, 119, 2, 2, 1151, 1152, 5, 204, 103, 2, 1152, 1153, 5, 206, 104, 2, 1153, 1154, 5, 210, 106, 2, 1154, 1155, 5, 220, 111, 2, 1155, 1166, 3, 2, 2, 2, 1156, 1157, 7, 117, 2, 2, 1157, 1158, 7, 119, 2, 2, 1158, 1159, 5, 204, 103, 2, 1159, 1160, 7, 23, 2, 2, 1160, 1161, 5, 232, 117, 2, 1161, 1162, 7, 24, 2, 2, 1162, 1163, 5, 58, 30, 2, 1163, 1164, 5, 220, 111, 2, 1164, 1166, 3, 2, 2, 2, 1165, 1149, 3, 2, 2, 2, 1165, 1156, 3, 2, 2, 2, 1166, 201, 3, 2, 2, 2, 1167, 1168, 5, 110, 56, 2, 1168, 1169, 5, 82, 42, 2, 1169, 1181, 3, 2, 2, 2, 1170, 1171, 5, 100, 51, 2, 1171, 1172, 5, 82, 42, 2, 1172, 1181, 3, 2, 2, 2, 1173, 1174, 5, 106, 54, 2, 1174, 1175, 7, 9, 2, 2, 1175, 1176, 5, 108, 55, 2, 1176, 1177, 7, 9, 2, 2, 1177, 1178, 5, 110, 56, 2, 1178, 1179, 5, 82, 42, 2, 1179, 1181, 3, 2, 2, 2, 1180, 1167, 3, 2, 2, 2, 1180, 1170, 3, 2, 2, 2, 1180, 1173, 3, 2, 2, 2, 1181, 203, 3, 2, 2, 2, 1182, 1187, 5, 202, 102, 2, 1183, 1184, 5, 418, 210, 2, 1184, 1185, 5, 82, 42, 2, 1185, 1187, 3, 2, 2, 2, 1186, 1182, 3, 2, 2, 2, 1186, 1183, 3, 2, 2, 2, 1187, 205, 3, 2, 2, 2, 1188, 1206, 3, 2, 2, 2, 1189, 1190, 7, 23, 2, 2, 1190, 1191, 5, 122, 62, 2, 1191, 1192, 7, 124, 2, 2, 1192, 1193, 7, 27, 2, 2, 1193, 1194, 7, 225, 2, 2, 1194, 1195, 7, 24, 2, 2, 1195, 1206, 3, 2, 2, 2, 1196, 1197, 7, 23, 2, 2, 1197, 1198, 5, 122, 62, 2, 1198, 1199, 7, 124, 2, 2, 1199, 1200, 7, 27, 2, 2, 1200, 1201, 7, 225, 2, 2, 1201, 1202, 7, 27, 2, 2, 1202, 1203, 7, 156, 2, 2, 1203, 1204, 7, 24, 2, 2, 1204, 1206, 3, 2, 2, 2, 1205, 1188, 3, 2, 2, 2, 1205, 1189, 3, 2, 2, 2, 1205, 1196, 3, 2, 2, 2, 1206, 207, 3, 2, 2, 2, 1207, 1208, 5, 122, 62, 2, 1208, 1209, 7, 124, 2, 2, 1209, 209, 3, 2, 2, 2, 1210, 1211, 8, 106, 1, 2, 1211, 1212, 5, 212, 107, 2, 1212, 1218, 3, 2, 2, 2, 1213, 1214, 12, 3, 2, 2, 1214, 1215, 7, 27, 2, 2, 1215, 1217, 5, 214, 108, 2, 1216, 1213, 3, 2, 2, 2, 1217, 1220, 3, 2, 2, 2, 1218, 1216, 3, 2, 2, 2, 1218, 1219, 3, 2, 2, 2, 1219, 211, 3, 2, 2, 2, 1220, 1218, 3, 2, 2, 2, 1221, 1222, 7, 227, 2, 2, 1222, 1226, 5, 216, 109, 2, 1223, 1224, 7, 227, 2, 2, 1224, 1226, 5, 218, 110, 2, 1225, 1221, 3, 2, 2, 2, 1225, 1223, 3, 2, 2, 2, 1226, 213, 3, 2, 2, 2, 1227, 1231, 5, 212, 107, 2, 1228, 1231, 5, 216, 109, 2, 1229, 1231, 5, 218, 110, 2, 1230, 1227, 3, 2, 2, 2, 1230, 1228, 3, 2, 2, 2, 1230, 1229, 3, 2, 2, 2, 1231, 215, 3, 2, 2, 2, 1232, 1233, 7, 23, 2, 2, 1233, 1234, 5, 392, 197, 2, 1234, 1235, 7, 27, 2, 2, 1235, 1236, 5, 392, 197, 2, 1236, 1237, 7, 24, 2, 2, 1237, 217, 3, 2, 2, 2, 1238, 1239, 7, 23, 2, 2, 1239, 1240, 5, 392, 197, 2, 1240, 1241, 7, 27, 2, 2, 1241, 1242, 5, 392, 197, 2, 1242, 1243, 7, 27, 2, 2, 1243, 1244, 5, 392, 197, 2, 1244, 1245, 7, 24, 2, 2, 1245, 219, 3, 2, 2, 2, 1246, 1249, 3, 2, 2, 2, 1247, 1249, 5, 222, 112, 2, 1248, 1246, 3, 2, 2, 2, 1248, 1247, 3, 2, 2, 2, 1249, 221, 3, 2, 2, 2, 1250, 1251, 7, 184, 2, 2, 1251, 1252, 5, 224, 113, 2, 1252, 223, 3, 2, 2, 2, 1253, 1258, 5, 78, 40, 2, 1254, 1255, 5, 76, 39, 2, 1255, 1256, 5, 392, 197, 2, 1256, 1258, 3, 2, 2, 2, 1257, 1253, 3, 2, 2, 2, 1257, 1254, 3, 2, 2, 2, 1258, 225, 3, 2, 2, 2, 1259, 1260, 5, 208, 105, 2, 1260, 1261, 5, 392, 197, 2, 1261, 227, 3, 2, 2, 2, 1262, 1263, 7, 225, 2, 2, 1263, 1264, 5, 392, 197, 2, 1264, 229, 3, 2, 2, 2, 1265, 1266, 7, 156, 2, 2, 1266, 1267, 5, 392, 197, 2, 1267, 231, 3, 2, 2, 2, 1268, 1284, 5, 226, 114, 2, 1269, 1270, 5, 226, 114, 2, 1270, 1271, 7, 27, 2, 2, 1271, 1272, 5, 228, 115, 2, 1272, 1284, 3, 2, 2, 2, 1273, 1274, 5, 226, 114, 2, 1274, 1275, 7, 27, 2, 2, 1275, 1276, 5, 228, 115, 2, 1276, 1277, 7, 27, 2, 2, 1277, 1278, 5, 230, 116, 2, 1278, 1284, 3, 2, 2, 2, 1279, 1280, 5, 226, 114, 2, 1280, 1281, 7, 27, 2, 2, 1281, 1282, 5, 230, 116, 2, 1282, 1284, 3, 2, 2, 2, 1283, 1268, 3, 2, 2, 2, 1283, 1269, 3, 2, 2, 2, 1283, 1273, 3, 2, 2, 2, 1283, 1279, 3, 2, 2, 2, 1284, 233, 3, 2, 2, 2, 1285, 1286, 7, 220, 2, 2, 1286, 1287, 7, 119, 2, 2, 1287, 1288, 5, 204, 103, 2, 1288, 1289, 5, 206, 104, 2, 1289, 1290, 5, 210, 106, 2, 1290, 1291, 5, 220, 111, 2, 1291, 1302, 3, 2, 2, 2, 1292, 1293, 7, 220, 2, 2, 1293, 1294, 7, 119, 2, 2, 1294, 1295, 5, 204, 103, 2, 1295, 1296, 7, 23, 2, 2, 1296, 1297, 5, 232, 117, 2, 1297, 1298, 7, 24, 2, 2, 1298, 1299, 5, 58, 30, 2, 1299, 1300, 5, 220, 111, 2, 1300, 1302, 3, 2, 2, 2, 1301, 1285, 3, 2, 2, 2, 1301, 1292, 3, 2, 2, 2, 1302, 235, 3, 2, 2, 2, 1303, 1304, 7, 71, 2, 2, 1304, 1305, 7, 97, 2, 2, 1305, 1306, 5, 204, 103, 2, 1306, 1307, 5, 130, 66, 2, 1307, 1308, 5, 154, 78, 2, 1308, 1309, 5, 192, 97, 2, 1309, 1310, 5, 220, 111, 2, 1310, 237, 3, 2, 2, 2, 1311, 1312, 7, 219, 2, 2, 1312, 1313, 5, 204, 103, 2, 1313, 1314, 5, 130, 66, 2, 1314, 1315, 5, 240, 121, 2, 1315, 1316, 5, 262, 132, 2, 1316, 1317, 5, 154, 78, 2, 1317, 1318, 5, 192, 97, 2, 1318, 1319, 5, 220, 111, 2, 1319, 1337, 3, 2, 2, 2, 1320, 1321, 7, 219, 2, 2, 1321, 1322, 5, 204, 103, 2, 1322, 1323, 5, 130, 66, 2, 1323, 1324, 5, 240, 121, 2, 1324, 1325, 5, 154, 78, 2, 1325, 1326, 5, 192, 97, 2, 1326, 1327, 5, 220, 111, 2, 1327, 1337, 3, 2, 2, 2, 1328, 1329, 7, 219, 2, 2, 1329, 1330, 5, 204, 103, 2, 1330, 1331, 5, 130, 66, 2, 1331, 1332, 5, 262, 132, 2, 1332, 1333, 5, 154, 78, 2, 1333, 1334, 5, 192, 97, 2, 1334, 1335, 5, 220, 111, 2, 1335, 1337, 3, 2, 2, 2, 1336, 1311, 3, 2, 2, 2, 1336, 1320, 3, 2, 2, 2, 1336, 1328, 3, 2, 2, 2, 1337, 239, 3, 2, 2, 2, 1338, 1339, 7, 197, 2, 2, 1339, 1340, 5, 242, 122, 2, 1340, 241, 3, 2, 2, 2, 1341, 1342, 8, 122, 1, 2, 1342, 1343, 5, 244, 123, 2, 1343, 1349, 3, 2, 2, 2, 1344, 1345, 12, 3, 2, 2, 1345, 1346, 7, 27, 2, 2, 1346, 1348, 5, 244, 123, 2, 1347, 1344, 3, 2, 2, 2, 1348, 1351, 3, 2, 2, 2, 1349, 1347, 3, 2, 2, 2, 1349, 1350, 3, 2, 2, 2, 1350, 243, 3, 2, 2, 2, 1351, 1349, 3, 2, 2, 2, 1352, 1353, 5, 390, 196, 2, 1353, 1354, 7, 16, 2, 2, 1354, 1355, 5, 392, 197, 2, 1355, 1356, 5, 248, 125, 2, 1356, 1364, 3, 2, 2, 2, 1357, 1358, 5, 246, 124, 2, 1358, 1359, 7, 9, 2, 2, 1359, 1360, 5, 390, 196, 2, 1360, 1361, 7, 16, 2, 2, 1361, 1362, 5, 392, 197, 2, 1362, 1364, 3, 2, 2, 2, 1363, 1352, 3, 2, 2, 2, 1363, 1357, 3, 2, 2, 2, 1364, 245, 3, 2, 2, 2, 1365, 1366, 5, 434, 218, 2, 1366, 1367, 7, 23, 2, 2, 1367, 1368, 5, 414, 208, 2, 1368, 1369, 7, 24, 2, 2, 1369, 247, 3, 2, 2, 2, 1370, 1373, 3, 2, 2, 2, 1371, 1373, 5, 250, 126, 2, 1372, 1370, 3, 2, 2, 2, 1372, 1371, 3, 2, 2, 2, 1373, 249, 3, 2, 2, 2, 1374, 1375, 5, 252, 127, 2, 1375, 1376, 5, 260, 131, 2, 1376, 1377, 7, 81, 2, 2, 1377, 251, 3, 2, 2, 2, 1378, 1379, 8, 127, 1, 2, 1379, 1380, 7, 95, 2, 2, 1380, 1381, 5, 254, 128, 2, 1381, 1387, 3, 2, 2, 2, 1382, 1383, 12, 3, 2, 2, 1383, 1384, 7, 95, 2, 2, 1384, 1386, 5, 254, 128, 2, 1385, 1382, 3, 2, 2, 2, 1386, 1389, 3, 2, 2, 2, 1387, 1385, 3, 2, 2, 2, 1387, 1388, 3, 2, 2, 2, 1388, 253, 3, 2, 2, 2, 1389, 1387, 3, 2, 2, 2, 1390, 1391, 8, 128, 1, 2, 1391, 1392, 5, 256, 129, 2, 1392, 1398, 3, 2, 2, 2, 1393, 1394, 12, 3, 2, 2, 1394, 1395, 7, 27, 2, 2, 1395, 1397, 5, 256, 129, 2, 1396, 1393, 3, 2, 2, 2, 1397, 1400, 3, 2, 2, 2, 1398, 1396, 3, 2, 2, 2, 1398, 1399, 3, 2, 2, 2, 1399, 255, 3, 2, 2, 2, 1400, 1398, 3, 2, 2, 2, 1401, 1402, 5, 258, 130, 2, 1402, 1403, 7, 110, 2, 2, 1403, 1404, 5, 392, 197, 2, 1404, 1422, 3, 2, 2, 2, 1405, 1406, 5, 258, 130, 2, 1406, 1407, 7, 235, 2, 2, 1407, 1408, 5, 392, 197, 2, 1408, 1422, 3, 2, 2, 2, 1409, 1410, 5, 258, 130, 2, 1410, 1411, 7, 28, 2, 2, 1411, 1412, 5, 258, 130, 2, 1412, 1413, 7, 110, 2, 2, 1413, 1414, 5, 392, 197, 2, 1414, 1422, 3, 2, 2, 2, 1415, 1416, 5, 258, 130, 2, 1416, 1417, 7, 28, 2, 2, 1417, 1418, 5, 258, 130, 2, 1418, 1419, 7, 235, 2, 2, 1419, 1420, 5, 392, 197, 2, 1420, 1422, 3, 2, 2, 2, 1421, 1401, 3, 2, 2, 2, 1421, 1405, 3, 2, 2, 2, 1421, 1409, 3, 2, 2, 2, 1421, 1415, 3, 2, 2, 2, 1422, 257, 3, 2, 2, 2, 1423, 1424, 7, 239, 2, 2, 1424, 259, 3, 2, 2, 2, 1425, 1429, 3, 2, 2, 2, 1426, 1427, 7, 230, 2, 2, 1427, 1429, 5, 392, 197, 2, 1428, 1425, 3, 2, 2, 2, 1428, 1426, 3, 2, 2, 2, 1429, 261, 3, 2, 2, 2, 1430, 1431, 7, 218, 2, 2, 1431, 1432, 5, 264, 133, 2, 1432, 263, 3, 2, 2, 2, 1433, 1434, 8, 133, 1, 2, 1434, 1435, 5, 266, 134, 2, 1435, 1441, 3, 2, 2, 2, 1436, 1437, 12, 3, 2, 2, 1437, 1438, 7, 27, 2, 2, 1438, 1440, 5, 266, 134, 2, 1439, 1436, 3, 2, 2, 2, 1440, 1443, 3, 2, 2, 2, 1441, 1439, 3, 2, 2, 2, 1441, 1442, 3, 2, 2, 2, 1442, 265, 3, 2, 2, 2, 1443, 1441, 3, 2, 2, 2, 1444, 1445, 5, 390, 196, 2, 1445, 1446, 5, 248, 125, 2, 1446, 267, 3, 2, 2, 2, 1447, 1448, 7, 141, 2, 2, 1448, 1449, 7, 119, 2, 2, 1449, 1450, 5, 202, 102, 2, 1450, 1451, 5, 270, 136, 2, 1451, 1452, 7, 223, 2, 2, 1452, 1453, 5, 94, 48, 2, 1453, 1454, 7, 154, 2, 2, 1454, 1455, 5, 272, 137, 2, 1455, 1456, 5, 392, 197, 2, 1456, 1457, 5, 274, 138, 2, 1457, 1458, 5, 192, 97, 2, 1458, 1459, 5, 220, 111, 2, 1459, 269, 3, 2, 2, 2, 1460, 1461, 5, 112, 57, 2, 1461, 271, 3, 2, 2, 2, 1462, 1465, 3, 2, 2, 2, 1463, 1465, 5, 208, 105, 2, 1464, 1462, 3, 2, 2, 2, 1464, 1463, 3, 2, 2, 2, 1465, 273, 3, 2, 2, 2, 1466, 1488, 3, 2, 2, 2, 1467, 1468, 7, 230, 2, 2, 1468, 1469, 7, 139, 2, 2, 1469, 1470, 7, 204, 2, 2, 1470, 1471, 7, 219, 2, 2, 1471, 1472, 5, 280, 141, 2, 1472, 1473, 5, 276, 139, 2, 1473, 1488, 3, 2, 2, 2, 1474, 1475, 7, 230, 2, 2, 1475, 1476, 7, 139, 2, 2, 1476, 1477, 7, 204, 2, 2, 1477, 1478, 7, 71, 2, 2, 1478, 1479, 5, 282, 142, 2, 1479, 1480, 5, 278, 140, 2, 1480, 1488, 3, 2, 2, 2, 1481, 1482, 7, 230, 2, 2, 1482, 1483, 7, 147, 2, 2, 1483, 1484, 7, 139, 2, 2, 1484, 1485, 7, 204, 2, 2, 1485, 1486, 7, 117, 2, 2, 1486, 1488, 5, 284, 143, 2, 1487, 1466, 3, 2, 2, 2, 1487, 1467, 3, 2, 2, 2, 1487, 1474, 3, 2, 2, 2, 1487, 1481, 3, 2, 2, 2, 1488, 275, 3, 2, 2, 2, 1489, 1504, 3, 2, 2, 2, 1490, 1491, 7, 230, 2, 2, 1491, 1492, 7, 139, 2, 2, 1492, 1493, 7, 204, 2, 2, 1493, 1494, 7, 71, 2, 2, 1494, 1495, 5, 282, 142, 2, 1495, 1496, 5, 278, 140, 2, 1496, 1504, 3, 2, 2, 2, 1497, 1498, 7, 230, 2, 2, 1498, 1499, 7, 147, 2, 2, 1499, 1500, 7, 139, 2, 2, 1500, 1501, 7, 204, 2, 2, 1501, 1502, 7, 117, 2, 2, 1502, 1504, 5, 284, 143, 2, 1503, 1489, 3, 2, 2, 2, 1503, 1490, 3, 2, 2, 2, 1503, 1497, 3, 2, 2, 2, 1504, 277, 3, 2, 2, 2, 1505, 1513, 3, 2, 2, 2, 1506, 1507, 7, 230, 2, 2, 1507, 1508, 7, 147, 2, 2, 1508, 1509, 7, 139, 2, 2, 1509, 1510, 7, 204, 2, 2, 1510, 1511, 7, 117, 2, 2, 1511, 1513, 5, 284, 143, 2, 1512, 1505, 3, 2, 2, 2, 1512, 1506, 3, 2, 2, 2, 1513, 279, 3, 2, 2, 2, 1514, 1515, 5, 240, 121, 2, 1515, 1516, 5, 154, 78, 2, 1516, 1525, 3, 2, 2, 2, 1517, 1518, 5, 240, 121, 2, 1518, 1519, 5, 262, 132, 2, 1519, 1520, 5, 154, 78, 2, 1520, 1525, 3, 2, 2, 2, 1521, 1522, 5, 262, 132, 2, 1522, 1523, 5, 154, 78, 2, 1523, 1525, 3, 2, 2, 2, 1524, 1514, 3, 2, 2, 2, 1524, 1517, 3, 2, 2, 2, 1524, 1521, 3, 2, 2, 2, 1525, 281, 3, 2, 2, 2, 1526, 1527, 5, 154, 78, 2, 1527, 283, 3, 2, 2, 2, 1528, 1529, 5, 392, 197, 2, 1529, 1530, 5, 154, 78, 2, 1530, 1543, 3, 2, 2, 2, 1531, 1532, 5, 216, 109, 2, 1532, 1533, 5, 154, 78, 2, 1533, 1543, 3, 2, 2, 2, 1534, 1535, 5, 218, 110, 2, 1535, 1536, 5, 154, 78, 2, 1536, 1543, 3, 2, 2, 2, 1537, 1538, 7, 23, 2, 2, 1538, 1539, 5, 232, 117, 2, 1539, 1540, 7, 24, 2, 2, 1540, 1541, 5, 154, 78, 2, 1541, 1543, 3, 2, 2, 2, 1542, 1528, 3, 2, 2, 2, 1542, 1531, 3, 2, 2, 2, 1542, 1534, 3, 2, 2, 2, 1542, 1537, 3, 2, 2, 2, 1543, 285, 3, 2, 2, 2, 1544, 1545, 7, 101, 2, 2, 1545, 1546, 5, 288, 145, 2, 1546, 1547, 7, 206, 2, 2, 1547, 1548, 5, 296, 149, 2, 1548, 1557, 3, 2, 2, 2, 1549, 1550, 7, 101, 2, 2, 1550, 1551, 5, 288, 145, 2, 1551, 1552, 7, 154, 2, 2, 1552, 1553, 5, 292, 147, 2, 1553, 1554, 7, 206, 2, 2, 1554, 1555, 5, 296, 149, 2, 1555, 1557, 3, 2, 2, 2, 1556, 1544, 3, 2, 2, 2, 1556, 1549, 3, 2, 2, 2, 1557, 287, 3, 2, 2, 2, 1558, 1559, 8, 145, 1, 2, 1559, 1560, 5, 290, 146, 2, 1560, 1566, 3, 2, 2, 2, 1561, 1562, 12, 3, 2, 2, 1562, 1563, 7, 27, 2, 2, 1563, 1565, 5, 290, 146, 2, 1564, 1561, 3, 2, 2, 2, 1565, 1568, 3, 2, 2, 2, 1566, 1564, 3, 2, 2, 2, 1566, 1567, 3, 2, 2, 2, 1567, 289, 3, 2, 2, 2, 1568, 1566, 3, 2, 2, 2, 1569, 1570, 9, 8, 2, 2, 1570, 291, 3, 2, 2, 2, 1571, 1572, 8, 147, 1, 2, 1572, 1573, 5, 294, 148, 2, 1573, 1579, 3, 2, 2, 2, 1574, 1575, 12, 3, 2, 2, 1575, 1576, 7, 27, 2, 2, 1576, 1578, 5, 294, 148, 2, 1577, 1574, 3, 2, 2, 2, 1578, 1581, 3, 2, 2, 2, 1579, 1577, 3, 2, 2, 2, 1579, 1580, 3, 2, 2, 2, 1580, 293, 3, 2, 2, 2, 1581, 1579, 3, 2, 2, 2, 1582, 1609, 5, 110, 56, 2, 1583, 1584, 5, 104, 53, 2, 1584, 1585, 5, 110, 56, 2, 1585, 1609, 3, 2, 2, 2, 1586, 1587, 5, 104, 53, 2, 1587, 1588, 5, 106, 54, 2, 1588, 1589, 7, 9, 2, 2, 1589, 1590, 5, 108, 55, 2, 1590, 1591, 7, 9, 2, 2, 1591, 1592, 5, 110, 56, 2, 1592, 1609, 3, 2, 2, 2, 1593, 1594, 5, 106, 54, 2, 1594, 1595, 7, 9, 2, 2, 1595, 1596, 5, 108, 55, 2, 1596, 1597, 7, 9, 2, 2, 1597, 1598, 5, 110, 56, 2, 1598, 1609, 3, 2, 2, 2, 1599, 1600, 5, 104, 53, 2, 1600, 1601, 5, 106, 54, 2, 1601, 1602, 7, 9, 2, 2, 1602, 1603, 5, 108, 55, 2, 1603, 1609, 3, 2, 2, 2, 1604, 1605, 5, 106, 54, 2, 1605, 1606, 7, 9, 2, 2, 1606, 1607, 5, 108, 55, 2, 1607, 1609, 3, 2, 2, 2, 1608, 1582, 3, 2, 2, 2, 1608, 1583, 3, 2, 2, 2, 1608, 1586, 3, 2, 2, 2, 1608, 1593, 3, 2, 2, 2, 1608, 1599, 3, 2, 2, 2, 1608, 1604, 3, 2, 2, 2, 1609, 295, 3, 2, 2, 2, 1610, 1611, 8, 149, 1, 2, 1611, 1612, 5, 298, 150, 2, 1612, 1618, 3, 2, 2, 2, 1613, 1614, 12, 3, 2, 2, 1614, 1615, 7, 27, 2, 2, 1615, 1617, 5, 298, 150, 2, 1616, 1613, 3, 2, 2, 2, 1617, 1620, 3, 2, 2, 2, 1618, 1616, 3, 2, 2, 2, 1618, 1619, 3, 2, 2, 2, 1619, 297, 3, 2, 2, 2, 1620, 1618, 3, 2, 2, 2, 1621, 1626, 7, 239, 2, 2, 1622, 1623, 7, 239, 2, 2, 1623, 1624, 7, 28, 2, 2, 1624, 1626, 7, 239, 2, 2, 1625, 1621, 3, 2, 2, 2, 1625, 1622, 3, 2, 2, 2, 1626, 299, 3, 2, 2, 2, 1627, 1628, 7, 185, 2, 2, 1628, 1629, 5, 288, 145, 2, 1629, 1630, 7, 97, 2, 2, 1630, 1631, 5, 296, 149, 2, 1631, 1640, 3, 2, 2, 2, 1632, 1633, 7, 185, 2, 2, 1633, 1634, 5, 288, 145, 2, 1634, 1635, 7, 154, 2, 2, 1635, 1636, 5, 292, 147, 2, 1636, 1637, 7, 97, 2, 2, 1637, 1638, 5, 296, 149, 2, 1638, 1640, 3, 2, 2, 2, 1639, 1627, 3, 2, 2, 2, 1639, 1632, 3, 2, 2, 2, 1640, 301, 3, 2, 2, 2, 1641, 1642, 7, 64, 2, 2, 1642, 1643, 7, 194, 2, 2, 1643, 1645, 5, 328, 165, 2, 1644, 1646, 5, 522, 262, 2, 1645, 1644, 3, 2, 2, 2, 1645, 1646, 3, 2, 2, 2, 1646, 303, 3, 2, 2, 2, 1647, 1648, 7, 77, 2, 2, 1648, 1649, 7, 194, 2, 2, 1649, 1651, 5, 328, 165, 2, 1650, 1652, 5, 520, 261, 2, 1651, 1650, 3, 2, 2, 2, 1651, 1652, 3, 2, 2, 2, 1652, 305, 3, 2, 2, 2, 1653, 1654, 7, 64, 2, 2, 1654, 1655, 7, 57, 2, 2, 1655, 1657, 5, 324, 163, 2, 1656, 1658, 5, 522, 262, 2, 1657, 1656, 3, 2, 2, 2, 1657, 1658, 3, 2, 2, 2, 1658, 307, 3, 2, 2, 2, 1659, 1660, 7, 77, 2, 2, 1660, 1661, 7, 57, 2, 2, 1661, 1663, 5, 324, 163, 2, 1662, 1664, 5, 520, 261, 2, 1663, 1662, 3, 2, 2, 2, 1663, 1664, 3, 2, 2, 2, 1664, 309, 3, 2, 2, 2, 1665, 1666, 5, 312, 157, 2, 1666, 1667, 7, 57, 2, 2, 1667, 1668, 5, 324, 163, 2, 1668, 311, 3, 2, 2, 2, 1669, 1670, 9, 9, 2, 2, 1670, 313, 3, 2, 2, 2, 1671, 1672, 7, 64, 2, 2, 1672, 1673, 7, 113, 2, 2, 1673, 1674, 5, 320, 161, 2, 1674, 1675, 7, 154, 2, 2, 1675, 1676, 5, 324, 163, 2, 1676, 1677, 7, 23, 2, 2, 1677, 1678, 5, 340, 171, 2, 1678, 1679, 7, 24, 2, 2, 1679, 1680, 5, 330, 166, 2, 1680, 1681, 5, 350, 176, 2, 1681, 1682, 5, 332, 167, 2, 1682, 1684, 5, 336, 169, 2, 1683, 1685, 5, 522, 262, 2, 1684, 1683, 3, 2, 2, 2, 1684, 1685, 3, 2, 2, 2, 1685, 315, 3, 2, 2, 2, 1686, 1687, 7, 64, 2, 2, 1687, 1688, 7, 169, 2, 2, 1688, 1689, 7, 113, 2, 2, 1689, 1690, 5, 318, 160, 2, 1690, 1691, 7, 154, 2, 2, 1691, 1692, 5, 324, 163, 2, 1692, 1693, 5, 330, 166, 2, 1693, 1694, 5, 332, 167, 2, 1694, 1696, 5, 336, 169, 2, 1695, 1697, 5, 522, 262, 2, 1696, 1695, 3, 2, 2, 2, 1696, 1697, 3, 2, 2, 2, 1697, 317, 3, 2, 2, 2, 1698, 1701, 3, 2, 2, 2, 1699, 1701, 5, 320, 161, 2, 1700, 1698, 3, 2, 2, 2, 1700, 1699, 3, 2, 2, 2, 1701, 319, 3, 2, 2, 2, 1702, 1703, 7, 239, 2, 2, 1703, 321, 3, 2, 2, 2, 1704, 1707, 3, 2, 2, 2, 1705, 1707, 5, 320, 161, 2, 1706, 1704, 3, 2, 2, 2, 1706, 1705, 3, 2, 2, 2, 1707, 323, 3, 2, 2, 2, 1708, 1719, 5, 326, 164, 2, 1709, 1710, 5, 104, 53, 2, 1710, 1711, 5, 106, 54, 2, 1711, 1719, 3, 2, 2, 2, 1712, 1713, 5, 106, 54, 2, 1713, 1714, 7, 9, 2, 2, 1714, 1715, 5, 108, 55, 2, 1715, 1716, 7, 9, 2, 2, 1716, 1717, 5, 110, 56, 2, 1717, 1719, 3, 2, 2, 2, 1718, 1708, 3, 2, 2, 2, 1718, 1709, 3, 2, 2, 2, 1718, 1712, 3, 2, 2, 2, 1719, 325, 3, 2, 2, 2, 1720, 1729, 5, 110, 56, 2, 1721, 1722, 5, 104, 53, 2, 1722, 1723, 5, 106, 54, 2, 1723, 1724, 7, 9, 2, 2, 1724, 1725, 5, 108, 55, 2, 1725, 1726, 7, 9, 2, 2, 1726, 1727, 5, 110, 56, 2, 1727, 1729, 3, 2, 2, 2, 1728, 1720, 3, 2, 2, 2, 1728, 1721, 3, 2, 2, 2, 1729, 327, 3, 2, 2, 2, 1730, 1731, 5, 104, 53, 2, 1731, 1732, 5, 106, 54, 2, 1732, 1733, 7, 9, 2, 2, 1733, 1734, 5, 108, 55, 2, 1734, 1740, 3, 2, 2, 2, 1735, 1736, 5, 106, 54, 2, 1736, 1737, 7, 9, 2, 2, 1737, 1738, 5, 108, 55, 2, 1738, 1740, 3, 2, 2, 2, 1739, 1730, 3, 2, 2, 2, 1739, 1735, 3, 2, 2, 2, 1740, 329, 3, 2, 2, 2, 1741, 1750, 3, 2, 2, 2, 1742, 1743, 7, 163, 2, 2, 1743, 1744, 7, 51, 2, 2, 1744, 1745, 7, 105, 2, 2, 1745, 1746, 7, 23, 2, 2, 1746, 1747, 5, 416, 209, 2, 1747, 1748, 7, 24, 2, 2, 1748, 1750, 3, 2, 2, 2, 1749, 1741, 3, 2, 2, 2, 1749, 1742, 3, 2, 2, 2, 1750, 331, 3, 2, 2, 2, 1751, 1754, 3, 2, 2, 2, 1752, 1754, 5, 334, 168, 2, 1753, 1751, 3, 2, 2, 2, 1753, 1752, 3, 2, 2, 2, 1754, 333, 3, 2, 2, 2, 1755, 1756, 7, 223, 2, 2, 1756, 1762, 7, 229, 2, 2, 1757, 1758, 7, 223, 2, 2, 1758, 1762, 7, 104, 2, 2, 1759, 1760, 7, 223, 2, 2, 1760, 1762, 7, 98, 2, 2, 1761, 1755, 3, 2, 2, 2, 1761, 1757, 3, 2, 2, 2, 1761, 1759, 3, 2, 2, 2, 1762, 335, 3, 2, 2, 2, 1763, 1766, 3, 2, 2, 2, 1764, 1766, 5, 338, 170, 2, 1765, 1763, 3, 2, 2, 2, 1765, 1764, 3, 2, 2, 2, 1766, 337, 3, 2, 2, 2, 1767, 1768, 7, 234, 2, 2, 1768, 1769, 5, 392, 197, 2, 1769, 339, 3, 2, 2, 2, 1770, 1771, 8, 171, 1, 2, 1771, 1772, 5, 342, 172, 2, 1772, 1778, 3, 2, 2, 2, 1773, 1774, 12, 3, 2, 2, 1774, 1775, 7, 27, 2, 2, 1775, 1777, 5, 342, 172, 2, 1776, 1773, 3, 2, 2, 2, 1777, 1780, 3, 2, 2, 2, 1778, 1776, 3, 2, 2, 2, 1778, 1779, 3, 2, 2, 2, 1779, 341, 3, 2, 2, 2, 1780, 1778, 3, 2, 2, 2, 1781, 1782, 5, 344, 173, 2, 1782, 1783, 5, 352, 177, 2, 1783, 343, 3, 2, 2, 2, 1784, 1795, 5, 346, 174, 2, 1785, 1786, 5, 348, 175, 2, 1786, 1787, 5, 346, 174, 2, 1787, 1795, 3, 2, 2, 2, 1788, 1789, 5, 348, 175, 2, 1789, 1790, 7, 75, 2, 2, 1790, 1791, 5, 346, 174, 2, 1791, 1795, 3, 2, 2, 2, 1792, 1793, 7, 75, 2, 2, 1793, 1795, 5, 346, 174, 2, 1794, 1784, 3, 2, 2, 2, 1794, 1785, 3, 2, 2, 2, 1794, 1788, 3, 2, 2, 2, 1794, 1792, 3, 2, 2, 2, 1795, 345, 3, 2, 2, 2, 1796, 1797, 5, 392, 197, 2, 1797, 347, 3, 2, 2, 2, 1798, 1799, 9, 10, 2, 2, 1799, 349, 3, 2, 2, 2, 1800, 1804, 3, 2, 2, 2, 1801, 1802, 7, 231, 2, 2, 1802, 1804, 5, 346, 174, 2, 1803, 1800, 3, 2, 2, 2, 1803, 1801, 3, 2, 2, 2, 1804, 351, 3, 2, 2, 2, 1805, 1811, 3, 2, 2, 2, 1806, 1811, 5, 354, 178, 2, 1807, 1808, 5, 354, 178, 2, 1808, 1809, 5, 354, 178, 2, 1809, 1811, 3, 2, 2, 2, 1810, 1805, 3, 2, 2, 2, 1810, 1806, 3, 2, 2, 2, 1810, 1807, 3, 2, 2, 2, 1811, 353, 3, 2, 2, 2, 1812, 1813, 9, 11, 2, 2, 1813, 355, 3, 2, 2, 2, 1814, 1815, 7, 77, 2, 2, 1815, 1816, 7, 169, 2, 2, 1816, 1817, 7, 113, 2, 2, 1817, 1818, 7, 154, 2, 2, 1818, 1819, 5, 324, 163, 2, 1819, 1820, 5, 332, 167, 2, 1820, 1836, 3, 2, 2, 2, 1821, 1822, 7, 77, 2, 2, 1822, 1823, 7, 113, 2, 2, 1823, 1824, 5, 326, 164, 2, 1824, 1825, 7, 9, 2, 2, 1825, 1826, 5, 320, 161, 2, 1826, 1827, 5, 332, 167, 2, 1827, 1836, 3, 2, 2, 2, 1828, 1829, 7, 77, 2, 2, 1829, 1830, 7, 113, 2, 2, 1830, 1831, 5, 320, 161, 2, 1831, 1832, 7, 154, 2, 2, 1832, 1833, 5, 324, 163, 2, 1833, 1834, 5, 332, 167, 2, 1834, 1836, 3, 2, 2, 2, 1835, 1814, 3, 2, 2, 2, 1835, 1821, 3, 2, 2, 2, 1835, 1828, 3, 2, 2, 2, 1836, 357, 3, 2, 2, 2, 1837, 1838, 7, 36, 2, 2, 1838, 1839, 7, 113, 2, 2, 1839, 1840, 5, 326, 164, 2, 1840, 1841, 7, 9, 2, 2, 1841, 1842, 5, 320, 161, 2, 1842, 1843, 5, 332, 167, 2, 1843, 1844, 5, 338, 170, 2, 1844, 1854, 3, 2, 2, 2, 1845, 1846, 7, 36, 2, 2, 1846, 1847, 7, 113, 2, 2, 1847, 1848, 5, 320, 161, 2, 1848, 1849, 7, 154, 2, 2, 1849, 1850, 5, 324, 163, 2, 1850, 1851, 5, 332, 167, 2, 1851, 1852, 5, 338, 170, 2, 1852, 1854, 3, 2, 2, 2, 1853, 1837, 3, 2, 2, 2, 1853, 1845, 3, 2, 2, 2, 1854, 359, 3, 2, 2, 2, 1855, 1856, 7, 50, 2, 2, 1856, 1857, 7, 113, 2, 2, 1857, 1858, 7, 154, 2, 2, 1858, 1859, 5, 324, 163, 2, 1859, 1860, 7, 23, 2, 2, 1860, 1861, 5, 416, 209, 2, 1861, 1862, 7, 24, 2, 2, 1862, 1863, 5, 332, 167, 2, 1863, 361, 3, 2, 2, 2, 1864, 1865, 7, 64, 2, 2, 1865, 1866, 5, 364, 183, 2, 1866, 1867, 7, 99, 2, 2, 1867, 1868, 5, 366, 184, 2, 1868, 1869, 7, 23, 2, 2, 1869, 1870, 5, 372, 187, 2, 1870, 1871, 7, 24, 2, 2, 1871, 1872, 5, 376, 189, 2, 1872, 363, 3, 2, 2, 2, 1873, 1877, 3, 2, 2, 2, 1874, 1875, 7, 157, 2, 2, 1875, 1877, 7, 181, 2, 2, 1876, 1873, 3, 2, 2, 2, 1876, 1874, 3, 2, 2, 2, 1877, 365, 3, 2, 2, 2, 1878, 1881, 5, 368, 185, 2, 1879, 1881, 5, 370, 186, 2, 1880, 1878, 3, 2, 2, 2, 1880, 1879, 3, 2, 2, 2, 1881, 367, 3, 2, 2, 2, 1882, 1883, 5, 110, 56, 2, 1883, 369, 3, 2, 2, 2, 1884, 1885, 5, 102, 52, 2, 1885, 1886, 5, 110, 56, 2, 1886, 1895, 3, 2, 2, 2, 1887, 1888, 5, 102, 52, 2, 1888, 1889, 5, 106, 54, 2, 1889, 1890, 7, 9, 2, 2, 1890, 1891, 5, 108, 55, 2, 1891, 1892, 7, 9, 2, 2, 1892, 1893, 5, 110, 56, 2, 1893, 1895, 3, 2, 2, 2, 1894, 1884, 3, 2, 2, 2, 1894, 1887, 3, 2, 2, 2, 1895, 371, 3, 2, 2, 2, 1896, 1902, 3, 2, 2, 2, 1897, 1898, 7, 9, 2, 2, 1898, 1899, 7, 9, 2, 2, 1899, 1902, 7, 9, 2, 2, 1900, 1902, 5, 374, 188, 2, 1901, 1896, 3, 2, 2, 2, 1901, 1897, 3, 2, 2, 2, 1901, 1900, 3, 2, 2, 2, 1902, 373, 3, 2, 2, 2, 1903, 1904, 8, 188, 1, 2, 1904, 1905, 7, 239, 2, 2, 1905, 1911, 3, 2, 2, 2, 1906, 1907, 12, 3, 2, 2, 1907, 1908, 7, 27, 2, 2, 1908, 1910, 7, 239, 2, 2, 1909, 1906, 3, 2, 2, 2, 1910, 1913, 3, 2, 2, 2, 1911, 1909, 3, 2, 2, 2, 1911, 1912, 3, 2, 2, 2, 1912, 375, 3, 2, 2, 2, 1913, 1911, 3, 2, 2, 2, 1914, 1915, 7, 25, 2, 2, 1915, 1916, 5, 392, 197, 2, 1916, 1917, 7, 26, 2, 2, 1917, 1935, 3, 2, 2, 2, 1918, 1919, 7, 128, 2, 2, 1919, 1920, 7, 115, 2, 2, 1920, 1921, 7, 41, 2, 2, 1921, 1935, 5, 392, 197, 2, 1922, 1923, 7, 128, 2, 2, 1923, 1924, 7, 100, 2, 2, 1924, 1925, 7, 41, 2, 2, 1925, 1926, 7, 3, 2, 2, 1926, 1927, 7, 43, 2, 2, 1927, 1935, 7, 3, 2, 2, 1928, 1929, 7, 128, 2, 2, 1929, 1930, 7, 122, 2, 2, 1930, 1931, 7, 41, 2, 2, 1931, 1932, 7, 3, 2, 2, 1932, 1933, 7, 43, 2, 2, 1933, 1935, 7, 3, 2, 2, 1934, 1914, 3, 2, 2, 2, 1934, 1918, 3, 2, 2, 2, 1934, 1922, 3, 2, 2, 2, 1934, 1928, 3, 2, 2, 2, 1935, 377, 3, 2, 2, 2, 1936, 1937, 7, 77, 2, 2, 1937, 1938, 7, 99, 2, 2, 1938, 1939, 5, 366, 184, 2, 1939, 379, 3, 2, 2, 2, 1940, 1941, 7, 85, 2, 2, 1941, 1942, 7, 99, 2, 2, 1942, 1943, 5, 366, 184, 2, 1943, 1944, 7, 23, 2, 2, 1944, 1945, 5, 414, 208, 2, 1945, 1946, 7, 24, 2, 2, 1946, 381, 3, 2, 2, 2, 1947, 1948, 7, 219, 2, 2, 1948, 1949, 7, 201, 2, 2, 1949, 1950, 5, 384, 193, 2, 1950, 1951, 5, 324, 163, 2, 1951, 1952, 7, 23, 2, 2, 1952, 1953, 5, 386, 194, 2, 1953, 1954, 7, 24, 2, 2, 1954, 1955, 5, 36, 19, 2, 1955, 2070, 3, 2, 2, 2, 1956, 1957, 7, 219, 2, 2, 1957, 1958, 7, 201, 2, 2, 1958, 1959, 5, 384, 193, 2, 1959, 1960, 5, 324, 163, 2, 1960, 1961, 7, 71, 2, 2, 1961, 1962, 7, 23, 2, 2, 1962, 1963, 5, 386, 194, 2, 1963, 1964, 7, 24, 2, 2, 1964, 2070, 3, 2, 2, 2, 1965, 1966, 7, 219, 2, 2, 1966, 1967, 7, 201, 2, 2, 1967, 1968, 5, 384, 193, 2, 1968, 1969, 5, 324, 163, 2, 1969, 1970, 7, 71, 2, 2, 1970, 1971, 7, 35, 2, 2, 1971, 2070, 3, 2, 2, 2, 1972, 1973, 7, 219, 2, 2, 1973, 1974, 7, 201, 2, 2, 1974, 1975, 5, 384, 193, 2, 1975, 1976, 5, 324, 163, 2, 1976, 1977, 7, 113, 2, 2, 1977, 1978, 7, 23, 2, 2, 1978, 1979, 5, 416, 209, 2, 1979, 1980, 7, 24, 2, 2, 1980, 1981, 5, 332, 167, 2, 1981, 1982, 5, 36, 19, 2, 1982, 2070, 3, 2, 2, 2, 1983, 1984, 7, 219, 2, 2, 1984, 1985, 7, 201, 2, 2, 1985, 1986, 5, 384, 193, 2, 1986, 1987, 5, 324, 163, 2, 1987, 1988, 7, 113, 2, 2, 1988, 1989, 7, 35, 2, 2, 1989, 1990, 5, 332, 167, 2, 1990, 1991, 5, 36, 19, 2, 1991, 2070, 3, 2, 2, 2, 1992, 1993, 7, 219, 2, 2, 1993, 1994, 7, 201, 2, 2, 1994, 1995, 7, 95, 2, 2, 1995, 1996, 7, 113, 2, 2, 1996, 1997, 5, 326, 164, 2, 1997, 1998, 7, 9, 2, 2, 1998, 1999, 5, 320, 161, 2, 1999, 2000, 5, 332, 167, 2, 2000, 2001, 5, 36, 19, 2, 2001, 2070, 3, 2, 2, 2, 2002, 2003, 7, 219, 2, 2, 2003, 2004, 7, 201, 2, 2, 2004, 2005, 7, 95, 2, 2, 2005, 2006, 7, 113, 2, 2, 2006, 2007, 5, 320, 161, 2, 2007, 2008, 7, 154, 2, 2, 2008, 2009, 5, 324, 163, 2, 2009, 2010, 5, 332, 167, 2, 2010, 2011, 5, 36, 19, 2, 2011, 2070, 3, 2, 2, 2, 2012, 2013, 7, 37, 2, 2, 2013, 2014, 5, 32, 17, 2, 2014, 2015, 5, 324, 163, 2, 2015, 2016, 7, 23, 2, 2, 2016, 2017, 5, 386, 194, 2, 2017, 2018, 7, 24, 2, 2, 2018, 2019, 5, 36, 19, 2, 2019, 2070, 3, 2, 2, 2, 2020, 2021, 7, 37, 2, 2, 2021, 2022, 5, 32, 17, 2, 2022, 2023, 5, 324, 163, 2, 2023, 2024, 7, 71, 2, 2, 2024, 2025, 7, 201, 2, 2, 2025, 2026, 7, 23, 2, 2, 2026, 2027, 5, 386, 194, 2, 2027, 2028, 7, 24, 2, 2, 2028, 2070, 3, 2, 2, 2, 2029, 2030, 7, 37, 2, 2, 2030, 2031, 5, 32, 17, 2, 2031, 2032, 5, 324, 163, 2, 2032, 2033, 7, 71, 2, 2, 2033, 2034, 7, 201, 2, 2, 2034, 2070, 3, 2, 2, 2, 2035, 2036, 7, 37, 2, 2, 2036, 2037, 5, 32, 17, 2, 2037, 2038, 5, 324, 163, 2, 2038, 2039, 7, 113, 2, 2, 2039, 2040, 7, 23, 2, 2, 2040, 2041, 5, 416, 209, 2, 2041, 2042, 7, 24, 2, 2, 2042, 2043, 5, 332, 167, 2, 2043, 2044, 5, 36, 19, 2, 2044, 2070, 3, 2, 2, 2, 2045, 2046, 7, 37, 2, 2, 2046, 2047, 5, 32, 17, 2, 2047, 2048, 5, 324, 163, 2, 2048, 2049, 7, 113, 2, 2, 2049, 2050, 7, 35, 2, 2, 2050, 2051, 5, 332, 167, 2, 2051, 2052, 5, 36, 19, 2, 2052, 2070, 3, 2, 2, 2, 2053, 2054, 7, 37, 2, 2, 2054, 2055, 7, 113, 2, 2, 2055, 2056, 5, 326, 164, 2, 2056, 2057, 7, 9, 2, 2, 2057, 2058, 5, 320, 161, 2, 2058, 2059, 5, 332, 167, 2, 2059, 2060, 5, 36, 19, 2, 2060, 2070, 3, 2, 2, 2, 2061, 2062, 7, 37, 2, 2, 2062, 2063, 7, 113, 2, 2, 2063, 2064, 5, 320, 161, 2, 2064, 2065, 7, 154, 2, 2, 2065, 2066, 5, 324, 163, 2, 2066, 2067, 5, 332, 167, 2, 2067, 2068, 5, 36, 19, 2, 2068, 2070, 3, 2, 2, 2, 2069, 1947, 3, 2, 2, 2, 2069, 1956, 3, 2, 2, 2, 2069, 1965, 3, 2, 2, 2, 2069, 1972, 3, 2, 2, 2, 2069, 1983, 3, 2, 2, 2, 2069, 1992, 3, 2, 2, 2, 2069, 2002, 3, 2, 2, 2, 2069, 2012, 3, 2, 2, 2, 2069, 2020, 3, 2, 2, 2, 2069, 2029, 3, 2, 2, 2, 2069, 2035, 3, 2, 2, 2, 2069, 2045, 3, 2, 2, 2, 2069, 2053, 3, 2, 2, 2, 2069, 2061, 3, 2, 2, 2, 2070, 383, 3, 2, 2, 2, 2071, 2074, 3, 2, 2, 2, 2072, 2074, 7, 95, 2, 2, 2073, 2071, 3, 2, 2, 2, 2073, 2072, 3, 2, 2, 2, 2074, 385, 3, 2, 2, 2, 2075, 2076, 8, 194, 1, 2, 2076, 2077, 5, 388, 195, 2, 2077, 2083, 3, 2, 2, 2, 2078, 2079, 12, 3, 2, 2, 2079, 2080, 7, 27, 2, 2, 2080, 2082, 5, 388, 195, 2, 2081, 2078, 3, 2, 2, 2, 2082, 2085, 3, 2, 2, 2, 2083, 2081, 3, 2, 2, 2, 2083, 2084, 3, 2, 2, 2, 2084, 387, 3, 2, 2, 2, 2085, 2083, 3, 2, 2, 2, 2086, 2087, 5, 344, 173, 2, 2087, 389, 3, 2, 2, 2, 2088, 2089, 8, 196, 1, 2, 2089, 2090, 7, 239, 2, 2, 2090, 2116, 3, 2, 2, 2, 2091, 2092, 12, 7, 2, 2, 2092, 2093, 7, 9, 2, 2, 2093, 2115, 7, 239, 2, 2, 2094, 2095, 12, 6, 2, 2, 2095, 2096, 7, 9, 2, 2, 2096, 2115, 7, 238, 2, 2, 2097, 2098, 12, 5, 2, 2, 2098, 2099, 7, 9, 2, 2, 2099, 2100, 7, 29, 2, 2, 2100, 2101, 5, 392, 197, 2, 2101, 2102, 7, 30, 2, 2, 2102, 2115, 3, 2, 2, 2, 2103, 2104, 12, 4, 2, 2, 2104, 2105, 7, 9, 2, 2, 2105, 2106, 7, 29, 2, 2, 2106, 2107, 5, 392, 197, 2, 2107, 2108, 7, 31, 2, 2, 2108, 2115, 3, 2, 2, 2, 2109, 2110, 12, 3, 2, 2, 2110, 2111, 7, 29, 2, 2, 2111, 2112, 5, 392, 197, 2, 2112, 2113, 7, 30, 2, 2, 2113, 2115, 3, 2, 2, 2, 2114, 2091, 3, 2, 2, 2, 2114, 2094, 3, 2, 2, 2, 2114, 2097, 3, 2, 2, 2, 2114, 2103, 3, 2, 2, 2, 2114, 2109, 3, 2, 2, 2, 2115, 2118, 3, 2, 2, 2, 2116, 2114, 3, 2, 2, 2, 2116, 2117, 3, 2, 2, 2, 2117, 391, 3, 2, 2, 2, 2118, 2116, 3, 2, 2, 2, 2119, 2120, 8, 197, 1, 2, 2120, 2126, 5, 396, 199, 2, 2121, 2122, 7, 147, 2, 2, 2122, 2126, 5, 392, 197, 25, 2123, 2124, 7, 86, 2, 2, 2124, 2126, 5, 392, 197, 3, 2125, 2119, 3, 2, 2, 2, 2125, 2121, 3, 2, 2, 2, 2125, 2123, 3, 2, 2, 2, 2126, 2269, 3, 2, 2, 2, 2127, 2128, 12, 33, 2, 2, 2128, 2129, 7, 10, 2, 2, 2129, 2268, 5, 392, 197, 34, 2130, 2131, 12, 32, 2, 2, 2131, 2132, 7, 11, 2, 2, 2132, 2268, 5, 392, 197, 33, 2133, 2134, 12, 31, 2, 2, 2134, 2135, 7, 12, 2, 2, 2135, 2268, 5, 392, 197, 32, 2136, 2137, 12, 30, 2, 2, 2137, 2138, 7, 13, 2, 2, 2138, 2268, 5, 392, 197, 31, 2139, 2140, 12, 29, 2, 2, 2140, 2141, 7, 14, 2, 2, 2141, 2268, 5, 392, 197, 30, 2142, 2143, 12, 28, 2, 2, 2143, 2144, 7, 22, 2, 2, 2144, 2268, 5, 392, 197, 29, 2145, 2146, 12, 27, 2, 2, 2146, 2147, 7, 38, 2, 2, 2147, 2268, 5, 392, 197, 28, 2148, 2149, 12, 26, 2, 2, 2149, 2150, 7, 157, 2, 2, 2150, 2268, 5, 392, 197, 27, 2151, 2152, 12, 24, 2, 2, 2152, 2153, 7, 16, 2, 2, 2153, 2268, 5, 392, 197, 25, 2154, 2155, 12, 23, 2, 2, 2155, 2156, 7, 15, 2, 2, 2156, 2268, 5, 392, 197, 24, 2157, 2158, 12, 22, 2, 2, 2158, 2159, 7, 17, 2, 2, 2159, 2268, 5, 392, 197, 23, 2160, 2161, 12, 21, 2, 2, 2161, 2162, 7, 18, 2, 2, 2162, 2268, 5, 392, 197, 22, 2163, 2164, 12, 20, 2, 2, 2164, 2165, 7, 20, 2, 2, 2165, 2268, 5, 392, 197, 21, 2166, 2167, 12, 19, 2, 2, 2167, 2168, 7, 19, 2, 2, 2168, 2268, 5, 392, 197, 20, 2169, 2170, 12, 18, 2, 2, 2170, 2171, 7, 21, 2, 2, 2171, 2268, 5, 392, 197, 19, 2172, 2173, 12, 15, 2, 2, 2173, 2174, 7, 134, 2, 2, 2174, 2268, 5, 392, 197, 16, 2175, 2176, 12, 14, 2, 2, 2176, 2177, 7, 147, 2, 2, 2177, 2178, 7, 134, 2, 2, 2178, 2268, 5, 392, 197, 15, 2179, 2180, 12, 13, 2, 2, 2180, 2181, 7, 110, 2, 2, 2181, 2268, 5, 392, 197, 14, 2182, 2183, 12, 12, 2, 2, 2183, 2184, 7, 147, 2, 2, 2184, 2185, 7, 110, 2, 2, 2185, 2268, 5, 392, 197, 13, 2186, 2187, 12, 11, 2, 2, 2187, 2188, 7, 235, 2, 2, 2188, 2268, 5, 392, 197, 12, 2189, 2190, 12, 10, 2, 2, 2190, 2191, 7, 147, 2, 2, 2191, 2192, 7, 235, 2, 2, 2192, 2268, 5, 392, 197, 11, 2193, 2194, 12, 41, 2, 2, 2194, 2195, 7, 9, 2, 2, 2195, 2268, 7, 239, 2, 2, 2196, 2197, 12, 40, 2, 2, 2197, 2198, 7, 9, 2, 2, 2198, 2268, 7, 238, 2, 2, 2199, 2200, 12, 39, 2, 2, 2200, 2201, 7, 9, 2, 2, 2201, 2202, 7, 29, 2, 2, 2202, 2203, 5, 392, 197, 2, 2203, 2204, 7, 30, 2, 2, 2204, 2268, 3, 2, 2, 2, 2205, 2206, 12, 38, 2, 2, 2206, 2207, 7, 9, 2, 2, 2207, 2208, 7, 29, 2, 2, 2208, 2209, 5, 392, 197, 2, 2209, 2210, 7, 31, 2, 2, 2210, 2268, 3, 2, 2, 2, 2211, 2212, 12, 37, 2, 2, 2212, 2213, 7, 29, 2, 2, 2213, 2214, 5, 392, 197, 2, 2214, 2215, 7, 30, 2, 2, 2215, 2268, 3, 2, 2, 2, 2216, 2217, 12, 36, 2, 2, 2217, 2218, 7, 29, 2, 2, 2218, 2219, 5, 392, 197, 2, 2219, 2220, 7, 28, 2, 2, 2220, 2221, 7, 30, 2, 2, 2221, 2268, 3, 2, 2, 2, 2222, 2223, 12, 35, 2, 2, 2223, 2224, 7, 29, 2, 2, 2224, 2225, 5, 392, 197, 2, 2225, 2226, 7, 28, 2, 2, 2226, 2227, 5, 392, 197, 2, 2227, 2228, 7, 30, 2, 2, 2228, 2268, 3, 2, 2, 2, 2229, 2230, 12, 34, 2, 2, 2230, 2231, 7, 29, 2, 2, 2231, 2232, 7, 12, 2, 2, 2232, 2268, 7, 30, 2, 2, 2233, 2234, 12, 17, 2, 2, 2234, 2235, 7, 45, 2, 2, 2235, 2236, 5, 398, 200, 2, 2236, 2237, 7, 38, 2, 2, 2237, 2238, 5, 398, 200, 2, 2238, 2268, 3, 2, 2, 2, 2239, 2240, 12, 16, 2, 2, 2240, 2241, 7, 147, 2, 2, 2241, 2242, 7, 45, 2, 2, 2242, 2243, 5, 398, 200, 2, 2243, 2244, 7, 38, 2, 2, 2244, 2245, 5, 398, 200, 2, 2245, 2268, 3, 2, 2, 2, 2246, 2247, 12, 9, 2, 2, 2247, 2248, 7, 120, 2, 2, 2248, 2268, 7, 149, 2, 2, 2249, 2250, 12, 8, 2, 2, 2250, 2251, 7, 120, 2, 2, 2251, 2252, 7, 147, 2, 2, 2252, 2268, 7, 149, 2, 2, 2253, 2254, 12, 7, 2, 2, 2254, 2255, 7, 120, 2, 2, 2255, 2268, 7, 142, 2, 2, 2256, 2257, 12, 6, 2, 2, 2257, 2258, 7, 120, 2, 2, 2258, 2259, 7, 147, 2, 2, 2259, 2268, 7, 142, 2, 2, 2260, 2261, 12, 5, 2, 2, 2261, 2262, 7, 120, 2, 2, 2262, 2268, 5, 394, 198, 2, 2263, 2264, 12, 4, 2, 2, 2264, 2265, 7, 120, 2, 2, 2265, 2266, 7, 147, 2, 2, 2266, 2268, 5, 394, 198, 2, 2267, 2127, 3, 2, 2, 2, 2267, 2130, 3, 2, 2, 2, 2267, 2133, 3, 2, 2, 2, 2267, 2136, 3, 2, 2, 2, 2267, 2139, 3, 2, 2, 2, 2267, 2142, 3, 2, 2, 2, 2267, 2145, 3, 2, 2, 2, 2267, 2148, 3, 2, 2, 2, 2267, 2151, 3, 2, 2, 2, 2267, 2154, 3, 2, 2, 2, 2267, 2157, 3, 2, 2, 2, 2267, 2160, 3, 2, 2, 2, 2267, 2163, 3, 2, 2, 2, 2267, 2166, 3, 2, 2, 2, 2267, 2169, 3, 2, 2, 2, 2267, 2172, 3, 2, 2, 2, 2267, 2175, 3, 2, 2, 2, 2267, 2179, 3, 2, 2, 2, 2267, 2182, 3, 2, 2, 2, 2267, 2186, 3, 2, 2, 2, 2267, 2189, 3, 2, 2, 2, 2267, 2193, 3, 2, 2, 2, 2267, 2196, 3, 2, 2, 2, 2267, 2199, 3, 2, 2, 2, 2267, 2205, 3, 2, 2, 2, 2267, 2211, 3, 2, 2, 2, 2267, 2216, 3, 2, 2, 2, 2267, 2222, 3, 2, 2, 2, 2267, 2229, 3, 2, 2, 2, 2267, 2233, 3, 2, 2, 2, 2267, 2239, 3, 2, 2, 2, 2267, 2246, 3, 2, 2, 2, 2267, 2249, 3, 2, 2, 2, 2267, 2253, 3, 2, 2, 2, 2267, 2256, 3, 2, 2, 2, 2267, 2260, 3, 2, 2, 2, 2267, 2263, 3, 2, 2, 2, 2268, 2271, 3, 2, 2, 2, 2269, 2267, 3, 2, 2, 2, 2269, 2270, 3, 2, 2, 2, 2270, 393, 3, 2, 2, 2, 2271, 2269, 3, 2, 2, 2, 2272, 2273, 9, 12, 2, 2, 2273, 395, 3, 2, 2, 2, 2274, 2291, 5, 400, 201, 2, 2275, 2291, 5, 402, 202, 2, 2276, 2291, 7, 239, 2, 2, 2277, 2291, 7, 238, 2, 2, 2278, 2291, 7, 196, 2, 2, 2279, 2291, 5, 418, 210, 2, 2280, 2291, 5, 432, 217, 2, 2281, 2291, 7, 11, 2, 2, 2282, 2291, 5, 420, 211, 2, 2283, 2291, 5, 436, 219, 2, 2284, 2291, 5, 448, 225, 2, 2285, 2286, 7, 63, 2, 2, 2286, 2287, 7, 23, 2, 2, 2287, 2288, 5, 392, 197, 2, 2288, 2289, 7, 24, 2, 2, 2289, 2291, 3, 2, 2, 2, 2290, 2274, 3, 2, 2, 2, 2290, 2275, 3, 2, 2, 2, 2290, 2276, 3, 2, 2, 2, 2290, 2277, 3, 2, 2, 2, 2290, 2278, 3, 2, 2, 2, 2290, 2279, 3, 2, 2, 2, 2290, 2280, 3, 2, 2, 2, 2290, 2281, 3, 2, 2, 2, 2290, 2282, 3, 2, 2, 2, 2290, 2283, 3, 2, 2, 2, 2290, 2284, 3, 2, 2, 2, 2290, 2285, 3, 2, 2, 2, 2291, 397, 3, 2, 2, 2, 2292, 2293, 8, 200, 1, 2, 2293, 2294, 5, 396, 199, 2, 2294, 2355, 3, 2, 2, 2, 2295, 2296, 12, 8, 2, 2, 2296, 2297, 7, 10, 2, 2, 2297, 2354, 5, 398, 200, 9, 2298, 2299, 12, 7, 2, 2, 2299, 2300, 7, 11, 2, 2, 2300, 2354, 5, 398, 200, 8, 2301, 2302, 12, 6, 2, 2, 2302, 2303, 7, 12, 2, 2, 2303, 2354, 5, 398, 200, 7, 2304, 2305, 12, 5, 2, 2, 2305, 2306, 7, 13, 2, 2, 2306, 2354, 5, 398, 200, 6, 2307, 2308, 12, 4, 2, 2, 2308, 2309, 7, 14, 2, 2, 2309, 2354, 5, 398, 200, 5, 2310, 2311, 12, 3, 2, 2, 2311, 2312, 7, 22, 2, 2, 2312, 2354, 5, 398, 200, 4, 2313, 2314, 12, 16, 2, 2, 2314, 2315, 7, 9, 2, 2, 2315, 2354, 7, 239, 2, 2, 2316, 2317, 12, 15, 2, 2, 2317, 2318, 7, 9, 2, 2, 2318, 2354, 7, 238, 2, 2, 2319, 2320, 12, 14, 2, 2, 2320, 2321, 7, 9, 2, 2, 2321, 2322, 7, 29, 2, 2, 2322, 2323, 5, 392, 197, 2, 2323, 2324, 7, 30, 2, 2, 2324, 2354, 3, 2, 2, 2, 2325, 2326, 12, 13, 2, 2, 2326, 2327, 7, 9, 2, 2, 2327, 2328, 7, 29, 2, 2, 2328, 2329, 5, 392, 197, 2, 2329, 2330, 7, 31, 2, 2, 2330, 2354, 3, 2, 2, 2, 2331, 2332, 12, 12, 2, 2, 2332, 2333, 7, 29, 2, 2, 2333, 2334, 5, 392, 197, 2, 2334, 2335, 7, 30, 2, 2, 2335, 2354, 3, 2, 2, 2, 2336, 2337, 12, 11, 2, 2, 2337, 2338, 7, 29, 2, 2, 2338, 2339, 5, 392, 197, 2, 2339, 2340, 7, 28, 2, 2, 2340, 2341, 7, 30, 2, 2, 2341, 2354, 3, 2, 2, 2, 2342, 2343, 12, 10, 2, 2, 2343, 2344, 7, 29, 2, 2, 2344, 2345, 5, 392, 197, 2, 2345, 2346, 7, 28, 2, 2, 2346, 2347, 5, 392, 197, 2, 2347, 2348, 7, 30, 2, 2, 2348, 2354, 3, 2, 2, 2, 2349, 2350, 12, 9, 2, 2, 2350, 2351, 7, 29, 2, 2, 2351, 2352, 7, 12, 2, 2, 2352, 2354, 7, 30, 2, 2, 2353, 2295, 3, 2, 2, 2, 2353, 2298, 3, 2, 2, 2, 2353, 2301, 3, 2, 2, 2, 2353, 2304, 3, 2, 2, 2, 2353, 2307, 3, 2, 2, 2, 2353, 2310, 3, 2, 2, 2, 2353, 2313, 3, 2, 2, 2, 2353, 2316, 3, 2, 2, 2, 2353, 2319, 3, 2, 2, 2, 2353, 2325, 3, 2, 2, 2, 2353, 2331, 3, 2, 2, 2, 2353, 2336, 3, 2, 2, 2, 2353, 2342, 3, 2, 2, 2, 2353, 2349, 3, 2, 2, 2, 2354, 2357, 3, 2, 2, 2, 2355, 2353, 3, 2, 2, 2, 2355, 2356, 3, 2, 2, 2, 2356, 399, 3, 2, 2, 2, 2357, 2355, 3, 2, 2, 2, 2358, 2359, 9, 13, 2, 2, 2359, 401, 3, 2, 2, 2, 2360, 2363, 5, 404, 203, 2, 2361, 2363, 5, 412, 207, 2, 2362, 2360, 3, 2, 2, 2, 2362, 2361, 3, 2, 2, 2, 2363, 403, 3, 2, 2, 2, 2364, 2365, 7, 25, 2, 2, 2365, 2366, 5, 406, 204, 2, 2366, 2367, 7, 26, 2, 2, 2367, 405, 3, 2, 2, 2, 2368, 2371, 3, 2, 2, 2, 2369, 2371, 5, 408, 205, 2, 2370, 2368, 3, 2, 2, 2, 2370, 2369, 3, 2, 2, 2, 2371, 407, 3, 2, 2, 2, 2372, 2373, 8, 205, 1, 2, 2373, 2374, 5, 410, 206, 2, 2374, 2380, 3, 2, 2, 2, 2375, 2376, 12, 3, 2, 2, 2376, 2377, 7, 27, 2, 2, 2377, 2379, 5, 410, 206, 2, 2378, 2375, 3, 2, 2, 2, 2379, 2382, 3, 2, 2, 2, 2380, 2378, 3, 2, 2, 2, 2380, 2381, 3, 2, 2, 2, 2381, 409, 3, 2, 2, 2, 2382, 2380, 3, 2, 2, 2, 2383, 2384, 5, 392, 197, 2, 2384, 2385, 7, 28, 2, 2, 2385, 2386, 5, 392, 197, 2, 2386, 2389, 3, 2, 2, 2, 2387, 2389, 5, 392, 197, 2, 2388, 2383, 3, 2, 2, 2, 2388, 2387, 3, 2, 2, 2, 2389, 411, 3, 2, 2, 2, 2390, 2391, 7, 29, 2, 2, 2391, 2392, 5, 414, 208, 2, 2392, 2393, 7, 30, 2, 2, 2393, 413, 3, 2, 2, 2, 2394, 2397, 3, 2, 2, 2, 2395, 2397, 5, 416, 209, 2, 2396, 2394, 3, 2, 2, 2, 2396, 2395, 3, 2, 2, 2, 2397, 415, 3, 2, 2, 2, 2398, 2399, 8, 209, 1, 2, 2399, 2400, 5, 392, 197, 2, 2400, 2406, 3, 2, 2, 2, 2401, 2402, 12, 3, 2, 2, 2402, 2403, 7, 27, 2, 2, 2403, 2405, 5, 392, 197, 2, 2404, 2401, 3, 2, 2, 2, 2405, 2408, 3, 2, 2, 2, 2406, 2404, 3, 2, 2, 2, 2406, 2407, 3, 2, 2, 2, 2407, 417, 3, 2, 2, 2, 2408, 2406, 3, 2, 2, 2, 2409, 2410, 9, 14, 2, 2, 2410, 419, 3, 2, 2, 2, 2411, 2412, 7, 53, 2, 2, 2412, 2413, 5, 422, 212, 2, 2413, 2414, 7, 81, 2, 2, 2414, 421, 3, 2, 2, 2, 2415, 2418, 5, 424, 213, 2, 2416, 2418, 5, 428, 215, 2, 2417, 2415, 3, 2, 2, 2, 2417, 2416, 3, 2, 2, 2, 2418, 423, 3, 2, 2, 2, 2419, 2420, 5, 392, 197, 2, 2420, 2421, 5, 426, 214, 2, 2421, 2422, 5, 430, 216, 2, 2422, 425, 3, 2, 2, 2, 2423, 2424, 8, 214, 1, 2, 2424, 2425, 7, 230, 2, 2, 2425, 2426, 5, 392, 197, 2, 2426, 2427, 7, 204, 2, 2, 2427, 2428, 5, 392, 197, 2, 2428, 2437, 3, 2, 2, 2, 2429, 2430, 12, 3, 2, 2, 2430, 2431, 7, 230, 2, 2, 2431, 2432, 5, 392, 197, 2, 2432, 2433, 7, 204, 2, 2, 2433, 2434, 5, 392, 197, 2, 2434, 2436, 3, 2, 2, 2, 2435, 2429, 3, 2, 2, 2, 2436, 2439, 3, 2, 2, 2, 2437, 2435, 3, 2, 2, 2, 2437, 2438, 3, 2, 2, 2, 2438, 427, 3, 2, 2, 2, 2439, 2437, 3, 2, 2, 2, 2440, 2441, 5, 426, 214, 2, 2441, 2442, 5, 430, 216, 2, 2442, 429, 3, 2, 2, 2, 2443, 2447, 3, 2, 2, 2, 2444, 2445, 7, 80, 2, 2, 2445, 2447, 5, 392, 197, 2, 2446, 2443, 3, 2, 2, 2, 2446, 2444, 3, 2, 2, 2, 2447, 431, 3, 2, 2, 2, 2448, 2449, 7, 148, 2, 2, 2449, 2450, 7, 23, 2, 2, 2450, 2451, 5, 416, 209, 2, 2451, 2452, 7, 24, 2, 2, 2452, 2453, 5, 484, 243, 2, 2453, 2454, 5, 480, 241, 2, 2454, 2455, 5, 492, 247, 2, 2455, 2485, 3, 2, 2, 2, 2456, 2457, 5, 434, 218, 2, 2457, 2458, 7, 23, 2, 2, 2458, 2459, 5, 414, 208, 2, 2459, 2460, 7, 24, 2, 2, 2460, 2461, 5, 488, 245, 2, 2461, 2462, 5, 480, 241, 2, 2462, 2463, 5, 490, 246, 2, 2463, 2485, 3, 2, 2, 2, 2464, 2465, 5, 434, 218, 2, 2465, 2466, 7, 23, 2, 2, 2466, 2467, 5, 486, 244, 2, 2467, 2468, 5, 392, 197, 2, 2468, 2469, 7, 24, 2, 2, 2469, 2470, 5, 488, 245, 2, 2470, 2471, 5, 490, 246, 2, 2471, 2485, 3, 2, 2, 2, 2472, 2473, 5, 434, 218, 2, 2473, 2474, 7, 23, 2, 2, 2474, 2475, 7, 12, 2, 2, 2475, 2476, 7, 24, 2, 2, 2476, 2477, 5, 488, 245, 2, 2477, 2478, 5, 490, 246, 2, 2478, 2485, 3, 2, 2, 2, 2479, 2480, 5, 370, 186, 2, 2480, 2481, 7, 23, 2, 2, 2481, 2482, 5, 414, 208, 2, 2482, 2483, 7, 24, 2, 2, 2483, 2485, 3, 2, 2, 2, 2484, 2448, 3, 2, 2, 2, 2484, 2456, 3, 2, 2, 2, 2484, 2464, 3, 2, 2, 2, 2484, 2472, 3, 2, 2, 2, 2484, 2479, 3, 2, 2, 2, 2485, 433, 3, 2, 2, 2, 2486, 2487, 9, 15, 2, 2, 2487, 435, 3, 2, 2, 2, 2488, 2491, 5, 438, 220, 2, 2489, 2491, 5, 446, 224, 2, 2490, 2488, 3, 2, 2, 2, 2490, 2489, 3, 2, 2, 2, 2491, 437, 3, 2, 2, 2, 2492, 2493, 7, 39, 2, 2, 2493, 2494, 5, 440, 221, 2, 2494, 2495, 5, 444, 223, 2, 2495, 2496, 7, 81, 2, 2, 2496, 2522, 3, 2, 2, 2, 2497, 2498, 7, 199, 2, 2, 2498, 2499, 5, 440, 221, 2, 2499, 2500, 5, 444, 223, 2, 2500, 2501, 7, 81, 2, 2, 2501, 2522, 3, 2, 2, 2, 2502, 2503, 7, 82, 2, 2, 2503, 2504, 5, 440, 221, 2, 2504, 2505, 5, 444, 223, 2, 2505, 2506, 7, 81, 2, 2, 2506, 2522, 3, 2, 2, 2, 2507, 2508, 7, 39, 2, 2, 2508, 2509, 7, 38, 2, 2, 2509, 2510, 7, 82, 2, 2, 2510, 2511, 5, 440, 221, 2, 2511, 2512, 5, 444, 223, 2, 2512, 2513, 7, 81, 2, 2, 2513, 2522, 3, 2, 2, 2, 2514, 2515, 7, 199, 2, 2, 2515, 2516, 7, 38, 2, 2, 2516, 2517, 7, 82, 2, 2, 2517, 2518, 5, 440, 221, 2, 2518, 2519, 5, 444, 223, 2, 2519, 2520, 7, 81, 2, 2, 2520, 2522, 3, 2, 2, 2, 2521, 2492, 3, 2, 2, 2, 2521, 2497, 3, 2, 2, 2, 2521, 2502, 3, 2, 2, 2, 2521, 2507, 3, 2, 2, 2, 2521, 2514, 3, 2, 2, 2, 2522, 439, 3, 2, 2, 2, 2523, 2524, 8, 221, 1, 2, 2524, 2525, 5, 442, 222, 2, 2525, 2531, 3, 2, 2, 2, 2526, 2527, 12, 3, 2, 2, 2527, 2528, 7, 27, 2, 2, 2528, 2530, 5, 442, 222, 2, 2529, 2526, 3, 2, 2, 2, 2530, 2533, 3, 2, 2, 2, 2531, 2529, 3, 2, 2, 2, 2531, 2532, 3, 2, 2, 2, 2532, 441, 3, 2, 2, 2, 2533, 2531, 3, 2, 2, 2, 2534, 2535, 5, 258, 130, 2, 2535, 2536, 7, 110, 2, 2, 2536, 2537, 5, 392, 197, 2, 2537, 2555, 3, 2, 2, 2, 2538, 2539, 5, 258, 130, 2, 2539, 2540, 7, 235, 2, 2, 2540, 2541, 5, 392, 197, 2, 2541, 2555, 3, 2, 2, 2, 2542, 2543, 5, 258, 130, 2, 2543, 2544, 7, 28, 2, 2, 2544, 2545, 5, 258, 130, 2, 2545, 2546, 7, 110, 2, 2, 2546, 2547, 5, 392, 197, 2, 2547, 2555, 3, 2, 2, 2, 2548, 2549, 5, 258, 130, 2, 2549, 2550, 7, 28, 2, 2, 2550, 2551, 5, 258, 130, 2, 2551, 2552, 7, 235, 2, 2, 2552, 2553, 5, 392, 197, 2, 2553, 2555, 3, 2, 2, 2, 2554, 2534, 3, 2, 2, 2, 2554, 2538, 3, 2, 2, 2, 2554, 2542, 3, 2, 2, 2, 2554, 2548, 3, 2, 2, 2, 2555, 443, 3, 2, 2, 2, 2556, 2557, 7, 191, 2, 2, 2557, 2558, 5, 392, 197, 2, 2558, 445, 3, 2, 2, 2, 2559, 2560, 7, 40, 2, 2, 2560, 2561, 5, 392, 197, 2, 2561, 2562, 7, 95, 2, 2, 2562, 2563, 5, 440, 221, 2, 2563, 2564, 5, 260, 131, 2, 2564, 2565, 7, 81, 2, 2, 2565, 2583, 3, 2, 2, 2, 2566, 2567, 7, 91, 2, 2, 2567, 2568, 5, 392, 197, 2, 2568, 2569, 7, 95, 2, 2, 2569, 2570, 5, 440, 221, 2, 2570, 2571, 5, 260, 131, 2, 2571, 2572, 7, 81, 2, 2, 2572, 2583, 3, 2, 2, 2, 2573, 2574, 7, 152, 2, 2, 2574, 2575, 5, 392, 197, 2, 2575, 2576, 7, 28, 2, 2, 2576, 2577, 5, 392, 197, 2, 2577, 2578, 7, 95, 2, 2, 2578, 2579, 5, 440, 221, 2, 2579, 2580, 5, 260, 131, 2, 2580, 2581, 7, 81, 2, 2, 2581, 2583, 3, 2, 2, 2, 2582, 2559, 3, 2, 2, 2, 2582, 2566, 3, 2, 2, 2, 2582, 2573, 3, 2, 2, 2, 2583, 447, 3, 2, 2, 2, 2584, 2585, 7, 23, 2, 2, 2585, 2586, 5, 392, 197, 2, 2586, 2587, 7, 24, 2, 2, 2587, 2594, 3, 2, 2, 2, 2588, 2589, 7, 23, 2, 2, 2589, 2590, 5, 454, 228, 2, 2590, 2591, 7, 24, 2, 2, 2591, 2594, 3, 2, 2, 2, 2592, 2594, 5, 450, 226, 2, 2593, 2584, 3, 2, 2, 2, 2593, 2588, 3, 2, 2, 2, 2593, 2592, 3, 2, 2, 2, 2594, 449, 3, 2, 2, 2, 2595, 2596, 7, 62, 2, 2, 2596, 2597, 7, 23, 2, 2, 2597, 2598, 5, 58, 30, 2, 2598, 2599, 7, 24, 2, 2, 2599, 2605, 3, 2, 2, 2, 2600, 2601, 7, 23, 2, 2, 2601, 2602, 5, 58, 30, 2, 2602, 2603, 7, 24, 2, 2, 2603, 2605, 3, 2, 2, 2, 2604, 2595, 3, 2, 2, 2, 2604, 2600, 3, 2, 2, 2, 2605, 451, 3, 2, 2, 2, 2606, 2609, 5, 392, 197, 2, 2607, 2609, 5, 454, 228, 2, 2608, 2606, 3, 2, 2, 2, 2608, 2607, 3, 2, 2, 2, 2609, 453, 3, 2, 2, 2, 2610, 2611, 5, 348, 175, 2, 2611, 2612, 5, 392, 197, 2, 2612, 2620, 3, 2, 2, 2, 2613, 2614, 5, 348, 175, 2, 2614, 2615, 7, 75, 2, 2, 2615, 2616, 5, 392, 197, 2, 2616, 2620, 3, 2, 2, 2, 2617, 2618, 7, 75, 2, 2, 2618, 2620, 5, 392, 197, 2, 2619, 2610, 3, 2, 2, 2, 2619, 2613, 3, 2, 2, 2, 2619, 2617, 3, 2, 2, 2, 2620, 455, 3, 2, 2, 2, 2621, 2625, 3, 2, 2, 2, 2622, 2623, 7, 233, 2, 2, 2623, 2625, 5, 458, 230, 2, 2624, 2621, 3, 2, 2, 2, 2624, 2622, 3, 2, 2, 2, 2625, 457, 3, 2, 2, 2, 2626, 2627, 8, 230, 1, 2, 2627, 2628, 5, 460, 231, 2, 2628, 2634, 3, 2, 2, 2, 2629, 2630, 12, 3, 2, 2, 2630, 2631, 7, 27, 2, 2, 2631, 2633, 5, 460, 231, 2, 2632, 2629, 3, 2, 2, 2, 2633, 2636, 3, 2, 2, 2, 2634, 2632, 3, 2, 2, 2, 2634, 2635, 3, 2, 2, 2, 2635, 459, 3, 2, 2, 2, 2636, 2634, 3, 2, 2, 2, 2637, 2638, 7, 239, 2, 2, 2638, 2639, 7, 41, 2, 2, 2639, 2640, 5, 462, 232, 2, 2640, 461, 3, 2, 2, 2, 2641, 2642, 7, 23, 2, 2, 2642, 2643, 5, 464, 233, 2, 2643, 2644, 5, 466, 234, 2, 2644, 2645, 5, 174, 88, 2, 2645, 2646, 5, 468, 235, 2, 2646, 2647, 7, 24, 2, 2, 2647, 463, 3, 2, 2, 2, 2648, 2651, 3, 2, 2, 2, 2649, 2651, 7, 239, 2, 2, 2650, 2648, 3, 2, 2, 2, 2650, 2649, 3, 2, 2, 2, 2651, 465, 3, 2, 2, 2, 2652, 2657, 3, 2, 2, 2, 2653, 2654, 7, 163, 2, 2, 2654, 2655, 7, 51, 2, 2, 2655, 2657, 5, 416, 209, 2, 2656, 2652, 3, 2, 2, 2, 2656, 2653, 3, 2, 2, 2, 2657, 467, 3, 2, 2, 2, 2658, 2664, 3, 2, 2, 2, 2659, 2660, 5, 470, 236, 2, 2660, 2661, 5, 474, 238, 2, 2661, 2662, 5, 472, 237, 2, 2662, 2664, 3, 2, 2, 2, 2663, 2658, 3, 2, 2, 2, 2663, 2659, 3, 2, 2, 2, 2664, 469, 3, 2, 2, 2, 2665, 2666, 9, 16, 2, 2, 2666, 471, 3, 2, 2, 2, 2667, 2679, 3, 2, 2, 2, 2668, 2669, 7, 84, 2, 2, 2669, 2670, 7, 146, 2, 2, 2670, 2679, 7, 159, 2, 2, 2671, 2672, 7, 84, 2, 2, 2672, 2673, 7, 65, 2, 2, 2673, 2679, 7, 189, 2, 2, 2674, 2675, 7, 84, 2, 2, 2675, 2679, 7, 205, 2, 2, 2676, 2677, 7, 84, 2, 2, 2677, 2679, 7, 102, 2, 2, 2678, 2667, 3, 2, 2, 2, 2678, 2668, 3, 2, 2, 2, 2678, 2671, 3, 2, 2, 2, 2678, 2674, 3, 2, 2, 2, 2678, 2676, 3, 2, 2, 2, 2679, 473, 3, 2, 2, 2, 2680, 2687, 5, 476, 239, 2, 2681, 2682, 7, 45, 2, 2, 2682, 2683, 5, 476, 239, 2, 2683, 2684, 7, 38, 2, 2, 2684, 2685, 5, 476, 239, 2, 2685, 2687, 3, 2, 2, 2, 2686, 2680, 3, 2, 2, 2, 2686, 2681, 3, 2, 2, 2, 2687, 475, 3, 2, 2, 2, 2688, 2689, 7, 212, 2, 2, 2689, 2698, 7, 167, 2, 2, 2690, 2691, 7, 212, 2, 2, 2691, 2698, 7, 94, 2, 2, 2692, 2693, 7, 65, 2, 2, 2693, 2698, 7, 189, 2, 2, 2694, 2695, 5, 392, 197, 2, 2695, 2696, 5, 478, 240, 2, 2696, 2698, 3, 2, 2, 2, 2697, 2688, 3, 2, 2, 2, 2697, 2690, 3, 2, 2, 2, 2697, 2692, 3, 2, 2, 2, 2697, 2694, 3, 2, 2, 2, 2698, 477, 3, 2, 2, 2, 2699, 2700, 9, 17, 2, 2, 2700, 479, 3, 2, 2, 2, 2701, 2704, 3, 2, 2, 2, 2702, 2704, 5, 482, 242, 2, 2703, 2701, 3, 2, 2, 2, 2703, 2702, 3, 2, 2, 2, 2704, 481, 3, 2, 2, 2, 2705, 2706, 7, 182, 2, 2, 2706, 2710, 7, 150, 2, 2, 2707, 2708, 7, 108, 2, 2, 2708, 2710, 7, 150, 2, 2, 2709, 2705, 3, 2, 2, 2, 2709, 2707, 3, 2, 2, 2, 2710, 483, 3, 2, 2, 2, 2711, 2715, 3, 2, 2, 2, 2712, 2713, 7, 97, 2, 2, 2713, 2715, 5, 188, 95, 2, 2714, 2711, 3, 2, 2, 2, 2714, 2712, 3, 2, 2, 2, 2715, 485, 3, 2, 2, 2, 2716, 2717, 9, 18, 2, 2, 2717, 487, 3, 2, 2, 2, 2718, 2725, 3, 2, 2, 2, 2719, 2720, 7, 90, 2, 2, 2720, 2721, 7, 23, 2, 2, 2721, 2722, 5, 156, 79, 2, 2722, 2723, 7, 24, 2, 2, 2723, 2725, 3, 2, 2, 2, 2724, 2718, 3, 2, 2, 2, 2724, 2719, 3, 2, 2, 2, 2725, 489, 3, 2, 2, 2, 2726, 2729, 3, 2, 2, 2, 2727, 2729, 5, 492, 247, 2, 2728, 2726, 3, 2, 2, 2, 2728, 2727, 3, 2, 2, 2, 2729, 491, 3, 2, 2, 2, 2730, 2731, 7, 161, 2, 2, 2731, 2735, 7, 239, 2, 2, 2732, 2733, 7, 161, 2, 2, 2733, 2735, 5, 462, 232, 2, 2734, 2730, 3, 2, 2, 2, 2734, 2732, 3, 2, 2, 2, 2735, 493, 3, 2, 2, 2, 2736, 2737, 5, 500, 251, 2, 2737, 2738, 5, 504, 253, 2, 2738, 2739, 5, 510, 256, 2, 2739, 495, 3, 2, 2, 2, 2740, 2741, 7, 58, 2, 2, 2741, 2742, 5, 502, 252, 2, 2742, 497, 3, 2, 2, 2, 2743, 2744, 7, 188, 2, 2, 2744, 2745, 5, 502, 252, 2, 2745, 2746, 5, 506, 254, 2, 2746, 499, 3, 2, 2, 2, 2747, 2748, 9, 19, 2, 2, 2748, 501, 3, 2, 2, 2, 2749, 2752, 3, 2, 2, 2, 2750, 2752, 5, 504, 253, 2, 2751, 2749, 3, 2, 2, 2, 2751, 2750, 3, 2, 2, 2, 2752, 503, 3, 2, 2, 2, 2753, 2754, 9, 20, 2, 2, 2754, 505, 3, 2, 2, 2, 2755, 2760, 3, 2, 2, 2, 2756, 2757, 7, 206, 2, 2, 2757, 2758, 7, 192, 2, 2, 2758, 2760, 5, 508, 255, 2, 2759, 2755, 3, 2, 2, 2, 2759, 2756, 3, 2, 2, 2, 2760, 507, 3, 2, 2, 2, 2761, 2762, 7, 239, 2, 2, 2762, 509, 3, 2, 2, 2, 2763, 2766, 3, 2, 2, 2, 2764, 2766, 5, 512, 257, 2, 2765, 2763, 3, 2, 2, 2, 2765, 2764, 3, 2, 2, 2, 2766, 511, 3, 2, 2, 2, 2767, 2768, 7, 121, 2, 2, 2768, 2769, 7, 133, 2, 2, 2769, 2770, 5, 514, 258, 2, 2770, 513, 3, 2, 2, 2, 2771, 2772, 7, 177, 2, 2, 2772, 2773, 7, 59, 2, 2, 2773, 515, 3, 2, 2, 2, 2774, 2775, 7, 197, 2, 2, 2775, 2776, 7, 208, 2, 2, 2776, 2777, 5, 512, 257, 2, 2777, 517, 3, 2, 2, 2, 2778, 2779, 7, 192, 2, 2, 2779, 2780, 5, 508, 255, 2, 2780, 519, 3, 2, 2, 2, 2781, 2782, 7, 107, 2, 2, 2782, 2783, 7, 86, 2, 2, 2783, 521, 3, 2, 2, 2, 2784, 2785, 7, 107, 2, 2, 2785, 2786, 7, 147, 2, 2, 2786, 2787, 7, 86, 2, 2, 2787, 523, 3, 2, 2, 2, 170, 528, 535, 542, 550, 560, 568, 580, 587, 598, 609, 615, 627, 632, 636, 643, 647, 652, 657, 664, 679, 710, 733, 735, 740, 744, 773, 778, 790, 801, 805, 810, 816, 831, 881, 883, 891, 909, 914, 928, 945, 962, 966, 976, 990, 994, 1008, 1021, 1031, 1041, 1050, 1057, 1066, 1076, 1084, 1091, 1098, 1112, 1121, 1129, 1137, 1144, 1165, 1180, 1186, 1205, 1218, 1225, 1230, 1248, 1257, 1283, 1301, 1336, 1349, 1363, 1372, 1387, 1398, 1421, 1428, 1441, 1464, 1487, 1503, 1512, 1524, 1542, 1556, 1566, 1579, 1608, 1618, 1625, 1639, 1645, 1651, 1657, 1663, 1684, 1696, 1700, 1706, 1718, 1728, 1739, 1749, 1753, 1761, 1765, 1778, 1794, 1803, 1810, 1835, 1853, 1876, 1880, 1894, 1901, 1911, 1934, 2069, 2073, 2083, 2114, 2116, 2125, 2267, 2269, 2290, 2353, 2355, 2362, 2370, 2380, 2388, 2396, 2406, 2417, 2437, 2446, 2484, 2490, 2521, 2531, 2554, 2582, 2593, 2604, 2608, 2619, 2624, 2634, 2650, 2656, 2663, 2678, 2686, 2697, 2703, 2709, 2714, 2724, 2728, 2734, 2751, 2759, 2765] \ No newline at end of file diff --git a/reverse_engineering/antlr/parser/n1ql.tokens b/reverse_engineering/antlr/parser/n1ql.tokens deleted file mode 100644 index 3d957ca..0000000 --- a/reverse_engineering/antlr/parser/n1ql.tokens +++ /dev/null @@ -1,264 +0,0 @@ -STR=1 -INT=2 -NUM=3 -BLOCK_COMMENT=4 -LINE_COMMENT=5 -WHITESPACE=6 -DOT=7 -PLUS=8 -MINUS=9 -STAR=10 -DIV=11 -MOD=12 -DEQ=13 -EQ=14 -NE=15 -LT=16 -LE=17 -GT=18 -GE=19 -CONCAT=20 -LPAREN=21 -RPAREN=22 -LBRACE=23 -RBRACE=24 -COMMA=25 -COLON=26 -LBRACKET=27 -RBRACKET=28 -RBRACKET_ICASE=29 -SEMI=30 -NOT_A_TOKEN=31 -ADVISE=32 -ALL=33 -ALTER=34 -ANALYZE=35 -AND=36 -ANY=37 -ARRAY=38 -AS=39 -ASC=40 -AT=41 -BEGIN=42 -BETWEEN=43 -BINARY=44 -BOOLEAN=45 -BREAK=46 -BUCKET=47 -BUILD=48 -BY=49 -CALL=50 -CASE=51 -CAST=52 -CLUSTER=53 -COLLATE=54 -COLLECTION=55 -COMMIT=56 -COMMITTED=57 -CONNECT=58 -CONTINUE=59 -CORRELATED=60 -COVER=61 -CREATE=62 -CURRENT=63 -DATABASE=64 -DATASET=65 -DATASTORE=66 -DECLARE=67 -DECREMENT=68 -DELETE_=69 -DERIVED=70 -DESC=71 -DESCRIBE=72 -DISTINCT=73 -DO=74 -DROP=75 -EACH=76 -ELEMENT=77 -ELSE=78 -END=79 -EVERY=80 -EXCEPT=81 -EXCLUDE=82 -EXECUTE=83 -EXISTS=84 -EXPLAIN=85 -FALSE=86 -FETCH=87 -FILTER=88 -FIRST=89 -FLATTEN=90 -FLUSH=91 -FOLLOWING=92 -FOR=93 -FORCE=94 -FROM=95 -FTS=96 -FUNCTION=97 -GOLANG=98 -GRANT=99 -GROUP=100 -GROUPS=101 -GSI=102 -HASH=103 -HAVING=104 -IF=105 -IGNORE=106 -ILIKE=107 -IN=108 -INCLUDE=109 -INCREMENT=110 -INDEX=111 -INFER=112 -INLINE=113 -INNER=114 -INSERT=115 -INTERSECT=116 -INTO=117 -IS=118 -ISOLATION=119 -JAVASCRIPT=120 -JOIN=121 -KEY=122 -KEYS=123 -KEYSPACE=124 -KNOWN=125 -LANGUAGE=126 -LAST=127 -LEFT=128 -LET_=129 -LETTING=130 -LEVEL=131 -LIKE=132 -LIMIT=133 -LSM=134 -MAP=135 -MAPPING=136 -MATCHED=137 -MATERIALIZED=138 -MERGE=139 -MISSING=140 -NAMESPACE=141 -NEST=142 -NL=143 -NO=144 -NOT=145 -NTH_VALUE=146 -NULL=147 -NULLS=148 -NUMBER=149 -OBJECT=150 -OFFSET=151 -ON=152 -OPTION=153 -OPTIONS=154 -OR=155 -ORDER=156 -OTHERS=157 -OUTER=158 -OVER=159 -PARSE=160 -PARTITION=161 -PASSWORD=162 -PATH=163 -POOL=164 -PRECEDING=165 -PREPARE=166 -PRIMARY=167 -PRIVATE=168 -PRIVILEGE=169 -PROCEDURE=170 -PROBE=171 -PUBLIC=172 -RANGE=173 -RAW=174 -READ=175 -REALM=176 -REDUCE=177 -RENAME=178 -REPLACE=179 -RESPECT=180 -RETURN=181 -RETURNING=182 -REVOKE=183 -RIGHT=184 -ROLE=185 -ROLLBACK=186 -ROW=187 -ROWS=188 -SATISFIES=189 -SAVEPOINT=190 -SCHEMA=191 -SCOPE=192 -SELECT=193 -SELF=194 -SET=195 -SHOW=196 -SOME=197 -START=198 -STATISTICS=199 -STRING=200 -SYSTEM=201 -THEN=202 -TIES=203 -TO=204 -TRAN=205 -TRANSACTION=206 -TRIGGER=207 -TRUE=208 -TRUNCATE=209 -UNBOUNDED=210 -UNDER=211 -UNION=212 -UNIQUE=213 -UNKNOWN=214 -UNNEST=215 -UNSET=216 -UPDATE=217 -UPSERT=218 -USE=219 -USER=220 -USING=221 -VALIDATE=222 -VALUE=223 -VALUED=224 -VALUES=225 -VIA=226 -VIEW=227 -WHEN=228 -WHERE=229 -WHILE=230 -WINDOW=231 -WITH=232 -WITHIN=233 -WORK=234 -XOR=235 -IDENT_ICASE=236 -IDENT=237 -NAMED_PARAM=238 -POSITIONAL_PARAM=239 -NEXT_PARAM=240 -'.'=7 -'+'=8 -'*'=10 -'/'=11 -'%'=12 -'=='=13 -'='=14 -'<'=16 -'<='=17 -'>'=18 -'>='=19 -'||'=20 -'('=21 -')'=22 -'{'=23 -'}'=24 -','=25 -':'=26 -'['=27 -']'=28 -']i'=29 -';'=30 -'!'=31 -'?'=240 diff --git a/reverse_engineering/antlr/parser/n1qlLexer.interp b/reverse_engineering/antlr/parser/n1qlLexer.interp deleted file mode 100644 index 9e8b73a..0000000 --- a/reverse_engineering/antlr/parser/n1qlLexer.interp +++ /dev/null @@ -1,746 +0,0 @@ -token literal names: -null -null -null -null -null -null -null -'.' -'+' -null -'*' -'/' -'%' -'==' -'=' -null -'<' -'<=' -'>' -'>=' -'||' -'(' -')' -'{' -'}' -',' -':' -'[' -']' -']i' -';' -'!' -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -'?' - -token symbolic names: -null -STR -INT -NUM -BLOCK_COMMENT -LINE_COMMENT -WHITESPACE -DOT -PLUS -MINUS -STAR -DIV -MOD -DEQ -EQ -NE -LT -LE -GT -GE -CONCAT -LPAREN -RPAREN -LBRACE -RBRACE -COMMA -COLON -LBRACKET -RBRACKET -RBRACKET_ICASE -SEMI -NOT_A_TOKEN -ADVISE -ALL -ALTER -ANALYZE -AND -ANY -ARRAY -AS -ASC -AT -BEGIN -BETWEEN -BINARY -BOOLEAN -BREAK -BUCKET -BUILD -BY -CALL -CASE -CAST -CLUSTER -COLLATE -COLLECTION -COMMIT -COMMITTED -CONNECT -CONTINUE -CORRELATED -COVER -CREATE -CURRENT -DATABASE -DATASET -DATASTORE -DECLARE -DECREMENT -DELETE_ -DERIVED -DESC -DESCRIBE -DISTINCT -DO -DROP -EACH -ELEMENT -ELSE -END -EVERY -EXCEPT -EXCLUDE -EXECUTE -EXISTS -EXPLAIN -FALSE -FETCH -FILTER -FIRST -FLATTEN -FLUSH -FOLLOWING -FOR -FORCE -FROM -FTS -FUNCTION -GOLANG -GRANT -GROUP -GROUPS -GSI -HASH -HAVING -IF -IGNORE -ILIKE -IN -INCLUDE -INCREMENT -INDEX -INFER -INLINE -INNER -INSERT -INTERSECT -INTO -IS -ISOLATION -JAVASCRIPT -JOIN -KEY -KEYS -KEYSPACE -KNOWN -LANGUAGE -LAST -LEFT -LET_ -LETTING -LEVEL -LIKE -LIMIT -LSM -MAP -MAPPING -MATCHED -MATERIALIZED -MERGE -MISSING -NAMESPACE -NEST -NL -NO -NOT -NTH_VALUE -NULL -NULLS -NUMBER -OBJECT -OFFSET -ON -OPTION -OPTIONS -OR -ORDER -OTHERS -OUTER -OVER -PARSE -PARTITION -PASSWORD -PATH -POOL -PRECEDING -PREPARE -PRIMARY -PRIVATE -PRIVILEGE -PROCEDURE -PROBE -PUBLIC -RANGE -RAW -READ -REALM -REDUCE -RENAME -REPLACE -RESPECT -RETURN -RETURNING -REVOKE -RIGHT -ROLE -ROLLBACK -ROW -ROWS -SATISFIES -SAVEPOINT -SCHEMA -SCOPE -SELECT -SELF -SET -SHOW -SOME -START -STATISTICS -STRING -SYSTEM -THEN -TIES -TO -TRAN -TRANSACTION -TRIGGER -TRUE -TRUNCATE -UNBOUNDED -UNDER -UNION -UNIQUE -UNKNOWN -UNNEST -UNSET -UPDATE -UPSERT -USE -USER -USING -VALIDATE -VALUE -VALUED -VALUES -VIA -VIEW -WHEN -WHERE -WHILE -WINDOW -WITH -WITHIN -WORK -XOR -IDENT_ICASE -IDENT -NAMED_PARAM -POSITIONAL_PARAM -NEXT_PARAM - -rule names: -SingleStringCharacter -DoubleStringCharacter -STR -NumStart -Digit -Int -Exponent -INT -NUM -BLOCK_COMMENT -LINE_COMMENT -WHITESPACE -DOT -PLUS -MINUS -STAR -DIV -MOD -DEQ -EQ -NE -LT -LE -GT -GE -CONCAT -LPAREN -RPAREN -LBRACE -RBRACE -COMMA -COLON -LBRACKET -RBRACKET -RBRACKET_ICASE -SEMI -NOT_A_TOKEN -ADVISE -ALL -ALTER -ANALYZE -AND -ANY -ARRAY -AS -ASC -AT -BEGIN -BETWEEN -BINARY -BOOLEAN -BREAK -BUCKET -BUILD -BY -CALL -CASE -CAST -CLUSTER -COLLATE -COLLECTION -COMMIT -COMMITTED -CONNECT -CONTINUE -CORRELATED -COVER -CREATE -CURRENT -DATABASE -DATASET -DATASTORE -DECLARE -DECREMENT -DELETE_ -DERIVED -DESC -DESCRIBE -DISTINCT -DO -DROP -EACH -ELEMENT -ELSE -END -EVERY -EXCEPT -EXCLUDE -EXECUTE -EXISTS -EXPLAIN -FALSE -FETCH -FILTER -FIRST -FLATTEN -FLUSH -FOLLOWING -FOR -FORCE -FROM -FTS -FUNCTION -GOLANG -GRANT -GROUP -GROUPS -GSI -HASH -HAVING -IF -IGNORE -ILIKE -IN -INCLUDE -INCREMENT -INDEX -INFER -INLINE -INNER -INSERT -INTERSECT -INTO -IS -ISOLATION -JAVASCRIPT -JOIN -KEY -KEYS -KEYSPACE -KNOWN -LANGUAGE -LAST -LEFT -LET_ -LETTING -LEVEL -LIKE -LIMIT -LSM -MAP -MAPPING -MATCHED -MATERIALIZED -MERGE -MISSING -NAMESPACE -NEST -NL -NO -NOT -NTH_VALUE -NULL -NULLS -NUMBER -OBJECT -OFFSET -ON -OPTION -OPTIONS -OR -ORDER -OTHERS -OUTER -OVER -PARSE -PARTITION -PASSWORD -PATH -POOL -PRECEDING -PREPARE -PRIMARY -PRIVATE -PRIVILEGE -PROCEDURE -PROBE -PUBLIC -RANGE -RAW -READ -REALM -REDUCE -RENAME -REPLACE -RESPECT -RETURN -RETURNING -REVOKE -RIGHT -ROLE -ROLLBACK -ROW -ROWS -SATISFIES -SAVEPOINT -SCHEMA -SCOPE -SELECT -SELF -SET -SHOW -SOME -START -STATISTICS -STRING -SYSTEM -THEN -TIES -TO -TRAN -TRANSACTION -TRIGGER -TRUE -TRUNCATE -UNBOUNDED -UNDER -UNION -UNIQUE -UNKNOWN -UNNEST -UNSET -UPDATE -UPSERT -USE -USER -USING -VALIDATE -VALUE -VALUED -VALUES -VIA -VIEW -WHEN -WHERE -WHILE -WINDOW -WITH -WITHIN -WORK -XOR -IdentChar -IdentFirstChar -IdentLaterChar -IDENT_ICASE -IDENT -NAMED_PARAM -POSITIONAL_PARAM -NEXT_PARAM - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE - -atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 242, 2064, 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, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, 9, 133, 4, 134, 9, 134, 4, 135, 9, 135, 4, 136, 9, 136, 4, 137, 9, 137, 4, 138, 9, 138, 4, 139, 9, 139, 4, 140, 9, 140, 4, 141, 9, 141, 4, 142, 9, 142, 4, 143, 9, 143, 4, 144, 9, 144, 4, 145, 9, 145, 4, 146, 9, 146, 4, 147, 9, 147, 4, 148, 9, 148, 4, 149, 9, 149, 4, 150, 9, 150, 4, 151, 9, 151, 4, 152, 9, 152, 4, 153, 9, 153, 4, 154, 9, 154, 4, 155, 9, 155, 4, 156, 9, 156, 4, 157, 9, 157, 4, 158, 9, 158, 4, 159, 9, 159, 4, 160, 9, 160, 4, 161, 9, 161, 4, 162, 9, 162, 4, 163, 9, 163, 4, 164, 9, 164, 4, 165, 9, 165, 4, 166, 9, 166, 4, 167, 9, 167, 4, 168, 9, 168, 4, 169, 9, 169, 4, 170, 9, 170, 4, 171, 9, 171, 4, 172, 9, 172, 4, 173, 9, 173, 4, 174, 9, 174, 4, 175, 9, 175, 4, 176, 9, 176, 4, 177, 9, 177, 4, 178, 9, 178, 4, 179, 9, 179, 4, 180, 9, 180, 4, 181, 9, 181, 4, 182, 9, 182, 4, 183, 9, 183, 4, 184, 9, 184, 4, 185, 9, 185, 4, 186, 9, 186, 4, 187, 9, 187, 4, 188, 9, 188, 4, 189, 9, 189, 4, 190, 9, 190, 4, 191, 9, 191, 4, 192, 9, 192, 4, 193, 9, 193, 4, 194, 9, 194, 4, 195, 9, 195, 4, 196, 9, 196, 4, 197, 9, 197, 4, 198, 9, 198, 4, 199, 9, 199, 4, 200, 9, 200, 4, 201, 9, 201, 4, 202, 9, 202, 4, 203, 9, 203, 4, 204, 9, 204, 4, 205, 9, 205, 4, 206, 9, 206, 4, 207, 9, 207, 4, 208, 9, 208, 4, 209, 9, 209, 4, 210, 9, 210, 4, 211, 9, 211, 4, 212, 9, 212, 4, 213, 9, 213, 4, 214, 9, 214, 4, 215, 9, 215, 4, 216, 9, 216, 4, 217, 9, 217, 4, 218, 9, 218, 4, 219, 9, 219, 4, 220, 9, 220, 4, 221, 9, 221, 4, 222, 9, 222, 4, 223, 9, 223, 4, 224, 9, 224, 4, 225, 9, 225, 4, 226, 9, 226, 4, 227, 9, 227, 4, 228, 9, 228, 4, 229, 9, 229, 4, 230, 9, 230, 4, 231, 9, 231, 4, 232, 9, 232, 4, 233, 9, 233, 4, 234, 9, 234, 4, 235, 9, 235, 4, 236, 9, 236, 4, 237, 9, 237, 4, 238, 9, 238, 4, 239, 9, 239, 4, 240, 9, 240, 4, 241, 9, 241, 4, 242, 9, 242, 4, 243, 9, 243, 4, 244, 9, 244, 4, 245, 9, 245, 4, 246, 9, 246, 4, 247, 9, 247, 4, 248, 9, 248, 4, 249, 9, 249, 4, 250, 9, 250, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 2, 509, 10, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 516, 10, 3, 3, 4, 3, 4, 7, 4, 520, 10, 4, 12, 4, 14, 4, 523, 11, 4, 3, 4, 3, 4, 3, 4, 7, 4, 528, 10, 4, 12, 4, 14, 4, 531, 11, 4, 3, 4, 5, 4, 534, 10, 4, 3, 5, 5, 5, 537, 10, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 7, 7, 544, 10, 7, 12, 7, 14, 7, 547, 11, 7, 5, 7, 549, 10, 7, 3, 8, 3, 8, 5, 8, 553, 10, 8, 3, 8, 6, 8, 556, 10, 8, 13, 8, 14, 8, 557, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 6, 10, 565, 10, 10, 13, 10, 14, 10, 566, 3, 10, 5, 10, 570, 10, 10, 3, 10, 3, 10, 3, 10, 5, 10, 575, 10, 10, 3, 11, 3, 11, 3, 11, 3, 11, 7, 11, 581, 10, 11, 12, 11, 14, 11, 584, 11, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 7, 12, 593, 10, 12, 12, 12, 14, 12, 596, 11, 12, 3, 13, 6, 13, 599, 10, 13, 13, 13, 14, 13, 600, 3, 13, 3, 13, 3, 14, 3, 14, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 5, 16, 615, 10, 16, 3, 17, 3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 632, 10, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 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, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 100, 3, 100, 3, 100, 3, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 109, 3, 109, 3, 109, 3, 109, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 112, 3, 112, 3, 112, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 115, 3, 115, 3, 115, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 125, 3, 125, 3, 125, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 128, 3, 128, 3, 128, 3, 128, 3, 128, 3, 129, 3, 129, 3, 129, 3, 129, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 136, 3, 136, 3, 136, 3, 136, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 140, 3, 140, 3, 140, 3, 140, 3, 140, 3, 140, 3, 141, 3, 141, 3, 141, 3, 141, 3, 142, 3, 142, 3, 142, 3, 142, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 146, 3, 146, 3, 146, 3, 146, 3, 146, 3, 146, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, 3, 150, 3, 150, 3, 150, 3, 151, 3, 151, 3, 151, 3, 152, 3, 152, 3, 152, 3, 152, 3, 153, 3, 153, 3, 153, 3, 153, 3, 153, 3, 153, 3, 153, 3, 153, 3, 153, 3, 153, 3, 154, 3, 154, 3, 154, 3, 154, 3, 154, 3, 155, 3, 155, 3, 155, 3, 155, 3, 155, 3, 155, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, 156, 3, 157, 3, 157, 3, 157, 3, 157, 3, 157, 3, 157, 3, 157, 3, 158, 3, 158, 3, 158, 3, 158, 3, 158, 3, 158, 3, 158, 3, 159, 3, 159, 3, 159, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 160, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 161, 3, 162, 3, 162, 3, 162, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 3, 163, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 165, 3, 166, 3, 166, 3, 166, 3, 166, 3, 166, 3, 167, 3, 167, 3, 167, 3, 167, 3, 167, 3, 167, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 168, 3, 169, 3, 169, 3, 169, 3, 169, 3, 169, 3, 169, 3, 169, 3, 169, 3, 169, 3, 170, 3, 170, 3, 170, 3, 170, 3, 170, 3, 171, 3, 171, 3, 171, 3, 171, 3, 171, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 172, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 173, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 174, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 175, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 176, 3, 177, 3, 177, 3, 177, 3, 177, 3, 177, 3, 177, 3, 177, 3, 177, 3, 177, 3, 177, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 178, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 179, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 180, 3, 181, 3, 181, 3, 181, 3, 181, 3, 182, 3, 182, 3, 182, 3, 182, 3, 182, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 183, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 184, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 185, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 186, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 187, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 188, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 189, 3, 190, 3, 190, 3, 190, 3, 190, 3, 190, 3, 190, 3, 190, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 191, 3, 192, 3, 192, 3, 192, 3, 192, 3, 192, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 193, 3, 194, 3, 194, 3, 194, 3, 194, 3, 195, 3, 195, 3, 195, 3, 195, 3, 195, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 196, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 197, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, 3, 198, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 199, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 200, 3, 201, 3, 201, 3, 201, 3, 201, 3, 201, 3, 202, 3, 202, 3, 202, 3, 202, 3, 203, 3, 203, 3, 203, 3, 203, 3, 203, 3, 204, 3, 204, 3, 204, 3, 204, 3, 204, 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 3, 205, 3, 206, 3, 206, 3, 206, 3, 206, 3, 206, 3, 206, 3, 206, 3, 206, 3, 206, 3, 206, 3, 206, 3, 207, 3, 207, 3, 207, 3, 207, 3, 207, 3, 207, 3, 207, 3, 208, 3, 208, 3, 208, 3, 208, 3, 208, 3, 208, 3, 208, 3, 209, 3, 209, 3, 209, 3, 209, 3, 209, 3, 210, 3, 210, 3, 210, 3, 210, 3, 210, 3, 211, 3, 211, 3, 211, 3, 212, 3, 212, 3, 212, 3, 212, 3, 212, 3, 213, 3, 213, 3, 213, 3, 213, 3, 213, 3, 213, 3, 213, 3, 213, 3, 213, 3, 213, 3, 213, 3, 213, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 214, 3, 215, 3, 215, 3, 215, 3, 215, 3, 215, 3, 216, 3, 216, 3, 216, 3, 216, 3, 216, 3, 216, 3, 216, 3, 216, 3, 216, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 217, 3, 218, 3, 218, 3, 218, 3, 218, 3, 218, 3, 218, 3, 219, 3, 219, 3, 219, 3, 219, 3, 219, 3, 219, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 220, 3, 221, 3, 221, 3, 221, 3, 221, 3, 221, 3, 221, 3, 221, 3, 221, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 222, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 223, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 224, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 225, 3, 226, 3, 226, 3, 226, 3, 226, 3, 227, 3, 227, 3, 227, 3, 227, 3, 227, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 228, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 229, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 230, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 231, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 232, 3, 233, 3, 233, 3, 233, 3, 233, 3, 234, 3, 234, 3, 234, 3, 234, 3, 234, 3, 235, 3, 235, 3, 235, 3, 235, 3, 235, 3, 236, 3, 236, 3, 236, 3, 236, 3, 236, 3, 236, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 237, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 238, 3, 239, 3, 239, 3, 239, 3, 239, 3, 239, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 240, 3, 241, 3, 241, 3, 241, 3, 241, 3, 241, 3, 242, 3, 242, 3, 242, 3, 242, 3, 243, 3, 243, 3, 243, 5, 243, 2015, 10, 243, 3, 244, 3, 244, 3, 245, 3, 245, 3, 246, 3, 246, 6, 246, 2023, 10, 246, 13, 246, 14, 246, 2024, 3, 246, 3, 246, 3, 246, 3, 247, 3, 247, 6, 247, 2032, 10, 247, 13, 247, 14, 247, 2033, 3, 247, 3, 247, 3, 247, 3, 247, 7, 247, 2040, 10, 247, 12, 247, 14, 247, 2043, 11, 247, 5, 247, 2045, 10, 247, 3, 248, 3, 248, 3, 248, 7, 248, 2050, 10, 248, 12, 248, 14, 248, 2053, 11, 248, 3, 249, 3, 249, 3, 249, 7, 249, 2058, 10, 249, 12, 249, 14, 249, 2061, 11, 249, 3, 250, 3, 250, 3, 582, 2, 251, 3, 2, 5, 2, 7, 3, 9, 2, 11, 2, 13, 2, 15, 2, 17, 4, 19, 5, 21, 6, 23, 7, 25, 8, 27, 9, 29, 10, 31, 11, 33, 12, 35, 13, 37, 14, 39, 15, 41, 16, 43, 17, 45, 18, 47, 19, 49, 20, 51, 21, 53, 22, 55, 23, 57, 24, 59, 25, 61, 26, 63, 27, 65, 28, 67, 29, 69, 30, 71, 31, 73, 32, 75, 33, 77, 34, 79, 35, 81, 36, 83, 37, 85, 38, 87, 39, 89, 40, 91, 41, 93, 42, 95, 43, 97, 44, 99, 45, 101, 46, 103, 47, 105, 48, 107, 49, 109, 50, 111, 51, 113, 52, 115, 53, 117, 54, 119, 55, 121, 56, 123, 57, 125, 58, 127, 59, 129, 60, 131, 61, 133, 62, 135, 63, 137, 64, 139, 65, 141, 66, 143, 67, 145, 68, 147, 69, 149, 70, 151, 71, 153, 72, 155, 73, 157, 74, 159, 75, 161, 76, 163, 77, 165, 78, 167, 79, 169, 80, 171, 81, 173, 82, 175, 83, 177, 84, 179, 85, 181, 86, 183, 87, 185, 88, 187, 89, 189, 90, 191, 91, 193, 92, 195, 93, 197, 94, 199, 95, 201, 96, 203, 97, 205, 98, 207, 99, 209, 100, 211, 101, 213, 102, 215, 103, 217, 104, 219, 105, 221, 106, 223, 107, 225, 108, 227, 109, 229, 110, 231, 111, 233, 112, 235, 113, 237, 114, 239, 115, 241, 116, 243, 117, 245, 118, 247, 119, 249, 120, 251, 121, 253, 122, 255, 123, 257, 124, 259, 125, 261, 126, 263, 127, 265, 128, 267, 129, 269, 130, 271, 131, 273, 132, 275, 133, 277, 134, 279, 135, 281, 136, 283, 137, 285, 138, 287, 139, 289, 140, 291, 141, 293, 142, 295, 143, 297, 144, 299, 145, 301, 146, 303, 147, 305, 148, 307, 149, 309, 150, 311, 151, 313, 152, 315, 153, 317, 154, 319, 155, 321, 156, 323, 157, 325, 158, 327, 159, 329, 160, 331, 161, 333, 162, 335, 163, 337, 164, 339, 165, 341, 166, 343, 167, 345, 168, 347, 169, 349, 170, 351, 171, 353, 172, 355, 173, 357, 174, 359, 175, 361, 176, 363, 177, 365, 178, 367, 179, 369, 180, 371, 181, 373, 182, 375, 183, 377, 184, 379, 185, 381, 186, 383, 187, 385, 188, 387, 189, 389, 190, 391, 191, 393, 192, 395, 193, 397, 194, 399, 195, 401, 196, 403, 197, 405, 198, 407, 199, 409, 200, 411, 201, 413, 202, 415, 203, 417, 204, 419, 205, 421, 206, 423, 207, 425, 208, 427, 209, 429, 210, 431, 211, 433, 212, 435, 213, 437, 214, 439, 215, 441, 216, 443, 217, 445, 218, 447, 219, 449, 220, 451, 221, 453, 222, 455, 223, 457, 224, 459, 225, 461, 226, 463, 227, 465, 228, 467, 229, 469, 230, 471, 231, 473, 232, 475, 233, 477, 234, 479, 235, 481, 236, 483, 237, 485, 2, 487, 2, 489, 2, 491, 238, 493, 239, 495, 240, 497, 241, 499, 242, 3, 2, 42, 3, 2, 41, 41, 6, 2, 12, 12, 15, 15, 41, 41, 94, 94, 3, 2, 36, 36, 4, 2, 36, 36, 94, 94, 3, 2, 50, 59, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 4, 2, 12, 12, 15, 15, 5, 2, 11, 12, 14, 15, 34, 34, 4, 2, 79, 79, 111, 111, 4, 2, 75, 75, 107, 107, 4, 2, 80, 80, 112, 112, 4, 2, 87, 87, 119, 119, 4, 2, 85, 85, 117, 117, 4, 2, 67, 67, 99, 99, 4, 2, 70, 70, 102, 102, 4, 2, 88, 88, 120, 120, 4, 2, 78, 78, 110, 110, 4, 2, 86, 86, 118, 118, 4, 2, 84, 84, 116, 116, 4, 2, 91, 91, 123, 123, 4, 2, 92, 92, 124, 124, 4, 2, 69, 69, 101, 101, 4, 2, 68, 68, 100, 100, 4, 2, 73, 73, 105, 105, 4, 2, 89, 89, 121, 121, 4, 2, 81, 81, 113, 113, 4, 2, 77, 77, 109, 109, 4, 2, 82, 82, 114, 114, 4, 2, 74, 74, 106, 106, 4, 2, 90, 90, 122, 122, 4, 2, 72, 72, 104, 104, 4, 2, 76, 76, 108, 108, 3, 2, 97, 97, 4, 2, 80, 80, 119, 119, 4, 2, 83, 83, 115, 115, 3, 2, 98, 98, 5, 2, 67, 92, 97, 97, 99, 124, 6, 2, 50, 59, 67, 92, 97, 97, 99, 124, 3, 2, 51, 59, 2, 2081, 2, 7, 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, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 2, 163, 3, 2, 2, 2, 2, 165, 3, 2, 2, 2, 2, 167, 3, 2, 2, 2, 2, 169, 3, 2, 2, 2, 2, 171, 3, 2, 2, 2, 2, 173, 3, 2, 2, 2, 2, 175, 3, 2, 2, 2, 2, 177, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 2, 181, 3, 2, 2, 2, 2, 183, 3, 2, 2, 2, 2, 185, 3, 2, 2, 2, 2, 187, 3, 2, 2, 2, 2, 189, 3, 2, 2, 2, 2, 191, 3, 2, 2, 2, 2, 193, 3, 2, 2, 2, 2, 195, 3, 2, 2, 2, 2, 197, 3, 2, 2, 2, 2, 199, 3, 2, 2, 2, 2, 201, 3, 2, 2, 2, 2, 203, 3, 2, 2, 2, 2, 205, 3, 2, 2, 2, 2, 207, 3, 2, 2, 2, 2, 209, 3, 2, 2, 2, 2, 211, 3, 2, 2, 2, 2, 213, 3, 2, 2, 2, 2, 215, 3, 2, 2, 2, 2, 217, 3, 2, 2, 2, 2, 219, 3, 2, 2, 2, 2, 221, 3, 2, 2, 2, 2, 223, 3, 2, 2, 2, 2, 225, 3, 2, 2, 2, 2, 227, 3, 2, 2, 2, 2, 229, 3, 2, 2, 2, 2, 231, 3, 2, 2, 2, 2, 233, 3, 2, 2, 2, 2, 235, 3, 2, 2, 2, 2, 237, 3, 2, 2, 2, 2, 239, 3, 2, 2, 2, 2, 241, 3, 2, 2, 2, 2, 243, 3, 2, 2, 2, 2, 245, 3, 2, 2, 2, 2, 247, 3, 2, 2, 2, 2, 249, 3, 2, 2, 2, 2, 251, 3, 2, 2, 2, 2, 253, 3, 2, 2, 2, 2, 255, 3, 2, 2, 2, 2, 257, 3, 2, 2, 2, 2, 259, 3, 2, 2, 2, 2, 261, 3, 2, 2, 2, 2, 263, 3, 2, 2, 2, 2, 265, 3, 2, 2, 2, 2, 267, 3, 2, 2, 2, 2, 269, 3, 2, 2, 2, 2, 271, 3, 2, 2, 2, 2, 273, 3, 2, 2, 2, 2, 275, 3, 2, 2, 2, 2, 277, 3, 2, 2, 2, 2, 279, 3, 2, 2, 2, 2, 281, 3, 2, 2, 2, 2, 283, 3, 2, 2, 2, 2, 285, 3, 2, 2, 2, 2, 287, 3, 2, 2, 2, 2, 289, 3, 2, 2, 2, 2, 291, 3, 2, 2, 2, 2, 293, 3, 2, 2, 2, 2, 295, 3, 2, 2, 2, 2, 297, 3, 2, 2, 2, 2, 299, 3, 2, 2, 2, 2, 301, 3, 2, 2, 2, 2, 303, 3, 2, 2, 2, 2, 305, 3, 2, 2, 2, 2, 307, 3, 2, 2, 2, 2, 309, 3, 2, 2, 2, 2, 311, 3, 2, 2, 2, 2, 313, 3, 2, 2, 2, 2, 315, 3, 2, 2, 2, 2, 317, 3, 2, 2, 2, 2, 319, 3, 2, 2, 2, 2, 321, 3, 2, 2, 2, 2, 323, 3, 2, 2, 2, 2, 325, 3, 2, 2, 2, 2, 327, 3, 2, 2, 2, 2, 329, 3, 2, 2, 2, 2, 331, 3, 2, 2, 2, 2, 333, 3, 2, 2, 2, 2, 335, 3, 2, 2, 2, 2, 337, 3, 2, 2, 2, 2, 339, 3, 2, 2, 2, 2, 341, 3, 2, 2, 2, 2, 343, 3, 2, 2, 2, 2, 345, 3, 2, 2, 2, 2, 347, 3, 2, 2, 2, 2, 349, 3, 2, 2, 2, 2, 351, 3, 2, 2, 2, 2, 353, 3, 2, 2, 2, 2, 355, 3, 2, 2, 2, 2, 357, 3, 2, 2, 2, 2, 359, 3, 2, 2, 2, 2, 361, 3, 2, 2, 2, 2, 363, 3, 2, 2, 2, 2, 365, 3, 2, 2, 2, 2, 367, 3, 2, 2, 2, 2, 369, 3, 2, 2, 2, 2, 371, 3, 2, 2, 2, 2, 373, 3, 2, 2, 2, 2, 375, 3, 2, 2, 2, 2, 377, 3, 2, 2, 2, 2, 379, 3, 2, 2, 2, 2, 381, 3, 2, 2, 2, 2, 383, 3, 2, 2, 2, 2, 385, 3, 2, 2, 2, 2, 387, 3, 2, 2, 2, 2, 389, 3, 2, 2, 2, 2, 391, 3, 2, 2, 2, 2, 393, 3, 2, 2, 2, 2, 395, 3, 2, 2, 2, 2, 397, 3, 2, 2, 2, 2, 399, 3, 2, 2, 2, 2, 401, 3, 2, 2, 2, 2, 403, 3, 2, 2, 2, 2, 405, 3, 2, 2, 2, 2, 407, 3, 2, 2, 2, 2, 409, 3, 2, 2, 2, 2, 411, 3, 2, 2, 2, 2, 413, 3, 2, 2, 2, 2, 415, 3, 2, 2, 2, 2, 417, 3, 2, 2, 2, 2, 419, 3, 2, 2, 2, 2, 421, 3, 2, 2, 2, 2, 423, 3, 2, 2, 2, 2, 425, 3, 2, 2, 2, 2, 427, 3, 2, 2, 2, 2, 429, 3, 2, 2, 2, 2, 431, 3, 2, 2, 2, 2, 433, 3, 2, 2, 2, 2, 435, 3, 2, 2, 2, 2, 437, 3, 2, 2, 2, 2, 439, 3, 2, 2, 2, 2, 441, 3, 2, 2, 2, 2, 443, 3, 2, 2, 2, 2, 445, 3, 2, 2, 2, 2, 447, 3, 2, 2, 2, 2, 449, 3, 2, 2, 2, 2, 451, 3, 2, 2, 2, 2, 453, 3, 2, 2, 2, 2, 455, 3, 2, 2, 2, 2, 457, 3, 2, 2, 2, 2, 459, 3, 2, 2, 2, 2, 461, 3, 2, 2, 2, 2, 463, 3, 2, 2, 2, 2, 465, 3, 2, 2, 2, 2, 467, 3, 2, 2, 2, 2, 469, 3, 2, 2, 2, 2, 471, 3, 2, 2, 2, 2, 473, 3, 2, 2, 2, 2, 475, 3, 2, 2, 2, 2, 477, 3, 2, 2, 2, 2, 479, 3, 2, 2, 2, 2, 481, 3, 2, 2, 2, 2, 483, 3, 2, 2, 2, 2, 491, 3, 2, 2, 2, 2, 493, 3, 2, 2, 2, 2, 495, 3, 2, 2, 2, 2, 497, 3, 2, 2, 2, 2, 499, 3, 2, 2, 2, 3, 508, 3, 2, 2, 2, 5, 515, 3, 2, 2, 2, 7, 533, 3, 2, 2, 2, 9, 536, 3, 2, 2, 2, 11, 538, 3, 2, 2, 2, 13, 548, 3, 2, 2, 2, 15, 550, 3, 2, 2, 2, 17, 559, 3, 2, 2, 2, 19, 574, 3, 2, 2, 2, 21, 576, 3, 2, 2, 2, 23, 588, 3, 2, 2, 2, 25, 598, 3, 2, 2, 2, 27, 604, 3, 2, 2, 2, 29, 606, 3, 2, 2, 2, 31, 614, 3, 2, 2, 2, 33, 616, 3, 2, 2, 2, 35, 618, 3, 2, 2, 2, 37, 620, 3, 2, 2, 2, 39, 622, 3, 2, 2, 2, 41, 625, 3, 2, 2, 2, 43, 631, 3, 2, 2, 2, 45, 633, 3, 2, 2, 2, 47, 635, 3, 2, 2, 2, 49, 638, 3, 2, 2, 2, 51, 640, 3, 2, 2, 2, 53, 643, 3, 2, 2, 2, 55, 646, 3, 2, 2, 2, 57, 648, 3, 2, 2, 2, 59, 650, 3, 2, 2, 2, 61, 652, 3, 2, 2, 2, 63, 654, 3, 2, 2, 2, 65, 656, 3, 2, 2, 2, 67, 658, 3, 2, 2, 2, 69, 660, 3, 2, 2, 2, 71, 662, 3, 2, 2, 2, 73, 665, 3, 2, 2, 2, 75, 667, 3, 2, 2, 2, 77, 669, 3, 2, 2, 2, 79, 676, 3, 2, 2, 2, 81, 680, 3, 2, 2, 2, 83, 686, 3, 2, 2, 2, 85, 694, 3, 2, 2, 2, 87, 698, 3, 2, 2, 2, 89, 702, 3, 2, 2, 2, 91, 708, 3, 2, 2, 2, 93, 711, 3, 2, 2, 2, 95, 715, 3, 2, 2, 2, 97, 718, 3, 2, 2, 2, 99, 724, 3, 2, 2, 2, 101, 732, 3, 2, 2, 2, 103, 739, 3, 2, 2, 2, 105, 747, 3, 2, 2, 2, 107, 753, 3, 2, 2, 2, 109, 760, 3, 2, 2, 2, 111, 766, 3, 2, 2, 2, 113, 769, 3, 2, 2, 2, 115, 774, 3, 2, 2, 2, 117, 779, 3, 2, 2, 2, 119, 784, 3, 2, 2, 2, 121, 792, 3, 2, 2, 2, 123, 800, 3, 2, 2, 2, 125, 811, 3, 2, 2, 2, 127, 818, 3, 2, 2, 2, 129, 828, 3, 2, 2, 2, 131, 836, 3, 2, 2, 2, 133, 845, 3, 2, 2, 2, 135, 856, 3, 2, 2, 2, 137, 862, 3, 2, 2, 2, 139, 869, 3, 2, 2, 2, 141, 877, 3, 2, 2, 2, 143, 886, 3, 2, 2, 2, 145, 894, 3, 2, 2, 2, 147, 904, 3, 2, 2, 2, 149, 912, 3, 2, 2, 2, 151, 922, 3, 2, 2, 2, 153, 929, 3, 2, 2, 2, 155, 937, 3, 2, 2, 2, 157, 942, 3, 2, 2, 2, 159, 951, 3, 2, 2, 2, 161, 960, 3, 2, 2, 2, 163, 963, 3, 2, 2, 2, 165, 968, 3, 2, 2, 2, 167, 973, 3, 2, 2, 2, 169, 981, 3, 2, 2, 2, 171, 986, 3, 2, 2, 2, 173, 990, 3, 2, 2, 2, 175, 996, 3, 2, 2, 2, 177, 1003, 3, 2, 2, 2, 179, 1011, 3, 2, 2, 2, 181, 1019, 3, 2, 2, 2, 183, 1026, 3, 2, 2, 2, 185, 1034, 3, 2, 2, 2, 187, 1040, 3, 2, 2, 2, 189, 1046, 3, 2, 2, 2, 191, 1053, 3, 2, 2, 2, 193, 1059, 3, 2, 2, 2, 195, 1067, 3, 2, 2, 2, 197, 1073, 3, 2, 2, 2, 199, 1083, 3, 2, 2, 2, 201, 1087, 3, 2, 2, 2, 203, 1093, 3, 2, 2, 2, 205, 1098, 3, 2, 2, 2, 207, 1102, 3, 2, 2, 2, 209, 1111, 3, 2, 2, 2, 211, 1118, 3, 2, 2, 2, 213, 1124, 3, 2, 2, 2, 215, 1130, 3, 2, 2, 2, 217, 1137, 3, 2, 2, 2, 219, 1141, 3, 2, 2, 2, 221, 1146, 3, 2, 2, 2, 223, 1153, 3, 2, 2, 2, 225, 1156, 3, 2, 2, 2, 227, 1163, 3, 2, 2, 2, 229, 1169, 3, 2, 2, 2, 231, 1172, 3, 2, 2, 2, 233, 1180, 3, 2, 2, 2, 235, 1190, 3, 2, 2, 2, 237, 1196, 3, 2, 2, 2, 239, 1202, 3, 2, 2, 2, 241, 1209, 3, 2, 2, 2, 243, 1215, 3, 2, 2, 2, 245, 1222, 3, 2, 2, 2, 247, 1232, 3, 2, 2, 2, 249, 1237, 3, 2, 2, 2, 251, 1240, 3, 2, 2, 2, 253, 1250, 3, 2, 2, 2, 255, 1261, 3, 2, 2, 2, 257, 1266, 3, 2, 2, 2, 259, 1270, 3, 2, 2, 2, 261, 1275, 3, 2, 2, 2, 263, 1284, 3, 2, 2, 2, 265, 1290, 3, 2, 2, 2, 267, 1299, 3, 2, 2, 2, 269, 1304, 3, 2, 2, 2, 271, 1309, 3, 2, 2, 2, 273, 1313, 3, 2, 2, 2, 275, 1321, 3, 2, 2, 2, 277, 1327, 3, 2, 2, 2, 279, 1332, 3, 2, 2, 2, 281, 1338, 3, 2, 2, 2, 283, 1342, 3, 2, 2, 2, 285, 1346, 3, 2, 2, 2, 287, 1354, 3, 2, 2, 2, 289, 1362, 3, 2, 2, 2, 291, 1375, 3, 2, 2, 2, 293, 1381, 3, 2, 2, 2, 295, 1389, 3, 2, 2, 2, 297, 1399, 3, 2, 2, 2, 299, 1404, 3, 2, 2, 2, 301, 1407, 3, 2, 2, 2, 303, 1410, 3, 2, 2, 2, 305, 1414, 3, 2, 2, 2, 307, 1424, 3, 2, 2, 2, 309, 1429, 3, 2, 2, 2, 311, 1435, 3, 2, 2, 2, 313, 1442, 3, 2, 2, 2, 315, 1449, 3, 2, 2, 2, 317, 1456, 3, 2, 2, 2, 319, 1459, 3, 2, 2, 2, 321, 1466, 3, 2, 2, 2, 323, 1474, 3, 2, 2, 2, 325, 1477, 3, 2, 2, 2, 327, 1483, 3, 2, 2, 2, 329, 1490, 3, 2, 2, 2, 331, 1496, 3, 2, 2, 2, 333, 1501, 3, 2, 2, 2, 335, 1507, 3, 2, 2, 2, 337, 1517, 3, 2, 2, 2, 339, 1526, 3, 2, 2, 2, 341, 1531, 3, 2, 2, 2, 343, 1536, 3, 2, 2, 2, 345, 1546, 3, 2, 2, 2, 347, 1554, 3, 2, 2, 2, 349, 1562, 3, 2, 2, 2, 351, 1570, 3, 2, 2, 2, 353, 1580, 3, 2, 2, 2, 355, 1590, 3, 2, 2, 2, 357, 1596, 3, 2, 2, 2, 359, 1603, 3, 2, 2, 2, 361, 1609, 3, 2, 2, 2, 363, 1613, 3, 2, 2, 2, 365, 1618, 3, 2, 2, 2, 367, 1624, 3, 2, 2, 2, 369, 1631, 3, 2, 2, 2, 371, 1638, 3, 2, 2, 2, 373, 1646, 3, 2, 2, 2, 375, 1654, 3, 2, 2, 2, 377, 1661, 3, 2, 2, 2, 379, 1671, 3, 2, 2, 2, 381, 1678, 3, 2, 2, 2, 383, 1684, 3, 2, 2, 2, 385, 1689, 3, 2, 2, 2, 387, 1698, 3, 2, 2, 2, 389, 1702, 3, 2, 2, 2, 391, 1707, 3, 2, 2, 2, 393, 1717, 3, 2, 2, 2, 395, 1727, 3, 2, 2, 2, 397, 1734, 3, 2, 2, 2, 399, 1740, 3, 2, 2, 2, 401, 1747, 3, 2, 2, 2, 403, 1752, 3, 2, 2, 2, 405, 1756, 3, 2, 2, 2, 407, 1761, 3, 2, 2, 2, 409, 1766, 3, 2, 2, 2, 411, 1772, 3, 2, 2, 2, 413, 1783, 3, 2, 2, 2, 415, 1790, 3, 2, 2, 2, 417, 1797, 3, 2, 2, 2, 419, 1802, 3, 2, 2, 2, 421, 1807, 3, 2, 2, 2, 423, 1810, 3, 2, 2, 2, 425, 1815, 3, 2, 2, 2, 427, 1827, 3, 2, 2, 2, 429, 1835, 3, 2, 2, 2, 431, 1840, 3, 2, 2, 2, 433, 1849, 3, 2, 2, 2, 435, 1859, 3, 2, 2, 2, 437, 1865, 3, 2, 2, 2, 439, 1871, 3, 2, 2, 2, 441, 1878, 3, 2, 2, 2, 443, 1886, 3, 2, 2, 2, 445, 1893, 3, 2, 2, 2, 447, 1899, 3, 2, 2, 2, 449, 1906, 3, 2, 2, 2, 451, 1913, 3, 2, 2, 2, 453, 1917, 3, 2, 2, 2, 455, 1922, 3, 2, 2, 2, 457, 1928, 3, 2, 2, 2, 459, 1937, 3, 2, 2, 2, 461, 1943, 3, 2, 2, 2, 463, 1950, 3, 2, 2, 2, 465, 1957, 3, 2, 2, 2, 467, 1961, 3, 2, 2, 2, 469, 1966, 3, 2, 2, 2, 471, 1971, 3, 2, 2, 2, 473, 1977, 3, 2, 2, 2, 475, 1983, 3, 2, 2, 2, 477, 1990, 3, 2, 2, 2, 479, 1995, 3, 2, 2, 2, 481, 2002, 3, 2, 2, 2, 483, 2007, 3, 2, 2, 2, 485, 2014, 3, 2, 2, 2, 487, 2016, 3, 2, 2, 2, 489, 2018, 3, 2, 2, 2, 491, 2020, 3, 2, 2, 2, 493, 2044, 3, 2, 2, 2, 495, 2046, 3, 2, 2, 2, 497, 2054, 3, 2, 2, 2, 499, 2062, 3, 2, 2, 2, 501, 502, 7, 41, 2, 2, 502, 509, 7, 41, 2, 2, 503, 504, 7, 94, 2, 2, 504, 509, 7, 41, 2, 2, 505, 506, 7, 94, 2, 2, 506, 509, 10, 2, 2, 2, 507, 509, 10, 3, 2, 2, 508, 501, 3, 2, 2, 2, 508, 503, 3, 2, 2, 2, 508, 505, 3, 2, 2, 2, 508, 507, 3, 2, 2, 2, 509, 4, 3, 2, 2, 2, 510, 511, 7, 94, 2, 2, 511, 516, 7, 36, 2, 2, 512, 513, 7, 94, 2, 2, 513, 516, 10, 4, 2, 2, 514, 516, 10, 5, 2, 2, 515, 510, 3, 2, 2, 2, 515, 512, 3, 2, 2, 2, 515, 514, 3, 2, 2, 2, 516, 6, 3, 2, 2, 2, 517, 521, 7, 41, 2, 2, 518, 520, 5, 3, 2, 2, 519, 518, 3, 2, 2, 2, 520, 523, 3, 2, 2, 2, 521, 519, 3, 2, 2, 2, 521, 522, 3, 2, 2, 2, 522, 524, 3, 2, 2, 2, 523, 521, 3, 2, 2, 2, 524, 534, 7, 41, 2, 2, 525, 529, 7, 36, 2, 2, 526, 528, 5, 5, 3, 2, 527, 526, 3, 2, 2, 2, 528, 531, 3, 2, 2, 2, 529, 527, 3, 2, 2, 2, 529, 530, 3, 2, 2, 2, 530, 532, 3, 2, 2, 2, 531, 529, 3, 2, 2, 2, 532, 534, 7, 36, 2, 2, 533, 517, 3, 2, 2, 2, 533, 525, 3, 2, 2, 2, 534, 8, 3, 2, 2, 2, 535, 537, 4, 50, 59, 2, 536, 535, 3, 2, 2, 2, 537, 10, 3, 2, 2, 2, 538, 539, 9, 6, 2, 2, 539, 12, 3, 2, 2, 2, 540, 549, 7, 50, 2, 2, 541, 545, 5, 9, 5, 2, 542, 544, 5, 11, 6, 2, 543, 542, 3, 2, 2, 2, 544, 547, 3, 2, 2, 2, 545, 543, 3, 2, 2, 2, 545, 546, 3, 2, 2, 2, 546, 549, 3, 2, 2, 2, 547, 545, 3, 2, 2, 2, 548, 540, 3, 2, 2, 2, 548, 541, 3, 2, 2, 2, 549, 14, 3, 2, 2, 2, 550, 552, 9, 7, 2, 2, 551, 553, 9, 8, 2, 2, 552, 551, 3, 2, 2, 2, 552, 553, 3, 2, 2, 2, 553, 555, 3, 2, 2, 2, 554, 556, 5, 11, 6, 2, 555, 554, 3, 2, 2, 2, 556, 557, 3, 2, 2, 2, 557, 555, 3, 2, 2, 2, 557, 558, 3, 2, 2, 2, 558, 16, 3, 2, 2, 2, 559, 560, 5, 13, 7, 2, 560, 18, 3, 2, 2, 2, 561, 562, 5, 13, 7, 2, 562, 564, 7, 48, 2, 2, 563, 565, 5, 11, 6, 2, 564, 563, 3, 2, 2, 2, 565, 566, 3, 2, 2, 2, 566, 564, 3, 2, 2, 2, 566, 567, 3, 2, 2, 2, 567, 569, 3, 2, 2, 2, 568, 570, 5, 15, 8, 2, 569, 568, 3, 2, 2, 2, 569, 570, 3, 2, 2, 2, 570, 575, 3, 2, 2, 2, 571, 572, 5, 13, 7, 2, 572, 573, 5, 15, 8, 2, 573, 575, 3, 2, 2, 2, 574, 561, 3, 2, 2, 2, 574, 571, 3, 2, 2, 2, 575, 20, 3, 2, 2, 2, 576, 577, 7, 49, 2, 2, 577, 578, 7, 44, 2, 2, 578, 582, 3, 2, 2, 2, 579, 581, 11, 2, 2, 2, 580, 579, 3, 2, 2, 2, 581, 584, 3, 2, 2, 2, 582, 583, 3, 2, 2, 2, 582, 580, 3, 2, 2, 2, 583, 585, 3, 2, 2, 2, 584, 582, 3, 2, 2, 2, 585, 586, 7, 44, 2, 2, 586, 587, 7, 49, 2, 2, 587, 22, 3, 2, 2, 2, 588, 589, 7, 47, 2, 2, 589, 590, 7, 47, 2, 2, 590, 594, 3, 2, 2, 2, 591, 593, 10, 9, 2, 2, 592, 591, 3, 2, 2, 2, 593, 596, 3, 2, 2, 2, 594, 592, 3, 2, 2, 2, 594, 595, 3, 2, 2, 2, 595, 24, 3, 2, 2, 2, 596, 594, 3, 2, 2, 2, 597, 599, 9, 10, 2, 2, 598, 597, 3, 2, 2, 2, 599, 600, 3, 2, 2, 2, 600, 598, 3, 2, 2, 2, 600, 601, 3, 2, 2, 2, 601, 602, 3, 2, 2, 2, 602, 603, 8, 13, 2, 2, 603, 26, 3, 2, 2, 2, 604, 605, 7, 48, 2, 2, 605, 28, 3, 2, 2, 2, 606, 607, 7, 45, 2, 2, 607, 30, 3, 2, 2, 2, 608, 615, 7, 47, 2, 2, 609, 610, 9, 11, 2, 2, 610, 611, 9, 12, 2, 2, 611, 612, 9, 13, 2, 2, 612, 613, 9, 14, 2, 2, 613, 615, 9, 15, 2, 2, 614, 608, 3, 2, 2, 2, 614, 609, 3, 2, 2, 2, 615, 32, 3, 2, 2, 2, 616, 617, 7, 44, 2, 2, 617, 34, 3, 2, 2, 2, 618, 619, 7, 49, 2, 2, 619, 36, 3, 2, 2, 2, 620, 621, 7, 39, 2, 2, 621, 38, 3, 2, 2, 2, 622, 623, 7, 63, 2, 2, 623, 624, 7, 63, 2, 2, 624, 40, 3, 2, 2, 2, 625, 626, 7, 63, 2, 2, 626, 42, 3, 2, 2, 2, 627, 628, 7, 35, 2, 2, 628, 632, 7, 63, 2, 2, 629, 630, 7, 62, 2, 2, 630, 632, 7, 64, 2, 2, 631, 627, 3, 2, 2, 2, 631, 629, 3, 2, 2, 2, 632, 44, 3, 2, 2, 2, 633, 634, 7, 62, 2, 2, 634, 46, 3, 2, 2, 2, 635, 636, 7, 62, 2, 2, 636, 637, 7, 63, 2, 2, 637, 48, 3, 2, 2, 2, 638, 639, 7, 64, 2, 2, 639, 50, 3, 2, 2, 2, 640, 641, 7, 64, 2, 2, 641, 642, 7, 63, 2, 2, 642, 52, 3, 2, 2, 2, 643, 644, 7, 126, 2, 2, 644, 645, 7, 126, 2, 2, 645, 54, 3, 2, 2, 2, 646, 647, 7, 42, 2, 2, 647, 56, 3, 2, 2, 2, 648, 649, 7, 43, 2, 2, 649, 58, 3, 2, 2, 2, 650, 651, 7, 125, 2, 2, 651, 60, 3, 2, 2, 2, 652, 653, 7, 127, 2, 2, 653, 62, 3, 2, 2, 2, 654, 655, 7, 46, 2, 2, 655, 64, 3, 2, 2, 2, 656, 657, 7, 60, 2, 2, 657, 66, 3, 2, 2, 2, 658, 659, 7, 93, 2, 2, 659, 68, 3, 2, 2, 2, 660, 661, 7, 95, 2, 2, 661, 70, 3, 2, 2, 2, 662, 663, 7, 95, 2, 2, 663, 664, 7, 107, 2, 2, 664, 72, 3, 2, 2, 2, 665, 666, 7, 61, 2, 2, 666, 74, 3, 2, 2, 2, 667, 668, 7, 35, 2, 2, 668, 76, 3, 2, 2, 2, 669, 670, 9, 16, 2, 2, 670, 671, 9, 17, 2, 2, 671, 672, 9, 18, 2, 2, 672, 673, 9, 12, 2, 2, 673, 674, 9, 15, 2, 2, 674, 675, 9, 7, 2, 2, 675, 78, 3, 2, 2, 2, 676, 677, 9, 16, 2, 2, 677, 678, 9, 19, 2, 2, 678, 679, 9, 19, 2, 2, 679, 80, 3, 2, 2, 2, 680, 681, 9, 16, 2, 2, 681, 682, 9, 19, 2, 2, 682, 683, 9, 20, 2, 2, 683, 684, 9, 7, 2, 2, 684, 685, 9, 21, 2, 2, 685, 82, 3, 2, 2, 2, 686, 687, 9, 16, 2, 2, 687, 688, 9, 13, 2, 2, 688, 689, 9, 16, 2, 2, 689, 690, 9, 19, 2, 2, 690, 691, 9, 22, 2, 2, 691, 692, 9, 23, 2, 2, 692, 693, 9, 7, 2, 2, 693, 84, 3, 2, 2, 2, 694, 695, 9, 16, 2, 2, 695, 696, 9, 13, 2, 2, 696, 697, 9, 17, 2, 2, 697, 86, 3, 2, 2, 2, 698, 699, 9, 16, 2, 2, 699, 700, 9, 13, 2, 2, 700, 701, 9, 22, 2, 2, 701, 88, 3, 2, 2, 2, 702, 703, 9, 16, 2, 2, 703, 704, 9, 21, 2, 2, 704, 705, 9, 21, 2, 2, 705, 706, 9, 16, 2, 2, 706, 707, 9, 22, 2, 2, 707, 90, 3, 2, 2, 2, 708, 709, 9, 16, 2, 2, 709, 710, 9, 15, 2, 2, 710, 92, 3, 2, 2, 2, 711, 712, 9, 16, 2, 2, 712, 713, 9, 15, 2, 2, 713, 714, 9, 24, 2, 2, 714, 94, 3, 2, 2, 2, 715, 716, 9, 16, 2, 2, 716, 717, 9, 20, 2, 2, 717, 96, 3, 2, 2, 2, 718, 719, 9, 25, 2, 2, 719, 720, 9, 7, 2, 2, 720, 721, 9, 26, 2, 2, 721, 722, 9, 12, 2, 2, 722, 723, 9, 13, 2, 2, 723, 98, 3, 2, 2, 2, 724, 725, 9, 25, 2, 2, 725, 726, 9, 7, 2, 2, 726, 727, 9, 20, 2, 2, 727, 728, 9, 27, 2, 2, 728, 729, 9, 7, 2, 2, 729, 730, 9, 7, 2, 2, 730, 731, 9, 13, 2, 2, 731, 100, 3, 2, 2, 2, 732, 733, 9, 25, 2, 2, 733, 734, 9, 12, 2, 2, 734, 735, 9, 13, 2, 2, 735, 736, 9, 16, 2, 2, 736, 737, 9, 21, 2, 2, 737, 738, 9, 22, 2, 2, 738, 102, 3, 2, 2, 2, 739, 740, 9, 25, 2, 2, 740, 741, 9, 28, 2, 2, 741, 742, 9, 28, 2, 2, 742, 743, 9, 19, 2, 2, 743, 744, 9, 7, 2, 2, 744, 745, 9, 16, 2, 2, 745, 746, 9, 13, 2, 2, 746, 104, 3, 2, 2, 2, 747, 748, 9, 25, 2, 2, 748, 749, 9, 21, 2, 2, 749, 750, 9, 7, 2, 2, 750, 751, 9, 16, 2, 2, 751, 752, 9, 29, 2, 2, 752, 106, 3, 2, 2, 2, 753, 754, 9, 25, 2, 2, 754, 755, 9, 14, 2, 2, 755, 756, 9, 24, 2, 2, 756, 757, 9, 29, 2, 2, 757, 758, 9, 7, 2, 2, 758, 759, 9, 20, 2, 2, 759, 108, 3, 2, 2, 2, 760, 761, 9, 25, 2, 2, 761, 762, 9, 14, 2, 2, 762, 763, 9, 12, 2, 2, 763, 764, 9, 19, 2, 2, 764, 765, 9, 17, 2, 2, 765, 110, 3, 2, 2, 2, 766, 767, 9, 25, 2, 2, 767, 768, 9, 22, 2, 2, 768, 112, 3, 2, 2, 2, 769, 770, 9, 24, 2, 2, 770, 771, 9, 16, 2, 2, 771, 772, 9, 19, 2, 2, 772, 773, 9, 19, 2, 2, 773, 114, 3, 2, 2, 2, 774, 775, 9, 24, 2, 2, 775, 776, 9, 16, 2, 2, 776, 777, 9, 15, 2, 2, 777, 778, 9, 7, 2, 2, 778, 116, 3, 2, 2, 2, 779, 780, 9, 24, 2, 2, 780, 781, 9, 16, 2, 2, 781, 782, 9, 15, 2, 2, 782, 783, 9, 20, 2, 2, 783, 118, 3, 2, 2, 2, 784, 785, 9, 24, 2, 2, 785, 786, 9, 19, 2, 2, 786, 787, 9, 14, 2, 2, 787, 788, 9, 15, 2, 2, 788, 789, 9, 20, 2, 2, 789, 790, 9, 7, 2, 2, 790, 791, 9, 21, 2, 2, 791, 120, 3, 2, 2, 2, 792, 793, 9, 24, 2, 2, 793, 794, 9, 28, 2, 2, 794, 795, 9, 19, 2, 2, 795, 796, 9, 19, 2, 2, 796, 797, 9, 16, 2, 2, 797, 798, 9, 20, 2, 2, 798, 799, 9, 7, 2, 2, 799, 122, 3, 2, 2, 2, 800, 801, 9, 24, 2, 2, 801, 802, 9, 28, 2, 2, 802, 803, 9, 19, 2, 2, 803, 804, 9, 19, 2, 2, 804, 805, 9, 7, 2, 2, 805, 806, 9, 24, 2, 2, 806, 807, 9, 20, 2, 2, 807, 808, 9, 12, 2, 2, 808, 809, 9, 28, 2, 2, 809, 810, 9, 13, 2, 2, 810, 124, 3, 2, 2, 2, 811, 812, 9, 24, 2, 2, 812, 813, 9, 28, 2, 2, 813, 814, 9, 11, 2, 2, 814, 815, 9, 11, 2, 2, 815, 816, 9, 12, 2, 2, 816, 817, 9, 20, 2, 2, 817, 126, 3, 2, 2, 2, 818, 819, 9, 24, 2, 2, 819, 820, 9, 28, 2, 2, 820, 821, 9, 11, 2, 2, 821, 822, 9, 11, 2, 2, 822, 823, 9, 12, 2, 2, 823, 824, 9, 20, 2, 2, 824, 825, 9, 20, 2, 2, 825, 826, 9, 7, 2, 2, 826, 827, 9, 17, 2, 2, 827, 128, 3, 2, 2, 2, 828, 829, 9, 24, 2, 2, 829, 830, 9, 28, 2, 2, 830, 831, 9, 13, 2, 2, 831, 832, 9, 13, 2, 2, 832, 833, 9, 7, 2, 2, 833, 834, 9, 24, 2, 2, 834, 835, 9, 20, 2, 2, 835, 130, 3, 2, 2, 2, 836, 837, 9, 24, 2, 2, 837, 838, 9, 28, 2, 2, 838, 839, 9, 13, 2, 2, 839, 840, 9, 20, 2, 2, 840, 841, 9, 12, 2, 2, 841, 842, 9, 13, 2, 2, 842, 843, 9, 14, 2, 2, 843, 844, 9, 7, 2, 2, 844, 132, 3, 2, 2, 2, 845, 846, 9, 24, 2, 2, 846, 847, 9, 28, 2, 2, 847, 848, 9, 21, 2, 2, 848, 849, 9, 21, 2, 2, 849, 850, 9, 7, 2, 2, 850, 851, 9, 19, 2, 2, 851, 852, 9, 16, 2, 2, 852, 853, 9, 20, 2, 2, 853, 854, 9, 7, 2, 2, 854, 855, 9, 17, 2, 2, 855, 134, 3, 2, 2, 2, 856, 857, 9, 24, 2, 2, 857, 858, 9, 28, 2, 2, 858, 859, 9, 18, 2, 2, 859, 860, 9, 7, 2, 2, 860, 861, 9, 21, 2, 2, 861, 136, 3, 2, 2, 2, 862, 863, 9, 24, 2, 2, 863, 864, 9, 21, 2, 2, 864, 865, 9, 7, 2, 2, 865, 866, 9, 16, 2, 2, 866, 867, 9, 20, 2, 2, 867, 868, 9, 7, 2, 2, 868, 138, 3, 2, 2, 2, 869, 870, 9, 24, 2, 2, 870, 871, 9, 14, 2, 2, 871, 872, 9, 21, 2, 2, 872, 873, 9, 21, 2, 2, 873, 874, 9, 7, 2, 2, 874, 875, 9, 13, 2, 2, 875, 876, 9, 20, 2, 2, 876, 140, 3, 2, 2, 2, 877, 878, 9, 17, 2, 2, 878, 879, 9, 16, 2, 2, 879, 880, 9, 20, 2, 2, 880, 881, 9, 16, 2, 2, 881, 882, 9, 25, 2, 2, 882, 883, 9, 16, 2, 2, 883, 884, 9, 15, 2, 2, 884, 885, 9, 7, 2, 2, 885, 142, 3, 2, 2, 2, 886, 887, 9, 17, 2, 2, 887, 888, 9, 16, 2, 2, 888, 889, 9, 20, 2, 2, 889, 890, 9, 16, 2, 2, 890, 891, 9, 15, 2, 2, 891, 892, 9, 7, 2, 2, 892, 893, 9, 20, 2, 2, 893, 144, 3, 2, 2, 2, 894, 895, 9, 17, 2, 2, 895, 896, 9, 16, 2, 2, 896, 897, 9, 20, 2, 2, 897, 898, 9, 16, 2, 2, 898, 899, 9, 15, 2, 2, 899, 900, 9, 20, 2, 2, 900, 901, 9, 28, 2, 2, 901, 902, 9, 21, 2, 2, 902, 903, 9, 7, 2, 2, 903, 146, 3, 2, 2, 2, 904, 905, 9, 17, 2, 2, 905, 906, 9, 7, 2, 2, 906, 907, 9, 24, 2, 2, 907, 908, 9, 19, 2, 2, 908, 909, 9, 16, 2, 2, 909, 910, 9, 21, 2, 2, 910, 911, 9, 7, 2, 2, 911, 148, 3, 2, 2, 2, 912, 913, 9, 17, 2, 2, 913, 914, 9, 7, 2, 2, 914, 915, 9, 24, 2, 2, 915, 916, 9, 21, 2, 2, 916, 917, 9, 7, 2, 2, 917, 918, 9, 11, 2, 2, 918, 919, 9, 7, 2, 2, 919, 920, 9, 13, 2, 2, 920, 921, 9, 20, 2, 2, 921, 150, 3, 2, 2, 2, 922, 923, 9, 17, 2, 2, 923, 924, 9, 7, 2, 2, 924, 925, 9, 19, 2, 2, 925, 926, 9, 7, 2, 2, 926, 927, 9, 20, 2, 2, 927, 928, 9, 7, 2, 2, 928, 152, 3, 2, 2, 2, 929, 930, 9, 17, 2, 2, 930, 931, 9, 7, 2, 2, 931, 932, 9, 21, 2, 2, 932, 933, 9, 12, 2, 2, 933, 934, 9, 18, 2, 2, 934, 935, 9, 7, 2, 2, 935, 936, 9, 17, 2, 2, 936, 154, 3, 2, 2, 2, 937, 938, 9, 17, 2, 2, 938, 939, 9, 7, 2, 2, 939, 940, 9, 15, 2, 2, 940, 941, 9, 24, 2, 2, 941, 156, 3, 2, 2, 2, 942, 943, 9, 17, 2, 2, 943, 944, 9, 7, 2, 2, 944, 945, 9, 15, 2, 2, 945, 946, 9, 24, 2, 2, 946, 947, 9, 21, 2, 2, 947, 948, 9, 12, 2, 2, 948, 949, 9, 25, 2, 2, 949, 950, 9, 7, 2, 2, 950, 158, 3, 2, 2, 2, 951, 952, 9, 17, 2, 2, 952, 953, 9, 12, 2, 2, 953, 954, 9, 15, 2, 2, 954, 955, 9, 20, 2, 2, 955, 956, 9, 12, 2, 2, 956, 957, 9, 13, 2, 2, 957, 958, 9, 24, 2, 2, 958, 959, 9, 20, 2, 2, 959, 160, 3, 2, 2, 2, 960, 961, 9, 17, 2, 2, 961, 962, 9, 28, 2, 2, 962, 162, 3, 2, 2, 2, 963, 964, 9, 17, 2, 2, 964, 965, 9, 21, 2, 2, 965, 966, 9, 28, 2, 2, 966, 967, 9, 30, 2, 2, 967, 164, 3, 2, 2, 2, 968, 969, 9, 7, 2, 2, 969, 970, 9, 16, 2, 2, 970, 971, 9, 24, 2, 2, 971, 972, 9, 31, 2, 2, 972, 166, 3, 2, 2, 2, 973, 974, 9, 7, 2, 2, 974, 975, 9, 19, 2, 2, 975, 976, 9, 7, 2, 2, 976, 977, 9, 11, 2, 2, 977, 978, 9, 7, 2, 2, 978, 979, 9, 13, 2, 2, 979, 980, 9, 20, 2, 2, 980, 168, 3, 2, 2, 2, 981, 982, 9, 7, 2, 2, 982, 983, 9, 19, 2, 2, 983, 984, 9, 15, 2, 2, 984, 985, 9, 7, 2, 2, 985, 170, 3, 2, 2, 2, 986, 987, 9, 7, 2, 2, 987, 988, 9, 13, 2, 2, 988, 989, 9, 17, 2, 2, 989, 172, 3, 2, 2, 2, 990, 991, 9, 7, 2, 2, 991, 992, 9, 18, 2, 2, 992, 993, 9, 7, 2, 2, 993, 994, 9, 21, 2, 2, 994, 995, 9, 22, 2, 2, 995, 174, 3, 2, 2, 2, 996, 997, 9, 7, 2, 2, 997, 998, 9, 32, 2, 2, 998, 999, 9, 24, 2, 2, 999, 1000, 9, 7, 2, 2, 1000, 1001, 9, 30, 2, 2, 1001, 1002, 9, 20, 2, 2, 1002, 176, 3, 2, 2, 2, 1003, 1004, 9, 7, 2, 2, 1004, 1005, 9, 32, 2, 2, 1005, 1006, 9, 24, 2, 2, 1006, 1007, 9, 19, 2, 2, 1007, 1008, 9, 14, 2, 2, 1008, 1009, 9, 17, 2, 2, 1009, 1010, 9, 7, 2, 2, 1010, 178, 3, 2, 2, 2, 1011, 1012, 9, 7, 2, 2, 1012, 1013, 9, 32, 2, 2, 1013, 1014, 9, 7, 2, 2, 1014, 1015, 9, 24, 2, 2, 1015, 1016, 9, 14, 2, 2, 1016, 1017, 9, 20, 2, 2, 1017, 1018, 9, 7, 2, 2, 1018, 180, 3, 2, 2, 2, 1019, 1020, 9, 7, 2, 2, 1020, 1021, 9, 32, 2, 2, 1021, 1022, 9, 12, 2, 2, 1022, 1023, 9, 15, 2, 2, 1023, 1024, 9, 20, 2, 2, 1024, 1025, 9, 15, 2, 2, 1025, 182, 3, 2, 2, 2, 1026, 1027, 9, 7, 2, 2, 1027, 1028, 9, 32, 2, 2, 1028, 1029, 9, 30, 2, 2, 1029, 1030, 9, 19, 2, 2, 1030, 1031, 9, 16, 2, 2, 1031, 1032, 9, 12, 2, 2, 1032, 1033, 9, 13, 2, 2, 1033, 184, 3, 2, 2, 2, 1034, 1035, 9, 33, 2, 2, 1035, 1036, 9, 16, 2, 2, 1036, 1037, 9, 19, 2, 2, 1037, 1038, 9, 15, 2, 2, 1038, 1039, 9, 7, 2, 2, 1039, 186, 3, 2, 2, 2, 1040, 1041, 9, 33, 2, 2, 1041, 1042, 9, 7, 2, 2, 1042, 1043, 9, 20, 2, 2, 1043, 1044, 9, 24, 2, 2, 1044, 1045, 9, 31, 2, 2, 1045, 188, 3, 2, 2, 2, 1046, 1047, 9, 33, 2, 2, 1047, 1048, 9, 12, 2, 2, 1048, 1049, 9, 19, 2, 2, 1049, 1050, 9, 20, 2, 2, 1050, 1051, 9, 7, 2, 2, 1051, 1052, 9, 21, 2, 2, 1052, 190, 3, 2, 2, 2, 1053, 1054, 9, 33, 2, 2, 1054, 1055, 9, 12, 2, 2, 1055, 1056, 9, 21, 2, 2, 1056, 1057, 9, 15, 2, 2, 1057, 1058, 9, 20, 2, 2, 1058, 192, 3, 2, 2, 2, 1059, 1060, 9, 33, 2, 2, 1060, 1061, 9, 19, 2, 2, 1061, 1062, 9, 16, 2, 2, 1062, 1063, 9, 20, 2, 2, 1063, 1064, 9, 20, 2, 2, 1064, 1065, 9, 7, 2, 2, 1065, 1066, 9, 13, 2, 2, 1066, 194, 3, 2, 2, 2, 1067, 1068, 9, 33, 2, 2, 1068, 1069, 9, 19, 2, 2, 1069, 1070, 9, 14, 2, 2, 1070, 1071, 9, 15, 2, 2, 1071, 1072, 9, 31, 2, 2, 1072, 196, 3, 2, 2, 2, 1073, 1074, 9, 33, 2, 2, 1074, 1075, 9, 28, 2, 2, 1075, 1076, 9, 19, 2, 2, 1076, 1077, 9, 19, 2, 2, 1077, 1078, 9, 28, 2, 2, 1078, 1079, 9, 27, 2, 2, 1079, 1080, 9, 12, 2, 2, 1080, 1081, 9, 13, 2, 2, 1081, 1082, 9, 26, 2, 2, 1082, 198, 3, 2, 2, 2, 1083, 1084, 9, 33, 2, 2, 1084, 1085, 9, 28, 2, 2, 1085, 1086, 9, 21, 2, 2, 1086, 200, 3, 2, 2, 2, 1087, 1088, 9, 33, 2, 2, 1088, 1089, 9, 28, 2, 2, 1089, 1090, 9, 21, 2, 2, 1090, 1091, 9, 24, 2, 2, 1091, 1092, 9, 7, 2, 2, 1092, 202, 3, 2, 2, 2, 1093, 1094, 9, 33, 2, 2, 1094, 1095, 9, 21, 2, 2, 1095, 1096, 9, 28, 2, 2, 1096, 1097, 9, 11, 2, 2, 1097, 204, 3, 2, 2, 2, 1098, 1099, 9, 33, 2, 2, 1099, 1100, 9, 20, 2, 2, 1100, 1101, 9, 15, 2, 2, 1101, 206, 3, 2, 2, 2, 1102, 1103, 9, 33, 2, 2, 1103, 1104, 9, 14, 2, 2, 1104, 1105, 9, 13, 2, 2, 1105, 1106, 9, 24, 2, 2, 1106, 1107, 9, 20, 2, 2, 1107, 1108, 9, 12, 2, 2, 1108, 1109, 9, 28, 2, 2, 1109, 1110, 9, 13, 2, 2, 1110, 208, 3, 2, 2, 2, 1111, 1112, 9, 26, 2, 2, 1112, 1113, 9, 28, 2, 2, 1113, 1114, 9, 19, 2, 2, 1114, 1115, 9, 16, 2, 2, 1115, 1116, 9, 13, 2, 2, 1116, 1117, 9, 26, 2, 2, 1117, 210, 3, 2, 2, 2, 1118, 1119, 9, 26, 2, 2, 1119, 1120, 9, 21, 2, 2, 1120, 1121, 9, 16, 2, 2, 1121, 1122, 9, 13, 2, 2, 1122, 1123, 9, 20, 2, 2, 1123, 212, 3, 2, 2, 2, 1124, 1125, 9, 26, 2, 2, 1125, 1126, 9, 21, 2, 2, 1126, 1127, 9, 28, 2, 2, 1127, 1128, 9, 14, 2, 2, 1128, 1129, 9, 30, 2, 2, 1129, 214, 3, 2, 2, 2, 1130, 1131, 9, 26, 2, 2, 1131, 1132, 9, 21, 2, 2, 1132, 1133, 9, 28, 2, 2, 1133, 1134, 9, 14, 2, 2, 1134, 1135, 9, 30, 2, 2, 1135, 1136, 9, 15, 2, 2, 1136, 216, 3, 2, 2, 2, 1137, 1138, 9, 26, 2, 2, 1138, 1139, 9, 15, 2, 2, 1139, 1140, 9, 12, 2, 2, 1140, 218, 3, 2, 2, 2, 1141, 1142, 9, 31, 2, 2, 1142, 1143, 9, 16, 2, 2, 1143, 1144, 9, 15, 2, 2, 1144, 1145, 9, 31, 2, 2, 1145, 220, 3, 2, 2, 2, 1146, 1147, 9, 31, 2, 2, 1147, 1148, 9, 16, 2, 2, 1148, 1149, 9, 18, 2, 2, 1149, 1150, 9, 12, 2, 2, 1150, 1151, 9, 13, 2, 2, 1151, 1152, 9, 26, 2, 2, 1152, 222, 3, 2, 2, 2, 1153, 1154, 9, 12, 2, 2, 1154, 1155, 9, 33, 2, 2, 1155, 224, 3, 2, 2, 2, 1156, 1157, 9, 12, 2, 2, 1157, 1158, 9, 26, 2, 2, 1158, 1159, 9, 13, 2, 2, 1159, 1160, 9, 28, 2, 2, 1160, 1161, 9, 21, 2, 2, 1161, 1162, 9, 7, 2, 2, 1162, 226, 3, 2, 2, 2, 1163, 1164, 9, 12, 2, 2, 1164, 1165, 9, 19, 2, 2, 1165, 1166, 9, 12, 2, 2, 1166, 1167, 9, 29, 2, 2, 1167, 1168, 9, 7, 2, 2, 1168, 228, 3, 2, 2, 2, 1169, 1170, 9, 12, 2, 2, 1170, 1171, 9, 13, 2, 2, 1171, 230, 3, 2, 2, 2, 1172, 1173, 9, 12, 2, 2, 1173, 1174, 9, 13, 2, 2, 1174, 1175, 9, 24, 2, 2, 1175, 1176, 9, 19, 2, 2, 1176, 1177, 9, 14, 2, 2, 1177, 1178, 9, 17, 2, 2, 1178, 1179, 9, 7, 2, 2, 1179, 232, 3, 2, 2, 2, 1180, 1181, 9, 12, 2, 2, 1181, 1182, 9, 13, 2, 2, 1182, 1183, 9, 24, 2, 2, 1183, 1184, 9, 21, 2, 2, 1184, 1185, 9, 7, 2, 2, 1185, 1186, 9, 11, 2, 2, 1186, 1187, 9, 7, 2, 2, 1187, 1188, 9, 13, 2, 2, 1188, 1189, 9, 20, 2, 2, 1189, 234, 3, 2, 2, 2, 1190, 1191, 9, 12, 2, 2, 1191, 1192, 9, 13, 2, 2, 1192, 1193, 9, 17, 2, 2, 1193, 1194, 9, 7, 2, 2, 1194, 1195, 9, 32, 2, 2, 1195, 236, 3, 2, 2, 2, 1196, 1197, 9, 12, 2, 2, 1197, 1198, 9, 13, 2, 2, 1198, 1199, 9, 33, 2, 2, 1199, 1200, 9, 7, 2, 2, 1200, 1201, 9, 21, 2, 2, 1201, 238, 3, 2, 2, 2, 1202, 1203, 9, 12, 2, 2, 1203, 1204, 9, 13, 2, 2, 1204, 1205, 9, 19, 2, 2, 1205, 1206, 9, 12, 2, 2, 1206, 1207, 9, 13, 2, 2, 1207, 1208, 9, 7, 2, 2, 1208, 240, 3, 2, 2, 2, 1209, 1210, 9, 12, 2, 2, 1210, 1211, 9, 13, 2, 2, 1211, 1212, 9, 13, 2, 2, 1212, 1213, 9, 7, 2, 2, 1213, 1214, 9, 21, 2, 2, 1214, 242, 3, 2, 2, 2, 1215, 1216, 9, 12, 2, 2, 1216, 1217, 9, 13, 2, 2, 1217, 1218, 9, 15, 2, 2, 1218, 1219, 9, 7, 2, 2, 1219, 1220, 9, 21, 2, 2, 1220, 1221, 9, 20, 2, 2, 1221, 244, 3, 2, 2, 2, 1222, 1223, 9, 12, 2, 2, 1223, 1224, 9, 13, 2, 2, 1224, 1225, 9, 20, 2, 2, 1225, 1226, 9, 7, 2, 2, 1226, 1227, 9, 21, 2, 2, 1227, 1228, 9, 15, 2, 2, 1228, 1229, 9, 7, 2, 2, 1229, 1230, 9, 24, 2, 2, 1230, 1231, 9, 20, 2, 2, 1231, 246, 3, 2, 2, 2, 1232, 1233, 9, 12, 2, 2, 1233, 1234, 9, 13, 2, 2, 1234, 1235, 9, 20, 2, 2, 1235, 1236, 9, 28, 2, 2, 1236, 248, 3, 2, 2, 2, 1237, 1238, 9, 12, 2, 2, 1238, 1239, 9, 15, 2, 2, 1239, 250, 3, 2, 2, 2, 1240, 1241, 9, 12, 2, 2, 1241, 1242, 9, 15, 2, 2, 1242, 1243, 9, 28, 2, 2, 1243, 1244, 9, 19, 2, 2, 1244, 1245, 9, 16, 2, 2, 1245, 1246, 9, 20, 2, 2, 1246, 1247, 9, 12, 2, 2, 1247, 1248, 9, 28, 2, 2, 1248, 1249, 9, 13, 2, 2, 1249, 252, 3, 2, 2, 2, 1250, 1251, 9, 34, 2, 2, 1251, 1252, 9, 16, 2, 2, 1252, 1253, 9, 18, 2, 2, 1253, 1254, 9, 16, 2, 2, 1254, 1255, 9, 15, 2, 2, 1255, 1256, 9, 24, 2, 2, 1256, 1257, 9, 21, 2, 2, 1257, 1258, 9, 12, 2, 2, 1258, 1259, 9, 30, 2, 2, 1259, 1260, 9, 20, 2, 2, 1260, 254, 3, 2, 2, 2, 1261, 1262, 9, 34, 2, 2, 1262, 1263, 9, 28, 2, 2, 1263, 1264, 9, 12, 2, 2, 1264, 1265, 9, 13, 2, 2, 1265, 256, 3, 2, 2, 2, 1266, 1267, 9, 29, 2, 2, 1267, 1268, 9, 7, 2, 2, 1268, 1269, 9, 22, 2, 2, 1269, 258, 3, 2, 2, 2, 1270, 1271, 9, 29, 2, 2, 1271, 1272, 9, 7, 2, 2, 1272, 1273, 9, 22, 2, 2, 1273, 1274, 9, 15, 2, 2, 1274, 260, 3, 2, 2, 2, 1275, 1276, 9, 29, 2, 2, 1276, 1277, 9, 7, 2, 2, 1277, 1278, 9, 22, 2, 2, 1278, 1279, 9, 15, 2, 2, 1279, 1280, 9, 30, 2, 2, 1280, 1281, 9, 16, 2, 2, 1281, 1282, 9, 24, 2, 2, 1282, 1283, 9, 7, 2, 2, 1283, 262, 3, 2, 2, 2, 1284, 1285, 9, 29, 2, 2, 1285, 1286, 9, 13, 2, 2, 1286, 1287, 9, 28, 2, 2, 1287, 1288, 9, 27, 2, 2, 1288, 1289, 9, 13, 2, 2, 1289, 264, 3, 2, 2, 2, 1290, 1291, 9, 19, 2, 2, 1291, 1292, 9, 16, 2, 2, 1292, 1293, 9, 13, 2, 2, 1293, 1294, 9, 26, 2, 2, 1294, 1295, 9, 14, 2, 2, 1295, 1296, 9, 16, 2, 2, 1296, 1297, 9, 26, 2, 2, 1297, 1298, 9, 7, 2, 2, 1298, 266, 3, 2, 2, 2, 1299, 1300, 9, 19, 2, 2, 1300, 1301, 9, 16, 2, 2, 1301, 1302, 9, 15, 2, 2, 1302, 1303, 9, 20, 2, 2, 1303, 268, 3, 2, 2, 2, 1304, 1305, 9, 19, 2, 2, 1305, 1306, 9, 7, 2, 2, 1306, 1307, 9, 33, 2, 2, 1307, 1308, 9, 20, 2, 2, 1308, 270, 3, 2, 2, 2, 1309, 1310, 9, 19, 2, 2, 1310, 1311, 9, 7, 2, 2, 1311, 1312, 9, 20, 2, 2, 1312, 272, 3, 2, 2, 2, 1313, 1314, 9, 19, 2, 2, 1314, 1315, 9, 7, 2, 2, 1315, 1316, 9, 20, 2, 2, 1316, 1317, 9, 20, 2, 2, 1317, 1318, 9, 12, 2, 2, 1318, 1319, 9, 13, 2, 2, 1319, 1320, 9, 26, 2, 2, 1320, 274, 3, 2, 2, 2, 1321, 1322, 9, 19, 2, 2, 1322, 1323, 9, 7, 2, 2, 1323, 1324, 9, 18, 2, 2, 1324, 1325, 9, 7, 2, 2, 1325, 1326, 9, 19, 2, 2, 1326, 276, 3, 2, 2, 2, 1327, 1328, 9, 19, 2, 2, 1328, 1329, 9, 12, 2, 2, 1329, 1330, 9, 29, 2, 2, 1330, 1331, 9, 7, 2, 2, 1331, 278, 3, 2, 2, 2, 1332, 1333, 9, 19, 2, 2, 1333, 1334, 9, 12, 2, 2, 1334, 1335, 9, 11, 2, 2, 1335, 1336, 9, 12, 2, 2, 1336, 1337, 9, 20, 2, 2, 1337, 280, 3, 2, 2, 2, 1338, 1339, 9, 19, 2, 2, 1339, 1340, 9, 15, 2, 2, 1340, 1341, 9, 11, 2, 2, 1341, 282, 3, 2, 2, 2, 1342, 1343, 9, 11, 2, 2, 1343, 1344, 9, 16, 2, 2, 1344, 1345, 9, 30, 2, 2, 1345, 284, 3, 2, 2, 2, 1346, 1347, 9, 11, 2, 2, 1347, 1348, 9, 16, 2, 2, 1348, 1349, 9, 30, 2, 2, 1349, 1350, 9, 30, 2, 2, 1350, 1351, 9, 12, 2, 2, 1351, 1352, 9, 13, 2, 2, 1352, 1353, 9, 26, 2, 2, 1353, 286, 3, 2, 2, 2, 1354, 1355, 9, 11, 2, 2, 1355, 1356, 9, 16, 2, 2, 1356, 1357, 9, 20, 2, 2, 1357, 1358, 9, 24, 2, 2, 1358, 1359, 9, 31, 2, 2, 1359, 1360, 9, 7, 2, 2, 1360, 1361, 9, 17, 2, 2, 1361, 288, 3, 2, 2, 2, 1362, 1363, 9, 11, 2, 2, 1363, 1364, 9, 16, 2, 2, 1364, 1365, 9, 20, 2, 2, 1365, 1366, 9, 7, 2, 2, 1366, 1367, 9, 21, 2, 2, 1367, 1368, 9, 12, 2, 2, 1368, 1369, 9, 16, 2, 2, 1369, 1370, 9, 19, 2, 2, 1370, 1371, 9, 12, 2, 2, 1371, 1372, 9, 23, 2, 2, 1372, 1373, 9, 7, 2, 2, 1373, 1374, 9, 17, 2, 2, 1374, 290, 3, 2, 2, 2, 1375, 1376, 9, 11, 2, 2, 1376, 1377, 9, 7, 2, 2, 1377, 1378, 9, 21, 2, 2, 1378, 1379, 9, 26, 2, 2, 1379, 1380, 9, 7, 2, 2, 1380, 292, 3, 2, 2, 2, 1381, 1382, 9, 11, 2, 2, 1382, 1383, 9, 12, 2, 2, 1383, 1384, 9, 15, 2, 2, 1384, 1385, 9, 15, 2, 2, 1385, 1386, 9, 12, 2, 2, 1386, 1387, 9, 13, 2, 2, 1387, 1388, 9, 26, 2, 2, 1388, 294, 3, 2, 2, 2, 1389, 1390, 9, 13, 2, 2, 1390, 1391, 9, 16, 2, 2, 1391, 1392, 9, 11, 2, 2, 1392, 1393, 9, 7, 2, 2, 1393, 1394, 9, 15, 2, 2, 1394, 1395, 9, 30, 2, 2, 1395, 1396, 9, 16, 2, 2, 1396, 1397, 9, 24, 2, 2, 1397, 1398, 9, 7, 2, 2, 1398, 296, 3, 2, 2, 2, 1399, 1400, 9, 13, 2, 2, 1400, 1401, 9, 7, 2, 2, 1401, 1402, 9, 15, 2, 2, 1402, 1403, 9, 20, 2, 2, 1403, 298, 3, 2, 2, 2, 1404, 1405, 9, 13, 2, 2, 1405, 1406, 9, 19, 2, 2, 1406, 300, 3, 2, 2, 2, 1407, 1408, 9, 13, 2, 2, 1408, 1409, 9, 28, 2, 2, 1409, 302, 3, 2, 2, 2, 1410, 1411, 9, 13, 2, 2, 1411, 1412, 9, 28, 2, 2, 1412, 1413, 9, 20, 2, 2, 1413, 304, 3, 2, 2, 2, 1414, 1415, 9, 13, 2, 2, 1415, 1416, 9, 20, 2, 2, 1416, 1417, 9, 31, 2, 2, 1417, 1418, 9, 35, 2, 2, 1418, 1419, 9, 18, 2, 2, 1419, 1420, 9, 16, 2, 2, 1420, 1421, 9, 19, 2, 2, 1421, 1422, 9, 14, 2, 2, 1422, 1423, 9, 7, 2, 2, 1423, 306, 3, 2, 2, 2, 1424, 1425, 9, 13, 2, 2, 1425, 1426, 9, 14, 2, 2, 1426, 1427, 9, 19, 2, 2, 1427, 1428, 9, 19, 2, 2, 1428, 308, 3, 2, 2, 2, 1429, 1430, 9, 13, 2, 2, 1430, 1431, 9, 14, 2, 2, 1431, 1432, 9, 19, 2, 2, 1432, 1433, 9, 19, 2, 2, 1433, 1434, 9, 15, 2, 2, 1434, 310, 3, 2, 2, 2, 1435, 1436, 9, 13, 2, 2, 1436, 1437, 9, 36, 2, 2, 1437, 1438, 9, 11, 2, 2, 1438, 1439, 9, 25, 2, 2, 1439, 1440, 9, 7, 2, 2, 1440, 1441, 9, 21, 2, 2, 1441, 312, 3, 2, 2, 2, 1442, 1443, 9, 28, 2, 2, 1443, 1444, 9, 25, 2, 2, 1444, 1445, 9, 34, 2, 2, 1445, 1446, 9, 7, 2, 2, 1446, 1447, 9, 24, 2, 2, 1447, 1448, 9, 20, 2, 2, 1448, 314, 3, 2, 2, 2, 1449, 1450, 9, 28, 2, 2, 1450, 1451, 9, 33, 2, 2, 1451, 1452, 9, 33, 2, 2, 1452, 1453, 9, 15, 2, 2, 1453, 1454, 9, 7, 2, 2, 1454, 1455, 9, 20, 2, 2, 1455, 316, 3, 2, 2, 2, 1456, 1457, 9, 28, 2, 2, 1457, 1458, 9, 13, 2, 2, 1458, 318, 3, 2, 2, 2, 1459, 1460, 9, 28, 2, 2, 1460, 1461, 9, 30, 2, 2, 1461, 1462, 9, 20, 2, 2, 1462, 1463, 9, 12, 2, 2, 1463, 1464, 9, 28, 2, 2, 1464, 1465, 9, 13, 2, 2, 1465, 320, 3, 2, 2, 2, 1466, 1467, 9, 28, 2, 2, 1467, 1468, 9, 30, 2, 2, 1468, 1469, 9, 20, 2, 2, 1469, 1470, 9, 12, 2, 2, 1470, 1471, 9, 28, 2, 2, 1471, 1472, 9, 13, 2, 2, 1472, 1473, 9, 15, 2, 2, 1473, 322, 3, 2, 2, 2, 1474, 1475, 9, 28, 2, 2, 1475, 1476, 9, 21, 2, 2, 1476, 324, 3, 2, 2, 2, 1477, 1478, 9, 28, 2, 2, 1478, 1479, 9, 21, 2, 2, 1479, 1480, 9, 17, 2, 2, 1480, 1481, 9, 7, 2, 2, 1481, 1482, 9, 21, 2, 2, 1482, 326, 3, 2, 2, 2, 1483, 1484, 9, 28, 2, 2, 1484, 1485, 9, 20, 2, 2, 1485, 1486, 9, 31, 2, 2, 1486, 1487, 9, 7, 2, 2, 1487, 1488, 9, 21, 2, 2, 1488, 1489, 9, 15, 2, 2, 1489, 328, 3, 2, 2, 2, 1490, 1491, 9, 28, 2, 2, 1491, 1492, 9, 14, 2, 2, 1492, 1493, 9, 20, 2, 2, 1493, 1494, 9, 7, 2, 2, 1494, 1495, 9, 21, 2, 2, 1495, 330, 3, 2, 2, 2, 1496, 1497, 9, 28, 2, 2, 1497, 1498, 9, 18, 2, 2, 1498, 1499, 9, 7, 2, 2, 1499, 1500, 9, 21, 2, 2, 1500, 332, 3, 2, 2, 2, 1501, 1502, 9, 30, 2, 2, 1502, 1503, 9, 16, 2, 2, 1503, 1504, 9, 21, 2, 2, 1504, 1505, 9, 15, 2, 2, 1505, 1506, 9, 7, 2, 2, 1506, 334, 3, 2, 2, 2, 1507, 1508, 9, 30, 2, 2, 1508, 1509, 9, 16, 2, 2, 1509, 1510, 9, 21, 2, 2, 1510, 1511, 9, 20, 2, 2, 1511, 1512, 9, 12, 2, 2, 1512, 1513, 9, 20, 2, 2, 1513, 1514, 9, 12, 2, 2, 1514, 1515, 9, 28, 2, 2, 1515, 1516, 9, 13, 2, 2, 1516, 336, 3, 2, 2, 2, 1517, 1518, 9, 30, 2, 2, 1518, 1519, 9, 16, 2, 2, 1519, 1520, 9, 15, 2, 2, 1520, 1521, 9, 15, 2, 2, 1521, 1522, 9, 27, 2, 2, 1522, 1523, 9, 28, 2, 2, 1523, 1524, 9, 21, 2, 2, 1524, 1525, 9, 17, 2, 2, 1525, 338, 3, 2, 2, 2, 1526, 1527, 9, 30, 2, 2, 1527, 1528, 9, 16, 2, 2, 1528, 1529, 9, 20, 2, 2, 1529, 1530, 9, 31, 2, 2, 1530, 340, 3, 2, 2, 2, 1531, 1532, 9, 30, 2, 2, 1532, 1533, 9, 28, 2, 2, 1533, 1534, 9, 28, 2, 2, 1534, 1535, 9, 19, 2, 2, 1535, 342, 3, 2, 2, 2, 1536, 1537, 9, 30, 2, 2, 1537, 1538, 9, 21, 2, 2, 1538, 1539, 9, 7, 2, 2, 1539, 1540, 9, 24, 2, 2, 1540, 1541, 9, 7, 2, 2, 1541, 1542, 9, 17, 2, 2, 1542, 1543, 9, 12, 2, 2, 1543, 1544, 9, 13, 2, 2, 1544, 1545, 9, 26, 2, 2, 1545, 344, 3, 2, 2, 2, 1546, 1547, 9, 30, 2, 2, 1547, 1548, 9, 21, 2, 2, 1548, 1549, 9, 7, 2, 2, 1549, 1550, 9, 30, 2, 2, 1550, 1551, 9, 16, 2, 2, 1551, 1552, 9, 21, 2, 2, 1552, 1553, 9, 7, 2, 2, 1553, 346, 3, 2, 2, 2, 1554, 1555, 9, 30, 2, 2, 1555, 1556, 9, 21, 2, 2, 1556, 1557, 9, 12, 2, 2, 1557, 1558, 9, 11, 2, 2, 1558, 1559, 9, 16, 2, 2, 1559, 1560, 9, 21, 2, 2, 1560, 1561, 9, 22, 2, 2, 1561, 348, 3, 2, 2, 2, 1562, 1563, 9, 30, 2, 2, 1563, 1564, 9, 21, 2, 2, 1564, 1565, 9, 12, 2, 2, 1565, 1566, 9, 18, 2, 2, 1566, 1567, 9, 16, 2, 2, 1567, 1568, 9, 20, 2, 2, 1568, 1569, 9, 7, 2, 2, 1569, 350, 3, 2, 2, 2, 1570, 1571, 9, 30, 2, 2, 1571, 1572, 9, 21, 2, 2, 1572, 1573, 9, 12, 2, 2, 1573, 1574, 9, 18, 2, 2, 1574, 1575, 9, 12, 2, 2, 1575, 1576, 9, 19, 2, 2, 1576, 1577, 9, 7, 2, 2, 1577, 1578, 9, 26, 2, 2, 1578, 1579, 9, 7, 2, 2, 1579, 352, 3, 2, 2, 2, 1580, 1581, 9, 30, 2, 2, 1581, 1582, 9, 21, 2, 2, 1582, 1583, 9, 28, 2, 2, 1583, 1584, 9, 24, 2, 2, 1584, 1585, 9, 7, 2, 2, 1585, 1586, 9, 17, 2, 2, 1586, 1587, 9, 14, 2, 2, 1587, 1588, 9, 21, 2, 2, 1588, 1589, 9, 7, 2, 2, 1589, 354, 3, 2, 2, 2, 1590, 1591, 9, 30, 2, 2, 1591, 1592, 9, 21, 2, 2, 1592, 1593, 9, 28, 2, 2, 1593, 1594, 9, 25, 2, 2, 1594, 1595, 9, 7, 2, 2, 1595, 356, 3, 2, 2, 2, 1596, 1597, 9, 30, 2, 2, 1597, 1598, 9, 14, 2, 2, 1598, 1599, 9, 25, 2, 2, 1599, 1600, 9, 19, 2, 2, 1600, 1601, 9, 12, 2, 2, 1601, 1602, 9, 24, 2, 2, 1602, 358, 3, 2, 2, 2, 1603, 1604, 9, 21, 2, 2, 1604, 1605, 9, 16, 2, 2, 1605, 1606, 9, 13, 2, 2, 1606, 1607, 9, 26, 2, 2, 1607, 1608, 9, 7, 2, 2, 1608, 360, 3, 2, 2, 2, 1609, 1610, 9, 21, 2, 2, 1610, 1611, 9, 16, 2, 2, 1611, 1612, 9, 27, 2, 2, 1612, 362, 3, 2, 2, 2, 1613, 1614, 9, 21, 2, 2, 1614, 1615, 9, 7, 2, 2, 1615, 1616, 9, 16, 2, 2, 1616, 1617, 9, 17, 2, 2, 1617, 364, 3, 2, 2, 2, 1618, 1619, 9, 21, 2, 2, 1619, 1620, 9, 7, 2, 2, 1620, 1621, 9, 16, 2, 2, 1621, 1622, 9, 19, 2, 2, 1622, 1623, 9, 11, 2, 2, 1623, 366, 3, 2, 2, 2, 1624, 1625, 9, 21, 2, 2, 1625, 1626, 9, 7, 2, 2, 1626, 1627, 9, 17, 2, 2, 1627, 1628, 9, 14, 2, 2, 1628, 1629, 9, 24, 2, 2, 1629, 1630, 9, 7, 2, 2, 1630, 368, 3, 2, 2, 2, 1631, 1632, 9, 21, 2, 2, 1632, 1633, 9, 7, 2, 2, 1633, 1634, 9, 13, 2, 2, 1634, 1635, 9, 16, 2, 2, 1635, 1636, 9, 11, 2, 2, 1636, 1637, 9, 7, 2, 2, 1637, 370, 3, 2, 2, 2, 1638, 1639, 9, 21, 2, 2, 1639, 1640, 9, 7, 2, 2, 1640, 1641, 9, 30, 2, 2, 1641, 1642, 9, 19, 2, 2, 1642, 1643, 9, 16, 2, 2, 1643, 1644, 9, 24, 2, 2, 1644, 1645, 9, 7, 2, 2, 1645, 372, 3, 2, 2, 2, 1646, 1647, 9, 21, 2, 2, 1647, 1648, 9, 7, 2, 2, 1648, 1649, 9, 15, 2, 2, 1649, 1650, 9, 30, 2, 2, 1650, 1651, 9, 7, 2, 2, 1651, 1652, 9, 24, 2, 2, 1652, 1653, 9, 20, 2, 2, 1653, 374, 3, 2, 2, 2, 1654, 1655, 9, 21, 2, 2, 1655, 1656, 9, 7, 2, 2, 1656, 1657, 9, 20, 2, 2, 1657, 1658, 9, 14, 2, 2, 1658, 1659, 9, 21, 2, 2, 1659, 1660, 9, 13, 2, 2, 1660, 376, 3, 2, 2, 2, 1661, 1662, 9, 21, 2, 2, 1662, 1663, 9, 7, 2, 2, 1663, 1664, 9, 20, 2, 2, 1664, 1665, 9, 14, 2, 2, 1665, 1666, 9, 21, 2, 2, 1666, 1667, 9, 13, 2, 2, 1667, 1668, 9, 12, 2, 2, 1668, 1669, 9, 13, 2, 2, 1669, 1670, 9, 26, 2, 2, 1670, 378, 3, 2, 2, 2, 1671, 1672, 9, 21, 2, 2, 1672, 1673, 9, 7, 2, 2, 1673, 1674, 9, 18, 2, 2, 1674, 1675, 9, 28, 2, 2, 1675, 1676, 9, 29, 2, 2, 1676, 1677, 9, 7, 2, 2, 1677, 380, 3, 2, 2, 2, 1678, 1679, 9, 21, 2, 2, 1679, 1680, 9, 12, 2, 2, 1680, 1681, 9, 26, 2, 2, 1681, 1682, 9, 31, 2, 2, 1682, 1683, 9, 20, 2, 2, 1683, 382, 3, 2, 2, 2, 1684, 1685, 9, 21, 2, 2, 1685, 1686, 9, 28, 2, 2, 1686, 1687, 9, 19, 2, 2, 1687, 1688, 9, 7, 2, 2, 1688, 384, 3, 2, 2, 2, 1689, 1690, 9, 21, 2, 2, 1690, 1691, 9, 28, 2, 2, 1691, 1692, 9, 19, 2, 2, 1692, 1693, 9, 19, 2, 2, 1693, 1694, 9, 25, 2, 2, 1694, 1695, 9, 16, 2, 2, 1695, 1696, 9, 24, 2, 2, 1696, 1697, 9, 29, 2, 2, 1697, 386, 3, 2, 2, 2, 1698, 1699, 9, 21, 2, 2, 1699, 1700, 9, 28, 2, 2, 1700, 1701, 9, 27, 2, 2, 1701, 388, 3, 2, 2, 2, 1702, 1703, 9, 21, 2, 2, 1703, 1704, 9, 28, 2, 2, 1704, 1705, 9, 27, 2, 2, 1705, 1706, 9, 15, 2, 2, 1706, 390, 3, 2, 2, 2, 1707, 1708, 9, 15, 2, 2, 1708, 1709, 9, 16, 2, 2, 1709, 1710, 9, 20, 2, 2, 1710, 1711, 9, 12, 2, 2, 1711, 1712, 9, 15, 2, 2, 1712, 1713, 9, 33, 2, 2, 1713, 1714, 9, 12, 2, 2, 1714, 1715, 9, 7, 2, 2, 1715, 1716, 9, 15, 2, 2, 1716, 392, 3, 2, 2, 2, 1717, 1718, 9, 15, 2, 2, 1718, 1719, 9, 16, 2, 2, 1719, 1720, 9, 18, 2, 2, 1720, 1721, 9, 7, 2, 2, 1721, 1722, 9, 30, 2, 2, 1722, 1723, 9, 28, 2, 2, 1723, 1724, 9, 12, 2, 2, 1724, 1725, 9, 13, 2, 2, 1725, 1726, 9, 20, 2, 2, 1726, 394, 3, 2, 2, 2, 1727, 1728, 9, 15, 2, 2, 1728, 1729, 9, 24, 2, 2, 1729, 1730, 9, 31, 2, 2, 1730, 1731, 9, 7, 2, 2, 1731, 1732, 9, 11, 2, 2, 1732, 1733, 9, 16, 2, 2, 1733, 396, 3, 2, 2, 2, 1734, 1735, 9, 15, 2, 2, 1735, 1736, 9, 24, 2, 2, 1736, 1737, 9, 28, 2, 2, 1737, 1738, 9, 30, 2, 2, 1738, 1739, 9, 7, 2, 2, 1739, 398, 3, 2, 2, 2, 1740, 1741, 9, 15, 2, 2, 1741, 1742, 9, 7, 2, 2, 1742, 1743, 9, 19, 2, 2, 1743, 1744, 9, 7, 2, 2, 1744, 1745, 9, 24, 2, 2, 1745, 1746, 9, 20, 2, 2, 1746, 400, 3, 2, 2, 2, 1747, 1748, 9, 15, 2, 2, 1748, 1749, 9, 7, 2, 2, 1749, 1750, 9, 19, 2, 2, 1750, 1751, 9, 33, 2, 2, 1751, 402, 3, 2, 2, 2, 1752, 1753, 9, 15, 2, 2, 1753, 1754, 9, 7, 2, 2, 1754, 1755, 9, 20, 2, 2, 1755, 404, 3, 2, 2, 2, 1756, 1757, 9, 15, 2, 2, 1757, 1758, 9, 31, 2, 2, 1758, 1759, 9, 28, 2, 2, 1759, 1760, 9, 27, 2, 2, 1760, 406, 3, 2, 2, 2, 1761, 1762, 9, 15, 2, 2, 1762, 1763, 9, 28, 2, 2, 1763, 1764, 9, 11, 2, 2, 1764, 1765, 9, 7, 2, 2, 1765, 408, 3, 2, 2, 2, 1766, 1767, 9, 15, 2, 2, 1767, 1768, 9, 20, 2, 2, 1768, 1769, 9, 16, 2, 2, 1769, 1770, 9, 21, 2, 2, 1770, 1771, 9, 20, 2, 2, 1771, 410, 3, 2, 2, 2, 1772, 1773, 9, 15, 2, 2, 1773, 1774, 9, 20, 2, 2, 1774, 1775, 9, 16, 2, 2, 1775, 1776, 9, 20, 2, 2, 1776, 1777, 9, 12, 2, 2, 1777, 1778, 9, 15, 2, 2, 1778, 1779, 9, 20, 2, 2, 1779, 1780, 9, 12, 2, 2, 1780, 1781, 9, 24, 2, 2, 1781, 1782, 9, 15, 2, 2, 1782, 412, 3, 2, 2, 2, 1783, 1784, 9, 15, 2, 2, 1784, 1785, 9, 20, 2, 2, 1785, 1786, 9, 21, 2, 2, 1786, 1787, 9, 12, 2, 2, 1787, 1788, 9, 13, 2, 2, 1788, 1789, 9, 26, 2, 2, 1789, 414, 3, 2, 2, 2, 1790, 1791, 9, 15, 2, 2, 1791, 1792, 9, 22, 2, 2, 1792, 1793, 9, 15, 2, 2, 1793, 1794, 9, 20, 2, 2, 1794, 1795, 9, 7, 2, 2, 1795, 1796, 9, 11, 2, 2, 1796, 416, 3, 2, 2, 2, 1797, 1798, 9, 20, 2, 2, 1798, 1799, 9, 31, 2, 2, 1799, 1800, 9, 7, 2, 2, 1800, 1801, 9, 13, 2, 2, 1801, 418, 3, 2, 2, 2, 1802, 1803, 9, 20, 2, 2, 1803, 1804, 9, 12, 2, 2, 1804, 1805, 9, 7, 2, 2, 1805, 1806, 9, 15, 2, 2, 1806, 420, 3, 2, 2, 2, 1807, 1808, 9, 20, 2, 2, 1808, 1809, 9, 28, 2, 2, 1809, 422, 3, 2, 2, 2, 1810, 1811, 9, 20, 2, 2, 1811, 1812, 9, 21, 2, 2, 1812, 1813, 9, 16, 2, 2, 1813, 1814, 9, 13, 2, 2, 1814, 424, 3, 2, 2, 2, 1815, 1816, 9, 20, 2, 2, 1816, 1817, 9, 21, 2, 2, 1817, 1818, 9, 16, 2, 2, 1818, 1819, 9, 13, 2, 2, 1819, 1820, 9, 15, 2, 2, 1820, 1821, 9, 16, 2, 2, 1821, 1822, 9, 24, 2, 2, 1822, 1823, 9, 20, 2, 2, 1823, 1824, 9, 12, 2, 2, 1824, 1825, 9, 28, 2, 2, 1825, 1826, 9, 13, 2, 2, 1826, 426, 3, 2, 2, 2, 1827, 1828, 9, 20, 2, 2, 1828, 1829, 9, 21, 2, 2, 1829, 1830, 9, 12, 2, 2, 1830, 1831, 9, 26, 2, 2, 1831, 1832, 9, 26, 2, 2, 1832, 1833, 9, 7, 2, 2, 1833, 1834, 9, 21, 2, 2, 1834, 428, 3, 2, 2, 2, 1835, 1836, 9, 20, 2, 2, 1836, 1837, 9, 21, 2, 2, 1837, 1838, 9, 14, 2, 2, 1838, 1839, 9, 7, 2, 2, 1839, 430, 3, 2, 2, 2, 1840, 1841, 9, 20, 2, 2, 1841, 1842, 9, 21, 2, 2, 1842, 1843, 9, 14, 2, 2, 1843, 1844, 9, 13, 2, 2, 1844, 1845, 9, 24, 2, 2, 1845, 1846, 9, 16, 2, 2, 1846, 1847, 9, 20, 2, 2, 1847, 1848, 9, 7, 2, 2, 1848, 432, 3, 2, 2, 2, 1849, 1850, 9, 14, 2, 2, 1850, 1851, 9, 13, 2, 2, 1851, 1852, 9, 25, 2, 2, 1852, 1853, 9, 28, 2, 2, 1853, 1854, 9, 14, 2, 2, 1854, 1855, 9, 13, 2, 2, 1855, 1856, 9, 17, 2, 2, 1856, 1857, 9, 7, 2, 2, 1857, 1858, 9, 17, 2, 2, 1858, 434, 3, 2, 2, 2, 1859, 1860, 9, 14, 2, 2, 1860, 1861, 9, 13, 2, 2, 1861, 1862, 9, 17, 2, 2, 1862, 1863, 9, 7, 2, 2, 1863, 1864, 9, 21, 2, 2, 1864, 436, 3, 2, 2, 2, 1865, 1866, 9, 14, 2, 2, 1866, 1867, 9, 13, 2, 2, 1867, 1868, 9, 12, 2, 2, 1868, 1869, 9, 28, 2, 2, 1869, 1870, 9, 13, 2, 2, 1870, 438, 3, 2, 2, 2, 1871, 1872, 9, 14, 2, 2, 1872, 1873, 9, 13, 2, 2, 1873, 1874, 9, 12, 2, 2, 1874, 1875, 9, 37, 2, 2, 1875, 1876, 9, 14, 2, 2, 1876, 1877, 9, 7, 2, 2, 1877, 440, 3, 2, 2, 2, 1878, 1879, 9, 14, 2, 2, 1879, 1880, 9, 13, 2, 2, 1880, 1881, 9, 29, 2, 2, 1881, 1882, 9, 13, 2, 2, 1882, 1883, 9, 28, 2, 2, 1883, 1884, 9, 27, 2, 2, 1884, 1885, 9, 13, 2, 2, 1885, 442, 3, 2, 2, 2, 1886, 1887, 9, 14, 2, 2, 1887, 1888, 9, 13, 2, 2, 1888, 1889, 9, 13, 2, 2, 1889, 1890, 9, 7, 2, 2, 1890, 1891, 9, 15, 2, 2, 1891, 1892, 9, 20, 2, 2, 1892, 444, 3, 2, 2, 2, 1893, 1894, 9, 14, 2, 2, 1894, 1895, 9, 13, 2, 2, 1895, 1896, 9, 15, 2, 2, 1896, 1897, 9, 7, 2, 2, 1897, 1898, 9, 20, 2, 2, 1898, 446, 3, 2, 2, 2, 1899, 1900, 9, 14, 2, 2, 1900, 1901, 9, 30, 2, 2, 1901, 1902, 9, 17, 2, 2, 1902, 1903, 9, 16, 2, 2, 1903, 1904, 9, 20, 2, 2, 1904, 1905, 9, 7, 2, 2, 1905, 448, 3, 2, 2, 2, 1906, 1907, 9, 14, 2, 2, 1907, 1908, 9, 30, 2, 2, 1908, 1909, 9, 15, 2, 2, 1909, 1910, 9, 7, 2, 2, 1910, 1911, 9, 21, 2, 2, 1911, 1912, 9, 20, 2, 2, 1912, 450, 3, 2, 2, 2, 1913, 1914, 9, 14, 2, 2, 1914, 1915, 9, 15, 2, 2, 1915, 1916, 9, 7, 2, 2, 1916, 452, 3, 2, 2, 2, 1917, 1918, 9, 14, 2, 2, 1918, 1919, 9, 15, 2, 2, 1919, 1920, 9, 7, 2, 2, 1920, 1921, 9, 21, 2, 2, 1921, 454, 3, 2, 2, 2, 1922, 1923, 9, 14, 2, 2, 1923, 1924, 9, 15, 2, 2, 1924, 1925, 9, 12, 2, 2, 1925, 1926, 9, 13, 2, 2, 1926, 1927, 9, 26, 2, 2, 1927, 456, 3, 2, 2, 2, 1928, 1929, 9, 18, 2, 2, 1929, 1930, 9, 16, 2, 2, 1930, 1931, 9, 19, 2, 2, 1931, 1932, 9, 12, 2, 2, 1932, 1933, 9, 17, 2, 2, 1933, 1934, 9, 16, 2, 2, 1934, 1935, 9, 20, 2, 2, 1935, 1936, 9, 7, 2, 2, 1936, 458, 3, 2, 2, 2, 1937, 1938, 9, 18, 2, 2, 1938, 1939, 9, 16, 2, 2, 1939, 1940, 9, 19, 2, 2, 1940, 1941, 9, 14, 2, 2, 1941, 1942, 9, 7, 2, 2, 1942, 460, 3, 2, 2, 2, 1943, 1944, 9, 18, 2, 2, 1944, 1945, 9, 16, 2, 2, 1945, 1946, 9, 19, 2, 2, 1946, 1947, 9, 14, 2, 2, 1947, 1948, 9, 7, 2, 2, 1948, 1949, 9, 17, 2, 2, 1949, 462, 3, 2, 2, 2, 1950, 1951, 9, 18, 2, 2, 1951, 1952, 9, 16, 2, 2, 1952, 1953, 9, 19, 2, 2, 1953, 1954, 9, 14, 2, 2, 1954, 1955, 9, 7, 2, 2, 1955, 1956, 9, 15, 2, 2, 1956, 464, 3, 2, 2, 2, 1957, 1958, 9, 18, 2, 2, 1958, 1959, 9, 12, 2, 2, 1959, 1960, 9, 16, 2, 2, 1960, 466, 3, 2, 2, 2, 1961, 1962, 9, 18, 2, 2, 1962, 1963, 9, 12, 2, 2, 1963, 1964, 9, 7, 2, 2, 1964, 1965, 9, 27, 2, 2, 1965, 468, 3, 2, 2, 2, 1966, 1967, 9, 27, 2, 2, 1967, 1968, 9, 31, 2, 2, 1968, 1969, 9, 7, 2, 2, 1969, 1970, 9, 13, 2, 2, 1970, 470, 3, 2, 2, 2, 1971, 1972, 9, 27, 2, 2, 1972, 1973, 9, 31, 2, 2, 1973, 1974, 9, 7, 2, 2, 1974, 1975, 9, 21, 2, 2, 1975, 1976, 9, 7, 2, 2, 1976, 472, 3, 2, 2, 2, 1977, 1978, 9, 27, 2, 2, 1978, 1979, 9, 31, 2, 2, 1979, 1980, 9, 12, 2, 2, 1980, 1981, 9, 19, 2, 2, 1981, 1982, 9, 7, 2, 2, 1982, 474, 3, 2, 2, 2, 1983, 1984, 9, 27, 2, 2, 1984, 1985, 9, 12, 2, 2, 1985, 1986, 9, 13, 2, 2, 1986, 1987, 9, 17, 2, 2, 1987, 1988, 9, 28, 2, 2, 1988, 1989, 9, 27, 2, 2, 1989, 476, 3, 2, 2, 2, 1990, 1991, 9, 27, 2, 2, 1991, 1992, 9, 12, 2, 2, 1992, 1993, 9, 20, 2, 2, 1993, 1994, 9, 31, 2, 2, 1994, 478, 3, 2, 2, 2, 1995, 1996, 9, 27, 2, 2, 1996, 1997, 9, 12, 2, 2, 1997, 1998, 9, 20, 2, 2, 1998, 1999, 9, 31, 2, 2, 1999, 2000, 9, 12, 2, 2, 2000, 2001, 9, 13, 2, 2, 2001, 480, 3, 2, 2, 2, 2002, 2003, 9, 27, 2, 2, 2003, 2004, 9, 28, 2, 2, 2004, 2005, 9, 21, 2, 2, 2005, 2006, 9, 29, 2, 2, 2006, 482, 3, 2, 2, 2, 2007, 2008, 9, 32, 2, 2, 2008, 2009, 9, 28, 2, 2, 2009, 2010, 9, 21, 2, 2, 2010, 484, 3, 2, 2, 2, 2011, 2012, 7, 98, 2, 2, 2012, 2015, 7, 98, 2, 2, 2013, 2015, 10, 38, 2, 2, 2014, 2011, 3, 2, 2, 2, 2014, 2013, 3, 2, 2, 2, 2015, 486, 3, 2, 2, 2, 2016, 2017, 9, 39, 2, 2, 2017, 488, 3, 2, 2, 2, 2018, 2019, 9, 40, 2, 2, 2019, 490, 3, 2, 2, 2, 2020, 2022, 7, 98, 2, 2, 2021, 2023, 5, 485, 243, 2, 2022, 2021, 3, 2, 2, 2, 2023, 2024, 3, 2, 2, 2, 2024, 2022, 3, 2, 2, 2, 2024, 2025, 3, 2, 2, 2, 2025, 2026, 3, 2, 2, 2, 2026, 2027, 7, 98, 2, 2, 2027, 2028, 7, 107, 2, 2, 2028, 492, 3, 2, 2, 2, 2029, 2031, 7, 98, 2, 2, 2030, 2032, 5, 485, 243, 2, 2031, 2030, 3, 2, 2, 2, 2032, 2033, 3, 2, 2, 2, 2033, 2031, 3, 2, 2, 2, 2033, 2034, 3, 2, 2, 2, 2034, 2035, 3, 2, 2, 2, 2035, 2036, 7, 98, 2, 2, 2036, 2045, 3, 2, 2, 2, 2037, 2041, 5, 487, 244, 2, 2038, 2040, 5, 489, 245, 2, 2039, 2038, 3, 2, 2, 2, 2040, 2043, 3, 2, 2, 2, 2041, 2039, 3, 2, 2, 2, 2041, 2042, 3, 2, 2, 2, 2042, 2045, 3, 2, 2, 2, 2043, 2041, 3, 2, 2, 2, 2044, 2029, 3, 2, 2, 2, 2044, 2037, 3, 2, 2, 2, 2045, 494, 3, 2, 2, 2, 2046, 2047, 7, 38, 2, 2, 2047, 2051, 5, 487, 244, 2, 2048, 2050, 5, 489, 245, 2, 2049, 2048, 3, 2, 2, 2, 2050, 2053, 3, 2, 2, 2, 2051, 2049, 3, 2, 2, 2, 2051, 2052, 3, 2, 2, 2, 2052, 496, 3, 2, 2, 2, 2053, 2051, 3, 2, 2, 2, 2054, 2055, 7, 38, 2, 2, 2055, 2059, 9, 41, 2, 2, 2056, 2058, 9, 6, 2, 2, 2057, 2056, 3, 2, 2, 2, 2058, 2061, 3, 2, 2, 2, 2059, 2057, 3, 2, 2, 2, 2059, 2060, 3, 2, 2, 2, 2060, 498, 3, 2, 2, 2, 2061, 2059, 3, 2, 2, 2, 2062, 2063, 7, 65, 2, 2, 2063, 500, 3, 2, 2, 2, 28, 2, 508, 515, 521, 529, 533, 536, 545, 548, 552, 557, 566, 569, 574, 582, 594, 600, 614, 631, 2014, 2024, 2033, 2041, 2044, 2051, 2059, 3, 8, 2, 2] \ No newline at end of file diff --git a/reverse_engineering/antlr/parser/n1qlLexer.js b/reverse_engineering/antlr/parser/n1qlLexer.js deleted file mode 100644 index f870728..0000000 --- a/reverse_engineering/antlr/parser/n1qlLexer.js +++ /dev/null @@ -1,2304 +0,0 @@ -// Generated from grammars/n1ql.g4 by ANTLR 4.9.2 -// jshint ignore: start -const antlr4 = require('antlr4'); - -const serializedATN = [ - '\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786', - '\u5964\u0002\u00f2\u0810\b\u0001\u0004\u0002\t\u0002\u0004\u0003\t\u0003', - '\u0004\u0004\t\u0004\u0004\u0005\t\u0005\u0004\u0006\t\u0006\u0004\u0007', - '\t\u0007\u0004\b\t\b\u0004\t\t\t\u0004\n\t\n\u0004\u000b\t\u000b\u0004', - '\f\t\f\u0004\r\t\r\u0004\u000e\t\u000e\u0004\u000f\t\u000f\u0004\u0010', - '\t\u0010\u0004\u0011\t\u0011\u0004\u0012\t\u0012\u0004\u0013\t\u0013', - '\u0004\u0014\t\u0014\u0004\u0015\t\u0015\u0004\u0016\t\u0016\u0004\u0017', - '\t\u0017\u0004\u0018\t\u0018\u0004\u0019\t\u0019\u0004\u001a\t\u001a', - '\u0004\u001b\t\u001b\u0004\u001c\t\u001c\u0004\u001d\t\u001d\u0004\u001e', - '\t\u001e\u0004\u001f\t\u001f\u0004 \t \u0004!\t!\u0004"\t"\u0004#', - "\t#\u0004$\t$\u0004%\t%\u0004&\t&\u0004'\t'\u0004(\t(\u0004)\t)\u0004", - '*\t*\u0004+\t+\u0004,\t,\u0004-\t-\u0004.\t.\u0004/\t/\u00040\t0\u0004', - '1\t1\u00042\t2\u00043\t3\u00044\t4\u00045\t5\u00046\t6\u00047\t7\u0004', - '8\t8\u00049\t9\u0004:\t:\u0004;\t;\u0004<\t<\u0004=\t=\u0004>\t>\u0004', - '?\t?\u0004@\t@\u0004A\tA\u0004B\tB\u0004C\tC\u0004D\tD\u0004E\tE\u0004', - 'F\tF\u0004G\tG\u0004H\tH\u0004I\tI\u0004J\tJ\u0004K\tK\u0004L\tL\u0004', - 'M\tM\u0004N\tN\u0004O\tO\u0004P\tP\u0004Q\tQ\u0004R\tR\u0004S\tS\u0004', - 'T\tT\u0004U\tU\u0004V\tV\u0004W\tW\u0004X\tX\u0004Y\tY\u0004Z\tZ\u0004', - '[\t[\u0004\\\t\\\u0004]\t]\u0004^\t^\u0004_\t_\u0004`\t`\u0004a\ta\u0004', - 'b\tb\u0004c\tc\u0004d\td\u0004e\te\u0004f\tf\u0004g\tg\u0004h\th\u0004', - 'i\ti\u0004j\tj\u0004k\tk\u0004l\tl\u0004m\tm\u0004n\tn\u0004o\to\u0004', - 'p\tp\u0004q\tq\u0004r\tr\u0004s\ts\u0004t\tt\u0004u\tu\u0004v\tv\u0004', - 'w\tw\u0004x\tx\u0004y\ty\u0004z\tz\u0004{\t{\u0004|\t|\u0004}\t}\u0004', - '~\t~\u0004\u007f\t\u007f\u0004\u0080\t\u0080\u0004\u0081\t\u0081\u0004', - '\u0082\t\u0082\u0004\u0083\t\u0083\u0004\u0084\t\u0084\u0004\u0085\t', - '\u0085\u0004\u0086\t\u0086\u0004\u0087\t\u0087\u0004\u0088\t\u0088\u0004', - '\u0089\t\u0089\u0004\u008a\t\u008a\u0004\u008b\t\u008b\u0004\u008c\t', - '\u008c\u0004\u008d\t\u008d\u0004\u008e\t\u008e\u0004\u008f\t\u008f\u0004', - '\u0090\t\u0090\u0004\u0091\t\u0091\u0004\u0092\t\u0092\u0004\u0093\t', - '\u0093\u0004\u0094\t\u0094\u0004\u0095\t\u0095\u0004\u0096\t\u0096\u0004', - '\u0097\t\u0097\u0004\u0098\t\u0098\u0004\u0099\t\u0099\u0004\u009a\t', - '\u009a\u0004\u009b\t\u009b\u0004\u009c\t\u009c\u0004\u009d\t\u009d\u0004', - '\u009e\t\u009e\u0004\u009f\t\u009f\u0004\u00a0\t\u00a0\u0004\u00a1\t', - '\u00a1\u0004\u00a2\t\u00a2\u0004\u00a3\t\u00a3\u0004\u00a4\t\u00a4\u0004', - '\u00a5\t\u00a5\u0004\u00a6\t\u00a6\u0004\u00a7\t\u00a7\u0004\u00a8\t', - '\u00a8\u0004\u00a9\t\u00a9\u0004\u00aa\t\u00aa\u0004\u00ab\t\u00ab\u0004', - '\u00ac\t\u00ac\u0004\u00ad\t\u00ad\u0004\u00ae\t\u00ae\u0004\u00af\t', - '\u00af\u0004\u00b0\t\u00b0\u0004\u00b1\t\u00b1\u0004\u00b2\t\u00b2\u0004', - '\u00b3\t\u00b3\u0004\u00b4\t\u00b4\u0004\u00b5\t\u00b5\u0004\u00b6\t', - '\u00b6\u0004\u00b7\t\u00b7\u0004\u00b8\t\u00b8\u0004\u00b9\t\u00b9\u0004', - '\u00ba\t\u00ba\u0004\u00bb\t\u00bb\u0004\u00bc\t\u00bc\u0004\u00bd\t', - '\u00bd\u0004\u00be\t\u00be\u0004\u00bf\t\u00bf\u0004\u00c0\t\u00c0\u0004', - '\u00c1\t\u00c1\u0004\u00c2\t\u00c2\u0004\u00c3\t\u00c3\u0004\u00c4\t', - '\u00c4\u0004\u00c5\t\u00c5\u0004\u00c6\t\u00c6\u0004\u00c7\t\u00c7\u0004', - '\u00c8\t\u00c8\u0004\u00c9\t\u00c9\u0004\u00ca\t\u00ca\u0004\u00cb\t', - '\u00cb\u0004\u00cc\t\u00cc\u0004\u00cd\t\u00cd\u0004\u00ce\t\u00ce\u0004', - '\u00cf\t\u00cf\u0004\u00d0\t\u00d0\u0004\u00d1\t\u00d1\u0004\u00d2\t', - '\u00d2\u0004\u00d3\t\u00d3\u0004\u00d4\t\u00d4\u0004\u00d5\t\u00d5\u0004', - '\u00d6\t\u00d6\u0004\u00d7\t\u00d7\u0004\u00d8\t\u00d8\u0004\u00d9\t', - '\u00d9\u0004\u00da\t\u00da\u0004\u00db\t\u00db\u0004\u00dc\t\u00dc\u0004', - '\u00dd\t\u00dd\u0004\u00de\t\u00de\u0004\u00df\t\u00df\u0004\u00e0\t', - '\u00e0\u0004\u00e1\t\u00e1\u0004\u00e2\t\u00e2\u0004\u00e3\t\u00e3\u0004', - '\u00e4\t\u00e4\u0004\u00e5\t\u00e5\u0004\u00e6\t\u00e6\u0004\u00e7\t', - '\u00e7\u0004\u00e8\t\u00e8\u0004\u00e9\t\u00e9\u0004\u00ea\t\u00ea\u0004', - '\u00eb\t\u00eb\u0004\u00ec\t\u00ec\u0004\u00ed\t\u00ed\u0004\u00ee\t', - '\u00ee\u0004\u00ef\t\u00ef\u0004\u00f0\t\u00f0\u0004\u00f1\t\u00f1\u0004', - '\u00f2\t\u00f2\u0004\u00f3\t\u00f3\u0004\u00f4\t\u00f4\u0004\u00f5\t', - '\u00f5\u0004\u00f6\t\u00f6\u0004\u00f7\t\u00f7\u0004\u00f8\t\u00f8\u0004', - '\u00f9\t\u00f9\u0004\u00fa\t\u00fa\u0003\u0002\u0003\u0002\u0003\u0002', - '\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0005\u0002\u01fd\n', - '\u0002\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0005', - '\u0003\u0204\n\u0003\u0003\u0004\u0003\u0004\u0007\u0004\u0208\n\u0004', - '\f\u0004\u000e\u0004\u020b\u000b\u0004\u0003\u0004\u0003\u0004\u0003', - '\u0004\u0007\u0004\u0210\n\u0004\f\u0004\u000e\u0004\u0213\u000b\u0004', - '\u0003\u0004\u0005\u0004\u0216\n\u0004\u0003\u0005\u0005\u0005\u0219', - '\n\u0005\u0003\u0006\u0003\u0006\u0003\u0007\u0003\u0007\u0003\u0007', - '\u0007\u0007\u0220\n\u0007\f\u0007\u000e\u0007\u0223\u000b\u0007\u0005', - '\u0007\u0225\n\u0007\u0003\b\u0003\b\u0005\b\u0229\n\b\u0003\b\u0006', - '\b\u022c\n\b\r\b\u000e\b\u022d\u0003\t\u0003\t\u0003\n\u0003\n\u0003', - '\n\u0006\n\u0235\n\n\r\n\u000e\n\u0236\u0003\n\u0005\n\u023a\n\n\u0003', - '\n\u0003\n\u0003\n\u0005\n\u023f\n\n\u0003\u000b\u0003\u000b\u0003\u000b', - '\u0003\u000b\u0007\u000b\u0245\n\u000b\f\u000b\u000e\u000b\u0248\u000b', - '\u000b\u0003\u000b\u0003\u000b\u0003\u000b\u0003\f\u0003\f\u0003\f\u0003', - '\f\u0007\f\u0251\n\f\f\f\u000e\f\u0254\u000b\f\u0003\r\u0006\r\u0257', - '\n\r\r\r\u000e\r\u0258\u0003\r\u0003\r\u0003\u000e\u0003\u000e\u0003', - '\u000f\u0003\u000f\u0003\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0003', - '\u0010\u0003\u0010\u0005\u0010\u0267\n\u0010\u0003\u0011\u0003\u0011', - '\u0003\u0012\u0003\u0012\u0003\u0013\u0003\u0013\u0003\u0014\u0003\u0014', - '\u0003\u0014\u0003\u0015\u0003\u0015\u0003\u0016\u0003\u0016\u0003\u0016', - '\u0003\u0016\u0005\u0016\u0278\n\u0016\u0003\u0017\u0003\u0017\u0003', - '\u0018\u0003\u0018\u0003\u0018\u0003\u0019\u0003\u0019\u0003\u001a\u0003', - '\u001a\u0003\u001a\u0003\u001b\u0003\u001b\u0003\u001b\u0003\u001c\u0003', - '\u001c\u0003\u001d\u0003\u001d\u0003\u001e\u0003\u001e\u0003\u001f\u0003', - '\u001f\u0003 \u0003 \u0003!\u0003!\u0003"\u0003"\u0003#\u0003#\u0003', - "$\u0003$\u0003$\u0003%\u0003%\u0003&\u0003&\u0003'\u0003'\u0003'", - "\u0003'\u0003'\u0003'\u0003'\u0003(\u0003(\u0003(\u0003(\u0003)", - '\u0003)\u0003)\u0003)\u0003)\u0003)\u0003*\u0003*\u0003*\u0003*\u0003', - '*\u0003*\u0003*\u0003*\u0003+\u0003+\u0003+\u0003+\u0003,\u0003,\u0003', - ',\u0003,\u0003-\u0003-\u0003-\u0003-\u0003-\u0003-\u0003.\u0003.\u0003', - '.\u0003/\u0003/\u0003/\u0003/\u00030\u00030\u00030\u00031\u00031\u0003', - '1\u00031\u00031\u00031\u00032\u00032\u00032\u00032\u00032\u00032\u0003', - '2\u00032\u00033\u00033\u00033\u00033\u00033\u00033\u00033\u00034\u0003', - '4\u00034\u00034\u00034\u00034\u00034\u00034\u00035\u00035\u00035\u0003', - '5\u00035\u00035\u00036\u00036\u00036\u00036\u00036\u00036\u00036\u0003', - '7\u00037\u00037\u00037\u00037\u00037\u00038\u00038\u00038\u00039\u0003', - '9\u00039\u00039\u00039\u0003:\u0003:\u0003:\u0003:\u0003:\u0003;\u0003', - ';\u0003;\u0003;\u0003;\u0003<\u0003<\u0003<\u0003<\u0003<\u0003<\u0003', - '<\u0003<\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003=\u0003', - '>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003>\u0003', - '>\u0003?\u0003?\u0003?\u0003?\u0003?\u0003?\u0003?\u0003@\u0003@\u0003', - '@\u0003@\u0003@\u0003@\u0003@\u0003@\u0003@\u0003@\u0003A\u0003A\u0003', - 'A\u0003A\u0003A\u0003A\u0003A\u0003A\u0003B\u0003B\u0003B\u0003B\u0003', - 'B\u0003B\u0003B\u0003B\u0003B\u0003C\u0003C\u0003C\u0003C\u0003C\u0003', - 'C\u0003C\u0003C\u0003C\u0003C\u0003C\u0003D\u0003D\u0003D\u0003D\u0003', - 'D\u0003D\u0003E\u0003E\u0003E\u0003E\u0003E\u0003E\u0003E\u0003F\u0003', - 'F\u0003F\u0003F\u0003F\u0003F\u0003F\u0003F\u0003G\u0003G\u0003G\u0003', - 'G\u0003G\u0003G\u0003G\u0003G\u0003G\u0003H\u0003H\u0003H\u0003H\u0003', - 'H\u0003H\u0003H\u0003H\u0003I\u0003I\u0003I\u0003I\u0003I\u0003I\u0003', - 'I\u0003I\u0003I\u0003I\u0003J\u0003J\u0003J\u0003J\u0003J\u0003J\u0003', - 'J\u0003J\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003K\u0003', - 'K\u0003K\u0003L\u0003L\u0003L\u0003L\u0003L\u0003L\u0003L\u0003M\u0003', - 'M\u0003M\u0003M\u0003M\u0003M\u0003M\u0003M\u0003N\u0003N\u0003N\u0003', - 'N\u0003N\u0003O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003O\u0003', - 'O\u0003P\u0003P\u0003P\u0003P\u0003P\u0003P\u0003P\u0003P\u0003P\u0003', - 'Q\u0003Q\u0003Q\u0003R\u0003R\u0003R\u0003R\u0003R\u0003S\u0003S\u0003', - 'S\u0003S\u0003S\u0003T\u0003T\u0003T\u0003T\u0003T\u0003T\u0003T\u0003', - 'T\u0003U\u0003U\u0003U\u0003U\u0003U\u0003V\u0003V\u0003V\u0003V\u0003', - 'W\u0003W\u0003W\u0003W\u0003W\u0003W\u0003X\u0003X\u0003X\u0003X\u0003', - 'X\u0003X\u0003X\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003Y\u0003', - 'Y\u0003Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003[\u0003', - '[\u0003[\u0003[\u0003[\u0003[\u0003[\u0003\\\u0003\\\u0003\\\u0003\\', - '\u0003\\\u0003\\\u0003\\\u0003\\\u0003]\u0003]\u0003]\u0003]\u0003]', - '\u0003]\u0003^\u0003^\u0003^\u0003^\u0003^\u0003^\u0003_\u0003_\u0003', - '_\u0003_\u0003_\u0003_\u0003_\u0003`\u0003`\u0003`\u0003`\u0003`\u0003', - '`\u0003a\u0003a\u0003a\u0003a\u0003a\u0003a\u0003a\u0003a\u0003b\u0003', - 'b\u0003b\u0003b\u0003b\u0003b\u0003c\u0003c\u0003c\u0003c\u0003c\u0003', - 'c\u0003c\u0003c\u0003c\u0003c\u0003d\u0003d\u0003d\u0003d\u0003e\u0003', - 'e\u0003e\u0003e\u0003e\u0003e\u0003f\u0003f\u0003f\u0003f\u0003f\u0003', - 'g\u0003g\u0003g\u0003g\u0003h\u0003h\u0003h\u0003h\u0003h\u0003h\u0003', - 'h\u0003h\u0003h\u0003i\u0003i\u0003i\u0003i\u0003i\u0003i\u0003i\u0003', - 'j\u0003j\u0003j\u0003j\u0003j\u0003j\u0003k\u0003k\u0003k\u0003k\u0003', - 'k\u0003k\u0003l\u0003l\u0003l\u0003l\u0003l\u0003l\u0003l\u0003m\u0003', - 'm\u0003m\u0003m\u0003n\u0003n\u0003n\u0003n\u0003n\u0003o\u0003o\u0003', - 'o\u0003o\u0003o\u0003o\u0003o\u0003p\u0003p\u0003p\u0003q\u0003q\u0003', - 'q\u0003q\u0003q\u0003q\u0003q\u0003r\u0003r\u0003r\u0003r\u0003r\u0003', - 'r\u0003s\u0003s\u0003s\u0003t\u0003t\u0003t\u0003t\u0003t\u0003t\u0003', - 't\u0003t\u0003u\u0003u\u0003u\u0003u\u0003u\u0003u\u0003u\u0003u\u0003', - 'u\u0003u\u0003v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003w\u0003w\u0003', - 'w\u0003w\u0003w\u0003w\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003', - 'x\u0003y\u0003y\u0003y\u0003y\u0003y\u0003y\u0003z\u0003z\u0003z\u0003', - 'z\u0003z\u0003z\u0003z\u0003{\u0003{\u0003{\u0003{\u0003{\u0003{\u0003', - '{\u0003{\u0003{\u0003{\u0003|\u0003|\u0003|\u0003|\u0003|\u0003}\u0003', - '}\u0003}\u0003~\u0003~\u0003~\u0003~\u0003~\u0003~\u0003~\u0003~\u0003', - '~\u0003~\u0003\u007f\u0003\u007f\u0003\u007f\u0003\u007f\u0003\u007f', - '\u0003\u007f\u0003\u007f\u0003\u007f\u0003\u007f\u0003\u007f\u0003\u007f', - '\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0081', - '\u0003\u0081\u0003\u0081\u0003\u0081\u0003\u0082\u0003\u0082\u0003\u0082', - '\u0003\u0082\u0003\u0082\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083', - '\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0083\u0003\u0084', - '\u0003\u0084\u0003\u0084\u0003\u0084\u0003\u0084\u0003\u0084\u0003\u0085', - '\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0003\u0085', - '\u0003\u0085\u0003\u0085\u0003\u0086\u0003\u0086\u0003\u0086\u0003\u0086', - '\u0003\u0086\u0003\u0087\u0003\u0087\u0003\u0087\u0003\u0087\u0003\u0087', - '\u0003\u0088\u0003\u0088\u0003\u0088\u0003\u0088\u0003\u0089\u0003\u0089', - '\u0003\u0089\u0003\u0089\u0003\u0089\u0003\u0089\u0003\u0089\u0003\u0089', - '\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a', - '\u0003\u008b\u0003\u008b\u0003\u008b\u0003\u008b\u0003\u008b\u0003\u008c', - '\u0003\u008c\u0003\u008c\u0003\u008c\u0003\u008c\u0003\u008c\u0003\u008d', - '\u0003\u008d\u0003\u008d\u0003\u008d\u0003\u008e\u0003\u008e\u0003\u008e', - '\u0003\u008e\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f', - '\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u0090\u0003\u0090\u0003\u0090', - '\u0003\u0090\u0003\u0090\u0003\u0090\u0003\u0090\u0003\u0090\u0003\u0091', - '\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0091', - '\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0091', - '\u0003\u0092\u0003\u0092\u0003\u0092\u0003\u0092\u0003\u0092\u0003\u0092', - '\u0003\u0093\u0003\u0093\u0003\u0093\u0003\u0093\u0003\u0093\u0003\u0093', - '\u0003\u0093\u0003\u0093\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094', - '\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094', - '\u0003\u0095\u0003\u0095\u0003\u0095\u0003\u0095\u0003\u0095\u0003\u0096', - '\u0003\u0096\u0003\u0096\u0003\u0097\u0003\u0097\u0003\u0097\u0003\u0098', - '\u0003\u0098\u0003\u0098\u0003\u0098\u0003\u0099\u0003\u0099\u0003\u0099', - '\u0003\u0099\u0003\u0099\u0003\u0099\u0003\u0099\u0003\u0099\u0003\u0099', - '\u0003\u0099\u0003\u009a\u0003\u009a\u0003\u009a\u0003\u009a\u0003\u009a', - '\u0003\u009b\u0003\u009b\u0003\u009b\u0003\u009b\u0003\u009b\u0003\u009b', - '\u0003\u009c\u0003\u009c\u0003\u009c\u0003\u009c\u0003\u009c\u0003\u009c', - '\u0003\u009c\u0003\u009d\u0003\u009d\u0003\u009d\u0003\u009d\u0003\u009d', - '\u0003\u009d\u0003\u009d\u0003\u009e\u0003\u009e\u0003\u009e\u0003\u009e', - '\u0003\u009e\u0003\u009e\u0003\u009e\u0003\u009f\u0003\u009f\u0003\u009f', - '\u0003\u00a0\u0003\u00a0\u0003\u00a0\u0003\u00a0\u0003\u00a0\u0003\u00a0', - '\u0003\u00a0\u0003\u00a1\u0003\u00a1\u0003\u00a1\u0003\u00a1\u0003\u00a1', - '\u0003\u00a1\u0003\u00a1\u0003\u00a1\u0003\u00a2\u0003\u00a2\u0003\u00a2', - '\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a3', - '\u0003\u00a4\u0003\u00a4\u0003\u00a4\u0003\u00a4\u0003\u00a4\u0003\u00a4', - '\u0003\u00a4\u0003\u00a5\u0003\u00a5\u0003\u00a5\u0003\u00a5\u0003\u00a5', - '\u0003\u00a5\u0003\u00a6\u0003\u00a6\u0003\u00a6\u0003\u00a6\u0003\u00a6', - '\u0003\u00a7\u0003\u00a7\u0003\u00a7\u0003\u00a7\u0003\u00a7\u0003\u00a7', - '\u0003\u00a8\u0003\u00a8\u0003\u00a8\u0003\u00a8\u0003\u00a8\u0003\u00a8', - '\u0003\u00a8\u0003\u00a8\u0003\u00a8\u0003\u00a8\u0003\u00a9\u0003\u00a9', - '\u0003\u00a9\u0003\u00a9\u0003\u00a9\u0003\u00a9\u0003\u00a9\u0003\u00a9', - '\u0003\u00a9\u0003\u00aa\u0003\u00aa\u0003\u00aa\u0003\u00aa\u0003\u00aa', - '\u0003\u00ab\u0003\u00ab\u0003\u00ab\u0003\u00ab\u0003\u00ab\u0003\u00ac', - '\u0003\u00ac\u0003\u00ac\u0003\u00ac\u0003\u00ac\u0003\u00ac\u0003\u00ac', - '\u0003\u00ac\u0003\u00ac\u0003\u00ac\u0003\u00ad\u0003\u00ad\u0003\u00ad', - '\u0003\u00ad\u0003\u00ad\u0003\u00ad\u0003\u00ad\u0003\u00ad\u0003\u00ae', - '\u0003\u00ae\u0003\u00ae\u0003\u00ae\u0003\u00ae\u0003\u00ae\u0003\u00ae', - '\u0003\u00ae\u0003\u00af\u0003\u00af\u0003\u00af\u0003\u00af\u0003\u00af', - '\u0003\u00af\u0003\u00af\u0003\u00af\u0003\u00b0\u0003\u00b0\u0003\u00b0', - '\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0003\u00b0', - '\u0003\u00b0\u0003\u00b1\u0003\u00b1\u0003\u00b1\u0003\u00b1\u0003\u00b1', - '\u0003\u00b1\u0003\u00b1\u0003\u00b1\u0003\u00b1\u0003\u00b1\u0003\u00b2', - '\u0003\u00b2\u0003\u00b2\u0003\u00b2\u0003\u00b2\u0003\u00b2\u0003\u00b3', - '\u0003\u00b3\u0003\u00b3\u0003\u00b3\u0003\u00b3\u0003\u00b3\u0003\u00b3', - '\u0003\u00b4\u0003\u00b4\u0003\u00b4\u0003\u00b4\u0003\u00b4\u0003\u00b4', - '\u0003\u00b5\u0003\u00b5\u0003\u00b5\u0003\u00b5\u0003\u00b6\u0003\u00b6', - '\u0003\u00b6\u0003\u00b6\u0003\u00b6\u0003\u00b7\u0003\u00b7\u0003\u00b7', - '\u0003\u00b7\u0003\u00b7\u0003\u00b7\u0003\u00b8\u0003\u00b8\u0003\u00b8', - '\u0003\u00b8\u0003\u00b8\u0003\u00b8\u0003\u00b8\u0003\u00b9\u0003\u00b9', - '\u0003\u00b9\u0003\u00b9\u0003\u00b9\u0003\u00b9\u0003\u00b9\u0003\u00ba', - '\u0003\u00ba\u0003\u00ba\u0003\u00ba\u0003\u00ba\u0003\u00ba\u0003\u00ba', - '\u0003\u00ba\u0003\u00bb\u0003\u00bb\u0003\u00bb\u0003\u00bb\u0003\u00bb', - '\u0003\u00bb\u0003\u00bb\u0003\u00bb\u0003\u00bc\u0003\u00bc\u0003\u00bc', - '\u0003\u00bc\u0003\u00bc\u0003\u00bc\u0003\u00bc\u0003\u00bd\u0003\u00bd', - '\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00bd', - '\u0003\u00bd\u0003\u00bd\u0003\u00be\u0003\u00be\u0003\u00be\u0003\u00be', - '\u0003\u00be\u0003\u00be\u0003\u00be\u0003\u00bf\u0003\u00bf\u0003\u00bf', - '\u0003\u00bf\u0003\u00bf\u0003\u00bf\u0003\u00c0\u0003\u00c0\u0003\u00c0', - '\u0003\u00c0\u0003\u00c0\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1', - '\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c1\u0003\u00c2', - '\u0003\u00c2\u0003\u00c2\u0003\u00c2\u0003\u00c3\u0003\u00c3\u0003\u00c3', - '\u0003\u00c3\u0003\u00c3\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4', - '\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c6\u0003\u00c6', - '\u0003\u00c6\u0003\u00c6\u0003\u00c6\u0003\u00c6\u0003\u00c6\u0003\u00c7', - '\u0003\u00c7\u0003\u00c7\u0003\u00c7\u0003\u00c7\u0003\u00c7\u0003\u00c8', - '\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8', - '\u0003\u00c9\u0003\u00c9\u0003\u00c9\u0003\u00c9\u0003\u00c9\u0003\u00ca', - '\u0003\u00ca\u0003\u00ca\u0003\u00ca\u0003\u00cb\u0003\u00cb\u0003\u00cb', - '\u0003\u00cb\u0003\u00cb\u0003\u00cc\u0003\u00cc\u0003\u00cc\u0003\u00cc', - '\u0003\u00cc\u0003\u00cd\u0003\u00cd\u0003\u00cd\u0003\u00cd\u0003\u00cd', - '\u0003\u00cd\u0003\u00ce\u0003\u00ce\u0003\u00ce\u0003\u00ce\u0003\u00ce', - '\u0003\u00ce\u0003\u00ce\u0003\u00ce\u0003\u00ce\u0003\u00ce\u0003\u00ce', - '\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf\u0003\u00cf', - '\u0003\u00cf\u0003\u00d0\u0003\u00d0\u0003\u00d0\u0003\u00d0\u0003\u00d0', - '\u0003\u00d0\u0003\u00d0\u0003\u00d1\u0003\u00d1\u0003\u00d1\u0003\u00d1', - '\u0003\u00d1\u0003\u00d2\u0003\u00d2\u0003\u00d2\u0003\u00d2\u0003\u00d2', - '\u0003\u00d3\u0003\u00d3\u0003\u00d3\u0003\u00d4\u0003\u00d4\u0003\u00d4', - '\u0003\u00d4\u0003\u00d4\u0003\u00d5\u0003\u00d5\u0003\u00d5\u0003\u00d5', - '\u0003\u00d5\u0003\u00d5\u0003\u00d5\u0003\u00d5\u0003\u00d5\u0003\u00d5', - '\u0003\u00d5\u0003\u00d5\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d6', - '\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d7\u0003\u00d7', - '\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0003\u00d8\u0003\u00d8\u0003\u00d8', - '\u0003\u00d8\u0003\u00d8\u0003\u00d8\u0003\u00d8\u0003\u00d8\u0003\u00d8', - '\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9', - '\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00da\u0003\u00da', - '\u0003\u00da\u0003\u00da\u0003\u00da\u0003\u00da\u0003\u00db\u0003\u00db', - '\u0003\u00db\u0003\u00db\u0003\u00db\u0003\u00db\u0003\u00dc\u0003\u00dc', - '\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dd', - '\u0003\u00dd\u0003\u00dd\u0003\u00dd\u0003\u00dd\u0003\u00dd\u0003\u00dd', - '\u0003\u00dd\u0003\u00de\u0003\u00de\u0003\u00de\u0003\u00de\u0003\u00de', - '\u0003\u00de\u0003\u00de\u0003\u00df\u0003\u00df\u0003\u00df\u0003\u00df', - '\u0003\u00df\u0003\u00df\u0003\u00e0\u0003\u00e0\u0003\u00e0\u0003\u00e0', - '\u0003\u00e0\u0003\u00e0\u0003\u00e0\u0003\u00e1\u0003\u00e1\u0003\u00e1', - '\u0003\u00e1\u0003\u00e1\u0003\u00e1\u0003\u00e1\u0003\u00e2\u0003\u00e2', - '\u0003\u00e2\u0003\u00e2\u0003\u00e3\u0003\u00e3\u0003\u00e3\u0003\u00e3', - '\u0003\u00e3\u0003\u00e4\u0003\u00e4\u0003\u00e4\u0003\u00e4\u0003\u00e4', - '\u0003\u00e4\u0003\u00e5\u0003\u00e5\u0003\u00e5\u0003\u00e5\u0003\u00e5', - '\u0003\u00e5\u0003\u00e5\u0003\u00e5\u0003\u00e5\u0003\u00e6\u0003\u00e6', - '\u0003\u00e6\u0003\u00e6\u0003\u00e6\u0003\u00e6\u0003\u00e7\u0003\u00e7', - '\u0003\u00e7\u0003\u00e7\u0003\u00e7\u0003\u00e7\u0003\u00e7\u0003\u00e8', - '\u0003\u00e8\u0003\u00e8\u0003\u00e8\u0003\u00e8\u0003\u00e8\u0003\u00e8', - '\u0003\u00e9\u0003\u00e9\u0003\u00e9\u0003\u00e9\u0003\u00ea\u0003\u00ea', - '\u0003\u00ea\u0003\u00ea\u0003\u00ea\u0003\u00eb\u0003\u00eb\u0003\u00eb', - '\u0003\u00eb\u0003\u00eb\u0003\u00ec\u0003\u00ec\u0003\u00ec\u0003\u00ec', - '\u0003\u00ec\u0003\u00ec\u0003\u00ed\u0003\u00ed\u0003\u00ed\u0003\u00ed', - '\u0003\u00ed\u0003\u00ed\u0003\u00ee\u0003\u00ee\u0003\u00ee\u0003\u00ee', - '\u0003\u00ee\u0003\u00ee\u0003\u00ee\u0003\u00ef\u0003\u00ef\u0003\u00ef', - '\u0003\u00ef\u0003\u00ef\u0003\u00f0\u0003\u00f0\u0003\u00f0\u0003\u00f0', - '\u0003\u00f0\u0003\u00f0\u0003\u00f0\u0003\u00f1\u0003\u00f1\u0003\u00f1', - '\u0003\u00f1\u0003\u00f1\u0003\u00f2\u0003\u00f2\u0003\u00f2\u0003\u00f2', - '\u0003\u00f3\u0003\u00f3\u0003\u00f3\u0005\u00f3\u07df\n\u00f3\u0003', - '\u00f4\u0003\u00f4\u0003\u00f5\u0003\u00f5\u0003\u00f6\u0003\u00f6\u0006', - '\u00f6\u07e7\n\u00f6\r\u00f6\u000e\u00f6\u07e8\u0003\u00f6\u0003\u00f6', - '\u0003\u00f6\u0003\u00f7\u0003\u00f7\u0006\u00f7\u07f0\n\u00f7\r\u00f7', - '\u000e\u00f7\u07f1\u0003\u00f7\u0003\u00f7\u0003\u00f7\u0003\u00f7\u0007', - '\u00f7\u07f8\n\u00f7\f\u00f7\u000e\u00f7\u07fb\u000b\u00f7\u0005\u00f7', - '\u07fd\n\u00f7\u0003\u00f8\u0003\u00f8\u0003\u00f8\u0007\u00f8\u0802', - '\n\u00f8\f\u00f8\u000e\u00f8\u0805\u000b\u00f8\u0003\u00f9\u0003\u00f9', - '\u0003\u00f9\u0007\u00f9\u080a\n\u00f9\f\u00f9\u000e\u00f9\u080d\u000b', - '\u00f9\u0003\u00fa\u0003\u00fa\u0003\u0246\u0002\u00fb\u0003\u0002\u0005', - '\u0002\u0007\u0003\t\u0002\u000b\u0002\r\u0002\u000f\u0002\u0011\u0004', - '\u0013\u0005\u0015\u0006\u0017\u0007\u0019\b\u001b\t\u001d\n\u001f\u000b', - "!\f#\r%\u000e'\u000f)\u0010+\u0011-\u0012/\u00131\u00143\u00155\u0016", - '7\u00179\u0018;\u0019=\u001a?\u001bA\u001cC\u001dE\u001eG\u001fI K!', - 'M"O#Q$S%U&W\'Y([)]*_+a,c-e.g/i0k1m2o3q4s5u6w7y8{9}:\u007f;\u0081<\u0083', - '=\u0085>\u0087?\u0089@\u008bA\u008dB\u008fC\u0091D\u0093E\u0095F\u0097', - 'G\u0099H\u009bI\u009dJ\u009fK\u00a1L\u00a3M\u00a5N\u00a7O\u00a9P\u00ab', - 'Q\u00adR\u00afS\u00b1T\u00b3U\u00b5V\u00b7W\u00b9X\u00bbY\u00bdZ\u00bf', - '[\u00c1\\\u00c3]\u00c5^\u00c7_\u00c9`\u00cba\u00cdb\u00cfc\u00d1d\u00d3', - 'e\u00d5f\u00d7g\u00d9h\u00dbi\u00ddj\u00dfk\u00e1l\u00e3m\u00e5n\u00e7', - 'o\u00e9p\u00ebq\u00edr\u00efs\u00f1t\u00f3u\u00f5v\u00f7w\u00f9x\u00fb', - 'y\u00fdz\u00ff{\u0101|\u0103}\u0105~\u0107\u007f\u0109\u0080\u010b\u0081', - '\u010d\u0082\u010f\u0083\u0111\u0084\u0113\u0085\u0115\u0086\u0117\u0087', - '\u0119\u0088\u011b\u0089\u011d\u008a\u011f\u008b\u0121\u008c\u0123\u008d', - '\u0125\u008e\u0127\u008f\u0129\u0090\u012b\u0091\u012d\u0092\u012f\u0093', - '\u0131\u0094\u0133\u0095\u0135\u0096\u0137\u0097\u0139\u0098\u013b\u0099', - '\u013d\u009a\u013f\u009b\u0141\u009c\u0143\u009d\u0145\u009e\u0147\u009f', - '\u0149\u00a0\u014b\u00a1\u014d\u00a2\u014f\u00a3\u0151\u00a4\u0153\u00a5', - '\u0155\u00a6\u0157\u00a7\u0159\u00a8\u015b\u00a9\u015d\u00aa\u015f\u00ab', - '\u0161\u00ac\u0163\u00ad\u0165\u00ae\u0167\u00af\u0169\u00b0\u016b\u00b1', - '\u016d\u00b2\u016f\u00b3\u0171\u00b4\u0173\u00b5\u0175\u00b6\u0177\u00b7', - '\u0179\u00b8\u017b\u00b9\u017d\u00ba\u017f\u00bb\u0181\u00bc\u0183\u00bd', - '\u0185\u00be\u0187\u00bf\u0189\u00c0\u018b\u00c1\u018d\u00c2\u018f\u00c3', - '\u0191\u00c4\u0193\u00c5\u0195\u00c6\u0197\u00c7\u0199\u00c8\u019b\u00c9', - '\u019d\u00ca\u019f\u00cb\u01a1\u00cc\u01a3\u00cd\u01a5\u00ce\u01a7\u00cf', - '\u01a9\u00d0\u01ab\u00d1\u01ad\u00d2\u01af\u00d3\u01b1\u00d4\u01b3\u00d5', - '\u01b5\u00d6\u01b7\u00d7\u01b9\u00d8\u01bb\u00d9\u01bd\u00da\u01bf\u00db', - '\u01c1\u00dc\u01c3\u00dd\u01c5\u00de\u01c7\u00df\u01c9\u00e0\u01cb\u00e1', - '\u01cd\u00e2\u01cf\u00e3\u01d1\u00e4\u01d3\u00e5\u01d5\u00e6\u01d7\u00e7', - '\u01d9\u00e8\u01db\u00e9\u01dd\u00ea\u01df\u00eb\u01e1\u00ec\u01e3\u00ed', - '\u01e5\u0002\u01e7\u0002\u01e9\u0002\u01eb\u00ee\u01ed\u00ef\u01ef\u00f0', - '\u01f1\u00f1\u01f3\u00f2\u0003\u0002*\u0003\u0002))\u0006\u0002\f\f', - '\u000f\u000f))^^\u0003\u0002$$\u0004\u0002$$^^\u0003\u00022;\u0004\u0002', - 'GGgg\u0004\u0002--//\u0004\u0002\f\f\u000f\u000f\u0005\u0002\u000b\f', - '\u000e\u000f""\u0004\u0002OOoo\u0004\u0002KKkk\u0004\u0002PPpp\u0004', - '\u0002WWww\u0004\u0002UUuu\u0004\u0002CCcc\u0004\u0002FFff\u0004\u0002', - 'XXxx\u0004\u0002NNnn\u0004\u0002VVvv\u0004\u0002TTtt\u0004\u0002[[{', - '{\u0004\u0002\\\\||\u0004\u0002EEee\u0004\u0002DDdd\u0004\u0002IIii', - '\u0004\u0002YYyy\u0004\u0002QQqq\u0004\u0002MMmm\u0004\u0002RRrr\u0004', - '\u0002JJjj\u0004\u0002ZZzz\u0004\u0002HHhh\u0004\u0002LLll\u0003\u0002', - 'aa\u0004\u0002PPww\u0004\u0002SSss\u0003\u0002bb\u0005\u0002C\\aac|', - '\u0006\u00022;C\\aac|\u0003\u00023;\u0002\u0821\u0002\u0007\u0003\u0002', - '\u0002\u0002\u0002\u0011\u0003\u0002\u0002\u0002\u0002\u0013\u0003\u0002', - '\u0002\u0002\u0002\u0015\u0003\u0002\u0002\u0002\u0002\u0017\u0003\u0002', - '\u0002\u0002\u0002\u0019\u0003\u0002\u0002\u0002\u0002\u001b\u0003\u0002', - '\u0002\u0002\u0002\u001d\u0003\u0002\u0002\u0002\u0002\u001f\u0003\u0002', - '\u0002\u0002\u0002!\u0003\u0002\u0002\u0002\u0002#\u0003\u0002\u0002', - "\u0002\u0002%\u0003\u0002\u0002\u0002\u0002'\u0003\u0002\u0002\u0002", - '\u0002)\u0003\u0002\u0002\u0002\u0002+\u0003\u0002\u0002\u0002\u0002', - '-\u0003\u0002\u0002\u0002\u0002/\u0003\u0002\u0002\u0002\u00021\u0003', - '\u0002\u0002\u0002\u00023\u0003\u0002\u0002\u0002\u00025\u0003\u0002', - '\u0002\u0002\u00027\u0003\u0002\u0002\u0002\u00029\u0003\u0002\u0002', - '\u0002\u0002;\u0003\u0002\u0002\u0002\u0002=\u0003\u0002\u0002\u0002', - '\u0002?\u0003\u0002\u0002\u0002\u0002A\u0003\u0002\u0002\u0002\u0002', - 'C\u0003\u0002\u0002\u0002\u0002E\u0003\u0002\u0002\u0002\u0002G\u0003', - '\u0002\u0002\u0002\u0002I\u0003\u0002\u0002\u0002\u0002K\u0003\u0002', - '\u0002\u0002\u0002M\u0003\u0002\u0002\u0002\u0002O\u0003\u0002\u0002', - '\u0002\u0002Q\u0003\u0002\u0002\u0002\u0002S\u0003\u0002\u0002\u0002', - '\u0002U\u0003\u0002\u0002\u0002\u0002W\u0003\u0002\u0002\u0002\u0002', - 'Y\u0003\u0002\u0002\u0002\u0002[\u0003\u0002\u0002\u0002\u0002]\u0003', - '\u0002\u0002\u0002\u0002_\u0003\u0002\u0002\u0002\u0002a\u0003\u0002', - '\u0002\u0002\u0002c\u0003\u0002\u0002\u0002\u0002e\u0003\u0002\u0002', - '\u0002\u0002g\u0003\u0002\u0002\u0002\u0002i\u0003\u0002\u0002\u0002', - '\u0002k\u0003\u0002\u0002\u0002\u0002m\u0003\u0002\u0002\u0002\u0002', - 'o\u0003\u0002\u0002\u0002\u0002q\u0003\u0002\u0002\u0002\u0002s\u0003', - '\u0002\u0002\u0002\u0002u\u0003\u0002\u0002\u0002\u0002w\u0003\u0002', - '\u0002\u0002\u0002y\u0003\u0002\u0002\u0002\u0002{\u0003\u0002\u0002', - '\u0002\u0002}\u0003\u0002\u0002\u0002\u0002\u007f\u0003\u0002\u0002', - '\u0002\u0002\u0081\u0003\u0002\u0002\u0002\u0002\u0083\u0003\u0002\u0002', - '\u0002\u0002\u0085\u0003\u0002\u0002\u0002\u0002\u0087\u0003\u0002\u0002', - '\u0002\u0002\u0089\u0003\u0002\u0002\u0002\u0002\u008b\u0003\u0002\u0002', - '\u0002\u0002\u008d\u0003\u0002\u0002\u0002\u0002\u008f\u0003\u0002\u0002', - '\u0002\u0002\u0091\u0003\u0002\u0002\u0002\u0002\u0093\u0003\u0002\u0002', - '\u0002\u0002\u0095\u0003\u0002\u0002\u0002\u0002\u0097\u0003\u0002\u0002', - '\u0002\u0002\u0099\u0003\u0002\u0002\u0002\u0002\u009b\u0003\u0002\u0002', - '\u0002\u0002\u009d\u0003\u0002\u0002\u0002\u0002\u009f\u0003\u0002\u0002', - '\u0002\u0002\u00a1\u0003\u0002\u0002\u0002\u0002\u00a3\u0003\u0002\u0002', - '\u0002\u0002\u00a5\u0003\u0002\u0002\u0002\u0002\u00a7\u0003\u0002\u0002', - '\u0002\u0002\u00a9\u0003\u0002\u0002\u0002\u0002\u00ab\u0003\u0002\u0002', - '\u0002\u0002\u00ad\u0003\u0002\u0002\u0002\u0002\u00af\u0003\u0002\u0002', - '\u0002\u0002\u00b1\u0003\u0002\u0002\u0002\u0002\u00b3\u0003\u0002\u0002', - '\u0002\u0002\u00b5\u0003\u0002\u0002\u0002\u0002\u00b7\u0003\u0002\u0002', - '\u0002\u0002\u00b9\u0003\u0002\u0002\u0002\u0002\u00bb\u0003\u0002\u0002', - '\u0002\u0002\u00bd\u0003\u0002\u0002\u0002\u0002\u00bf\u0003\u0002\u0002', - '\u0002\u0002\u00c1\u0003\u0002\u0002\u0002\u0002\u00c3\u0003\u0002\u0002', - '\u0002\u0002\u00c5\u0003\u0002\u0002\u0002\u0002\u00c7\u0003\u0002\u0002', - '\u0002\u0002\u00c9\u0003\u0002\u0002\u0002\u0002\u00cb\u0003\u0002\u0002', - '\u0002\u0002\u00cd\u0003\u0002\u0002\u0002\u0002\u00cf\u0003\u0002\u0002', - '\u0002\u0002\u00d1\u0003\u0002\u0002\u0002\u0002\u00d3\u0003\u0002\u0002', - '\u0002\u0002\u00d5\u0003\u0002\u0002\u0002\u0002\u00d7\u0003\u0002\u0002', - '\u0002\u0002\u00d9\u0003\u0002\u0002\u0002\u0002\u00db\u0003\u0002\u0002', - '\u0002\u0002\u00dd\u0003\u0002\u0002\u0002\u0002\u00df\u0003\u0002\u0002', - '\u0002\u0002\u00e1\u0003\u0002\u0002\u0002\u0002\u00e3\u0003\u0002\u0002', - '\u0002\u0002\u00e5\u0003\u0002\u0002\u0002\u0002\u00e7\u0003\u0002\u0002', - '\u0002\u0002\u00e9\u0003\u0002\u0002\u0002\u0002\u00eb\u0003\u0002\u0002', - '\u0002\u0002\u00ed\u0003\u0002\u0002\u0002\u0002\u00ef\u0003\u0002\u0002', - '\u0002\u0002\u00f1\u0003\u0002\u0002\u0002\u0002\u00f3\u0003\u0002\u0002', - '\u0002\u0002\u00f5\u0003\u0002\u0002\u0002\u0002\u00f7\u0003\u0002\u0002', - '\u0002\u0002\u00f9\u0003\u0002\u0002\u0002\u0002\u00fb\u0003\u0002\u0002', - '\u0002\u0002\u00fd\u0003\u0002\u0002\u0002\u0002\u00ff\u0003\u0002\u0002', - '\u0002\u0002\u0101\u0003\u0002\u0002\u0002\u0002\u0103\u0003\u0002\u0002', - '\u0002\u0002\u0105\u0003\u0002\u0002\u0002\u0002\u0107\u0003\u0002\u0002', - '\u0002\u0002\u0109\u0003\u0002\u0002\u0002\u0002\u010b\u0003\u0002\u0002', - '\u0002\u0002\u010d\u0003\u0002\u0002\u0002\u0002\u010f\u0003\u0002\u0002', - '\u0002\u0002\u0111\u0003\u0002\u0002\u0002\u0002\u0113\u0003\u0002\u0002', - '\u0002\u0002\u0115\u0003\u0002\u0002\u0002\u0002\u0117\u0003\u0002\u0002', - '\u0002\u0002\u0119\u0003\u0002\u0002\u0002\u0002\u011b\u0003\u0002\u0002', - '\u0002\u0002\u011d\u0003\u0002\u0002\u0002\u0002\u011f\u0003\u0002\u0002', - '\u0002\u0002\u0121\u0003\u0002\u0002\u0002\u0002\u0123\u0003\u0002\u0002', - '\u0002\u0002\u0125\u0003\u0002\u0002\u0002\u0002\u0127\u0003\u0002\u0002', - '\u0002\u0002\u0129\u0003\u0002\u0002\u0002\u0002\u012b\u0003\u0002\u0002', - '\u0002\u0002\u012d\u0003\u0002\u0002\u0002\u0002\u012f\u0003\u0002\u0002', - '\u0002\u0002\u0131\u0003\u0002\u0002\u0002\u0002\u0133\u0003\u0002\u0002', - '\u0002\u0002\u0135\u0003\u0002\u0002\u0002\u0002\u0137\u0003\u0002\u0002', - '\u0002\u0002\u0139\u0003\u0002\u0002\u0002\u0002\u013b\u0003\u0002\u0002', - '\u0002\u0002\u013d\u0003\u0002\u0002\u0002\u0002\u013f\u0003\u0002\u0002', - '\u0002\u0002\u0141\u0003\u0002\u0002\u0002\u0002\u0143\u0003\u0002\u0002', - '\u0002\u0002\u0145\u0003\u0002\u0002\u0002\u0002\u0147\u0003\u0002\u0002', - '\u0002\u0002\u0149\u0003\u0002\u0002\u0002\u0002\u014b\u0003\u0002\u0002', - '\u0002\u0002\u014d\u0003\u0002\u0002\u0002\u0002\u014f\u0003\u0002\u0002', - '\u0002\u0002\u0151\u0003\u0002\u0002\u0002\u0002\u0153\u0003\u0002\u0002', - '\u0002\u0002\u0155\u0003\u0002\u0002\u0002\u0002\u0157\u0003\u0002\u0002', - '\u0002\u0002\u0159\u0003\u0002\u0002\u0002\u0002\u015b\u0003\u0002\u0002', - '\u0002\u0002\u015d\u0003\u0002\u0002\u0002\u0002\u015f\u0003\u0002\u0002', - '\u0002\u0002\u0161\u0003\u0002\u0002\u0002\u0002\u0163\u0003\u0002\u0002', - '\u0002\u0002\u0165\u0003\u0002\u0002\u0002\u0002\u0167\u0003\u0002\u0002', - '\u0002\u0002\u0169\u0003\u0002\u0002\u0002\u0002\u016b\u0003\u0002\u0002', - '\u0002\u0002\u016d\u0003\u0002\u0002\u0002\u0002\u016f\u0003\u0002\u0002', - '\u0002\u0002\u0171\u0003\u0002\u0002\u0002\u0002\u0173\u0003\u0002\u0002', - '\u0002\u0002\u0175\u0003\u0002\u0002\u0002\u0002\u0177\u0003\u0002\u0002', - '\u0002\u0002\u0179\u0003\u0002\u0002\u0002\u0002\u017b\u0003\u0002\u0002', - '\u0002\u0002\u017d\u0003\u0002\u0002\u0002\u0002\u017f\u0003\u0002\u0002', - '\u0002\u0002\u0181\u0003\u0002\u0002\u0002\u0002\u0183\u0003\u0002\u0002', - '\u0002\u0002\u0185\u0003\u0002\u0002\u0002\u0002\u0187\u0003\u0002\u0002', - '\u0002\u0002\u0189\u0003\u0002\u0002\u0002\u0002\u018b\u0003\u0002\u0002', - '\u0002\u0002\u018d\u0003\u0002\u0002\u0002\u0002\u018f\u0003\u0002\u0002', - '\u0002\u0002\u0191\u0003\u0002\u0002\u0002\u0002\u0193\u0003\u0002\u0002', - '\u0002\u0002\u0195\u0003\u0002\u0002\u0002\u0002\u0197\u0003\u0002\u0002', - '\u0002\u0002\u0199\u0003\u0002\u0002\u0002\u0002\u019b\u0003\u0002\u0002', - '\u0002\u0002\u019d\u0003\u0002\u0002\u0002\u0002\u019f\u0003\u0002\u0002', - '\u0002\u0002\u01a1\u0003\u0002\u0002\u0002\u0002\u01a3\u0003\u0002\u0002', - '\u0002\u0002\u01a5\u0003\u0002\u0002\u0002\u0002\u01a7\u0003\u0002\u0002', - '\u0002\u0002\u01a9\u0003\u0002\u0002\u0002\u0002\u01ab\u0003\u0002\u0002', - '\u0002\u0002\u01ad\u0003\u0002\u0002\u0002\u0002\u01af\u0003\u0002\u0002', - '\u0002\u0002\u01b1\u0003\u0002\u0002\u0002\u0002\u01b3\u0003\u0002\u0002', - '\u0002\u0002\u01b5\u0003\u0002\u0002\u0002\u0002\u01b7\u0003\u0002\u0002', - '\u0002\u0002\u01b9\u0003\u0002\u0002\u0002\u0002\u01bb\u0003\u0002\u0002', - '\u0002\u0002\u01bd\u0003\u0002\u0002\u0002\u0002\u01bf\u0003\u0002\u0002', - '\u0002\u0002\u01c1\u0003\u0002\u0002\u0002\u0002\u01c3\u0003\u0002\u0002', - '\u0002\u0002\u01c5\u0003\u0002\u0002\u0002\u0002\u01c7\u0003\u0002\u0002', - '\u0002\u0002\u01c9\u0003\u0002\u0002\u0002\u0002\u01cb\u0003\u0002\u0002', - '\u0002\u0002\u01cd\u0003\u0002\u0002\u0002\u0002\u01cf\u0003\u0002\u0002', - '\u0002\u0002\u01d1\u0003\u0002\u0002\u0002\u0002\u01d3\u0003\u0002\u0002', - '\u0002\u0002\u01d5\u0003\u0002\u0002\u0002\u0002\u01d7\u0003\u0002\u0002', - '\u0002\u0002\u01d9\u0003\u0002\u0002\u0002\u0002\u01db\u0003\u0002\u0002', - '\u0002\u0002\u01dd\u0003\u0002\u0002\u0002\u0002\u01df\u0003\u0002\u0002', - '\u0002\u0002\u01e1\u0003\u0002\u0002\u0002\u0002\u01e3\u0003\u0002\u0002', - '\u0002\u0002\u01eb\u0003\u0002\u0002\u0002\u0002\u01ed\u0003\u0002\u0002', - '\u0002\u0002\u01ef\u0003\u0002\u0002\u0002\u0002\u01f1\u0003\u0002\u0002', - '\u0002\u0002\u01f3\u0003\u0002\u0002\u0002\u0003\u01fc\u0003\u0002\u0002', - '\u0002\u0005\u0203\u0003\u0002\u0002\u0002\u0007\u0215\u0003\u0002\u0002', - '\u0002\t\u0218\u0003\u0002\u0002\u0002\u000b\u021a\u0003\u0002\u0002', - '\u0002\r\u0224\u0003\u0002\u0002\u0002\u000f\u0226\u0003\u0002\u0002', - '\u0002\u0011\u022f\u0003\u0002\u0002\u0002\u0013\u023e\u0003\u0002\u0002', - '\u0002\u0015\u0240\u0003\u0002\u0002\u0002\u0017\u024c\u0003\u0002\u0002', - '\u0002\u0019\u0256\u0003\u0002\u0002\u0002\u001b\u025c\u0003\u0002\u0002', - '\u0002\u001d\u025e\u0003\u0002\u0002\u0002\u001f\u0266\u0003\u0002\u0002', - '\u0002!\u0268\u0003\u0002\u0002\u0002#\u026a\u0003\u0002\u0002\u0002', - "%\u026c\u0003\u0002\u0002\u0002'\u026e\u0003\u0002\u0002\u0002)\u0271", - '\u0003\u0002\u0002\u0002+\u0277\u0003\u0002\u0002\u0002-\u0279\u0003', - '\u0002\u0002\u0002/\u027b\u0003\u0002\u0002\u00021\u027e\u0003\u0002', - '\u0002\u00023\u0280\u0003\u0002\u0002\u00025\u0283\u0003\u0002\u0002', - '\u00027\u0286\u0003\u0002\u0002\u00029\u0288\u0003\u0002\u0002\u0002', - ';\u028a\u0003\u0002\u0002\u0002=\u028c\u0003\u0002\u0002\u0002?\u028e', - '\u0003\u0002\u0002\u0002A\u0290\u0003\u0002\u0002\u0002C\u0292\u0003', - '\u0002\u0002\u0002E\u0294\u0003\u0002\u0002\u0002G\u0296\u0003\u0002', - '\u0002\u0002I\u0299\u0003\u0002\u0002\u0002K\u029b\u0003\u0002\u0002', - '\u0002M\u029d\u0003\u0002\u0002\u0002O\u02a4\u0003\u0002\u0002\u0002', - 'Q\u02a8\u0003\u0002\u0002\u0002S\u02ae\u0003\u0002\u0002\u0002U\u02b6', - '\u0003\u0002\u0002\u0002W\u02ba\u0003\u0002\u0002\u0002Y\u02be\u0003', - '\u0002\u0002\u0002[\u02c4\u0003\u0002\u0002\u0002]\u02c7\u0003\u0002', - '\u0002\u0002_\u02cb\u0003\u0002\u0002\u0002a\u02ce\u0003\u0002\u0002', - '\u0002c\u02d4\u0003\u0002\u0002\u0002e\u02dc\u0003\u0002\u0002\u0002', - 'g\u02e3\u0003\u0002\u0002\u0002i\u02eb\u0003\u0002\u0002\u0002k\u02f1', - '\u0003\u0002\u0002\u0002m\u02f8\u0003\u0002\u0002\u0002o\u02fe\u0003', - '\u0002\u0002\u0002q\u0301\u0003\u0002\u0002\u0002s\u0306\u0003\u0002', - '\u0002\u0002u\u030b\u0003\u0002\u0002\u0002w\u0310\u0003\u0002\u0002', - '\u0002y\u0318\u0003\u0002\u0002\u0002{\u0320\u0003\u0002\u0002\u0002', - '}\u032b\u0003\u0002\u0002\u0002\u007f\u0332\u0003\u0002\u0002\u0002', - '\u0081\u033c\u0003\u0002\u0002\u0002\u0083\u0344\u0003\u0002\u0002\u0002', - '\u0085\u034d\u0003\u0002\u0002\u0002\u0087\u0358\u0003\u0002\u0002\u0002', - '\u0089\u035e\u0003\u0002\u0002\u0002\u008b\u0365\u0003\u0002\u0002\u0002', - '\u008d\u036d\u0003\u0002\u0002\u0002\u008f\u0376\u0003\u0002\u0002\u0002', - '\u0091\u037e\u0003\u0002\u0002\u0002\u0093\u0388\u0003\u0002\u0002\u0002', - '\u0095\u0390\u0003\u0002\u0002\u0002\u0097\u039a\u0003\u0002\u0002\u0002', - '\u0099\u03a1\u0003\u0002\u0002\u0002\u009b\u03a9\u0003\u0002\u0002\u0002', - '\u009d\u03ae\u0003\u0002\u0002\u0002\u009f\u03b7\u0003\u0002\u0002\u0002', - '\u00a1\u03c0\u0003\u0002\u0002\u0002\u00a3\u03c3\u0003\u0002\u0002\u0002', - '\u00a5\u03c8\u0003\u0002\u0002\u0002\u00a7\u03cd\u0003\u0002\u0002\u0002', - '\u00a9\u03d5\u0003\u0002\u0002\u0002\u00ab\u03da\u0003\u0002\u0002\u0002', - '\u00ad\u03de\u0003\u0002\u0002\u0002\u00af\u03e4\u0003\u0002\u0002\u0002', - '\u00b1\u03eb\u0003\u0002\u0002\u0002\u00b3\u03f3\u0003\u0002\u0002\u0002', - '\u00b5\u03fb\u0003\u0002\u0002\u0002\u00b7\u0402\u0003\u0002\u0002\u0002', - '\u00b9\u040a\u0003\u0002\u0002\u0002\u00bb\u0410\u0003\u0002\u0002\u0002', - '\u00bd\u0416\u0003\u0002\u0002\u0002\u00bf\u041d\u0003\u0002\u0002\u0002', - '\u00c1\u0423\u0003\u0002\u0002\u0002\u00c3\u042b\u0003\u0002\u0002\u0002', - '\u00c5\u0431\u0003\u0002\u0002\u0002\u00c7\u043b\u0003\u0002\u0002\u0002', - '\u00c9\u043f\u0003\u0002\u0002\u0002\u00cb\u0445\u0003\u0002\u0002\u0002', - '\u00cd\u044a\u0003\u0002\u0002\u0002\u00cf\u044e\u0003\u0002\u0002\u0002', - '\u00d1\u0457\u0003\u0002\u0002\u0002\u00d3\u045e\u0003\u0002\u0002\u0002', - '\u00d5\u0464\u0003\u0002\u0002\u0002\u00d7\u046a\u0003\u0002\u0002\u0002', - '\u00d9\u0471\u0003\u0002\u0002\u0002\u00db\u0475\u0003\u0002\u0002\u0002', - '\u00dd\u047a\u0003\u0002\u0002\u0002\u00df\u0481\u0003\u0002\u0002\u0002', - '\u00e1\u0484\u0003\u0002\u0002\u0002\u00e3\u048b\u0003\u0002\u0002\u0002', - '\u00e5\u0491\u0003\u0002\u0002\u0002\u00e7\u0494\u0003\u0002\u0002\u0002', - '\u00e9\u049c\u0003\u0002\u0002\u0002\u00eb\u04a6\u0003\u0002\u0002\u0002', - '\u00ed\u04ac\u0003\u0002\u0002\u0002\u00ef\u04b2\u0003\u0002\u0002\u0002', - '\u00f1\u04b9\u0003\u0002\u0002\u0002\u00f3\u04bf\u0003\u0002\u0002\u0002', - '\u00f5\u04c6\u0003\u0002\u0002\u0002\u00f7\u04d0\u0003\u0002\u0002\u0002', - '\u00f9\u04d5\u0003\u0002\u0002\u0002\u00fb\u04d8\u0003\u0002\u0002\u0002', - '\u00fd\u04e2\u0003\u0002\u0002\u0002\u00ff\u04ed\u0003\u0002\u0002\u0002', - '\u0101\u04f2\u0003\u0002\u0002\u0002\u0103\u04f6\u0003\u0002\u0002\u0002', - '\u0105\u04fb\u0003\u0002\u0002\u0002\u0107\u0504\u0003\u0002\u0002\u0002', - '\u0109\u050a\u0003\u0002\u0002\u0002\u010b\u0513\u0003\u0002\u0002\u0002', - '\u010d\u0518\u0003\u0002\u0002\u0002\u010f\u051d\u0003\u0002\u0002\u0002', - '\u0111\u0521\u0003\u0002\u0002\u0002\u0113\u0529\u0003\u0002\u0002\u0002', - '\u0115\u052f\u0003\u0002\u0002\u0002\u0117\u0534\u0003\u0002\u0002\u0002', - '\u0119\u053a\u0003\u0002\u0002\u0002\u011b\u053e\u0003\u0002\u0002\u0002', - '\u011d\u0542\u0003\u0002\u0002\u0002\u011f\u054a\u0003\u0002\u0002\u0002', - '\u0121\u0552\u0003\u0002\u0002\u0002\u0123\u055f\u0003\u0002\u0002\u0002', - '\u0125\u0565\u0003\u0002\u0002\u0002\u0127\u056d\u0003\u0002\u0002\u0002', - '\u0129\u0577\u0003\u0002\u0002\u0002\u012b\u057c\u0003\u0002\u0002\u0002', - '\u012d\u057f\u0003\u0002\u0002\u0002\u012f\u0582\u0003\u0002\u0002\u0002', - '\u0131\u0586\u0003\u0002\u0002\u0002\u0133\u0590\u0003\u0002\u0002\u0002', - '\u0135\u0595\u0003\u0002\u0002\u0002\u0137\u059b\u0003\u0002\u0002\u0002', - '\u0139\u05a2\u0003\u0002\u0002\u0002\u013b\u05a9\u0003\u0002\u0002\u0002', - '\u013d\u05b0\u0003\u0002\u0002\u0002\u013f\u05b3\u0003\u0002\u0002\u0002', - '\u0141\u05ba\u0003\u0002\u0002\u0002\u0143\u05c2\u0003\u0002\u0002\u0002', - '\u0145\u05c5\u0003\u0002\u0002\u0002\u0147\u05cb\u0003\u0002\u0002\u0002', - '\u0149\u05d2\u0003\u0002\u0002\u0002\u014b\u05d8\u0003\u0002\u0002\u0002', - '\u014d\u05dd\u0003\u0002\u0002\u0002\u014f\u05e3\u0003\u0002\u0002\u0002', - '\u0151\u05ed\u0003\u0002\u0002\u0002\u0153\u05f6\u0003\u0002\u0002\u0002', - '\u0155\u05fb\u0003\u0002\u0002\u0002\u0157\u0600\u0003\u0002\u0002\u0002', - '\u0159\u060a\u0003\u0002\u0002\u0002\u015b\u0612\u0003\u0002\u0002\u0002', - '\u015d\u061a\u0003\u0002\u0002\u0002\u015f\u0622\u0003\u0002\u0002\u0002', - '\u0161\u062c\u0003\u0002\u0002\u0002\u0163\u0636\u0003\u0002\u0002\u0002', - '\u0165\u063c\u0003\u0002\u0002\u0002\u0167\u0643\u0003\u0002\u0002\u0002', - '\u0169\u0649\u0003\u0002\u0002\u0002\u016b\u064d\u0003\u0002\u0002\u0002', - '\u016d\u0652\u0003\u0002\u0002\u0002\u016f\u0658\u0003\u0002\u0002\u0002', - '\u0171\u065f\u0003\u0002\u0002\u0002\u0173\u0666\u0003\u0002\u0002\u0002', - '\u0175\u066e\u0003\u0002\u0002\u0002\u0177\u0676\u0003\u0002\u0002\u0002', - '\u0179\u067d\u0003\u0002\u0002\u0002\u017b\u0687\u0003\u0002\u0002\u0002', - '\u017d\u068e\u0003\u0002\u0002\u0002\u017f\u0694\u0003\u0002\u0002\u0002', - '\u0181\u0699\u0003\u0002\u0002\u0002\u0183\u06a2\u0003\u0002\u0002\u0002', - '\u0185\u06a6\u0003\u0002\u0002\u0002\u0187\u06ab\u0003\u0002\u0002\u0002', - '\u0189\u06b5\u0003\u0002\u0002\u0002\u018b\u06bf\u0003\u0002\u0002\u0002', - '\u018d\u06c6\u0003\u0002\u0002\u0002\u018f\u06cc\u0003\u0002\u0002\u0002', - '\u0191\u06d3\u0003\u0002\u0002\u0002\u0193\u06d8\u0003\u0002\u0002\u0002', - '\u0195\u06dc\u0003\u0002\u0002\u0002\u0197\u06e1\u0003\u0002\u0002\u0002', - '\u0199\u06e6\u0003\u0002\u0002\u0002\u019b\u06ec\u0003\u0002\u0002\u0002', - '\u019d\u06f7\u0003\u0002\u0002\u0002\u019f\u06fe\u0003\u0002\u0002\u0002', - '\u01a1\u0705\u0003\u0002\u0002\u0002\u01a3\u070a\u0003\u0002\u0002\u0002', - '\u01a5\u070f\u0003\u0002\u0002\u0002\u01a7\u0712\u0003\u0002\u0002\u0002', - '\u01a9\u0717\u0003\u0002\u0002\u0002\u01ab\u0723\u0003\u0002\u0002\u0002', - '\u01ad\u072b\u0003\u0002\u0002\u0002\u01af\u0730\u0003\u0002\u0002\u0002', - '\u01b1\u0739\u0003\u0002\u0002\u0002\u01b3\u0743\u0003\u0002\u0002\u0002', - '\u01b5\u0749\u0003\u0002\u0002\u0002\u01b7\u074f\u0003\u0002\u0002\u0002', - '\u01b9\u0756\u0003\u0002\u0002\u0002\u01bb\u075e\u0003\u0002\u0002\u0002', - '\u01bd\u0765\u0003\u0002\u0002\u0002\u01bf\u076b\u0003\u0002\u0002\u0002', - '\u01c1\u0772\u0003\u0002\u0002\u0002\u01c3\u0779\u0003\u0002\u0002\u0002', - '\u01c5\u077d\u0003\u0002\u0002\u0002\u01c7\u0782\u0003\u0002\u0002\u0002', - '\u01c9\u0788\u0003\u0002\u0002\u0002\u01cb\u0791\u0003\u0002\u0002\u0002', - '\u01cd\u0797\u0003\u0002\u0002\u0002\u01cf\u079e\u0003\u0002\u0002\u0002', - '\u01d1\u07a5\u0003\u0002\u0002\u0002\u01d3\u07a9\u0003\u0002\u0002\u0002', - '\u01d5\u07ae\u0003\u0002\u0002\u0002\u01d7\u07b3\u0003\u0002\u0002\u0002', - '\u01d9\u07b9\u0003\u0002\u0002\u0002\u01db\u07bf\u0003\u0002\u0002\u0002', - '\u01dd\u07c6\u0003\u0002\u0002\u0002\u01df\u07cb\u0003\u0002\u0002\u0002', - '\u01e1\u07d2\u0003\u0002\u0002\u0002\u01e3\u07d7\u0003\u0002\u0002\u0002', - '\u01e5\u07de\u0003\u0002\u0002\u0002\u01e7\u07e0\u0003\u0002\u0002\u0002', - '\u01e9\u07e2\u0003\u0002\u0002\u0002\u01eb\u07e4\u0003\u0002\u0002\u0002', - '\u01ed\u07fc\u0003\u0002\u0002\u0002\u01ef\u07fe\u0003\u0002\u0002\u0002', - '\u01f1\u0806\u0003\u0002\u0002\u0002\u01f3\u080e\u0003\u0002\u0002\u0002', - '\u01f5\u01f6\u0007)\u0002\u0002\u01f6\u01fd\u0007)\u0002\u0002\u01f7', - '\u01f8\u0007^\u0002\u0002\u01f8\u01fd\u0007)\u0002\u0002\u01f9\u01fa', - '\u0007^\u0002\u0002\u01fa\u01fd\n\u0002\u0002\u0002\u01fb\u01fd\n\u0003', - '\u0002\u0002\u01fc\u01f5\u0003\u0002\u0002\u0002\u01fc\u01f7\u0003\u0002', - '\u0002\u0002\u01fc\u01f9\u0003\u0002\u0002\u0002\u01fc\u01fb\u0003\u0002', - '\u0002\u0002\u01fd\u0004\u0003\u0002\u0002\u0002\u01fe\u01ff\u0007^', - '\u0002\u0002\u01ff\u0204\u0007$\u0002\u0002\u0200\u0201\u0007^\u0002', - '\u0002\u0201\u0204\n\u0004\u0002\u0002\u0202\u0204\n\u0005\u0002\u0002', - '\u0203\u01fe\u0003\u0002\u0002\u0002\u0203\u0200\u0003\u0002\u0002\u0002', - '\u0203\u0202\u0003\u0002\u0002\u0002\u0204\u0006\u0003\u0002\u0002\u0002', - '\u0205\u0209\u0007)\u0002\u0002\u0206\u0208\u0005\u0003\u0002\u0002', - '\u0207\u0206\u0003\u0002\u0002\u0002\u0208\u020b\u0003\u0002\u0002\u0002', - '\u0209\u0207\u0003\u0002\u0002\u0002\u0209\u020a\u0003\u0002\u0002\u0002', - '\u020a\u020c\u0003\u0002\u0002\u0002\u020b\u0209\u0003\u0002\u0002\u0002', - '\u020c\u0216\u0007)\u0002\u0002\u020d\u0211\u0007$\u0002\u0002\u020e', - '\u0210\u0005\u0005\u0003\u0002\u020f\u020e\u0003\u0002\u0002\u0002\u0210', - '\u0213\u0003\u0002\u0002\u0002\u0211\u020f\u0003\u0002\u0002\u0002\u0211', - '\u0212\u0003\u0002\u0002\u0002\u0212\u0214\u0003\u0002\u0002\u0002\u0213', - '\u0211\u0003\u0002\u0002\u0002\u0214\u0216\u0007$\u0002\u0002\u0215', - '\u0205\u0003\u0002\u0002\u0002\u0215\u020d\u0003\u0002\u0002\u0002\u0216', - '\b\u0003\u0002\u0002\u0002\u0217\u0219\u00042;\u0002\u0218\u0217\u0003', - '\u0002\u0002\u0002\u0219\n\u0003\u0002\u0002\u0002\u021a\u021b\t\u0006', - '\u0002\u0002\u021b\f\u0003\u0002\u0002\u0002\u021c\u0225\u00072\u0002', - '\u0002\u021d\u0221\u0005\t\u0005\u0002\u021e\u0220\u0005\u000b\u0006', - '\u0002\u021f\u021e\u0003\u0002\u0002\u0002\u0220\u0223\u0003\u0002\u0002', - '\u0002\u0221\u021f\u0003\u0002\u0002\u0002\u0221\u0222\u0003\u0002\u0002', - '\u0002\u0222\u0225\u0003\u0002\u0002\u0002\u0223\u0221\u0003\u0002\u0002', - '\u0002\u0224\u021c\u0003\u0002\u0002\u0002\u0224\u021d\u0003\u0002\u0002', - '\u0002\u0225\u000e\u0003\u0002\u0002\u0002\u0226\u0228\t\u0007\u0002', - '\u0002\u0227\u0229\t\b\u0002\u0002\u0228\u0227\u0003\u0002\u0002\u0002', - '\u0228\u0229\u0003\u0002\u0002\u0002\u0229\u022b\u0003\u0002\u0002\u0002', - '\u022a\u022c\u0005\u000b\u0006\u0002\u022b\u022a\u0003\u0002\u0002\u0002', - '\u022c\u022d\u0003\u0002\u0002\u0002\u022d\u022b\u0003\u0002\u0002\u0002', - '\u022d\u022e\u0003\u0002\u0002\u0002\u022e\u0010\u0003\u0002\u0002\u0002', - '\u022f\u0230\u0005\r\u0007\u0002\u0230\u0012\u0003\u0002\u0002\u0002', - '\u0231\u0232\u0005\r\u0007\u0002\u0232\u0234\u00070\u0002\u0002\u0233', - '\u0235\u0005\u000b\u0006\u0002\u0234\u0233\u0003\u0002\u0002\u0002\u0235', - '\u0236\u0003\u0002\u0002\u0002\u0236\u0234\u0003\u0002\u0002\u0002\u0236', - '\u0237\u0003\u0002\u0002\u0002\u0237\u0239\u0003\u0002\u0002\u0002\u0238', - '\u023a\u0005\u000f\b\u0002\u0239\u0238\u0003\u0002\u0002\u0002\u0239', - '\u023a\u0003\u0002\u0002\u0002\u023a\u023f\u0003\u0002\u0002\u0002\u023b', - '\u023c\u0005\r\u0007\u0002\u023c\u023d\u0005\u000f\b\u0002\u023d\u023f', - '\u0003\u0002\u0002\u0002\u023e\u0231\u0003\u0002\u0002\u0002\u023e\u023b', - '\u0003\u0002\u0002\u0002\u023f\u0014\u0003\u0002\u0002\u0002\u0240\u0241', - '\u00071\u0002\u0002\u0241\u0242\u0007,\u0002\u0002\u0242\u0246\u0003', - '\u0002\u0002\u0002\u0243\u0245\u000b\u0002\u0002\u0002\u0244\u0243\u0003', - '\u0002\u0002\u0002\u0245\u0248\u0003\u0002\u0002\u0002\u0246\u0247\u0003', - '\u0002\u0002\u0002\u0246\u0244\u0003\u0002\u0002\u0002\u0247\u0249\u0003', - '\u0002\u0002\u0002\u0248\u0246\u0003\u0002\u0002\u0002\u0249\u024a\u0007', - ',\u0002\u0002\u024a\u024b\u00071\u0002\u0002\u024b\u0016\u0003\u0002', - '\u0002\u0002\u024c\u024d\u0007/\u0002\u0002\u024d\u024e\u0007/\u0002', - '\u0002\u024e\u0252\u0003\u0002\u0002\u0002\u024f\u0251\n\t\u0002\u0002', - '\u0250\u024f\u0003\u0002\u0002\u0002\u0251\u0254\u0003\u0002\u0002\u0002', - '\u0252\u0250\u0003\u0002\u0002\u0002\u0252\u0253\u0003\u0002\u0002\u0002', - '\u0253\u0018\u0003\u0002\u0002\u0002\u0254\u0252\u0003\u0002\u0002\u0002', - '\u0255\u0257\t\n\u0002\u0002\u0256\u0255\u0003\u0002\u0002\u0002\u0257', - '\u0258\u0003\u0002\u0002\u0002\u0258\u0256\u0003\u0002\u0002\u0002\u0258', - '\u0259\u0003\u0002\u0002\u0002\u0259\u025a\u0003\u0002\u0002\u0002\u025a', - '\u025b\b\r\u0002\u0002\u025b\u001a\u0003\u0002\u0002\u0002\u025c\u025d', - '\u00070\u0002\u0002\u025d\u001c\u0003\u0002\u0002\u0002\u025e\u025f', - '\u0007-\u0002\u0002\u025f\u001e\u0003\u0002\u0002\u0002\u0260\u0267', - '\u0007/\u0002\u0002\u0261\u0262\t\u000b\u0002\u0002\u0262\u0263\t\f', - '\u0002\u0002\u0263\u0264\t\r\u0002\u0002\u0264\u0265\t\u000e\u0002\u0002', - '\u0265\u0267\t\u000f\u0002\u0002\u0266\u0260\u0003\u0002\u0002\u0002', - '\u0266\u0261\u0003\u0002\u0002\u0002\u0267 \u0003\u0002\u0002\u0002', - '\u0268\u0269\u0007,\u0002\u0002\u0269"\u0003\u0002\u0002\u0002\u026a', - '\u026b\u00071\u0002\u0002\u026b$\u0003\u0002\u0002\u0002\u026c\u026d', - "\u0007'\u0002\u0002\u026d&\u0003\u0002\u0002\u0002\u026e\u026f\u0007", - '?\u0002\u0002\u026f\u0270\u0007?\u0002\u0002\u0270(\u0003\u0002\u0002', - '\u0002\u0271\u0272\u0007?\u0002\u0002\u0272*\u0003\u0002\u0002\u0002', - '\u0273\u0274\u0007#\u0002\u0002\u0274\u0278\u0007?\u0002\u0002\u0275', - '\u0276\u0007>\u0002\u0002\u0276\u0278\u0007@\u0002\u0002\u0277\u0273', - '\u0003\u0002\u0002\u0002\u0277\u0275\u0003\u0002\u0002\u0002\u0278,', - '\u0003\u0002\u0002\u0002\u0279\u027a\u0007>\u0002\u0002\u027a.\u0003', - '\u0002\u0002\u0002\u027b\u027c\u0007>\u0002\u0002\u027c\u027d\u0007', - '?\u0002\u0002\u027d0\u0003\u0002\u0002\u0002\u027e\u027f\u0007@\u0002', - '\u0002\u027f2\u0003\u0002\u0002\u0002\u0280\u0281\u0007@\u0002\u0002', - '\u0281\u0282\u0007?\u0002\u0002\u02824\u0003\u0002\u0002\u0002\u0283', - '\u0284\u0007~\u0002\u0002\u0284\u0285\u0007~\u0002\u0002\u02856\u0003', - '\u0002\u0002\u0002\u0286\u0287\u0007*\u0002\u0002\u02878\u0003\u0002', - '\u0002\u0002\u0288\u0289\u0007+\u0002\u0002\u0289:\u0003\u0002\u0002', - '\u0002\u028a\u028b\u0007}\u0002\u0002\u028b<\u0003\u0002\u0002\u0002', - '\u028c\u028d\u0007\u007f\u0002\u0002\u028d>\u0003\u0002\u0002\u0002', - '\u028e\u028f\u0007.\u0002\u0002\u028f@\u0003\u0002\u0002\u0002\u0290', - '\u0291\u0007<\u0002\u0002\u0291B\u0003\u0002\u0002\u0002\u0292\u0293', - '\u0007]\u0002\u0002\u0293D\u0003\u0002\u0002\u0002\u0294\u0295\u0007', - '_\u0002\u0002\u0295F\u0003\u0002\u0002\u0002\u0296\u0297\u0007_\u0002', - '\u0002\u0297\u0298\u0007k\u0002\u0002\u0298H\u0003\u0002\u0002\u0002', - '\u0299\u029a\u0007=\u0002\u0002\u029aJ\u0003\u0002\u0002\u0002\u029b', - '\u029c\u0007#\u0002\u0002\u029cL\u0003\u0002\u0002\u0002\u029d\u029e', - '\t\u0010\u0002\u0002\u029e\u029f\t\u0011\u0002\u0002\u029f\u02a0\t\u0012', - '\u0002\u0002\u02a0\u02a1\t\f\u0002\u0002\u02a1\u02a2\t\u000f\u0002\u0002', - '\u02a2\u02a3\t\u0007\u0002\u0002\u02a3N\u0003\u0002\u0002\u0002\u02a4', - '\u02a5\t\u0010\u0002\u0002\u02a5\u02a6\t\u0013\u0002\u0002\u02a6\u02a7', - '\t\u0013\u0002\u0002\u02a7P\u0003\u0002\u0002\u0002\u02a8\u02a9\t\u0010', - '\u0002\u0002\u02a9\u02aa\t\u0013\u0002\u0002\u02aa\u02ab\t\u0014\u0002', - '\u0002\u02ab\u02ac\t\u0007\u0002\u0002\u02ac\u02ad\t\u0015\u0002\u0002', - '\u02adR\u0003\u0002\u0002\u0002\u02ae\u02af\t\u0010\u0002\u0002\u02af', - '\u02b0\t\r\u0002\u0002\u02b0\u02b1\t\u0010\u0002\u0002\u02b1\u02b2\t', - '\u0013\u0002\u0002\u02b2\u02b3\t\u0016\u0002\u0002\u02b3\u02b4\t\u0017', - '\u0002\u0002\u02b4\u02b5\t\u0007\u0002\u0002\u02b5T\u0003\u0002\u0002', - '\u0002\u02b6\u02b7\t\u0010\u0002\u0002\u02b7\u02b8\t\r\u0002\u0002\u02b8', - '\u02b9\t\u0011\u0002\u0002\u02b9V\u0003\u0002\u0002\u0002\u02ba\u02bb', - '\t\u0010\u0002\u0002\u02bb\u02bc\t\r\u0002\u0002\u02bc\u02bd\t\u0016', - '\u0002\u0002\u02bdX\u0003\u0002\u0002\u0002\u02be\u02bf\t\u0010\u0002', - '\u0002\u02bf\u02c0\t\u0015\u0002\u0002\u02c0\u02c1\t\u0015\u0002\u0002', - '\u02c1\u02c2\t\u0010\u0002\u0002\u02c2\u02c3\t\u0016\u0002\u0002\u02c3', - 'Z\u0003\u0002\u0002\u0002\u02c4\u02c5\t\u0010\u0002\u0002\u02c5\u02c6', - '\t\u000f\u0002\u0002\u02c6\\\u0003\u0002\u0002\u0002\u02c7\u02c8\t\u0010', - '\u0002\u0002\u02c8\u02c9\t\u000f\u0002\u0002\u02c9\u02ca\t\u0018\u0002', - '\u0002\u02ca^\u0003\u0002\u0002\u0002\u02cb\u02cc\t\u0010\u0002\u0002', - '\u02cc\u02cd\t\u0014\u0002\u0002\u02cd`\u0003\u0002\u0002\u0002\u02ce', - '\u02cf\t\u0019\u0002\u0002\u02cf\u02d0\t\u0007\u0002\u0002\u02d0\u02d1', - '\t\u001a\u0002\u0002\u02d1\u02d2\t\f\u0002\u0002\u02d2\u02d3\t\r\u0002', - '\u0002\u02d3b\u0003\u0002\u0002\u0002\u02d4\u02d5\t\u0019\u0002\u0002', - '\u02d5\u02d6\t\u0007\u0002\u0002\u02d6\u02d7\t\u0014\u0002\u0002\u02d7', - '\u02d8\t\u001b\u0002\u0002\u02d8\u02d9\t\u0007\u0002\u0002\u02d9\u02da', - '\t\u0007\u0002\u0002\u02da\u02db\t\r\u0002\u0002\u02dbd\u0003\u0002', - '\u0002\u0002\u02dc\u02dd\t\u0019\u0002\u0002\u02dd\u02de\t\f\u0002\u0002', - '\u02de\u02df\t\r\u0002\u0002\u02df\u02e0\t\u0010\u0002\u0002\u02e0\u02e1', - '\t\u0015\u0002\u0002\u02e1\u02e2\t\u0016\u0002\u0002\u02e2f\u0003\u0002', - '\u0002\u0002\u02e3\u02e4\t\u0019\u0002\u0002\u02e4\u02e5\t\u001c\u0002', - '\u0002\u02e5\u02e6\t\u001c\u0002\u0002\u02e6\u02e7\t\u0013\u0002\u0002', - '\u02e7\u02e8\t\u0007\u0002\u0002\u02e8\u02e9\t\u0010\u0002\u0002\u02e9', - '\u02ea\t\r\u0002\u0002\u02eah\u0003\u0002\u0002\u0002\u02eb\u02ec\t', - '\u0019\u0002\u0002\u02ec\u02ed\t\u0015\u0002\u0002\u02ed\u02ee\t\u0007', - '\u0002\u0002\u02ee\u02ef\t\u0010\u0002\u0002\u02ef\u02f0\t\u001d\u0002', - '\u0002\u02f0j\u0003\u0002\u0002\u0002\u02f1\u02f2\t\u0019\u0002\u0002', - '\u02f2\u02f3\t\u000e\u0002\u0002\u02f3\u02f4\t\u0018\u0002\u0002\u02f4', - '\u02f5\t\u001d\u0002\u0002\u02f5\u02f6\t\u0007\u0002\u0002\u02f6\u02f7', - '\t\u0014\u0002\u0002\u02f7l\u0003\u0002\u0002\u0002\u02f8\u02f9\t\u0019', - '\u0002\u0002\u02f9\u02fa\t\u000e\u0002\u0002\u02fa\u02fb\t\f\u0002\u0002', - '\u02fb\u02fc\t\u0013\u0002\u0002\u02fc\u02fd\t\u0011\u0002\u0002\u02fd', - 'n\u0003\u0002\u0002\u0002\u02fe\u02ff\t\u0019\u0002\u0002\u02ff\u0300', - '\t\u0016\u0002\u0002\u0300p\u0003\u0002\u0002\u0002\u0301\u0302\t\u0018', - '\u0002\u0002\u0302\u0303\t\u0010\u0002\u0002\u0303\u0304\t\u0013\u0002', - '\u0002\u0304\u0305\t\u0013\u0002\u0002\u0305r\u0003\u0002\u0002\u0002', - '\u0306\u0307\t\u0018\u0002\u0002\u0307\u0308\t\u0010\u0002\u0002\u0308', - '\u0309\t\u000f\u0002\u0002\u0309\u030a\t\u0007\u0002\u0002\u030at\u0003', - '\u0002\u0002\u0002\u030b\u030c\t\u0018\u0002\u0002\u030c\u030d\t\u0010', - '\u0002\u0002\u030d\u030e\t\u000f\u0002\u0002\u030e\u030f\t\u0014\u0002', - '\u0002\u030fv\u0003\u0002\u0002\u0002\u0310\u0311\t\u0018\u0002\u0002', - '\u0311\u0312\t\u0013\u0002\u0002\u0312\u0313\t\u000e\u0002\u0002\u0313', - '\u0314\t\u000f\u0002\u0002\u0314\u0315\t\u0014\u0002\u0002\u0315\u0316', - '\t\u0007\u0002\u0002\u0316\u0317\t\u0015\u0002\u0002\u0317x\u0003\u0002', - '\u0002\u0002\u0318\u0319\t\u0018\u0002\u0002\u0319\u031a\t\u001c\u0002', - '\u0002\u031a\u031b\t\u0013\u0002\u0002\u031b\u031c\t\u0013\u0002\u0002', - '\u031c\u031d\t\u0010\u0002\u0002\u031d\u031e\t\u0014\u0002\u0002\u031e', - '\u031f\t\u0007\u0002\u0002\u031fz\u0003\u0002\u0002\u0002\u0320\u0321', - '\t\u0018\u0002\u0002\u0321\u0322\t\u001c\u0002\u0002\u0322\u0323\t\u0013', - '\u0002\u0002\u0323\u0324\t\u0013\u0002\u0002\u0324\u0325\t\u0007\u0002', - '\u0002\u0325\u0326\t\u0018\u0002\u0002\u0326\u0327\t\u0014\u0002\u0002', - '\u0327\u0328\t\f\u0002\u0002\u0328\u0329\t\u001c\u0002\u0002\u0329\u032a', - '\t\r\u0002\u0002\u032a|\u0003\u0002\u0002\u0002\u032b\u032c\t\u0018', - '\u0002\u0002\u032c\u032d\t\u001c\u0002\u0002\u032d\u032e\t\u000b\u0002', - '\u0002\u032e\u032f\t\u000b\u0002\u0002\u032f\u0330\t\f\u0002\u0002\u0330', - '\u0331\t\u0014\u0002\u0002\u0331~\u0003\u0002\u0002\u0002\u0332\u0333', - '\t\u0018\u0002\u0002\u0333\u0334\t\u001c\u0002\u0002\u0334\u0335\t\u000b', - '\u0002\u0002\u0335\u0336\t\u000b\u0002\u0002\u0336\u0337\t\f\u0002\u0002', - '\u0337\u0338\t\u0014\u0002\u0002\u0338\u0339\t\u0014\u0002\u0002\u0339', - '\u033a\t\u0007\u0002\u0002\u033a\u033b\t\u0011\u0002\u0002\u033b\u0080', - '\u0003\u0002\u0002\u0002\u033c\u033d\t\u0018\u0002\u0002\u033d\u033e', - '\t\u001c\u0002\u0002\u033e\u033f\t\r\u0002\u0002\u033f\u0340\t\r\u0002', - '\u0002\u0340\u0341\t\u0007\u0002\u0002\u0341\u0342\t\u0018\u0002\u0002', - '\u0342\u0343\t\u0014\u0002\u0002\u0343\u0082\u0003\u0002\u0002\u0002', - '\u0344\u0345\t\u0018\u0002\u0002\u0345\u0346\t\u001c\u0002\u0002\u0346', - '\u0347\t\r\u0002\u0002\u0347\u0348\t\u0014\u0002\u0002\u0348\u0349\t', - '\f\u0002\u0002\u0349\u034a\t\r\u0002\u0002\u034a\u034b\t\u000e\u0002', - '\u0002\u034b\u034c\t\u0007\u0002\u0002\u034c\u0084\u0003\u0002\u0002', - '\u0002\u034d\u034e\t\u0018\u0002\u0002\u034e\u034f\t\u001c\u0002\u0002', - '\u034f\u0350\t\u0015\u0002\u0002\u0350\u0351\t\u0015\u0002\u0002\u0351', - '\u0352\t\u0007\u0002\u0002\u0352\u0353\t\u0013\u0002\u0002\u0353\u0354', - '\t\u0010\u0002\u0002\u0354\u0355\t\u0014\u0002\u0002\u0355\u0356\t\u0007', - '\u0002\u0002\u0356\u0357\t\u0011\u0002\u0002\u0357\u0086\u0003\u0002', - '\u0002\u0002\u0358\u0359\t\u0018\u0002\u0002\u0359\u035a\t\u001c\u0002', - '\u0002\u035a\u035b\t\u0012\u0002\u0002\u035b\u035c\t\u0007\u0002\u0002', - '\u035c\u035d\t\u0015\u0002\u0002\u035d\u0088\u0003\u0002\u0002\u0002', - '\u035e\u035f\t\u0018\u0002\u0002\u035f\u0360\t\u0015\u0002\u0002\u0360', - '\u0361\t\u0007\u0002\u0002\u0361\u0362\t\u0010\u0002\u0002\u0362\u0363', - '\t\u0014\u0002\u0002\u0363\u0364\t\u0007\u0002\u0002\u0364\u008a\u0003', - '\u0002\u0002\u0002\u0365\u0366\t\u0018\u0002\u0002\u0366\u0367\t\u000e', - '\u0002\u0002\u0367\u0368\t\u0015\u0002\u0002\u0368\u0369\t\u0015\u0002', - '\u0002\u0369\u036a\t\u0007\u0002\u0002\u036a\u036b\t\r\u0002\u0002\u036b', - '\u036c\t\u0014\u0002\u0002\u036c\u008c\u0003\u0002\u0002\u0002\u036d', - '\u036e\t\u0011\u0002\u0002\u036e\u036f\t\u0010\u0002\u0002\u036f\u0370', - '\t\u0014\u0002\u0002\u0370\u0371\t\u0010\u0002\u0002\u0371\u0372\t\u0019', - '\u0002\u0002\u0372\u0373\t\u0010\u0002\u0002\u0373\u0374\t\u000f\u0002', - '\u0002\u0374\u0375\t\u0007\u0002\u0002\u0375\u008e\u0003\u0002\u0002', - '\u0002\u0376\u0377\t\u0011\u0002\u0002\u0377\u0378\t\u0010\u0002\u0002', - '\u0378\u0379\t\u0014\u0002\u0002\u0379\u037a\t\u0010\u0002\u0002\u037a', - '\u037b\t\u000f\u0002\u0002\u037b\u037c\t\u0007\u0002\u0002\u037c\u037d', - '\t\u0014\u0002\u0002\u037d\u0090\u0003\u0002\u0002\u0002\u037e\u037f', - '\t\u0011\u0002\u0002\u037f\u0380\t\u0010\u0002\u0002\u0380\u0381\t\u0014', - '\u0002\u0002\u0381\u0382\t\u0010\u0002\u0002\u0382\u0383\t\u000f\u0002', - '\u0002\u0383\u0384\t\u0014\u0002\u0002\u0384\u0385\t\u001c\u0002\u0002', - '\u0385\u0386\t\u0015\u0002\u0002\u0386\u0387\t\u0007\u0002\u0002\u0387', - '\u0092\u0003\u0002\u0002\u0002\u0388\u0389\t\u0011\u0002\u0002\u0389', - '\u038a\t\u0007\u0002\u0002\u038a\u038b\t\u0018\u0002\u0002\u038b\u038c', - '\t\u0013\u0002\u0002\u038c\u038d\t\u0010\u0002\u0002\u038d\u038e\t\u0015', - '\u0002\u0002\u038e\u038f\t\u0007\u0002\u0002\u038f\u0094\u0003\u0002', - '\u0002\u0002\u0390\u0391\t\u0011\u0002\u0002\u0391\u0392\t\u0007\u0002', - '\u0002\u0392\u0393\t\u0018\u0002\u0002\u0393\u0394\t\u0015\u0002\u0002', - '\u0394\u0395\t\u0007\u0002\u0002\u0395\u0396\t\u000b\u0002\u0002\u0396', - '\u0397\t\u0007\u0002\u0002\u0397\u0398\t\r\u0002\u0002\u0398\u0399\t', - '\u0014\u0002\u0002\u0399\u0096\u0003\u0002\u0002\u0002\u039a\u039b\t', - '\u0011\u0002\u0002\u039b\u039c\t\u0007\u0002\u0002\u039c\u039d\t\u0013', - '\u0002\u0002\u039d\u039e\t\u0007\u0002\u0002\u039e\u039f\t\u0014\u0002', - '\u0002\u039f\u03a0\t\u0007\u0002\u0002\u03a0\u0098\u0003\u0002\u0002', - '\u0002\u03a1\u03a2\t\u0011\u0002\u0002\u03a2\u03a3\t\u0007\u0002\u0002', - '\u03a3\u03a4\t\u0015\u0002\u0002\u03a4\u03a5\t\f\u0002\u0002\u03a5\u03a6', - '\t\u0012\u0002\u0002\u03a6\u03a7\t\u0007\u0002\u0002\u03a7\u03a8\t\u0011', - '\u0002\u0002\u03a8\u009a\u0003\u0002\u0002\u0002\u03a9\u03aa\t\u0011', - '\u0002\u0002\u03aa\u03ab\t\u0007\u0002\u0002\u03ab\u03ac\t\u000f\u0002', - '\u0002\u03ac\u03ad\t\u0018\u0002\u0002\u03ad\u009c\u0003\u0002\u0002', - '\u0002\u03ae\u03af\t\u0011\u0002\u0002\u03af\u03b0\t\u0007\u0002\u0002', - '\u03b0\u03b1\t\u000f\u0002\u0002\u03b1\u03b2\t\u0018\u0002\u0002\u03b2', - '\u03b3\t\u0015\u0002\u0002\u03b3\u03b4\t\f\u0002\u0002\u03b4\u03b5\t', - '\u0019\u0002\u0002\u03b5\u03b6\t\u0007\u0002\u0002\u03b6\u009e\u0003', - '\u0002\u0002\u0002\u03b7\u03b8\t\u0011\u0002\u0002\u03b8\u03b9\t\f\u0002', - '\u0002\u03b9\u03ba\t\u000f\u0002\u0002\u03ba\u03bb\t\u0014\u0002\u0002', - '\u03bb\u03bc\t\f\u0002\u0002\u03bc\u03bd\t\r\u0002\u0002\u03bd\u03be', - '\t\u0018\u0002\u0002\u03be\u03bf\t\u0014\u0002\u0002\u03bf\u00a0\u0003', - '\u0002\u0002\u0002\u03c0\u03c1\t\u0011\u0002\u0002\u03c1\u03c2\t\u001c', - '\u0002\u0002\u03c2\u00a2\u0003\u0002\u0002\u0002\u03c3\u03c4\t\u0011', - '\u0002\u0002\u03c4\u03c5\t\u0015\u0002\u0002\u03c5\u03c6\t\u001c\u0002', - '\u0002\u03c6\u03c7\t\u001e\u0002\u0002\u03c7\u00a4\u0003\u0002\u0002', - '\u0002\u03c8\u03c9\t\u0007\u0002\u0002\u03c9\u03ca\t\u0010\u0002\u0002', - '\u03ca\u03cb\t\u0018\u0002\u0002\u03cb\u03cc\t\u001f\u0002\u0002\u03cc', - '\u00a6\u0003\u0002\u0002\u0002\u03cd\u03ce\t\u0007\u0002\u0002\u03ce', - '\u03cf\t\u0013\u0002\u0002\u03cf\u03d0\t\u0007\u0002\u0002\u03d0\u03d1', - '\t\u000b\u0002\u0002\u03d1\u03d2\t\u0007\u0002\u0002\u03d2\u03d3\t\r', - '\u0002\u0002\u03d3\u03d4\t\u0014\u0002\u0002\u03d4\u00a8\u0003\u0002', - '\u0002\u0002\u03d5\u03d6\t\u0007\u0002\u0002\u03d6\u03d7\t\u0013\u0002', - '\u0002\u03d7\u03d8\t\u000f\u0002\u0002\u03d8\u03d9\t\u0007\u0002\u0002', - '\u03d9\u00aa\u0003\u0002\u0002\u0002\u03da\u03db\t\u0007\u0002\u0002', - '\u03db\u03dc\t\r\u0002\u0002\u03dc\u03dd\t\u0011\u0002\u0002\u03dd\u00ac', - '\u0003\u0002\u0002\u0002\u03de\u03df\t\u0007\u0002\u0002\u03df\u03e0', - '\t\u0012\u0002\u0002\u03e0\u03e1\t\u0007\u0002\u0002\u03e1\u03e2\t\u0015', - '\u0002\u0002\u03e2\u03e3\t\u0016\u0002\u0002\u03e3\u00ae\u0003\u0002', - '\u0002\u0002\u03e4\u03e5\t\u0007\u0002\u0002\u03e5\u03e6\t \u0002\u0002', - '\u03e6\u03e7\t\u0018\u0002\u0002\u03e7\u03e8\t\u0007\u0002\u0002\u03e8', - '\u03e9\t\u001e\u0002\u0002\u03e9\u03ea\t\u0014\u0002\u0002\u03ea\u00b0', - '\u0003\u0002\u0002\u0002\u03eb\u03ec\t\u0007\u0002\u0002\u03ec\u03ed', - '\t \u0002\u0002\u03ed\u03ee\t\u0018\u0002\u0002\u03ee\u03ef\t\u0013', - '\u0002\u0002\u03ef\u03f0\t\u000e\u0002\u0002\u03f0\u03f1\t\u0011\u0002', - '\u0002\u03f1\u03f2\t\u0007\u0002\u0002\u03f2\u00b2\u0003\u0002\u0002', - '\u0002\u03f3\u03f4\t\u0007\u0002\u0002\u03f4\u03f5\t \u0002\u0002\u03f5', - '\u03f6\t\u0007\u0002\u0002\u03f6\u03f7\t\u0018\u0002\u0002\u03f7\u03f8', - '\t\u000e\u0002\u0002\u03f8\u03f9\t\u0014\u0002\u0002\u03f9\u03fa\t\u0007', - '\u0002\u0002\u03fa\u00b4\u0003\u0002\u0002\u0002\u03fb\u03fc\t\u0007', - '\u0002\u0002\u03fc\u03fd\t \u0002\u0002\u03fd\u03fe\t\f\u0002\u0002', - '\u03fe\u03ff\t\u000f\u0002\u0002\u03ff\u0400\t\u0014\u0002\u0002\u0400', - '\u0401\t\u000f\u0002\u0002\u0401\u00b6\u0003\u0002\u0002\u0002\u0402', - '\u0403\t\u0007\u0002\u0002\u0403\u0404\t \u0002\u0002\u0404\u0405\t', - '\u001e\u0002\u0002\u0405\u0406\t\u0013\u0002\u0002\u0406\u0407\t\u0010', - '\u0002\u0002\u0407\u0408\t\f\u0002\u0002\u0408\u0409\t\r\u0002\u0002', - '\u0409\u00b8\u0003\u0002\u0002\u0002\u040a\u040b\t!\u0002\u0002\u040b', - '\u040c\t\u0010\u0002\u0002\u040c\u040d\t\u0013\u0002\u0002\u040d\u040e', - '\t\u000f\u0002\u0002\u040e\u040f\t\u0007\u0002\u0002\u040f\u00ba\u0003', - '\u0002\u0002\u0002\u0410\u0411\t!\u0002\u0002\u0411\u0412\t\u0007\u0002', - '\u0002\u0412\u0413\t\u0014\u0002\u0002\u0413\u0414\t\u0018\u0002\u0002', - '\u0414\u0415\t\u001f\u0002\u0002\u0415\u00bc\u0003\u0002\u0002\u0002', - '\u0416\u0417\t!\u0002\u0002\u0417\u0418\t\f\u0002\u0002\u0418\u0419', - '\t\u0013\u0002\u0002\u0419\u041a\t\u0014\u0002\u0002\u041a\u041b\t\u0007', - '\u0002\u0002\u041b\u041c\t\u0015\u0002\u0002\u041c\u00be\u0003\u0002', - '\u0002\u0002\u041d\u041e\t!\u0002\u0002\u041e\u041f\t\f\u0002\u0002', - '\u041f\u0420\t\u0015\u0002\u0002\u0420\u0421\t\u000f\u0002\u0002\u0421', - '\u0422\t\u0014\u0002\u0002\u0422\u00c0\u0003\u0002\u0002\u0002\u0423', - '\u0424\t!\u0002\u0002\u0424\u0425\t\u0013\u0002\u0002\u0425\u0426\t', - '\u0010\u0002\u0002\u0426\u0427\t\u0014\u0002\u0002\u0427\u0428\t\u0014', - '\u0002\u0002\u0428\u0429\t\u0007\u0002\u0002\u0429\u042a\t\r\u0002\u0002', - '\u042a\u00c2\u0003\u0002\u0002\u0002\u042b\u042c\t!\u0002\u0002\u042c', - '\u042d\t\u0013\u0002\u0002\u042d\u042e\t\u000e\u0002\u0002\u042e\u042f', - '\t\u000f\u0002\u0002\u042f\u0430\t\u001f\u0002\u0002\u0430\u00c4\u0003', - '\u0002\u0002\u0002\u0431\u0432\t!\u0002\u0002\u0432\u0433\t\u001c\u0002', - '\u0002\u0433\u0434\t\u0013\u0002\u0002\u0434\u0435\t\u0013\u0002\u0002', - '\u0435\u0436\t\u001c\u0002\u0002\u0436\u0437\t\u001b\u0002\u0002\u0437', - '\u0438\t\f\u0002\u0002\u0438\u0439\t\r\u0002\u0002\u0439\u043a\t\u001a', - '\u0002\u0002\u043a\u00c6\u0003\u0002\u0002\u0002\u043b\u043c\t!\u0002', - '\u0002\u043c\u043d\t\u001c\u0002\u0002\u043d\u043e\t\u0015\u0002\u0002', - '\u043e\u00c8\u0003\u0002\u0002\u0002\u043f\u0440\t!\u0002\u0002\u0440', - '\u0441\t\u001c\u0002\u0002\u0441\u0442\t\u0015\u0002\u0002\u0442\u0443', - '\t\u0018\u0002\u0002\u0443\u0444\t\u0007\u0002\u0002\u0444\u00ca\u0003', - '\u0002\u0002\u0002\u0445\u0446\t!\u0002\u0002\u0446\u0447\t\u0015\u0002', - '\u0002\u0447\u0448\t\u001c\u0002\u0002\u0448\u0449\t\u000b\u0002\u0002', - '\u0449\u00cc\u0003\u0002\u0002\u0002\u044a\u044b\t!\u0002\u0002\u044b', - '\u044c\t\u0014\u0002\u0002\u044c\u044d\t\u000f\u0002\u0002\u044d\u00ce', - '\u0003\u0002\u0002\u0002\u044e\u044f\t!\u0002\u0002\u044f\u0450\t\u000e', - '\u0002\u0002\u0450\u0451\t\r\u0002\u0002\u0451\u0452\t\u0018\u0002\u0002', - '\u0452\u0453\t\u0014\u0002\u0002\u0453\u0454\t\f\u0002\u0002\u0454\u0455', - '\t\u001c\u0002\u0002\u0455\u0456\t\r\u0002\u0002\u0456\u00d0\u0003\u0002', - '\u0002\u0002\u0457\u0458\t\u001a\u0002\u0002\u0458\u0459\t\u001c\u0002', - '\u0002\u0459\u045a\t\u0013\u0002\u0002\u045a\u045b\t\u0010\u0002\u0002', - '\u045b\u045c\t\r\u0002\u0002\u045c\u045d\t\u001a\u0002\u0002\u045d\u00d2', - '\u0003\u0002\u0002\u0002\u045e\u045f\t\u001a\u0002\u0002\u045f\u0460', - '\t\u0015\u0002\u0002\u0460\u0461\t\u0010\u0002\u0002\u0461\u0462\t\r', - '\u0002\u0002\u0462\u0463\t\u0014\u0002\u0002\u0463\u00d4\u0003\u0002', - '\u0002\u0002\u0464\u0465\t\u001a\u0002\u0002\u0465\u0466\t\u0015\u0002', - '\u0002\u0466\u0467\t\u001c\u0002\u0002\u0467\u0468\t\u000e\u0002\u0002', - '\u0468\u0469\t\u001e\u0002\u0002\u0469\u00d6\u0003\u0002\u0002\u0002', - '\u046a\u046b\t\u001a\u0002\u0002\u046b\u046c\t\u0015\u0002\u0002\u046c', - '\u046d\t\u001c\u0002\u0002\u046d\u046e\t\u000e\u0002\u0002\u046e\u046f', - '\t\u001e\u0002\u0002\u046f\u0470\t\u000f\u0002\u0002\u0470\u00d8\u0003', - '\u0002\u0002\u0002\u0471\u0472\t\u001a\u0002\u0002\u0472\u0473\t\u000f', - '\u0002\u0002\u0473\u0474\t\f\u0002\u0002\u0474\u00da\u0003\u0002\u0002', - '\u0002\u0475\u0476\t\u001f\u0002\u0002\u0476\u0477\t\u0010\u0002\u0002', - '\u0477\u0478\t\u000f\u0002\u0002\u0478\u0479\t\u001f\u0002\u0002\u0479', - '\u00dc\u0003\u0002\u0002\u0002\u047a\u047b\t\u001f\u0002\u0002\u047b', - '\u047c\t\u0010\u0002\u0002\u047c\u047d\t\u0012\u0002\u0002\u047d\u047e', - '\t\f\u0002\u0002\u047e\u047f\t\r\u0002\u0002\u047f\u0480\t\u001a\u0002', - '\u0002\u0480\u00de\u0003\u0002\u0002\u0002\u0481\u0482\t\f\u0002\u0002', - '\u0482\u0483\t!\u0002\u0002\u0483\u00e0\u0003\u0002\u0002\u0002\u0484', - '\u0485\t\f\u0002\u0002\u0485\u0486\t\u001a\u0002\u0002\u0486\u0487\t', - '\r\u0002\u0002\u0487\u0488\t\u001c\u0002\u0002\u0488\u0489\t\u0015\u0002', - '\u0002\u0489\u048a\t\u0007\u0002\u0002\u048a\u00e2\u0003\u0002\u0002', - '\u0002\u048b\u048c\t\f\u0002\u0002\u048c\u048d\t\u0013\u0002\u0002\u048d', - '\u048e\t\f\u0002\u0002\u048e\u048f\t\u001d\u0002\u0002\u048f\u0490\t', - '\u0007\u0002\u0002\u0490\u00e4\u0003\u0002\u0002\u0002\u0491\u0492\t', - '\f\u0002\u0002\u0492\u0493\t\r\u0002\u0002\u0493\u00e6\u0003\u0002\u0002', - '\u0002\u0494\u0495\t\f\u0002\u0002\u0495\u0496\t\r\u0002\u0002\u0496', - '\u0497\t\u0018\u0002\u0002\u0497\u0498\t\u0013\u0002\u0002\u0498\u0499', - '\t\u000e\u0002\u0002\u0499\u049a\t\u0011\u0002\u0002\u049a\u049b\t\u0007', - '\u0002\u0002\u049b\u00e8\u0003\u0002\u0002\u0002\u049c\u049d\t\f\u0002', - '\u0002\u049d\u049e\t\r\u0002\u0002\u049e\u049f\t\u0018\u0002\u0002\u049f', - '\u04a0\t\u0015\u0002\u0002\u04a0\u04a1\t\u0007\u0002\u0002\u04a1\u04a2', - '\t\u000b\u0002\u0002\u04a2\u04a3\t\u0007\u0002\u0002\u04a3\u04a4\t\r', - '\u0002\u0002\u04a4\u04a5\t\u0014\u0002\u0002\u04a5\u00ea\u0003\u0002', - '\u0002\u0002\u04a6\u04a7\t\f\u0002\u0002\u04a7\u04a8\t\r\u0002\u0002', - '\u04a8\u04a9\t\u0011\u0002\u0002\u04a9\u04aa\t\u0007\u0002\u0002\u04aa', - '\u04ab\t \u0002\u0002\u04ab\u00ec\u0003\u0002\u0002\u0002\u04ac\u04ad', - '\t\f\u0002\u0002\u04ad\u04ae\t\r\u0002\u0002\u04ae\u04af\t!\u0002\u0002', - '\u04af\u04b0\t\u0007\u0002\u0002\u04b0\u04b1\t\u0015\u0002\u0002\u04b1', - '\u00ee\u0003\u0002\u0002\u0002\u04b2\u04b3\t\f\u0002\u0002\u04b3\u04b4', - '\t\r\u0002\u0002\u04b4\u04b5\t\u0013\u0002\u0002\u04b5\u04b6\t\f\u0002', - '\u0002\u04b6\u04b7\t\r\u0002\u0002\u04b7\u04b8\t\u0007\u0002\u0002\u04b8', - '\u00f0\u0003\u0002\u0002\u0002\u04b9\u04ba\t\f\u0002\u0002\u04ba\u04bb', - '\t\r\u0002\u0002\u04bb\u04bc\t\r\u0002\u0002\u04bc\u04bd\t\u0007\u0002', - '\u0002\u04bd\u04be\t\u0015\u0002\u0002\u04be\u00f2\u0003\u0002\u0002', - '\u0002\u04bf\u04c0\t\f\u0002\u0002\u04c0\u04c1\t\r\u0002\u0002\u04c1', - '\u04c2\t\u000f\u0002\u0002\u04c2\u04c3\t\u0007\u0002\u0002\u04c3\u04c4', - '\t\u0015\u0002\u0002\u04c4\u04c5\t\u0014\u0002\u0002\u04c5\u00f4\u0003', - '\u0002\u0002\u0002\u04c6\u04c7\t\f\u0002\u0002\u04c7\u04c8\t\r\u0002', - '\u0002\u04c8\u04c9\t\u0014\u0002\u0002\u04c9\u04ca\t\u0007\u0002\u0002', - '\u04ca\u04cb\t\u0015\u0002\u0002\u04cb\u04cc\t\u000f\u0002\u0002\u04cc', - '\u04cd\t\u0007\u0002\u0002\u04cd\u04ce\t\u0018\u0002\u0002\u04ce\u04cf', - '\t\u0014\u0002\u0002\u04cf\u00f6\u0003\u0002\u0002\u0002\u04d0\u04d1', - '\t\f\u0002\u0002\u04d1\u04d2\t\r\u0002\u0002\u04d2\u04d3\t\u0014\u0002', - '\u0002\u04d3\u04d4\t\u001c\u0002\u0002\u04d4\u00f8\u0003\u0002\u0002', - '\u0002\u04d5\u04d6\t\f\u0002\u0002\u04d6\u04d7\t\u000f\u0002\u0002\u04d7', - '\u00fa\u0003\u0002\u0002\u0002\u04d8\u04d9\t\f\u0002\u0002\u04d9\u04da', - '\t\u000f\u0002\u0002\u04da\u04db\t\u001c\u0002\u0002\u04db\u04dc\t\u0013', - '\u0002\u0002\u04dc\u04dd\t\u0010\u0002\u0002\u04dd\u04de\t\u0014\u0002', - '\u0002\u04de\u04df\t\f\u0002\u0002\u04df\u04e0\t\u001c\u0002\u0002\u04e0', - '\u04e1\t\r\u0002\u0002\u04e1\u00fc\u0003\u0002\u0002\u0002\u04e2\u04e3', - '\t"\u0002\u0002\u04e3\u04e4\t\u0010\u0002\u0002\u04e4\u04e5\t\u0012', - '\u0002\u0002\u04e5\u04e6\t\u0010\u0002\u0002\u04e6\u04e7\t\u000f\u0002', - '\u0002\u04e7\u04e8\t\u0018\u0002\u0002\u04e8\u04e9\t\u0015\u0002\u0002', - '\u04e9\u04ea\t\f\u0002\u0002\u04ea\u04eb\t\u001e\u0002\u0002\u04eb\u04ec', - '\t\u0014\u0002\u0002\u04ec\u00fe\u0003\u0002\u0002\u0002\u04ed\u04ee', - '\t"\u0002\u0002\u04ee\u04ef\t\u001c\u0002\u0002\u04ef\u04f0\t\f\u0002', - '\u0002\u04f0\u04f1\t\r\u0002\u0002\u04f1\u0100\u0003\u0002\u0002\u0002', - '\u04f2\u04f3\t\u001d\u0002\u0002\u04f3\u04f4\t\u0007\u0002\u0002\u04f4', - '\u04f5\t\u0016\u0002\u0002\u04f5\u0102\u0003\u0002\u0002\u0002\u04f6', - '\u04f7\t\u001d\u0002\u0002\u04f7\u04f8\t\u0007\u0002\u0002\u04f8\u04f9', - '\t\u0016\u0002\u0002\u04f9\u04fa\t\u000f\u0002\u0002\u04fa\u0104\u0003', - '\u0002\u0002\u0002\u04fb\u04fc\t\u001d\u0002\u0002\u04fc\u04fd\t\u0007', - '\u0002\u0002\u04fd\u04fe\t\u0016\u0002\u0002\u04fe\u04ff\t\u000f\u0002', - '\u0002\u04ff\u0500\t\u001e\u0002\u0002\u0500\u0501\t\u0010\u0002\u0002', - '\u0501\u0502\t\u0018\u0002\u0002\u0502\u0503\t\u0007\u0002\u0002\u0503', - '\u0106\u0003\u0002\u0002\u0002\u0504\u0505\t\u001d\u0002\u0002\u0505', - '\u0506\t\r\u0002\u0002\u0506\u0507\t\u001c\u0002\u0002\u0507\u0508\t', - '\u001b\u0002\u0002\u0508\u0509\t\r\u0002\u0002\u0509\u0108\u0003\u0002', - '\u0002\u0002\u050a\u050b\t\u0013\u0002\u0002\u050b\u050c\t\u0010\u0002', - '\u0002\u050c\u050d\t\r\u0002\u0002\u050d\u050e\t\u001a\u0002\u0002\u050e', - '\u050f\t\u000e\u0002\u0002\u050f\u0510\t\u0010\u0002\u0002\u0510\u0511', - '\t\u001a\u0002\u0002\u0511\u0512\t\u0007\u0002\u0002\u0512\u010a\u0003', - '\u0002\u0002\u0002\u0513\u0514\t\u0013\u0002\u0002\u0514\u0515\t\u0010', - '\u0002\u0002\u0515\u0516\t\u000f\u0002\u0002\u0516\u0517\t\u0014\u0002', - '\u0002\u0517\u010c\u0003\u0002\u0002\u0002\u0518\u0519\t\u0013\u0002', - '\u0002\u0519\u051a\t\u0007\u0002\u0002\u051a\u051b\t!\u0002\u0002\u051b', - '\u051c\t\u0014\u0002\u0002\u051c\u010e\u0003\u0002\u0002\u0002\u051d', - '\u051e\t\u0013\u0002\u0002\u051e\u051f\t\u0007\u0002\u0002\u051f\u0520', - '\t\u0014\u0002\u0002\u0520\u0110\u0003\u0002\u0002\u0002\u0521\u0522', - '\t\u0013\u0002\u0002\u0522\u0523\t\u0007\u0002\u0002\u0523\u0524\t\u0014', - '\u0002\u0002\u0524\u0525\t\u0014\u0002\u0002\u0525\u0526\t\f\u0002\u0002', - '\u0526\u0527\t\r\u0002\u0002\u0527\u0528\t\u001a\u0002\u0002\u0528\u0112', - '\u0003\u0002\u0002\u0002\u0529\u052a\t\u0013\u0002\u0002\u052a\u052b', - '\t\u0007\u0002\u0002\u052b\u052c\t\u0012\u0002\u0002\u052c\u052d\t\u0007', - '\u0002\u0002\u052d\u052e\t\u0013\u0002\u0002\u052e\u0114\u0003\u0002', - '\u0002\u0002\u052f\u0530\t\u0013\u0002\u0002\u0530\u0531\t\f\u0002\u0002', - '\u0531\u0532\t\u001d\u0002\u0002\u0532\u0533\t\u0007\u0002\u0002\u0533', - '\u0116\u0003\u0002\u0002\u0002\u0534\u0535\t\u0013\u0002\u0002\u0535', - '\u0536\t\f\u0002\u0002\u0536\u0537\t\u000b\u0002\u0002\u0537\u0538\t', - '\f\u0002\u0002\u0538\u0539\t\u0014\u0002\u0002\u0539\u0118\u0003\u0002', - '\u0002\u0002\u053a\u053b\t\u0013\u0002\u0002\u053b\u053c\t\u000f\u0002', - '\u0002\u053c\u053d\t\u000b\u0002\u0002\u053d\u011a\u0003\u0002\u0002', - '\u0002\u053e\u053f\t\u000b\u0002\u0002\u053f\u0540\t\u0010\u0002\u0002', - '\u0540\u0541\t\u001e\u0002\u0002\u0541\u011c\u0003\u0002\u0002\u0002', - '\u0542\u0543\t\u000b\u0002\u0002\u0543\u0544\t\u0010\u0002\u0002\u0544', - '\u0545\t\u001e\u0002\u0002\u0545\u0546\t\u001e\u0002\u0002\u0546\u0547', - '\t\f\u0002\u0002\u0547\u0548\t\r\u0002\u0002\u0548\u0549\t\u001a\u0002', - '\u0002\u0549\u011e\u0003\u0002\u0002\u0002\u054a\u054b\t\u000b\u0002', - '\u0002\u054b\u054c\t\u0010\u0002\u0002\u054c\u054d\t\u0014\u0002\u0002', - '\u054d\u054e\t\u0018\u0002\u0002\u054e\u054f\t\u001f\u0002\u0002\u054f', - '\u0550\t\u0007\u0002\u0002\u0550\u0551\t\u0011\u0002\u0002\u0551\u0120', - '\u0003\u0002\u0002\u0002\u0552\u0553\t\u000b\u0002\u0002\u0553\u0554', - '\t\u0010\u0002\u0002\u0554\u0555\t\u0014\u0002\u0002\u0555\u0556\t\u0007', - '\u0002\u0002\u0556\u0557\t\u0015\u0002\u0002\u0557\u0558\t\f\u0002\u0002', - '\u0558\u0559\t\u0010\u0002\u0002\u0559\u055a\t\u0013\u0002\u0002\u055a', - '\u055b\t\f\u0002\u0002\u055b\u055c\t\u0017\u0002\u0002\u055c\u055d\t', - '\u0007\u0002\u0002\u055d\u055e\t\u0011\u0002\u0002\u055e\u0122\u0003', - '\u0002\u0002\u0002\u055f\u0560\t\u000b\u0002\u0002\u0560\u0561\t\u0007', - '\u0002\u0002\u0561\u0562\t\u0015\u0002\u0002\u0562\u0563\t\u001a\u0002', - '\u0002\u0563\u0564\t\u0007\u0002\u0002\u0564\u0124\u0003\u0002\u0002', - '\u0002\u0565\u0566\t\u000b\u0002\u0002\u0566\u0567\t\f\u0002\u0002\u0567', - '\u0568\t\u000f\u0002\u0002\u0568\u0569\t\u000f\u0002\u0002\u0569\u056a', - '\t\f\u0002\u0002\u056a\u056b\t\r\u0002\u0002\u056b\u056c\t\u001a\u0002', - '\u0002\u056c\u0126\u0003\u0002\u0002\u0002\u056d\u056e\t\r\u0002\u0002', - '\u056e\u056f\t\u0010\u0002\u0002\u056f\u0570\t\u000b\u0002\u0002\u0570', - '\u0571\t\u0007\u0002\u0002\u0571\u0572\t\u000f\u0002\u0002\u0572\u0573', - '\t\u001e\u0002\u0002\u0573\u0574\t\u0010\u0002\u0002\u0574\u0575\t\u0018', - '\u0002\u0002\u0575\u0576\t\u0007\u0002\u0002\u0576\u0128\u0003\u0002', - '\u0002\u0002\u0577\u0578\t\r\u0002\u0002\u0578\u0579\t\u0007\u0002\u0002', - '\u0579\u057a\t\u000f\u0002\u0002\u057a\u057b\t\u0014\u0002\u0002\u057b', - '\u012a\u0003\u0002\u0002\u0002\u057c\u057d\t\r\u0002\u0002\u057d\u057e', - '\t\u0013\u0002\u0002\u057e\u012c\u0003\u0002\u0002\u0002\u057f\u0580', - '\t\r\u0002\u0002\u0580\u0581\t\u001c\u0002\u0002\u0581\u012e\u0003\u0002', - '\u0002\u0002\u0582\u0583\t\r\u0002\u0002\u0583\u0584\t\u001c\u0002\u0002', - '\u0584\u0585\t\u0014\u0002\u0002\u0585\u0130\u0003\u0002\u0002\u0002', - '\u0586\u0587\t\r\u0002\u0002\u0587\u0588\t\u0014\u0002\u0002\u0588\u0589', - '\t\u001f\u0002\u0002\u0589\u058a\t#\u0002\u0002\u058a\u058b\t\u0012', - '\u0002\u0002\u058b\u058c\t\u0010\u0002\u0002\u058c\u058d\t\u0013\u0002', - '\u0002\u058d\u058e\t\u000e\u0002\u0002\u058e\u058f\t\u0007\u0002\u0002', - '\u058f\u0132\u0003\u0002\u0002\u0002\u0590\u0591\t\r\u0002\u0002\u0591', - '\u0592\t\u000e\u0002\u0002\u0592\u0593\t\u0013\u0002\u0002\u0593\u0594', - '\t\u0013\u0002\u0002\u0594\u0134\u0003\u0002\u0002\u0002\u0595\u0596', - '\t\r\u0002\u0002\u0596\u0597\t\u000e\u0002\u0002\u0597\u0598\t\u0013', - '\u0002\u0002\u0598\u0599\t\u0013\u0002\u0002\u0599\u059a\t\u000f\u0002', - '\u0002\u059a\u0136\u0003\u0002\u0002\u0002\u059b\u059c\t\r\u0002\u0002', - '\u059c\u059d\t$\u0002\u0002\u059d\u059e\t\u000b\u0002\u0002\u059e\u059f', - '\t\u0019\u0002\u0002\u059f\u05a0\t\u0007\u0002\u0002\u05a0\u05a1\t\u0015', - '\u0002\u0002\u05a1\u0138\u0003\u0002\u0002\u0002\u05a2\u05a3\t\u001c', - '\u0002\u0002\u05a3\u05a4\t\u0019\u0002\u0002\u05a4\u05a5\t"\u0002\u0002', - '\u05a5\u05a6\t\u0007\u0002\u0002\u05a6\u05a7\t\u0018\u0002\u0002\u05a7', - '\u05a8\t\u0014\u0002\u0002\u05a8\u013a\u0003\u0002\u0002\u0002\u05a9', - '\u05aa\t\u001c\u0002\u0002\u05aa\u05ab\t!\u0002\u0002\u05ab\u05ac\t', - '!\u0002\u0002\u05ac\u05ad\t\u000f\u0002\u0002\u05ad\u05ae\t\u0007\u0002', - '\u0002\u05ae\u05af\t\u0014\u0002\u0002\u05af\u013c\u0003\u0002\u0002', - '\u0002\u05b0\u05b1\t\u001c\u0002\u0002\u05b1\u05b2\t\r\u0002\u0002\u05b2', - '\u013e\u0003\u0002\u0002\u0002\u05b3\u05b4\t\u001c\u0002\u0002\u05b4', - '\u05b5\t\u001e\u0002\u0002\u05b5\u05b6\t\u0014\u0002\u0002\u05b6\u05b7', - '\t\f\u0002\u0002\u05b7\u05b8\t\u001c\u0002\u0002\u05b8\u05b9\t\r\u0002', - '\u0002\u05b9\u0140\u0003\u0002\u0002\u0002\u05ba\u05bb\t\u001c\u0002', - '\u0002\u05bb\u05bc\t\u001e\u0002\u0002\u05bc\u05bd\t\u0014\u0002\u0002', - '\u05bd\u05be\t\f\u0002\u0002\u05be\u05bf\t\u001c\u0002\u0002\u05bf\u05c0', - '\t\r\u0002\u0002\u05c0\u05c1\t\u000f\u0002\u0002\u05c1\u0142\u0003\u0002', - '\u0002\u0002\u05c2\u05c3\t\u001c\u0002\u0002\u05c3\u05c4\t\u0015\u0002', - '\u0002\u05c4\u0144\u0003\u0002\u0002\u0002\u05c5\u05c6\t\u001c\u0002', - '\u0002\u05c6\u05c7\t\u0015\u0002\u0002\u05c7\u05c8\t\u0011\u0002\u0002', - '\u05c8\u05c9\t\u0007\u0002\u0002\u05c9\u05ca\t\u0015\u0002\u0002\u05ca', - '\u0146\u0003\u0002\u0002\u0002\u05cb\u05cc\t\u001c\u0002\u0002\u05cc', - '\u05cd\t\u0014\u0002\u0002\u05cd\u05ce\t\u001f\u0002\u0002\u05ce\u05cf', - '\t\u0007\u0002\u0002\u05cf\u05d0\t\u0015\u0002\u0002\u05d0\u05d1\t\u000f', - '\u0002\u0002\u05d1\u0148\u0003\u0002\u0002\u0002\u05d2\u05d3\t\u001c', - '\u0002\u0002\u05d3\u05d4\t\u000e\u0002\u0002\u05d4\u05d5\t\u0014\u0002', - '\u0002\u05d5\u05d6\t\u0007\u0002\u0002\u05d6\u05d7\t\u0015\u0002\u0002', - '\u05d7\u014a\u0003\u0002\u0002\u0002\u05d8\u05d9\t\u001c\u0002\u0002', - '\u05d9\u05da\t\u0012\u0002\u0002\u05da\u05db\t\u0007\u0002\u0002\u05db', - '\u05dc\t\u0015\u0002\u0002\u05dc\u014c\u0003\u0002\u0002\u0002\u05dd', - '\u05de\t\u001e\u0002\u0002\u05de\u05df\t\u0010\u0002\u0002\u05df\u05e0', - '\t\u0015\u0002\u0002\u05e0\u05e1\t\u000f\u0002\u0002\u05e1\u05e2\t\u0007', - '\u0002\u0002\u05e2\u014e\u0003\u0002\u0002\u0002\u05e3\u05e4\t\u001e', - '\u0002\u0002\u05e4\u05e5\t\u0010\u0002\u0002\u05e5\u05e6\t\u0015\u0002', - '\u0002\u05e6\u05e7\t\u0014\u0002\u0002\u05e7\u05e8\t\f\u0002\u0002\u05e8', - '\u05e9\t\u0014\u0002\u0002\u05e9\u05ea\t\f\u0002\u0002\u05ea\u05eb\t', - '\u001c\u0002\u0002\u05eb\u05ec\t\r\u0002\u0002\u05ec\u0150\u0003\u0002', - '\u0002\u0002\u05ed\u05ee\t\u001e\u0002\u0002\u05ee\u05ef\t\u0010\u0002', - '\u0002\u05ef\u05f0\t\u000f\u0002\u0002\u05f0\u05f1\t\u000f\u0002\u0002', - '\u05f1\u05f2\t\u001b\u0002\u0002\u05f2\u05f3\t\u001c\u0002\u0002\u05f3', - '\u05f4\t\u0015\u0002\u0002\u05f4\u05f5\t\u0011\u0002\u0002\u05f5\u0152', - '\u0003\u0002\u0002\u0002\u05f6\u05f7\t\u001e\u0002\u0002\u05f7\u05f8', - '\t\u0010\u0002\u0002\u05f8\u05f9\t\u0014\u0002\u0002\u05f9\u05fa\t\u001f', - '\u0002\u0002\u05fa\u0154\u0003\u0002\u0002\u0002\u05fb\u05fc\t\u001e', - '\u0002\u0002\u05fc\u05fd\t\u001c\u0002\u0002\u05fd\u05fe\t\u001c\u0002', - '\u0002\u05fe\u05ff\t\u0013\u0002\u0002\u05ff\u0156\u0003\u0002\u0002', - '\u0002\u0600\u0601\t\u001e\u0002\u0002\u0601\u0602\t\u0015\u0002\u0002', - '\u0602\u0603\t\u0007\u0002\u0002\u0603\u0604\t\u0018\u0002\u0002\u0604', - '\u0605\t\u0007\u0002\u0002\u0605\u0606\t\u0011\u0002\u0002\u0606\u0607', - '\t\f\u0002\u0002\u0607\u0608\t\r\u0002\u0002\u0608\u0609\t\u001a\u0002', - '\u0002\u0609\u0158\u0003\u0002\u0002\u0002\u060a\u060b\t\u001e\u0002', - '\u0002\u060b\u060c\t\u0015\u0002\u0002\u060c\u060d\t\u0007\u0002\u0002', - '\u060d\u060e\t\u001e\u0002\u0002\u060e\u060f\t\u0010\u0002\u0002\u060f', - '\u0610\t\u0015\u0002\u0002\u0610\u0611\t\u0007\u0002\u0002\u0611\u015a', - '\u0003\u0002\u0002\u0002\u0612\u0613\t\u001e\u0002\u0002\u0613\u0614', - '\t\u0015\u0002\u0002\u0614\u0615\t\f\u0002\u0002\u0615\u0616\t\u000b', - '\u0002\u0002\u0616\u0617\t\u0010\u0002\u0002\u0617\u0618\t\u0015\u0002', - '\u0002\u0618\u0619\t\u0016\u0002\u0002\u0619\u015c\u0003\u0002\u0002', - '\u0002\u061a\u061b\t\u001e\u0002\u0002\u061b\u061c\t\u0015\u0002\u0002', - '\u061c\u061d\t\f\u0002\u0002\u061d\u061e\t\u0012\u0002\u0002\u061e\u061f', - '\t\u0010\u0002\u0002\u061f\u0620\t\u0014\u0002\u0002\u0620\u0621\t\u0007', - '\u0002\u0002\u0621\u015e\u0003\u0002\u0002\u0002\u0622\u0623\t\u001e', - '\u0002\u0002\u0623\u0624\t\u0015\u0002\u0002\u0624\u0625\t\f\u0002\u0002', - '\u0625\u0626\t\u0012\u0002\u0002\u0626\u0627\t\f\u0002\u0002\u0627\u0628', - '\t\u0013\u0002\u0002\u0628\u0629\t\u0007\u0002\u0002\u0629\u062a\t\u001a', - '\u0002\u0002\u062a\u062b\t\u0007\u0002\u0002\u062b\u0160\u0003\u0002', - '\u0002\u0002\u062c\u062d\t\u001e\u0002\u0002\u062d\u062e\t\u0015\u0002', - '\u0002\u062e\u062f\t\u001c\u0002\u0002\u062f\u0630\t\u0018\u0002\u0002', - '\u0630\u0631\t\u0007\u0002\u0002\u0631\u0632\t\u0011\u0002\u0002\u0632', - '\u0633\t\u000e\u0002\u0002\u0633\u0634\t\u0015\u0002\u0002\u0634\u0635', - '\t\u0007\u0002\u0002\u0635\u0162\u0003\u0002\u0002\u0002\u0636\u0637', - '\t\u001e\u0002\u0002\u0637\u0638\t\u0015\u0002\u0002\u0638\u0639\t\u001c', - '\u0002\u0002\u0639\u063a\t\u0019\u0002\u0002\u063a\u063b\t\u0007\u0002', - '\u0002\u063b\u0164\u0003\u0002\u0002\u0002\u063c\u063d\t\u001e\u0002', - '\u0002\u063d\u063e\t\u000e\u0002\u0002\u063e\u063f\t\u0019\u0002\u0002', - '\u063f\u0640\t\u0013\u0002\u0002\u0640\u0641\t\f\u0002\u0002\u0641\u0642', - '\t\u0018\u0002\u0002\u0642\u0166\u0003\u0002\u0002\u0002\u0643\u0644', - '\t\u0015\u0002\u0002\u0644\u0645\t\u0010\u0002\u0002\u0645\u0646\t\r', - '\u0002\u0002\u0646\u0647\t\u001a\u0002\u0002\u0647\u0648\t\u0007\u0002', - '\u0002\u0648\u0168\u0003\u0002\u0002\u0002\u0649\u064a\t\u0015\u0002', - '\u0002\u064a\u064b\t\u0010\u0002\u0002\u064b\u064c\t\u001b\u0002\u0002', - '\u064c\u016a\u0003\u0002\u0002\u0002\u064d\u064e\t\u0015\u0002\u0002', - '\u064e\u064f\t\u0007\u0002\u0002\u064f\u0650\t\u0010\u0002\u0002\u0650', - '\u0651\t\u0011\u0002\u0002\u0651\u016c\u0003\u0002\u0002\u0002\u0652', - '\u0653\t\u0015\u0002\u0002\u0653\u0654\t\u0007\u0002\u0002\u0654\u0655', - '\t\u0010\u0002\u0002\u0655\u0656\t\u0013\u0002\u0002\u0656\u0657\t\u000b', - '\u0002\u0002\u0657\u016e\u0003\u0002\u0002\u0002\u0658\u0659\t\u0015', - '\u0002\u0002\u0659\u065a\t\u0007\u0002\u0002\u065a\u065b\t\u0011\u0002', - '\u0002\u065b\u065c\t\u000e\u0002\u0002\u065c\u065d\t\u0018\u0002\u0002', - '\u065d\u065e\t\u0007\u0002\u0002\u065e\u0170\u0003\u0002\u0002\u0002', - '\u065f\u0660\t\u0015\u0002\u0002\u0660\u0661\t\u0007\u0002\u0002\u0661', - '\u0662\t\r\u0002\u0002\u0662\u0663\t\u0010\u0002\u0002\u0663\u0664\t', - '\u000b\u0002\u0002\u0664\u0665\t\u0007\u0002\u0002\u0665\u0172\u0003', - '\u0002\u0002\u0002\u0666\u0667\t\u0015\u0002\u0002\u0667\u0668\t\u0007', - '\u0002\u0002\u0668\u0669\t\u001e\u0002\u0002\u0669\u066a\t\u0013\u0002', - '\u0002\u066a\u066b\t\u0010\u0002\u0002\u066b\u066c\t\u0018\u0002\u0002', - '\u066c\u066d\t\u0007\u0002\u0002\u066d\u0174\u0003\u0002\u0002\u0002', - '\u066e\u066f\t\u0015\u0002\u0002\u066f\u0670\t\u0007\u0002\u0002\u0670', - '\u0671\t\u000f\u0002\u0002\u0671\u0672\t\u001e\u0002\u0002\u0672\u0673', - '\t\u0007\u0002\u0002\u0673\u0674\t\u0018\u0002\u0002\u0674\u0675\t\u0014', - '\u0002\u0002\u0675\u0176\u0003\u0002\u0002\u0002\u0676\u0677\t\u0015', - '\u0002\u0002\u0677\u0678\t\u0007\u0002\u0002\u0678\u0679\t\u0014\u0002', - '\u0002\u0679\u067a\t\u000e\u0002\u0002\u067a\u067b\t\u0015\u0002\u0002', - '\u067b\u067c\t\r\u0002\u0002\u067c\u0178\u0003\u0002\u0002\u0002\u067d', - '\u067e\t\u0015\u0002\u0002\u067e\u067f\t\u0007\u0002\u0002\u067f\u0680', - '\t\u0014\u0002\u0002\u0680\u0681\t\u000e\u0002\u0002\u0681\u0682\t\u0015', - '\u0002\u0002\u0682\u0683\t\r\u0002\u0002\u0683\u0684\t\f\u0002\u0002', - '\u0684\u0685\t\r\u0002\u0002\u0685\u0686\t\u001a\u0002\u0002\u0686\u017a', - '\u0003\u0002\u0002\u0002\u0687\u0688\t\u0015\u0002\u0002\u0688\u0689', - '\t\u0007\u0002\u0002\u0689\u068a\t\u0012\u0002\u0002\u068a\u068b\t\u001c', - '\u0002\u0002\u068b\u068c\t\u001d\u0002\u0002\u068c\u068d\t\u0007\u0002', - '\u0002\u068d\u017c\u0003\u0002\u0002\u0002\u068e\u068f\t\u0015\u0002', - '\u0002\u068f\u0690\t\f\u0002\u0002\u0690\u0691\t\u001a\u0002\u0002\u0691', - '\u0692\t\u001f\u0002\u0002\u0692\u0693\t\u0014\u0002\u0002\u0693\u017e', - '\u0003\u0002\u0002\u0002\u0694\u0695\t\u0015\u0002\u0002\u0695\u0696', - '\t\u001c\u0002\u0002\u0696\u0697\t\u0013\u0002\u0002\u0697\u0698\t\u0007', - '\u0002\u0002\u0698\u0180\u0003\u0002\u0002\u0002\u0699\u069a\t\u0015', - '\u0002\u0002\u069a\u069b\t\u001c\u0002\u0002\u069b\u069c\t\u0013\u0002', - '\u0002\u069c\u069d\t\u0013\u0002\u0002\u069d\u069e\t\u0019\u0002\u0002', - '\u069e\u069f\t\u0010\u0002\u0002\u069f\u06a0\t\u0018\u0002\u0002\u06a0', - '\u06a1\t\u001d\u0002\u0002\u06a1\u0182\u0003\u0002\u0002\u0002\u06a2', - '\u06a3\t\u0015\u0002\u0002\u06a3\u06a4\t\u001c\u0002\u0002\u06a4\u06a5', - '\t\u001b\u0002\u0002\u06a5\u0184\u0003\u0002\u0002\u0002\u06a6\u06a7', - '\t\u0015\u0002\u0002\u06a7\u06a8\t\u001c\u0002\u0002\u06a8\u06a9\t\u001b', - '\u0002\u0002\u06a9\u06aa\t\u000f\u0002\u0002\u06aa\u0186\u0003\u0002', - '\u0002\u0002\u06ab\u06ac\t\u000f\u0002\u0002\u06ac\u06ad\t\u0010\u0002', - '\u0002\u06ad\u06ae\t\u0014\u0002\u0002\u06ae\u06af\t\f\u0002\u0002\u06af', - '\u06b0\t\u000f\u0002\u0002\u06b0\u06b1\t!\u0002\u0002\u06b1\u06b2\t', - '\f\u0002\u0002\u06b2\u06b3\t\u0007\u0002\u0002\u06b3\u06b4\t\u000f\u0002', - '\u0002\u06b4\u0188\u0003\u0002\u0002\u0002\u06b5\u06b6\t\u000f\u0002', - '\u0002\u06b6\u06b7\t\u0010\u0002\u0002\u06b7\u06b8\t\u0012\u0002\u0002', - '\u06b8\u06b9\t\u0007\u0002\u0002\u06b9\u06ba\t\u001e\u0002\u0002\u06ba', - '\u06bb\t\u001c\u0002\u0002\u06bb\u06bc\t\f\u0002\u0002\u06bc\u06bd\t', - '\r\u0002\u0002\u06bd\u06be\t\u0014\u0002\u0002\u06be\u018a\u0003\u0002', - '\u0002\u0002\u06bf\u06c0\t\u000f\u0002\u0002\u06c0\u06c1\t\u0018\u0002', - '\u0002\u06c1\u06c2\t\u001f\u0002\u0002\u06c2\u06c3\t\u0007\u0002\u0002', - '\u06c3\u06c4\t\u000b\u0002\u0002\u06c4\u06c5\t\u0010\u0002\u0002\u06c5', - '\u018c\u0003\u0002\u0002\u0002\u06c6\u06c7\t\u000f\u0002\u0002\u06c7', - '\u06c8\t\u0018\u0002\u0002\u06c8\u06c9\t\u001c\u0002\u0002\u06c9\u06ca', - '\t\u001e\u0002\u0002\u06ca\u06cb\t\u0007\u0002\u0002\u06cb\u018e\u0003', - '\u0002\u0002\u0002\u06cc\u06cd\t\u000f\u0002\u0002\u06cd\u06ce\t\u0007', - '\u0002\u0002\u06ce\u06cf\t\u0013\u0002\u0002\u06cf\u06d0\t\u0007\u0002', - '\u0002\u06d0\u06d1\t\u0018\u0002\u0002\u06d1\u06d2\t\u0014\u0002\u0002', - '\u06d2\u0190\u0003\u0002\u0002\u0002\u06d3\u06d4\t\u000f\u0002\u0002', - '\u06d4\u06d5\t\u0007\u0002\u0002\u06d5\u06d6\t\u0013\u0002\u0002\u06d6', - '\u06d7\t!\u0002\u0002\u06d7\u0192\u0003\u0002\u0002\u0002\u06d8\u06d9', - '\t\u000f\u0002\u0002\u06d9\u06da\t\u0007\u0002\u0002\u06da\u06db\t\u0014', - '\u0002\u0002\u06db\u0194\u0003\u0002\u0002\u0002\u06dc\u06dd\t\u000f', - '\u0002\u0002\u06dd\u06de\t\u001f\u0002\u0002\u06de\u06df\t\u001c\u0002', - '\u0002\u06df\u06e0\t\u001b\u0002\u0002\u06e0\u0196\u0003\u0002\u0002', - '\u0002\u06e1\u06e2\t\u000f\u0002\u0002\u06e2\u06e3\t\u001c\u0002\u0002', - '\u06e3\u06e4\t\u000b\u0002\u0002\u06e4\u06e5\t\u0007\u0002\u0002\u06e5', - '\u0198\u0003\u0002\u0002\u0002\u06e6\u06e7\t\u000f\u0002\u0002\u06e7', - '\u06e8\t\u0014\u0002\u0002\u06e8\u06e9\t\u0010\u0002\u0002\u06e9\u06ea', - '\t\u0015\u0002\u0002\u06ea\u06eb\t\u0014\u0002\u0002\u06eb\u019a\u0003', - '\u0002\u0002\u0002\u06ec\u06ed\t\u000f\u0002\u0002\u06ed\u06ee\t\u0014', - '\u0002\u0002\u06ee\u06ef\t\u0010\u0002\u0002\u06ef\u06f0\t\u0014\u0002', - '\u0002\u06f0\u06f1\t\f\u0002\u0002\u06f1\u06f2\t\u000f\u0002\u0002\u06f2', - '\u06f3\t\u0014\u0002\u0002\u06f3\u06f4\t\f\u0002\u0002\u06f4\u06f5\t', - '\u0018\u0002\u0002\u06f5\u06f6\t\u000f\u0002\u0002\u06f6\u019c\u0003', - '\u0002\u0002\u0002\u06f7\u06f8\t\u000f\u0002\u0002\u06f8\u06f9\t\u0014', - '\u0002\u0002\u06f9\u06fa\t\u0015\u0002\u0002\u06fa\u06fb\t\f\u0002\u0002', - '\u06fb\u06fc\t\r\u0002\u0002\u06fc\u06fd\t\u001a\u0002\u0002\u06fd\u019e', - '\u0003\u0002\u0002\u0002\u06fe\u06ff\t\u000f\u0002\u0002\u06ff\u0700', - '\t\u0016\u0002\u0002\u0700\u0701\t\u000f\u0002\u0002\u0701\u0702\t\u0014', - '\u0002\u0002\u0702\u0703\t\u0007\u0002\u0002\u0703\u0704\t\u000b\u0002', - '\u0002\u0704\u01a0\u0003\u0002\u0002\u0002\u0705\u0706\t\u0014\u0002', - '\u0002\u0706\u0707\t\u001f\u0002\u0002\u0707\u0708\t\u0007\u0002\u0002', - '\u0708\u0709\t\r\u0002\u0002\u0709\u01a2\u0003\u0002\u0002\u0002\u070a', - '\u070b\t\u0014\u0002\u0002\u070b\u070c\t\f\u0002\u0002\u070c\u070d\t', - '\u0007\u0002\u0002\u070d\u070e\t\u000f\u0002\u0002\u070e\u01a4\u0003', - '\u0002\u0002\u0002\u070f\u0710\t\u0014\u0002\u0002\u0710\u0711\t\u001c', - '\u0002\u0002\u0711\u01a6\u0003\u0002\u0002\u0002\u0712\u0713\t\u0014', - '\u0002\u0002\u0713\u0714\t\u0015\u0002\u0002\u0714\u0715\t\u0010\u0002', - '\u0002\u0715\u0716\t\r\u0002\u0002\u0716\u01a8\u0003\u0002\u0002\u0002', - '\u0717\u0718\t\u0014\u0002\u0002\u0718\u0719\t\u0015\u0002\u0002\u0719', - '\u071a\t\u0010\u0002\u0002\u071a\u071b\t\r\u0002\u0002\u071b\u071c\t', - '\u000f\u0002\u0002\u071c\u071d\t\u0010\u0002\u0002\u071d\u071e\t\u0018', - '\u0002\u0002\u071e\u071f\t\u0014\u0002\u0002\u071f\u0720\t\f\u0002\u0002', - '\u0720\u0721\t\u001c\u0002\u0002\u0721\u0722\t\r\u0002\u0002\u0722\u01aa', - '\u0003\u0002\u0002\u0002\u0723\u0724\t\u0014\u0002\u0002\u0724\u0725', - '\t\u0015\u0002\u0002\u0725\u0726\t\f\u0002\u0002\u0726\u0727\t\u001a', - '\u0002\u0002\u0727\u0728\t\u001a\u0002\u0002\u0728\u0729\t\u0007\u0002', - '\u0002\u0729\u072a\t\u0015\u0002\u0002\u072a\u01ac\u0003\u0002\u0002', - '\u0002\u072b\u072c\t\u0014\u0002\u0002\u072c\u072d\t\u0015\u0002\u0002', - '\u072d\u072e\t\u000e\u0002\u0002\u072e\u072f\t\u0007\u0002\u0002\u072f', - '\u01ae\u0003\u0002\u0002\u0002\u0730\u0731\t\u0014\u0002\u0002\u0731', - '\u0732\t\u0015\u0002\u0002\u0732\u0733\t\u000e\u0002\u0002\u0733\u0734', - '\t\r\u0002\u0002\u0734\u0735\t\u0018\u0002\u0002\u0735\u0736\t\u0010', - '\u0002\u0002\u0736\u0737\t\u0014\u0002\u0002\u0737\u0738\t\u0007\u0002', - '\u0002\u0738\u01b0\u0003\u0002\u0002\u0002\u0739\u073a\t\u000e\u0002', - '\u0002\u073a\u073b\t\r\u0002\u0002\u073b\u073c\t\u0019\u0002\u0002\u073c', - '\u073d\t\u001c\u0002\u0002\u073d\u073e\t\u000e\u0002\u0002\u073e\u073f', - '\t\r\u0002\u0002\u073f\u0740\t\u0011\u0002\u0002\u0740\u0741\t\u0007', - '\u0002\u0002\u0741\u0742\t\u0011\u0002\u0002\u0742\u01b2\u0003\u0002', - '\u0002\u0002\u0743\u0744\t\u000e\u0002\u0002\u0744\u0745\t\r\u0002\u0002', - '\u0745\u0746\t\u0011\u0002\u0002\u0746\u0747\t\u0007\u0002\u0002\u0747', - '\u0748\t\u0015\u0002\u0002\u0748\u01b4\u0003\u0002\u0002\u0002\u0749', - '\u074a\t\u000e\u0002\u0002\u074a\u074b\t\r\u0002\u0002\u074b\u074c\t', - '\f\u0002\u0002\u074c\u074d\t\u001c\u0002\u0002\u074d\u074e\t\r\u0002', - '\u0002\u074e\u01b6\u0003\u0002\u0002\u0002\u074f\u0750\t\u000e\u0002', - '\u0002\u0750\u0751\t\r\u0002\u0002\u0751\u0752\t\f\u0002\u0002\u0752', - '\u0753\t%\u0002\u0002\u0753\u0754\t\u000e\u0002\u0002\u0754\u0755\t', - '\u0007\u0002\u0002\u0755\u01b8\u0003\u0002\u0002\u0002\u0756\u0757\t', - '\u000e\u0002\u0002\u0757\u0758\t\r\u0002\u0002\u0758\u0759\t\u001d\u0002', - '\u0002\u0759\u075a\t\r\u0002\u0002\u075a\u075b\t\u001c\u0002\u0002\u075b', - '\u075c\t\u001b\u0002\u0002\u075c\u075d\t\r\u0002\u0002\u075d\u01ba\u0003', - '\u0002\u0002\u0002\u075e\u075f\t\u000e\u0002\u0002\u075f\u0760\t\r\u0002', - '\u0002\u0760\u0761\t\r\u0002\u0002\u0761\u0762\t\u0007\u0002\u0002\u0762', - '\u0763\t\u000f\u0002\u0002\u0763\u0764\t\u0014\u0002\u0002\u0764\u01bc', - '\u0003\u0002\u0002\u0002\u0765\u0766\t\u000e\u0002\u0002\u0766\u0767', - '\t\r\u0002\u0002\u0767\u0768\t\u000f\u0002\u0002\u0768\u0769\t\u0007', - '\u0002\u0002\u0769\u076a\t\u0014\u0002\u0002\u076a\u01be\u0003\u0002', - '\u0002\u0002\u076b\u076c\t\u000e\u0002\u0002\u076c\u076d\t\u001e\u0002', - '\u0002\u076d\u076e\t\u0011\u0002\u0002\u076e\u076f\t\u0010\u0002\u0002', - '\u076f\u0770\t\u0014\u0002\u0002\u0770\u0771\t\u0007\u0002\u0002\u0771', - '\u01c0\u0003\u0002\u0002\u0002\u0772\u0773\t\u000e\u0002\u0002\u0773', - '\u0774\t\u001e\u0002\u0002\u0774\u0775\t\u000f\u0002\u0002\u0775\u0776', - '\t\u0007\u0002\u0002\u0776\u0777\t\u0015\u0002\u0002\u0777\u0778\t\u0014', - '\u0002\u0002\u0778\u01c2\u0003\u0002\u0002\u0002\u0779\u077a\t\u000e', - '\u0002\u0002\u077a\u077b\t\u000f\u0002\u0002\u077b\u077c\t\u0007\u0002', - '\u0002\u077c\u01c4\u0003\u0002\u0002\u0002\u077d\u077e\t\u000e\u0002', - '\u0002\u077e\u077f\t\u000f\u0002\u0002\u077f\u0780\t\u0007\u0002\u0002', - '\u0780\u0781\t\u0015\u0002\u0002\u0781\u01c6\u0003\u0002\u0002\u0002', - '\u0782\u0783\t\u000e\u0002\u0002\u0783\u0784\t\u000f\u0002\u0002\u0784', - '\u0785\t\f\u0002\u0002\u0785\u0786\t\r\u0002\u0002\u0786\u0787\t\u001a', - '\u0002\u0002\u0787\u01c8\u0003\u0002\u0002\u0002\u0788\u0789\t\u0012', - '\u0002\u0002\u0789\u078a\t\u0010\u0002\u0002\u078a\u078b\t\u0013\u0002', - '\u0002\u078b\u078c\t\f\u0002\u0002\u078c\u078d\t\u0011\u0002\u0002\u078d', - '\u078e\t\u0010\u0002\u0002\u078e\u078f\t\u0014\u0002\u0002\u078f\u0790', - '\t\u0007\u0002\u0002\u0790\u01ca\u0003\u0002\u0002\u0002\u0791\u0792', - '\t\u0012\u0002\u0002\u0792\u0793\t\u0010\u0002\u0002\u0793\u0794\t\u0013', - '\u0002\u0002\u0794\u0795\t\u000e\u0002\u0002\u0795\u0796\t\u0007\u0002', - '\u0002\u0796\u01cc\u0003\u0002\u0002\u0002\u0797\u0798\t\u0012\u0002', - '\u0002\u0798\u0799\t\u0010\u0002\u0002\u0799\u079a\t\u0013\u0002\u0002', - '\u079a\u079b\t\u000e\u0002\u0002\u079b\u079c\t\u0007\u0002\u0002\u079c', - '\u079d\t\u0011\u0002\u0002\u079d\u01ce\u0003\u0002\u0002\u0002\u079e', - '\u079f\t\u0012\u0002\u0002\u079f\u07a0\t\u0010\u0002\u0002\u07a0\u07a1', - '\t\u0013\u0002\u0002\u07a1\u07a2\t\u000e\u0002\u0002\u07a2\u07a3\t\u0007', - '\u0002\u0002\u07a3\u07a4\t\u000f\u0002\u0002\u07a4\u01d0\u0003\u0002', - '\u0002\u0002\u07a5\u07a6\t\u0012\u0002\u0002\u07a6\u07a7\t\f\u0002\u0002', - '\u07a7\u07a8\t\u0010\u0002\u0002\u07a8\u01d2\u0003\u0002\u0002\u0002', - '\u07a9\u07aa\t\u0012\u0002\u0002\u07aa\u07ab\t\f\u0002\u0002\u07ab\u07ac', - '\t\u0007\u0002\u0002\u07ac\u07ad\t\u001b\u0002\u0002\u07ad\u01d4\u0003', - '\u0002\u0002\u0002\u07ae\u07af\t\u001b\u0002\u0002\u07af\u07b0\t\u001f', - '\u0002\u0002\u07b0\u07b1\t\u0007\u0002\u0002\u07b1\u07b2\t\r\u0002\u0002', - '\u07b2\u01d6\u0003\u0002\u0002\u0002\u07b3\u07b4\t\u001b\u0002\u0002', - '\u07b4\u07b5\t\u001f\u0002\u0002\u07b5\u07b6\t\u0007\u0002\u0002\u07b6', - '\u07b7\t\u0015\u0002\u0002\u07b7\u07b8\t\u0007\u0002\u0002\u07b8\u01d8', - '\u0003\u0002\u0002\u0002\u07b9\u07ba\t\u001b\u0002\u0002\u07ba\u07bb', - '\t\u001f\u0002\u0002\u07bb\u07bc\t\f\u0002\u0002\u07bc\u07bd\t\u0013', - '\u0002\u0002\u07bd\u07be\t\u0007\u0002\u0002\u07be\u01da\u0003\u0002', - '\u0002\u0002\u07bf\u07c0\t\u001b\u0002\u0002\u07c0\u07c1\t\f\u0002\u0002', - '\u07c1\u07c2\t\r\u0002\u0002\u07c2\u07c3\t\u0011\u0002\u0002\u07c3\u07c4', - '\t\u001c\u0002\u0002\u07c4\u07c5\t\u001b\u0002\u0002\u07c5\u01dc\u0003', - '\u0002\u0002\u0002\u07c6\u07c7\t\u001b\u0002\u0002\u07c7\u07c8\t\f\u0002', - '\u0002\u07c8\u07c9\t\u0014\u0002\u0002\u07c9\u07ca\t\u001f\u0002\u0002', - '\u07ca\u01de\u0003\u0002\u0002\u0002\u07cb\u07cc\t\u001b\u0002\u0002', - '\u07cc\u07cd\t\f\u0002\u0002\u07cd\u07ce\t\u0014\u0002\u0002\u07ce\u07cf', - '\t\u001f\u0002\u0002\u07cf\u07d0\t\f\u0002\u0002\u07d0\u07d1\t\r\u0002', - '\u0002\u07d1\u01e0\u0003\u0002\u0002\u0002\u07d2\u07d3\t\u001b\u0002', - '\u0002\u07d3\u07d4\t\u001c\u0002\u0002\u07d4\u07d5\t\u0015\u0002\u0002', - '\u07d5\u07d6\t\u001d\u0002\u0002\u07d6\u01e2\u0003\u0002\u0002\u0002', - '\u07d7\u07d8\t \u0002\u0002\u07d8\u07d9\t\u001c\u0002\u0002\u07d9\u07da', - '\t\u0015\u0002\u0002\u07da\u01e4\u0003\u0002\u0002\u0002\u07db\u07dc', - '\u0007b\u0002\u0002\u07dc\u07df\u0007b\u0002\u0002\u07dd\u07df\n&\u0002', - '\u0002\u07de\u07db\u0003\u0002\u0002\u0002\u07de\u07dd\u0003\u0002\u0002', - "\u0002\u07df\u01e6\u0003\u0002\u0002\u0002\u07e0\u07e1\t'\u0002\u0002", - '\u07e1\u01e8\u0003\u0002\u0002\u0002\u07e2\u07e3\t(\u0002\u0002\u07e3', - '\u01ea\u0003\u0002\u0002\u0002\u07e4\u07e6\u0007b\u0002\u0002\u07e5', - '\u07e7\u0005\u01e5\u00f3\u0002\u07e6\u07e5\u0003\u0002\u0002\u0002\u07e7', - '\u07e8\u0003\u0002\u0002\u0002\u07e8\u07e6\u0003\u0002\u0002\u0002\u07e8', - '\u07e9\u0003\u0002\u0002\u0002\u07e9\u07ea\u0003\u0002\u0002\u0002\u07ea', - '\u07eb\u0007b\u0002\u0002\u07eb\u07ec\u0007k\u0002\u0002\u07ec\u01ec', - '\u0003\u0002\u0002\u0002\u07ed\u07ef\u0007b\u0002\u0002\u07ee\u07f0', - '\u0005\u01e5\u00f3\u0002\u07ef\u07ee\u0003\u0002\u0002\u0002\u07f0\u07f1', - '\u0003\u0002\u0002\u0002\u07f1\u07ef\u0003\u0002\u0002\u0002\u07f1\u07f2', - '\u0003\u0002\u0002\u0002\u07f2\u07f3\u0003\u0002\u0002\u0002\u07f3\u07f4', - '\u0007b\u0002\u0002\u07f4\u07fd\u0003\u0002\u0002\u0002\u07f5\u07f9', - '\u0005\u01e7\u00f4\u0002\u07f6\u07f8\u0005\u01e9\u00f5\u0002\u07f7\u07f6', - '\u0003\u0002\u0002\u0002\u07f8\u07fb\u0003\u0002\u0002\u0002\u07f9\u07f7', - '\u0003\u0002\u0002\u0002\u07f9\u07fa\u0003\u0002\u0002\u0002\u07fa\u07fd', - '\u0003\u0002\u0002\u0002\u07fb\u07f9\u0003\u0002\u0002\u0002\u07fc\u07ed', - '\u0003\u0002\u0002\u0002\u07fc\u07f5\u0003\u0002\u0002\u0002\u07fd\u01ee', - '\u0003\u0002\u0002\u0002\u07fe\u07ff\u0007&\u0002\u0002\u07ff\u0803', - '\u0005\u01e7\u00f4\u0002\u0800\u0802\u0005\u01e9\u00f5\u0002\u0801\u0800', - '\u0003\u0002\u0002\u0002\u0802\u0805\u0003\u0002\u0002\u0002\u0803\u0801', - '\u0003\u0002\u0002\u0002\u0803\u0804\u0003\u0002\u0002\u0002\u0804\u01f0', - '\u0003\u0002\u0002\u0002\u0805\u0803\u0003\u0002\u0002\u0002\u0806\u0807', - '\u0007&\u0002\u0002\u0807\u080b\t)\u0002\u0002\u0808\u080a\t\u0006\u0002', - '\u0002\u0809\u0808\u0003\u0002\u0002\u0002\u080a\u080d\u0003\u0002\u0002', - '\u0002\u080b\u0809\u0003\u0002\u0002\u0002\u080b\u080c\u0003\u0002\u0002', - '\u0002\u080c\u01f2\u0003\u0002\u0002\u0002\u080d\u080b\u0003\u0002\u0002', - '\u0002\u080e\u080f\u0007A\u0002\u0002\u080f\u01f4\u0003\u0002\u0002', - '\u0002\u001c\u0002\u01fc\u0203\u0209\u0211\u0215\u0218\u0221\u0224\u0228', - '\u022d\u0236\u0239\u023e\u0246\u0252\u0258\u0266\u0277\u07de\u07e8\u07f1', - '\u07f9\u07fc\u0803\u080b\u0003\b\u0002\u0002', -].join(''); - -const atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN); - -const decisionsToDFA = atn.decisionToState.map((ds, index) => new antlr4.dfa.DFA(ds, index)); - -class n1qlLexer extends antlr4.Lexer { - static grammarFileName = 'n1ql.g4'; - static channelNames = ['DEFAULT_TOKEN_CHANNEL', 'HIDDEN']; - static modeNames = ['DEFAULT_MODE']; - static literalNames = [ - null, - null, - null, - null, - null, - null, - null, - "'.'", - "'+'", - null, - "'*'", - "'/'", - "'%'", - "'=='", - "'='", - null, - "'<'", - "'<='", - "'>'", - "'>='", - "'||'", - "'('", - "')'", - "'{'", - "'}'", - "','", - "':'", - "'['", - "']'", - "']i'", - "';'", - "'!'", - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - "'?'", - ]; - static symbolicNames = [ - null, - 'STR', - 'INT', - 'NUM', - 'BLOCK_COMMENT', - 'LINE_COMMENT', - 'WHITESPACE', - 'DOT', - 'PLUS', - 'MINUS', - 'STAR', - 'DIV', - 'MOD', - 'DEQ', - 'EQ', - 'NE', - 'LT', - 'LE', - 'GT', - 'GE', - 'CONCAT', - 'LPAREN', - 'RPAREN', - 'LBRACE', - 'RBRACE', - 'COMMA', - 'COLON', - 'LBRACKET', - 'RBRACKET', - 'RBRACKET_ICASE', - 'SEMI', - 'NOT_A_TOKEN', - 'ADVISE', - 'ALL', - 'ALTER', - 'ANALYZE', - 'AND', - 'ANY', - 'ARRAY', - 'AS', - 'ASC', - 'AT', - 'BEGIN', - 'BETWEEN', - 'BINARY', - 'BOOLEAN', - 'BREAK', - 'BUCKET', - 'BUILD', - 'BY', - 'CALL', - 'CASE', - 'CAST', - 'CLUSTER', - 'COLLATE', - 'COLLECTION', - 'COMMIT', - 'COMMITTED', - 'CONNECT', - 'CONTINUE', - 'CORRELATED', - 'COVER', - 'CREATE', - 'CURRENT', - 'DATABASE', - 'DATASET', - 'DATASTORE', - 'DECLARE', - 'DECREMENT', - 'DELETE_', - 'DERIVED', - 'DESC', - 'DESCRIBE', - 'DISTINCT', - 'DO', - 'DROP', - 'EACH', - 'ELEMENT', - 'ELSE', - 'END', - 'EVERY', - 'EXCEPT', - 'EXCLUDE', - 'EXECUTE', - 'EXISTS', - 'EXPLAIN', - 'FALSE', - 'FETCH', - 'FILTER', - 'FIRST', - 'FLATTEN', - 'FLUSH', - 'FOLLOWING', - 'FOR', - 'FORCE', - 'FROM', - 'FTS', - 'FUNCTION', - 'GOLANG', - 'GRANT', - 'GROUP', - 'GROUPS', - 'GSI', - 'HASH', - 'HAVING', - 'IF', - 'IGNORE', - 'ILIKE', - 'IN', - 'INCLUDE', - 'INCREMENT', - 'INDEX', - 'INFER', - 'INLINE', - 'INNER', - 'INSERT', - 'INTERSECT', - 'INTO', - 'IS', - 'ISOLATION', - 'JAVASCRIPT', - 'JOIN', - 'KEY', - 'KEYS', - 'KEYSPACE', - 'KNOWN', - 'LANGUAGE', - 'LAST', - 'LEFT', - 'LET_', - 'LETTING', - 'LEVEL', - 'LIKE', - 'LIMIT', - 'LSM', - 'MAP', - 'MAPPING', - 'MATCHED', - 'MATERIALIZED', - 'MERGE', - 'MISSING', - 'NAMESPACE', - 'NEST', - 'NL', - 'NO', - 'NOT', - 'NTH_VALUE', - 'NULL', - 'NULLS', - 'NUMBER', - 'OBJECT', - 'OFFSET', - 'ON', - 'OPTION', - 'OPTIONS', - 'OR', - 'ORDER', - 'OTHERS', - 'OUTER', - 'OVER', - 'PARSE', - 'PARTITION', - 'PASSWORD', - 'PATH', - 'POOL', - 'PRECEDING', - 'PREPARE', - 'PRIMARY', - 'PRIVATE', - 'PRIVILEGE', - 'PROCEDURE', - 'PROBE', - 'PUBLIC', - 'RANGE', - 'RAW', - 'READ', - 'REALM', - 'REDUCE', - 'RENAME', - 'REPLACE', - 'RESPECT', - 'RETURN', - 'RETURNING', - 'REVOKE', - 'RIGHT', - 'ROLE', - 'ROLLBACK', - 'ROW', - 'ROWS', - 'SATISFIES', - 'SAVEPOINT', - 'SCHEMA', - 'SCOPE', - 'SELECT', - 'SELF', - 'SET', - 'SHOW', - 'SOME', - 'START', - 'STATISTICS', - 'STRING', - 'SYSTEM', - 'THEN', - 'TIES', - 'TO', - 'TRAN', - 'TRANSACTION', - 'TRIGGER', - 'TRUE', - 'TRUNCATE', - 'UNBOUNDED', - 'UNDER', - 'UNION', - 'UNIQUE', - 'UNKNOWN', - 'UNNEST', - 'UNSET', - 'UPDATE', - 'UPSERT', - 'USE', - 'USER', - 'USING', - 'VALIDATE', - 'VALUE', - 'VALUED', - 'VALUES', - 'VIA', - 'VIEW', - 'WHEN', - 'WHERE', - 'WHILE', - 'WINDOW', - 'WITH', - 'WITHIN', - 'WORK', - 'XOR', - 'IDENT_ICASE', - 'IDENT', - 'NAMED_PARAM', - 'POSITIONAL_PARAM', - 'NEXT_PARAM', - ]; - static ruleNames = [ - 'SingleStringCharacter', - 'DoubleStringCharacter', - 'STR', - 'NumStart', - 'Digit', - 'Int', - 'Exponent', - 'INT', - 'NUM', - 'BLOCK_COMMENT', - 'LINE_COMMENT', - 'WHITESPACE', - 'DOT', - 'PLUS', - 'MINUS', - 'STAR', - 'DIV', - 'MOD', - 'DEQ', - 'EQ', - 'NE', - 'LT', - 'LE', - 'GT', - 'GE', - 'CONCAT', - 'LPAREN', - 'RPAREN', - 'LBRACE', - 'RBRACE', - 'COMMA', - 'COLON', - 'LBRACKET', - 'RBRACKET', - 'RBRACKET_ICASE', - 'SEMI', - 'NOT_A_TOKEN', - 'ADVISE', - 'ALL', - 'ALTER', - 'ANALYZE', - 'AND', - 'ANY', - 'ARRAY', - 'AS', - 'ASC', - 'AT', - 'BEGIN', - 'BETWEEN', - 'BINARY', - 'BOOLEAN', - 'BREAK', - 'BUCKET', - 'BUILD', - 'BY', - 'CALL', - 'CASE', - 'CAST', - 'CLUSTER', - 'COLLATE', - 'COLLECTION', - 'COMMIT', - 'COMMITTED', - 'CONNECT', - 'CONTINUE', - 'CORRELATED', - 'COVER', - 'CREATE', - 'CURRENT', - 'DATABASE', - 'DATASET', - 'DATASTORE', - 'DECLARE', - 'DECREMENT', - 'DELETE_', - 'DERIVED', - 'DESC', - 'DESCRIBE', - 'DISTINCT', - 'DO', - 'DROP', - 'EACH', - 'ELEMENT', - 'ELSE', - 'END', - 'EVERY', - 'EXCEPT', - 'EXCLUDE', - 'EXECUTE', - 'EXISTS', - 'EXPLAIN', - 'FALSE', - 'FETCH', - 'FILTER', - 'FIRST', - 'FLATTEN', - 'FLUSH', - 'FOLLOWING', - 'FOR', - 'FORCE', - 'FROM', - 'FTS', - 'FUNCTION', - 'GOLANG', - 'GRANT', - 'GROUP', - 'GROUPS', - 'GSI', - 'HASH', - 'HAVING', - 'IF', - 'IGNORE', - 'ILIKE', - 'IN', - 'INCLUDE', - 'INCREMENT', - 'INDEX', - 'INFER', - 'INLINE', - 'INNER', - 'INSERT', - 'INTERSECT', - 'INTO', - 'IS', - 'ISOLATION', - 'JAVASCRIPT', - 'JOIN', - 'KEY', - 'KEYS', - 'KEYSPACE', - 'KNOWN', - 'LANGUAGE', - 'LAST', - 'LEFT', - 'LET_', - 'LETTING', - 'LEVEL', - 'LIKE', - 'LIMIT', - 'LSM', - 'MAP', - 'MAPPING', - 'MATCHED', - 'MATERIALIZED', - 'MERGE', - 'MISSING', - 'NAMESPACE', - 'NEST', - 'NL', - 'NO', - 'NOT', - 'NTH_VALUE', - 'NULL', - 'NULLS', - 'NUMBER', - 'OBJECT', - 'OFFSET', - 'ON', - 'OPTION', - 'OPTIONS', - 'OR', - 'ORDER', - 'OTHERS', - 'OUTER', - 'OVER', - 'PARSE', - 'PARTITION', - 'PASSWORD', - 'PATH', - 'POOL', - 'PRECEDING', - 'PREPARE', - 'PRIMARY', - 'PRIVATE', - 'PRIVILEGE', - 'PROCEDURE', - 'PROBE', - 'PUBLIC', - 'RANGE', - 'RAW', - 'READ', - 'REALM', - 'REDUCE', - 'RENAME', - 'REPLACE', - 'RESPECT', - 'RETURN', - 'RETURNING', - 'REVOKE', - 'RIGHT', - 'ROLE', - 'ROLLBACK', - 'ROW', - 'ROWS', - 'SATISFIES', - 'SAVEPOINT', - 'SCHEMA', - 'SCOPE', - 'SELECT', - 'SELF', - 'SET', - 'SHOW', - 'SOME', - 'START', - 'STATISTICS', - 'STRING', - 'SYSTEM', - 'THEN', - 'TIES', - 'TO', - 'TRAN', - 'TRANSACTION', - 'TRIGGER', - 'TRUE', - 'TRUNCATE', - 'UNBOUNDED', - 'UNDER', - 'UNION', - 'UNIQUE', - 'UNKNOWN', - 'UNNEST', - 'UNSET', - 'UPDATE', - 'UPSERT', - 'USE', - 'USER', - 'USING', - 'VALIDATE', - 'VALUE', - 'VALUED', - 'VALUES', - 'VIA', - 'VIEW', - 'WHEN', - 'WHERE', - 'WHILE', - 'WINDOW', - 'WITH', - 'WITHIN', - 'WORK', - 'XOR', - 'IdentChar', - 'IdentFirstChar', - 'IdentLaterChar', - 'IDENT_ICASE', - 'IDENT', - 'NAMED_PARAM', - 'POSITIONAL_PARAM', - 'NEXT_PARAM', - ]; - - constructor(input) { - super(input); - this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache()); - } - - get atn() { - return atn; - } -} - -n1qlLexer.EOF = antlr4.Token.EOF; -n1qlLexer.STR = 1; -n1qlLexer.INT = 2; -n1qlLexer.NUM = 3; -n1qlLexer.BLOCK_COMMENT = 4; -n1qlLexer.LINE_COMMENT = 5; -n1qlLexer.WHITESPACE = 6; -n1qlLexer.DOT = 7; -n1qlLexer.PLUS = 8; -n1qlLexer.MINUS = 9; -n1qlLexer.STAR = 10; -n1qlLexer.DIV = 11; -n1qlLexer.MOD = 12; -n1qlLexer.DEQ = 13; -n1qlLexer.EQ = 14; -n1qlLexer.NE = 15; -n1qlLexer.LT = 16; -n1qlLexer.LE = 17; -n1qlLexer.GT = 18; -n1qlLexer.GE = 19; -n1qlLexer.CONCAT = 20; -n1qlLexer.LPAREN = 21; -n1qlLexer.RPAREN = 22; -n1qlLexer.LBRACE = 23; -n1qlLexer.RBRACE = 24; -n1qlLexer.COMMA = 25; -n1qlLexer.COLON = 26; -n1qlLexer.LBRACKET = 27; -n1qlLexer.RBRACKET = 28; -n1qlLexer.RBRACKET_ICASE = 29; -n1qlLexer.SEMI = 30; -n1qlLexer.NOT_A_TOKEN = 31; -n1qlLexer.ADVISE = 32; -n1qlLexer.ALL = 33; -n1qlLexer.ALTER = 34; -n1qlLexer.ANALYZE = 35; -n1qlLexer.AND = 36; -n1qlLexer.ANY = 37; -n1qlLexer.ARRAY = 38; -n1qlLexer.AS = 39; -n1qlLexer.ASC = 40; -n1qlLexer.AT = 41; -n1qlLexer.BEGIN = 42; -n1qlLexer.BETWEEN = 43; -n1qlLexer.BINARY = 44; -n1qlLexer.BOOLEAN = 45; -n1qlLexer.BREAK = 46; -n1qlLexer.BUCKET = 47; -n1qlLexer.BUILD = 48; -n1qlLexer.BY = 49; -n1qlLexer.CALL = 50; -n1qlLexer.CASE = 51; -n1qlLexer.CAST = 52; -n1qlLexer.CLUSTER = 53; -n1qlLexer.COLLATE = 54; -n1qlLexer.COLLECTION = 55; -n1qlLexer.COMMIT = 56; -n1qlLexer.COMMITTED = 57; -n1qlLexer.CONNECT = 58; -n1qlLexer.CONTINUE = 59; -n1qlLexer.CORRELATED = 60; -n1qlLexer.COVER = 61; -n1qlLexer.CREATE = 62; -n1qlLexer.CURRENT = 63; -n1qlLexer.DATABASE = 64; -n1qlLexer.DATASET = 65; -n1qlLexer.DATASTORE = 66; -n1qlLexer.DECLARE = 67; -n1qlLexer.DECREMENT = 68; -n1qlLexer.DELETE_ = 69; -n1qlLexer.DERIVED = 70; -n1qlLexer.DESC = 71; -n1qlLexer.DESCRIBE = 72; -n1qlLexer.DISTINCT = 73; -n1qlLexer.DO = 74; -n1qlLexer.DROP = 75; -n1qlLexer.EACH = 76; -n1qlLexer.ELEMENT = 77; -n1qlLexer.ELSE = 78; -n1qlLexer.END = 79; -n1qlLexer.EVERY = 80; -n1qlLexer.EXCEPT = 81; -n1qlLexer.EXCLUDE = 82; -n1qlLexer.EXECUTE = 83; -n1qlLexer.EXISTS = 84; -n1qlLexer.EXPLAIN = 85; -n1qlLexer.FALSE = 86; -n1qlLexer.FETCH = 87; -n1qlLexer.FILTER = 88; -n1qlLexer.FIRST = 89; -n1qlLexer.FLATTEN = 90; -n1qlLexer.FLUSH = 91; -n1qlLexer.FOLLOWING = 92; -n1qlLexer.FOR = 93; -n1qlLexer.FORCE = 94; -n1qlLexer.FROM = 95; -n1qlLexer.FTS = 96; -n1qlLexer.FUNCTION = 97; -n1qlLexer.GOLANG = 98; -n1qlLexer.GRANT = 99; -n1qlLexer.GROUP = 100; -n1qlLexer.GROUPS = 101; -n1qlLexer.GSI = 102; -n1qlLexer.HASH = 103; -n1qlLexer.HAVING = 104; -n1qlLexer.IF = 105; -n1qlLexer.IGNORE = 106; -n1qlLexer.ILIKE = 107; -n1qlLexer.IN = 108; -n1qlLexer.INCLUDE = 109; -n1qlLexer.INCREMENT = 110; -n1qlLexer.INDEX = 111; -n1qlLexer.INFER = 112; -n1qlLexer.INLINE = 113; -n1qlLexer.INNER = 114; -n1qlLexer.INSERT = 115; -n1qlLexer.INTERSECT = 116; -n1qlLexer.INTO = 117; -n1qlLexer.IS = 118; -n1qlLexer.ISOLATION = 119; -n1qlLexer.JAVASCRIPT = 120; -n1qlLexer.JOIN = 121; -n1qlLexer.KEY = 122; -n1qlLexer.KEYS = 123; -n1qlLexer.KEYSPACE = 124; -n1qlLexer.KNOWN = 125; -n1qlLexer.LANGUAGE = 126; -n1qlLexer.LAST = 127; -n1qlLexer.LEFT = 128; -n1qlLexer.LET_ = 129; -n1qlLexer.LETTING = 130; -n1qlLexer.LEVEL = 131; -n1qlLexer.LIKE = 132; -n1qlLexer.LIMIT = 133; -n1qlLexer.LSM = 134; -n1qlLexer.MAP = 135; -n1qlLexer.MAPPING = 136; -n1qlLexer.MATCHED = 137; -n1qlLexer.MATERIALIZED = 138; -n1qlLexer.MERGE = 139; -n1qlLexer.MISSING = 140; -n1qlLexer.NAMESPACE = 141; -n1qlLexer.NEST = 142; -n1qlLexer.NL = 143; -n1qlLexer.NO = 144; -n1qlLexer.NOT = 145; -n1qlLexer.NTH_VALUE = 146; -n1qlLexer.NULL = 147; -n1qlLexer.NULLS = 148; -n1qlLexer.NUMBER = 149; -n1qlLexer.OBJECT = 150; -n1qlLexer.OFFSET = 151; -n1qlLexer.ON = 152; -n1qlLexer.OPTION = 153; -n1qlLexer.OPTIONS = 154; -n1qlLexer.OR = 155; -n1qlLexer.ORDER = 156; -n1qlLexer.OTHERS = 157; -n1qlLexer.OUTER = 158; -n1qlLexer.OVER = 159; -n1qlLexer.PARSE = 160; -n1qlLexer.PARTITION = 161; -n1qlLexer.PASSWORD = 162; -n1qlLexer.PATH = 163; -n1qlLexer.POOL = 164; -n1qlLexer.PRECEDING = 165; -n1qlLexer.PREPARE = 166; -n1qlLexer.PRIMARY = 167; -n1qlLexer.PRIVATE = 168; -n1qlLexer.PRIVILEGE = 169; -n1qlLexer.PROCEDURE = 170; -n1qlLexer.PROBE = 171; -n1qlLexer.PUBLIC = 172; -n1qlLexer.RANGE = 173; -n1qlLexer.RAW = 174; -n1qlLexer.READ = 175; -n1qlLexer.REALM = 176; -n1qlLexer.REDUCE = 177; -n1qlLexer.RENAME = 178; -n1qlLexer.REPLACE = 179; -n1qlLexer.RESPECT = 180; -n1qlLexer.RETURN = 181; -n1qlLexer.RETURNING = 182; -n1qlLexer.REVOKE = 183; -n1qlLexer.RIGHT = 184; -n1qlLexer.ROLE = 185; -n1qlLexer.ROLLBACK = 186; -n1qlLexer.ROW = 187; -n1qlLexer.ROWS = 188; -n1qlLexer.SATISFIES = 189; -n1qlLexer.SAVEPOINT = 190; -n1qlLexer.SCHEMA = 191; -n1qlLexer.SCOPE = 192; -n1qlLexer.SELECT = 193; -n1qlLexer.SELF = 194; -n1qlLexer.SET = 195; -n1qlLexer.SHOW = 196; -n1qlLexer.SOME = 197; -n1qlLexer.START = 198; -n1qlLexer.STATISTICS = 199; -n1qlLexer.STRING = 200; -n1qlLexer.SYSTEM = 201; -n1qlLexer.THEN = 202; -n1qlLexer.TIES = 203; -n1qlLexer.TO = 204; -n1qlLexer.TRAN = 205; -n1qlLexer.TRANSACTION = 206; -n1qlLexer.TRIGGER = 207; -n1qlLexer.TRUE = 208; -n1qlLexer.TRUNCATE = 209; -n1qlLexer.UNBOUNDED = 210; -n1qlLexer.UNDER = 211; -n1qlLexer.UNION = 212; -n1qlLexer.UNIQUE = 213; -n1qlLexer.UNKNOWN = 214; -n1qlLexer.UNNEST = 215; -n1qlLexer.UNSET = 216; -n1qlLexer.UPDATE = 217; -n1qlLexer.UPSERT = 218; -n1qlLexer.USE = 219; -n1qlLexer.USER = 220; -n1qlLexer.USING = 221; -n1qlLexer.VALIDATE = 222; -n1qlLexer.VALUE = 223; -n1qlLexer.VALUED = 224; -n1qlLexer.VALUES = 225; -n1qlLexer.VIA = 226; -n1qlLexer.VIEW = 227; -n1qlLexer.WHEN = 228; -n1qlLexer.WHERE = 229; -n1qlLexer.WHILE = 230; -n1qlLexer.WINDOW = 231; -n1qlLexer.WITH = 232; -n1qlLexer.WITHIN = 233; -n1qlLexer.WORK = 234; -n1qlLexer.XOR = 235; -n1qlLexer.IDENT_ICASE = 236; -n1qlLexer.IDENT = 237; -n1qlLexer.NAMED_PARAM = 238; -n1qlLexer.POSITIONAL_PARAM = 239; -n1qlLexer.NEXT_PARAM = 240; - -module.exports = n1qlLexer; diff --git a/reverse_engineering/antlr/parser/n1qlLexer.tokens b/reverse_engineering/antlr/parser/n1qlLexer.tokens deleted file mode 100644 index 3d957ca..0000000 --- a/reverse_engineering/antlr/parser/n1qlLexer.tokens +++ /dev/null @@ -1,264 +0,0 @@ -STR=1 -INT=2 -NUM=3 -BLOCK_COMMENT=4 -LINE_COMMENT=5 -WHITESPACE=6 -DOT=7 -PLUS=8 -MINUS=9 -STAR=10 -DIV=11 -MOD=12 -DEQ=13 -EQ=14 -NE=15 -LT=16 -LE=17 -GT=18 -GE=19 -CONCAT=20 -LPAREN=21 -RPAREN=22 -LBRACE=23 -RBRACE=24 -COMMA=25 -COLON=26 -LBRACKET=27 -RBRACKET=28 -RBRACKET_ICASE=29 -SEMI=30 -NOT_A_TOKEN=31 -ADVISE=32 -ALL=33 -ALTER=34 -ANALYZE=35 -AND=36 -ANY=37 -ARRAY=38 -AS=39 -ASC=40 -AT=41 -BEGIN=42 -BETWEEN=43 -BINARY=44 -BOOLEAN=45 -BREAK=46 -BUCKET=47 -BUILD=48 -BY=49 -CALL=50 -CASE=51 -CAST=52 -CLUSTER=53 -COLLATE=54 -COLLECTION=55 -COMMIT=56 -COMMITTED=57 -CONNECT=58 -CONTINUE=59 -CORRELATED=60 -COVER=61 -CREATE=62 -CURRENT=63 -DATABASE=64 -DATASET=65 -DATASTORE=66 -DECLARE=67 -DECREMENT=68 -DELETE_=69 -DERIVED=70 -DESC=71 -DESCRIBE=72 -DISTINCT=73 -DO=74 -DROP=75 -EACH=76 -ELEMENT=77 -ELSE=78 -END=79 -EVERY=80 -EXCEPT=81 -EXCLUDE=82 -EXECUTE=83 -EXISTS=84 -EXPLAIN=85 -FALSE=86 -FETCH=87 -FILTER=88 -FIRST=89 -FLATTEN=90 -FLUSH=91 -FOLLOWING=92 -FOR=93 -FORCE=94 -FROM=95 -FTS=96 -FUNCTION=97 -GOLANG=98 -GRANT=99 -GROUP=100 -GROUPS=101 -GSI=102 -HASH=103 -HAVING=104 -IF=105 -IGNORE=106 -ILIKE=107 -IN=108 -INCLUDE=109 -INCREMENT=110 -INDEX=111 -INFER=112 -INLINE=113 -INNER=114 -INSERT=115 -INTERSECT=116 -INTO=117 -IS=118 -ISOLATION=119 -JAVASCRIPT=120 -JOIN=121 -KEY=122 -KEYS=123 -KEYSPACE=124 -KNOWN=125 -LANGUAGE=126 -LAST=127 -LEFT=128 -LET_=129 -LETTING=130 -LEVEL=131 -LIKE=132 -LIMIT=133 -LSM=134 -MAP=135 -MAPPING=136 -MATCHED=137 -MATERIALIZED=138 -MERGE=139 -MISSING=140 -NAMESPACE=141 -NEST=142 -NL=143 -NO=144 -NOT=145 -NTH_VALUE=146 -NULL=147 -NULLS=148 -NUMBER=149 -OBJECT=150 -OFFSET=151 -ON=152 -OPTION=153 -OPTIONS=154 -OR=155 -ORDER=156 -OTHERS=157 -OUTER=158 -OVER=159 -PARSE=160 -PARTITION=161 -PASSWORD=162 -PATH=163 -POOL=164 -PRECEDING=165 -PREPARE=166 -PRIMARY=167 -PRIVATE=168 -PRIVILEGE=169 -PROCEDURE=170 -PROBE=171 -PUBLIC=172 -RANGE=173 -RAW=174 -READ=175 -REALM=176 -REDUCE=177 -RENAME=178 -REPLACE=179 -RESPECT=180 -RETURN=181 -RETURNING=182 -REVOKE=183 -RIGHT=184 -ROLE=185 -ROLLBACK=186 -ROW=187 -ROWS=188 -SATISFIES=189 -SAVEPOINT=190 -SCHEMA=191 -SCOPE=192 -SELECT=193 -SELF=194 -SET=195 -SHOW=196 -SOME=197 -START=198 -STATISTICS=199 -STRING=200 -SYSTEM=201 -THEN=202 -TIES=203 -TO=204 -TRAN=205 -TRANSACTION=206 -TRIGGER=207 -TRUE=208 -TRUNCATE=209 -UNBOUNDED=210 -UNDER=211 -UNION=212 -UNIQUE=213 -UNKNOWN=214 -UNNEST=215 -UNSET=216 -UPDATE=217 -UPSERT=218 -USE=219 -USER=220 -USING=221 -VALIDATE=222 -VALUE=223 -VALUED=224 -VALUES=225 -VIA=226 -VIEW=227 -WHEN=228 -WHERE=229 -WHILE=230 -WINDOW=231 -WITH=232 -WITHIN=233 -WORK=234 -XOR=235 -IDENT_ICASE=236 -IDENT=237 -NAMED_PARAM=238 -POSITIONAL_PARAM=239 -NEXT_PARAM=240 -'.'=7 -'+'=8 -'*'=10 -'/'=11 -'%'=12 -'=='=13 -'='=14 -'<'=16 -'<='=17 -'>'=18 -'>='=19 -'||'=20 -'('=21 -')'=22 -'{'=23 -'}'=24 -','=25 -':'=26 -'['=27 -']'=28 -']i'=29 -';'=30 -'!'=31 -'?'=240 diff --git a/reverse_engineering/antlr/parser/n1qlParser.js b/reverse_engineering/antlr/parser/n1qlParser.js deleted file mode 100644 index 63be8a5..0000000 --- a/reverse_engineering/antlr/parser/n1qlParser.js +++ /dev/null @@ -1,25232 +0,0 @@ -// Generated from grammars/n1ql.g4 by ANTLR 4.9.2 -// jshint ignore: start -const antlr4 = require('antlr4'); -const n1qlVisitor = require('./n1qlVisitor'); - -const serializedATN = [ - '\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786', - '\u5964\u0003\u00f2\u0ae5\u0004\u0002\t\u0002\u0004\u0003\t\u0003\u0004', - '\u0004\t\u0004\u0004\u0005\t\u0005\u0004\u0006\t\u0006\u0004\u0007\t', - '\u0007\u0004\b\t\b\u0004\t\t\t\u0004\n\t\n\u0004\u000b\t\u000b\u0004', - '\f\t\f\u0004\r\t\r\u0004\u000e\t\u000e\u0004\u000f\t\u000f\u0004\u0010', - '\t\u0010\u0004\u0011\t\u0011\u0004\u0012\t\u0012\u0004\u0013\t\u0013', - '\u0004\u0014\t\u0014\u0004\u0015\t\u0015\u0004\u0016\t\u0016\u0004\u0017', - '\t\u0017\u0004\u0018\t\u0018\u0004\u0019\t\u0019\u0004\u001a\t\u001a', - '\u0004\u001b\t\u001b\u0004\u001c\t\u001c\u0004\u001d\t\u001d\u0004\u001e', - '\t\u001e\u0004\u001f\t\u001f\u0004 \t \u0004!\t!\u0004"\t"\u0004#', - "\t#\u0004$\t$\u0004%\t%\u0004&\t&\u0004'\t'\u0004(\t(\u0004)\t)\u0004", - '*\t*\u0004+\t+\u0004,\t,\u0004-\t-\u0004.\t.\u0004/\t/\u00040\t0\u0004', - '1\t1\u00042\t2\u00043\t3\u00044\t4\u00045\t5\u00046\t6\u00047\t7\u0004', - '8\t8\u00049\t9\u0004:\t:\u0004;\t;\u0004<\t<\u0004=\t=\u0004>\t>\u0004', - '?\t?\u0004@\t@\u0004A\tA\u0004B\tB\u0004C\tC\u0004D\tD\u0004E\tE\u0004', - 'F\tF\u0004G\tG\u0004H\tH\u0004I\tI\u0004J\tJ\u0004K\tK\u0004L\tL\u0004', - 'M\tM\u0004N\tN\u0004O\tO\u0004P\tP\u0004Q\tQ\u0004R\tR\u0004S\tS\u0004', - 'T\tT\u0004U\tU\u0004V\tV\u0004W\tW\u0004X\tX\u0004Y\tY\u0004Z\tZ\u0004', - '[\t[\u0004\\\t\\\u0004]\t]\u0004^\t^\u0004_\t_\u0004`\t`\u0004a\ta\u0004', - 'b\tb\u0004c\tc\u0004d\td\u0004e\te\u0004f\tf\u0004g\tg\u0004h\th\u0004', - 'i\ti\u0004j\tj\u0004k\tk\u0004l\tl\u0004m\tm\u0004n\tn\u0004o\to\u0004', - 'p\tp\u0004q\tq\u0004r\tr\u0004s\ts\u0004t\tt\u0004u\tu\u0004v\tv\u0004', - 'w\tw\u0004x\tx\u0004y\ty\u0004z\tz\u0004{\t{\u0004|\t|\u0004}\t}\u0004', - '~\t~\u0004\u007f\t\u007f\u0004\u0080\t\u0080\u0004\u0081\t\u0081\u0004', - '\u0082\t\u0082\u0004\u0083\t\u0083\u0004\u0084\t\u0084\u0004\u0085\t', - '\u0085\u0004\u0086\t\u0086\u0004\u0087\t\u0087\u0004\u0088\t\u0088\u0004', - '\u0089\t\u0089\u0004\u008a\t\u008a\u0004\u008b\t\u008b\u0004\u008c\t', - '\u008c\u0004\u008d\t\u008d\u0004\u008e\t\u008e\u0004\u008f\t\u008f\u0004', - '\u0090\t\u0090\u0004\u0091\t\u0091\u0004\u0092\t\u0092\u0004\u0093\t', - '\u0093\u0004\u0094\t\u0094\u0004\u0095\t\u0095\u0004\u0096\t\u0096\u0004', - '\u0097\t\u0097\u0004\u0098\t\u0098\u0004\u0099\t\u0099\u0004\u009a\t', - '\u009a\u0004\u009b\t\u009b\u0004\u009c\t\u009c\u0004\u009d\t\u009d\u0004', - '\u009e\t\u009e\u0004\u009f\t\u009f\u0004\u00a0\t\u00a0\u0004\u00a1\t', - '\u00a1\u0004\u00a2\t\u00a2\u0004\u00a3\t\u00a3\u0004\u00a4\t\u00a4\u0004', - '\u00a5\t\u00a5\u0004\u00a6\t\u00a6\u0004\u00a7\t\u00a7\u0004\u00a8\t', - '\u00a8\u0004\u00a9\t\u00a9\u0004\u00aa\t\u00aa\u0004\u00ab\t\u00ab\u0004', - '\u00ac\t\u00ac\u0004\u00ad\t\u00ad\u0004\u00ae\t\u00ae\u0004\u00af\t', - '\u00af\u0004\u00b0\t\u00b0\u0004\u00b1\t\u00b1\u0004\u00b2\t\u00b2\u0004', - '\u00b3\t\u00b3\u0004\u00b4\t\u00b4\u0004\u00b5\t\u00b5\u0004\u00b6\t', - '\u00b6\u0004\u00b7\t\u00b7\u0004\u00b8\t\u00b8\u0004\u00b9\t\u00b9\u0004', - '\u00ba\t\u00ba\u0004\u00bb\t\u00bb\u0004\u00bc\t\u00bc\u0004\u00bd\t', - '\u00bd\u0004\u00be\t\u00be\u0004\u00bf\t\u00bf\u0004\u00c0\t\u00c0\u0004', - '\u00c1\t\u00c1\u0004\u00c2\t\u00c2\u0004\u00c3\t\u00c3\u0004\u00c4\t', - '\u00c4\u0004\u00c5\t\u00c5\u0004\u00c6\t\u00c6\u0004\u00c7\t\u00c7\u0004', - '\u00c8\t\u00c8\u0004\u00c9\t\u00c9\u0004\u00ca\t\u00ca\u0004\u00cb\t', - '\u00cb\u0004\u00cc\t\u00cc\u0004\u00cd\t\u00cd\u0004\u00ce\t\u00ce\u0004', - '\u00cf\t\u00cf\u0004\u00d0\t\u00d0\u0004\u00d1\t\u00d1\u0004\u00d2\t', - '\u00d2\u0004\u00d3\t\u00d3\u0004\u00d4\t\u00d4\u0004\u00d5\t\u00d5\u0004', - '\u00d6\t\u00d6\u0004\u00d7\t\u00d7\u0004\u00d8\t\u00d8\u0004\u00d9\t', - '\u00d9\u0004\u00da\t\u00da\u0004\u00db\t\u00db\u0004\u00dc\t\u00dc\u0004', - '\u00dd\t\u00dd\u0004\u00de\t\u00de\u0004\u00df\t\u00df\u0004\u00e0\t', - '\u00e0\u0004\u00e1\t\u00e1\u0004\u00e2\t\u00e2\u0004\u00e3\t\u00e3\u0004', - '\u00e4\t\u00e4\u0004\u00e5\t\u00e5\u0004\u00e6\t\u00e6\u0004\u00e7\t', - '\u00e7\u0004\u00e8\t\u00e8\u0004\u00e9\t\u00e9\u0004\u00ea\t\u00ea\u0004', - '\u00eb\t\u00eb\u0004\u00ec\t\u00ec\u0004\u00ed\t\u00ed\u0004\u00ee\t', - '\u00ee\u0004\u00ef\t\u00ef\u0004\u00f0\t\u00f0\u0004\u00f1\t\u00f1\u0004', - '\u00f2\t\u00f2\u0004\u00f3\t\u00f3\u0004\u00f4\t\u00f4\u0004\u00f5\t', - '\u00f5\u0004\u00f6\t\u00f6\u0004\u00f7\t\u00f7\u0004\u00f8\t\u00f8\u0004', - '\u00f9\t\u00f9\u0004\u00fa\t\u00fa\u0004\u00fb\t\u00fb\u0004\u00fc\t', - '\u00fc\u0004\u00fd\t\u00fd\u0004\u00fe\t\u00fe\u0004\u00ff\t\u00ff\u0004', - '\u0100\t\u0100\u0004\u0101\t\u0101\u0004\u0102\t\u0102\u0004\u0103\t', - '\u0103\u0004\u0104\t\u0104\u0004\u0105\t\u0105\u0004\u0106\t\u0106\u0003', - '\u0002\u0003\u0002\u0007\u0002\u020f\n\u0002\f\u0002\u000e\u0002\u0212', - '\u000b\u0002\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0003\u0005\u0003', - '\u0218\n\u0003\u0003\u0004\u0003\u0004\u0003\u0004\u0007\u0004\u021d', - '\n\u0004\f\u0004\u000e\u0004\u0220\u000b\u0004\u0003\u0005\u0003\u0005', - '\u0003\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u0227\n\u0005\u0003', - '\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003\u0006\u0003', - '\u0006\u0003\u0006\u0005\u0006\u0231\n\u0006\u0003\u0007\u0003\u0007', - '\u0003\u0007\u0003\u0007\u0003\b\u0003\b\u0005\b\u0239\n\b\u0003\t\u0003', - '\t\u0003\t\u0003\n\u0003\n\u0003\n\u0003\n\u0003\n\u0003\u000b\u0003', - '\u000b\u0005\u000b\u0245\n\u000b\u0003\f\u0003\f\u0003\f\u0003\f\u0003', - '\f\u0005\f\u024c\n\f\u0003\r\u0003\r\u0003\u000e\u0003\u000e\u0003\u000e', - '\u0003\u000e\u0003\u000f\u0003\u000f\u0003\u000f\u0005\u000f\u0257\n', - '\u000f\u0003\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0003\u0010\u0003', - '\u0010\u0003\u0011\u0003\u0011\u0003\u0011\u0005\u0011\u0262\n\u0011', - '\u0003\u0012\u0003\u0012\u0003\u0013\u0003\u0013\u0005\u0013\u0268\n', - '\u0013\u0003\u0014\u0003\u0014\u0003\u0014\u0003\u0015\u0003\u0015\u0003', - '\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0016\u0005\u0016\u0274', - '\n\u0016\u0003\u0017\u0003\u0017\u0003\u0017\u0005\u0017\u0279\n\u0017', - '\u0003\u0018\u0003\u0018\u0005\u0018\u027d\n\u0018\u0003\u0019\u0003', - '\u0019\u0003\u0019\u0003\u0019\u0003\u0019\u0005\u0019\u0284\n\u0019', - '\u0003\u001a\u0003\u001a\u0005\u001a\u0288\n\u001a\u0003\u001b\u0003', - '\u001b\u0003\u001b\u0005\u001b\u028d\n\u001b\u0003\u001c\u0003\u001c', - '\u0003\u001c\u0005\u001c\u0292\n\u001c\u0003\u001d\u0003\u001d\u0003', - '\u001d\u0003\u001d\u0003\u001d\u0005\u001d\u0299\n\u001d\u0003\u001e', - '\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e', - '\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e', - '\u0005\u001e\u02a8\n\u001e\u0003\u001f\u0003\u001f\u0003\u001f\u0003', - '\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003', - '\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003', - '\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003', - '\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003', - '\u001f\u0003\u001f\u0005\u001f\u02c7\n\u001f\u0003\u001f\u0003\u001f', - '\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f', - '\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f', - '\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f', - '\u0003\u001f\u0007\u001f\u02de\n\u001f\f\u001f\u000e\u001f\u02e1\u000b', - '\u001f\u0003 \u0003 \u0005 \u02e5\n \u0003!\u0003!\u0005!\u02e9\n!\u0003', - '"\u0003"\u0003"\u0003"\u0003"\u0003"\u0003"\u0003"\u0003#\u0003', - '#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003#\u0003$\u0003$\u0003$\u0003', - '%\u0003%\u0003%\u0003%\u0003%\u0003%\u0003%\u0003%\u0005%\u0306\n%\u0003', - "&\u0003&\u0003&\u0005&\u030b\n&\u0003'\u0003'\u0003(\u0003(\u0003", - '(\u0003(\u0003(\u0003(\u0007(\u0315\n(\f(\u000e(\u0318\u000b(\u0003', - ')\u0003)\u0003)\u0003)\u0003)\u0003)\u0003)\u0003)\u0005)\u0322\n)\u0003', - '*\u0003*\u0005*\u0326\n*\u0003+\u0003+\u0003+\u0005+\u032b\n+\u0003', - ',\u0003,\u0003-\u0003-\u0005-\u0331\n-\u0003.\u0003.\u0003.\u0003/\u0003', - '/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0005/\u0340', - '\n/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003', - '/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003', - '/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003', - '/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003', - '/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0003/\u0007/\u0372', - '\n/\f/\u000e/\u0375\u000b/\u00030\u00030\u00030\u00030\u00030\u0005', - '0\u037c\n0\u00031\u00031\u00032\u00032\u00032\u00032\u00033\u00033\u0003', - '3\u00033\u00033\u00033\u00033\u00033\u00033\u00033\u00053\u038e\n3\u0003', - '4\u00034\u00034\u00054\u0393\n4\u00035\u00035\u00035\u00036\u00036\u0003', - '7\u00037\u00038\u00038\u00039\u00039\u00039\u00059\u03a1\n9\u0003:\u0003', - ':\u0003:\u0003:\u0003:\u0003:\u0003:\u0003:\u0003:\u0003:\u0003:\u0003', - ':\u0003:\u0003:\u0003:\u0005:\u03b2\n:\u0003;\u0003;\u0003;\u0003;\u0003', - '<\u0003<\u0003<\u0003<\u0003<\u0003=\u0003=\u0003=\u0003=\u0003=\u0003', - '=\u0005=\u03c3\n=\u0003>\u0003>\u0005>\u03c7\n>\u0003?\u0003?\u0003', - '?\u0003?\u0003?\u0003?\u0007?\u03cf\n?\f?\u000e?\u03d2\u000b?\u0003', - '@\u0003@\u0003@\u0003A\u0003A\u0003B\u0003B\u0003C\u0003C\u0003C\u0003', - 'C\u0005C\u03df\nC\u0003D\u0003D\u0005D\u03e3\nD\u0003E\u0003E\u0003', - 'E\u0003E\u0003E\u0003F\u0003F\u0003F\u0003F\u0003F\u0003G\u0003G\u0005', - 'G\u03f1\nG\u0003H\u0003H\u0003H\u0003I\u0003I\u0003I\u0003I\u0003I\u0003', - 'I\u0007I\u03fc\nI\fI\u000eI\u03ff\u000bI\u0003J\u0003J\u0003J\u0003', - 'J\u0003K\u0003K\u0003K\u0005K\u0408\nK\u0003L\u0003L\u0003L\u0003L\u0003', - 'L\u0003L\u0007L\u0410\nL\fL\u000eL\u0413\u000bL\u0003M\u0003M\u0003', - 'M\u0003M\u0003N\u0003N\u0005N\u041b\nN\u0003O\u0003O\u0003O\u0003P\u0003', - 'P\u0005P\u0422\nP\u0003Q\u0003Q\u0003Q\u0003Q\u0003Q\u0003Q\u0003Q\u0005', - 'Q\u042b\nQ\u0003R\u0003R\u0003R\u0003R\u0003R\u0003R\u0007R\u0433\n', - 'R\fR\u000eR\u0436\u000bR\u0003S\u0003S\u0003S\u0003T\u0003T\u0005T\u043d', - '\nT\u0003U\u0003U\u0003U\u0003V\u0003V\u0005V\u0444\nV\u0003W\u0003', - 'W\u0003W\u0003X\u0003X\u0005X\u044b\nX\u0003Y\u0003Y\u0003Y\u0003Y\u0003', - 'Z\u0003Z\u0003Z\u0003Z\u0003Z\u0003Z\u0007Z\u0457\nZ\fZ\u000eZ\u045a', - '\u000bZ\u0003[\u0003[\u0003[\u0003[\u0003\\\u0003\\\u0005\\\u0462\n', - '\\\u0003]\u0003]\u0003^\u0003^\u0003^\u0003^\u0005^\u046a\n^\u0003_', - '\u0003_\u0003`\u0003`\u0003a\u0003a\u0005a\u0472\na\u0003b\u0003b\u0003', - 'b\u0003c\u0003c\u0005c\u0479\nc\u0003d\u0003d\u0003d\u0003e\u0003e\u0003', - 'e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003e\u0003', - 'e\u0003e\u0003e\u0003e\u0005e\u048e\ne\u0003f\u0003f\u0003f\u0003f\u0003', - 'f\u0003f\u0003f\u0003f\u0003f\u0003f\u0003f\u0003f\u0003f\u0005f\u049d', - '\nf\u0003g\u0003g\u0003g\u0003g\u0005g\u04a3\ng\u0003h\u0003h\u0003', - 'h\u0003h\u0003h\u0003h\u0003h\u0003h\u0003h\u0003h\u0003h\u0003h\u0003', - 'h\u0003h\u0003h\u0003h\u0003h\u0005h\u04b6\nh\u0003i\u0003i\u0003i\u0003', - 'j\u0003j\u0003j\u0003j\u0003j\u0003j\u0007j\u04c1\nj\fj\u000ej\u04c4', - '\u000bj\u0003k\u0003k\u0003k\u0003k\u0005k\u04ca\nk\u0003l\u0003l\u0003', - 'l\u0005l\u04cf\nl\u0003m\u0003m\u0003m\u0003m\u0003m\u0003m\u0003n\u0003', - 'n\u0003n\u0003n\u0003n\u0003n\u0003n\u0003n\u0003o\u0003o\u0005o\u04e1', - '\no\u0003p\u0003p\u0003p\u0003q\u0003q\u0003q\u0003q\u0005q\u04ea\n', - 'q\u0003r\u0003r\u0003r\u0003s\u0003s\u0003s\u0003t\u0003t\u0003t\u0003', - 'u\u0003u\u0003u\u0003u\u0003u\u0003u\u0003u\u0003u\u0003u\u0003u\u0003', - 'u\u0003u\u0003u\u0003u\u0003u\u0005u\u0504\nu\u0003v\u0003v\u0003v\u0003', - 'v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003v\u0003', - 'v\u0003v\u0003v\u0005v\u0516\nv\u0003w\u0003w\u0003w\u0003w\u0003w\u0003', - 'w\u0003w\u0003w\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003', - 'x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003', - 'x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0003x\u0005x\u0539\nx\u0003', - 'y\u0003y\u0003y\u0003z\u0003z\u0003z\u0003z\u0003z\u0003z\u0007z\u0544', - '\nz\fz\u000ez\u0547\u000bz\u0003{\u0003{\u0003{\u0003{\u0003{\u0003', - '{\u0003{\u0003{\u0003{\u0003{\u0003{\u0005{\u0554\n{\u0003|\u0003|\u0003', - '|\u0003|\u0003|\u0003}\u0003}\u0005}\u055d\n}\u0003~\u0003~\u0003~\u0003', - '~\u0003\u007f\u0003\u007f\u0003\u007f\u0003\u007f\u0003\u007f\u0003', - '\u007f\u0003\u007f\u0007\u007f\u056a\n\u007f\f\u007f\u000e\u007f\u056d', - '\u000b\u007f\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0080\u0003\u0080', - '\u0003\u0080\u0007\u0080\u0575\n\u0080\f\u0080\u000e\u0080\u0578\u000b', - '\u0080\u0003\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003', - '\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003', - '\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003\u0081\u0003', - '\u0081\u0003\u0081\u0003\u0081\u0005\u0081\u058e\n\u0081\u0003\u0082', - '\u0003\u0082\u0003\u0083\u0003\u0083\u0003\u0083\u0005\u0083\u0595\n', - '\u0083\u0003\u0084\u0003\u0084\u0003\u0084\u0003\u0085\u0003\u0085\u0003', - '\u0085\u0003\u0085\u0003\u0085\u0003\u0085\u0007\u0085\u05a0\n\u0085', - '\f\u0085\u000e\u0085\u05a3\u000b\u0085\u0003\u0086\u0003\u0086\u0003', - '\u0086\u0003\u0087\u0003\u0087\u0003\u0087\u0003\u0087\u0003\u0087\u0003', - '\u0087\u0003\u0087\u0003\u0087\u0003\u0087\u0003\u0087\u0003\u0087\u0003', - '\u0087\u0003\u0087\u0003\u0088\u0003\u0088\u0003\u0089\u0003\u0089\u0005', - '\u0089\u05b9\n\u0089\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a', - '\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a', - '\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a', - '\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0003\u008a\u0005\u008a', - '\u05d0\n\u008a\u0003\u008b\u0003\u008b\u0003\u008b\u0003\u008b\u0003', - '\u008b\u0003\u008b\u0003\u008b\u0003\u008b\u0003\u008b\u0003\u008b\u0003', - '\u008b\u0003\u008b\u0003\u008b\u0003\u008b\u0005\u008b\u05e0\n\u008b', - '\u0003\u008c\u0003\u008c\u0003\u008c\u0003\u008c\u0003\u008c\u0003\u008c', - '\u0003\u008c\u0005\u008c\u05e9\n\u008c\u0003\u008d\u0003\u008d\u0003', - '\u008d\u0003\u008d\u0003\u008d\u0003\u008d\u0003\u008d\u0003\u008d\u0003', - '\u008d\u0003\u008d\u0005\u008d\u05f5\n\u008d\u0003\u008e\u0003\u008e', - '\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f', - '\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f\u0003\u008f', - '\u0003\u008f\u0003\u008f\u0005\u008f\u0607\n\u008f\u0003\u0090\u0003', - '\u0090\u0003\u0090\u0003\u0090\u0003\u0090\u0003\u0090\u0003\u0090\u0003', - '\u0090\u0003\u0090\u0003\u0090\u0003\u0090\u0003\u0090\u0005\u0090\u0615', - '\n\u0090\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0091\u0003\u0091', - '\u0003\u0091\u0007\u0091\u061d\n\u0091\f\u0091\u000e\u0091\u0620\u000b', - '\u0091\u0003\u0092\u0003\u0092\u0003\u0093\u0003\u0093\u0003\u0093\u0003', - '\u0093\u0003\u0093\u0003\u0093\u0007\u0093\u062a\n\u0093\f\u0093\u000e', - '\u0093\u062d\u000b\u0093\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094', - '\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094', - '\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094', - '\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094', - '\u0003\u0094\u0003\u0094\u0003\u0094\u0003\u0094\u0005\u0094\u0649\n', - '\u0094\u0003\u0095\u0003\u0095\u0003\u0095\u0003\u0095\u0003\u0095\u0003', - '\u0095\u0007\u0095\u0651\n\u0095\f\u0095\u000e\u0095\u0654\u000b\u0095', - '\u0003\u0096\u0003\u0096\u0003\u0096\u0003\u0096\u0005\u0096\u065a\n', - '\u0096\u0003\u0097\u0003\u0097\u0003\u0097\u0003\u0097\u0003\u0097\u0003', - '\u0097\u0003\u0097\u0003\u0097\u0003\u0097\u0003\u0097\u0003\u0097\u0003', - '\u0097\u0005\u0097\u0668\n\u0097\u0003\u0098\u0003\u0098\u0003\u0098', - '\u0003\u0098\u0005\u0098\u066e\n\u0098\u0003\u0099\u0003\u0099\u0003', - '\u0099\u0003\u0099\u0005\u0099\u0674\n\u0099\u0003\u009a\u0003\u009a', - '\u0003\u009a\u0003\u009a\u0005\u009a\u067a\n\u009a\u0003\u009b\u0003', - '\u009b\u0003\u009b\u0003\u009b\u0005\u009b\u0680\n\u009b\u0003\u009c', - '\u0003\u009c\u0003\u009c\u0003\u009c\u0003\u009d\u0003\u009d\u0003\u009e', - '\u0003\u009e\u0003\u009e\u0003\u009e\u0003\u009e\u0003\u009e\u0003\u009e', - '\u0003\u009e\u0003\u009e\u0003\u009e\u0003\u009e\u0003\u009e\u0003\u009e', - '\u0005\u009e\u0695\n\u009e\u0003\u009f\u0003\u009f\u0003\u009f\u0003', - '\u009f\u0003\u009f\u0003\u009f\u0003\u009f\u0003\u009f\u0003\u009f\u0003', - '\u009f\u0005\u009f\u06a1\n\u009f\u0003\u00a0\u0003\u00a0\u0005\u00a0', - '\u06a5\n\u00a0\u0003\u00a1\u0003\u00a1\u0003\u00a2\u0003\u00a2\u0005', - '\u00a2\u06ab\n\u00a2\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a3', - '\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a3\u0003\u00a3', - '\u0005\u00a3\u06b7\n\u00a3\u0003\u00a4\u0003\u00a4\u0003\u00a4\u0003', - '\u00a4\u0003\u00a4\u0003\u00a4\u0003\u00a4\u0003\u00a4\u0005\u00a4\u06c1', - '\n\u00a4\u0003\u00a5\u0003\u00a5\u0003\u00a5\u0003\u00a5\u0003\u00a5', - '\u0003\u00a5\u0003\u00a5\u0003\u00a5\u0003\u00a5\u0005\u00a5\u06cc\n', - '\u00a5\u0003\u00a6\u0003\u00a6\u0003\u00a6\u0003\u00a6\u0003\u00a6\u0003', - '\u00a6\u0003\u00a6\u0003\u00a6\u0005\u00a6\u06d6\n\u00a6\u0003\u00a7', - '\u0003\u00a7\u0005\u00a7\u06da\n\u00a7\u0003\u00a8\u0003\u00a8\u0003', - '\u00a8\u0003\u00a8\u0003\u00a8\u0003\u00a8\u0005\u00a8\u06e2\n\u00a8', - '\u0003\u00a9\u0003\u00a9\u0005\u00a9\u06e6\n\u00a9\u0003\u00aa\u0003', - '\u00aa\u0003\u00aa\u0003\u00ab\u0003\u00ab\u0003\u00ab\u0003\u00ab\u0003', - '\u00ab\u0003\u00ab\u0007\u00ab\u06f1\n\u00ab\f\u00ab\u000e\u00ab\u06f4', - '\u000b\u00ab\u0003\u00ac\u0003\u00ac\u0003\u00ac\u0003\u00ad\u0003\u00ad', - '\u0003\u00ad\u0003\u00ad\u0003\u00ad\u0003\u00ad\u0003\u00ad\u0003\u00ad', - '\u0003\u00ad\u0003\u00ad\u0005\u00ad\u0703\n\u00ad\u0003\u00ae\u0003', - '\u00ae\u0003\u00af\u0003\u00af\u0003\u00b0\u0003\u00b0\u0003\u00b0\u0005', - '\u00b0\u070c\n\u00b0\u0003\u00b1\u0003\u00b1\u0003\u00b1\u0003\u00b1', - '\u0003\u00b1\u0005\u00b1\u0713\n\u00b1\u0003\u00b2\u0003\u00b2\u0003', - '\u00b3\u0003\u00b3\u0003\u00b3\u0003\u00b3\u0003\u00b3\u0003\u00b3\u0003', - '\u00b3\u0003\u00b3\u0003\u00b3\u0003\u00b3\u0003\u00b3\u0003\u00b3\u0003', - '\u00b3\u0003\u00b3\u0003\u00b3\u0003\u00b3\u0003\u00b3\u0003\u00b3\u0003', - '\u00b3\u0003\u00b3\u0003\u00b3\u0005\u00b3\u072c\n\u00b3\u0003\u00b4', - '\u0003\u00b4\u0003\u00b4\u0003\u00b4\u0003\u00b4\u0003\u00b4\u0003\u00b4', - '\u0003\u00b4\u0003\u00b4\u0003\u00b4\u0003\u00b4\u0003\u00b4\u0003\u00b4', - '\u0003\u00b4\u0003\u00b4\u0003\u00b4\u0005\u00b4\u073e\n\u00b4\u0003', - '\u00b5\u0003\u00b5\u0003\u00b5\u0003\u00b5\u0003\u00b5\u0003\u00b5\u0003', - '\u00b5\u0003\u00b5\u0003\u00b5\u0003\u00b6\u0003\u00b6\u0003\u00b6\u0003', - '\u00b6\u0003\u00b6\u0003\u00b6\u0003\u00b6\u0003\u00b6\u0003\u00b6\u0003', - '\u00b7\u0003\u00b7\u0003\u00b7\u0005\u00b7\u0755\n\u00b7\u0003\u00b8', - '\u0003\u00b8\u0005\u00b8\u0759\n\u00b8\u0003\u00b9\u0003\u00b9\u0003', - '\u00ba\u0003\u00ba\u0003\u00ba\u0003\u00ba\u0003\u00ba\u0003\u00ba\u0003', - '\u00ba\u0003\u00ba\u0003\u00ba\u0003\u00ba\u0005\u00ba\u0767\n\u00ba', - '\u0003\u00bb\u0003\u00bb\u0003\u00bb\u0003\u00bb\u0003\u00bb\u0005\u00bb', - '\u076e\n\u00bb\u0003\u00bc\u0003\u00bc\u0003\u00bc\u0003\u00bc\u0003', - '\u00bc\u0003\u00bc\u0007\u00bc\u0776\n\u00bc\f\u00bc\u000e\u00bc\u0779', - '\u000b\u00bc\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00bd', - '\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00bd', - '\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0003\u00bd', - '\u0003\u00bd\u0003\u00bd\u0003\u00bd\u0005\u00bd\u078f\n\u00bd\u0003', - '\u00be\u0003\u00be\u0003\u00be\u0003\u00be\u0003\u00bf\u0003\u00bf\u0003', - '\u00bf\u0003\u00bf\u0003\u00bf\u0003\u00bf\u0003\u00bf\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003\u00c0\u0003', - '\u00c0\u0005\u00c0\u0816\n\u00c0\u0003\u00c1\u0003\u00c1\u0005\u00c1', - '\u081a\n\u00c1\u0003\u00c2\u0003\u00c2\u0003\u00c2\u0003\u00c2\u0003', - '\u00c2\u0003\u00c2\u0007\u00c2\u0822\n\u00c2\f\u00c2\u000e\u00c2\u0825', - '\u000b\u00c2\u0003\u00c3\u0003\u00c3\u0003\u00c4\u0003\u00c4\u0003\u00c4', - '\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4', - '\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4', - '\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4', - '\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0003\u00c4\u0007\u00c4', - '\u0843\n\u00c4\f\u00c4\u000e\u00c4\u0846\u000b\u00c4\u0003\u00c5\u0003', - '\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0005\u00c5\u084e', - '\n\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0003\u00c5', - '\u0003\u00c5\u0003\u00c5\u0003\u00c5\u0007\u00c5\u08dc\n\u00c5\f\u00c5', - '\u000e\u00c5\u08df\u000b\u00c5\u0003\u00c6\u0003\u00c6\u0003\u00c7\u0003', - '\u00c7\u0003\u00c7\u0003\u00c7\u0003\u00c7\u0003\u00c7\u0003\u00c7\u0003', - '\u00c7\u0003\u00c7\u0003\u00c7\u0003\u00c7\u0003\u00c7\u0003\u00c7\u0003', - '\u00c7\u0003\u00c7\u0003\u00c7\u0005\u00c7\u08f3\n\u00c7\u0003\u00c8', - '\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8', - '\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8', - '\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8', - '\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8', - '\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8', - '\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8', - '\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8', - '\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8', - '\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8', - '\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8\u0003\u00c8', - '\u0007\u00c8\u0932\n\u00c8\f\u00c8\u000e\u00c8\u0935\u000b\u00c8\u0003', - '\u00c9\u0003\u00c9\u0003\u00ca\u0003\u00ca\u0005\u00ca\u093b\n\u00ca', - '\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cb\u0003\u00cc\u0003\u00cc', - '\u0005\u00cc\u0943\n\u00cc\u0003\u00cd\u0003\u00cd\u0003\u00cd\u0003', - '\u00cd\u0003\u00cd\u0003\u00cd\u0007\u00cd\u094b\n\u00cd\f\u00cd\u000e', - '\u00cd\u094e\u000b\u00cd\u0003\u00ce\u0003\u00ce\u0003\u00ce\u0003\u00ce', - '\u0003\u00ce\u0005\u00ce\u0955\n\u00ce\u0003\u00cf\u0003\u00cf\u0003', - '\u00cf\u0003\u00cf\u0003\u00d0\u0003\u00d0\u0005\u00d0\u095d\n\u00d0', - '\u0003\u00d1\u0003\u00d1\u0003\u00d1\u0003\u00d1\u0003\u00d1\u0003\u00d1', - '\u0007\u00d1\u0965\n\u00d1\f\u00d1\u000e\u00d1\u0968\u000b\u00d1\u0003', - '\u00d2\u0003\u00d2\u0003\u00d3\u0003\u00d3\u0003\u00d3\u0003\u00d3\u0003', - '\u00d4\u0003\u00d4\u0005\u00d4\u0972\n\u00d4\u0003\u00d5\u0003\u00d5', - '\u0003\u00d5\u0003\u00d5\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d6', - '\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d6\u0003\u00d6', - '\u0003\u00d6\u0003\u00d6\u0007\u00d6\u0984\n\u00d6\f\u00d6\u000e\u00d6', - '\u0987\u000b\u00d6\u0003\u00d7\u0003\u00d7\u0003\u00d7\u0003\u00d8\u0003', - '\u00d8\u0003\u00d8\u0005\u00d8\u098f\n\u00d8\u0003\u00d9\u0003\u00d9', - '\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9', - '\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9', - '\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9', - '\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9', - '\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9', - '\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0003\u00d9\u0005\u00d9\u09b5\n', - '\u00d9\u0003\u00da\u0003\u00da\u0003\u00db\u0003\u00db\u0005\u00db\u09bb', - '\n\u00db\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dc', - '\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dc', - '\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dc', - '\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dc', - '\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dc\u0003\u00dc', - '\u0005\u00dc\u09da\n\u00dc\u0003\u00dd\u0003\u00dd\u0003\u00dd\u0003', - '\u00dd\u0003\u00dd\u0003\u00dd\u0007\u00dd\u09e2\n\u00dd\f\u00dd\u000e', - '\u00dd\u09e5\u000b\u00dd\u0003\u00de\u0003\u00de\u0003\u00de\u0003\u00de', - '\u0003\u00de\u0003\u00de\u0003\u00de\u0003\u00de\u0003\u00de\u0003\u00de', - '\u0003\u00de\u0003\u00de\u0003\u00de\u0003\u00de\u0003\u00de\u0003\u00de', - '\u0003\u00de\u0003\u00de\u0003\u00de\u0003\u00de\u0005\u00de\u09fb\n', - '\u00de\u0003\u00df\u0003\u00df\u0003\u00df\u0003\u00e0\u0003\u00e0\u0003', - '\u00e0\u0003\u00e0\u0003\u00e0\u0003\u00e0\u0003\u00e0\u0003\u00e0\u0003', - '\u00e0\u0003\u00e0\u0003\u00e0\u0003\u00e0\u0003\u00e0\u0003\u00e0\u0003', - '\u00e0\u0003\u00e0\u0003\u00e0\u0003\u00e0\u0003\u00e0\u0003\u00e0\u0003', - '\u00e0\u0003\u00e0\u0003\u00e0\u0005\u00e0\u0a17\n\u00e0\u0003\u00e1', - '\u0003\u00e1\u0003\u00e1\u0003\u00e1\u0003\u00e1\u0003\u00e1\u0003\u00e1', - '\u0003\u00e1\u0003\u00e1\u0005\u00e1\u0a22\n\u00e1\u0003\u00e2\u0003', - '\u00e2\u0003\u00e2\u0003\u00e2\u0003\u00e2\u0003\u00e2\u0003\u00e2\u0003', - '\u00e2\u0003\u00e2\u0005\u00e2\u0a2d\n\u00e2\u0003\u00e3\u0003\u00e3', - '\u0005\u00e3\u0a31\n\u00e3\u0003\u00e4\u0003\u00e4\u0003\u00e4\u0003', - '\u00e4\u0003\u00e4\u0003\u00e4\u0003\u00e4\u0003\u00e4\u0003\u00e4\u0005', - '\u00e4\u0a3c\n\u00e4\u0003\u00e5\u0003\u00e5\u0003\u00e5\u0005\u00e5', - '\u0a41\n\u00e5\u0003\u00e6\u0003\u00e6\u0003\u00e6\u0003\u00e6\u0003', - '\u00e6\u0003\u00e6\u0007\u00e6\u0a49\n\u00e6\f\u00e6\u000e\u00e6\u0a4c', - '\u000b\u00e6\u0003\u00e7\u0003\u00e7\u0003\u00e7\u0003\u00e7\u0003\u00e8', - '\u0003\u00e8\u0003\u00e8\u0003\u00e8\u0003\u00e8\u0003\u00e8\u0003\u00e8', - '\u0003\u00e9\u0003\u00e9\u0005\u00e9\u0a5b\n\u00e9\u0003\u00ea\u0003', - '\u00ea\u0003\u00ea\u0003\u00ea\u0005\u00ea\u0a61\n\u00ea\u0003\u00eb', - '\u0003\u00eb\u0003\u00eb\u0003\u00eb\u0003\u00eb\u0005\u00eb\u0a68\n', - '\u00eb\u0003\u00ec\u0003\u00ec\u0003\u00ed\u0003\u00ed\u0003\u00ed\u0003', - '\u00ed\u0003\u00ed\u0003\u00ed\u0003\u00ed\u0003\u00ed\u0003\u00ed\u0003', - '\u00ed\u0003\u00ed\u0005\u00ed\u0a77\n\u00ed\u0003\u00ee\u0003\u00ee', - '\u0003\u00ee\u0003\u00ee\u0003\u00ee\u0003\u00ee\u0005\u00ee\u0a7f\n', - '\u00ee\u0003\u00ef\u0003\u00ef\u0003\u00ef\u0003\u00ef\u0003\u00ef\u0003', - '\u00ef\u0003\u00ef\u0003\u00ef\u0003\u00ef\u0005\u00ef\u0a8a\n\u00ef', - '\u0003\u00f0\u0003\u00f0\u0003\u00f1\u0003\u00f1\u0005\u00f1\u0a90\n', - '\u00f1\u0003\u00f2\u0003\u00f2\u0003\u00f2\u0003\u00f2\u0005\u00f2\u0a96', - '\n\u00f2\u0003\u00f3\u0003\u00f3\u0003\u00f3\u0005\u00f3\u0a9b\n\u00f3', - '\u0003\u00f4\u0003\u00f4\u0003\u00f5\u0003\u00f5\u0003\u00f5\u0003\u00f5', - '\u0003\u00f5\u0003\u00f5\u0005\u00f5\u0aa5\n\u00f5\u0003\u00f6\u0003', - '\u00f6\u0005\u00f6\u0aa9\n\u00f6\u0003\u00f7\u0003\u00f7\u0003\u00f7', - '\u0003\u00f7\u0005\u00f7\u0aaf\n\u00f7\u0003\u00f8\u0003\u00f8\u0003', - '\u00f8\u0003\u00f8\u0003\u00f9\u0003\u00f9\u0003\u00f9\u0003\u00fa\u0003', - '\u00fa\u0003\u00fa\u0003\u00fa\u0003\u00fb\u0003\u00fb\u0003\u00fc\u0003', - '\u00fc\u0005\u00fc\u0ac0\n\u00fc\u0003\u00fd\u0003\u00fd\u0003\u00fe', - '\u0003\u00fe\u0003\u00fe\u0003\u00fe\u0005\u00fe\u0ac8\n\u00fe\u0003', - '\u00ff\u0003\u00ff\u0003\u0100\u0003\u0100\u0005\u0100\u0ace\n\u0100', - '\u0003\u0101\u0003\u0101\u0003\u0101\u0003\u0101\u0003\u0102\u0003\u0102', - '\u0003\u0102\u0003\u0103\u0003\u0103\u0003\u0103\u0003\u0103\u0003\u0104', - '\u0003\u0104\u0003\u0104\u0003\u0105\u0003\u0105\u0003\u0105\u0003\u0106', - '\u0003\u0106\u0003\u0106\u0003\u0106\u0003\u0106\u0002\u001e\u0006<', - 'N\\|\u0090\u0096\u00a2\u00b2\u00d2\u00f2\u00fc\u00fe\u0108\u0120\u0124', - '\u0128\u0154\u0176\u0182\u0186\u0188\u018e\u0198\u01a0\u01aa\u01b8\u01ca', - '\u0107\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a', - '\u001c\u001e "$&(*,.02468:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080', - '\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092\u0094\u0096\u0098', - '\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0', - '\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8', - '\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0', - '\u00e2\u00e4\u00e6\u00e8\u00ea\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8', - '\u00fa\u00fc\u00fe\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e\u0110', - '\u0112\u0114\u0116\u0118\u011a\u011c\u011e\u0120\u0122\u0124\u0126\u0128', - '\u012a\u012c\u012e\u0130\u0132\u0134\u0136\u0138\u013a\u013c\u013e\u0140', - '\u0142\u0144\u0146\u0148\u014a\u014c\u014e\u0150\u0152\u0154\u0156\u0158', - '\u015a\u015c\u015e\u0160\u0162\u0164\u0166\u0168\u016a\u016c\u016e\u0170', - '\u0172\u0174\u0176\u0178\u017a\u017c\u017e\u0180\u0182\u0184\u0186\u0188', - '\u018a\u018c\u018e\u0190\u0192\u0194\u0196\u0198\u019a\u019c\u019e\u01a0', - '\u01a2\u01a4\u01a6\u01a8\u01aa\u01ac\u01ae\u01b0\u01b2\u01b4\u01b6\u01b8', - '\u01ba\u01bc\u01be\u01c0\u01c2\u01c4\u01c6\u01c8\u01ca\u01cc\u01ce\u01d0', - '\u01d2\u01d4\u01d6\u01d8\u01da\u01dc\u01de\u01e0\u01e2\u01e4\u01e6\u01e8', - '\u01ea\u01ec\u01ee\u01f0\u01f2\u01f4\u01f6\u01f8\u01fa\u01fc\u01fe\u0200', - '\u0202\u0204\u0206\u0208\u020a\u0002\u0015\u0004\u0002))aa\u0005\u0002', - 'OO\u00b0\u00b0\u00e1\u00e1\u0004\u0002\\\\\u00d9\u00d9\u0004\u00022', - '2\u00ad\u00ad\u0004\u0002**II\u0004\u0002[[\u0081\u0081\u0007\u0002', - 'GGuu\u00c3\u00c3\u00db\u00db\u00ef\u00ef\u0004\u0002]]\u00d3\u00d3\u0004', - '\u0002##NN\u0005\u0002**II\u008e\u008e\u0004\u0002\u007f\u007f\u00e2', - '\u00e2\u0007\u0002\u0003\u0005XX\u008e\u008e\u0095\u0095\u00d2\u00d2', - '\u0003\u0002\u00f0\u00f2\u0004\u0002\u00b5\u00b5\u00ef\u00ef\u0005\u0002', - 'gg\u00af\u00af\u00be\u00be\u0004\u0002^^\u00a7\u00a7\u0004\u0002##K', - 'K\u0004\u0002,,\u00c8\u00c8\u0004\u0002\u00cf\u00d0\u00ec\u00ec\u0002', - '\u0b29\u0002\u020c\u0003\u0002\u0002\u0002\u0004\u0217\u0003\u0002\u0002', - '\u0002\u0006\u0219\u0003\u0002\u0002\u0002\b\u0226\u0003\u0002\u0002', - '\u0002\n\u0230\u0003\u0002\u0002\u0002\f\u0232\u0003\u0002\u0002\u0002', - '\u000e\u0238\u0003\u0002\u0002\u0002\u0010\u023a\u0003\u0002\u0002\u0002', - '\u0012\u023d\u0003\u0002\u0002\u0002\u0014\u0244\u0003\u0002\u0002\u0002', - '\u0016\u024b\u0003\u0002\u0002\u0002\u0018\u024d\u0003\u0002\u0002\u0002', - '\u001a\u024f\u0003\u0002\u0002\u0002\u001c\u0256\u0003\u0002\u0002\u0002', - '\u001e\u0258\u0003\u0002\u0002\u0002 \u0261\u0003\u0002\u0002\u0002', - '"\u0263\u0003\u0002\u0002\u0002$\u0267\u0003\u0002\u0002\u0002&\u0269', - '\u0003\u0002\u0002\u0002(\u026c\u0003\u0002\u0002\u0002*\u0273\u0003', - '\u0002\u0002\u0002,\u0278\u0003\u0002\u0002\u0002.\u027c\u0003\u0002', - '\u0002\u00020\u0283\u0003\u0002\u0002\u00022\u0287\u0003\u0002\u0002', - '\u00024\u028c\u0003\u0002\u0002\u00026\u0291\u0003\u0002\u0002\u0002', - '8\u0298\u0003\u0002\u0002\u0002:\u02a7\u0003\u0002\u0002\u0002<\u02c6', - '\u0003\u0002\u0002\u0002>\u02e4\u0003\u0002\u0002\u0002@\u02e8\u0003', - '\u0002\u0002\u0002B\u02ea\u0003\u0002\u0002\u0002D\u02f2\u0003\u0002', - '\u0002\u0002F\u02fa\u0003\u0002\u0002\u0002H\u0305\u0003\u0002\u0002', - '\u0002J\u030a\u0003\u0002\u0002\u0002L\u030c\u0003\u0002\u0002\u0002', - 'N\u030e\u0003\u0002\u0002\u0002P\u0321\u0003\u0002\u0002\u0002R\u0325', - '\u0003\u0002\u0002\u0002T\u032a\u0003\u0002\u0002\u0002V\u032c\u0003', - '\u0002\u0002\u0002X\u0330\u0003\u0002\u0002\u0002Z\u0332\u0003\u0002', - '\u0002\u0002\\\u033f\u0003\u0002\u0002\u0002^\u037b\u0003\u0002\u0002', - '\u0002`\u037d\u0003\u0002\u0002\u0002b\u037f\u0003\u0002\u0002\u0002', - 'd\u038d\u0003\u0002\u0002\u0002f\u0392\u0003\u0002\u0002\u0002h\u0394', - '\u0003\u0002\u0002\u0002j\u0397\u0003\u0002\u0002\u0002l\u0399\u0003', - '\u0002\u0002\u0002n\u039b\u0003\u0002\u0002\u0002p\u03a0\u0003\u0002', - '\u0002\u0002r\u03b1\u0003\u0002\u0002\u0002t\u03b3\u0003\u0002\u0002', - '\u0002v\u03b7\u0003\u0002\u0002\u0002x\u03c2\u0003\u0002\u0002\u0002', - 'z\u03c6\u0003\u0002\u0002\u0002|\u03c8\u0003\u0002\u0002\u0002~\u03d3', - '\u0003\u0002\u0002\u0002\u0080\u03d6\u0003\u0002\u0002\u0002\u0082\u03d8', - '\u0003\u0002\u0002\u0002\u0084\u03de\u0003\u0002\u0002\u0002\u0086\u03e2', - '\u0003\u0002\u0002\u0002\u0088\u03e4\u0003\u0002\u0002\u0002\u008a\u03e9', - '\u0003\u0002\u0002\u0002\u008c\u03f0\u0003\u0002\u0002\u0002\u008e\u03f2', - '\u0003\u0002\u0002\u0002\u0090\u03f5\u0003\u0002\u0002\u0002\u0092\u0400', - '\u0003\u0002\u0002\u0002\u0094\u0407\u0003\u0002\u0002\u0002\u0096\u0409', - '\u0003\u0002\u0002\u0002\u0098\u0414\u0003\u0002\u0002\u0002\u009a\u041a', - '\u0003\u0002\u0002\u0002\u009c\u041c\u0003\u0002\u0002\u0002\u009e\u0421', - '\u0003\u0002\u0002\u0002\u00a0\u042a\u0003\u0002\u0002\u0002\u00a2\u042c', - '\u0003\u0002\u0002\u0002\u00a4\u0437\u0003\u0002\u0002\u0002\u00a6\u043c', - '\u0003\u0002\u0002\u0002\u00a8\u043e\u0003\u0002\u0002\u0002\u00aa\u0443', - '\u0003\u0002\u0002\u0002\u00ac\u0445\u0003\u0002\u0002\u0002\u00ae\u044a', - '\u0003\u0002\u0002\u0002\u00b0\u044c\u0003\u0002\u0002\u0002\u00b2\u0450', - '\u0003\u0002\u0002\u0002\u00b4\u045b\u0003\u0002\u0002\u0002\u00b6\u0461', - '\u0003\u0002\u0002\u0002\u00b8\u0463\u0003\u0002\u0002\u0002\u00ba\u0469', - '\u0003\u0002\u0002\u0002\u00bc\u046b\u0003\u0002\u0002\u0002\u00be\u046d', - '\u0003\u0002\u0002\u0002\u00c0\u0471\u0003\u0002\u0002\u0002\u00c2\u0473', - '\u0003\u0002\u0002\u0002\u00c4\u0478\u0003\u0002\u0002\u0002\u00c6\u047a', - '\u0003\u0002\u0002\u0002\u00c8\u048d\u0003\u0002\u0002\u0002\u00ca\u049c', - '\u0003\u0002\u0002\u0002\u00cc\u04a2\u0003\u0002\u0002\u0002\u00ce\u04b5', - '\u0003\u0002\u0002\u0002\u00d0\u04b7\u0003\u0002\u0002\u0002\u00d2\u04ba', - '\u0003\u0002\u0002\u0002\u00d4\u04c9\u0003\u0002\u0002\u0002\u00d6\u04ce', - '\u0003\u0002\u0002\u0002\u00d8\u04d0\u0003\u0002\u0002\u0002\u00da\u04d6', - '\u0003\u0002\u0002\u0002\u00dc\u04e0\u0003\u0002\u0002\u0002\u00de\u04e2', - '\u0003\u0002\u0002\u0002\u00e0\u04e9\u0003\u0002\u0002\u0002\u00e2\u04eb', - '\u0003\u0002\u0002\u0002\u00e4\u04ee\u0003\u0002\u0002\u0002\u00e6\u04f1', - '\u0003\u0002\u0002\u0002\u00e8\u0503\u0003\u0002\u0002\u0002\u00ea\u0515', - '\u0003\u0002\u0002\u0002\u00ec\u0517\u0003\u0002\u0002\u0002\u00ee\u0538', - '\u0003\u0002\u0002\u0002\u00f0\u053a\u0003\u0002\u0002\u0002\u00f2\u053d', - '\u0003\u0002\u0002\u0002\u00f4\u0553\u0003\u0002\u0002\u0002\u00f6\u0555', - '\u0003\u0002\u0002\u0002\u00f8\u055c\u0003\u0002\u0002\u0002\u00fa\u055e', - '\u0003\u0002\u0002\u0002\u00fc\u0562\u0003\u0002\u0002\u0002\u00fe\u056e', - '\u0003\u0002\u0002\u0002\u0100\u058d\u0003\u0002\u0002\u0002\u0102\u058f', - '\u0003\u0002\u0002\u0002\u0104\u0594\u0003\u0002\u0002\u0002\u0106\u0596', - '\u0003\u0002\u0002\u0002\u0108\u0599\u0003\u0002\u0002\u0002\u010a\u05a4', - '\u0003\u0002\u0002\u0002\u010c\u05a7\u0003\u0002\u0002\u0002\u010e\u05b4', - '\u0003\u0002\u0002\u0002\u0110\u05b8\u0003\u0002\u0002\u0002\u0112\u05cf', - '\u0003\u0002\u0002\u0002\u0114\u05df\u0003\u0002\u0002\u0002\u0116\u05e8', - '\u0003\u0002\u0002\u0002\u0118\u05f4\u0003\u0002\u0002\u0002\u011a\u05f6', - '\u0003\u0002\u0002\u0002\u011c\u0606\u0003\u0002\u0002\u0002\u011e\u0614', - '\u0003\u0002\u0002\u0002\u0120\u0616\u0003\u0002\u0002\u0002\u0122\u0621', - '\u0003\u0002\u0002\u0002\u0124\u0623\u0003\u0002\u0002\u0002\u0126\u0648', - '\u0003\u0002\u0002\u0002\u0128\u064a\u0003\u0002\u0002\u0002\u012a\u0659', - '\u0003\u0002\u0002\u0002\u012c\u0667\u0003\u0002\u0002\u0002\u012e\u0669', - '\u0003\u0002\u0002\u0002\u0130\u066f\u0003\u0002\u0002\u0002\u0132\u0675', - '\u0003\u0002\u0002\u0002\u0134\u067b\u0003\u0002\u0002\u0002\u0136\u0681', - '\u0003\u0002\u0002\u0002\u0138\u0685\u0003\u0002\u0002\u0002\u013a\u0687', - '\u0003\u0002\u0002\u0002\u013c\u0696\u0003\u0002\u0002\u0002\u013e\u06a4', - '\u0003\u0002\u0002\u0002\u0140\u06a6\u0003\u0002\u0002\u0002\u0142\u06aa', - '\u0003\u0002\u0002\u0002\u0144\u06b6\u0003\u0002\u0002\u0002\u0146\u06c0', - '\u0003\u0002\u0002\u0002\u0148\u06cb\u0003\u0002\u0002\u0002\u014a\u06d5', - '\u0003\u0002\u0002\u0002\u014c\u06d9\u0003\u0002\u0002\u0002\u014e\u06e1', - '\u0003\u0002\u0002\u0002\u0150\u06e5\u0003\u0002\u0002\u0002\u0152\u06e7', - '\u0003\u0002\u0002\u0002\u0154\u06ea\u0003\u0002\u0002\u0002\u0156\u06f5', - '\u0003\u0002\u0002\u0002\u0158\u0702\u0003\u0002\u0002\u0002\u015a\u0704', - '\u0003\u0002\u0002\u0002\u015c\u0706\u0003\u0002\u0002\u0002\u015e\u070b', - '\u0003\u0002\u0002\u0002\u0160\u0712\u0003\u0002\u0002\u0002\u0162\u0714', - '\u0003\u0002\u0002\u0002\u0164\u072b\u0003\u0002\u0002\u0002\u0166\u073d', - '\u0003\u0002\u0002\u0002\u0168\u073f\u0003\u0002\u0002\u0002\u016a\u0748', - '\u0003\u0002\u0002\u0002\u016c\u0754\u0003\u0002\u0002\u0002\u016e\u0758', - '\u0003\u0002\u0002\u0002\u0170\u075a\u0003\u0002\u0002\u0002\u0172\u0766', - '\u0003\u0002\u0002\u0002\u0174\u076d\u0003\u0002\u0002\u0002\u0176\u076f', - '\u0003\u0002\u0002\u0002\u0178\u078e\u0003\u0002\u0002\u0002\u017a\u0790', - '\u0003\u0002\u0002\u0002\u017c\u0794\u0003\u0002\u0002\u0002\u017e\u0815', - '\u0003\u0002\u0002\u0002\u0180\u0819\u0003\u0002\u0002\u0002\u0182\u081b', - '\u0003\u0002\u0002\u0002\u0184\u0826\u0003\u0002\u0002\u0002\u0186\u0828', - '\u0003\u0002\u0002\u0002\u0188\u084d\u0003\u0002\u0002\u0002\u018a\u08e0', - '\u0003\u0002\u0002\u0002\u018c\u08f2\u0003\u0002\u0002\u0002\u018e\u08f4', - '\u0003\u0002\u0002\u0002\u0190\u0936\u0003\u0002\u0002\u0002\u0192\u093a', - '\u0003\u0002\u0002\u0002\u0194\u093c\u0003\u0002\u0002\u0002\u0196\u0942', - '\u0003\u0002\u0002\u0002\u0198\u0944\u0003\u0002\u0002\u0002\u019a\u0954', - '\u0003\u0002\u0002\u0002\u019c\u0956\u0003\u0002\u0002\u0002\u019e\u095c', - '\u0003\u0002\u0002\u0002\u01a0\u095e\u0003\u0002\u0002\u0002\u01a2\u0969', - '\u0003\u0002\u0002\u0002\u01a4\u096b\u0003\u0002\u0002\u0002\u01a6\u0971', - '\u0003\u0002\u0002\u0002\u01a8\u0973\u0003\u0002\u0002\u0002\u01aa\u0977', - '\u0003\u0002\u0002\u0002\u01ac\u0988\u0003\u0002\u0002\u0002\u01ae\u098e', - '\u0003\u0002\u0002\u0002\u01b0\u09b4\u0003\u0002\u0002\u0002\u01b2\u09b6', - '\u0003\u0002\u0002\u0002\u01b4\u09ba\u0003\u0002\u0002\u0002\u01b6\u09d9', - '\u0003\u0002\u0002\u0002\u01b8\u09db\u0003\u0002\u0002\u0002\u01ba\u09fa', - '\u0003\u0002\u0002\u0002\u01bc\u09fc\u0003\u0002\u0002\u0002\u01be\u0a16', - '\u0003\u0002\u0002\u0002\u01c0\u0a21\u0003\u0002\u0002\u0002\u01c2\u0a2c', - '\u0003\u0002\u0002\u0002\u01c4\u0a30\u0003\u0002\u0002\u0002\u01c6\u0a3b', - '\u0003\u0002\u0002\u0002\u01c8\u0a40\u0003\u0002\u0002\u0002\u01ca\u0a42', - '\u0003\u0002\u0002\u0002\u01cc\u0a4d\u0003\u0002\u0002\u0002\u01ce\u0a51', - '\u0003\u0002\u0002\u0002\u01d0\u0a5a\u0003\u0002\u0002\u0002\u01d2\u0a60', - '\u0003\u0002\u0002\u0002\u01d4\u0a67\u0003\u0002\u0002\u0002\u01d6\u0a69', - '\u0003\u0002\u0002\u0002\u01d8\u0a76\u0003\u0002\u0002\u0002\u01da\u0a7e', - '\u0003\u0002\u0002\u0002\u01dc\u0a89\u0003\u0002\u0002\u0002\u01de\u0a8b', - '\u0003\u0002\u0002\u0002\u01e0\u0a8f\u0003\u0002\u0002\u0002\u01e2\u0a95', - '\u0003\u0002\u0002\u0002\u01e4\u0a9a\u0003\u0002\u0002\u0002\u01e6\u0a9c', - '\u0003\u0002\u0002\u0002\u01e8\u0aa4\u0003\u0002\u0002\u0002\u01ea\u0aa8', - '\u0003\u0002\u0002\u0002\u01ec\u0aae\u0003\u0002\u0002\u0002\u01ee\u0ab0', - '\u0003\u0002\u0002\u0002\u01f0\u0ab4\u0003\u0002\u0002\u0002\u01f2\u0ab7', - '\u0003\u0002\u0002\u0002\u01f4\u0abb\u0003\u0002\u0002\u0002\u01f6\u0abf', - '\u0003\u0002\u0002\u0002\u01f8\u0ac1\u0003\u0002\u0002\u0002\u01fa\u0ac7', - '\u0003\u0002\u0002\u0002\u01fc\u0ac9\u0003\u0002\u0002\u0002\u01fe\u0acd', - '\u0003\u0002\u0002\u0002\u0200\u0acf\u0003\u0002\u0002\u0002\u0202\u0ad3', - '\u0003\u0002\u0002\u0002\u0204\u0ad6\u0003\u0002\u0002\u0002\u0206\u0ada', - '\u0003\u0002\u0002\u0002\u0208\u0add\u0003\u0002\u0002\u0002\u020a\u0ae0', - '\u0003\u0002\u0002\u0002\u020c\u0210\u0005\u0004\u0003\u0002\u020d\u020f', - '\u0005\u0004\u0003\u0002\u020e\u020d\u0003\u0002\u0002\u0002\u020f\u0212', - '\u0003\u0002\u0002\u0002\u0210\u020e\u0003\u0002\u0002\u0002\u0210\u0211', - '\u0003\u0002\u0002\u0002\u0211\u0003\u0003\u0002\u0002\u0002\u0212\u0210', - '\u0003\u0002\u0002\u0002\u0213\u0214\u0005\b\u0005\u0002\u0214\u0215', - '\u0005\u0006\u0004\u0002\u0215\u0218\u0003\u0002\u0002\u0002\u0216\u0218', - '\u0005\u01c4\u00e3\u0002\u0217\u0213\u0003\u0002\u0002\u0002\u0217\u0216', - '\u0003\u0002\u0002\u0002\u0218\u0005\u0003\u0002\u0002\u0002\u0219\u021e', - '\b\u0004\u0001\u0002\u021a\u021b\f\u0003\u0002\u0002\u021b\u021d\u0007', - ' \u0002\u0002\u021c\u021a\u0003\u0002\u0002\u0002\u021d\u0220\u0003', - '\u0002\u0002\u0002\u021e\u021c\u0003\u0002\u0002\u0002\u021e\u021f\u0003', - '\u0002\u0002\u0002\u021f\u0007\u0003\u0002\u0002\u0002\u0220\u021e\u0003', - '\u0002\u0002\u0002\u0221\u0227\u0005\f\u0007\u0002\u0222\u0227\u0005', - '\u0010\t\u0002\u0223\u0227\u0005\u0012\n\u0002\u0224\u0227\u0005\u001a', - '\u000e\u0002\u0225\u0227\u0005\n\u0006\u0002\u0226\u0221\u0003\u0002', - '\u0002\u0002\u0226\u0222\u0003\u0002\u0002\u0002\u0226\u0223\u0003\u0002', - '\u0002\u0002\u0226\u0224\u0003\u0002\u0002\u0002\u0226\u0225\u0003\u0002', - '\u0002\u0002\u0227\t\u0003\u0002\u0002\u0002\u0228\u0231\u0005(\u0015', - '\u0002\u0229\u0231\u0005*\u0016\u0002\u022a\u0231\u0005,\u0017\u0002', - '\u022b\u0231\u0005\u001e\u0010\u0002\u022c\u0231\u0005\u017e\u00c0\u0002', - '\u022d\u0231\u0005.\u0018\u0002\u022e\u0231\u00056\u001c\u0002\u022f', - '\u0231\u00058\u001d\u0002\u0230\u0228\u0003\u0002\u0002\u0002\u0230', - '\u0229\u0003\u0002\u0002\u0002\u0230\u022a\u0003\u0002\u0002\u0002\u0230', - '\u022b\u0003\u0002\u0002\u0002\u0230\u022c\u0003\u0002\u0002\u0002\u0230', - '\u022d\u0003\u0002\u0002\u0002\u0230\u022e\u0003\u0002\u0002\u0002\u0230', - '\u022f\u0003\u0002\u0002\u0002\u0231\u000b\u0003\u0002\u0002\u0002\u0232', - '\u0233\u0007"\u0002\u0002\u0233\u0234\u0005\u000e\b\u0002\u0234\u0235', - '\u0005\n\u0006\u0002\u0235\r\u0003\u0002\u0002\u0002\u0236\u0239\u0003', - '\u0002\u0002\u0002\u0237\u0239\u0007q\u0002\u0002\u0238\u0236\u0003', - '\u0002\u0002\u0002\u0238\u0237\u0003\u0002\u0002\u0002\u0239\u000f\u0003', - '\u0002\u0002\u0002\u023a\u023b\u0007W\u0002\u0002\u023b\u023c\u0005', - '\n\u0006\u0002\u023c\u0011\u0003\u0002\u0002\u0002\u023d\u023e\u0007', - '\u00a8\u0002\u0002\u023e\u023f\u0005\u0014\u000b\u0002\u023f\u0240\u0005', - '\u0016\f\u0002\u0240\u0241\u0005\n\u0006\u0002\u0241\u0013\u0003\u0002', - '\u0002\u0002\u0242\u0245\u0003\u0002\u0002\u0002\u0243\u0245\u0007`', - '\u0002\u0002\u0244\u0242\u0003\u0002\u0002\u0002\u0244\u0243\u0003\u0002', - '\u0002\u0002\u0245\u0015\u0003\u0002\u0002\u0002\u0246\u024c\u0003\u0002', - '\u0002\u0002\u0247\u0248\u0007\u00ef\u0002\u0002\u0248\u024c\u0005\u0018', - '\r\u0002\u0249\u024a\u0007\u0003\u0002\u0002\u024a\u024c\u0005\u0018', - '\r\u0002\u024b\u0246\u0003\u0002\u0002\u0002\u024b\u0247\u0003\u0002', - '\u0002\u0002\u024b\u0249\u0003\u0002\u0002\u0002\u024c\u0017\u0003\u0002', - '\u0002\u0002\u024d\u024e\t\u0002\u0002\u0002\u024e\u0019\u0003\u0002', - '\u0002\u0002\u024f\u0250\u0007U\u0002\u0002\u0250\u0251\u0005\u0188', - '\u00c5\u0002\u0251\u0252\u0005\u001c\u000f\u0002\u0252\u001b\u0003\u0002', - '\u0002\u0002\u0253\u0257\u0003\u0002\u0002\u0002\u0254\u0255\u0007\u00df', - '\u0002\u0002\u0255\u0257\u0005\u0192\u00ca\u0002\u0256\u0253\u0003\u0002', - '\u0002\u0002\u0256\u0254\u0003\u0002\u0002\u0002\u0257\u001d\u0003\u0002', - '\u0002\u0002\u0258\u0259\u0007r\u0002\u0002\u0259\u025a\u0005 \u0011', - '\u0002\u025a\u025b\u0005\u00caf\u0002\u025b\u025c\u0005"\u0012\u0002', - '\u025c\u025d\u0005$\u0013\u0002\u025d\u001f\u0003\u0002\u0002\u0002', - '\u025e\u0262\u0003\u0002\u0002\u0002\u025f\u0262\u0007~\u0002\u0002', - '\u0260\u0262\u00079\u0002\u0002\u0261\u025e\u0003\u0002\u0002\u0002', - '\u0261\u025f\u0003\u0002\u0002\u0002\u0261\u0260\u0003\u0002\u0002\u0002', - '\u0262!\u0003\u0002\u0002\u0002\u0263\u0264\u0003\u0002\u0002\u0002', - '\u0264#\u0003\u0002\u0002\u0002\u0265\u0268\u0003\u0002\u0002\u0002', - '\u0266\u0268\u0005&\u0014\u0002\u0267\u0265\u0003\u0002\u0002\u0002', - '\u0267\u0266\u0003\u0002\u0002\u0002\u0268%\u0003\u0002\u0002\u0002', - '\u0269\u026a\u0007\u00ea\u0002\u0002\u026a\u026b\u0005\u0188\u00c5\u0002', - "\u026b'\u0003\u0002\u0002\u0002\u026c\u026d\u0005:\u001e\u0002\u026d", - ')\u0003\u0002\u0002\u0002\u026e\u0274\u0005\u00c8e\u0002\u026f\u0274', - '\u0005\u00eav\u0002\u0270\u0274\u0005\u00ecw\u0002\u0271\u0274\u0005', - '\u00eex\u0002\u0272\u0274\u0005\u010c\u0087\u0002\u0273\u026e\u0003', - '\u0002\u0002\u0002\u0273\u026f\u0003\u0002\u0002\u0002\u0273\u0270\u0003', - '\u0002\u0002\u0002\u0273\u0271\u0003\u0002\u0002\u0002\u0273\u0272\u0003', - '\u0002\u0002\u0002\u0274+\u0003\u0002\u0002\u0002\u0275\u0279\u0005', - '0\u0019\u0002\u0276\u0279\u00052\u001a\u0002\u0277\u0279\u00054\u001b', - '\u0002\u0278\u0275\u0003\u0002\u0002\u0002\u0278\u0276\u0003\u0002\u0002', - '\u0002\u0278\u0277\u0003\u0002\u0002\u0002\u0279-\u0003\u0002\u0002', - '\u0002\u027a\u027d\u0005\u011e\u0090\u0002\u027b\u027d\u0005\u012c\u0097', - '\u0002\u027c\u027a\u0003\u0002\u0002\u0002\u027c\u027b\u0003\u0002\u0002', - '\u0002\u027d/\u0003\u0002\u0002\u0002\u027e\u0284\u0005\u013a\u009e', - '\u0002\u027f\u0284\u0005\u013c\u009f\u0002\u0280\u0284\u0005\u0164\u00b3', - '\u0002\u0281\u0284\u0005\u0166\u00b4\u0002\u0282\u0284\u0005\u0168\u00b5', - '\u0002\u0283\u027e\u0003\u0002\u0002\u0002\u0283\u027f\u0003\u0002\u0002', - '\u0002\u0283\u0280\u0003\u0002\u0002\u0002\u0283\u0281\u0003\u0002\u0002', - '\u0002\u0283\u0282\u0003\u0002\u0002\u0002\u02841\u0003\u0002\u0002', - '\u0002\u0285\u0288\u0005\u012e\u0098\u0002\u0286\u0288\u0005\u0130\u0099', - '\u0002\u0287\u0285\u0003\u0002\u0002\u0002\u0287\u0286\u0003\u0002\u0002', - '\u0002\u02883\u0003\u0002\u0002\u0002\u0289\u028d\u0005\u0132\u009a', - '\u0002\u028a\u028d\u0005\u0134\u009b\u0002\u028b\u028d\u0005\u0136\u009c', - '\u0002\u028c\u0289\u0003\u0002\u0002\u0002\u028c\u028a\u0003\u0002\u0002', - '\u0002\u028c\u028b\u0003\u0002\u0002\u0002\u028d5\u0003\u0002\u0002', - '\u0002\u028e\u0292\u0005\u016a\u00b6\u0002\u028f\u0292\u0005\u017a\u00be', - '\u0002\u0290\u0292\u0005\u017c\u00bf\u0002\u0291\u028e\u0003\u0002\u0002', - '\u0002\u0291\u028f\u0003\u0002\u0002\u0002\u0291\u0290\u0003\u0002\u0002', - '\u0002\u02927\u0003\u0002\u0002\u0002\u0293\u0299\u0005\u01ee\u00f8', - '\u0002\u0294\u0299\u0005\u01f0\u00f9\u0002\u0295\u0299\u0005\u01f2\u00fa', - '\u0002\u0296\u0299\u0005\u0206\u0104\u0002\u0297\u0299\u0005\u0204\u0103', - '\u0002\u0298\u0293\u0003\u0002\u0002\u0002\u0298\u0294\u0003\u0002\u0002', - '\u0002\u0298\u0295\u0003\u0002\u0002\u0002\u0298\u0296\u0003\u0002\u0002', - '\u0002\u0298\u0297\u0003\u0002\u0002\u0002\u02999\u0003\u0002\u0002', - '\u0002\u029a\u029b\u0005<\u001f\u0002\u029b\u029c\u0005\u00aeX\u0002', - '\u029c\u02a8\u0003\u0002\u0002\u0002\u029d\u029e\u0005<\u001f\u0002', - '\u029e\u029f\u0005\u00aeX\u0002\u029f\u02a0\u0005\u00c2b\u0002\u02a0', - '\u02a1\u0005\u00c4c\u0002\u02a1\u02a8\u0003\u0002\u0002\u0002\u02a2', - '\u02a3\u0005<\u001f\u0002\u02a3\u02a4\u0005\u00aeX\u0002\u02a4\u02a5', - '\u0005\u00c6d\u0002\u02a5\u02a6\u0005\u00c0a\u0002\u02a6\u02a8\u0003', - '\u0002\u0002\u0002\u02a7\u029a\u0003\u0002\u0002\u0002\u02a7\u029d\u0003', - '\u0002\u0002\u0002\u02a7\u02a2\u0003\u0002\u0002\u0002\u02a8;\u0003', - '\u0002\u0002\u0002\u02a9\u02aa\b\u001f\u0001\u0002\u02aa\u02c7\u0005', - '@!\u0002\u02ab\u02ac\u0005\u01c2\u00e2\u0002\u02ac\u02ad\u0007\u00d6', - '\u0002\u0002\u02ad\u02ae\u0005> \u0002\u02ae\u02c7\u0003\u0002\u0002', - '\u0002\u02af\u02b0\u0005\u01c2\u00e2\u0002\u02b0\u02b1\u0007\u00d6\u0002', - '\u0002\u02b1\u02b2\u0007#\u0002\u0002\u02b2\u02b3\u0005> \u0002\u02b3', - '\u02c7\u0003\u0002\u0002\u0002\u02b4\u02b5\u0005\u01c2\u00e2\u0002\u02b5', - '\u02b6\u0007v\u0002\u0002\u02b6\u02b7\u0005> \u0002\u02b7\u02c7\u0003', - '\u0002\u0002\u0002\u02b8\u02b9\u0005\u01c2\u00e2\u0002\u02b9\u02ba\u0007', - 'v\u0002\u0002\u02ba\u02bb\u0007#\u0002\u0002\u02bb\u02bc\u0005> \u0002', - '\u02bc\u02c7\u0003\u0002\u0002\u0002\u02bd\u02be\u0005\u01c2\u00e2\u0002', - '\u02be\u02bf\u0007S\u0002\u0002\u02bf\u02c0\u0005> \u0002\u02c0\u02c7', - '\u0003\u0002\u0002\u0002\u02c1\u02c2\u0005\u01c2\u00e2\u0002\u02c2\u02c3', - '\u0007S\u0002\u0002\u02c3\u02c4\u0007#\u0002\u0002\u02c4\u02c5\u0005', - '> \u0002\u02c5\u02c7\u0003\u0002\u0002\u0002\u02c6\u02a9\u0003\u0002', - '\u0002\u0002\u02c6\u02ab\u0003\u0002\u0002\u0002\u02c6\u02af\u0003\u0002', - '\u0002\u0002\u02c6\u02b4\u0003\u0002\u0002\u0002\u02c6\u02b8\u0003\u0002', - '\u0002\u0002\u02c6\u02bd\u0003\u0002\u0002\u0002\u02c6\u02c1\u0003\u0002', - '\u0002\u0002\u02c7\u02df\u0003\u0002\u0002\u0002\u02c8\u02c9\f\u000e', - '\u0002\u0002\u02c9\u02ca\u0007\u00d6\u0002\u0002\u02ca\u02de\u0005>', - ' \u0002\u02cb\u02cc\f\r\u0002\u0002\u02cc\u02cd\u0007\u00d6\u0002\u0002', - '\u02cd\u02ce\u0007#\u0002\u0002\u02ce\u02de\u0005> \u0002\u02cf\u02d0', - '\f\f\u0002\u0002\u02d0\u02d1\u0007v\u0002\u0002\u02d1\u02de\u0005> ', - '\u0002\u02d2\u02d3\f\u000b\u0002\u0002\u02d3\u02d4\u0007v\u0002\u0002', - '\u02d4\u02d5\u0007#\u0002\u0002\u02d5\u02de\u0005> \u0002\u02d6\u02d7', - '\f\n\u0002\u0002\u02d7\u02d8\u0007S\u0002\u0002\u02d8\u02de\u0005> ', - '\u0002\u02d9\u02da\f\t\u0002\u0002\u02da\u02db\u0007S\u0002\u0002\u02db', - '\u02dc\u0007#\u0002\u0002\u02dc\u02de\u0005> \u0002\u02dd\u02c8\u0003', - '\u0002\u0002\u0002\u02dd\u02cb\u0003\u0002\u0002\u0002\u02dd\u02cf\u0003', - '\u0002\u0002\u0002\u02dd\u02d2\u0003\u0002\u0002\u0002\u02dd\u02d6\u0003', - '\u0002\u0002\u0002\u02dd\u02d9\u0003\u0002\u0002\u0002\u02de\u02e1\u0003', - '\u0002\u0002\u0002\u02df\u02dd\u0003\u0002\u0002\u0002\u02df\u02e0\u0003', - '\u0002\u0002\u0002\u02e0=\u0003\u0002\u0002\u0002\u02e1\u02df\u0003', - '\u0002\u0002\u0002\u02e2\u02e5\u0005@!\u0002\u02e3\u02e5\u0005\u01c2', - '\u00e2\u0002\u02e4\u02e2\u0003\u0002\u0002\u0002\u02e4\u02e3\u0003\u0002', - '\u0002\u0002\u02e5?\u0003\u0002\u0002\u0002\u02e6\u02e9\u0005B"\u0002', - '\u02e7\u02e9\u0005D#\u0002\u02e8\u02e6\u0003\u0002\u0002\u0002\u02e8', - '\u02e7\u0003\u0002\u0002\u0002\u02e9A\u0003\u0002\u0002\u0002\u02ea', - '\u02eb\u0005\u0094K\u0002\u02eb\u02ec\u0005Z.\u0002\u02ec\u02ed\u0005', - '\u008cG\u0002\u02ed\u02ee\u0005\u009aN\u0002\u02ee\u02ef\u0005\u009e', - 'P\u0002\u02ef\u02f0\u0005\u01c8\u00e5\u0002\u02f0\u02f1\u0005F$\u0002', - '\u02f1C\u0003\u0002\u0002\u0002\u02f2\u02f3\u0005\u0094K\u0002\u02f3', - '\u02f4\u0005F$\u0002\u02f4\u02f5\u0005X-\u0002\u02f5\u02f6\u0005\u008c', - 'G\u0002\u02f6\u02f7\u0005\u009aN\u0002\u02f7\u02f8\u0005\u009eP\u0002', - '\u02f8\u02f9\u0005\u01c8\u00e5\u0002\u02f9E\u0003\u0002\u0002\u0002', - '\u02fa\u02fb\u0007\u00c3\u0002\u0002\u02fb\u02fc\u0005H%\u0002\u02fc', - 'G\u0003\u0002\u0002\u0002\u02fd\u02fe\u0005J&\u0002\u02fe\u02ff\u0005', - 'N(\u0002\u02ff\u0306\u0003\u0002\u0002\u0002\u0300\u0301\u0005J&\u0002', - "\u0301\u0302\u0005L'\u0002\u0302\u0303\u0005\u0188\u00c5\u0002\u0303", - '\u0304\u0005R*\u0002\u0304\u0306\u0003\u0002\u0002\u0002\u0305\u02fd', - '\u0003\u0002\u0002\u0002\u0305\u0300\u0003\u0002\u0002\u0002\u0306I', - '\u0003\u0002\u0002\u0002\u0307\u030b\u0003\u0002\u0002\u0002\u0308\u030b', - '\u0007#\u0002\u0002\u0309\u030b\u0007K\u0002\u0002\u030a\u0307\u0003', - '\u0002\u0002\u0002\u030a\u0308\u0003\u0002\u0002\u0002\u030a\u0309\u0003', - '\u0002\u0002\u0002\u030bK\u0003\u0002\u0002\u0002\u030c\u030d\t\u0003', - '\u0002\u0002\u030dM\u0003\u0002\u0002\u0002\u030e\u030f\b(\u0001\u0002', - '\u030f\u0310\u0005P)\u0002\u0310\u0316\u0003\u0002\u0002\u0002\u0311', - '\u0312\f\u0003\u0002\u0002\u0312\u0313\u0007\u001b\u0002\u0002\u0313', - '\u0315\u0005P)\u0002\u0314\u0311\u0003\u0002\u0002\u0002\u0315\u0318', - '\u0003\u0002\u0002\u0002\u0316\u0314\u0003\u0002\u0002\u0002\u0316\u0317', - '\u0003\u0002\u0002\u0002\u0317O\u0003\u0002\u0002\u0002\u0318\u0316', - '\u0003\u0002\u0002\u0002\u0319\u0322\u0007\f\u0002\u0002\u031a\u031b', - '\u0005\u0188\u00c5\u0002\u031b\u031c\u0007\t\u0002\u0002\u031c\u031d', - '\u0007\f\u0002\u0002\u031d\u0322\u0003\u0002\u0002\u0002\u031e\u031f', - '\u0005\u0188\u00c5\u0002\u031f\u0320\u0005R*\u0002\u0320\u0322\u0003', - '\u0002\u0002\u0002\u0321\u0319\u0003\u0002\u0002\u0002\u0321\u031a\u0003', - '\u0002\u0002\u0002\u0321\u031e\u0003\u0002\u0002\u0002\u0322Q\u0003', - '\u0002\u0002\u0002\u0323\u0326\u0003\u0002\u0002\u0002\u0324\u0326\u0005', - 'T+\u0002\u0325\u0323\u0003\u0002\u0002\u0002\u0325\u0324\u0003\u0002', - '\u0002\u0002\u0326S\u0003\u0002\u0002\u0002\u0327\u032b\u0005V,\u0002', - '\u0328\u0329\u0007)\u0002\u0002\u0329\u032b\u0005V,\u0002\u032a\u0327', - '\u0003\u0002\u0002\u0002\u032a\u0328\u0003\u0002\u0002\u0002\u032bU', - '\u0003\u0002\u0002\u0002\u032c\u032d\u0007\u00ef\u0002\u0002\u032dW', - '\u0003\u0002\u0002\u0002\u032e\u0331\u0003\u0002\u0002\u0002\u032f\u0331', - '\u0005Z.\u0002\u0330\u032e\u0003\u0002\u0002\u0002\u0330\u032f\u0003', - '\u0002\u0002\u0002\u0331Y\u0003\u0002\u0002\u0002\u0332\u0333\u0007', - 'a\u0002\u0002\u0333\u0334\u0005\\/\u0002\u0334[\u0003\u0002\u0002\u0002', - '\u0335\u0336\b/\u0001\u0002\u0336\u0340\u0005^0\u0002\u0337\u0338\u0005', - '^0\u0002\u0338\u0339\u0007\u00ba\u0002\u0002\u0339\u033a\u0005\u0086', - 'D\u0002\u033a\u033b\u0007{\u0002\u0002\u033b\u033c\u0005^0\u0002\u033c', - '\u033d\u0007\u009a\u0002\u0002\u033d\u033e\u0005\u0188\u00c5\u0002\u033e', - '\u0340\u0003\u0002\u0002\u0002\u033f\u0335\u0003\u0002\u0002\u0002\u033f', - '\u0337\u0003\u0002\u0002\u0002\u0340\u0373\u0003\u0002\u0002\u0002\u0341', - '\u0342\f\n\u0002\u0002\u0342\u0343\u0005\u0084C\u0002\u0343\u0344\u0007', - '{\u0002\u0002\u0344\u0345\u0005^0\u0002\u0345\u0346\u0005\u0088E\u0002', - '\u0346\u0372\u0003\u0002\u0002\u0002\u0347\u0348\f\t\u0002\u0002\u0348', - '\u0349\u0005\u0084C\u0002\u0349\u034a\u0007{\u0002\u0002\u034a\u034b', - '\u0005^0\u0002\u034b\u034c\u0005\u008aF\u0002\u034c\u034d\u0007_\u0002', - '\u0002\u034d\u034e\u0007\u00ef\u0002\u0002\u034e\u0372\u0003\u0002\u0002', - '\u0002\u034f\u0350\f\b\u0002\u0002\u0350\u0351\u0005\u0084C\u0002\u0351', - '\u0352\u0007\u0090\u0002\u0002\u0352\u0353\u0005^0\u0002\u0353\u0354', - '\u0005\u0088E\u0002\u0354\u0372\u0003\u0002\u0002\u0002\u0355\u0356', - '\f\u0007\u0002\u0002\u0356\u0357\u0005\u0084C\u0002\u0357\u0358\u0007', - '\u0090\u0002\u0002\u0358\u0359\u0005^0\u0002\u0359\u035a\u0005\u008a', - 'F\u0002\u035a\u035b\u0007_\u0002\u0002\u035b\u035c\u0007\u00ef\u0002', - '\u0002\u035c\u0372\u0003\u0002\u0002\u0002\u035d\u035e\f\u0006\u0002', - '\u0002\u035e\u035f\u0005\u0084C\u0002\u035f\u0360\u0005`1\u0002\u0360', - '\u0361\u0005\u0188\u00c5\u0002\u0361\u0362\u0005R*\u0002\u0362\u0372', - '\u0003\u0002\u0002\u0002\u0363\u0364\f\u0005\u0002\u0002\u0364\u0365', - '\u0005\u0084C\u0002\u0365\u0366\u0007{\u0002\u0002\u0366\u0367\u0005', - '^0\u0002\u0367\u0368\u0007\u009a\u0002\u0002\u0368\u0369\u0005\u0188', - '\u00c5\u0002\u0369\u0372\u0003\u0002\u0002\u0002\u036a\u036b\f\u0004', - '\u0002\u0002\u036b\u036c\u0005\u0084C\u0002\u036c\u036d\u0007\u0090', - '\u0002\u0002\u036d\u036e\u0005^0\u0002\u036e\u036f\u0007\u009a\u0002', - '\u0002\u036f\u0370\u0005\u0188\u00c5\u0002\u0370\u0372\u0003\u0002\u0002', - '\u0002\u0371\u0341\u0003\u0002\u0002\u0002\u0371\u0347\u0003\u0002\u0002', - '\u0002\u0371\u034f\u0003\u0002\u0002\u0002\u0371\u0355\u0003\u0002\u0002', - '\u0002\u0371\u035d\u0003\u0002\u0002\u0002\u0371\u0363\u0003\u0002\u0002', - '\u0002\u0371\u036a\u0003\u0002\u0002\u0002\u0372\u0375\u0003\u0002\u0002', - '\u0002\u0373\u0371\u0003\u0002\u0002\u0002\u0373\u0374\u0003\u0002\u0002', - '\u0002\u0374]\u0003\u0002\u0002\u0002\u0375\u0373\u0003\u0002\u0002', - '\u0002\u0376\u037c\u0005b2\u0002\u0377\u0378\u0005\u0188\u00c5\u0002', - '\u0378\u0379\u0005R*\u0002\u0379\u037a\u0005p9\u0002\u037a\u037c\u0003', - '\u0002\u0002\u0002\u037b\u0376\u0003\u0002\u0002\u0002\u037b\u0377\u0003', - '\u0002\u0002\u0002\u037c_\u0003\u0002\u0002\u0002\u037d\u037e\t\u0004', - '\u0002\u0002\u037ea\u0003\u0002\u0002\u0002\u037f\u0380\u0005d3\u0002', - '\u0380\u0381\u0005R*\u0002\u0381\u0382\u0005p9\u0002\u0382c\u0003\u0002', - '\u0002\u0002\u0383\u0384\u0005f4\u0002\u0384\u0385\u0005n8\u0002\u0385', - '\u038e\u0003\u0002\u0002\u0002\u0386\u0387\u0005f4\u0002\u0387\u0388', - '\u0005j6\u0002\u0388\u0389\u0007\t\u0002\u0002\u0389\u038a\u0005l7\u0002', - '\u038a\u038b\u0007\t\u0002\u0002\u038b\u038c\u0005n8\u0002\u038c\u038e', - '\u0003\u0002\u0002\u0002\u038d\u0383\u0003\u0002\u0002\u0002\u038d\u0386', - '\u0003\u0002\u0002\u0002\u038ee\u0003\u0002\u0002\u0002\u038f\u0393', - '\u0005h5\u0002\u0390\u0391\u0007\u00cb\u0002\u0002\u0391\u0393\u0007', - '\u001c\u0002\u0002\u0392\u038f\u0003\u0002\u0002\u0002\u0392\u0390\u0003', - '\u0002\u0002\u0002\u0393g\u0003\u0002\u0002\u0002\u0394\u0395\u0007', - '\u00ef\u0002\u0002\u0395\u0396\u0007\u001c\u0002\u0002\u0396i\u0003', - '\u0002\u0002\u0002\u0397\u0398\u0007\u00ef\u0002\u0002\u0398k\u0003', - '\u0002\u0002\u0002\u0399\u039a\u0007\u00ef\u0002\u0002\u039am\u0003', - '\u0002\u0002\u0002\u039b\u039c\u0007\u00ef\u0002\u0002\u039co\u0003', - '\u0002\u0002\u0002\u039d\u03a1\u0003\u0002\u0002\u0002\u039e\u039f\u0007', - '\u00dd\u0002\u0002\u039f\u03a1\u0005r:\u0002\u03a0\u039d\u0003\u0002', - '\u0002\u0002\u03a0\u039e\u0003\u0002\u0002\u0002\u03a1q\u0003\u0002', - '\u0002\u0002\u03a2\u03b2\u0005t;\u0002\u03a3\u03b2\u0005v<\u0002\u03a4', - '\u03b2\u0005x=\u0002\u03a5\u03a6\u0005v<\u0002\u03a6\u03a7\u0005x=\u0002', - '\u03a7\u03b2\u0003\u0002\u0002\u0002\u03a8\u03a9\u0005x=\u0002\u03a9', - '\u03aa\u0005v<\u0002\u03aa\u03b2\u0003\u0002\u0002\u0002\u03ab\u03ac', - '\u0005t;\u0002\u03ac\u03ad\u0005x=\u0002\u03ad\u03b2\u0003\u0002\u0002', - '\u0002\u03ae\u03af\u0005x=\u0002\u03af\u03b0\u0005t;\u0002\u03b0\u03b2', - '\u0003\u0002\u0002\u0002\u03b1\u03a2\u0003\u0002\u0002\u0002\u03b1\u03a3', - '\u0003\u0002\u0002\u0002\u03b1\u03a4\u0003\u0002\u0002\u0002\u03b1\u03a5', - '\u0003\u0002\u0002\u0002\u03b1\u03a8\u0003\u0002\u0002\u0002\u03b1\u03ab', - '\u0003\u0002\u0002\u0002\u03b1\u03ae\u0003\u0002\u0002\u0002\u03b2s', - '\u0003\u0002\u0002\u0002\u03b3\u03b4\u0005z>\u0002\u03b4\u03b5\u0007', - '}\u0002\u0002\u03b5\u03b6\u0005\u0188\u00c5\u0002\u03b6u\u0003\u0002', - '\u0002\u0002\u03b7\u03b8\u0007q\u0002\u0002\u03b8\u03b9\u0007\u0017', - '\u0002\u0002\u03b9\u03ba\u0005|?\u0002\u03ba\u03bb\u0007\u0018\u0002', - '\u0002\u03bbw\u0003\u0002\u0002\u0002\u03bc\u03bd\u0007i\u0002\u0002', - '\u03bd\u03be\u0007\u0017\u0002\u0002\u03be\u03bf\u0005\u0080A\u0002', - '\u03bf\u03c0\u0007\u0018\u0002\u0002\u03c0\u03c3\u0003\u0002\u0002\u0002', - '\u03c1\u03c3\u0007\u0091\u0002\u0002\u03c2\u03bc\u0003\u0002\u0002\u0002', - '\u03c2\u03c1\u0003\u0002\u0002\u0002\u03c3y\u0003\u0002\u0002\u0002', - '\u03c4\u03c7\u0003\u0002\u0002\u0002\u03c5\u03c7\u0007\u00a9\u0002\u0002', - '\u03c6\u03c4\u0003\u0002\u0002\u0002\u03c6\u03c5\u0003\u0002\u0002\u0002', - '\u03c7{\u0003\u0002\u0002\u0002\u03c8\u03c9\b?\u0001\u0002\u03c9\u03ca', - '\u0005~@\u0002\u03ca\u03d0\u0003\u0002\u0002\u0002\u03cb\u03cc\f\u0003', - '\u0002\u0002\u03cc\u03cd\u0007\u001b\u0002\u0002\u03cd\u03cf\u0005~', - '@\u0002\u03ce\u03cb\u0003\u0002\u0002\u0002\u03cf\u03d2\u0003\u0002', - '\u0002\u0002\u03d0\u03ce\u0003\u0002\u0002\u0002\u03d0\u03d1\u0003\u0002', - '\u0002\u0002\u03d1}\u0003\u0002\u0002\u0002\u03d2\u03d0\u0003\u0002', - '\u0002\u0002\u03d3\u03d4\u0005\u0142\u00a2\u0002\u03d4\u03d5\u0005\u014c', - '\u00a7\u0002\u03d5\u007f\u0003\u0002\u0002\u0002\u03d6\u03d7\t\u0005', - '\u0002\u0002\u03d7\u0081\u0003\u0002\u0002\u0002\u03d8\u03d9\u0005p', - '9\u0002\u03d9\u0083\u0003\u0002\u0002\u0002\u03da\u03df\u0003\u0002', - '\u0002\u0002\u03db\u03df\u0007t\u0002\u0002\u03dc\u03dd\u0007\u0082', - '\u0002\u0002\u03dd\u03df\u0005\u0086D\u0002\u03de\u03da\u0003\u0002', - '\u0002\u0002\u03de\u03db\u0003\u0002\u0002\u0002\u03de\u03dc\u0003\u0002', - '\u0002\u0002\u03df\u0085\u0003\u0002\u0002\u0002\u03e0\u03e3\u0003\u0002', - '\u0002\u0002\u03e1\u03e3\u0007\u00a0\u0002\u0002\u03e2\u03e0\u0003\u0002', - '\u0002\u0002\u03e2\u03e1\u0003\u0002\u0002\u0002\u03e3\u0087\u0003\u0002', - '\u0002\u0002\u03e4\u03e5\u0007\u009a\u0002\u0002\u03e5\u03e6\u0005z', - '>\u0002\u03e6\u03e7\u0007}\u0002\u0002\u03e7\u03e8\u0005\u0188\u00c5', - '\u0002\u03e8\u0089\u0003\u0002\u0002\u0002\u03e9\u03ea\u0007\u009a\u0002', - '\u0002\u03ea\u03eb\u0005z>\u0002\u03eb\u03ec\u0007|\u0002\u0002\u03ec', - '\u03ed\u0005\u0188\u00c5\u0002\u03ed\u008b\u0003\u0002\u0002\u0002\u03ee', - '\u03f1\u0003\u0002\u0002\u0002\u03ef\u03f1\u0005\u008eH\u0002\u03f0', - '\u03ee\u0003\u0002\u0002\u0002\u03f0\u03ef\u0003\u0002\u0002\u0002\u03f1', - '\u008d\u0003\u0002\u0002\u0002\u03f2\u03f3\u0007\u0083\u0002\u0002\u03f3', - '\u03f4\u0005\u0090I\u0002\u03f4\u008f\u0003\u0002\u0002\u0002\u03f5', - '\u03f6\bI\u0001\u0002\u03f6\u03f7\u0005\u0092J\u0002\u03f7\u03fd\u0003', - '\u0002\u0002\u0002\u03f8\u03f9\f\u0003\u0002\u0002\u03f9\u03fa\u0007', - '\u001b\u0002\u0002\u03fa\u03fc\u0005\u0092J\u0002\u03fb\u03f8\u0003', - '\u0002\u0002\u0002\u03fc\u03ff\u0003\u0002\u0002\u0002\u03fd\u03fb\u0003', - '\u0002\u0002\u0002\u03fd\u03fe\u0003\u0002\u0002\u0002\u03fe\u0091\u0003', - '\u0002\u0002\u0002\u03ff\u03fd\u0003\u0002\u0002\u0002\u0400\u0401\u0005', - 'V,\u0002\u0401\u0402\u0007\u0010\u0002\u0002\u0402\u0403\u0005\u0188', - '\u00c5\u0002\u0403\u0093\u0003\u0002\u0002\u0002\u0404\u0408\u0003\u0002', - '\u0002\u0002\u0405\u0406\u0007\u00ea\u0002\u0002\u0406\u0408\u0005\u0096', - 'L\u0002\u0407\u0404\u0003\u0002\u0002\u0002\u0407\u0405\u0003\u0002', - '\u0002\u0002\u0408\u0095\u0003\u0002\u0002\u0002\u0409\u040a\bL\u0001', - '\u0002\u040a\u040b\u0005\u0098M\u0002\u040b\u0411\u0003\u0002\u0002', - '\u0002\u040c\u040d\f\u0003\u0002\u0002\u040d\u040e\u0007\u001b\u0002', - '\u0002\u040e\u0410\u0005\u0098M\u0002\u040f\u040c\u0003\u0002\u0002', - '\u0002\u0410\u0413\u0003\u0002\u0002\u0002\u0411\u040f\u0003\u0002\u0002', - '\u0002\u0411\u0412\u0003\u0002\u0002\u0002\u0412\u0097\u0003\u0002\u0002', - '\u0002\u0413\u0411\u0003\u0002\u0002\u0002\u0414\u0415\u0005V,\u0002', - '\u0415\u0416\u0007)\u0002\u0002\u0416\u0417\u0005\u01c0\u00e1\u0002', - '\u0417\u0099\u0003\u0002\u0002\u0002\u0418\u041b\u0003\u0002\u0002\u0002', - '\u0419\u041b\u0005\u009cO\u0002\u041a\u0418\u0003\u0002\u0002\u0002', - '\u041a\u0419\u0003\u0002\u0002\u0002\u041b\u009b\u0003\u0002\u0002\u0002', - '\u041c\u041d\u0007\u00e7\u0002\u0002\u041d\u041e\u0005\u0188\u00c5\u0002', - '\u041e\u009d\u0003\u0002\u0002\u0002\u041f\u0422\u0003\u0002\u0002\u0002', - '\u0420\u0422\u0005\u00a0Q\u0002\u0421\u041f\u0003\u0002\u0002\u0002', - '\u0421\u0420\u0003\u0002\u0002\u0002\u0422\u009f\u0003\u0002\u0002\u0002', - '\u0423\u0424\u0007f\u0002\u0002\u0424\u0425\u00073\u0002\u0002\u0425', - '\u0426\u0005\u00a2R\u0002\u0426\u0427\u0005\u00a6T\u0002\u0427\u0428', - '\u0005\u00aaV\u0002\u0428\u042b\u0003\u0002\u0002\u0002\u0429\u042b', - '\u0005\u00a8U\u0002\u042a\u0423\u0003\u0002\u0002\u0002\u042a\u0429', - '\u0003\u0002\u0002\u0002\u042b\u00a1\u0003\u0002\u0002\u0002\u042c\u042d', - '\bR\u0001\u0002\u042d\u042e\u0005\u00a4S\u0002\u042e\u0434\u0003\u0002', - '\u0002\u0002\u042f\u0430\f\u0003\u0002\u0002\u0430\u0431\u0007\u001b', - '\u0002\u0002\u0431\u0433\u0005\u00a4S\u0002\u0432\u042f\u0003\u0002', - '\u0002\u0002\u0433\u0436\u0003\u0002\u0002\u0002\u0434\u0432\u0003\u0002', - '\u0002\u0002\u0434\u0435\u0003\u0002\u0002\u0002\u0435\u00a3\u0003\u0002', - '\u0002\u0002\u0436\u0434\u0003\u0002\u0002\u0002\u0437\u0438\u0005\u0188', - '\u00c5\u0002\u0438\u0439\u0005R*\u0002\u0439\u00a5\u0003\u0002\u0002', - '\u0002\u043a\u043d\u0003\u0002\u0002\u0002\u043b\u043d\u0005\u00a8U', - '\u0002\u043c\u043a\u0003\u0002\u0002\u0002\u043c\u043b\u0003\u0002\u0002', - '\u0002\u043d\u00a7\u0003\u0002\u0002\u0002\u043e\u043f\u0007\u0084\u0002', - '\u0002\u043f\u0440\u0005\u0090I\u0002\u0440\u00a9\u0003\u0002\u0002', - '\u0002\u0441\u0444\u0003\u0002\u0002\u0002\u0442\u0444\u0005\u00acW', - '\u0002\u0443\u0441\u0003\u0002\u0002\u0002\u0443\u0442\u0003\u0002\u0002', - '\u0002\u0444\u00ab\u0003\u0002\u0002\u0002\u0445\u0446\u0007j\u0002', - '\u0002\u0446\u0447\u0005\u0188\u00c5\u0002\u0447\u00ad\u0003\u0002\u0002', - '\u0002\u0448\u044b\u0003\u0002\u0002\u0002\u0449\u044b\u0005\u00b0Y', - '\u0002\u044a\u0448\u0003\u0002\u0002\u0002\u044a\u0449\u0003\u0002\u0002', - '\u0002\u044b\u00af\u0003\u0002\u0002\u0002\u044c\u044d\u0007\u009e\u0002', - '\u0002\u044d\u044e\u00073\u0002\u0002\u044e\u044f\u0005\u00b2Z\u0002', - '\u044f\u00b1\u0003\u0002\u0002\u0002\u0450\u0451\bZ\u0001\u0002\u0451', - '\u0452\u0005\u00b4[\u0002\u0452\u0458\u0003\u0002\u0002\u0002\u0453', - '\u0454\f\u0003\u0002\u0002\u0454\u0455\u0007\u001b\u0002\u0002\u0455', - '\u0457\u0005\u00b4[\u0002\u0456\u0453\u0003\u0002\u0002\u0002\u0457', - '\u045a\u0003\u0002\u0002\u0002\u0458\u0456\u0003\u0002\u0002\u0002\u0458', - '\u0459\u0003\u0002\u0002\u0002\u0459\u00b3\u0003\u0002\u0002\u0002\u045a', - '\u0458\u0003\u0002\u0002\u0002\u045b\u045c\u0005\u0188\u00c5\u0002\u045c', - '\u045d\u0005\u00b6\\\u0002\u045d\u045e\u0005\u00ba^\u0002\u045e\u00b5', - '\u0003\u0002\u0002\u0002\u045f\u0462\u0003\u0002\u0002\u0002\u0460\u0462', - '\u0005\u00b8]\u0002\u0461\u045f\u0003\u0002\u0002\u0002\u0461\u0460', - '\u0003\u0002\u0002\u0002\u0462\u00b7\u0003\u0002\u0002\u0002\u0463\u0464', - '\t\u0006\u0002\u0002\u0464\u00b9\u0003\u0002\u0002\u0002\u0465\u046a', - '\u0003\u0002\u0002\u0002\u0466\u0467\u0005\u00be`\u0002\u0467\u0468', - '\u0005\u00bc_\u0002\u0468\u046a\u0003\u0002\u0002\u0002\u0469\u0465', - '\u0003\u0002\u0002\u0002\u0469\u0466\u0003\u0002\u0002\u0002\u046a\u00bb', - '\u0003\u0002\u0002\u0002\u046b\u046c\t\u0007\u0002\u0002\u046c\u00bd', - '\u0003\u0002\u0002\u0002\u046d\u046e\u0007\u0096\u0002\u0002\u046e\u00bf', - '\u0003\u0002\u0002\u0002\u046f\u0472\u0003\u0002\u0002\u0002\u0470\u0472', - '\u0005\u00c2b\u0002\u0471\u046f\u0003\u0002\u0002\u0002\u0471\u0470', - '\u0003\u0002\u0002\u0002\u0472\u00c1\u0003\u0002\u0002\u0002\u0473\u0474', - '\u0007\u0087\u0002\u0002\u0474\u0475\u0005\u0188\u00c5\u0002\u0475\u00c3', - '\u0003\u0002\u0002\u0002\u0476\u0479\u0003\u0002\u0002\u0002\u0477\u0479', - '\u0005\u00c6d\u0002\u0478\u0476\u0003\u0002\u0002\u0002\u0478\u0477', - '\u0003\u0002\u0002\u0002\u0479\u00c5\u0003\u0002\u0002\u0002\u047a\u047b', - '\u0007\u0099\u0002\u0002\u047b\u047c\u0005\u0188\u00c5\u0002\u047c\u00c7', - '\u0003\u0002\u0002\u0002\u047d\u047e\u0007u\u0002\u0002\u047e\u047f', - '\u0007w\u0002\u0002\u047f\u0480\u0005\u00ccg\u0002\u0480\u0481\u0005', - '\u00ceh\u0002\u0481\u0482\u0005\u00d2j\u0002\u0482\u0483\u0005\u00dc', - 'o\u0002\u0483\u048e\u0003\u0002\u0002\u0002\u0484\u0485\u0007u\u0002', - '\u0002\u0485\u0486\u0007w\u0002\u0002\u0486\u0487\u0005\u00ccg\u0002', - '\u0487\u0488\u0007\u0017\u0002\u0002\u0488\u0489\u0005\u00e8u\u0002', - '\u0489\u048a\u0007\u0018\u0002\u0002\u048a\u048b\u0005:\u001e\u0002', - '\u048b\u048c\u0005\u00dco\u0002\u048c\u048e\u0003\u0002\u0002\u0002', - '\u048d\u047d\u0003\u0002\u0002\u0002\u048d\u0484\u0003\u0002\u0002\u0002', - '\u048e\u00c9\u0003\u0002\u0002\u0002\u048f\u0490\u0005n8\u0002\u0490', - '\u0491\u0005R*\u0002\u0491\u049d\u0003\u0002\u0002\u0002\u0492\u0493', - '\u0005d3\u0002\u0493\u0494\u0005R*\u0002\u0494\u049d\u0003\u0002\u0002', - '\u0002\u0495\u0496\u0005j6\u0002\u0496\u0497\u0007\t\u0002\u0002\u0497', - '\u0498\u0005l7\u0002\u0498\u0499\u0007\t\u0002\u0002\u0499\u049a\u0005', - 'n8\u0002\u049a\u049b\u0005R*\u0002\u049b\u049d\u0003\u0002\u0002\u0002', - '\u049c\u048f\u0003\u0002\u0002\u0002\u049c\u0492\u0003\u0002\u0002\u0002', - '\u049c\u0495\u0003\u0002\u0002\u0002\u049d\u00cb\u0003\u0002\u0002\u0002', - '\u049e\u04a3\u0005\u00caf\u0002\u049f\u04a0\u0005\u01a2\u00d2\u0002', - '\u04a0\u04a1\u0005R*\u0002\u04a1\u04a3\u0003\u0002\u0002\u0002\u04a2', - '\u049e\u0003\u0002\u0002\u0002\u04a2\u049f\u0003\u0002\u0002\u0002\u04a3', - '\u00cd\u0003\u0002\u0002\u0002\u04a4\u04b6\u0003\u0002\u0002\u0002\u04a5', - '\u04a6\u0007\u0017\u0002\u0002\u04a6\u04a7\u0005z>\u0002\u04a7\u04a8', - '\u0007|\u0002\u0002\u04a8\u04a9\u0007\u001b\u0002\u0002\u04a9\u04aa', - '\u0007\u00e1\u0002\u0002\u04aa\u04ab\u0007\u0018\u0002\u0002\u04ab\u04b6', - '\u0003\u0002\u0002\u0002\u04ac\u04ad\u0007\u0017\u0002\u0002\u04ad\u04ae', - '\u0005z>\u0002\u04ae\u04af\u0007|\u0002\u0002\u04af\u04b0\u0007\u001b', - '\u0002\u0002\u04b0\u04b1\u0007\u00e1\u0002\u0002\u04b1\u04b2\u0007\u001b', - '\u0002\u0002\u04b2\u04b3\u0007\u009c\u0002\u0002\u04b3\u04b4\u0007\u0018', - '\u0002\u0002\u04b4\u04b6\u0003\u0002\u0002\u0002\u04b5\u04a4\u0003\u0002', - '\u0002\u0002\u04b5\u04a5\u0003\u0002\u0002\u0002\u04b5\u04ac\u0003\u0002', - '\u0002\u0002\u04b6\u00cf\u0003\u0002\u0002\u0002\u04b7\u04b8\u0005z', - '>\u0002\u04b8\u04b9\u0007|\u0002\u0002\u04b9\u00d1\u0003\u0002\u0002', - '\u0002\u04ba\u04bb\bj\u0001\u0002\u04bb\u04bc\u0005\u00d4k\u0002\u04bc', - '\u04c2\u0003\u0002\u0002\u0002\u04bd\u04be\f\u0003\u0002\u0002\u04be', - '\u04bf\u0007\u001b\u0002\u0002\u04bf\u04c1\u0005\u00d6l\u0002\u04c0', - '\u04bd\u0003\u0002\u0002\u0002\u04c1\u04c4\u0003\u0002\u0002\u0002\u04c2', - '\u04c0\u0003\u0002\u0002\u0002\u04c2\u04c3\u0003\u0002\u0002\u0002\u04c3', - '\u00d3\u0003\u0002\u0002\u0002\u04c4\u04c2\u0003\u0002\u0002\u0002\u04c5', - '\u04c6\u0007\u00e3\u0002\u0002\u04c6\u04ca\u0005\u00d8m\u0002\u04c7', - '\u04c8\u0007\u00e3\u0002\u0002\u04c8\u04ca\u0005\u00dan\u0002\u04c9', - '\u04c5\u0003\u0002\u0002\u0002\u04c9\u04c7\u0003\u0002\u0002\u0002\u04ca', - '\u00d5\u0003\u0002\u0002\u0002\u04cb\u04cf\u0005\u00d4k\u0002\u04cc', - '\u04cf\u0005\u00d8m\u0002\u04cd\u04cf\u0005\u00dan\u0002\u04ce\u04cb', - '\u0003\u0002\u0002\u0002\u04ce\u04cc\u0003\u0002\u0002\u0002\u04ce\u04cd', - '\u0003\u0002\u0002\u0002\u04cf\u00d7\u0003\u0002\u0002\u0002\u04d0\u04d1', - '\u0007\u0017\u0002\u0002\u04d1\u04d2\u0005\u0188\u00c5\u0002\u04d2\u04d3', - '\u0007\u001b\u0002\u0002\u04d3\u04d4\u0005\u0188\u00c5\u0002\u04d4\u04d5', - '\u0007\u0018\u0002\u0002\u04d5\u00d9\u0003\u0002\u0002\u0002\u04d6\u04d7', - '\u0007\u0017\u0002\u0002\u04d7\u04d8\u0005\u0188\u00c5\u0002\u04d8\u04d9', - '\u0007\u001b\u0002\u0002\u04d9\u04da\u0005\u0188\u00c5\u0002\u04da\u04db', - '\u0007\u001b\u0002\u0002\u04db\u04dc\u0005\u0188\u00c5\u0002\u04dc\u04dd', - '\u0007\u0018\u0002\u0002\u04dd\u00db\u0003\u0002\u0002\u0002\u04de\u04e1', - '\u0003\u0002\u0002\u0002\u04df\u04e1\u0005\u00dep\u0002\u04e0\u04de', - '\u0003\u0002\u0002\u0002\u04e0\u04df\u0003\u0002\u0002\u0002\u04e1\u00dd', - '\u0003\u0002\u0002\u0002\u04e2\u04e3\u0007\u00b8\u0002\u0002\u04e3\u04e4', - '\u0005\u00e0q\u0002\u04e4\u00df\u0003\u0002\u0002\u0002\u04e5\u04ea', - "\u0005N(\u0002\u04e6\u04e7\u0005L'\u0002\u04e7\u04e8\u0005\u0188\u00c5", - '\u0002\u04e8\u04ea\u0003\u0002\u0002\u0002\u04e9\u04e5\u0003\u0002\u0002', - '\u0002\u04e9\u04e6\u0003\u0002\u0002\u0002\u04ea\u00e1\u0003\u0002\u0002', - '\u0002\u04eb\u04ec\u0005\u00d0i\u0002\u04ec\u04ed\u0005\u0188\u00c5', - '\u0002\u04ed\u00e3\u0003\u0002\u0002\u0002\u04ee\u04ef\u0007\u00e1\u0002', - '\u0002\u04ef\u04f0\u0005\u0188\u00c5\u0002\u04f0\u00e5\u0003\u0002\u0002', - '\u0002\u04f1\u04f2\u0007\u009c\u0002\u0002\u04f2\u04f3\u0005\u0188\u00c5', - '\u0002\u04f3\u00e7\u0003\u0002\u0002\u0002\u04f4\u0504\u0005\u00e2r', - '\u0002\u04f5\u04f6\u0005\u00e2r\u0002\u04f6\u04f7\u0007\u001b\u0002', - '\u0002\u04f7\u04f8\u0005\u00e4s\u0002\u04f8\u0504\u0003\u0002\u0002', - '\u0002\u04f9\u04fa\u0005\u00e2r\u0002\u04fa\u04fb\u0007\u001b\u0002', - '\u0002\u04fb\u04fc\u0005\u00e4s\u0002\u04fc\u04fd\u0007\u001b\u0002', - '\u0002\u04fd\u04fe\u0005\u00e6t\u0002\u04fe\u0504\u0003\u0002\u0002', - '\u0002\u04ff\u0500\u0005\u00e2r\u0002\u0500\u0501\u0007\u001b\u0002', - '\u0002\u0501\u0502\u0005\u00e6t\u0002\u0502\u0504\u0003\u0002\u0002', - '\u0002\u0503\u04f4\u0003\u0002\u0002\u0002\u0503\u04f5\u0003\u0002\u0002', - '\u0002\u0503\u04f9\u0003\u0002\u0002\u0002\u0503\u04ff\u0003\u0002\u0002', - '\u0002\u0504\u00e9\u0003\u0002\u0002\u0002\u0505\u0506\u0007\u00dc\u0002', - '\u0002\u0506\u0507\u0007w\u0002\u0002\u0507\u0508\u0005\u00ccg\u0002', - '\u0508\u0509\u0005\u00ceh\u0002\u0509\u050a\u0005\u00d2j\u0002\u050a', - '\u050b\u0005\u00dco\u0002\u050b\u0516\u0003\u0002\u0002\u0002\u050c', - '\u050d\u0007\u00dc\u0002\u0002\u050d\u050e\u0007w\u0002\u0002\u050e', - '\u050f\u0005\u00ccg\u0002\u050f\u0510\u0007\u0017\u0002\u0002\u0510', - '\u0511\u0005\u00e8u\u0002\u0511\u0512\u0007\u0018\u0002\u0002\u0512', - '\u0513\u0005:\u001e\u0002\u0513\u0514\u0005\u00dco\u0002\u0514\u0516', - '\u0003\u0002\u0002\u0002\u0515\u0505\u0003\u0002\u0002\u0002\u0515\u050c', - '\u0003\u0002\u0002\u0002\u0516\u00eb\u0003\u0002\u0002\u0002\u0517\u0518', - '\u0007G\u0002\u0002\u0518\u0519\u0007a\u0002\u0002\u0519\u051a\u0005', - '\u00ccg\u0002\u051a\u051b\u0005\u0082B\u0002\u051b\u051c\u0005\u009a', - 'N\u0002\u051c\u051d\u0005\u00c0a\u0002\u051d\u051e\u0005\u00dco\u0002', - '\u051e\u00ed\u0003\u0002\u0002\u0002\u051f\u0520\u0007\u00db\u0002\u0002', - '\u0520\u0521\u0005\u00ccg\u0002\u0521\u0522\u0005\u0082B\u0002\u0522', - '\u0523\u0005\u00f0y\u0002\u0523\u0524\u0005\u0106\u0084\u0002\u0524', - '\u0525\u0005\u009aN\u0002\u0525\u0526\u0005\u00c0a\u0002\u0526\u0527', - '\u0005\u00dco\u0002\u0527\u0539\u0003\u0002\u0002\u0002\u0528\u0529', - '\u0007\u00db\u0002\u0002\u0529\u052a\u0005\u00ccg\u0002\u052a\u052b', - '\u0005\u0082B\u0002\u052b\u052c\u0005\u00f0y\u0002\u052c\u052d\u0005', - '\u009aN\u0002\u052d\u052e\u0005\u00c0a\u0002\u052e\u052f\u0005\u00dc', - 'o\u0002\u052f\u0539\u0003\u0002\u0002\u0002\u0530\u0531\u0007\u00db', - '\u0002\u0002\u0531\u0532\u0005\u00ccg\u0002\u0532\u0533\u0005\u0082', - 'B\u0002\u0533\u0534\u0005\u0106\u0084\u0002\u0534\u0535\u0005\u009a', - 'N\u0002\u0535\u0536\u0005\u00c0a\u0002\u0536\u0537\u0005\u00dco\u0002', - '\u0537\u0539\u0003\u0002\u0002\u0002\u0538\u051f\u0003\u0002\u0002\u0002', - '\u0538\u0528\u0003\u0002\u0002\u0002\u0538\u0530\u0003\u0002\u0002\u0002', - '\u0539\u00ef\u0003\u0002\u0002\u0002\u053a\u053b\u0007\u00c5\u0002\u0002', - '\u053b\u053c\u0005\u00f2z\u0002\u053c\u00f1\u0003\u0002\u0002\u0002', - '\u053d\u053e\bz\u0001\u0002\u053e\u053f\u0005\u00f4{\u0002\u053f\u0545', - '\u0003\u0002\u0002\u0002\u0540\u0541\f\u0003\u0002\u0002\u0541\u0542', - '\u0007\u001b\u0002\u0002\u0542\u0544\u0005\u00f4{\u0002\u0543\u0540', - '\u0003\u0002\u0002\u0002\u0544\u0547\u0003\u0002\u0002\u0002\u0545\u0543', - '\u0003\u0002\u0002\u0002\u0545\u0546\u0003\u0002\u0002\u0002\u0546\u00f3', - '\u0003\u0002\u0002\u0002\u0547\u0545\u0003\u0002\u0002\u0002\u0548\u0549', - '\u0005\u0186\u00c4\u0002\u0549\u054a\u0007\u0010\u0002\u0002\u054a\u054b', - '\u0005\u0188\u00c5\u0002\u054b\u054c\u0005\u00f8}\u0002\u054c\u0554', - '\u0003\u0002\u0002\u0002\u054d\u054e\u0005\u00f6|\u0002\u054e\u054f', - '\u0007\t\u0002\u0002\u054f\u0550\u0005\u0186\u00c4\u0002\u0550\u0551', - '\u0007\u0010\u0002\u0002\u0551\u0552\u0005\u0188\u00c5\u0002\u0552\u0554', - '\u0003\u0002\u0002\u0002\u0553\u0548\u0003\u0002\u0002\u0002\u0553\u054d', - '\u0003\u0002\u0002\u0002\u0554\u00f5\u0003\u0002\u0002\u0002\u0555\u0556', - '\u0005\u01b2\u00da\u0002\u0556\u0557\u0007\u0017\u0002\u0002\u0557\u0558', - '\u0005\u019e\u00d0\u0002\u0558\u0559\u0007\u0018\u0002\u0002\u0559\u00f7', - '\u0003\u0002\u0002\u0002\u055a\u055d\u0003\u0002\u0002\u0002\u055b\u055d', - '\u0005\u00fa~\u0002\u055c\u055a\u0003\u0002\u0002\u0002\u055c\u055b', - '\u0003\u0002\u0002\u0002\u055d\u00f9\u0003\u0002\u0002\u0002\u055e\u055f', - '\u0005\u00fc\u007f\u0002\u055f\u0560\u0005\u0104\u0083\u0002\u0560\u0561', - '\u0007Q\u0002\u0002\u0561\u00fb\u0003\u0002\u0002\u0002\u0562\u0563', - '\b\u007f\u0001\u0002\u0563\u0564\u0007_\u0002\u0002\u0564\u0565\u0005', - '\u00fe\u0080\u0002\u0565\u056b\u0003\u0002\u0002\u0002\u0566\u0567\f', - '\u0003\u0002\u0002\u0567\u0568\u0007_\u0002\u0002\u0568\u056a\u0005', - '\u00fe\u0080\u0002\u0569\u0566\u0003\u0002\u0002\u0002\u056a\u056d\u0003', - '\u0002\u0002\u0002\u056b\u0569\u0003\u0002\u0002\u0002\u056b\u056c\u0003', - '\u0002\u0002\u0002\u056c\u00fd\u0003\u0002\u0002\u0002\u056d\u056b\u0003', - '\u0002\u0002\u0002\u056e\u056f\b\u0080\u0001\u0002\u056f\u0570\u0005', - '\u0100\u0081\u0002\u0570\u0576\u0003\u0002\u0002\u0002\u0571\u0572\f', - '\u0003\u0002\u0002\u0572\u0573\u0007\u001b\u0002\u0002\u0573\u0575\u0005', - '\u0100\u0081\u0002\u0574\u0571\u0003\u0002\u0002\u0002\u0575\u0578\u0003', - '\u0002\u0002\u0002\u0576\u0574\u0003\u0002\u0002\u0002\u0576\u0577\u0003', - '\u0002\u0002\u0002\u0577\u00ff\u0003\u0002\u0002\u0002\u0578\u0576\u0003', - '\u0002\u0002\u0002\u0579\u057a\u0005\u0102\u0082\u0002\u057a\u057b\u0007', - 'n\u0002\u0002\u057b\u057c\u0005\u0188\u00c5\u0002\u057c\u058e\u0003', - '\u0002\u0002\u0002\u057d\u057e\u0005\u0102\u0082\u0002\u057e\u057f\u0007', - '\u00eb\u0002\u0002\u057f\u0580\u0005\u0188\u00c5\u0002\u0580\u058e\u0003', - '\u0002\u0002\u0002\u0581\u0582\u0005\u0102\u0082\u0002\u0582\u0583\u0007', - '\u001c\u0002\u0002\u0583\u0584\u0005\u0102\u0082\u0002\u0584\u0585\u0007', - 'n\u0002\u0002\u0585\u0586\u0005\u0188\u00c5\u0002\u0586\u058e\u0003', - '\u0002\u0002\u0002\u0587\u0588\u0005\u0102\u0082\u0002\u0588\u0589\u0007', - '\u001c\u0002\u0002\u0589\u058a\u0005\u0102\u0082\u0002\u058a\u058b\u0007', - '\u00eb\u0002\u0002\u058b\u058c\u0005\u0188\u00c5\u0002\u058c\u058e\u0003', - '\u0002\u0002\u0002\u058d\u0579\u0003\u0002\u0002\u0002\u058d\u057d\u0003', - '\u0002\u0002\u0002\u058d\u0581\u0003\u0002\u0002\u0002\u058d\u0587\u0003', - '\u0002\u0002\u0002\u058e\u0101\u0003\u0002\u0002\u0002\u058f\u0590\u0007', - '\u00ef\u0002\u0002\u0590\u0103\u0003\u0002\u0002\u0002\u0591\u0595\u0003', - '\u0002\u0002\u0002\u0592\u0593\u0007\u00e6\u0002\u0002\u0593\u0595\u0005', - '\u0188\u00c5\u0002\u0594\u0591\u0003\u0002\u0002\u0002\u0594\u0592\u0003', - '\u0002\u0002\u0002\u0595\u0105\u0003\u0002\u0002\u0002\u0596\u0597\u0007', - '\u00da\u0002\u0002\u0597\u0598\u0005\u0108\u0085\u0002\u0598\u0107\u0003', - '\u0002\u0002\u0002\u0599\u059a\b\u0085\u0001\u0002\u059a\u059b\u0005', - '\u010a\u0086\u0002\u059b\u05a1\u0003\u0002\u0002\u0002\u059c\u059d\f', - '\u0003\u0002\u0002\u059d\u059e\u0007\u001b\u0002\u0002\u059e\u05a0\u0005', - '\u010a\u0086\u0002\u059f\u059c\u0003\u0002\u0002\u0002\u05a0\u05a3\u0003', - '\u0002\u0002\u0002\u05a1\u059f\u0003\u0002\u0002\u0002\u05a1\u05a2\u0003', - '\u0002\u0002\u0002\u05a2\u0109\u0003\u0002\u0002\u0002\u05a3\u05a1\u0003', - '\u0002\u0002\u0002\u05a4\u05a5\u0005\u0186\u00c4\u0002\u05a5\u05a6\u0005', - '\u00f8}\u0002\u05a6\u010b\u0003\u0002\u0002\u0002\u05a7\u05a8\u0007', - '\u008d\u0002\u0002\u05a8\u05a9\u0007w\u0002\u0002\u05a9\u05aa\u0005', - '\u00caf\u0002\u05aa\u05ab\u0005\u010e\u0088\u0002\u05ab\u05ac\u0007', - '\u00df\u0002\u0002\u05ac\u05ad\u0005^0\u0002\u05ad\u05ae\u0007\u009a', - '\u0002\u0002\u05ae\u05af\u0005\u0110\u0089\u0002\u05af\u05b0\u0005\u0188', - '\u00c5\u0002\u05b0\u05b1\u0005\u0112\u008a\u0002\u05b1\u05b2\u0005\u00c0', - 'a\u0002\u05b2\u05b3\u0005\u00dco\u0002\u05b3\u010d\u0003\u0002\u0002', - '\u0002\u05b4\u05b5\u0005p9\u0002\u05b5\u010f\u0003\u0002\u0002\u0002', - '\u05b6\u05b9\u0003\u0002\u0002\u0002\u05b7\u05b9\u0005\u00d0i\u0002', - '\u05b8\u05b6\u0003\u0002\u0002\u0002\u05b8\u05b7\u0003\u0002\u0002\u0002', - '\u05b9\u0111\u0003\u0002\u0002\u0002\u05ba\u05d0\u0003\u0002\u0002\u0002', - '\u05bb\u05bc\u0007\u00e6\u0002\u0002\u05bc\u05bd\u0007\u008b\u0002\u0002', - '\u05bd\u05be\u0007\u00cc\u0002\u0002\u05be\u05bf\u0007\u00db\u0002\u0002', - '\u05bf\u05c0\u0005\u0118\u008d\u0002\u05c0\u05c1\u0005\u0114\u008b\u0002', - '\u05c1\u05d0\u0003\u0002\u0002\u0002\u05c2\u05c3\u0007\u00e6\u0002\u0002', - '\u05c3\u05c4\u0007\u008b\u0002\u0002\u05c4\u05c5\u0007\u00cc\u0002\u0002', - '\u05c5\u05c6\u0007G\u0002\u0002\u05c6\u05c7\u0005\u011a\u008e\u0002', - '\u05c7\u05c8\u0005\u0116\u008c\u0002\u05c8\u05d0\u0003\u0002\u0002\u0002', - '\u05c9\u05ca\u0007\u00e6\u0002\u0002\u05ca\u05cb\u0007\u0093\u0002\u0002', - '\u05cb\u05cc\u0007\u008b\u0002\u0002\u05cc\u05cd\u0007\u00cc\u0002\u0002', - '\u05cd\u05ce\u0007u\u0002\u0002\u05ce\u05d0\u0005\u011c\u008f\u0002', - '\u05cf\u05ba\u0003\u0002\u0002\u0002\u05cf\u05bb\u0003\u0002\u0002\u0002', - '\u05cf\u05c2\u0003\u0002\u0002\u0002\u05cf\u05c9\u0003\u0002\u0002\u0002', - '\u05d0\u0113\u0003\u0002\u0002\u0002\u05d1\u05e0\u0003\u0002\u0002\u0002', - '\u05d2\u05d3\u0007\u00e6\u0002\u0002\u05d3\u05d4\u0007\u008b\u0002\u0002', - '\u05d4\u05d5\u0007\u00cc\u0002\u0002\u05d5\u05d6\u0007G\u0002\u0002', - '\u05d6\u05d7\u0005\u011a\u008e\u0002\u05d7\u05d8\u0005\u0116\u008c\u0002', - '\u05d8\u05e0\u0003\u0002\u0002\u0002\u05d9\u05da\u0007\u00e6\u0002\u0002', - '\u05da\u05db\u0007\u0093\u0002\u0002\u05db\u05dc\u0007\u008b\u0002\u0002', - '\u05dc\u05dd\u0007\u00cc\u0002\u0002\u05dd\u05de\u0007u\u0002\u0002', - '\u05de\u05e0\u0005\u011c\u008f\u0002\u05df\u05d1\u0003\u0002\u0002\u0002', - '\u05df\u05d2\u0003\u0002\u0002\u0002\u05df\u05d9\u0003\u0002\u0002\u0002', - '\u05e0\u0115\u0003\u0002\u0002\u0002\u05e1\u05e9\u0003\u0002\u0002\u0002', - '\u05e2\u05e3\u0007\u00e6\u0002\u0002\u05e3\u05e4\u0007\u0093\u0002\u0002', - '\u05e4\u05e5\u0007\u008b\u0002\u0002\u05e5\u05e6\u0007\u00cc\u0002\u0002', - '\u05e6\u05e7\u0007u\u0002\u0002\u05e7\u05e9\u0005\u011c\u008f\u0002', - '\u05e8\u05e1\u0003\u0002\u0002\u0002\u05e8\u05e2\u0003\u0002\u0002\u0002', - '\u05e9\u0117\u0003\u0002\u0002\u0002\u05ea\u05eb\u0005\u00f0y\u0002', - '\u05eb\u05ec\u0005\u009aN\u0002\u05ec\u05f5\u0003\u0002\u0002\u0002', - '\u05ed\u05ee\u0005\u00f0y\u0002\u05ee\u05ef\u0005\u0106\u0084\u0002', - '\u05ef\u05f0\u0005\u009aN\u0002\u05f0\u05f5\u0003\u0002\u0002\u0002', - '\u05f1\u05f2\u0005\u0106\u0084\u0002\u05f2\u05f3\u0005\u009aN\u0002', - '\u05f3\u05f5\u0003\u0002\u0002\u0002\u05f4\u05ea\u0003\u0002\u0002\u0002', - '\u05f4\u05ed\u0003\u0002\u0002\u0002\u05f4\u05f1\u0003\u0002\u0002\u0002', - '\u05f5\u0119\u0003\u0002\u0002\u0002\u05f6\u05f7\u0005\u009aN\u0002', - '\u05f7\u011b\u0003\u0002\u0002\u0002\u05f8\u05f9\u0005\u0188\u00c5\u0002', - '\u05f9\u05fa\u0005\u009aN\u0002\u05fa\u0607\u0003\u0002\u0002\u0002', - '\u05fb\u05fc\u0005\u00d8m\u0002\u05fc\u05fd\u0005\u009aN\u0002\u05fd', - '\u0607\u0003\u0002\u0002\u0002\u05fe\u05ff\u0005\u00dan\u0002\u05ff', - '\u0600\u0005\u009aN\u0002\u0600\u0607\u0003\u0002\u0002\u0002\u0601', - '\u0602\u0007\u0017\u0002\u0002\u0602\u0603\u0005\u00e8u\u0002\u0603', - '\u0604\u0007\u0018\u0002\u0002\u0604\u0605\u0005\u009aN\u0002\u0605', - '\u0607\u0003\u0002\u0002\u0002\u0606\u05f8\u0003\u0002\u0002\u0002\u0606', - '\u05fb\u0003\u0002\u0002\u0002\u0606\u05fe\u0003\u0002\u0002\u0002\u0606', - '\u0601\u0003\u0002\u0002\u0002\u0607\u011d\u0003\u0002\u0002\u0002\u0608', - '\u0609\u0007e\u0002\u0002\u0609\u060a\u0005\u0120\u0091\u0002\u060a', - '\u060b\u0007\u00ce\u0002\u0002\u060b\u060c\u0005\u0128\u0095\u0002\u060c', - '\u0615\u0003\u0002\u0002\u0002\u060d\u060e\u0007e\u0002\u0002\u060e', - '\u060f\u0005\u0120\u0091\u0002\u060f\u0610\u0007\u009a\u0002\u0002\u0610', - '\u0611\u0005\u0124\u0093\u0002\u0611\u0612\u0007\u00ce\u0002\u0002\u0612', - '\u0613\u0005\u0128\u0095\u0002\u0613\u0615\u0003\u0002\u0002\u0002\u0614', - '\u0608\u0003\u0002\u0002\u0002\u0614\u060d\u0003\u0002\u0002\u0002\u0615', - '\u011f\u0003\u0002\u0002\u0002\u0616\u0617\b\u0091\u0001\u0002\u0617', - '\u0618\u0005\u0122\u0092\u0002\u0618\u061e\u0003\u0002\u0002\u0002\u0619', - '\u061a\f\u0003\u0002\u0002\u061a\u061b\u0007\u001b\u0002\u0002\u061b', - '\u061d\u0005\u0122\u0092\u0002\u061c\u0619\u0003\u0002\u0002\u0002\u061d', - '\u0620\u0003\u0002\u0002\u0002\u061e\u061c\u0003\u0002\u0002\u0002\u061e', - '\u061f\u0003\u0002\u0002\u0002\u061f\u0121\u0003\u0002\u0002\u0002\u0620', - '\u061e\u0003\u0002\u0002\u0002\u0621\u0622\t\b\u0002\u0002\u0622\u0123', - '\u0003\u0002\u0002\u0002\u0623\u0624\b\u0093\u0001\u0002\u0624\u0625', - '\u0005\u0126\u0094\u0002\u0625\u062b\u0003\u0002\u0002\u0002\u0626\u0627', - '\f\u0003\u0002\u0002\u0627\u0628\u0007\u001b\u0002\u0002\u0628\u062a', - '\u0005\u0126\u0094\u0002\u0629\u0626\u0003\u0002\u0002\u0002\u062a\u062d', - '\u0003\u0002\u0002\u0002\u062b\u0629\u0003\u0002\u0002\u0002\u062b\u062c', - '\u0003\u0002\u0002\u0002\u062c\u0125\u0003\u0002\u0002\u0002\u062d\u062b', - '\u0003\u0002\u0002\u0002\u062e\u0649\u0005n8\u0002\u062f\u0630\u0005', - 'h5\u0002\u0630\u0631\u0005n8\u0002\u0631\u0649\u0003\u0002\u0002\u0002', - '\u0632\u0633\u0005h5\u0002\u0633\u0634\u0005j6\u0002\u0634\u0635\u0007', - '\t\u0002\u0002\u0635\u0636\u0005l7\u0002\u0636\u0637\u0007\t\u0002\u0002', - '\u0637\u0638\u0005n8\u0002\u0638\u0649\u0003\u0002\u0002\u0002\u0639', - '\u063a\u0005j6\u0002\u063a\u063b\u0007\t\u0002\u0002\u063b\u063c\u0005', - 'l7\u0002\u063c\u063d\u0007\t\u0002\u0002\u063d\u063e\u0005n8\u0002\u063e', - '\u0649\u0003\u0002\u0002\u0002\u063f\u0640\u0005h5\u0002\u0640\u0641', - '\u0005j6\u0002\u0641\u0642\u0007\t\u0002\u0002\u0642\u0643\u0005l7\u0002', - '\u0643\u0649\u0003\u0002\u0002\u0002\u0644\u0645\u0005j6\u0002\u0645', - '\u0646\u0007\t\u0002\u0002\u0646\u0647\u0005l7\u0002\u0647\u0649\u0003', - '\u0002\u0002\u0002\u0648\u062e\u0003\u0002\u0002\u0002\u0648\u062f\u0003', - '\u0002\u0002\u0002\u0648\u0632\u0003\u0002\u0002\u0002\u0648\u0639\u0003', - '\u0002\u0002\u0002\u0648\u063f\u0003\u0002\u0002\u0002\u0648\u0644\u0003', - '\u0002\u0002\u0002\u0649\u0127\u0003\u0002\u0002\u0002\u064a\u064b\b', - '\u0095\u0001\u0002\u064b\u064c\u0005\u012a\u0096\u0002\u064c\u0652\u0003', - '\u0002\u0002\u0002\u064d\u064e\f\u0003\u0002\u0002\u064e\u064f\u0007', - '\u001b\u0002\u0002\u064f\u0651\u0005\u012a\u0096\u0002\u0650\u064d\u0003', - '\u0002\u0002\u0002\u0651\u0654\u0003\u0002\u0002\u0002\u0652\u0650\u0003', - '\u0002\u0002\u0002\u0652\u0653\u0003\u0002\u0002\u0002\u0653\u0129\u0003', - '\u0002\u0002\u0002\u0654\u0652\u0003\u0002\u0002\u0002\u0655\u065a\u0007', - '\u00ef\u0002\u0002\u0656\u0657\u0007\u00ef\u0002\u0002\u0657\u0658\u0007', - '\u001c\u0002\u0002\u0658\u065a\u0007\u00ef\u0002\u0002\u0659\u0655\u0003', - '\u0002\u0002\u0002\u0659\u0656\u0003\u0002\u0002\u0002\u065a\u012b\u0003', - '\u0002\u0002\u0002\u065b\u065c\u0007\u00b9\u0002\u0002\u065c\u065d\u0005', - '\u0120\u0091\u0002\u065d\u065e\u0007a\u0002\u0002\u065e\u065f\u0005', - '\u0128\u0095\u0002\u065f\u0668\u0003\u0002\u0002\u0002\u0660\u0661\u0007', - '\u00b9\u0002\u0002\u0661\u0662\u0005\u0120\u0091\u0002\u0662\u0663\u0007', - '\u009a\u0002\u0002\u0663\u0664\u0005\u0124\u0093\u0002\u0664\u0665\u0007', - 'a\u0002\u0002\u0665\u0666\u0005\u0128\u0095\u0002\u0666\u0668\u0003', - '\u0002\u0002\u0002\u0667\u065b\u0003\u0002\u0002\u0002\u0667\u0660\u0003', - '\u0002\u0002\u0002\u0668\u012d\u0003\u0002\u0002\u0002\u0669\u066a\u0007', - '@\u0002\u0002\u066a\u066b\u0007\u00c2\u0002\u0002\u066b\u066d\u0005', - '\u0148\u00a5\u0002\u066c\u066e\u0005\u020a\u0106\u0002\u066d\u066c\u0003', - '\u0002\u0002\u0002\u066d\u066e\u0003\u0002\u0002\u0002\u066e\u012f\u0003', - '\u0002\u0002\u0002\u066f\u0670\u0007M\u0002\u0002\u0670\u0671\u0007', - '\u00c2\u0002\u0002\u0671\u0673\u0005\u0148\u00a5\u0002\u0672\u0674\u0005', - '\u0208\u0105\u0002\u0673\u0672\u0003\u0002\u0002\u0002\u0673\u0674\u0003', - '\u0002\u0002\u0002\u0674\u0131\u0003\u0002\u0002\u0002\u0675\u0676\u0007', - '@\u0002\u0002\u0676\u0677\u00079\u0002\u0002\u0677\u0679\u0005\u0144', - '\u00a3\u0002\u0678\u067a\u0005\u020a\u0106\u0002\u0679\u0678\u0003\u0002', - '\u0002\u0002\u0679\u067a\u0003\u0002\u0002\u0002\u067a\u0133\u0003\u0002', - '\u0002\u0002\u067b\u067c\u0007M\u0002\u0002\u067c\u067d\u00079\u0002', - '\u0002\u067d\u067f\u0005\u0144\u00a3\u0002\u067e\u0680\u0005\u0208\u0105', - '\u0002\u067f\u067e\u0003\u0002\u0002\u0002\u067f\u0680\u0003\u0002\u0002', - '\u0002\u0680\u0135\u0003\u0002\u0002\u0002\u0681\u0682\u0005\u0138\u009d', - '\u0002\u0682\u0683\u00079\u0002\u0002\u0683\u0684\u0005\u0144\u00a3', - '\u0002\u0684\u0137\u0003\u0002\u0002\u0002\u0685\u0686\t\t\u0002\u0002', - '\u0686\u0139\u0003\u0002\u0002\u0002\u0687\u0688\u0007@\u0002\u0002', - '\u0688\u0689\u0007q\u0002\u0002\u0689\u068a\u0005\u0140\u00a1\u0002', - '\u068a\u068b\u0007\u009a\u0002\u0002\u068b\u068c\u0005\u0144\u00a3\u0002', - '\u068c\u068d\u0007\u0017\u0002\u0002\u068d\u068e\u0005\u0154\u00ab\u0002', - '\u068e\u068f\u0007\u0018\u0002\u0002\u068f\u0690\u0005\u014a\u00a6\u0002', - '\u0690\u0691\u0005\u015e\u00b0\u0002\u0691\u0692\u0005\u014c\u00a7\u0002', - '\u0692\u0694\u0005\u0150\u00a9\u0002\u0693\u0695\u0005\u020a\u0106\u0002', - '\u0694\u0693\u0003\u0002\u0002\u0002\u0694\u0695\u0003\u0002\u0002\u0002', - '\u0695\u013b\u0003\u0002\u0002\u0002\u0696\u0697\u0007@\u0002\u0002', - '\u0697\u0698\u0007\u00a9\u0002\u0002\u0698\u0699\u0007q\u0002\u0002', - '\u0699\u069a\u0005\u013e\u00a0\u0002\u069a\u069b\u0007\u009a\u0002\u0002', - '\u069b\u069c\u0005\u0144\u00a3\u0002\u069c\u069d\u0005\u014a\u00a6\u0002', - '\u069d\u069e\u0005\u014c\u00a7\u0002\u069e\u06a0\u0005\u0150\u00a9\u0002', - '\u069f\u06a1\u0005\u020a\u0106\u0002\u06a0\u069f\u0003\u0002\u0002\u0002', - '\u06a0\u06a1\u0003\u0002\u0002\u0002\u06a1\u013d\u0003\u0002\u0002\u0002', - '\u06a2\u06a5\u0003\u0002\u0002\u0002\u06a3\u06a5\u0005\u0140\u00a1\u0002', - '\u06a4\u06a2\u0003\u0002\u0002\u0002\u06a4\u06a3\u0003\u0002\u0002\u0002', - '\u06a5\u013f\u0003\u0002\u0002\u0002\u06a6\u06a7\u0007\u00ef\u0002\u0002', - '\u06a7\u0141\u0003\u0002\u0002\u0002\u06a8\u06ab\u0003\u0002\u0002\u0002', - '\u06a9\u06ab\u0005\u0140\u00a1\u0002\u06aa\u06a8\u0003\u0002\u0002\u0002', - '\u06aa\u06a9\u0003\u0002\u0002\u0002\u06ab\u0143\u0003\u0002\u0002\u0002', - '\u06ac\u06b7\u0005\u0146\u00a4\u0002\u06ad\u06ae\u0005h5\u0002\u06ae', - '\u06af\u0005j6\u0002\u06af\u06b7\u0003\u0002\u0002\u0002\u06b0\u06b1', - '\u0005j6\u0002\u06b1\u06b2\u0007\t\u0002\u0002\u06b2\u06b3\u0005l7\u0002', - '\u06b3\u06b4\u0007\t\u0002\u0002\u06b4\u06b5\u0005n8\u0002\u06b5\u06b7', - '\u0003\u0002\u0002\u0002\u06b6\u06ac\u0003\u0002\u0002\u0002\u06b6\u06ad', - '\u0003\u0002\u0002\u0002\u06b6\u06b0\u0003\u0002\u0002\u0002\u06b7\u0145', - '\u0003\u0002\u0002\u0002\u06b8\u06c1\u0005n8\u0002\u06b9\u06ba\u0005', - 'h5\u0002\u06ba\u06bb\u0005j6\u0002\u06bb\u06bc\u0007\t\u0002\u0002\u06bc', - '\u06bd\u0005l7\u0002\u06bd\u06be\u0007\t\u0002\u0002\u06be\u06bf\u0005', - 'n8\u0002\u06bf\u06c1\u0003\u0002\u0002\u0002\u06c0\u06b8\u0003\u0002', - '\u0002\u0002\u06c0\u06b9\u0003\u0002\u0002\u0002\u06c1\u0147\u0003\u0002', - '\u0002\u0002\u06c2\u06c3\u0005h5\u0002\u06c3\u06c4\u0005j6\u0002\u06c4', - '\u06c5\u0007\t\u0002\u0002\u06c5\u06c6\u0005l7\u0002\u06c6\u06cc\u0003', - '\u0002\u0002\u0002\u06c7\u06c8\u0005j6\u0002\u06c8\u06c9\u0007\t\u0002', - '\u0002\u06c9\u06ca\u0005l7\u0002\u06ca\u06cc\u0003\u0002\u0002\u0002', - '\u06cb\u06c2\u0003\u0002\u0002\u0002\u06cb\u06c7\u0003\u0002\u0002\u0002', - '\u06cc\u0149\u0003\u0002\u0002\u0002\u06cd\u06d6\u0003\u0002\u0002\u0002', - '\u06ce\u06cf\u0007\u00a3\u0002\u0002\u06cf\u06d0\u00073\u0002\u0002', - '\u06d0\u06d1\u0007i\u0002\u0002\u06d1\u06d2\u0007\u0017\u0002\u0002', - '\u06d2\u06d3\u0005\u01a0\u00d1\u0002\u06d3\u06d4\u0007\u0018\u0002\u0002', - '\u06d4\u06d6\u0003\u0002\u0002\u0002\u06d5\u06cd\u0003\u0002\u0002\u0002', - '\u06d5\u06ce\u0003\u0002\u0002\u0002\u06d6\u014b\u0003\u0002\u0002\u0002', - '\u06d7\u06da\u0003\u0002\u0002\u0002\u06d8\u06da\u0005\u014e\u00a8\u0002', - '\u06d9\u06d7\u0003\u0002\u0002\u0002\u06d9\u06d8\u0003\u0002\u0002\u0002', - '\u06da\u014d\u0003\u0002\u0002\u0002\u06db\u06dc\u0007\u00df\u0002\u0002', - '\u06dc\u06e2\u0007\u00e5\u0002\u0002\u06dd\u06de\u0007\u00df\u0002\u0002', - '\u06de\u06e2\u0007h\u0002\u0002\u06df\u06e0\u0007\u00df\u0002\u0002', - '\u06e0\u06e2\u0007b\u0002\u0002\u06e1\u06db\u0003\u0002\u0002\u0002', - '\u06e1\u06dd\u0003\u0002\u0002\u0002\u06e1\u06df\u0003\u0002\u0002\u0002', - '\u06e2\u014f\u0003\u0002\u0002\u0002\u06e3\u06e6\u0003\u0002\u0002\u0002', - '\u06e4\u06e6\u0005\u0152\u00aa\u0002\u06e5\u06e3\u0003\u0002\u0002\u0002', - '\u06e5\u06e4\u0003\u0002\u0002\u0002\u06e6\u0151\u0003\u0002\u0002\u0002', - '\u06e7\u06e8\u0007\u00ea\u0002\u0002\u06e8\u06e9\u0005\u0188\u00c5\u0002', - '\u06e9\u0153\u0003\u0002\u0002\u0002\u06ea\u06eb\b\u00ab\u0001\u0002', - '\u06eb\u06ec\u0005\u0156\u00ac\u0002\u06ec\u06f2\u0003\u0002\u0002\u0002', - '\u06ed\u06ee\f\u0003\u0002\u0002\u06ee\u06ef\u0007\u001b\u0002\u0002', - '\u06ef\u06f1\u0005\u0156\u00ac\u0002\u06f0\u06ed\u0003\u0002\u0002\u0002', - '\u06f1\u06f4\u0003\u0002\u0002\u0002\u06f2\u06f0\u0003\u0002\u0002\u0002', - '\u06f2\u06f3\u0003\u0002\u0002\u0002\u06f3\u0155\u0003\u0002\u0002\u0002', - '\u06f4\u06f2\u0003\u0002\u0002\u0002\u06f5\u06f6\u0005\u0158\u00ad\u0002', - '\u06f6\u06f7\u0005\u0160\u00b1\u0002\u06f7\u0157\u0003\u0002\u0002\u0002', - '\u06f8\u0703\u0005\u015a\u00ae\u0002\u06f9\u06fa\u0005\u015c\u00af\u0002', - '\u06fa\u06fb\u0005\u015a\u00ae\u0002\u06fb\u0703\u0003\u0002\u0002\u0002', - '\u06fc\u06fd\u0005\u015c\u00af\u0002\u06fd\u06fe\u0007K\u0002\u0002', - '\u06fe\u06ff\u0005\u015a\u00ae\u0002\u06ff\u0703\u0003\u0002\u0002\u0002', - '\u0700\u0701\u0007K\u0002\u0002\u0701\u0703\u0005\u015a\u00ae\u0002', - '\u0702\u06f8\u0003\u0002\u0002\u0002\u0702\u06f9\u0003\u0002\u0002\u0002', - '\u0702\u06fc\u0003\u0002\u0002\u0002\u0702\u0700\u0003\u0002\u0002\u0002', - '\u0703\u0159\u0003\u0002\u0002\u0002\u0704\u0705\u0005\u0188\u00c5\u0002', - '\u0705\u015b\u0003\u0002\u0002\u0002\u0706\u0707\t\n\u0002\u0002\u0707', - '\u015d\u0003\u0002\u0002\u0002\u0708\u070c\u0003\u0002\u0002\u0002\u0709', - '\u070a\u0007\u00e7\u0002\u0002\u070a\u070c\u0005\u015a\u00ae\u0002\u070b', - '\u0708\u0003\u0002\u0002\u0002\u070b\u0709\u0003\u0002\u0002\u0002\u070c', - '\u015f\u0003\u0002\u0002\u0002\u070d\u0713\u0003\u0002\u0002\u0002\u070e', - '\u0713\u0005\u0162\u00b2\u0002\u070f\u0710\u0005\u0162\u00b2\u0002\u0710', - '\u0711\u0005\u0162\u00b2\u0002\u0711\u0713\u0003\u0002\u0002\u0002\u0712', - '\u070d\u0003\u0002\u0002\u0002\u0712\u070e\u0003\u0002\u0002\u0002\u0712', - '\u070f\u0003\u0002\u0002\u0002\u0713\u0161\u0003\u0002\u0002\u0002\u0714', - '\u0715\t\u000b\u0002\u0002\u0715\u0163\u0003\u0002\u0002\u0002\u0716', - '\u0717\u0007M\u0002\u0002\u0717\u0718\u0007\u00a9\u0002\u0002\u0718', - '\u0719\u0007q\u0002\u0002\u0719\u071a\u0007\u009a\u0002\u0002\u071a', - '\u071b\u0005\u0144\u00a3\u0002\u071b\u071c\u0005\u014c\u00a7\u0002\u071c', - '\u072c\u0003\u0002\u0002\u0002\u071d\u071e\u0007M\u0002\u0002\u071e', - '\u071f\u0007q\u0002\u0002\u071f\u0720\u0005\u0146\u00a4\u0002\u0720', - '\u0721\u0007\t\u0002\u0002\u0721\u0722\u0005\u0140\u00a1\u0002\u0722', - '\u0723\u0005\u014c\u00a7\u0002\u0723\u072c\u0003\u0002\u0002\u0002\u0724', - '\u0725\u0007M\u0002\u0002\u0725\u0726\u0007q\u0002\u0002\u0726\u0727', - '\u0005\u0140\u00a1\u0002\u0727\u0728\u0007\u009a\u0002\u0002\u0728\u0729', - '\u0005\u0144\u00a3\u0002\u0729\u072a\u0005\u014c\u00a7\u0002\u072a\u072c', - '\u0003\u0002\u0002\u0002\u072b\u0716\u0003\u0002\u0002\u0002\u072b\u071d', - '\u0003\u0002\u0002\u0002\u072b\u0724\u0003\u0002\u0002\u0002\u072c\u0165', - '\u0003\u0002\u0002\u0002\u072d\u072e\u0007$\u0002\u0002\u072e\u072f', - '\u0007q\u0002\u0002\u072f\u0730\u0005\u0146\u00a4\u0002\u0730\u0731', - '\u0007\t\u0002\u0002\u0731\u0732\u0005\u0140\u00a1\u0002\u0732\u0733', - '\u0005\u014c\u00a7\u0002\u0733\u0734\u0005\u0152\u00aa\u0002\u0734\u073e', - '\u0003\u0002\u0002\u0002\u0735\u0736\u0007$\u0002\u0002\u0736\u0737', - '\u0007q\u0002\u0002\u0737\u0738\u0005\u0140\u00a1\u0002\u0738\u0739', - '\u0007\u009a\u0002\u0002\u0739\u073a\u0005\u0144\u00a3\u0002\u073a\u073b', - '\u0005\u014c\u00a7\u0002\u073b\u073c\u0005\u0152\u00aa\u0002\u073c\u073e', - '\u0003\u0002\u0002\u0002\u073d\u072d\u0003\u0002\u0002\u0002\u073d\u0735', - '\u0003\u0002\u0002\u0002\u073e\u0167\u0003\u0002\u0002\u0002\u073f\u0740', - '\u00072\u0002\u0002\u0740\u0741\u0007q\u0002\u0002\u0741\u0742\u0007', - '\u009a\u0002\u0002\u0742\u0743\u0005\u0144\u00a3\u0002\u0743\u0744\u0007', - '\u0017\u0002\u0002\u0744\u0745\u0005\u01a0\u00d1\u0002\u0745\u0746\u0007', - '\u0018\u0002\u0002\u0746\u0747\u0005\u014c\u00a7\u0002\u0747\u0169\u0003', - '\u0002\u0002\u0002\u0748\u0749\u0007@\u0002\u0002\u0749\u074a\u0005', - '\u016c\u00b7\u0002\u074a\u074b\u0007c\u0002\u0002\u074b\u074c\u0005', - '\u016e\u00b8\u0002\u074c\u074d\u0007\u0017\u0002\u0002\u074d\u074e\u0005', - '\u0174\u00bb\u0002\u074e\u074f\u0007\u0018\u0002\u0002\u074f\u0750\u0005', - '\u0178\u00bd\u0002\u0750\u016b\u0003\u0002\u0002\u0002\u0751\u0755\u0003', - '\u0002\u0002\u0002\u0752\u0753\u0007\u009d\u0002\u0002\u0753\u0755\u0007', - '\u00b5\u0002\u0002\u0754\u0751\u0003\u0002\u0002\u0002\u0754\u0752\u0003', - '\u0002\u0002\u0002\u0755\u016d\u0003\u0002\u0002\u0002\u0756\u0759\u0005', - '\u0170\u00b9\u0002\u0757\u0759\u0005\u0172\u00ba\u0002\u0758\u0756\u0003', - '\u0002\u0002\u0002\u0758\u0757\u0003\u0002\u0002\u0002\u0759\u016f\u0003', - '\u0002\u0002\u0002\u075a\u075b\u0005n8\u0002\u075b\u0171\u0003\u0002', - '\u0002\u0002\u075c\u075d\u0005f4\u0002\u075d\u075e\u0005n8\u0002\u075e', - '\u0767\u0003\u0002\u0002\u0002\u075f\u0760\u0005f4\u0002\u0760\u0761', - '\u0005j6\u0002\u0761\u0762\u0007\t\u0002\u0002\u0762\u0763\u0005l7\u0002', - '\u0763\u0764\u0007\t\u0002\u0002\u0764\u0765\u0005n8\u0002\u0765\u0767', - '\u0003\u0002\u0002\u0002\u0766\u075c\u0003\u0002\u0002\u0002\u0766\u075f', - '\u0003\u0002\u0002\u0002\u0767\u0173\u0003\u0002\u0002\u0002\u0768\u076e', - '\u0003\u0002\u0002\u0002\u0769\u076a\u0007\t\u0002\u0002\u076a\u076b', - '\u0007\t\u0002\u0002\u076b\u076e\u0007\t\u0002\u0002\u076c\u076e\u0005', - '\u0176\u00bc\u0002\u076d\u0768\u0003\u0002\u0002\u0002\u076d\u0769\u0003', - '\u0002\u0002\u0002\u076d\u076c\u0003\u0002\u0002\u0002\u076e\u0175\u0003', - '\u0002\u0002\u0002\u076f\u0770\b\u00bc\u0001\u0002\u0770\u0771\u0007', - '\u00ef\u0002\u0002\u0771\u0777\u0003\u0002\u0002\u0002\u0772\u0773\f', - '\u0003\u0002\u0002\u0773\u0774\u0007\u001b\u0002\u0002\u0774\u0776\u0007', - '\u00ef\u0002\u0002\u0775\u0772\u0003\u0002\u0002\u0002\u0776\u0779\u0003', - '\u0002\u0002\u0002\u0777\u0775\u0003\u0002\u0002\u0002\u0777\u0778\u0003', - '\u0002\u0002\u0002\u0778\u0177\u0003\u0002\u0002\u0002\u0779\u0777\u0003', - '\u0002\u0002\u0002\u077a\u077b\u0007\u0019\u0002\u0002\u077b\u077c\u0005', - '\u0188\u00c5\u0002\u077c\u077d\u0007\u001a\u0002\u0002\u077d\u078f\u0003', - '\u0002\u0002\u0002\u077e\u077f\u0007\u0080\u0002\u0002\u077f\u0780\u0007', - 's\u0002\u0002\u0780\u0781\u0007)\u0002\u0002\u0781\u078f\u0005\u0188', - '\u00c5\u0002\u0782\u0783\u0007\u0080\u0002\u0002\u0783\u0784\u0007d', - '\u0002\u0002\u0784\u0785\u0007)\u0002\u0002\u0785\u0786\u0007\u0003', - '\u0002\u0002\u0786\u0787\u0007+\u0002\u0002\u0787\u078f\u0007\u0003', - '\u0002\u0002\u0788\u0789\u0007\u0080\u0002\u0002\u0789\u078a\u0007z', - '\u0002\u0002\u078a\u078b\u0007)\u0002\u0002\u078b\u078c\u0007\u0003', - '\u0002\u0002\u078c\u078d\u0007+\u0002\u0002\u078d\u078f\u0007\u0003', - '\u0002\u0002\u078e\u077a\u0003\u0002\u0002\u0002\u078e\u077e\u0003\u0002', - '\u0002\u0002\u078e\u0782\u0003\u0002\u0002\u0002\u078e\u0788\u0003\u0002', - '\u0002\u0002\u078f\u0179\u0003\u0002\u0002\u0002\u0790\u0791\u0007M', - '\u0002\u0002\u0791\u0792\u0007c\u0002\u0002\u0792\u0793\u0005\u016e', - '\u00b8\u0002\u0793\u017b\u0003\u0002\u0002\u0002\u0794\u0795\u0007U', - '\u0002\u0002\u0795\u0796\u0007c\u0002\u0002\u0796\u0797\u0005\u016e', - '\u00b8\u0002\u0797\u0798\u0007\u0017\u0002\u0002\u0798\u0799\u0005\u019e', - '\u00d0\u0002\u0799\u079a\u0007\u0018\u0002\u0002\u079a\u017d\u0003\u0002', - '\u0002\u0002\u079b\u079c\u0007\u00db\u0002\u0002\u079c\u079d\u0007\u00c9', - '\u0002\u0002\u079d\u079e\u0005\u0180\u00c1\u0002\u079e\u079f\u0005\u0144', - '\u00a3\u0002\u079f\u07a0\u0007\u0017\u0002\u0002\u07a0\u07a1\u0005\u0182', - '\u00c2\u0002\u07a1\u07a2\u0007\u0018\u0002\u0002\u07a2\u07a3\u0005$', - '\u0013\u0002\u07a3\u0816\u0003\u0002\u0002\u0002\u07a4\u07a5\u0007\u00db', - '\u0002\u0002\u07a5\u07a6\u0007\u00c9\u0002\u0002\u07a6\u07a7\u0005\u0180', - '\u00c1\u0002\u07a7\u07a8\u0005\u0144\u00a3\u0002\u07a8\u07a9\u0007G', - '\u0002\u0002\u07a9\u07aa\u0007\u0017\u0002\u0002\u07aa\u07ab\u0005\u0182', - '\u00c2\u0002\u07ab\u07ac\u0007\u0018\u0002\u0002\u07ac\u0816\u0003\u0002', - '\u0002\u0002\u07ad\u07ae\u0007\u00db\u0002\u0002\u07ae\u07af\u0007\u00c9', - '\u0002\u0002\u07af\u07b0\u0005\u0180\u00c1\u0002\u07b0\u07b1\u0005\u0144', - '\u00a3\u0002\u07b1\u07b2\u0007G\u0002\u0002\u07b2\u07b3\u0007#\u0002', - '\u0002\u07b3\u0816\u0003\u0002\u0002\u0002\u07b4\u07b5\u0007\u00db\u0002', - '\u0002\u07b5\u07b6\u0007\u00c9\u0002\u0002\u07b6\u07b7\u0005\u0180\u00c1', - '\u0002\u07b7\u07b8\u0005\u0144\u00a3\u0002\u07b8\u07b9\u0007q\u0002', - '\u0002\u07b9\u07ba\u0007\u0017\u0002\u0002\u07ba\u07bb\u0005\u01a0\u00d1', - '\u0002\u07bb\u07bc\u0007\u0018\u0002\u0002\u07bc\u07bd\u0005\u014c\u00a7', - '\u0002\u07bd\u07be\u0005$\u0013\u0002\u07be\u0816\u0003\u0002\u0002', - '\u0002\u07bf\u07c0\u0007\u00db\u0002\u0002\u07c0\u07c1\u0007\u00c9\u0002', - '\u0002\u07c1\u07c2\u0005\u0180\u00c1\u0002\u07c2\u07c3\u0005\u0144\u00a3', - '\u0002\u07c3\u07c4\u0007q\u0002\u0002\u07c4\u07c5\u0007#\u0002\u0002', - '\u07c5\u07c6\u0005\u014c\u00a7\u0002\u07c6\u07c7\u0005$\u0013\u0002', - '\u07c7\u0816\u0003\u0002\u0002\u0002\u07c8\u07c9\u0007\u00db\u0002\u0002', - '\u07c9\u07ca\u0007\u00c9\u0002\u0002\u07ca\u07cb\u0007_\u0002\u0002', - '\u07cb\u07cc\u0007q\u0002\u0002\u07cc\u07cd\u0005\u0146\u00a4\u0002', - '\u07cd\u07ce\u0007\t\u0002\u0002\u07ce\u07cf\u0005\u0140\u00a1\u0002', - '\u07cf\u07d0\u0005\u014c\u00a7\u0002\u07d0\u07d1\u0005$\u0013\u0002', - '\u07d1\u0816\u0003\u0002\u0002\u0002\u07d2\u07d3\u0007\u00db\u0002\u0002', - '\u07d3\u07d4\u0007\u00c9\u0002\u0002\u07d4\u07d5\u0007_\u0002\u0002', - '\u07d5\u07d6\u0007q\u0002\u0002\u07d6\u07d7\u0005\u0140\u00a1\u0002', - '\u07d7\u07d8\u0007\u009a\u0002\u0002\u07d8\u07d9\u0005\u0144\u00a3\u0002', - '\u07d9\u07da\u0005\u014c\u00a7\u0002\u07da\u07db\u0005$\u0013\u0002', - '\u07db\u0816\u0003\u0002\u0002\u0002\u07dc\u07dd\u0007%\u0002\u0002', - '\u07dd\u07de\u0005 \u0011\u0002\u07de\u07df\u0005\u0144\u00a3\u0002', - '\u07df\u07e0\u0007\u0017\u0002\u0002\u07e0\u07e1\u0005\u0182\u00c2\u0002', - '\u07e1\u07e2\u0007\u0018\u0002\u0002\u07e2\u07e3\u0005$\u0013\u0002', - '\u07e3\u0816\u0003\u0002\u0002\u0002\u07e4\u07e5\u0007%\u0002\u0002', - '\u07e5\u07e6\u0005 \u0011\u0002\u07e6\u07e7\u0005\u0144\u00a3\u0002', - '\u07e7\u07e8\u0007G\u0002\u0002\u07e8\u07e9\u0007\u00c9\u0002\u0002', - '\u07e9\u07ea\u0007\u0017\u0002\u0002\u07ea\u07eb\u0005\u0182\u00c2\u0002', - '\u07eb\u07ec\u0007\u0018\u0002\u0002\u07ec\u0816\u0003\u0002\u0002\u0002', - '\u07ed\u07ee\u0007%\u0002\u0002\u07ee\u07ef\u0005 \u0011\u0002\u07ef', - '\u07f0\u0005\u0144\u00a3\u0002\u07f0\u07f1\u0007G\u0002\u0002\u07f1', - '\u07f2\u0007\u00c9\u0002\u0002\u07f2\u0816\u0003\u0002\u0002\u0002\u07f3', - '\u07f4\u0007%\u0002\u0002\u07f4\u07f5\u0005 \u0011\u0002\u07f5\u07f6', - '\u0005\u0144\u00a3\u0002\u07f6\u07f7\u0007q\u0002\u0002\u07f7\u07f8', - '\u0007\u0017\u0002\u0002\u07f8\u07f9\u0005\u01a0\u00d1\u0002\u07f9\u07fa', - '\u0007\u0018\u0002\u0002\u07fa\u07fb\u0005\u014c\u00a7\u0002\u07fb\u07fc', - '\u0005$\u0013\u0002\u07fc\u0816\u0003\u0002\u0002\u0002\u07fd\u07fe', - '\u0007%\u0002\u0002\u07fe\u07ff\u0005 \u0011\u0002\u07ff\u0800\u0005', - '\u0144\u00a3\u0002\u0800\u0801\u0007q\u0002\u0002\u0801\u0802\u0007', - '#\u0002\u0002\u0802\u0803\u0005\u014c\u00a7\u0002\u0803\u0804\u0005', - '$\u0013\u0002\u0804\u0816\u0003\u0002\u0002\u0002\u0805\u0806\u0007', - '%\u0002\u0002\u0806\u0807\u0007q\u0002\u0002\u0807\u0808\u0005\u0146', - '\u00a4\u0002\u0808\u0809\u0007\t\u0002\u0002\u0809\u080a\u0005\u0140', - '\u00a1\u0002\u080a\u080b\u0005\u014c\u00a7\u0002\u080b\u080c\u0005$', - '\u0013\u0002\u080c\u0816\u0003\u0002\u0002\u0002\u080d\u080e\u0007%', - '\u0002\u0002\u080e\u080f\u0007q\u0002\u0002\u080f\u0810\u0005\u0140', - '\u00a1\u0002\u0810\u0811\u0007\u009a\u0002\u0002\u0811\u0812\u0005\u0144', - '\u00a3\u0002\u0812\u0813\u0005\u014c\u00a7\u0002\u0813\u0814\u0005$', - '\u0013\u0002\u0814\u0816\u0003\u0002\u0002\u0002\u0815\u079b\u0003\u0002', - '\u0002\u0002\u0815\u07a4\u0003\u0002\u0002\u0002\u0815\u07ad\u0003\u0002', - '\u0002\u0002\u0815\u07b4\u0003\u0002\u0002\u0002\u0815\u07bf\u0003\u0002', - '\u0002\u0002\u0815\u07c8\u0003\u0002\u0002\u0002\u0815\u07d2\u0003\u0002', - '\u0002\u0002\u0815\u07dc\u0003\u0002\u0002\u0002\u0815\u07e4\u0003\u0002', - '\u0002\u0002\u0815\u07ed\u0003\u0002\u0002\u0002\u0815\u07f3\u0003\u0002', - '\u0002\u0002\u0815\u07fd\u0003\u0002\u0002\u0002\u0815\u0805\u0003\u0002', - '\u0002\u0002\u0815\u080d\u0003\u0002\u0002\u0002\u0816\u017f\u0003\u0002', - '\u0002\u0002\u0817\u081a\u0003\u0002\u0002\u0002\u0818\u081a\u0007_', - '\u0002\u0002\u0819\u0817\u0003\u0002\u0002\u0002\u0819\u0818\u0003\u0002', - '\u0002\u0002\u081a\u0181\u0003\u0002\u0002\u0002\u081b\u081c\b\u00c2', - '\u0001\u0002\u081c\u081d\u0005\u0184\u00c3\u0002\u081d\u0823\u0003\u0002', - '\u0002\u0002\u081e\u081f\f\u0003\u0002\u0002\u081f\u0820\u0007\u001b', - '\u0002\u0002\u0820\u0822\u0005\u0184\u00c3\u0002\u0821\u081e\u0003\u0002', - '\u0002\u0002\u0822\u0825\u0003\u0002\u0002\u0002\u0823\u0821\u0003\u0002', - '\u0002\u0002\u0823\u0824\u0003\u0002\u0002\u0002\u0824\u0183\u0003\u0002', - '\u0002\u0002\u0825\u0823\u0003\u0002\u0002\u0002\u0826\u0827\u0005\u0158', - '\u00ad\u0002\u0827\u0185\u0003\u0002\u0002\u0002\u0828\u0829\b\u00c4', - '\u0001\u0002\u0829\u082a\u0007\u00ef\u0002\u0002\u082a\u0844\u0003\u0002', - '\u0002\u0002\u082b\u082c\f\u0007\u0002\u0002\u082c\u082d\u0007\t\u0002', - '\u0002\u082d\u0843\u0007\u00ef\u0002\u0002\u082e\u082f\f\u0006\u0002', - '\u0002\u082f\u0830\u0007\t\u0002\u0002\u0830\u0843\u0007\u00ee\u0002', - '\u0002\u0831\u0832\f\u0005\u0002\u0002\u0832\u0833\u0007\t\u0002\u0002', - '\u0833\u0834\u0007\u001d\u0002\u0002\u0834\u0835\u0005\u0188\u00c5\u0002', - '\u0835\u0836\u0007\u001e\u0002\u0002\u0836\u0843\u0003\u0002\u0002\u0002', - '\u0837\u0838\f\u0004\u0002\u0002\u0838\u0839\u0007\t\u0002\u0002\u0839', - '\u083a\u0007\u001d\u0002\u0002\u083a\u083b\u0005\u0188\u00c5\u0002\u083b', - '\u083c\u0007\u001f\u0002\u0002\u083c\u0843\u0003\u0002\u0002\u0002\u083d', - '\u083e\f\u0003\u0002\u0002\u083e\u083f\u0007\u001d\u0002\u0002\u083f', - '\u0840\u0005\u0188\u00c5\u0002\u0840\u0841\u0007\u001e\u0002\u0002\u0841', - '\u0843\u0003\u0002\u0002\u0002\u0842\u082b\u0003\u0002\u0002\u0002\u0842', - '\u082e\u0003\u0002\u0002\u0002\u0842\u0831\u0003\u0002\u0002\u0002\u0842', - '\u0837\u0003\u0002\u0002\u0002\u0842\u083d\u0003\u0002\u0002\u0002\u0843', - '\u0846\u0003\u0002\u0002\u0002\u0844\u0842\u0003\u0002\u0002\u0002\u0844', - '\u0845\u0003\u0002\u0002\u0002\u0845\u0187\u0003\u0002\u0002\u0002\u0846', - '\u0844\u0003\u0002\u0002\u0002\u0847\u0848\b\u00c5\u0001\u0002\u0848', - '\u084e\u0005\u018c\u00c7\u0002\u0849\u084a\u0007\u0093\u0002\u0002\u084a', - '\u084e\u0005\u0188\u00c5\u0019\u084b\u084c\u0007V\u0002\u0002\u084c', - '\u084e\u0005\u0188\u00c5\u0003\u084d\u0847\u0003\u0002\u0002\u0002\u084d', - '\u0849\u0003\u0002\u0002\u0002\u084d\u084b\u0003\u0002\u0002\u0002\u084e', - '\u08dd\u0003\u0002\u0002\u0002\u084f\u0850\f!\u0002\u0002\u0850\u0851', - '\u0007\n\u0002\u0002\u0851\u08dc\u0005\u0188\u00c5"\u0852\u0853\f ', - '\u0002\u0002\u0853\u0854\u0007\u000b\u0002\u0002\u0854\u08dc\u0005\u0188', - '\u00c5!\u0855\u0856\f\u001f\u0002\u0002\u0856\u0857\u0007\f\u0002\u0002', - '\u0857\u08dc\u0005\u0188\u00c5 \u0858\u0859\f\u001e\u0002\u0002\u0859', - '\u085a\u0007\r\u0002\u0002\u085a\u08dc\u0005\u0188\u00c5\u001f\u085b', - '\u085c\f\u001d\u0002\u0002\u085c\u085d\u0007\u000e\u0002\u0002\u085d', - '\u08dc\u0005\u0188\u00c5\u001e\u085e\u085f\f\u001c\u0002\u0002\u085f', - '\u0860\u0007\u0016\u0002\u0002\u0860\u08dc\u0005\u0188\u00c5\u001d\u0861', - '\u0862\f\u001b\u0002\u0002\u0862\u0863\u0007&\u0002\u0002\u0863\u08dc', - '\u0005\u0188\u00c5\u001c\u0864\u0865\f\u001a\u0002\u0002\u0865\u0866', - '\u0007\u009d\u0002\u0002\u0866\u08dc\u0005\u0188\u00c5\u001b\u0867\u0868', - '\f\u0018\u0002\u0002\u0868\u0869\u0007\u0010\u0002\u0002\u0869\u08dc', - '\u0005\u0188\u00c5\u0019\u086a\u086b\f\u0017\u0002\u0002\u086b\u086c', - '\u0007\u000f\u0002\u0002\u086c\u08dc\u0005\u0188\u00c5\u0018\u086d\u086e', - '\f\u0016\u0002\u0002\u086e\u086f\u0007\u0011\u0002\u0002\u086f\u08dc', - '\u0005\u0188\u00c5\u0017\u0870\u0871\f\u0015\u0002\u0002\u0871\u0872', - '\u0007\u0012\u0002\u0002\u0872\u08dc\u0005\u0188\u00c5\u0016\u0873\u0874', - '\f\u0014\u0002\u0002\u0874\u0875\u0007\u0014\u0002\u0002\u0875\u08dc', - '\u0005\u0188\u00c5\u0015\u0876\u0877\f\u0013\u0002\u0002\u0877\u0878', - '\u0007\u0013\u0002\u0002\u0878\u08dc\u0005\u0188\u00c5\u0014\u0879\u087a', - '\f\u0012\u0002\u0002\u087a\u087b\u0007\u0015\u0002\u0002\u087b\u08dc', - '\u0005\u0188\u00c5\u0013\u087c\u087d\f\u000f\u0002\u0002\u087d\u087e', - '\u0007\u0086\u0002\u0002\u087e\u08dc\u0005\u0188\u00c5\u0010\u087f\u0880', - '\f\u000e\u0002\u0002\u0880\u0881\u0007\u0093\u0002\u0002\u0881\u0882', - '\u0007\u0086\u0002\u0002\u0882\u08dc\u0005\u0188\u00c5\u000f\u0883\u0884', - '\f\r\u0002\u0002\u0884\u0885\u0007n\u0002\u0002\u0885\u08dc\u0005\u0188', - '\u00c5\u000e\u0886\u0887\f\f\u0002\u0002\u0887\u0888\u0007\u0093\u0002', - '\u0002\u0888\u0889\u0007n\u0002\u0002\u0889\u08dc\u0005\u0188\u00c5', - '\r\u088a\u088b\f\u000b\u0002\u0002\u088b\u088c\u0007\u00eb\u0002\u0002', - '\u088c\u08dc\u0005\u0188\u00c5\f\u088d\u088e\f\n\u0002\u0002\u088e\u088f', - '\u0007\u0093\u0002\u0002\u088f\u0890\u0007\u00eb\u0002\u0002\u0890\u08dc', - '\u0005\u0188\u00c5\u000b\u0891\u0892\f)\u0002\u0002\u0892\u0893\u0007', - '\t\u0002\u0002\u0893\u08dc\u0007\u00ef\u0002\u0002\u0894\u0895\f(\u0002', - '\u0002\u0895\u0896\u0007\t\u0002\u0002\u0896\u08dc\u0007\u00ee\u0002', - "\u0002\u0897\u0898\f'\u0002\u0002\u0898\u0899\u0007\t\u0002\u0002\u0899", - '\u089a\u0007\u001d\u0002\u0002\u089a\u089b\u0005\u0188\u00c5\u0002\u089b', - '\u089c\u0007\u001e\u0002\u0002\u089c\u08dc\u0003\u0002\u0002\u0002\u089d', - '\u089e\f&\u0002\u0002\u089e\u089f\u0007\t\u0002\u0002\u089f\u08a0\u0007', - '\u001d\u0002\u0002\u08a0\u08a1\u0005\u0188\u00c5\u0002\u08a1\u08a2\u0007', - '\u001f\u0002\u0002\u08a2\u08dc\u0003\u0002\u0002\u0002\u08a3\u08a4\f', - '%\u0002\u0002\u08a4\u08a5\u0007\u001d\u0002\u0002\u08a5\u08a6\u0005', - '\u0188\u00c5\u0002\u08a6\u08a7\u0007\u001e\u0002\u0002\u08a7\u08dc\u0003', - '\u0002\u0002\u0002\u08a8\u08a9\f$\u0002\u0002\u08a9\u08aa\u0007\u001d', - '\u0002\u0002\u08aa\u08ab\u0005\u0188\u00c5\u0002\u08ab\u08ac\u0007\u001c', - '\u0002\u0002\u08ac\u08ad\u0007\u001e\u0002\u0002\u08ad\u08dc\u0003\u0002', - '\u0002\u0002\u08ae\u08af\f#\u0002\u0002\u08af\u08b0\u0007\u001d\u0002', - '\u0002\u08b0\u08b1\u0005\u0188\u00c5\u0002\u08b1\u08b2\u0007\u001c\u0002', - '\u0002\u08b2\u08b3\u0005\u0188\u00c5\u0002\u08b3\u08b4\u0007\u001e\u0002', - '\u0002\u08b4\u08dc\u0003\u0002\u0002\u0002\u08b5\u08b6\f"\u0002\u0002', - '\u08b6\u08b7\u0007\u001d\u0002\u0002\u08b7\u08b8\u0007\f\u0002\u0002', - '\u08b8\u08dc\u0007\u001e\u0002\u0002\u08b9\u08ba\f\u0011\u0002\u0002', - '\u08ba\u08bb\u0007-\u0002\u0002\u08bb\u08bc\u0005\u018e\u00c8\u0002', - '\u08bc\u08bd\u0007&\u0002\u0002\u08bd\u08be\u0005\u018e\u00c8\u0002', - '\u08be\u08dc\u0003\u0002\u0002\u0002\u08bf\u08c0\f\u0010\u0002\u0002', - '\u08c0\u08c1\u0007\u0093\u0002\u0002\u08c1\u08c2\u0007-\u0002\u0002', - '\u08c2\u08c3\u0005\u018e\u00c8\u0002\u08c3\u08c4\u0007&\u0002\u0002', - '\u08c4\u08c5\u0005\u018e\u00c8\u0002\u08c5\u08dc\u0003\u0002\u0002\u0002', - '\u08c6\u08c7\f\t\u0002\u0002\u08c7\u08c8\u0007x\u0002\u0002\u08c8\u08dc', - '\u0007\u0095\u0002\u0002\u08c9\u08ca\f\b\u0002\u0002\u08ca\u08cb\u0007', - 'x\u0002\u0002\u08cb\u08cc\u0007\u0093\u0002\u0002\u08cc\u08dc\u0007', - '\u0095\u0002\u0002\u08cd\u08ce\f\u0007\u0002\u0002\u08ce\u08cf\u0007', - 'x\u0002\u0002\u08cf\u08dc\u0007\u008e\u0002\u0002\u08d0\u08d1\f\u0006', - '\u0002\u0002\u08d1\u08d2\u0007x\u0002\u0002\u08d2\u08d3\u0007\u0093', - '\u0002\u0002\u08d3\u08dc\u0007\u008e\u0002\u0002\u08d4\u08d5\f\u0005', - '\u0002\u0002\u08d5\u08d6\u0007x\u0002\u0002\u08d6\u08dc\u0005\u018a', - '\u00c6\u0002\u08d7\u08d8\f\u0004\u0002\u0002\u08d8\u08d9\u0007x\u0002', - '\u0002\u08d9\u08da\u0007\u0093\u0002\u0002\u08da\u08dc\u0005\u018a\u00c6', - '\u0002\u08db\u084f\u0003\u0002\u0002\u0002\u08db\u0852\u0003\u0002\u0002', - '\u0002\u08db\u0855\u0003\u0002\u0002\u0002\u08db\u0858\u0003\u0002\u0002', - '\u0002\u08db\u085b\u0003\u0002\u0002\u0002\u08db\u085e\u0003\u0002\u0002', - '\u0002\u08db\u0861\u0003\u0002\u0002\u0002\u08db\u0864\u0003\u0002\u0002', - '\u0002\u08db\u0867\u0003\u0002\u0002\u0002\u08db\u086a\u0003\u0002\u0002', - '\u0002\u08db\u086d\u0003\u0002\u0002\u0002\u08db\u0870\u0003\u0002\u0002', - '\u0002\u08db\u0873\u0003\u0002\u0002\u0002\u08db\u0876\u0003\u0002\u0002', - '\u0002\u08db\u0879\u0003\u0002\u0002\u0002\u08db\u087c\u0003\u0002\u0002', - '\u0002\u08db\u087f\u0003\u0002\u0002\u0002\u08db\u0883\u0003\u0002\u0002', - '\u0002\u08db\u0886\u0003\u0002\u0002\u0002\u08db\u088a\u0003\u0002\u0002', - '\u0002\u08db\u088d\u0003\u0002\u0002\u0002\u08db\u0891\u0003\u0002\u0002', - '\u0002\u08db\u0894\u0003\u0002\u0002\u0002\u08db\u0897\u0003\u0002\u0002', - '\u0002\u08db\u089d\u0003\u0002\u0002\u0002\u08db\u08a3\u0003\u0002\u0002', - '\u0002\u08db\u08a8\u0003\u0002\u0002\u0002\u08db\u08ae\u0003\u0002\u0002', - '\u0002\u08db\u08b5\u0003\u0002\u0002\u0002\u08db\u08b9\u0003\u0002\u0002', - '\u0002\u08db\u08bf\u0003\u0002\u0002\u0002\u08db\u08c6\u0003\u0002\u0002', - '\u0002\u08db\u08c9\u0003\u0002\u0002\u0002\u08db\u08cd\u0003\u0002\u0002', - '\u0002\u08db\u08d0\u0003\u0002\u0002\u0002\u08db\u08d4\u0003\u0002\u0002', - '\u0002\u08db\u08d7\u0003\u0002\u0002\u0002\u08dc\u08df\u0003\u0002\u0002', - '\u0002\u08dd\u08db\u0003\u0002\u0002\u0002\u08dd\u08de\u0003\u0002\u0002', - '\u0002\u08de\u0189\u0003\u0002\u0002\u0002\u08df\u08dd\u0003\u0002\u0002', - '\u0002\u08e0\u08e1\t\f\u0002\u0002\u08e1\u018b\u0003\u0002\u0002\u0002', - '\u08e2\u08f3\u0005\u0190\u00c9\u0002\u08e3\u08f3\u0005\u0192\u00ca\u0002', - '\u08e4\u08f3\u0007\u00ef\u0002\u0002\u08e5\u08f3\u0007\u00ee\u0002\u0002', - '\u08e6\u08f3\u0007\u00c4\u0002\u0002\u08e7\u08f3\u0005\u01a2\u00d2\u0002', - '\u08e8\u08f3\u0005\u01b0\u00d9\u0002\u08e9\u08f3\u0007\u000b\u0002\u0002', - '\u08ea\u08f3\u0005\u01a4\u00d3\u0002\u08eb\u08f3\u0005\u01b4\u00db\u0002', - '\u08ec\u08f3\u0005\u01c0\u00e1\u0002\u08ed\u08ee\u0007?\u0002\u0002', - '\u08ee\u08ef\u0007\u0017\u0002\u0002\u08ef\u08f0\u0005\u0188\u00c5\u0002', - '\u08f0\u08f1\u0007\u0018\u0002\u0002\u08f1\u08f3\u0003\u0002\u0002\u0002', - '\u08f2\u08e2\u0003\u0002\u0002\u0002\u08f2\u08e3\u0003\u0002\u0002\u0002', - '\u08f2\u08e4\u0003\u0002\u0002\u0002\u08f2\u08e5\u0003\u0002\u0002\u0002', - '\u08f2\u08e6\u0003\u0002\u0002\u0002\u08f2\u08e7\u0003\u0002\u0002\u0002', - '\u08f2\u08e8\u0003\u0002\u0002\u0002\u08f2\u08e9\u0003\u0002\u0002\u0002', - '\u08f2\u08ea\u0003\u0002\u0002\u0002\u08f2\u08eb\u0003\u0002\u0002\u0002', - '\u08f2\u08ec\u0003\u0002\u0002\u0002\u08f2\u08ed\u0003\u0002\u0002\u0002', - '\u08f3\u018d\u0003\u0002\u0002\u0002\u08f4\u08f5\b\u00c8\u0001\u0002', - '\u08f5\u08f6\u0005\u018c\u00c7\u0002\u08f6\u0933\u0003\u0002\u0002\u0002', - '\u08f7\u08f8\f\b\u0002\u0002\u08f8\u08f9\u0007\n\u0002\u0002\u08f9\u0932', - '\u0005\u018e\u00c8\t\u08fa\u08fb\f\u0007\u0002\u0002\u08fb\u08fc\u0007', - '\u000b\u0002\u0002\u08fc\u0932\u0005\u018e\u00c8\b\u08fd\u08fe\f\u0006', - '\u0002\u0002\u08fe\u08ff\u0007\f\u0002\u0002\u08ff\u0932\u0005\u018e', - '\u00c8\u0007\u0900\u0901\f\u0005\u0002\u0002\u0901\u0902\u0007\r\u0002', - '\u0002\u0902\u0932\u0005\u018e\u00c8\u0006\u0903\u0904\f\u0004\u0002', - '\u0002\u0904\u0905\u0007\u000e\u0002\u0002\u0905\u0932\u0005\u018e\u00c8', - '\u0005\u0906\u0907\f\u0003\u0002\u0002\u0907\u0908\u0007\u0016\u0002', - '\u0002\u0908\u0932\u0005\u018e\u00c8\u0004\u0909\u090a\f\u0010\u0002', - '\u0002\u090a\u090b\u0007\t\u0002\u0002\u090b\u0932\u0007\u00ef\u0002', - '\u0002\u090c\u090d\f\u000f\u0002\u0002\u090d\u090e\u0007\t\u0002\u0002', - '\u090e\u0932\u0007\u00ee\u0002\u0002\u090f\u0910\f\u000e\u0002\u0002', - '\u0910\u0911\u0007\t\u0002\u0002\u0911\u0912\u0007\u001d\u0002\u0002', - '\u0912\u0913\u0005\u0188\u00c5\u0002\u0913\u0914\u0007\u001e\u0002\u0002', - '\u0914\u0932\u0003\u0002\u0002\u0002\u0915\u0916\f\r\u0002\u0002\u0916', - '\u0917\u0007\t\u0002\u0002\u0917\u0918\u0007\u001d\u0002\u0002\u0918', - '\u0919\u0005\u0188\u00c5\u0002\u0919\u091a\u0007\u001f\u0002\u0002\u091a', - '\u0932\u0003\u0002\u0002\u0002\u091b\u091c\f\f\u0002\u0002\u091c\u091d', - '\u0007\u001d\u0002\u0002\u091d\u091e\u0005\u0188\u00c5\u0002\u091e\u091f', - '\u0007\u001e\u0002\u0002\u091f\u0932\u0003\u0002\u0002\u0002\u0920\u0921', - '\f\u000b\u0002\u0002\u0921\u0922\u0007\u001d\u0002\u0002\u0922\u0923', - '\u0005\u0188\u00c5\u0002\u0923\u0924\u0007\u001c\u0002\u0002\u0924\u0925', - '\u0007\u001e\u0002\u0002\u0925\u0932\u0003\u0002\u0002\u0002\u0926\u0927', - '\f\n\u0002\u0002\u0927\u0928\u0007\u001d\u0002\u0002\u0928\u0929\u0005', - '\u0188\u00c5\u0002\u0929\u092a\u0007\u001c\u0002\u0002\u092a\u092b\u0005', - '\u0188\u00c5\u0002\u092b\u092c\u0007\u001e\u0002\u0002\u092c\u0932\u0003', - '\u0002\u0002\u0002\u092d\u092e\f\t\u0002\u0002\u092e\u092f\u0007\u001d', - '\u0002\u0002\u092f\u0930\u0007\f\u0002\u0002\u0930\u0932\u0007\u001e', - '\u0002\u0002\u0931\u08f7\u0003\u0002\u0002\u0002\u0931\u08fa\u0003\u0002', - '\u0002\u0002\u0931\u08fd\u0003\u0002\u0002\u0002\u0931\u0900\u0003\u0002', - '\u0002\u0002\u0931\u0903\u0003\u0002\u0002\u0002\u0931\u0906\u0003\u0002', - '\u0002\u0002\u0931\u0909\u0003\u0002\u0002\u0002\u0931\u090c\u0003\u0002', - '\u0002\u0002\u0931\u090f\u0003\u0002\u0002\u0002\u0931\u0915\u0003\u0002', - '\u0002\u0002\u0931\u091b\u0003\u0002\u0002\u0002\u0931\u0920\u0003\u0002', - '\u0002\u0002\u0931\u0926\u0003\u0002\u0002\u0002\u0931\u092d\u0003\u0002', - '\u0002\u0002\u0932\u0935\u0003\u0002\u0002\u0002\u0933\u0931\u0003\u0002', - '\u0002\u0002\u0933\u0934\u0003\u0002\u0002\u0002\u0934\u018f\u0003\u0002', - '\u0002\u0002\u0935\u0933\u0003\u0002\u0002\u0002\u0936\u0937\t\r\u0002', - '\u0002\u0937\u0191\u0003\u0002\u0002\u0002\u0938\u093b\u0005\u0194\u00cb', - '\u0002\u0939\u093b\u0005\u019c\u00cf\u0002\u093a\u0938\u0003\u0002\u0002', - '\u0002\u093a\u0939\u0003\u0002\u0002\u0002\u093b\u0193\u0003\u0002\u0002', - '\u0002\u093c\u093d\u0007\u0019\u0002\u0002\u093d\u093e\u0005\u0196\u00cc', - '\u0002\u093e\u093f\u0007\u001a\u0002\u0002\u093f\u0195\u0003\u0002\u0002', - '\u0002\u0940\u0943\u0003\u0002\u0002\u0002\u0941\u0943\u0005\u0198\u00cd', - '\u0002\u0942\u0940\u0003\u0002\u0002\u0002\u0942\u0941\u0003\u0002\u0002', - '\u0002\u0943\u0197\u0003\u0002\u0002\u0002\u0944\u0945\b\u00cd\u0001', - '\u0002\u0945\u0946\u0005\u019a\u00ce\u0002\u0946\u094c\u0003\u0002\u0002', - '\u0002\u0947\u0948\f\u0003\u0002\u0002\u0948\u0949\u0007\u001b\u0002', - '\u0002\u0949\u094b\u0005\u019a\u00ce\u0002\u094a\u0947\u0003\u0002\u0002', - '\u0002\u094b\u094e\u0003\u0002\u0002\u0002\u094c\u094a\u0003\u0002\u0002', - '\u0002\u094c\u094d\u0003\u0002\u0002\u0002\u094d\u0199\u0003\u0002\u0002', - '\u0002\u094e\u094c\u0003\u0002\u0002\u0002\u094f\u0950\u0005\u0188\u00c5', - '\u0002\u0950\u0951\u0007\u001c\u0002\u0002\u0951\u0952\u0005\u0188\u00c5', - '\u0002\u0952\u0955\u0003\u0002\u0002\u0002\u0953\u0955\u0005\u0188\u00c5', - '\u0002\u0954\u094f\u0003\u0002\u0002\u0002\u0954\u0953\u0003\u0002\u0002', - '\u0002\u0955\u019b\u0003\u0002\u0002\u0002\u0956\u0957\u0007\u001d\u0002', - '\u0002\u0957\u0958\u0005\u019e\u00d0\u0002\u0958\u0959\u0007\u001e\u0002', - '\u0002\u0959\u019d\u0003\u0002\u0002\u0002\u095a\u095d\u0003\u0002\u0002', - '\u0002\u095b\u095d\u0005\u01a0\u00d1\u0002\u095c\u095a\u0003\u0002\u0002', - '\u0002\u095c\u095b\u0003\u0002\u0002\u0002\u095d\u019f\u0003\u0002\u0002', - '\u0002\u095e\u095f\b\u00d1\u0001\u0002\u095f\u0960\u0005\u0188\u00c5', - '\u0002\u0960\u0966\u0003\u0002\u0002\u0002\u0961\u0962\f\u0003\u0002', - '\u0002\u0962\u0963\u0007\u001b\u0002\u0002\u0963\u0965\u0005\u0188\u00c5', - '\u0002\u0964\u0961\u0003\u0002\u0002\u0002\u0965\u0968\u0003\u0002\u0002', - '\u0002\u0966\u0964\u0003\u0002\u0002\u0002\u0966\u0967\u0003\u0002\u0002', - '\u0002\u0967\u01a1\u0003\u0002\u0002\u0002\u0968\u0966\u0003\u0002\u0002', - '\u0002\u0969\u096a\t\u000e\u0002\u0002\u096a\u01a3\u0003\u0002\u0002', - '\u0002\u096b\u096c\u00075\u0002\u0002\u096c\u096d\u0005\u01a6\u00d4', - '\u0002\u096d\u096e\u0007Q\u0002\u0002\u096e\u01a5\u0003\u0002\u0002', - '\u0002\u096f\u0972\u0005\u01a8\u00d5\u0002\u0970\u0972\u0005\u01ac\u00d7', - '\u0002\u0971\u096f\u0003\u0002\u0002\u0002\u0971\u0970\u0003\u0002\u0002', - '\u0002\u0972\u01a7\u0003\u0002\u0002\u0002\u0973\u0974\u0005\u0188\u00c5', - '\u0002\u0974\u0975\u0005\u01aa\u00d6\u0002\u0975\u0976\u0005\u01ae\u00d8', - '\u0002\u0976\u01a9\u0003\u0002\u0002\u0002\u0977\u0978\b\u00d6\u0001', - '\u0002\u0978\u0979\u0007\u00e6\u0002\u0002\u0979\u097a\u0005\u0188\u00c5', - '\u0002\u097a\u097b\u0007\u00cc\u0002\u0002\u097b\u097c\u0005\u0188\u00c5', - '\u0002\u097c\u0985\u0003\u0002\u0002\u0002\u097d\u097e\f\u0003\u0002', - '\u0002\u097e\u097f\u0007\u00e6\u0002\u0002\u097f\u0980\u0005\u0188\u00c5', - '\u0002\u0980\u0981\u0007\u00cc\u0002\u0002\u0981\u0982\u0005\u0188\u00c5', - '\u0002\u0982\u0984\u0003\u0002\u0002\u0002\u0983\u097d\u0003\u0002\u0002', - '\u0002\u0984\u0987\u0003\u0002\u0002\u0002\u0985\u0983\u0003\u0002\u0002', - '\u0002\u0985\u0986\u0003\u0002\u0002\u0002\u0986\u01ab\u0003\u0002\u0002', - '\u0002\u0987\u0985\u0003\u0002\u0002\u0002\u0988\u0989\u0005\u01aa\u00d6', - '\u0002\u0989\u098a\u0005\u01ae\u00d8\u0002\u098a\u01ad\u0003\u0002\u0002', - '\u0002\u098b\u098f\u0003\u0002\u0002\u0002\u098c\u098d\u0007P\u0002', - '\u0002\u098d\u098f\u0005\u0188\u00c5\u0002\u098e\u098b\u0003\u0002\u0002', - '\u0002\u098e\u098c\u0003\u0002\u0002\u0002\u098f\u01af\u0003\u0002\u0002', - '\u0002\u0990\u0991\u0007\u0094\u0002\u0002\u0991\u0992\u0007\u0017\u0002', - '\u0002\u0992\u0993\u0005\u01a0\u00d1\u0002\u0993\u0994\u0007\u0018\u0002', - '\u0002\u0994\u0995\u0005\u01e4\u00f3\u0002\u0995\u0996\u0005\u01e0\u00f1', - '\u0002\u0996\u0997\u0005\u01ec\u00f7\u0002\u0997\u09b5\u0003\u0002\u0002', - '\u0002\u0998\u0999\u0005\u01b2\u00da\u0002\u0999\u099a\u0007\u0017\u0002', - '\u0002\u099a\u099b\u0005\u019e\u00d0\u0002\u099b\u099c\u0007\u0018\u0002', - '\u0002\u099c\u099d\u0005\u01e8\u00f5\u0002\u099d\u099e\u0005\u01e0\u00f1', - '\u0002\u099e\u099f\u0005\u01ea\u00f6\u0002\u099f\u09b5\u0003\u0002\u0002', - '\u0002\u09a0\u09a1\u0005\u01b2\u00da\u0002\u09a1\u09a2\u0007\u0017\u0002', - '\u0002\u09a2\u09a3\u0005\u01e6\u00f4\u0002\u09a3\u09a4\u0005\u0188\u00c5', - '\u0002\u09a4\u09a5\u0007\u0018\u0002\u0002\u09a5\u09a6\u0005\u01e8\u00f5', - '\u0002\u09a6\u09a7\u0005\u01ea\u00f6\u0002\u09a7\u09b5\u0003\u0002\u0002', - '\u0002\u09a8\u09a9\u0005\u01b2\u00da\u0002\u09a9\u09aa\u0007\u0017\u0002', - '\u0002\u09aa\u09ab\u0007\f\u0002\u0002\u09ab\u09ac\u0007\u0018\u0002', - '\u0002\u09ac\u09ad\u0005\u01e8\u00f5\u0002\u09ad\u09ae\u0005\u01ea\u00f6', - '\u0002\u09ae\u09b5\u0003\u0002\u0002\u0002\u09af\u09b0\u0005\u0172\u00ba', - '\u0002\u09b0\u09b1\u0007\u0017\u0002\u0002\u09b1\u09b2\u0005\u019e\u00d0', - '\u0002\u09b2\u09b3\u0007\u0018\u0002\u0002\u09b3\u09b5\u0003\u0002\u0002', - '\u0002\u09b4\u0990\u0003\u0002\u0002\u0002\u09b4\u0998\u0003\u0002\u0002', - '\u0002\u09b4\u09a0\u0003\u0002\u0002\u0002\u09b4\u09a8\u0003\u0002\u0002', - '\u0002\u09b4\u09af\u0003\u0002\u0002\u0002\u09b5\u01b1\u0003\u0002\u0002', - '\u0002\u09b6\u09b7\t\u000f\u0002\u0002\u09b7\u01b3\u0003\u0002\u0002', - '\u0002\u09b8\u09bb\u0005\u01b6\u00dc\u0002\u09b9\u09bb\u0005\u01be\u00e0', - '\u0002\u09ba\u09b8\u0003\u0002\u0002\u0002\u09ba\u09b9\u0003\u0002\u0002', - "\u0002\u09bb\u01b5\u0003\u0002\u0002\u0002\u09bc\u09bd\u0007'\u0002", - '\u0002\u09bd\u09be\u0005\u01b8\u00dd\u0002\u09be\u09bf\u0005\u01bc\u00df', - '\u0002\u09bf\u09c0\u0007Q\u0002\u0002\u09c0\u09da\u0003\u0002\u0002', - '\u0002\u09c1\u09c2\u0007\u00c7\u0002\u0002\u09c2\u09c3\u0005\u01b8\u00dd', - '\u0002\u09c3\u09c4\u0005\u01bc\u00df\u0002\u09c4\u09c5\u0007Q\u0002', - '\u0002\u09c5\u09da\u0003\u0002\u0002\u0002\u09c6\u09c7\u0007R\u0002', - '\u0002\u09c7\u09c8\u0005\u01b8\u00dd\u0002\u09c8\u09c9\u0005\u01bc\u00df', - '\u0002\u09c9\u09ca\u0007Q\u0002\u0002\u09ca\u09da\u0003\u0002\u0002', - "\u0002\u09cb\u09cc\u0007'\u0002\u0002\u09cc\u09cd\u0007&\u0002\u0002", - '\u09cd\u09ce\u0007R\u0002\u0002\u09ce\u09cf\u0005\u01b8\u00dd\u0002', - '\u09cf\u09d0\u0005\u01bc\u00df\u0002\u09d0\u09d1\u0007Q\u0002\u0002', - '\u09d1\u09da\u0003\u0002\u0002\u0002\u09d2\u09d3\u0007\u00c7\u0002\u0002', - '\u09d3\u09d4\u0007&\u0002\u0002\u09d4\u09d5\u0007R\u0002\u0002\u09d5', - '\u09d6\u0005\u01b8\u00dd\u0002\u09d6\u09d7\u0005\u01bc\u00df\u0002\u09d7', - '\u09d8\u0007Q\u0002\u0002\u09d8\u09da\u0003\u0002\u0002\u0002\u09d9', - '\u09bc\u0003\u0002\u0002\u0002\u09d9\u09c1\u0003\u0002\u0002\u0002\u09d9', - '\u09c6\u0003\u0002\u0002\u0002\u09d9\u09cb\u0003\u0002\u0002\u0002\u09d9', - '\u09d2\u0003\u0002\u0002\u0002\u09da\u01b7\u0003\u0002\u0002\u0002\u09db', - '\u09dc\b\u00dd\u0001\u0002\u09dc\u09dd\u0005\u01ba\u00de\u0002\u09dd', - '\u09e3\u0003\u0002\u0002\u0002\u09de\u09df\f\u0003\u0002\u0002\u09df', - '\u09e0\u0007\u001b\u0002\u0002\u09e0\u09e2\u0005\u01ba\u00de\u0002\u09e1', - '\u09de\u0003\u0002\u0002\u0002\u09e2\u09e5\u0003\u0002\u0002\u0002\u09e3', - '\u09e1\u0003\u0002\u0002\u0002\u09e3\u09e4\u0003\u0002\u0002\u0002\u09e4', - '\u01b9\u0003\u0002\u0002\u0002\u09e5\u09e3\u0003\u0002\u0002\u0002\u09e6', - '\u09e7\u0005\u0102\u0082\u0002\u09e7\u09e8\u0007n\u0002\u0002\u09e8', - '\u09e9\u0005\u0188\u00c5\u0002\u09e9\u09fb\u0003\u0002\u0002\u0002\u09ea', - '\u09eb\u0005\u0102\u0082\u0002\u09eb\u09ec\u0007\u00eb\u0002\u0002\u09ec', - '\u09ed\u0005\u0188\u00c5\u0002\u09ed\u09fb\u0003\u0002\u0002\u0002\u09ee', - '\u09ef\u0005\u0102\u0082\u0002\u09ef\u09f0\u0007\u001c\u0002\u0002\u09f0', - '\u09f1\u0005\u0102\u0082\u0002\u09f1\u09f2\u0007n\u0002\u0002\u09f2', - '\u09f3\u0005\u0188\u00c5\u0002\u09f3\u09fb\u0003\u0002\u0002\u0002\u09f4', - '\u09f5\u0005\u0102\u0082\u0002\u09f5\u09f6\u0007\u001c\u0002\u0002\u09f6', - '\u09f7\u0005\u0102\u0082\u0002\u09f7\u09f8\u0007\u00eb\u0002\u0002\u09f8', - '\u09f9\u0005\u0188\u00c5\u0002\u09f9\u09fb\u0003\u0002\u0002\u0002\u09fa', - '\u09e6\u0003\u0002\u0002\u0002\u09fa\u09ea\u0003\u0002\u0002\u0002\u09fa', - '\u09ee\u0003\u0002\u0002\u0002\u09fa\u09f4\u0003\u0002\u0002\u0002\u09fb', - '\u01bb\u0003\u0002\u0002\u0002\u09fc\u09fd\u0007\u00bf\u0002\u0002\u09fd', - '\u09fe\u0005\u0188\u00c5\u0002\u09fe\u01bd\u0003\u0002\u0002\u0002\u09ff', - '\u0a00\u0007(\u0002\u0002\u0a00\u0a01\u0005\u0188\u00c5\u0002\u0a01', - '\u0a02\u0007_\u0002\u0002\u0a02\u0a03\u0005\u01b8\u00dd\u0002\u0a03', - '\u0a04\u0005\u0104\u0083\u0002\u0a04\u0a05\u0007Q\u0002\u0002\u0a05', - '\u0a17\u0003\u0002\u0002\u0002\u0a06\u0a07\u0007[\u0002\u0002\u0a07', - '\u0a08\u0005\u0188\u00c5\u0002\u0a08\u0a09\u0007_\u0002\u0002\u0a09', - '\u0a0a\u0005\u01b8\u00dd\u0002\u0a0a\u0a0b\u0005\u0104\u0083\u0002\u0a0b', - '\u0a0c\u0007Q\u0002\u0002\u0a0c\u0a17\u0003\u0002\u0002\u0002\u0a0d', - '\u0a0e\u0007\u0098\u0002\u0002\u0a0e\u0a0f\u0005\u0188\u00c5\u0002\u0a0f', - '\u0a10\u0007\u001c\u0002\u0002\u0a10\u0a11\u0005\u0188\u00c5\u0002\u0a11', - '\u0a12\u0007_\u0002\u0002\u0a12\u0a13\u0005\u01b8\u00dd\u0002\u0a13', - '\u0a14\u0005\u0104\u0083\u0002\u0a14\u0a15\u0007Q\u0002\u0002\u0a15', - '\u0a17\u0003\u0002\u0002\u0002\u0a16\u09ff\u0003\u0002\u0002\u0002\u0a16', - '\u0a06\u0003\u0002\u0002\u0002\u0a16\u0a0d\u0003\u0002\u0002\u0002\u0a17', - '\u01bf\u0003\u0002\u0002\u0002\u0a18\u0a19\u0007\u0017\u0002\u0002\u0a19', - '\u0a1a\u0005\u0188\u00c5\u0002\u0a1a\u0a1b\u0007\u0018\u0002\u0002\u0a1b', - '\u0a22\u0003\u0002\u0002\u0002\u0a1c\u0a1d\u0007\u0017\u0002\u0002\u0a1d', - '\u0a1e\u0005\u01c6\u00e4\u0002\u0a1e\u0a1f\u0007\u0018\u0002\u0002\u0a1f', - '\u0a22\u0003\u0002\u0002\u0002\u0a20\u0a22\u0005\u01c2\u00e2\u0002\u0a21', - '\u0a18\u0003\u0002\u0002\u0002\u0a21\u0a1c\u0003\u0002\u0002\u0002\u0a21', - '\u0a20\u0003\u0002\u0002\u0002\u0a22\u01c1\u0003\u0002\u0002\u0002\u0a23', - '\u0a24\u0007>\u0002\u0002\u0a24\u0a25\u0007\u0017\u0002\u0002\u0a25', - '\u0a26\u0005:\u001e\u0002\u0a26\u0a27\u0007\u0018\u0002\u0002\u0a27', - '\u0a2d\u0003\u0002\u0002\u0002\u0a28\u0a29\u0007\u0017\u0002\u0002\u0a29', - '\u0a2a\u0005:\u001e\u0002\u0a2a\u0a2b\u0007\u0018\u0002\u0002\u0a2b', - '\u0a2d\u0003\u0002\u0002\u0002\u0a2c\u0a23\u0003\u0002\u0002\u0002\u0a2c', - '\u0a28\u0003\u0002\u0002\u0002\u0a2d\u01c3\u0003\u0002\u0002\u0002\u0a2e', - '\u0a31\u0005\u0188\u00c5\u0002\u0a2f\u0a31\u0005\u01c6\u00e4\u0002\u0a30', - '\u0a2e\u0003\u0002\u0002\u0002\u0a30\u0a2f\u0003\u0002\u0002\u0002\u0a31', - '\u01c5\u0003\u0002\u0002\u0002\u0a32\u0a33\u0005\u015c\u00af\u0002\u0a33', - '\u0a34\u0005\u0188\u00c5\u0002\u0a34\u0a3c\u0003\u0002\u0002\u0002\u0a35', - '\u0a36\u0005\u015c\u00af\u0002\u0a36\u0a37\u0007K\u0002\u0002\u0a37', - '\u0a38\u0005\u0188\u00c5\u0002\u0a38\u0a3c\u0003\u0002\u0002\u0002\u0a39', - '\u0a3a\u0007K\u0002\u0002\u0a3a\u0a3c\u0005\u0188\u00c5\u0002\u0a3b', - '\u0a32\u0003\u0002\u0002\u0002\u0a3b\u0a35\u0003\u0002\u0002\u0002\u0a3b', - '\u0a39\u0003\u0002\u0002\u0002\u0a3c\u01c7\u0003\u0002\u0002\u0002\u0a3d', - '\u0a41\u0003\u0002\u0002\u0002\u0a3e\u0a3f\u0007\u00e9\u0002\u0002\u0a3f', - '\u0a41\u0005\u01ca\u00e6\u0002\u0a40\u0a3d\u0003\u0002\u0002\u0002\u0a40', - '\u0a3e\u0003\u0002\u0002\u0002\u0a41\u01c9\u0003\u0002\u0002\u0002\u0a42', - '\u0a43\b\u00e6\u0001\u0002\u0a43\u0a44\u0005\u01cc\u00e7\u0002\u0a44', - '\u0a4a\u0003\u0002\u0002\u0002\u0a45\u0a46\f\u0003\u0002\u0002\u0a46', - '\u0a47\u0007\u001b\u0002\u0002\u0a47\u0a49\u0005\u01cc\u00e7\u0002\u0a48', - '\u0a45\u0003\u0002\u0002\u0002\u0a49\u0a4c\u0003\u0002\u0002\u0002\u0a4a', - '\u0a48\u0003\u0002\u0002\u0002\u0a4a\u0a4b\u0003\u0002\u0002\u0002\u0a4b', - '\u01cb\u0003\u0002\u0002\u0002\u0a4c\u0a4a\u0003\u0002\u0002\u0002\u0a4d', - '\u0a4e\u0007\u00ef\u0002\u0002\u0a4e\u0a4f\u0007)\u0002\u0002\u0a4f', - '\u0a50\u0005\u01ce\u00e8\u0002\u0a50\u01cd\u0003\u0002\u0002\u0002\u0a51', - '\u0a52\u0007\u0017\u0002\u0002\u0a52\u0a53\u0005\u01d0\u00e9\u0002\u0a53', - '\u0a54\u0005\u01d2\u00ea\u0002\u0a54\u0a55\u0005\u00aeX\u0002\u0a55', - '\u0a56\u0005\u01d4\u00eb\u0002\u0a56\u0a57\u0007\u0018\u0002\u0002\u0a57', - '\u01cf\u0003\u0002\u0002\u0002\u0a58\u0a5b\u0003\u0002\u0002\u0002\u0a59', - '\u0a5b\u0007\u00ef\u0002\u0002\u0a5a\u0a58\u0003\u0002\u0002\u0002\u0a5a', - '\u0a59\u0003\u0002\u0002\u0002\u0a5b\u01d1\u0003\u0002\u0002\u0002\u0a5c', - '\u0a61\u0003\u0002\u0002\u0002\u0a5d\u0a5e\u0007\u00a3\u0002\u0002\u0a5e', - '\u0a5f\u00073\u0002\u0002\u0a5f\u0a61\u0005\u01a0\u00d1\u0002\u0a60', - '\u0a5c\u0003\u0002\u0002\u0002\u0a60\u0a5d\u0003\u0002\u0002\u0002\u0a61', - '\u01d3\u0003\u0002\u0002\u0002\u0a62\u0a68\u0003\u0002\u0002\u0002\u0a63', - '\u0a64\u0005\u01d6\u00ec\u0002\u0a64\u0a65\u0005\u01da\u00ee\u0002\u0a65', - '\u0a66\u0005\u01d8\u00ed\u0002\u0a66\u0a68\u0003\u0002\u0002\u0002\u0a67', - '\u0a62\u0003\u0002\u0002\u0002\u0a67\u0a63\u0003\u0002\u0002\u0002\u0a68', - '\u01d5\u0003\u0002\u0002\u0002\u0a69\u0a6a\t\u0010\u0002\u0002\u0a6a', - '\u01d7\u0003\u0002\u0002\u0002\u0a6b\u0a77\u0003\u0002\u0002\u0002\u0a6c', - '\u0a6d\u0007T\u0002\u0002\u0a6d\u0a6e\u0007\u0092\u0002\u0002\u0a6e', - '\u0a77\u0007\u009f\u0002\u0002\u0a6f\u0a70\u0007T\u0002\u0002\u0a70', - '\u0a71\u0007A\u0002\u0002\u0a71\u0a77\u0007\u00bd\u0002\u0002\u0a72', - '\u0a73\u0007T\u0002\u0002\u0a73\u0a77\u0007\u00cd\u0002\u0002\u0a74', - '\u0a75\u0007T\u0002\u0002\u0a75\u0a77\u0007f\u0002\u0002\u0a76\u0a6b', - '\u0003\u0002\u0002\u0002\u0a76\u0a6c\u0003\u0002\u0002\u0002\u0a76\u0a6f', - '\u0003\u0002\u0002\u0002\u0a76\u0a72\u0003\u0002\u0002\u0002\u0a76\u0a74', - '\u0003\u0002\u0002\u0002\u0a77\u01d9\u0003\u0002\u0002\u0002\u0a78\u0a7f', - '\u0005\u01dc\u00ef\u0002\u0a79\u0a7a\u0007-\u0002\u0002\u0a7a\u0a7b', - '\u0005\u01dc\u00ef\u0002\u0a7b\u0a7c\u0007&\u0002\u0002\u0a7c\u0a7d', - '\u0005\u01dc\u00ef\u0002\u0a7d\u0a7f\u0003\u0002\u0002\u0002\u0a7e\u0a78', - '\u0003\u0002\u0002\u0002\u0a7e\u0a79\u0003\u0002\u0002\u0002\u0a7f\u01db', - '\u0003\u0002\u0002\u0002\u0a80\u0a81\u0007\u00d4\u0002\u0002\u0a81\u0a8a', - '\u0007\u00a7\u0002\u0002\u0a82\u0a83\u0007\u00d4\u0002\u0002\u0a83\u0a8a', - '\u0007^\u0002\u0002\u0a84\u0a85\u0007A\u0002\u0002\u0a85\u0a8a\u0007', - '\u00bd\u0002\u0002\u0a86\u0a87\u0005\u0188\u00c5\u0002\u0a87\u0a88\u0005', - '\u01de\u00f0\u0002\u0a88\u0a8a\u0003\u0002\u0002\u0002\u0a89\u0a80\u0003', - '\u0002\u0002\u0002\u0a89\u0a82\u0003\u0002\u0002\u0002\u0a89\u0a84\u0003', - '\u0002\u0002\u0002\u0a89\u0a86\u0003\u0002\u0002\u0002\u0a8a\u01dd\u0003', - '\u0002\u0002\u0002\u0a8b\u0a8c\t\u0011\u0002\u0002\u0a8c\u01df\u0003', - '\u0002\u0002\u0002\u0a8d\u0a90\u0003\u0002\u0002\u0002\u0a8e\u0a90\u0005', - '\u01e2\u00f2\u0002\u0a8f\u0a8d\u0003\u0002\u0002\u0002\u0a8f\u0a8e\u0003', - '\u0002\u0002\u0002\u0a90\u01e1\u0003\u0002\u0002\u0002\u0a91\u0a92\u0007', - '\u00b6\u0002\u0002\u0a92\u0a96\u0007\u0096\u0002\u0002\u0a93\u0a94\u0007', - 'l\u0002\u0002\u0a94\u0a96\u0007\u0096\u0002\u0002\u0a95\u0a91\u0003', - '\u0002\u0002\u0002\u0a95\u0a93\u0003\u0002\u0002\u0002\u0a96\u01e3\u0003', - '\u0002\u0002\u0002\u0a97\u0a9b\u0003\u0002\u0002\u0002\u0a98\u0a99\u0007', - 'a\u0002\u0002\u0a99\u0a9b\u0005\u00bc_\u0002\u0a9a\u0a97\u0003\u0002', - '\u0002\u0002\u0a9a\u0a98\u0003\u0002\u0002\u0002\u0a9b\u01e5\u0003\u0002', - '\u0002\u0002\u0a9c\u0a9d\t\u0012\u0002\u0002\u0a9d\u01e7\u0003\u0002', - '\u0002\u0002\u0a9e\u0aa5\u0003\u0002\u0002\u0002\u0a9f\u0aa0\u0007Z', - '\u0002\u0002\u0aa0\u0aa1\u0007\u0017\u0002\u0002\u0aa1\u0aa2\u0005\u009c', - 'O\u0002\u0aa2\u0aa3\u0007\u0018\u0002\u0002\u0aa3\u0aa5\u0003\u0002', - '\u0002\u0002\u0aa4\u0a9e\u0003\u0002\u0002\u0002\u0aa4\u0a9f\u0003\u0002', - '\u0002\u0002\u0aa5\u01e9\u0003\u0002\u0002\u0002\u0aa6\u0aa9\u0003\u0002', - '\u0002\u0002\u0aa7\u0aa9\u0005\u01ec\u00f7\u0002\u0aa8\u0aa6\u0003\u0002', - '\u0002\u0002\u0aa8\u0aa7\u0003\u0002\u0002\u0002\u0aa9\u01eb\u0003\u0002', - '\u0002\u0002\u0aaa\u0aab\u0007\u00a1\u0002\u0002\u0aab\u0aaf\u0007\u00ef', - '\u0002\u0002\u0aac\u0aad\u0007\u00a1\u0002\u0002\u0aad\u0aaf\u0005\u01ce', - '\u00e8\u0002\u0aae\u0aaa\u0003\u0002\u0002\u0002\u0aae\u0aac\u0003\u0002', - '\u0002\u0002\u0aaf\u01ed\u0003\u0002\u0002\u0002\u0ab0\u0ab1\u0005\u01f4', - '\u00fb\u0002\u0ab1\u0ab2\u0005\u01f8\u00fd\u0002\u0ab2\u0ab3\u0005\u01fe', - '\u0100\u0002\u0ab3\u01ef\u0003\u0002\u0002\u0002\u0ab4\u0ab5\u0007:', - '\u0002\u0002\u0ab5\u0ab6\u0005\u01f6\u00fc\u0002\u0ab6\u01f1\u0003\u0002', - '\u0002\u0002\u0ab7\u0ab8\u0007\u00bc\u0002\u0002\u0ab8\u0ab9\u0005\u01f6', - '\u00fc\u0002\u0ab9\u0aba\u0005\u01fa\u00fe\u0002\u0aba\u01f3\u0003\u0002', - '\u0002\u0002\u0abb\u0abc\t\u0013\u0002\u0002\u0abc\u01f5\u0003\u0002', - '\u0002\u0002\u0abd\u0ac0\u0003\u0002\u0002\u0002\u0abe\u0ac0\u0005\u01f8', - '\u00fd\u0002\u0abf\u0abd\u0003\u0002\u0002\u0002\u0abf\u0abe\u0003\u0002', - '\u0002\u0002\u0ac0\u01f7\u0003\u0002\u0002\u0002\u0ac1\u0ac2\t\u0014', - '\u0002\u0002\u0ac2\u01f9\u0003\u0002\u0002\u0002\u0ac3\u0ac8\u0003\u0002', - '\u0002\u0002\u0ac4\u0ac5\u0007\u00ce\u0002\u0002\u0ac5\u0ac6\u0007\u00c0', - '\u0002\u0002\u0ac6\u0ac8\u0005\u01fc\u00ff\u0002\u0ac7\u0ac3\u0003\u0002', - '\u0002\u0002\u0ac7\u0ac4\u0003\u0002\u0002\u0002\u0ac8\u01fb\u0003\u0002', - '\u0002\u0002\u0ac9\u0aca\u0007\u00ef\u0002\u0002\u0aca\u01fd\u0003\u0002', - '\u0002\u0002\u0acb\u0ace\u0003\u0002\u0002\u0002\u0acc\u0ace\u0005\u0200', - '\u0101\u0002\u0acd\u0acb\u0003\u0002\u0002\u0002\u0acd\u0acc\u0003\u0002', - '\u0002\u0002\u0ace\u01ff\u0003\u0002\u0002\u0002\u0acf\u0ad0\u0007y', - '\u0002\u0002\u0ad0\u0ad1\u0007\u0085\u0002\u0002\u0ad1\u0ad2\u0005\u0202', - '\u0102\u0002\u0ad2\u0201\u0003\u0002\u0002\u0002\u0ad3\u0ad4\u0007\u00b1', - '\u0002\u0002\u0ad4\u0ad5\u0007;\u0002\u0002\u0ad5\u0203\u0003\u0002', - '\u0002\u0002\u0ad6\u0ad7\u0007\u00c5\u0002\u0002\u0ad7\u0ad8\u0007\u00d0', - '\u0002\u0002\u0ad8\u0ad9\u0005\u0200\u0101\u0002\u0ad9\u0205\u0003\u0002', - '\u0002\u0002\u0ada\u0adb\u0007\u00c0\u0002\u0002\u0adb\u0adc\u0005\u01fc', - '\u00ff\u0002\u0adc\u0207\u0003\u0002\u0002\u0002\u0add\u0ade\u0007k', - '\u0002\u0002\u0ade\u0adf\u0007V\u0002\u0002\u0adf\u0209\u0003\u0002', - '\u0002\u0002\u0ae0\u0ae1\u0007k\u0002\u0002\u0ae1\u0ae2\u0007\u0093', - '\u0002\u0002\u0ae2\u0ae3\u0007V\u0002\u0002\u0ae3\u020b\u0003\u0002', - '\u0002\u0002\u00aa\u0210\u0217\u021e\u0226\u0230\u0238\u0244\u024b\u0256', - '\u0261\u0267\u0273\u0278\u027c\u0283\u0287\u028c\u0291\u0298\u02a7\u02c6', - '\u02dd\u02df\u02e4\u02e8\u0305\u030a\u0316\u0321\u0325\u032a\u0330\u033f', - '\u0371\u0373\u037b\u038d\u0392\u03a0\u03b1\u03c2\u03c6\u03d0\u03de\u03e2', - '\u03f0\u03fd\u0407\u0411\u041a\u0421\u042a\u0434\u043c\u0443\u044a\u0458', - '\u0461\u0469\u0471\u0478\u048d\u049c\u04a2\u04b5\u04c2\u04c9\u04ce\u04e0', - '\u04e9\u0503\u0515\u0538\u0545\u0553\u055c\u056b\u0576\u058d\u0594\u05a1', - '\u05b8\u05cf\u05df\u05e8\u05f4\u0606\u0614\u061e\u062b\u0648\u0652\u0659', - '\u0667\u066d\u0673\u0679\u067f\u0694\u06a0\u06a4\u06aa\u06b6\u06c0\u06cb', - '\u06d5\u06d9\u06e1\u06e5\u06f2\u0702\u070b\u0712\u072b\u073d\u0754\u0758', - '\u0766\u076d\u0777\u078e\u0815\u0819\u0823\u0842\u0844\u084d\u08db\u08dd', - '\u08f2\u0931\u0933\u093a\u0942\u094c\u0954\u095c\u0966\u0971\u0985\u098e', - '\u09b4\u09ba\u09d9\u09e3\u09fa\u0a16\u0a21\u0a2c\u0a30\u0a3b\u0a40\u0a4a', - '\u0a5a\u0a60\u0a67\u0a76\u0a7e\u0a89\u0a8f\u0a95\u0a9a\u0aa4\u0aa8\u0aae', - '\u0abf\u0ac7\u0acd', -].join(''); - -const atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN); - -const decisionsToDFA = atn.decisionToState.map((ds, index) => new antlr4.dfa.DFA(ds, index)); - -const sharedContextCache = new antlr4.PredictionContextCache(); - -class n1qlParser extends antlr4.Parser { - static grammarFileName = 'n1ql.g4'; - static literalNames = [ - null, - null, - null, - null, - null, - null, - null, - "'.'", - "'+'", - null, - "'*'", - "'/'", - "'%'", - "'=='", - "'='", - null, - "'<'", - "'<='", - "'>'", - "'>='", - "'||'", - "'('", - "')'", - "'{'", - "'}'", - "','", - "':'", - "'['", - "']'", - "']i'", - "';'", - "'!'", - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - "'?'", - ]; - static symbolicNames = [ - null, - 'STR', - 'INT', - 'NUM', - 'BLOCK_COMMENT', - 'LINE_COMMENT', - 'WHITESPACE', - 'DOT', - 'PLUS', - 'MINUS', - 'STAR', - 'DIV', - 'MOD', - 'DEQ', - 'EQ', - 'NE', - 'LT', - 'LE', - 'GT', - 'GE', - 'CONCAT', - 'LPAREN', - 'RPAREN', - 'LBRACE', - 'RBRACE', - 'COMMA', - 'COLON', - 'LBRACKET', - 'RBRACKET', - 'RBRACKET_ICASE', - 'SEMI', - 'NOT_A_TOKEN', - 'ADVISE', - 'ALL', - 'ALTER', - 'ANALYZE', - 'AND', - 'ANY', - 'ARRAY', - 'AS', - 'ASC', - 'AT', - 'BEGIN', - 'BETWEEN', - 'BINARY', - 'BOOLEAN', - 'BREAK', - 'BUCKET', - 'BUILD', - 'BY', - 'CALL', - 'CASE', - 'CAST', - 'CLUSTER', - 'COLLATE', - 'COLLECTION', - 'COMMIT', - 'COMMITTED', - 'CONNECT', - 'CONTINUE', - 'CORRELATED', - 'COVER', - 'CREATE', - 'CURRENT', - 'DATABASE', - 'DATASET', - 'DATASTORE', - 'DECLARE', - 'DECREMENT', - 'DELETE_', - 'DERIVED', - 'DESC', - 'DESCRIBE', - 'DISTINCT', - 'DO', - 'DROP', - 'EACH', - 'ELEMENT', - 'ELSE', - 'END', - 'EVERY', - 'EXCEPT', - 'EXCLUDE', - 'EXECUTE', - 'EXISTS', - 'EXPLAIN', - 'FALSE', - 'FETCH', - 'FILTER', - 'FIRST', - 'FLATTEN', - 'FLUSH', - 'FOLLOWING', - 'FOR', - 'FORCE', - 'FROM', - 'FTS', - 'FUNCTION', - 'GOLANG', - 'GRANT', - 'GROUP', - 'GROUPS', - 'GSI', - 'HASH', - 'HAVING', - 'IF', - 'IGNORE', - 'ILIKE', - 'IN', - 'INCLUDE', - 'INCREMENT', - 'INDEX', - 'INFER', - 'INLINE', - 'INNER', - 'INSERT', - 'INTERSECT', - 'INTO', - 'IS', - 'ISOLATION', - 'JAVASCRIPT', - 'JOIN', - 'KEY', - 'KEYS', - 'KEYSPACE', - 'KNOWN', - 'LANGUAGE', - 'LAST', - 'LEFT', - 'LET_', - 'LETTING', - 'LEVEL', - 'LIKE', - 'LIMIT', - 'LSM', - 'MAP', - 'MAPPING', - 'MATCHED', - 'MATERIALIZED', - 'MERGE', - 'MISSING', - 'NAMESPACE', - 'NEST', - 'NL', - 'NO', - 'NOT', - 'NTH_VALUE', - 'NULL', - 'NULLS', - 'NUMBER', - 'OBJECT', - 'OFFSET', - 'ON', - 'OPTION', - 'OPTIONS', - 'OR', - 'ORDER', - 'OTHERS', - 'OUTER', - 'OVER', - 'PARSE', - 'PARTITION', - 'PASSWORD', - 'PATH', - 'POOL', - 'PRECEDING', - 'PREPARE', - 'PRIMARY', - 'PRIVATE', - 'PRIVILEGE', - 'PROCEDURE', - 'PROBE', - 'PUBLIC', - 'RANGE', - 'RAW', - 'READ', - 'REALM', - 'REDUCE', - 'RENAME', - 'REPLACE', - 'RESPECT', - 'RETURN', - 'RETURNING', - 'REVOKE', - 'RIGHT', - 'ROLE', - 'ROLLBACK', - 'ROW', - 'ROWS', - 'SATISFIES', - 'SAVEPOINT', - 'SCHEMA', - 'SCOPE', - 'SELECT', - 'SELF', - 'SET', - 'SHOW', - 'SOME', - 'START', - 'STATISTICS', - 'STRING', - 'SYSTEM', - 'THEN', - 'TIES', - 'TO', - 'TRAN', - 'TRANSACTION', - 'TRIGGER', - 'TRUE', - 'TRUNCATE', - 'UNBOUNDED', - 'UNDER', - 'UNION', - 'UNIQUE', - 'UNKNOWN', - 'UNNEST', - 'UNSET', - 'UPDATE', - 'UPSERT', - 'USE', - 'USER', - 'USING', - 'VALIDATE', - 'VALUE', - 'VALUED', - 'VALUES', - 'VIA', - 'VIEW', - 'WHEN', - 'WHERE', - 'WHILE', - 'WINDOW', - 'WITH', - 'WITHIN', - 'WORK', - 'XOR', - 'IDENT_ICASE', - 'IDENT', - 'NAMED_PARAM', - 'POSITIONAL_PARAM', - 'NEXT_PARAM', - ]; - static ruleNames = [ - 'statements', - 'input', - 'opt_trailer', - 'stmt_body', - 'stmt', - 'advise', - 'opt_index', - 'explain', - 'prepare', - 'opt_force', - 'opt_name', - 'from_or_as', - 'execute', - 'execute_using', - 'infer', - 'opt_keyspace_collection', - 'opt_infer_using', - 'opt_infer_ustat_with', - 'infer_ustat_with', - 'select_stmt', - 'dml_stmt', - 'ddl_stmt', - 'role_stmt', - 'index_stmt', - 'scope_stmt', - 'collection_stmt', - 'function_stmt', - 'transaction_stmt', - 'fullselect', - 'select_terms', - 'select_term', - 'subselect', - 'from_select', - 'select_from', - 'select_clause', - 'projection', - 'opt_quantifier', - 'raw', - 'projects', - 'project', - 'opt_as_alias', - 'as_alias', - 'alias', - 'opt_from', - 'from', - 'from_term', - 'simple_from_term', - 'unnest', - 'keyspace_term', - 'keyspace_path', - 'namespace_term', - 'namespace_name', - 'bucket_name', - 'scope_name', - 'keyspace_name', - 'opt_use', - 'use_options', - 'use_keys', - 'use_index', - 'join_hint', - 'opt_primary', - 'index_refs', - 'index_ref', - 'use_hash_option', - 'opt_use_del_upd', - 'opt_join_type', - 'opt_outer', - 'on_keys', - 'on_key', - 'opt_let', - 'let_', - 'bindings', - 'binding', - 'opt_with', - 'with_list', - 'with_term', - 'opt_where', - 'where', - 'opt_group', - 'group', - 'group_terms', - 'group_term', - 'opt_letting', - 'letting', - 'opt_having', - 'having', - 'opt_order_by', - 'order_by', - 'sort_terms', - 'sort_term', - 'opt_dir', - 'dir', - 'opt_order_nulls', - 'first_last', - 'nulls', - 'opt_limit', - 'limit', - 'opt_offset', - 'offset', - 'insert', - 'simple_keyspace_ref', - 'keyspace_ref', - 'opt_values_header', - 'key', - 'values_list', - 'values', - 'next_values', - 'key_val_expr', - 'key_val_options_expr', - 'opt_returning', - 'returning', - 'returns_', - 'key_expr_header', - 'value_expr_header', - 'options_expr_header', - 'key_val_options_expr_header', - 'upsert', - 'delete_', - 'update', - 'set', - 'set_terms', - 'set_term', - 'function_meta_expr', - 'opt_update_for', - 'update_for', - 'update_dimensions', - 'update_dimension', - 'update_binding', - 'variable', - 'opt_when', - 'unset', - 'unset_terms', - 'unset_term', - 'merge', - 'opt_use_merge', - 'opt_key', - 'merge_actions', - 'opt_merge_delete_insert', - 'opt_merge_insert', - 'merge_update', - 'merge_delete', - 'merge_insert', - 'grant_role', - 'role_list', - 'role_name', - 'keyspace_scope_list', - 'keyspace_scope', - 'user_list', - 'user', - 'revoke_role', - 'create_scope', - 'drop_scope', - 'create_collection', - 'drop_collection', - 'flush_collection', - 'flush_or_truncate', - 'create_index', - 'create_primary_index', - 'opt_primary_name', - 'index_name', - 'opt_index_name', - 'named_keyspace_ref', - 'simple_named_keyspace_ref', - 'named_scope_ref', - 'index_partition', - 'opt_index_using', - 'index_using', - 'opt_index_with', - 'index_with', - 'index_terms', - 'index_term', - 'index_term_expr', - 'index_expr', - 'all', - 'index_where', - 'opt_ikattr', - 'ikattr', - 'drop_index', - 'alter_index', - 'build_index', - 'create_function', - 'opt_replace', - 'func_name', - 'short_func_name', - 'long_func_name', - 'parm_list', - 'parameter_terms', - 'func_body', - 'drop_function', - 'execute_function', - 'update_statistics', - 'opt_for', - 'update_stat_terms', - 'update_stat_term', - 'path', - 'expr', - 'valued', - 'c_expr', - 'b_expr', - 'literal', - 'construction_expr', - 'object', - 'opt_members', - 'members', - 'member', - 'array', - 'opt_exprs', - 'exprs', - 'param_expr', - 'case_expr', - 'simple_or_searched_case', - 'simple_case', - 'when_thens', - 'searched_case', - 'opt_else', - 'function_expr', - 'function_name', - 'collection_expr', - 'collection_cond', - 'coll_bindings', - 'coll_binding', - 'satisfies', - 'collection_xform', - 'paren_expr', - 'subquery_expr', - 'expr_input', - 'all_expr', - 'opt_window_clause', - 'window_list', - 'window_term', - 'window_specification', - 'opt_window_name', - 'opt_window_partition', - 'opt_window_frame', - 'window_frame_modifier', - 'opt_window_frame_exclusion', - 'window_frame_extents', - 'window_frame_extent', - 'window_frame_valexpr_modifier', - 'opt_nulls_treatment', - 'nulls_treatment', - 'opt_from_first_last', - 'agg_quantifier', - 'opt_filter', - 'opt_window_function', - 'window_function_details', - 'start_transaction', - 'commit_transaction', - 'rollback_transaction', - 'start_or_begin', - 'opt_transaction', - 'transaction', - 'opt_savepoint', - 'savepoint_name', - 'opt_isolation_level', - 'isolation_level', - 'isolation_val', - 'set_transaction_isolation', - 'savepoint', - 'if_exists', - 'if_not_exists', - ]; - - constructor(input) { - super(input); - this._interp = new antlr4.atn.ParserATNSimulator(this, atn, decisionsToDFA, sharedContextCache); - this.ruleNames = n1qlParser.ruleNames; - this.literalNames = n1qlParser.literalNames; - this.symbolicNames = n1qlParser.symbolicNames; - } - - get atn() { - return atn; - } - - sempred(localctx, ruleIndex, predIndex) { - switch (ruleIndex) { - case 2: - return this.opt_trailer_sempred(localctx, predIndex); - case 29: - return this.select_terms_sempred(localctx, predIndex); - case 38: - return this.projects_sempred(localctx, predIndex); - case 45: - return this.from_term_sempred(localctx, predIndex); - case 61: - return this.index_refs_sempred(localctx, predIndex); - case 71: - return this.bindings_sempred(localctx, predIndex); - case 74: - return this.with_list_sempred(localctx, predIndex); - case 80: - return this.group_terms_sempred(localctx, predIndex); - case 88: - return this.sort_terms_sempred(localctx, predIndex); - case 104: - return this.values_list_sempred(localctx, predIndex); - case 120: - return this.set_terms_sempred(localctx, predIndex); - case 125: - return this.update_dimensions_sempred(localctx, predIndex); - case 126: - return this.update_dimension_sempred(localctx, predIndex); - case 131: - return this.unset_terms_sempred(localctx, predIndex); - case 143: - return this.role_list_sempred(localctx, predIndex); - case 145: - return this.keyspace_scope_list_sempred(localctx, predIndex); - case 147: - return this.user_list_sempred(localctx, predIndex); - case 169: - return this.index_terms_sempred(localctx, predIndex); - case 186: - return this.parameter_terms_sempred(localctx, predIndex); - case 192: - return this.update_stat_terms_sempred(localctx, predIndex); - case 194: - return this.path_sempred(localctx, predIndex); - case 195: - return this.expr_sempred(localctx, predIndex); - case 198: - return this.b_expr_sempred(localctx, predIndex); - case 203: - return this.members_sempred(localctx, predIndex); - case 207: - return this.exprs_sempred(localctx, predIndex); - case 212: - return this.when_thens_sempred(localctx, predIndex); - case 219: - return this.coll_bindings_sempred(localctx, predIndex); - case 228: - return this.window_list_sempred(localctx, predIndex); - default: - throw 'No predicate with index:' + ruleIndex; - } - } - - opt_trailer_sempred(localctx, predIndex) { - switch (predIndex) { - case 0: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - select_terms_sempred(localctx, predIndex) { - switch (predIndex) { - case 1: - return this.precpred(this._ctx, 12); - case 2: - return this.precpred(this._ctx, 11); - case 3: - return this.precpred(this._ctx, 10); - case 4: - return this.precpred(this._ctx, 9); - case 5: - return this.precpred(this._ctx, 8); - case 6: - return this.precpred(this._ctx, 7); - default: - throw 'No predicate with index:' + predIndex; - } - } - - projects_sempred(localctx, predIndex) { - switch (predIndex) { - case 7: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - from_term_sempred(localctx, predIndex) { - switch (predIndex) { - case 8: - return this.precpred(this._ctx, 8); - case 9: - return this.precpred(this._ctx, 7); - case 10: - return this.precpred(this._ctx, 6); - case 11: - return this.precpred(this._ctx, 5); - case 12: - return this.precpred(this._ctx, 4); - case 13: - return this.precpred(this._ctx, 3); - case 14: - return this.precpred(this._ctx, 2); - default: - throw 'No predicate with index:' + predIndex; - } - } - - index_refs_sempred(localctx, predIndex) { - switch (predIndex) { - case 15: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - bindings_sempred(localctx, predIndex) { - switch (predIndex) { - case 16: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - with_list_sempred(localctx, predIndex) { - switch (predIndex) { - case 17: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - group_terms_sempred(localctx, predIndex) { - switch (predIndex) { - case 18: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - sort_terms_sempred(localctx, predIndex) { - switch (predIndex) { - case 19: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - values_list_sempred(localctx, predIndex) { - switch (predIndex) { - case 20: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - set_terms_sempred(localctx, predIndex) { - switch (predIndex) { - case 21: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - update_dimensions_sempred(localctx, predIndex) { - switch (predIndex) { - case 22: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - update_dimension_sempred(localctx, predIndex) { - switch (predIndex) { - case 23: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - unset_terms_sempred(localctx, predIndex) { - switch (predIndex) { - case 24: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - role_list_sempred(localctx, predIndex) { - switch (predIndex) { - case 25: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - keyspace_scope_list_sempred(localctx, predIndex) { - switch (predIndex) { - case 26: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - user_list_sempred(localctx, predIndex) { - switch (predIndex) { - case 27: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - index_terms_sempred(localctx, predIndex) { - switch (predIndex) { - case 28: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - parameter_terms_sempred(localctx, predIndex) { - switch (predIndex) { - case 29: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - update_stat_terms_sempred(localctx, predIndex) { - switch (predIndex) { - case 30: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - path_sempred(localctx, predIndex) { - switch (predIndex) { - case 31: - return this.precpred(this._ctx, 5); - case 32: - return this.precpred(this._ctx, 4); - case 33: - return this.precpred(this._ctx, 3); - case 34: - return this.precpred(this._ctx, 2); - case 35: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - expr_sempred(localctx, predIndex) { - switch (predIndex) { - case 36: - return this.precpred(this._ctx, 31); - case 37: - return this.precpred(this._ctx, 30); - case 38: - return this.precpred(this._ctx, 29); - case 39: - return this.precpred(this._ctx, 28); - case 40: - return this.precpred(this._ctx, 27); - case 41: - return this.precpred(this._ctx, 26); - case 42: - return this.precpred(this._ctx, 25); - case 43: - return this.precpred(this._ctx, 24); - case 44: - return this.precpred(this._ctx, 22); - case 45: - return this.precpred(this._ctx, 21); - case 46: - return this.precpred(this._ctx, 20); - case 47: - return this.precpred(this._ctx, 19); - case 48: - return this.precpred(this._ctx, 18); - case 49: - return this.precpred(this._ctx, 17); - case 50: - return this.precpred(this._ctx, 16); - case 51: - return this.precpred(this._ctx, 13); - case 52: - return this.precpred(this._ctx, 12); - case 53: - return this.precpred(this._ctx, 11); - case 54: - return this.precpred(this._ctx, 10); - case 55: - return this.precpred(this._ctx, 9); - case 56: - return this.precpred(this._ctx, 8); - case 57: - return this.precpred(this._ctx, 39); - case 58: - return this.precpred(this._ctx, 38); - case 59: - return this.precpred(this._ctx, 37); - case 60: - return this.precpred(this._ctx, 36); - case 61: - return this.precpred(this._ctx, 35); - case 62: - return this.precpred(this._ctx, 34); - case 63: - return this.precpred(this._ctx, 33); - case 64: - return this.precpred(this._ctx, 32); - case 65: - return this.precpred(this._ctx, 15); - case 66: - return this.precpred(this._ctx, 14); - case 67: - return this.precpred(this._ctx, 7); - case 68: - return this.precpred(this._ctx, 6); - case 69: - return this.precpred(this._ctx, 5); - case 70: - return this.precpred(this._ctx, 4); - case 71: - return this.precpred(this._ctx, 3); - case 72: - return this.precpred(this._ctx, 2); - default: - throw 'No predicate with index:' + predIndex; - } - } - - b_expr_sempred(localctx, predIndex) { - switch (predIndex) { - case 73: - return this.precpred(this._ctx, 6); - case 74: - return this.precpred(this._ctx, 5); - case 75: - return this.precpred(this._ctx, 4); - case 76: - return this.precpred(this._ctx, 3); - case 77: - return this.precpred(this._ctx, 2); - case 78: - return this.precpred(this._ctx, 1); - case 79: - return this.precpred(this._ctx, 14); - case 80: - return this.precpred(this._ctx, 13); - case 81: - return this.precpred(this._ctx, 12); - case 82: - return this.precpred(this._ctx, 11); - case 83: - return this.precpred(this._ctx, 10); - case 84: - return this.precpred(this._ctx, 9); - case 85: - return this.precpred(this._ctx, 8); - case 86: - return this.precpred(this._ctx, 7); - default: - throw 'No predicate with index:' + predIndex; - } - } - - members_sempred(localctx, predIndex) { - switch (predIndex) { - case 87: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - exprs_sempred(localctx, predIndex) { - switch (predIndex) { - case 88: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - when_thens_sempred(localctx, predIndex) { - switch (predIndex) { - case 89: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - coll_bindings_sempred(localctx, predIndex) { - switch (predIndex) { - case 90: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - window_list_sempred(localctx, predIndex) { - switch (predIndex) { - case 91: - return this.precpred(this._ctx, 1); - default: - throw 'No predicate with index:' + predIndex; - } - } - - statements() { - let localctx = new StatementsContext(this, this._ctx, this.state); - this.enterRule(localctx, 0, n1qlParser.RULE_statements); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 522; - this.input(); - this.state = 526; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ( - ((_la & ~0x1f) == 0 && - ((1 << _la) & - ((1 << n1qlParser.STR) | - (1 << n1qlParser.INT) | - (1 << n1qlParser.NUM) | - (1 << n1qlParser.MINUS) | - (1 << n1qlParser.LPAREN) | - (1 << n1qlParser.LBRACE) | - (1 << n1qlParser.LBRACKET))) !== - 0) || - (((_la - 32) & ~0x1f) == 0 && - ((1 << (_la - 32)) & - ((1 << (n1qlParser.ADVISE - 32)) | - (1 << (n1qlParser.ALL - 32)) | - (1 << (n1qlParser.ALTER - 32)) | - (1 << (n1qlParser.ANALYZE - 32)) | - (1 << (n1qlParser.ANY - 32)) | - (1 << (n1qlParser.ARRAY - 32)) | - (1 << (n1qlParser.BEGIN - 32)) | - (1 << (n1qlParser.BUILD - 32)) | - (1 << (n1qlParser.CASE - 32)) | - (1 << (n1qlParser.COMMIT - 32)) | - (1 << (n1qlParser.CORRELATED - 32)) | - (1 << (n1qlParser.COVER - 32)) | - (1 << (n1qlParser.CREATE - 32)))) !== - 0) || - (((_la - 69) & ~0x1f) == 0 && - ((1 << (_la - 69)) & - ((1 << (n1qlParser.DELETE_ - 69)) | - (1 << (n1qlParser.DISTINCT - 69)) | - (1 << (n1qlParser.DROP - 69)) | - (1 << (n1qlParser.EACH - 69)) | - (1 << (n1qlParser.EVERY - 69)) | - (1 << (n1qlParser.EXECUTE - 69)) | - (1 << (n1qlParser.EXISTS - 69)) | - (1 << (n1qlParser.EXPLAIN - 69)) | - (1 << (n1qlParser.FALSE - 69)) | - (1 << (n1qlParser.FIRST - 69)) | - (1 << (n1qlParser.FLUSH - 69)) | - (1 << (n1qlParser.FROM - 69)) | - (1 << (n1qlParser.GRANT - 69)))) !== - 0) || - (((_la - 112) & ~0x1f) == 0 && - ((1 << (_la - 112)) & - ((1 << (n1qlParser.INFER - 112)) | - (1 << (n1qlParser.INSERT - 112)) | - (1 << (n1qlParser.MERGE - 112)) | - (1 << (n1qlParser.MISSING - 112)))) !== - 0) || - (((_la - 145) & ~0x1f) == 0 && - ((1 << (_la - 145)) & - ((1 << (n1qlParser.NOT - 145)) | - (1 << (n1qlParser.NTH_VALUE - 145)) | - (1 << (n1qlParser.NULL - 145)) | - (1 << (n1qlParser.OBJECT - 145)) | - (1 << (n1qlParser.PREPARE - 145)))) !== - 0) || - (((_la - 179) & ~0x1f) == 0 && - ((1 << (_la - 179)) & - ((1 << (n1qlParser.REPLACE - 179)) | - (1 << (n1qlParser.REVOKE - 179)) | - (1 << (n1qlParser.ROLLBACK - 179)) | - (1 << (n1qlParser.SAVEPOINT - 179)) | - (1 << (n1qlParser.SELECT - 179)) | - (1 << (n1qlParser.SELF - 179)) | - (1 << (n1qlParser.SET - 179)) | - (1 << (n1qlParser.SOME - 179)) | - (1 << (n1qlParser.START - 179)) | - (1 << (n1qlParser.SYSTEM - 179)) | - (1 << (n1qlParser.TRUE - 179)) | - (1 << (n1qlParser.TRUNCATE - 179)))) !== - 0) || - (((_la - 217) & ~0x1f) == 0 && - ((1 << (_la - 217)) & - ((1 << (n1qlParser.UPDATE - 217)) | - (1 << (n1qlParser.UPSERT - 217)) | - (1 << (n1qlParser.WITH - 217)) | - (1 << (n1qlParser.IDENT_ICASE - 217)) | - (1 << (n1qlParser.IDENT - 217)) | - (1 << (n1qlParser.NAMED_PARAM - 217)) | - (1 << (n1qlParser.POSITIONAL_PARAM - 217)) | - (1 << (n1qlParser.NEXT_PARAM - 217)))) !== - 0) - ) { - this.state = 523; - this.input(); - this.state = 528; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - input() { - let localctx = new InputContext(this, this._ctx, this.state); - this.enterRule(localctx, 2, n1qlParser.RULE_input); - try { - this.state = 533; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 1, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 529; - this.stmt_body(); - this.state = 530; - this.opt_trailer(0); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 532; - this.expr_input(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_trailer(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new Opt_trailerContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 4; - this.enterRecursionRule(localctx, 4, n1qlParser.RULE_opt_trailer, _p); - try { - this.enterOuterAlt(localctx, 1); - this._ctx.stop = this._input.LT(-1); - this.state = 540; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 2, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new Opt_trailerContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_opt_trailer); - this.state = 536; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 537; - this.match(n1qlParser.SEMI); - } - this.state = 542; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 2, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - stmt_body() { - let localctx = new Stmt_bodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 6, n1qlParser.RULE_stmt_body); - try { - this.state = 548; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 3, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 543; - this.advise(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 544; - this.explain(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 545; - this.prepare(); - break; - - case 4: - this.enterOuterAlt(localctx, 4); - this.state = 546; - this.execute(); - break; - - case 5: - this.enterOuterAlt(localctx, 5); - this.state = 547; - this.stmt(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - stmt() { - let localctx = new StmtContext(this, this._ctx, this.state); - this.enterRule(localctx, 8, n1qlParser.RULE_stmt); - try { - this.state = 558; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 4, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 550; - this.select_stmt(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 551; - this.dml_stmt(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 552; - this.ddl_stmt(); - break; - - case 4: - this.enterOuterAlt(localctx, 4); - this.state = 553; - this.infer(); - break; - - case 5: - this.enterOuterAlt(localctx, 5); - this.state = 554; - this.update_statistics(); - break; - - case 6: - this.enterOuterAlt(localctx, 6); - this.state = 555; - this.role_stmt(); - break; - - case 7: - this.enterOuterAlt(localctx, 7); - this.state = 556; - this.function_stmt(); - break; - - case 8: - this.enterOuterAlt(localctx, 8); - this.state = 557; - this.transaction_stmt(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - advise() { - let localctx = new AdviseContext(this, this._ctx, this.state); - this.enterRule(localctx, 10, n1qlParser.RULE_advise); - try { - this.enterOuterAlt(localctx, 1); - this.state = 560; - this.match(n1qlParser.ADVISE); - this.state = 561; - this.opt_index(); - this.state = 562; - this.stmt(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_index() { - let localctx = new Opt_indexContext(this, this._ctx, this.state); - this.enterRule(localctx, 12, n1qlParser.RULE_opt_index); - try { - this.state = 566; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.LPAREN: - case n1qlParser.ALTER: - case n1qlParser.ANALYZE: - case n1qlParser.BEGIN: - case n1qlParser.BUILD: - case n1qlParser.COMMIT: - case n1qlParser.CORRELATED: - case n1qlParser.CREATE: - case n1qlParser.DELETE_: - case n1qlParser.DROP: - case n1qlParser.EXECUTE: - case n1qlParser.FLUSH: - case n1qlParser.FROM: - case n1qlParser.GRANT: - case n1qlParser.INFER: - case n1qlParser.INSERT: - case n1qlParser.MERGE: - case n1qlParser.REVOKE: - case n1qlParser.ROLLBACK: - case n1qlParser.SAVEPOINT: - case n1qlParser.SELECT: - case n1qlParser.SET: - case n1qlParser.START: - case n1qlParser.TRUNCATE: - case n1qlParser.UPDATE: - case n1qlParser.UPSERT: - case n1qlParser.WITH: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.INDEX: - this.enterOuterAlt(localctx, 2); - this.state = 565; - this.match(n1qlParser.INDEX); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - explain() { - let localctx = new ExplainContext(this, this._ctx, this.state); - this.enterRule(localctx, 14, n1qlParser.RULE_explain); - try { - this.enterOuterAlt(localctx, 1); - this.state = 568; - this.match(n1qlParser.EXPLAIN); - this.state = 569; - this.stmt(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - prepare() { - let localctx = new PrepareContext(this, this._ctx, this.state); - this.enterRule(localctx, 16, n1qlParser.RULE_prepare); - try { - this.enterOuterAlt(localctx, 1); - this.state = 571; - this.match(n1qlParser.PREPARE); - this.state = 572; - this.opt_force(); - this.state = 573; - this.opt_name(); - this.state = 574; - this.stmt(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_force() { - let localctx = new Opt_forceContext(this, this._ctx, this.state); - this.enterRule(localctx, 18, n1qlParser.RULE_opt_force); - try { - this.state = 578; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.STR: - case n1qlParser.LPAREN: - case n1qlParser.ALTER: - case n1qlParser.ANALYZE: - case n1qlParser.BEGIN: - case n1qlParser.BUILD: - case n1qlParser.COMMIT: - case n1qlParser.CORRELATED: - case n1qlParser.CREATE: - case n1qlParser.DELETE_: - case n1qlParser.DROP: - case n1qlParser.EXECUTE: - case n1qlParser.FLUSH: - case n1qlParser.FROM: - case n1qlParser.GRANT: - case n1qlParser.INFER: - case n1qlParser.INSERT: - case n1qlParser.MERGE: - case n1qlParser.REVOKE: - case n1qlParser.ROLLBACK: - case n1qlParser.SAVEPOINT: - case n1qlParser.SELECT: - case n1qlParser.SET: - case n1qlParser.START: - case n1qlParser.TRUNCATE: - case n1qlParser.UPDATE: - case n1qlParser.UPSERT: - case n1qlParser.WITH: - case n1qlParser.IDENT: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.FORCE: - this.enterOuterAlt(localctx, 2); - this.state = 577; - this.match(n1qlParser.FORCE); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_name() { - let localctx = new Opt_nameContext(this, this._ctx, this.state); - this.enterRule(localctx, 20, n1qlParser.RULE_opt_name); - try { - this.state = 585; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.LPAREN: - case n1qlParser.ALTER: - case n1qlParser.ANALYZE: - case n1qlParser.BEGIN: - case n1qlParser.BUILD: - case n1qlParser.COMMIT: - case n1qlParser.CORRELATED: - case n1qlParser.CREATE: - case n1qlParser.DELETE_: - case n1qlParser.DROP: - case n1qlParser.EXECUTE: - case n1qlParser.FLUSH: - case n1qlParser.FROM: - case n1qlParser.GRANT: - case n1qlParser.INFER: - case n1qlParser.INSERT: - case n1qlParser.MERGE: - case n1qlParser.REVOKE: - case n1qlParser.ROLLBACK: - case n1qlParser.SAVEPOINT: - case n1qlParser.SELECT: - case n1qlParser.SET: - case n1qlParser.START: - case n1qlParser.TRUNCATE: - case n1qlParser.UPDATE: - case n1qlParser.UPSERT: - case n1qlParser.WITH: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.IDENT: - this.enterOuterAlt(localctx, 2); - this.state = 581; - this.match(n1qlParser.IDENT); - this.state = 582; - this.from_or_as(); - break; - case n1qlParser.STR: - this.enterOuterAlt(localctx, 3); - this.state = 583; - this.match(n1qlParser.STR); - this.state = 584; - this.from_or_as(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - from_or_as() { - let localctx = new From_or_asContext(this, this._ctx, this.state); - this.enterRule(localctx, 22, n1qlParser.RULE_from_or_as); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 587; - _la = this._input.LA(1); - if (!(_la === n1qlParser.AS || _la === n1qlParser.FROM)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - execute() { - let localctx = new ExecuteContext(this, this._ctx, this.state); - this.enterRule(localctx, 24, n1qlParser.RULE_execute); - try { - this.enterOuterAlt(localctx, 1); - this.state = 589; - this.match(n1qlParser.EXECUTE); - this.state = 590; - this.expr(0); - this.state = 591; - this.execute_using(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - execute_using() { - let localctx = new Execute_usingContext(this, this._ctx, this.state); - this.enterRule(localctx, 26, n1qlParser.RULE_execute_using); - try { - this.state = 596; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 8, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 594; - this.match(n1qlParser.USING); - this.state = 595; - this.construction_expr(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - infer() { - let localctx = new InferContext(this, this._ctx, this.state); - this.enterRule(localctx, 28, n1qlParser.RULE_infer); - try { - this.enterOuterAlt(localctx, 1); - this.state = 598; - this.match(n1qlParser.INFER); - this.state = 599; - this.opt_keyspace_collection(); - this.state = 600; - this.simple_keyspace_ref(); - this.state = 601; - this.opt_infer_using(); - this.state = 602; - this.opt_infer_ustat_with(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_keyspace_collection() { - let localctx = new Opt_keyspace_collectionContext(this, this._ctx, this.state); - this.enterRule(localctx, 30, n1qlParser.RULE_opt_keyspace_collection); - try { - this.state = 607; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.SYSTEM: - case n1qlParser.IDENT: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.KEYSPACE: - this.enterOuterAlt(localctx, 2); - this.state = 605; - this.match(n1qlParser.KEYSPACE); - break; - case n1qlParser.COLLECTION: - this.enterOuterAlt(localctx, 3); - this.state = 606; - this.match(n1qlParser.COLLECTION); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_infer_using() { - let localctx = new Opt_infer_usingContext(this, this._ctx, this.state); - this.enterRule(localctx, 32, n1qlParser.RULE_opt_infer_using); - try { - this.enterOuterAlt(localctx, 1); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_infer_ustat_with() { - let localctx = new Opt_infer_ustat_withContext(this, this._ctx, this.state); - this.enterRule(localctx, 34, n1qlParser.RULE_opt_infer_ustat_with); - try { - this.state = 613; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 10, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 612; - this.infer_ustat_with(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - infer_ustat_with() { - let localctx = new Infer_ustat_withContext(this, this._ctx, this.state); - this.enterRule(localctx, 36, n1qlParser.RULE_infer_ustat_with); - try { - this.enterOuterAlt(localctx, 1); - this.state = 615; - this.match(n1qlParser.WITH); - this.state = 616; - this.expr(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - select_stmt() { - let localctx = new Select_stmtContext(this, this._ctx, this.state); - this.enterRule(localctx, 38, n1qlParser.RULE_select_stmt); - try { - this.enterOuterAlt(localctx, 1); - this.state = 618; - this.fullselect(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - dml_stmt() { - let localctx = new Dml_stmtContext(this, this._ctx, this.state); - this.enterRule(localctx, 40, n1qlParser.RULE_dml_stmt); - try { - this.state = 625; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.INSERT: - this.enterOuterAlt(localctx, 1); - this.state = 620; - this.insert(); - break; - case n1qlParser.UPSERT: - this.enterOuterAlt(localctx, 2); - this.state = 621; - this.upsert(); - break; - case n1qlParser.DELETE_: - this.enterOuterAlt(localctx, 3); - this.state = 622; - this.delete_(); - break; - case n1qlParser.UPDATE: - this.enterOuterAlt(localctx, 4); - this.state = 623; - this.update(); - break; - case n1qlParser.MERGE: - this.enterOuterAlt(localctx, 5); - this.state = 624; - this.merge(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - ddl_stmt() { - let localctx = new Ddl_stmtContext(this, this._ctx, this.state); - this.enterRule(localctx, 42, n1qlParser.RULE_ddl_stmt); - try { - this.state = 630; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 12, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 627; - this.index_stmt(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 628; - this.scope_stmt(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 629; - this.collection_stmt(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - role_stmt() { - let localctx = new Role_stmtContext(this, this._ctx, this.state); - this.enterRule(localctx, 44, n1qlParser.RULE_role_stmt); - try { - this.state = 634; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.GRANT: - this.enterOuterAlt(localctx, 1); - this.state = 632; - this.grant_role(); - break; - case n1qlParser.REVOKE: - this.enterOuterAlt(localctx, 2); - this.state = 633; - this.revoke_role(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - index_stmt() { - let localctx = new Index_stmtContext(this, this._ctx, this.state); - this.enterRule(localctx, 46, n1qlParser.RULE_index_stmt); - try { - this.state = 641; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 14, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 636; - this.create_index(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 637; - this.create_primary_index(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 638; - this.drop_index(); - break; - - case 4: - this.enterOuterAlt(localctx, 4); - this.state = 639; - this.alter_index(); - break; - - case 5: - this.enterOuterAlt(localctx, 5); - this.state = 640; - this.build_index(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - scope_stmt() { - let localctx = new Scope_stmtContext(this, this._ctx, this.state); - this.enterRule(localctx, 48, n1qlParser.RULE_scope_stmt); - try { - this.state = 645; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.CREATE: - this.enterOuterAlt(localctx, 1); - this.state = 643; - this.create_scope(); - break; - case n1qlParser.DROP: - this.enterOuterAlt(localctx, 2); - this.state = 644; - this.drop_scope(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - collection_stmt() { - let localctx = new Collection_stmtContext(this, this._ctx, this.state); - this.enterRule(localctx, 50, n1qlParser.RULE_collection_stmt); - try { - this.state = 650; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.CREATE: - this.enterOuterAlt(localctx, 1); - this.state = 647; - this.create_collection(); - break; - case n1qlParser.DROP: - this.enterOuterAlt(localctx, 2); - this.state = 648; - this.drop_collection(); - break; - case n1qlParser.FLUSH: - case n1qlParser.TRUNCATE: - this.enterOuterAlt(localctx, 3); - this.state = 649; - this.flush_collection(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - function_stmt() { - let localctx = new Function_stmtContext(this, this._ctx, this.state); - this.enterRule(localctx, 52, n1qlParser.RULE_function_stmt); - try { - this.state = 655; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.CREATE: - this.enterOuterAlt(localctx, 1); - this.state = 652; - this.create_function(); - break; - case n1qlParser.DROP: - this.enterOuterAlt(localctx, 2); - this.state = 653; - this.drop_function(); - break; - case n1qlParser.EXECUTE: - this.enterOuterAlt(localctx, 3); - this.state = 654; - this.execute_function(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - transaction_stmt() { - let localctx = new Transaction_stmtContext(this, this._ctx, this.state); - this.enterRule(localctx, 54, n1qlParser.RULE_transaction_stmt); - try { - this.state = 662; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.BEGIN: - case n1qlParser.START: - this.enterOuterAlt(localctx, 1); - this.state = 657; - this.start_transaction(); - break; - case n1qlParser.COMMIT: - this.enterOuterAlt(localctx, 2); - this.state = 658; - this.commit_transaction(); - break; - case n1qlParser.ROLLBACK: - this.enterOuterAlt(localctx, 3); - this.state = 659; - this.rollback_transaction(); - break; - case n1qlParser.SAVEPOINT: - this.enterOuterAlt(localctx, 4); - this.state = 660; - this.savepoint(); - break; - case n1qlParser.SET: - this.enterOuterAlt(localctx, 5); - this.state = 661; - this.set_transaction_isolation(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - fullselect() { - let localctx = new FullselectContext(this, this._ctx, this.state); - this.enterRule(localctx, 56, n1qlParser.RULE_fullselect); - try { - this.state = 677; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 19, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 664; - this.select_terms(0); - this.state = 665; - this.opt_order_by(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 667; - this.select_terms(0); - this.state = 668; - this.opt_order_by(); - this.state = 669; - this.limit(); - this.state = 670; - this.opt_offset(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 672; - this.select_terms(0); - this.state = 673; - this.opt_order_by(); - this.state = 674; - this.offset(); - this.state = 675; - this.opt_limit(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - select_terms(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new Select_termsContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 58; - this.enterRecursionRule(localctx, 58, n1qlParser.RULE_select_terms, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 708; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 20, this._ctx); - switch (la_) { - case 1: - this.state = 680; - this.subselect(); - break; - - case 2: - this.state = 681; - this.subquery_expr(); - this.state = 682; - this.match(n1qlParser.UNION); - this.state = 683; - this.select_term(); - break; - - case 3: - this.state = 685; - this.subquery_expr(); - this.state = 686; - this.match(n1qlParser.UNION); - this.state = 687; - this.match(n1qlParser.ALL); - this.state = 688; - this.select_term(); - break; - - case 4: - this.state = 690; - this.subquery_expr(); - this.state = 691; - this.match(n1qlParser.INTERSECT); - this.state = 692; - this.select_term(); - break; - - case 5: - this.state = 694; - this.subquery_expr(); - this.state = 695; - this.match(n1qlParser.INTERSECT); - this.state = 696; - this.match(n1qlParser.ALL); - this.state = 697; - this.select_term(); - break; - - case 6: - this.state = 699; - this.subquery_expr(); - this.state = 700; - this.match(n1qlParser.EXCEPT); - this.state = 701; - this.select_term(); - break; - - case 7: - this.state = 703; - this.subquery_expr(); - this.state = 704; - this.match(n1qlParser.EXCEPT); - this.state = 705; - this.match(n1qlParser.ALL); - this.state = 706; - this.select_term(); - break; - } - this._ctx.stop = this._input.LT(-1); - this.state = 733; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 22, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - this.state = 731; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 21, this._ctx); - switch (la_) { - case 1: - localctx = new Select_termsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_select_terms); - this.state = 710; - if (!this.precpred(this._ctx, 12)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 12)'); - } - this.state = 711; - this.match(n1qlParser.UNION); - this.state = 712; - this.select_term(); - break; - - case 2: - localctx = new Select_termsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_select_terms); - this.state = 713; - if (!this.precpred(this._ctx, 11)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 11)'); - } - this.state = 714; - this.match(n1qlParser.UNION); - this.state = 715; - this.match(n1qlParser.ALL); - this.state = 716; - this.select_term(); - break; - - case 3: - localctx = new Select_termsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_select_terms); - this.state = 717; - if (!this.precpred(this._ctx, 10)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 10)'); - } - this.state = 718; - this.match(n1qlParser.INTERSECT); - this.state = 719; - this.select_term(); - break; - - case 4: - localctx = new Select_termsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_select_terms); - this.state = 720; - if (!this.precpred(this._ctx, 9)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 9)'); - } - this.state = 721; - this.match(n1qlParser.INTERSECT); - this.state = 722; - this.match(n1qlParser.ALL); - this.state = 723; - this.select_term(); - break; - - case 5: - localctx = new Select_termsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_select_terms); - this.state = 724; - if (!this.precpred(this._ctx, 8)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 8)'); - } - this.state = 725; - this.match(n1qlParser.EXCEPT); - this.state = 726; - this.select_term(); - break; - - case 6: - localctx = new Select_termsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_select_terms); - this.state = 727; - if (!this.precpred(this._ctx, 7)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 7)'); - } - this.state = 728; - this.match(n1qlParser.EXCEPT); - this.state = 729; - this.match(n1qlParser.ALL); - this.state = 730; - this.select_term(); - break; - } - } - this.state = 735; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 22, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - select_term() { - let localctx = new Select_termContext(this, this._ctx, this.state); - this.enterRule(localctx, 60, n1qlParser.RULE_select_term); - try { - this.state = 738; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.FROM: - case n1qlParser.SELECT: - case n1qlParser.WITH: - this.enterOuterAlt(localctx, 1); - this.state = 736; - this.subselect(); - break; - case n1qlParser.LPAREN: - case n1qlParser.CORRELATED: - this.enterOuterAlt(localctx, 2); - this.state = 737; - this.subquery_expr(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - subselect() { - let localctx = new SubselectContext(this, this._ctx, this.state); - this.enterRule(localctx, 62, n1qlParser.RULE_subselect); - try { - this.state = 742; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 24, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 740; - this.from_select(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 741; - this.select_from(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - from_select() { - let localctx = new From_selectContext(this, this._ctx, this.state); - this.enterRule(localctx, 64, n1qlParser.RULE_from_select); - try { - this.enterOuterAlt(localctx, 1); - this.state = 744; - this.opt_with(); - this.state = 745; - this.from(); - this.state = 746; - this.opt_let(); - this.state = 747; - this.opt_where(); - this.state = 748; - this.opt_group(); - this.state = 749; - this.opt_window_clause(); - this.state = 750; - this.select_clause(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - select_from() { - let localctx = new Select_fromContext(this, this._ctx, this.state); - this.enterRule(localctx, 66, n1qlParser.RULE_select_from); - try { - this.enterOuterAlt(localctx, 1); - this.state = 752; - this.opt_with(); - this.state = 753; - this.select_clause(); - this.state = 754; - this.opt_from(); - this.state = 755; - this.opt_let(); - this.state = 756; - this.opt_where(); - this.state = 757; - this.opt_group(); - this.state = 758; - this.opt_window_clause(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - select_clause() { - let localctx = new Select_clauseContext(this, this._ctx, this.state); - this.enterRule(localctx, 68, n1qlParser.RULE_select_clause); - try { - this.enterOuterAlt(localctx, 1); - this.state = 760; - this.match(n1qlParser.SELECT); - this.state = 761; - this.projection(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - projection() { - let localctx = new ProjectionContext(this, this._ctx, this.state); - this.enterRule(localctx, 70, n1qlParser.RULE_projection); - try { - this.state = 771; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 25, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 763; - this.opt_quantifier(); - this.state = 764; - this.projects(0); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 766; - this.opt_quantifier(); - this.state = 767; - this.raw(); - this.state = 768; - this.expr(0); - this.state = 769; - this.opt_as_alias(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_quantifier() { - let localctx = new Opt_quantifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 72, n1qlParser.RULE_opt_quantifier); - try { - this.state = 776; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.STR: - case n1qlParser.INT: - case n1qlParser.NUM: - case n1qlParser.MINUS: - case n1qlParser.STAR: - case n1qlParser.LPAREN: - case n1qlParser.LBRACE: - case n1qlParser.LBRACKET: - case n1qlParser.ANY: - case n1qlParser.ARRAY: - case n1qlParser.CASE: - case n1qlParser.CORRELATED: - case n1qlParser.COVER: - case n1qlParser.ELEMENT: - case n1qlParser.EVERY: - case n1qlParser.EXISTS: - case n1qlParser.FALSE: - case n1qlParser.FIRST: - case n1qlParser.MISSING: - case n1qlParser.NOT: - case n1qlParser.NTH_VALUE: - case n1qlParser.NULL: - case n1qlParser.OBJECT: - case n1qlParser.RAW: - case n1qlParser.REPLACE: - case n1qlParser.SELF: - case n1qlParser.SOME: - case n1qlParser.SYSTEM: - case n1qlParser.TRUE: - case n1qlParser.VALUE: - case n1qlParser.IDENT_ICASE: - case n1qlParser.IDENT: - case n1qlParser.NAMED_PARAM: - case n1qlParser.POSITIONAL_PARAM: - case n1qlParser.NEXT_PARAM: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.ALL: - this.enterOuterAlt(localctx, 2); - this.state = 774; - this.match(n1qlParser.ALL); - break; - case n1qlParser.DISTINCT: - this.enterOuterAlt(localctx, 3); - this.state = 775; - this.match(n1qlParser.DISTINCT); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - raw() { - let localctx = new RawContext(this, this._ctx, this.state); - this.enterRule(localctx, 74, n1qlParser.RULE_raw); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 778; - _la = this._input.LA(1); - if (!(_la === n1qlParser.ELEMENT || _la === n1qlParser.RAW || _la === n1qlParser.VALUE)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - projects(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new ProjectsContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 76; - this.enterRecursionRule(localctx, 76, n1qlParser.RULE_projects, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 781; - this.project(); - this._ctx.stop = this._input.LT(-1); - this.state = 788; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 27, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new ProjectsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_projects); - this.state = 783; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 784; - this.match(n1qlParser.COMMA); - this.state = 785; - this.project(); - } - this.state = 790; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 27, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - project() { - let localctx = new ProjectContext(this, this._ctx, this.state); - this.enterRule(localctx, 78, n1qlParser.RULE_project); - try { - this.state = 799; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 28, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 791; - this.match(n1qlParser.STAR); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 792; - this.expr(0); - this.state = 793; - this.match(n1qlParser.DOT); - this.state = 794; - this.match(n1qlParser.STAR); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 796; - this.expr(0); - this.state = 797; - this.opt_as_alias(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_as_alias() { - let localctx = new Opt_as_aliasContext(this, this._ctx, this.state); - this.enterRule(localctx, 80, n1qlParser.RULE_opt_as_alias); - try { - this.state = 803; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 29, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 802; - this.as_alias(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - as_alias() { - let localctx = new As_aliasContext(this, this._ctx, this.state); - this.enterRule(localctx, 82, n1qlParser.RULE_as_alias); - try { - this.state = 808; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.IDENT: - this.enterOuterAlt(localctx, 1); - this.state = 805; - this.alias(); - break; - case n1qlParser.AS: - this.enterOuterAlt(localctx, 2); - this.state = 806; - this.match(n1qlParser.AS); - this.state = 807; - this.alias(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - alias() { - let localctx = new AliasContext(this, this._ctx, this.state); - this.enterRule(localctx, 84, n1qlParser.RULE_alias); - try { - this.enterOuterAlt(localctx, 1); - this.state = 810; - this.match(n1qlParser.IDENT); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_from() { - let localctx = new Opt_fromContext(this, this._ctx, this.state); - this.enterRule(localctx, 86, n1qlParser.RULE_opt_from); - try { - this.state = 814; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 31, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 813; - this.from(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - from() { - let localctx = new FromContext(this, this._ctx, this.state); - this.enterRule(localctx, 88, n1qlParser.RULE_from); - try { - this.enterOuterAlt(localctx, 1); - this.state = 816; - this.match(n1qlParser.FROM); - this.state = 817; - this.from_term(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - from_term(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new From_termContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 90; - this.enterRecursionRule(localctx, 90, n1qlParser.RULE_from_term, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 829; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 32, this._ctx); - switch (la_) { - case 1: - this.state = 820; - this.simple_from_term(); - break; - - case 2: - this.state = 821; - this.simple_from_term(); - this.state = 822; - this.match(n1qlParser.RIGHT); - this.state = 823; - this.opt_outer(); - this.state = 824; - this.match(n1qlParser.JOIN); - this.state = 825; - this.simple_from_term(); - this.state = 826; - this.match(n1qlParser.ON); - this.state = 827; - this.expr(0); - break; - } - this._ctx.stop = this._input.LT(-1); - this.state = 881; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 34, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - this.state = 879; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 33, this._ctx); - switch (la_) { - case 1: - localctx = new From_termContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_from_term); - this.state = 831; - if (!this.precpred(this._ctx, 8)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 8)'); - } - this.state = 832; - this.opt_join_type(); - this.state = 833; - this.match(n1qlParser.JOIN); - this.state = 834; - this.simple_from_term(); - this.state = 835; - this.on_keys(); - break; - - case 2: - localctx = new From_termContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_from_term); - this.state = 837; - if (!this.precpred(this._ctx, 7)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 7)'); - } - this.state = 838; - this.opt_join_type(); - this.state = 839; - this.match(n1qlParser.JOIN); - this.state = 840; - this.simple_from_term(); - this.state = 841; - this.on_key(); - this.state = 842; - this.match(n1qlParser.FOR); - this.state = 843; - this.match(n1qlParser.IDENT); - break; - - case 3: - localctx = new From_termContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_from_term); - this.state = 845; - if (!this.precpred(this._ctx, 6)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 6)'); - } - this.state = 846; - this.opt_join_type(); - this.state = 847; - this.match(n1qlParser.NEST); - this.state = 848; - this.simple_from_term(); - this.state = 849; - this.on_keys(); - break; - - case 4: - localctx = new From_termContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_from_term); - this.state = 851; - if (!this.precpred(this._ctx, 5)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 5)'); - } - this.state = 852; - this.opt_join_type(); - this.state = 853; - this.match(n1qlParser.NEST); - this.state = 854; - this.simple_from_term(); - this.state = 855; - this.on_key(); - this.state = 856; - this.match(n1qlParser.FOR); - this.state = 857; - this.match(n1qlParser.IDENT); - break; - - case 5: - localctx = new From_termContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_from_term); - this.state = 859; - if (!this.precpred(this._ctx, 4)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 4)'); - } - this.state = 860; - this.opt_join_type(); - this.state = 861; - this.unnest(); - this.state = 862; - this.expr(0); - this.state = 863; - this.opt_as_alias(); - break; - - case 6: - localctx = new From_termContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_from_term); - this.state = 865; - if (!this.precpred(this._ctx, 3)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 3)'); - } - this.state = 866; - this.opt_join_type(); - this.state = 867; - this.match(n1qlParser.JOIN); - this.state = 868; - this.simple_from_term(); - this.state = 869; - this.match(n1qlParser.ON); - this.state = 870; - this.expr(0); - break; - - case 7: - localctx = new From_termContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_from_term); - this.state = 872; - if (!this.precpred(this._ctx, 2)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 2)'); - } - this.state = 873; - this.opt_join_type(); - this.state = 874; - this.match(n1qlParser.NEST); - this.state = 875; - this.simple_from_term(); - this.state = 876; - this.match(n1qlParser.ON); - this.state = 877; - this.expr(0); - break; - } - } - this.state = 883; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 34, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - simple_from_term() { - let localctx = new Simple_from_termContext(this, this._ctx, this.state); - this.enterRule(localctx, 92, n1qlParser.RULE_simple_from_term); - try { - this.state = 889; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 35, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 884; - this.keyspace_term(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 885; - this.expr(0); - this.state = 886; - this.opt_as_alias(); - this.state = 887; - this.opt_use(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - unnest() { - let localctx = new UnnestContext(this, this._ctx, this.state); - this.enterRule(localctx, 94, n1qlParser.RULE_unnest); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 891; - _la = this._input.LA(1); - if (!(_la === n1qlParser.FLATTEN || _la === n1qlParser.UNNEST)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - keyspace_term() { - let localctx = new Keyspace_termContext(this, this._ctx, this.state); - this.enterRule(localctx, 96, n1qlParser.RULE_keyspace_term); - try { - this.enterOuterAlt(localctx, 1); - this.state = 893; - this.keyspace_path(); - this.state = 894; - this.opt_as_alias(); - this.state = 895; - this.opt_use(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - keyspace_path() { - let localctx = new Keyspace_pathContext(this, this._ctx, this.state); - this.enterRule(localctx, 98, n1qlParser.RULE_keyspace_path); - try { - this.state = 907; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 36, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 897; - this.namespace_term(); - this.state = 898; - this.keyspace_name(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 900; - this.namespace_term(); - this.state = 901; - this.bucket_name(); - this.state = 902; - this.match(n1qlParser.DOT); - this.state = 903; - this.scope_name(); - this.state = 904; - this.match(n1qlParser.DOT); - this.state = 905; - this.keyspace_name(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - namespace_term() { - let localctx = new Namespace_termContext(this, this._ctx, this.state); - this.enterRule(localctx, 100, n1qlParser.RULE_namespace_term); - try { - this.state = 912; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.IDENT: - this.enterOuterAlt(localctx, 1); - this.state = 909; - this.namespace_name(); - break; - case n1qlParser.SYSTEM: - this.enterOuterAlt(localctx, 2); - this.state = 910; - this.match(n1qlParser.SYSTEM); - this.state = 911; - this.match(n1qlParser.COLON); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - namespace_name() { - let localctx = new Namespace_nameContext(this, this._ctx, this.state); - this.enterRule(localctx, 102, n1qlParser.RULE_namespace_name); - try { - this.enterOuterAlt(localctx, 1); - this.state = 914; - this.match(n1qlParser.IDENT); - this.state = 915; - this.match(n1qlParser.COLON); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - bucket_name() { - let localctx = new Bucket_nameContext(this, this._ctx, this.state); - this.enterRule(localctx, 104, n1qlParser.RULE_bucket_name); - try { - this.enterOuterAlt(localctx, 1); - this.state = 917; - this.match(n1qlParser.IDENT); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - scope_name() { - let localctx = new Scope_nameContext(this, this._ctx, this.state); - this.enterRule(localctx, 106, n1qlParser.RULE_scope_name); - try { - this.enterOuterAlt(localctx, 1); - this.state = 919; - this.match(n1qlParser.IDENT); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - keyspace_name() { - let localctx = new Keyspace_nameContext(this, this._ctx, this.state); - this.enterRule(localctx, 108, n1qlParser.RULE_keyspace_name); - try { - this.enterOuterAlt(localctx, 1); - this.state = 921; - this.match(n1qlParser.IDENT); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_use() { - let localctx = new Opt_useContext(this, this._ctx, this.state); - this.enterRule(localctx, 110, n1qlParser.RULE_opt_use); - try { - this.state = 926; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 38, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 924; - this.match(n1qlParser.USE); - this.state = 925; - this.use_options(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - use_options() { - let localctx = new Use_optionsContext(this, this._ctx, this.state); - this.enterRule(localctx, 112, n1qlParser.RULE_use_options); - try { - this.state = 943; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 39, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 928; - this.use_keys(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 929; - this.use_index(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 930; - this.join_hint(); - break; - - case 4: - this.enterOuterAlt(localctx, 4); - this.state = 931; - this.use_index(); - this.state = 932; - this.join_hint(); - break; - - case 5: - this.enterOuterAlt(localctx, 5); - this.state = 934; - this.join_hint(); - this.state = 935; - this.use_index(); - break; - - case 6: - this.enterOuterAlt(localctx, 6); - this.state = 937; - this.use_keys(); - this.state = 938; - this.join_hint(); - break; - - case 7: - this.enterOuterAlt(localctx, 7); - this.state = 940; - this.join_hint(); - this.state = 941; - this.use_keys(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - use_keys() { - let localctx = new Use_keysContext(this, this._ctx, this.state); - this.enterRule(localctx, 114, n1qlParser.RULE_use_keys); - try { - this.enterOuterAlt(localctx, 1); - this.state = 945; - this.opt_primary(); - this.state = 946; - this.match(n1qlParser.KEYS); - this.state = 947; - this.expr(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - use_index() { - let localctx = new Use_indexContext(this, this._ctx, this.state); - this.enterRule(localctx, 116, n1qlParser.RULE_use_index); - try { - this.enterOuterAlt(localctx, 1); - this.state = 949; - this.match(n1qlParser.INDEX); - this.state = 950; - this.match(n1qlParser.LPAREN); - this.state = 951; - this.index_refs(0); - this.state = 952; - this.match(n1qlParser.RPAREN); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - join_hint() { - let localctx = new Join_hintContext(this, this._ctx, this.state); - this.enterRule(localctx, 118, n1qlParser.RULE_join_hint); - try { - this.state = 960; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.HASH: - this.enterOuterAlt(localctx, 1); - this.state = 954; - this.match(n1qlParser.HASH); - this.state = 955; - this.match(n1qlParser.LPAREN); - this.state = 956; - this.use_hash_option(); - this.state = 957; - this.match(n1qlParser.RPAREN); - break; - case n1qlParser.NL: - this.enterOuterAlt(localctx, 2); - this.state = 959; - this.match(n1qlParser.NL); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_primary() { - let localctx = new Opt_primaryContext(this, this._ctx, this.state); - this.enterRule(localctx, 120, n1qlParser.RULE_opt_primary); - try { - this.state = 964; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.KEY: - case n1qlParser.KEYS: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.PRIMARY: - this.enterOuterAlt(localctx, 2); - this.state = 963; - this.match(n1qlParser.PRIMARY); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - index_refs(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new Index_refsContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 122; - this.enterRecursionRule(localctx, 122, n1qlParser.RULE_index_refs, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 967; - this.index_ref(); - this._ctx.stop = this._input.LT(-1); - this.state = 974; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 42, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new Index_refsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_index_refs); - this.state = 969; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 970; - this.match(n1qlParser.COMMA); - this.state = 971; - this.index_ref(); - } - this.state = 976; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 42, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - index_ref() { - let localctx = new Index_refContext(this, this._ctx, this.state); - this.enterRule(localctx, 124, n1qlParser.RULE_index_ref); - try { - this.enterOuterAlt(localctx, 1); - this.state = 977; - this.opt_index_name(); - this.state = 978; - this.opt_index_using(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - use_hash_option() { - let localctx = new Use_hash_optionContext(this, this._ctx, this.state); - this.enterRule(localctx, 126, n1qlParser.RULE_use_hash_option); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 980; - _la = this._input.LA(1); - if (!(_la === n1qlParser.BUILD || _la === n1qlParser.PROBE)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_use_del_upd() { - let localctx = new Opt_use_del_updContext(this, this._ctx, this.state); - this.enterRule(localctx, 128, n1qlParser.RULE_opt_use_del_upd); - try { - this.enterOuterAlt(localctx, 1); - this.state = 982; - this.opt_use(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_join_type() { - let localctx = new Opt_join_typeContext(this, this._ctx, this.state); - this.enterRule(localctx, 130, n1qlParser.RULE_opt_join_type); - try { - this.state = 988; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.FLATTEN: - case n1qlParser.JOIN: - case n1qlParser.NEST: - case n1qlParser.UNNEST: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.INNER: - this.enterOuterAlt(localctx, 2); - this.state = 985; - this.match(n1qlParser.INNER); - break; - case n1qlParser.LEFT: - this.enterOuterAlt(localctx, 3); - this.state = 986; - this.match(n1qlParser.LEFT); - this.state = 987; - this.opt_outer(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_outer() { - let localctx = new Opt_outerContext(this, this._ctx, this.state); - this.enterRule(localctx, 132, n1qlParser.RULE_opt_outer); - try { - this.state = 992; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.FLATTEN: - case n1qlParser.JOIN: - case n1qlParser.NEST: - case n1qlParser.UNNEST: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.OUTER: - this.enterOuterAlt(localctx, 2); - this.state = 991; - this.match(n1qlParser.OUTER); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - on_keys() { - let localctx = new On_keysContext(this, this._ctx, this.state); - this.enterRule(localctx, 134, n1qlParser.RULE_on_keys); - try { - this.enterOuterAlt(localctx, 1); - this.state = 994; - this.match(n1qlParser.ON); - this.state = 995; - this.opt_primary(); - this.state = 996; - this.match(n1qlParser.KEYS); - this.state = 997; - this.expr(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - on_key() { - let localctx = new On_keyContext(this, this._ctx, this.state); - this.enterRule(localctx, 136, n1qlParser.RULE_on_key); - try { - this.enterOuterAlt(localctx, 1); - this.state = 999; - this.match(n1qlParser.ON); - this.state = 1000; - this.opt_primary(); - this.state = 1001; - this.match(n1qlParser.KEY); - this.state = 1002; - this.expr(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_let() { - let localctx = new Opt_letContext(this, this._ctx, this.state); - this.enterRule(localctx, 138, n1qlParser.RULE_opt_let); - try { - this.state = 1006; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 45, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1005; - this.let_(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - let_() { - let localctx = new Let_Context(this, this._ctx, this.state); - this.enterRule(localctx, 140, n1qlParser.RULE_let_); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1008; - this.match(n1qlParser.LET_); - this.state = 1009; - this.bindings(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - bindings(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new BindingsContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 142; - this.enterRecursionRule(localctx, 142, n1qlParser.RULE_bindings, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1012; - this.binding(); - this._ctx.stop = this._input.LT(-1); - this.state = 1019; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 46, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new BindingsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_bindings); - this.state = 1014; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 1015; - this.match(n1qlParser.COMMA); - this.state = 1016; - this.binding(); - } - this.state = 1021; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 46, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - binding() { - let localctx = new BindingContext(this, this._ctx, this.state); - this.enterRule(localctx, 144, n1qlParser.RULE_binding); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1022; - this.alias(); - this.state = 1023; - this.match(n1qlParser.EQ); - this.state = 1024; - this.expr(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_with() { - let localctx = new Opt_withContext(this, this._ctx, this.state); - this.enterRule(localctx, 146, n1qlParser.RULE_opt_with); - try { - this.state = 1029; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.FROM: - case n1qlParser.SELECT: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.WITH: - this.enterOuterAlt(localctx, 2); - this.state = 1027; - this.match(n1qlParser.WITH); - this.state = 1028; - this.with_list(0); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - with_list(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new With_listContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 148; - this.enterRecursionRule(localctx, 148, n1qlParser.RULE_with_list, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1032; - this.with_term(); - this._ctx.stop = this._input.LT(-1); - this.state = 1039; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 48, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new With_listContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_with_list); - this.state = 1034; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 1035; - this.match(n1qlParser.COMMA); - this.state = 1036; - this.with_term(); - } - this.state = 1041; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 48, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - with_term() { - let localctx = new With_termContext(this, this._ctx, this.state); - this.enterRule(localctx, 150, n1qlParser.RULE_with_term); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1042; - this.alias(); - this.state = 1043; - this.match(n1qlParser.AS); - this.state = 1044; - this.paren_expr(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_where() { - let localctx = new Opt_whereContext(this, this._ctx, this.state); - this.enterRule(localctx, 152, n1qlParser.RULE_opt_where); - try { - this.state = 1048; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 49, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1047; - this.where(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - where() { - let localctx = new WhereContext(this, this._ctx, this.state); - this.enterRule(localctx, 154, n1qlParser.RULE_where); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1050; - this.match(n1qlParser.WHERE); - this.state = 1051; - this.expr(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_group() { - let localctx = new Opt_groupContext(this, this._ctx, this.state); - this.enterRule(localctx, 156, n1qlParser.RULE_opt_group); - try { - this.state = 1055; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 50, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1054; - this.group(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - group() { - let localctx = new GroupContext(this, this._ctx, this.state); - this.enterRule(localctx, 158, n1qlParser.RULE_group); - try { - this.state = 1064; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.GROUP: - this.enterOuterAlt(localctx, 1); - this.state = 1057; - this.match(n1qlParser.GROUP); - this.state = 1058; - this.match(n1qlParser.BY); - this.state = 1059; - this.group_terms(0); - this.state = 1060; - this.opt_letting(); - this.state = 1061; - this.opt_having(); - break; - case n1qlParser.LETTING: - this.enterOuterAlt(localctx, 2); - this.state = 1063; - this.letting(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - group_terms(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new Group_termsContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 160; - this.enterRecursionRule(localctx, 160, n1qlParser.RULE_group_terms, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1067; - this.group_term(); - this._ctx.stop = this._input.LT(-1); - this.state = 1074; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 52, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new Group_termsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_group_terms); - this.state = 1069; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 1070; - this.match(n1qlParser.COMMA); - this.state = 1071; - this.group_term(); - } - this.state = 1076; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 52, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - group_term() { - let localctx = new Group_termContext(this, this._ctx, this.state); - this.enterRule(localctx, 162, n1qlParser.RULE_group_term); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1077; - this.expr(0); - this.state = 1078; - this.opt_as_alias(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_letting() { - let localctx = new Opt_lettingContext(this, this._ctx, this.state); - this.enterRule(localctx, 164, n1qlParser.RULE_opt_letting); - try { - this.state = 1082; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 53, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1081; - this.letting(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - letting() { - let localctx = new LettingContext(this, this._ctx, this.state); - this.enterRule(localctx, 166, n1qlParser.RULE_letting); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1084; - this.match(n1qlParser.LETTING); - this.state = 1085; - this.bindings(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_having() { - let localctx = new Opt_havingContext(this, this._ctx, this.state); - this.enterRule(localctx, 168, n1qlParser.RULE_opt_having); - try { - this.state = 1089; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 54, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1088; - this.having(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - having() { - let localctx = new HavingContext(this, this._ctx, this.state); - this.enterRule(localctx, 170, n1qlParser.RULE_having); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1091; - this.match(n1qlParser.HAVING); - this.state = 1092; - this.expr(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_order_by() { - let localctx = new Opt_order_byContext(this, this._ctx, this.state); - this.enterRule(localctx, 172, n1qlParser.RULE_opt_order_by); - try { - this.state = 1096; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 55, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1095; - this.order_by(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - order_by() { - let localctx = new Order_byContext(this, this._ctx, this.state); - this.enterRule(localctx, 174, n1qlParser.RULE_order_by); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1098; - this.match(n1qlParser.ORDER); - this.state = 1099; - this.match(n1qlParser.BY); - this.state = 1100; - this.sort_terms(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - sort_terms(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new Sort_termsContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 176; - this.enterRecursionRule(localctx, 176, n1qlParser.RULE_sort_terms, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1103; - this.sort_term(); - this._ctx.stop = this._input.LT(-1); - this.state = 1110; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 56, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new Sort_termsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_sort_terms); - this.state = 1105; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 1106; - this.match(n1qlParser.COMMA); - this.state = 1107; - this.sort_term(); - } - this.state = 1112; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 56, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - sort_term() { - let localctx = new Sort_termContext(this, this._ctx, this.state); - this.enterRule(localctx, 178, n1qlParser.RULE_sort_term); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1113; - this.expr(0); - this.state = 1114; - this.opt_dir(); - this.state = 1115; - this.opt_order_nulls(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_dir() { - let localctx = new Opt_dirContext(this, this._ctx, this.state); - this.enterRule(localctx, 180, n1qlParser.RULE_opt_dir); - try { - this.state = 1119; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 57, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1118; - this.dir(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - dir() { - let localctx = new DirContext(this, this._ctx, this.state); - this.enterRule(localctx, 182, n1qlParser.RULE_dir); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 1121; - _la = this._input.LA(1); - if (!(_la === n1qlParser.ASC || _la === n1qlParser.DESC)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_order_nulls() { - let localctx = new Opt_order_nullsContext(this, this._ctx, this.state); - this.enterRule(localctx, 184, n1qlParser.RULE_opt_order_nulls); - try { - this.state = 1127; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 58, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1124; - this.nulls(); - this.state = 1125; - this.first_last(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - first_last() { - let localctx = new First_lastContext(this, this._ctx, this.state); - this.enterRule(localctx, 186, n1qlParser.RULE_first_last); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 1129; - _la = this._input.LA(1); - if (!(_la === n1qlParser.FIRST || _la === n1qlParser.LAST)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - nulls() { - let localctx = new NullsContext(this, this._ctx, this.state); - this.enterRule(localctx, 188, n1qlParser.RULE_nulls); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1131; - this.match(n1qlParser.NULLS); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_limit() { - let localctx = new Opt_limitContext(this, this._ctx, this.state); - this.enterRule(localctx, 190, n1qlParser.RULE_opt_limit); - try { - this.state = 1135; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 59, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1134; - this.limit(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - limit() { - let localctx = new LimitContext(this, this._ctx, this.state); - this.enterRule(localctx, 192, n1qlParser.RULE_limit); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1137; - this.match(n1qlParser.LIMIT); - this.state = 1138; - this.expr(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_offset() { - let localctx = new Opt_offsetContext(this, this._ctx, this.state); - this.enterRule(localctx, 194, n1qlParser.RULE_opt_offset); - try { - this.state = 1142; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 60, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1141; - this.offset(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - offset() { - let localctx = new OffsetContext(this, this._ctx, this.state); - this.enterRule(localctx, 196, n1qlParser.RULE_offset); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1144; - this.match(n1qlParser.OFFSET); - this.state = 1145; - this.expr(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - insert() { - let localctx = new InsertContext(this, this._ctx, this.state); - this.enterRule(localctx, 198, n1qlParser.RULE_insert); - try { - this.state = 1163; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 61, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1147; - this.match(n1qlParser.INSERT); - this.state = 1148; - this.match(n1qlParser.INTO); - this.state = 1149; - this.keyspace_ref(); - this.state = 1150; - this.opt_values_header(); - this.state = 1151; - this.values_list(0); - this.state = 1152; - this.opt_returning(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1154; - this.match(n1qlParser.INSERT); - this.state = 1155; - this.match(n1qlParser.INTO); - this.state = 1156; - this.keyspace_ref(); - this.state = 1157; - this.match(n1qlParser.LPAREN); - this.state = 1158; - this.key_val_options_expr_header(); - this.state = 1159; - this.match(n1qlParser.RPAREN); - this.state = 1160; - this.fullselect(); - this.state = 1161; - this.opt_returning(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - simple_keyspace_ref() { - let localctx = new Simple_keyspace_refContext(this, this._ctx, this.state); - this.enterRule(localctx, 200, n1qlParser.RULE_simple_keyspace_ref); - try { - this.state = 1178; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 62, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1165; - this.keyspace_name(); - this.state = 1166; - this.opt_as_alias(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1168; - this.keyspace_path(); - this.state = 1169; - this.opt_as_alias(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1171; - this.bucket_name(); - this.state = 1172; - this.match(n1qlParser.DOT); - this.state = 1173; - this.scope_name(); - this.state = 1174; - this.match(n1qlParser.DOT); - this.state = 1175; - this.keyspace_name(); - this.state = 1176; - this.opt_as_alias(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - keyspace_ref() { - let localctx = new Keyspace_refContext(this, this._ctx, this.state); - this.enterRule(localctx, 202, n1qlParser.RULE_keyspace_ref); - try { - this.state = 1184; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.SYSTEM: - case n1qlParser.IDENT: - this.enterOuterAlt(localctx, 1); - this.state = 1180; - this.simple_keyspace_ref(); - break; - case n1qlParser.NAMED_PARAM: - case n1qlParser.POSITIONAL_PARAM: - case n1qlParser.NEXT_PARAM: - this.enterOuterAlt(localctx, 2); - this.state = 1181; - this.param_expr(); - this.state = 1182; - this.opt_as_alias(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_values_header() { - let localctx = new Opt_values_headerContext(this, this._ctx, this.state); - this.enterRule(localctx, 204, n1qlParser.RULE_opt_values_header); - try { - this.state = 1203; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 64, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1187; - this.match(n1qlParser.LPAREN); - this.state = 1188; - this.opt_primary(); - this.state = 1189; - this.match(n1qlParser.KEY); - this.state = 1190; - this.match(n1qlParser.COMMA); - this.state = 1191; - this.match(n1qlParser.VALUE); - this.state = 1192; - this.match(n1qlParser.RPAREN); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1194; - this.match(n1qlParser.LPAREN); - this.state = 1195; - this.opt_primary(); - this.state = 1196; - this.match(n1qlParser.KEY); - this.state = 1197; - this.match(n1qlParser.COMMA); - this.state = 1198; - this.match(n1qlParser.VALUE); - this.state = 1199; - this.match(n1qlParser.COMMA); - this.state = 1200; - this.match(n1qlParser.OPTIONS); - this.state = 1201; - this.match(n1qlParser.RPAREN); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - key() { - let localctx = new KeyContext(this, this._ctx, this.state); - this.enterRule(localctx, 206, n1qlParser.RULE_key); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1205; - this.opt_primary(); - this.state = 1206; - this.match(n1qlParser.KEY); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - values_list(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new Values_listContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 208; - this.enterRecursionRule(localctx, 208, n1qlParser.RULE_values_list, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1209; - this.values(); - this._ctx.stop = this._input.LT(-1); - this.state = 1216; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 65, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new Values_listContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_values_list); - this.state = 1211; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 1212; - this.match(n1qlParser.COMMA); - this.state = 1213; - this.next_values(); - } - this.state = 1218; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 65, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - values() { - let localctx = new ValuesContext(this, this._ctx, this.state); - this.enterRule(localctx, 210, n1qlParser.RULE_values); - try { - this.state = 1223; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 66, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1219; - this.match(n1qlParser.VALUES); - this.state = 1220; - this.key_val_expr(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1221; - this.match(n1qlParser.VALUES); - this.state = 1222; - this.key_val_options_expr(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - next_values() { - let localctx = new Next_valuesContext(this, this._ctx, this.state); - this.enterRule(localctx, 212, n1qlParser.RULE_next_values); - try { - this.state = 1228; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 67, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1225; - this.values(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1226; - this.key_val_expr(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1227; - this.key_val_options_expr(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - key_val_expr() { - let localctx = new Key_val_exprContext(this, this._ctx, this.state); - this.enterRule(localctx, 214, n1qlParser.RULE_key_val_expr); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1230; - this.match(n1qlParser.LPAREN); - this.state = 1231; - this.expr(0); - this.state = 1232; - this.match(n1qlParser.COMMA); - this.state = 1233; - this.expr(0); - this.state = 1234; - this.match(n1qlParser.RPAREN); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - key_val_options_expr() { - let localctx = new Key_val_options_exprContext(this, this._ctx, this.state); - this.enterRule(localctx, 216, n1qlParser.RULE_key_val_options_expr); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1236; - this.match(n1qlParser.LPAREN); - this.state = 1237; - this.expr(0); - this.state = 1238; - this.match(n1qlParser.COMMA); - this.state = 1239; - this.expr(0); - this.state = 1240; - this.match(n1qlParser.COMMA); - this.state = 1241; - this.expr(0); - this.state = 1242; - this.match(n1qlParser.RPAREN); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_returning() { - let localctx = new Opt_returningContext(this, this._ctx, this.state); - this.enterRule(localctx, 218, n1qlParser.RULE_opt_returning); - try { - this.state = 1246; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 68, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1245; - this.returning(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - returning() { - let localctx = new ReturningContext(this, this._ctx, this.state); - this.enterRule(localctx, 220, n1qlParser.RULE_returning); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1248; - this.match(n1qlParser.RETURNING); - this.state = 1249; - this.returns_(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - returns_() { - let localctx = new Returns_Context(this, this._ctx, this.state); - this.enterRule(localctx, 222, n1qlParser.RULE_returns_); - try { - this.state = 1255; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.STR: - case n1qlParser.INT: - case n1qlParser.NUM: - case n1qlParser.MINUS: - case n1qlParser.STAR: - case n1qlParser.LPAREN: - case n1qlParser.LBRACE: - case n1qlParser.LBRACKET: - case n1qlParser.ANY: - case n1qlParser.ARRAY: - case n1qlParser.CASE: - case n1qlParser.CORRELATED: - case n1qlParser.COVER: - case n1qlParser.EVERY: - case n1qlParser.EXISTS: - case n1qlParser.FALSE: - case n1qlParser.FIRST: - case n1qlParser.MISSING: - case n1qlParser.NOT: - case n1qlParser.NTH_VALUE: - case n1qlParser.NULL: - case n1qlParser.OBJECT: - case n1qlParser.REPLACE: - case n1qlParser.SELF: - case n1qlParser.SOME: - case n1qlParser.SYSTEM: - case n1qlParser.TRUE: - case n1qlParser.IDENT_ICASE: - case n1qlParser.IDENT: - case n1qlParser.NAMED_PARAM: - case n1qlParser.POSITIONAL_PARAM: - case n1qlParser.NEXT_PARAM: - this.enterOuterAlt(localctx, 1); - this.state = 1251; - this.projects(0); - break; - case n1qlParser.ELEMENT: - case n1qlParser.RAW: - case n1qlParser.VALUE: - this.enterOuterAlt(localctx, 2); - this.state = 1252; - this.raw(); - this.state = 1253; - this.expr(0); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - key_expr_header() { - let localctx = new Key_expr_headerContext(this, this._ctx, this.state); - this.enterRule(localctx, 224, n1qlParser.RULE_key_expr_header); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1257; - this.key(); - this.state = 1258; - this.expr(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - value_expr_header() { - let localctx = new Value_expr_headerContext(this, this._ctx, this.state); - this.enterRule(localctx, 226, n1qlParser.RULE_value_expr_header); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1260; - this.match(n1qlParser.VALUE); - this.state = 1261; - this.expr(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - options_expr_header() { - let localctx = new Options_expr_headerContext(this, this._ctx, this.state); - this.enterRule(localctx, 228, n1qlParser.RULE_options_expr_header); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1263; - this.match(n1qlParser.OPTIONS); - this.state = 1264; - this.expr(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - key_val_options_expr_header() { - let localctx = new Key_val_options_expr_headerContext(this, this._ctx, this.state); - this.enterRule(localctx, 230, n1qlParser.RULE_key_val_options_expr_header); - try { - this.state = 1281; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 70, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1266; - this.key_expr_header(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1267; - this.key_expr_header(); - this.state = 1268; - this.match(n1qlParser.COMMA); - this.state = 1269; - this.value_expr_header(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1271; - this.key_expr_header(); - this.state = 1272; - this.match(n1qlParser.COMMA); - this.state = 1273; - this.value_expr_header(); - this.state = 1274; - this.match(n1qlParser.COMMA); - this.state = 1275; - this.options_expr_header(); - break; - - case 4: - this.enterOuterAlt(localctx, 4); - this.state = 1277; - this.key_expr_header(); - this.state = 1278; - this.match(n1qlParser.COMMA); - this.state = 1279; - this.options_expr_header(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - upsert() { - let localctx = new UpsertContext(this, this._ctx, this.state); - this.enterRule(localctx, 232, n1qlParser.RULE_upsert); - try { - this.state = 1299; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 71, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1283; - this.match(n1qlParser.UPSERT); - this.state = 1284; - this.match(n1qlParser.INTO); - this.state = 1285; - this.keyspace_ref(); - this.state = 1286; - this.opt_values_header(); - this.state = 1287; - this.values_list(0); - this.state = 1288; - this.opt_returning(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1290; - this.match(n1qlParser.UPSERT); - this.state = 1291; - this.match(n1qlParser.INTO); - this.state = 1292; - this.keyspace_ref(); - this.state = 1293; - this.match(n1qlParser.LPAREN); - this.state = 1294; - this.key_val_options_expr_header(); - this.state = 1295; - this.match(n1qlParser.RPAREN); - this.state = 1296; - this.fullselect(); - this.state = 1297; - this.opt_returning(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - delete_() { - let localctx = new Delete_Context(this, this._ctx, this.state); - this.enterRule(localctx, 234, n1qlParser.RULE_delete_); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1301; - this.match(n1qlParser.DELETE_); - this.state = 1302; - this.match(n1qlParser.FROM); - this.state = 1303; - this.keyspace_ref(); - this.state = 1304; - this.opt_use_del_upd(); - this.state = 1305; - this.opt_where(); - this.state = 1306; - this.opt_limit(); - this.state = 1307; - this.opt_returning(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - update() { - let localctx = new UpdateContext(this, this._ctx, this.state); - this.enterRule(localctx, 236, n1qlParser.RULE_update); - try { - this.state = 1334; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 72, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1309; - this.match(n1qlParser.UPDATE); - this.state = 1310; - this.keyspace_ref(); - this.state = 1311; - this.opt_use_del_upd(); - this.state = 1312; - this.set(); - this.state = 1313; - this.unset(); - this.state = 1314; - this.opt_where(); - this.state = 1315; - this.opt_limit(); - this.state = 1316; - this.opt_returning(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1318; - this.match(n1qlParser.UPDATE); - this.state = 1319; - this.keyspace_ref(); - this.state = 1320; - this.opt_use_del_upd(); - this.state = 1321; - this.set(); - this.state = 1322; - this.opt_where(); - this.state = 1323; - this.opt_limit(); - this.state = 1324; - this.opt_returning(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1326; - this.match(n1qlParser.UPDATE); - this.state = 1327; - this.keyspace_ref(); - this.state = 1328; - this.opt_use_del_upd(); - this.state = 1329; - this.unset(); - this.state = 1330; - this.opt_where(); - this.state = 1331; - this.opt_limit(); - this.state = 1332; - this.opt_returning(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - set() { - let localctx = new SetContext(this, this._ctx, this.state); - this.enterRule(localctx, 238, n1qlParser.RULE_set); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1336; - this.match(n1qlParser.SET); - this.state = 1337; - this.set_terms(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - set_terms(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new Set_termsContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 240; - this.enterRecursionRule(localctx, 240, n1qlParser.RULE_set_terms, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1340; - this.set_term(); - this._ctx.stop = this._input.LT(-1); - this.state = 1347; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 73, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new Set_termsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_set_terms); - this.state = 1342; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 1343; - this.match(n1qlParser.COMMA); - this.state = 1344; - this.set_term(); - } - this.state = 1349; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 73, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - set_term() { - let localctx = new Set_termContext(this, this._ctx, this.state); - this.enterRule(localctx, 242, n1qlParser.RULE_set_term); - try { - this.state = 1361; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 74, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1350; - this.path(0); - this.state = 1351; - this.match(n1qlParser.EQ); - this.state = 1352; - this.expr(0); - this.state = 1353; - this.opt_update_for(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1355; - this.function_meta_expr(); - this.state = 1356; - this.match(n1qlParser.DOT); - this.state = 1357; - this.path(0); - this.state = 1358; - this.match(n1qlParser.EQ); - this.state = 1359; - this.expr(0); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - function_meta_expr() { - let localctx = new Function_meta_exprContext(this, this._ctx, this.state); - this.enterRule(localctx, 244, n1qlParser.RULE_function_meta_expr); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1363; - this.function_name(); - this.state = 1364; - this.match(n1qlParser.LPAREN); - this.state = 1365; - this.opt_exprs(); - this.state = 1366; - this.match(n1qlParser.RPAREN); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_update_for() { - let localctx = new Opt_update_forContext(this, this._ctx, this.state); - this.enterRule(localctx, 246, n1qlParser.RULE_opt_update_for); - try { - this.state = 1370; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 75, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1369; - this.update_for(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - update_for() { - let localctx = new Update_forContext(this, this._ctx, this.state); - this.enterRule(localctx, 248, n1qlParser.RULE_update_for); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1372; - this.update_dimensions(0); - this.state = 1373; - this.opt_when(); - this.state = 1374; - this.match(n1qlParser.END); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - update_dimensions(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new Update_dimensionsContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 250; - this.enterRecursionRule(localctx, 250, n1qlParser.RULE_update_dimensions, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1377; - this.match(n1qlParser.FOR); - this.state = 1378; - this.update_dimension(0); - this._ctx.stop = this._input.LT(-1); - this.state = 1385; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 76, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new Update_dimensionsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_update_dimensions); - this.state = 1380; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 1381; - this.match(n1qlParser.FOR); - this.state = 1382; - this.update_dimension(0); - } - this.state = 1387; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 76, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - update_dimension(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new Update_dimensionContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 252; - this.enterRecursionRule(localctx, 252, n1qlParser.RULE_update_dimension, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1389; - this.update_binding(); - this._ctx.stop = this._input.LT(-1); - this.state = 1396; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 77, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new Update_dimensionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_update_dimension); - this.state = 1391; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 1392; - this.match(n1qlParser.COMMA); - this.state = 1393; - this.update_binding(); - } - this.state = 1398; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 77, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - update_binding() { - let localctx = new Update_bindingContext(this, this._ctx, this.state); - this.enterRule(localctx, 254, n1qlParser.RULE_update_binding); - try { - this.state = 1419; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 78, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1399; - this.variable(); - this.state = 1400; - this.match(n1qlParser.IN); - this.state = 1401; - this.expr(0); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1403; - this.variable(); - this.state = 1404; - this.match(n1qlParser.WITHIN); - this.state = 1405; - this.expr(0); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1407; - this.variable(); - this.state = 1408; - this.match(n1qlParser.COLON); - this.state = 1409; - this.variable(); - this.state = 1410; - this.match(n1qlParser.IN); - this.state = 1411; - this.expr(0); - break; - - case 4: - this.enterOuterAlt(localctx, 4); - this.state = 1413; - this.variable(); - this.state = 1414; - this.match(n1qlParser.COLON); - this.state = 1415; - this.variable(); - this.state = 1416; - this.match(n1qlParser.WITHIN); - this.state = 1417; - this.expr(0); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - variable() { - let localctx = new VariableContext(this, this._ctx, this.state); - this.enterRule(localctx, 256, n1qlParser.RULE_variable); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1421; - this.match(n1qlParser.IDENT); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_when() { - let localctx = new Opt_whenContext(this, this._ctx, this.state); - this.enterRule(localctx, 258, n1qlParser.RULE_opt_when); - try { - this.state = 1426; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.END: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.WHEN: - this.enterOuterAlt(localctx, 2); - this.state = 1424; - this.match(n1qlParser.WHEN); - this.state = 1425; - this.expr(0); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - unset() { - let localctx = new UnsetContext(this, this._ctx, this.state); - this.enterRule(localctx, 260, n1qlParser.RULE_unset); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1428; - this.match(n1qlParser.UNSET); - this.state = 1429; - this.unset_terms(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - unset_terms(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new Unset_termsContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 262; - this.enterRecursionRule(localctx, 262, n1qlParser.RULE_unset_terms, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1432; - this.unset_term(); - this._ctx.stop = this._input.LT(-1); - this.state = 1439; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 80, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new Unset_termsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_unset_terms); - this.state = 1434; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 1435; - this.match(n1qlParser.COMMA); - this.state = 1436; - this.unset_term(); - } - this.state = 1441; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 80, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - unset_term() { - let localctx = new Unset_termContext(this, this._ctx, this.state); - this.enterRule(localctx, 264, n1qlParser.RULE_unset_term); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1442; - this.path(0); - this.state = 1443; - this.opt_update_for(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - merge() { - let localctx = new MergeContext(this, this._ctx, this.state); - this.enterRule(localctx, 266, n1qlParser.RULE_merge); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1445; - this.match(n1qlParser.MERGE); - this.state = 1446; - this.match(n1qlParser.INTO); - this.state = 1447; - this.simple_keyspace_ref(); - this.state = 1448; - this.opt_use_merge(); - this.state = 1449; - this.match(n1qlParser.USING); - this.state = 1450; - this.simple_from_term(); - this.state = 1451; - this.match(n1qlParser.ON); - this.state = 1452; - this.opt_key(); - this.state = 1453; - this.expr(0); - this.state = 1454; - this.merge_actions(); - this.state = 1455; - this.opt_limit(); - this.state = 1456; - this.opt_returning(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_use_merge() { - let localctx = new Opt_use_mergeContext(this, this._ctx, this.state); - this.enterRule(localctx, 268, n1qlParser.RULE_opt_use_merge); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1458; - this.opt_use(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_key() { - let localctx = new Opt_keyContext(this, this._ctx, this.state); - this.enterRule(localctx, 270, n1qlParser.RULE_opt_key); - try { - this.state = 1462; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.STR: - case n1qlParser.INT: - case n1qlParser.NUM: - case n1qlParser.MINUS: - case n1qlParser.LPAREN: - case n1qlParser.LBRACE: - case n1qlParser.LBRACKET: - case n1qlParser.ANY: - case n1qlParser.ARRAY: - case n1qlParser.CASE: - case n1qlParser.CORRELATED: - case n1qlParser.COVER: - case n1qlParser.EVERY: - case n1qlParser.EXISTS: - case n1qlParser.FALSE: - case n1qlParser.FIRST: - case n1qlParser.MISSING: - case n1qlParser.NOT: - case n1qlParser.NTH_VALUE: - case n1qlParser.NULL: - case n1qlParser.OBJECT: - case n1qlParser.REPLACE: - case n1qlParser.SELF: - case n1qlParser.SOME: - case n1qlParser.SYSTEM: - case n1qlParser.TRUE: - case n1qlParser.IDENT_ICASE: - case n1qlParser.IDENT: - case n1qlParser.NAMED_PARAM: - case n1qlParser.POSITIONAL_PARAM: - case n1qlParser.NEXT_PARAM: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.KEY: - case n1qlParser.PRIMARY: - this.enterOuterAlt(localctx, 2); - this.state = 1461; - this.key(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - merge_actions() { - let localctx = new Merge_actionsContext(this, this._ctx, this.state); - this.enterRule(localctx, 272, n1qlParser.RULE_merge_actions); - try { - this.state = 1485; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 82, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1465; - this.match(n1qlParser.WHEN); - this.state = 1466; - this.match(n1qlParser.MATCHED); - this.state = 1467; - this.match(n1qlParser.THEN); - this.state = 1468; - this.match(n1qlParser.UPDATE); - this.state = 1469; - this.merge_update(); - this.state = 1470; - this.opt_merge_delete_insert(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1472; - this.match(n1qlParser.WHEN); - this.state = 1473; - this.match(n1qlParser.MATCHED); - this.state = 1474; - this.match(n1qlParser.THEN); - this.state = 1475; - this.match(n1qlParser.DELETE_); - this.state = 1476; - this.merge_delete(); - this.state = 1477; - this.opt_merge_insert(); - break; - - case 4: - this.enterOuterAlt(localctx, 4); - this.state = 1479; - this.match(n1qlParser.WHEN); - this.state = 1480; - this.match(n1qlParser.NOT); - this.state = 1481; - this.match(n1qlParser.MATCHED); - this.state = 1482; - this.match(n1qlParser.THEN); - this.state = 1483; - this.match(n1qlParser.INSERT); - this.state = 1484; - this.merge_insert(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_merge_delete_insert() { - let localctx = new Opt_merge_delete_insertContext(this, this._ctx, this.state); - this.enterRule(localctx, 274, n1qlParser.RULE_opt_merge_delete_insert); - try { - this.state = 1501; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 83, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1488; - this.match(n1qlParser.WHEN); - this.state = 1489; - this.match(n1qlParser.MATCHED); - this.state = 1490; - this.match(n1qlParser.THEN); - this.state = 1491; - this.match(n1qlParser.DELETE_); - this.state = 1492; - this.merge_delete(); - this.state = 1493; - this.opt_merge_insert(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1495; - this.match(n1qlParser.WHEN); - this.state = 1496; - this.match(n1qlParser.NOT); - this.state = 1497; - this.match(n1qlParser.MATCHED); - this.state = 1498; - this.match(n1qlParser.THEN); - this.state = 1499; - this.match(n1qlParser.INSERT); - this.state = 1500; - this.merge_insert(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_merge_insert() { - let localctx = new Opt_merge_insertContext(this, this._ctx, this.state); - this.enterRule(localctx, 276, n1qlParser.RULE_opt_merge_insert); - try { - this.state = 1510; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 84, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1504; - this.match(n1qlParser.WHEN); - this.state = 1505; - this.match(n1qlParser.NOT); - this.state = 1506; - this.match(n1qlParser.MATCHED); - this.state = 1507; - this.match(n1qlParser.THEN); - this.state = 1508; - this.match(n1qlParser.INSERT); - this.state = 1509; - this.merge_insert(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - merge_update() { - let localctx = new Merge_updateContext(this, this._ctx, this.state); - this.enterRule(localctx, 278, n1qlParser.RULE_merge_update); - try { - this.state = 1522; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 85, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1512; - this.set(); - this.state = 1513; - this.opt_where(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1515; - this.set(); - this.state = 1516; - this.unset(); - this.state = 1517; - this.opt_where(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1519; - this.unset(); - this.state = 1520; - this.opt_where(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - merge_delete() { - let localctx = new Merge_deleteContext(this, this._ctx, this.state); - this.enterRule(localctx, 280, n1qlParser.RULE_merge_delete); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1524; - this.opt_where(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - merge_insert() { - let localctx = new Merge_insertContext(this, this._ctx, this.state); - this.enterRule(localctx, 282, n1qlParser.RULE_merge_insert); - try { - this.state = 1540; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 86, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1526; - this.expr(0); - this.state = 1527; - this.opt_where(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1529; - this.key_val_expr(); - this.state = 1530; - this.opt_where(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1532; - this.key_val_options_expr(); - this.state = 1533; - this.opt_where(); - break; - - case 4: - this.enterOuterAlt(localctx, 4); - this.state = 1535; - this.match(n1qlParser.LPAREN); - this.state = 1536; - this.key_val_options_expr_header(); - this.state = 1537; - this.match(n1qlParser.RPAREN); - this.state = 1538; - this.opt_where(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - grant_role() { - let localctx = new Grant_roleContext(this, this._ctx, this.state); - this.enterRule(localctx, 284, n1qlParser.RULE_grant_role); - try { - this.state = 1554; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 87, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1542; - this.match(n1qlParser.GRANT); - this.state = 1543; - this.role_list(0); - this.state = 1544; - this.match(n1qlParser.TO); - this.state = 1545; - this.user_list(0); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1547; - this.match(n1qlParser.GRANT); - this.state = 1548; - this.role_list(0); - this.state = 1549; - this.match(n1qlParser.ON); - this.state = 1550; - this.keyspace_scope_list(0); - this.state = 1551; - this.match(n1qlParser.TO); - this.state = 1552; - this.user_list(0); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - role_list(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new Role_listContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 286; - this.enterRecursionRule(localctx, 286, n1qlParser.RULE_role_list, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1557; - this.role_name(); - this._ctx.stop = this._input.LT(-1); - this.state = 1564; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 88, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new Role_listContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_role_list); - this.state = 1559; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 1560; - this.match(n1qlParser.COMMA); - this.state = 1561; - this.role_name(); - } - this.state = 1566; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 88, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - role_name() { - let localctx = new Role_nameContext(this, this._ctx, this.state); - this.enterRule(localctx, 288, n1qlParser.RULE_role_name); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 1567; - _la = this._input.LA(1); - if ( - !( - _la === n1qlParser.DELETE_ || - _la === n1qlParser.INSERT || - _la === n1qlParser.SELECT || - _la === n1qlParser.UPDATE || - _la === n1qlParser.IDENT - ) - ) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - keyspace_scope_list(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new Keyspace_scope_listContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 290; - this.enterRecursionRule(localctx, 290, n1qlParser.RULE_keyspace_scope_list, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1570; - this.keyspace_scope(); - this._ctx.stop = this._input.LT(-1); - this.state = 1577; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 89, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new Keyspace_scope_listContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_keyspace_scope_list); - this.state = 1572; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 1573; - this.match(n1qlParser.COMMA); - this.state = 1574; - this.keyspace_scope(); - } - this.state = 1579; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 89, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - keyspace_scope() { - let localctx = new Keyspace_scopeContext(this, this._ctx, this.state); - this.enterRule(localctx, 292, n1qlParser.RULE_keyspace_scope); - try { - this.state = 1606; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 90, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1580; - this.keyspace_name(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1581; - this.namespace_name(); - this.state = 1582; - this.keyspace_name(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1584; - this.namespace_name(); - this.state = 1585; - this.bucket_name(); - this.state = 1586; - this.match(n1qlParser.DOT); - this.state = 1587; - this.scope_name(); - this.state = 1588; - this.match(n1qlParser.DOT); - this.state = 1589; - this.keyspace_name(); - break; - - case 4: - this.enterOuterAlt(localctx, 4); - this.state = 1591; - this.bucket_name(); - this.state = 1592; - this.match(n1qlParser.DOT); - this.state = 1593; - this.scope_name(); - this.state = 1594; - this.match(n1qlParser.DOT); - this.state = 1595; - this.keyspace_name(); - break; - - case 5: - this.enterOuterAlt(localctx, 5); - this.state = 1597; - this.namespace_name(); - this.state = 1598; - this.bucket_name(); - this.state = 1599; - this.match(n1qlParser.DOT); - this.state = 1600; - this.scope_name(); - break; - - case 6: - this.enterOuterAlt(localctx, 6); - this.state = 1602; - this.bucket_name(); - this.state = 1603; - this.match(n1qlParser.DOT); - this.state = 1604; - this.scope_name(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - user_list(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new User_listContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 294; - this.enterRecursionRule(localctx, 294, n1qlParser.RULE_user_list, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1609; - this.user(); - this._ctx.stop = this._input.LT(-1); - this.state = 1616; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 91, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new User_listContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_user_list); - this.state = 1611; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 1612; - this.match(n1qlParser.COMMA); - this.state = 1613; - this.user(); - } - this.state = 1618; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 91, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - user() { - let localctx = new UserContext(this, this._ctx, this.state); - this.enterRule(localctx, 296, n1qlParser.RULE_user); - try { - this.state = 1623; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 92, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1619; - this.match(n1qlParser.IDENT); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1620; - this.match(n1qlParser.IDENT); - this.state = 1621; - this.match(n1qlParser.COLON); - this.state = 1622; - this.match(n1qlParser.IDENT); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - revoke_role() { - let localctx = new Revoke_roleContext(this, this._ctx, this.state); - this.enterRule(localctx, 298, n1qlParser.RULE_revoke_role); - try { - this.state = 1637; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 93, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1625; - this.match(n1qlParser.REVOKE); - this.state = 1626; - this.role_list(0); - this.state = 1627; - this.match(n1qlParser.FROM); - this.state = 1628; - this.user_list(0); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1630; - this.match(n1qlParser.REVOKE); - this.state = 1631; - this.role_list(0); - this.state = 1632; - this.match(n1qlParser.ON); - this.state = 1633; - this.keyspace_scope_list(0); - this.state = 1634; - this.match(n1qlParser.FROM); - this.state = 1635; - this.user_list(0); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - create_scope() { - let localctx = new Create_scopeContext(this, this._ctx, this.state); - this.enterRule(localctx, 300, n1qlParser.RULE_create_scope); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1639; - this.match(n1qlParser.CREATE); - this.state = 1640; - this.match(n1qlParser.SCOPE); - this.state = 1641; - this.named_scope_ref(); - this.state = 1643; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 94, this._ctx); - if (la_ === 1) { - this.state = 1642; - this.if_not_exists(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - drop_scope() { - let localctx = new Drop_scopeContext(this, this._ctx, this.state); - this.enterRule(localctx, 302, n1qlParser.RULE_drop_scope); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1645; - this.match(n1qlParser.DROP); - this.state = 1646; - this.match(n1qlParser.SCOPE); - this.state = 1647; - this.named_scope_ref(); - this.state = 1649; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 95, this._ctx); - if (la_ === 1) { - this.state = 1648; - this.if_exists(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - create_collection() { - let localctx = new Create_collectionContext(this, this._ctx, this.state); - this.enterRule(localctx, 304, n1qlParser.RULE_create_collection); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1651; - this.match(n1qlParser.CREATE); - this.state = 1652; - this.match(n1qlParser.COLLECTION); - this.state = 1653; - this.named_keyspace_ref(); - this.state = 1655; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 96, this._ctx); - if (la_ === 1) { - this.state = 1654; - this.if_not_exists(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - drop_collection() { - let localctx = new Drop_collectionContext(this, this._ctx, this.state); - this.enterRule(localctx, 306, n1qlParser.RULE_drop_collection); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1657; - this.match(n1qlParser.DROP); - this.state = 1658; - this.match(n1qlParser.COLLECTION); - this.state = 1659; - this.named_keyspace_ref(); - this.state = 1661; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 97, this._ctx); - if (la_ === 1) { - this.state = 1660; - this.if_exists(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - flush_collection() { - let localctx = new Flush_collectionContext(this, this._ctx, this.state); - this.enterRule(localctx, 308, n1qlParser.RULE_flush_collection); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1663; - this.flush_or_truncate(); - this.state = 1664; - this.match(n1qlParser.COLLECTION); - this.state = 1665; - this.named_keyspace_ref(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - flush_or_truncate() { - let localctx = new Flush_or_truncateContext(this, this._ctx, this.state); - this.enterRule(localctx, 310, n1qlParser.RULE_flush_or_truncate); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 1667; - _la = this._input.LA(1); - if (!(_la === n1qlParser.FLUSH || _la === n1qlParser.TRUNCATE)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - create_index() { - let localctx = new Create_indexContext(this, this._ctx, this.state); - this.enterRule(localctx, 312, n1qlParser.RULE_create_index); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1669; - this.match(n1qlParser.CREATE); - this.state = 1670; - this.match(n1qlParser.INDEX); - this.state = 1671; - this.index_name(); - this.state = 1672; - this.match(n1qlParser.ON); - this.state = 1673; - this.named_keyspace_ref(); - this.state = 1674; - this.match(n1qlParser.LPAREN); - this.state = 1675; - this.index_terms(0); - this.state = 1676; - this.match(n1qlParser.RPAREN); - this.state = 1677; - this.index_partition(); - this.state = 1678; - this.index_where(); - this.state = 1679; - this.opt_index_using(); - this.state = 1680; - this.opt_index_with(); - this.state = 1682; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 98, this._ctx); - if (la_ === 1) { - this.state = 1681; - this.if_not_exists(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - create_primary_index() { - let localctx = new Create_primary_indexContext(this, this._ctx, this.state); - this.enterRule(localctx, 314, n1qlParser.RULE_create_primary_index); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1684; - this.match(n1qlParser.CREATE); - this.state = 1685; - this.match(n1qlParser.PRIMARY); - this.state = 1686; - this.match(n1qlParser.INDEX); - this.state = 1687; - this.opt_primary_name(); - this.state = 1688; - this.match(n1qlParser.ON); - this.state = 1689; - this.named_keyspace_ref(); - this.state = 1690; - this.index_partition(); - this.state = 1691; - this.opt_index_using(); - this.state = 1692; - this.opt_index_with(); - this.state = 1694; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 99, this._ctx); - if (la_ === 1) { - this.state = 1693; - this.if_not_exists(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_primary_name() { - let localctx = new Opt_primary_nameContext(this, this._ctx, this.state); - this.enterRule(localctx, 316, n1qlParser.RULE_opt_primary_name); - try { - this.state = 1698; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.ON: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.IDENT: - this.enterOuterAlt(localctx, 2); - this.state = 1697; - this.index_name(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - index_name() { - let localctx = new Index_nameContext(this, this._ctx, this.state); - this.enterRule(localctx, 318, n1qlParser.RULE_index_name); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1700; - this.match(n1qlParser.IDENT); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_index_name() { - let localctx = new Opt_index_nameContext(this, this._ctx, this.state); - this.enterRule(localctx, 320, n1qlParser.RULE_opt_index_name); - try { - this.state = 1704; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 101, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1703; - this.index_name(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - named_keyspace_ref() { - let localctx = new Named_keyspace_refContext(this, this._ctx, this.state); - this.enterRule(localctx, 322, n1qlParser.RULE_named_keyspace_ref); - try { - this.state = 1716; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 102, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1706; - this.simple_named_keyspace_ref(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1707; - this.namespace_name(); - this.state = 1708; - this.bucket_name(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1710; - this.bucket_name(); - this.state = 1711; - this.match(n1qlParser.DOT); - this.state = 1712; - this.scope_name(); - this.state = 1713; - this.match(n1qlParser.DOT); - this.state = 1714; - this.keyspace_name(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - simple_named_keyspace_ref() { - let localctx = new Simple_named_keyspace_refContext(this, this._ctx, this.state); - this.enterRule(localctx, 324, n1qlParser.RULE_simple_named_keyspace_ref); - try { - this.state = 1726; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 103, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1718; - this.keyspace_name(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1719; - this.namespace_name(); - this.state = 1720; - this.bucket_name(); - this.state = 1721; - this.match(n1qlParser.DOT); - this.state = 1722; - this.scope_name(); - this.state = 1723; - this.match(n1qlParser.DOT); - this.state = 1724; - this.keyspace_name(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - named_scope_ref() { - let localctx = new Named_scope_refContext(this, this._ctx, this.state); - this.enterRule(localctx, 326, n1qlParser.RULE_named_scope_ref); - try { - this.state = 1737; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 104, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1728; - this.namespace_name(); - this.state = 1729; - this.bucket_name(); - this.state = 1730; - this.match(n1qlParser.DOT); - this.state = 1731; - this.scope_name(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1733; - this.bucket_name(); - this.state = 1734; - this.match(n1qlParser.DOT); - this.state = 1735; - this.scope_name(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - index_partition() { - let localctx = new Index_partitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 328, n1qlParser.RULE_index_partition); - try { - this.state = 1747; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 105, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1740; - this.match(n1qlParser.PARTITION); - this.state = 1741; - this.match(n1qlParser.BY); - this.state = 1742; - this.match(n1qlParser.HASH); - this.state = 1743; - this.match(n1qlParser.LPAREN); - this.state = 1744; - this.exprs(0); - this.state = 1745; - this.match(n1qlParser.RPAREN); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_index_using() { - let localctx = new Opt_index_usingContext(this, this._ctx, this.state); - this.enterRule(localctx, 330, n1qlParser.RULE_opt_index_using); - try { - this.state = 1751; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 106, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1750; - this.index_using(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - index_using() { - let localctx = new Index_usingContext(this, this._ctx, this.state); - this.enterRule(localctx, 332, n1qlParser.RULE_index_using); - try { - this.state = 1759; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 107, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1753; - this.match(n1qlParser.USING); - this.state = 1754; - this.match(n1qlParser.VIEW); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1755; - this.match(n1qlParser.USING); - this.state = 1756; - this.match(n1qlParser.GSI); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1757; - this.match(n1qlParser.USING); - this.state = 1758; - this.match(n1qlParser.FTS); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_index_with() { - let localctx = new Opt_index_withContext(this, this._ctx, this.state); - this.enterRule(localctx, 334, n1qlParser.RULE_opt_index_with); - try { - this.state = 1763; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 108, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1762; - this.index_with(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - index_with() { - let localctx = new Index_withContext(this, this._ctx, this.state); - this.enterRule(localctx, 336, n1qlParser.RULE_index_with); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1765; - this.match(n1qlParser.WITH); - this.state = 1766; - this.expr(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - index_terms(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new Index_termsContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 338; - this.enterRecursionRule(localctx, 338, n1qlParser.RULE_index_terms, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1769; - this.index_term(); - this._ctx.stop = this._input.LT(-1); - this.state = 1776; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 109, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new Index_termsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_index_terms); - this.state = 1771; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 1772; - this.match(n1qlParser.COMMA); - this.state = 1773; - this.index_term(); - } - this.state = 1778; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 109, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - index_term() { - let localctx = new Index_termContext(this, this._ctx, this.state); - this.enterRule(localctx, 340, n1qlParser.RULE_index_term); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1779; - this.index_term_expr(); - this.state = 1780; - this.opt_ikattr(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - index_term_expr() { - let localctx = new Index_term_exprContext(this, this._ctx, this.state); - this.enterRule(localctx, 342, n1qlParser.RULE_index_term_expr); - try { - this.state = 1792; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 110, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1782; - this.index_expr(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1783; - this.all(); - this.state = 1784; - this.index_expr(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1786; - this.all(); - this.state = 1787; - this.match(n1qlParser.DISTINCT); - this.state = 1788; - this.index_expr(); - break; - - case 4: - this.enterOuterAlt(localctx, 4); - this.state = 1790; - this.match(n1qlParser.DISTINCT); - this.state = 1791; - this.index_expr(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - index_expr() { - let localctx = new Index_exprContext(this, this._ctx, this.state); - this.enterRule(localctx, 344, n1qlParser.RULE_index_expr); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1794; - this.expr(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - all() { - let localctx = new AllContext(this, this._ctx, this.state); - this.enterRule(localctx, 346, n1qlParser.RULE_all); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 1796; - _la = this._input.LA(1); - if (!(_la === n1qlParser.ALL || _la === n1qlParser.EACH)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - index_where() { - let localctx = new Index_whereContext(this, this._ctx, this.state); - this.enterRule(localctx, 348, n1qlParser.RULE_index_where); - try { - this.state = 1801; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 111, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1799; - this.match(n1qlParser.WHERE); - this.state = 1800; - this.index_expr(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_ikattr() { - let localctx = new Opt_ikattrContext(this, this._ctx, this.state); - this.enterRule(localctx, 350, n1qlParser.RULE_opt_ikattr); - try { - this.state = 1808; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 112, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1804; - this.ikattr(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1805; - this.ikattr(); - this.state = 1806; - this.ikattr(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - ikattr() { - let localctx = new IkattrContext(this, this._ctx, this.state); - this.enterRule(localctx, 352, n1qlParser.RULE_ikattr); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 1810; - _la = this._input.LA(1); - if (!(_la === n1qlParser.ASC || _la === n1qlParser.DESC || _la === n1qlParser.MISSING)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - drop_index() { - let localctx = new Drop_indexContext(this, this._ctx, this.state); - this.enterRule(localctx, 354, n1qlParser.RULE_drop_index); - try { - this.state = 1833; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 113, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1812; - this.match(n1qlParser.DROP); - this.state = 1813; - this.match(n1qlParser.PRIMARY); - this.state = 1814; - this.match(n1qlParser.INDEX); - this.state = 1815; - this.match(n1qlParser.ON); - this.state = 1816; - this.named_keyspace_ref(); - this.state = 1817; - this.opt_index_using(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1819; - this.match(n1qlParser.DROP); - this.state = 1820; - this.match(n1qlParser.INDEX); - this.state = 1821; - this.simple_named_keyspace_ref(); - this.state = 1822; - this.match(n1qlParser.DOT); - this.state = 1823; - this.index_name(); - this.state = 1824; - this.opt_index_using(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1826; - this.match(n1qlParser.DROP); - this.state = 1827; - this.match(n1qlParser.INDEX); - this.state = 1828; - this.index_name(); - this.state = 1829; - this.match(n1qlParser.ON); - this.state = 1830; - this.named_keyspace_ref(); - this.state = 1831; - this.opt_index_using(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - alter_index() { - let localctx = new Alter_indexContext(this, this._ctx, this.state); - this.enterRule(localctx, 356, n1qlParser.RULE_alter_index); - try { - this.state = 1851; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 114, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1835; - this.match(n1qlParser.ALTER); - this.state = 1836; - this.match(n1qlParser.INDEX); - this.state = 1837; - this.simple_named_keyspace_ref(); - this.state = 1838; - this.match(n1qlParser.DOT); - this.state = 1839; - this.index_name(); - this.state = 1840; - this.opt_index_using(); - this.state = 1841; - this.index_with(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1843; - this.match(n1qlParser.ALTER); - this.state = 1844; - this.match(n1qlParser.INDEX); - this.state = 1845; - this.index_name(); - this.state = 1846; - this.match(n1qlParser.ON); - this.state = 1847; - this.named_keyspace_ref(); - this.state = 1848; - this.opt_index_using(); - this.state = 1849; - this.index_with(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - build_index() { - let localctx = new Build_indexContext(this, this._ctx, this.state); - this.enterRule(localctx, 358, n1qlParser.RULE_build_index); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1853; - this.match(n1qlParser.BUILD); - this.state = 1854; - this.match(n1qlParser.INDEX); - this.state = 1855; - this.match(n1qlParser.ON); - this.state = 1856; - this.named_keyspace_ref(); - this.state = 1857; - this.match(n1qlParser.LPAREN); - this.state = 1858; - this.exprs(0); - this.state = 1859; - this.match(n1qlParser.RPAREN); - this.state = 1860; - this.opt_index_using(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - create_function() { - let localctx = new Create_functionContext(this, this._ctx, this.state); - this.enterRule(localctx, 360, n1qlParser.RULE_create_function); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1862; - this.match(n1qlParser.CREATE); - this.state = 1863; - this.opt_replace(); - this.state = 1864; - this.match(n1qlParser.FUNCTION); - this.state = 1865; - this.func_name(); - this.state = 1866; - this.match(n1qlParser.LPAREN); - this.state = 1867; - this.parm_list(); - this.state = 1868; - this.match(n1qlParser.RPAREN); - this.state = 1869; - this.func_body(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_replace() { - let localctx = new Opt_replaceContext(this, this._ctx, this.state); - this.enterRule(localctx, 362, n1qlParser.RULE_opt_replace); - try { - this.state = 1874; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.FUNCTION: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.OR: - this.enterOuterAlt(localctx, 2); - this.state = 1872; - this.match(n1qlParser.OR); - this.state = 1873; - this.match(n1qlParser.REPLACE); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - func_name() { - let localctx = new Func_nameContext(this, this._ctx, this.state); - this.enterRule(localctx, 364, n1qlParser.RULE_func_name); - try { - this.state = 1878; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 116, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1876; - this.short_func_name(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1877; - this.long_func_name(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - short_func_name() { - let localctx = new Short_func_nameContext(this, this._ctx, this.state); - this.enterRule(localctx, 366, n1qlParser.RULE_short_func_name); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1880; - this.keyspace_name(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - long_func_name() { - let localctx = new Long_func_nameContext(this, this._ctx, this.state); - this.enterRule(localctx, 368, n1qlParser.RULE_long_func_name); - try { - this.state = 1892; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 117, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1882; - this.namespace_term(); - this.state = 1883; - this.keyspace_name(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1885; - this.namespace_term(); - this.state = 1886; - this.bucket_name(); - this.state = 1887; - this.match(n1qlParser.DOT); - this.state = 1888; - this.scope_name(); - this.state = 1889; - this.match(n1qlParser.DOT); - this.state = 1890; - this.keyspace_name(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - parm_list() { - let localctx = new Parm_listContext(this, this._ctx, this.state); - this.enterRule(localctx, 370, n1qlParser.RULE_parm_list); - try { - this.state = 1899; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.RPAREN: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.DOT: - this.enterOuterAlt(localctx, 2); - this.state = 1895; - this.match(n1qlParser.DOT); - this.state = 1896; - this.match(n1qlParser.DOT); - this.state = 1897; - this.match(n1qlParser.DOT); - break; - case n1qlParser.IDENT: - this.enterOuterAlt(localctx, 3); - this.state = 1898; - this.parameter_terms(0); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - parameter_terms(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new Parameter_termsContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 372; - this.enterRecursionRule(localctx, 372, n1qlParser.RULE_parameter_terms, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1902; - this.match(n1qlParser.IDENT); - this._ctx.stop = this._input.LT(-1); - this.state = 1909; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 119, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new Parameter_termsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_parameter_terms); - this.state = 1904; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 1905; - this.match(n1qlParser.COMMA); - this.state = 1906; - this.match(n1qlParser.IDENT); - } - this.state = 1911; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 119, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - func_body() { - let localctx = new Func_bodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 374, n1qlParser.RULE_func_body); - try { - this.state = 1932; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 120, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1912; - this.match(n1qlParser.LBRACE); - this.state = 1913; - this.expr(0); - this.state = 1914; - this.match(n1qlParser.RBRACE); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1916; - this.match(n1qlParser.LANGUAGE); - this.state = 1917; - this.match(n1qlParser.INLINE); - this.state = 1918; - this.match(n1qlParser.AS); - this.state = 1919; - this.expr(0); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1920; - this.match(n1qlParser.LANGUAGE); - this.state = 1921; - this.match(n1qlParser.GOLANG); - this.state = 1922; - this.match(n1qlParser.AS); - this.state = 1923; - this.match(n1qlParser.STR); - this.state = 1924; - this.match(n1qlParser.AT); - this.state = 1925; - this.match(n1qlParser.STR); - break; - - case 4: - this.enterOuterAlt(localctx, 4); - this.state = 1926; - this.match(n1qlParser.LANGUAGE); - this.state = 1927; - this.match(n1qlParser.JAVASCRIPT); - this.state = 1928; - this.match(n1qlParser.AS); - this.state = 1929; - this.match(n1qlParser.STR); - this.state = 1930; - this.match(n1qlParser.AT); - this.state = 1931; - this.match(n1qlParser.STR); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - drop_function() { - let localctx = new Drop_functionContext(this, this._ctx, this.state); - this.enterRule(localctx, 376, n1qlParser.RULE_drop_function); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1934; - this.match(n1qlParser.DROP); - this.state = 1935; - this.match(n1qlParser.FUNCTION); - this.state = 1936; - this.func_name(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - execute_function() { - let localctx = new Execute_functionContext(this, this._ctx, this.state); - this.enterRule(localctx, 378, n1qlParser.RULE_execute_function); - try { - this.enterOuterAlt(localctx, 1); - this.state = 1938; - this.match(n1qlParser.EXECUTE); - this.state = 1939; - this.match(n1qlParser.FUNCTION); - this.state = 1940; - this.func_name(); - this.state = 1941; - this.match(n1qlParser.LPAREN); - this.state = 1942; - this.opt_exprs(); - this.state = 1943; - this.match(n1qlParser.RPAREN); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - update_statistics() { - let localctx = new Update_statisticsContext(this, this._ctx, this.state); - this.enterRule(localctx, 380, n1qlParser.RULE_update_statistics); - try { - this.state = 2067; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 121, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 1945; - this.match(n1qlParser.UPDATE); - this.state = 1946; - this.match(n1qlParser.STATISTICS); - this.state = 1947; - this.opt_for(); - this.state = 1948; - this.named_keyspace_ref(); - this.state = 1949; - this.match(n1qlParser.LPAREN); - this.state = 1950; - this.update_stat_terms(0); - this.state = 1951; - this.match(n1qlParser.RPAREN); - this.state = 1952; - this.opt_infer_ustat_with(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 1954; - this.match(n1qlParser.UPDATE); - this.state = 1955; - this.match(n1qlParser.STATISTICS); - this.state = 1956; - this.opt_for(); - this.state = 1957; - this.named_keyspace_ref(); - this.state = 1958; - this.match(n1qlParser.DELETE_); - this.state = 1959; - this.match(n1qlParser.LPAREN); - this.state = 1960; - this.update_stat_terms(0); - this.state = 1961; - this.match(n1qlParser.RPAREN); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 1963; - this.match(n1qlParser.UPDATE); - this.state = 1964; - this.match(n1qlParser.STATISTICS); - this.state = 1965; - this.opt_for(); - this.state = 1966; - this.named_keyspace_ref(); - this.state = 1967; - this.match(n1qlParser.DELETE_); - this.state = 1968; - this.match(n1qlParser.ALL); - break; - - case 4: - this.enterOuterAlt(localctx, 4); - this.state = 1970; - this.match(n1qlParser.UPDATE); - this.state = 1971; - this.match(n1qlParser.STATISTICS); - this.state = 1972; - this.opt_for(); - this.state = 1973; - this.named_keyspace_ref(); - this.state = 1974; - this.match(n1qlParser.INDEX); - this.state = 1975; - this.match(n1qlParser.LPAREN); - this.state = 1976; - this.exprs(0); - this.state = 1977; - this.match(n1qlParser.RPAREN); - this.state = 1978; - this.opt_index_using(); - this.state = 1979; - this.opt_infer_ustat_with(); - break; - - case 5: - this.enterOuterAlt(localctx, 5); - this.state = 1981; - this.match(n1qlParser.UPDATE); - this.state = 1982; - this.match(n1qlParser.STATISTICS); - this.state = 1983; - this.opt_for(); - this.state = 1984; - this.named_keyspace_ref(); - this.state = 1985; - this.match(n1qlParser.INDEX); - this.state = 1986; - this.match(n1qlParser.ALL); - this.state = 1987; - this.opt_index_using(); - this.state = 1988; - this.opt_infer_ustat_with(); - break; - - case 6: - this.enterOuterAlt(localctx, 6); - this.state = 1990; - this.match(n1qlParser.UPDATE); - this.state = 1991; - this.match(n1qlParser.STATISTICS); - this.state = 1992; - this.match(n1qlParser.FOR); - this.state = 1993; - this.match(n1qlParser.INDEX); - this.state = 1994; - this.simple_named_keyspace_ref(); - this.state = 1995; - this.match(n1qlParser.DOT); - this.state = 1996; - this.index_name(); - this.state = 1997; - this.opt_index_using(); - this.state = 1998; - this.opt_infer_ustat_with(); - break; - - case 7: - this.enterOuterAlt(localctx, 7); - this.state = 2000; - this.match(n1qlParser.UPDATE); - this.state = 2001; - this.match(n1qlParser.STATISTICS); - this.state = 2002; - this.match(n1qlParser.FOR); - this.state = 2003; - this.match(n1qlParser.INDEX); - this.state = 2004; - this.index_name(); - this.state = 2005; - this.match(n1qlParser.ON); - this.state = 2006; - this.named_keyspace_ref(); - this.state = 2007; - this.opt_index_using(); - this.state = 2008; - this.opt_infer_ustat_with(); - break; - - case 8: - this.enterOuterAlt(localctx, 8); - this.state = 2010; - this.match(n1qlParser.ANALYZE); - this.state = 2011; - this.opt_keyspace_collection(); - this.state = 2012; - this.named_keyspace_ref(); - this.state = 2013; - this.match(n1qlParser.LPAREN); - this.state = 2014; - this.update_stat_terms(0); - this.state = 2015; - this.match(n1qlParser.RPAREN); - this.state = 2016; - this.opt_infer_ustat_with(); - break; - - case 9: - this.enterOuterAlt(localctx, 9); - this.state = 2018; - this.match(n1qlParser.ANALYZE); - this.state = 2019; - this.opt_keyspace_collection(); - this.state = 2020; - this.named_keyspace_ref(); - this.state = 2021; - this.match(n1qlParser.DELETE_); - this.state = 2022; - this.match(n1qlParser.STATISTICS); - this.state = 2023; - this.match(n1qlParser.LPAREN); - this.state = 2024; - this.update_stat_terms(0); - this.state = 2025; - this.match(n1qlParser.RPAREN); - break; - - case 10: - this.enterOuterAlt(localctx, 10); - this.state = 2027; - this.match(n1qlParser.ANALYZE); - this.state = 2028; - this.opt_keyspace_collection(); - this.state = 2029; - this.named_keyspace_ref(); - this.state = 2030; - this.match(n1qlParser.DELETE_); - this.state = 2031; - this.match(n1qlParser.STATISTICS); - break; - - case 11: - this.enterOuterAlt(localctx, 11); - this.state = 2033; - this.match(n1qlParser.ANALYZE); - this.state = 2034; - this.opt_keyspace_collection(); - this.state = 2035; - this.named_keyspace_ref(); - this.state = 2036; - this.match(n1qlParser.INDEX); - this.state = 2037; - this.match(n1qlParser.LPAREN); - this.state = 2038; - this.exprs(0); - this.state = 2039; - this.match(n1qlParser.RPAREN); - this.state = 2040; - this.opt_index_using(); - this.state = 2041; - this.opt_infer_ustat_with(); - break; - - case 12: - this.enterOuterAlt(localctx, 12); - this.state = 2043; - this.match(n1qlParser.ANALYZE); - this.state = 2044; - this.opt_keyspace_collection(); - this.state = 2045; - this.named_keyspace_ref(); - this.state = 2046; - this.match(n1qlParser.INDEX); - this.state = 2047; - this.match(n1qlParser.ALL); - this.state = 2048; - this.opt_index_using(); - this.state = 2049; - this.opt_infer_ustat_with(); - break; - - case 13: - this.enterOuterAlt(localctx, 13); - this.state = 2051; - this.match(n1qlParser.ANALYZE); - this.state = 2052; - this.match(n1qlParser.INDEX); - this.state = 2053; - this.simple_named_keyspace_ref(); - this.state = 2054; - this.match(n1qlParser.DOT); - this.state = 2055; - this.index_name(); - this.state = 2056; - this.opt_index_using(); - this.state = 2057; - this.opt_infer_ustat_with(); - break; - - case 14: - this.enterOuterAlt(localctx, 14); - this.state = 2059; - this.match(n1qlParser.ANALYZE); - this.state = 2060; - this.match(n1qlParser.INDEX); - this.state = 2061; - this.index_name(); - this.state = 2062; - this.match(n1qlParser.ON); - this.state = 2063; - this.named_keyspace_ref(); - this.state = 2064; - this.opt_index_using(); - this.state = 2065; - this.opt_infer_ustat_with(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_for() { - let localctx = new Opt_forContext(this, this._ctx, this.state); - this.enterRule(localctx, 382, n1qlParser.RULE_opt_for); - try { - this.state = 2071; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.IDENT: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.FOR: - this.enterOuterAlt(localctx, 2); - this.state = 2070; - this.match(n1qlParser.FOR); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - update_stat_terms(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new Update_stat_termsContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 384; - this.enterRecursionRule(localctx, 384, n1qlParser.RULE_update_stat_terms, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2074; - this.update_stat_term(); - this._ctx.stop = this._input.LT(-1); - this.state = 2081; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 123, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new Update_stat_termsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_update_stat_terms); - this.state = 2076; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 2077; - this.match(n1qlParser.COMMA); - this.state = 2078; - this.update_stat_term(); - } - this.state = 2083; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 123, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - update_stat_term() { - let localctx = new Update_stat_termContext(this, this._ctx, this.state); - this.enterRule(localctx, 386, n1qlParser.RULE_update_stat_term); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2084; - this.index_term_expr(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - path(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new PathContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 388; - this.enterRecursionRule(localctx, 388, n1qlParser.RULE_path, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2087; - this.match(n1qlParser.IDENT); - this._ctx.stop = this._input.LT(-1); - this.state = 2114; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 125, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - this.state = 2112; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 124, this._ctx); - switch (la_) { - case 1: - localctx = new PathContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_path); - this.state = 2089; - if (!this.precpred(this._ctx, 5)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 5)'); - } - this.state = 2090; - this.match(n1qlParser.DOT); - this.state = 2091; - this.match(n1qlParser.IDENT); - break; - - case 2: - localctx = new PathContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_path); - this.state = 2092; - if (!this.precpred(this._ctx, 4)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 4)'); - } - this.state = 2093; - this.match(n1qlParser.DOT); - this.state = 2094; - this.match(n1qlParser.IDENT_ICASE); - break; - - case 3: - localctx = new PathContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_path); - this.state = 2095; - if (!this.precpred(this._ctx, 3)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 3)'); - } - this.state = 2096; - this.match(n1qlParser.DOT); - this.state = 2097; - this.match(n1qlParser.LBRACKET); - this.state = 2098; - this.expr(0); - this.state = 2099; - this.match(n1qlParser.RBRACKET); - break; - - case 4: - localctx = new PathContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_path); - this.state = 2101; - if (!this.precpred(this._ctx, 2)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 2)'); - } - this.state = 2102; - this.match(n1qlParser.DOT); - this.state = 2103; - this.match(n1qlParser.LBRACKET); - this.state = 2104; - this.expr(0); - this.state = 2105; - this.match(n1qlParser.RBRACKET_ICASE); - break; - - case 5: - localctx = new PathContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_path); - this.state = 2107; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 2108; - this.match(n1qlParser.LBRACKET); - this.state = 2109; - this.expr(0); - this.state = 2110; - this.match(n1qlParser.RBRACKET); - break; - } - } - this.state = 2116; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 125, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - expr(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new ExprContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 390; - this.enterRecursionRule(localctx, 390, n1qlParser.RULE_expr, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2123; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.STR: - case n1qlParser.INT: - case n1qlParser.NUM: - case n1qlParser.MINUS: - case n1qlParser.LPAREN: - case n1qlParser.LBRACE: - case n1qlParser.LBRACKET: - case n1qlParser.ANY: - case n1qlParser.ARRAY: - case n1qlParser.CASE: - case n1qlParser.CORRELATED: - case n1qlParser.COVER: - case n1qlParser.EVERY: - case n1qlParser.FALSE: - case n1qlParser.FIRST: - case n1qlParser.MISSING: - case n1qlParser.NTH_VALUE: - case n1qlParser.NULL: - case n1qlParser.OBJECT: - case n1qlParser.REPLACE: - case n1qlParser.SELF: - case n1qlParser.SOME: - case n1qlParser.SYSTEM: - case n1qlParser.TRUE: - case n1qlParser.IDENT_ICASE: - case n1qlParser.IDENT: - case n1qlParser.NAMED_PARAM: - case n1qlParser.POSITIONAL_PARAM: - case n1qlParser.NEXT_PARAM: - this.state = 2118; - this.c_expr(); - break; - case n1qlParser.NOT: - this.state = 2119; - this.match(n1qlParser.NOT); - this.state = 2120; - this.expr(23); - break; - case n1qlParser.EXISTS: - this.state = 2121; - this.match(n1qlParser.EXISTS); - this.state = 2122; - this.expr(1); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - this._ctx.stop = this._input.LT(-1); - this.state = 2267; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 128, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - this.state = 2265; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 127, this._ctx); - switch (la_) { - case 1: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2125; - if (!this.precpred(this._ctx, 31)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 31)'); - } - this.state = 2126; - this.match(n1qlParser.PLUS); - this.state = 2127; - this.expr(32); - break; - - case 2: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2128; - if (!this.precpred(this._ctx, 30)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 30)'); - } - this.state = 2129; - this.match(n1qlParser.MINUS); - this.state = 2130; - this.expr(31); - break; - - case 3: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2131; - if (!this.precpred(this._ctx, 29)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 29)'); - } - this.state = 2132; - this.match(n1qlParser.STAR); - this.state = 2133; - this.expr(30); - break; - - case 4: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2134; - if (!this.precpred(this._ctx, 28)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 28)'); - } - this.state = 2135; - this.match(n1qlParser.DIV); - this.state = 2136; - this.expr(29); - break; - - case 5: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2137; - if (!this.precpred(this._ctx, 27)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 27)'); - } - this.state = 2138; - this.match(n1qlParser.MOD); - this.state = 2139; - this.expr(28); - break; - - case 6: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2140; - if (!this.precpred(this._ctx, 26)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 26)'); - } - this.state = 2141; - this.match(n1qlParser.CONCAT); - this.state = 2142; - this.expr(27); - break; - - case 7: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2143; - if (!this.precpred(this._ctx, 25)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 25)'); - } - this.state = 2144; - this.match(n1qlParser.AND); - this.state = 2145; - this.expr(26); - break; - - case 8: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2146; - if (!this.precpred(this._ctx, 24)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 24)'); - } - this.state = 2147; - this.match(n1qlParser.OR); - this.state = 2148; - this.expr(25); - break; - - case 9: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2149; - if (!this.precpred(this._ctx, 22)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 22)'); - } - this.state = 2150; - this.match(n1qlParser.EQ); - this.state = 2151; - this.expr(23); - break; - - case 10: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2152; - if (!this.precpred(this._ctx, 21)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 21)'); - } - this.state = 2153; - this.match(n1qlParser.DEQ); - this.state = 2154; - this.expr(22); - break; - - case 11: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2155; - if (!this.precpred(this._ctx, 20)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 20)'); - } - this.state = 2156; - this.match(n1qlParser.NE); - this.state = 2157; - this.expr(21); - break; - - case 12: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2158; - if (!this.precpred(this._ctx, 19)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 19)'); - } - this.state = 2159; - this.match(n1qlParser.LT); - this.state = 2160; - this.expr(20); - break; - - case 13: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2161; - if (!this.precpred(this._ctx, 18)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 18)'); - } - this.state = 2162; - this.match(n1qlParser.GT); - this.state = 2163; - this.expr(19); - break; - - case 14: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2164; - if (!this.precpred(this._ctx, 17)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 17)'); - } - this.state = 2165; - this.match(n1qlParser.LE); - this.state = 2166; - this.expr(18); - break; - - case 15: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2167; - if (!this.precpred(this._ctx, 16)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 16)'); - } - this.state = 2168; - this.match(n1qlParser.GE); - this.state = 2169; - this.expr(17); - break; - - case 16: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2170; - if (!this.precpred(this._ctx, 13)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 13)'); - } - this.state = 2171; - this.match(n1qlParser.LIKE); - this.state = 2172; - this.expr(14); - break; - - case 17: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2173; - if (!this.precpred(this._ctx, 12)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 12)'); - } - this.state = 2174; - this.match(n1qlParser.NOT); - this.state = 2175; - this.match(n1qlParser.LIKE); - this.state = 2176; - this.expr(13); - break; - - case 18: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2177; - if (!this.precpred(this._ctx, 11)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 11)'); - } - this.state = 2178; - this.match(n1qlParser.IN); - this.state = 2179; - this.expr(12); - break; - - case 19: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2180; - if (!this.precpred(this._ctx, 10)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 10)'); - } - this.state = 2181; - this.match(n1qlParser.NOT); - this.state = 2182; - this.match(n1qlParser.IN); - this.state = 2183; - this.expr(11); - break; - - case 20: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2184; - if (!this.precpred(this._ctx, 9)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 9)'); - } - this.state = 2185; - this.match(n1qlParser.WITHIN); - this.state = 2186; - this.expr(10); - break; - - case 21: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2187; - if (!this.precpred(this._ctx, 8)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 8)'); - } - this.state = 2188; - this.match(n1qlParser.NOT); - this.state = 2189; - this.match(n1qlParser.WITHIN); - this.state = 2190; - this.expr(9); - break; - - case 22: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2191; - if (!this.precpred(this._ctx, 39)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 39)'); - } - this.state = 2192; - this.match(n1qlParser.DOT); - this.state = 2193; - this.match(n1qlParser.IDENT); - break; - - case 23: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2194; - if (!this.precpred(this._ctx, 38)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 38)'); - } - this.state = 2195; - this.match(n1qlParser.DOT); - this.state = 2196; - this.match(n1qlParser.IDENT_ICASE); - break; - - case 24: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2197; - if (!this.precpred(this._ctx, 37)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 37)'); - } - this.state = 2198; - this.match(n1qlParser.DOT); - this.state = 2199; - this.match(n1qlParser.LBRACKET); - this.state = 2200; - this.expr(0); - this.state = 2201; - this.match(n1qlParser.RBRACKET); - break; - - case 25: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2203; - if (!this.precpred(this._ctx, 36)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 36)'); - } - this.state = 2204; - this.match(n1qlParser.DOT); - this.state = 2205; - this.match(n1qlParser.LBRACKET); - this.state = 2206; - this.expr(0); - this.state = 2207; - this.match(n1qlParser.RBRACKET_ICASE); - break; - - case 26: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2209; - if (!this.precpred(this._ctx, 35)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 35)'); - } - this.state = 2210; - this.match(n1qlParser.LBRACKET); - this.state = 2211; - this.expr(0); - this.state = 2212; - this.match(n1qlParser.RBRACKET); - break; - - case 27: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2214; - if (!this.precpred(this._ctx, 34)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 34)'); - } - this.state = 2215; - this.match(n1qlParser.LBRACKET); - this.state = 2216; - this.expr(0); - this.state = 2217; - this.match(n1qlParser.COLON); - this.state = 2218; - this.match(n1qlParser.RBRACKET); - break; - - case 28: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2220; - if (!this.precpred(this._ctx, 33)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 33)'); - } - this.state = 2221; - this.match(n1qlParser.LBRACKET); - this.state = 2222; - this.expr(0); - this.state = 2223; - this.match(n1qlParser.COLON); - this.state = 2224; - this.expr(0); - this.state = 2225; - this.match(n1qlParser.RBRACKET); - break; - - case 29: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2227; - if (!this.precpred(this._ctx, 32)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 32)'); - } - this.state = 2228; - this.match(n1qlParser.LBRACKET); - this.state = 2229; - this.match(n1qlParser.STAR); - this.state = 2230; - this.match(n1qlParser.RBRACKET); - break; - - case 30: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2231; - if (!this.precpred(this._ctx, 15)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 15)'); - } - this.state = 2232; - this.match(n1qlParser.BETWEEN); - this.state = 2233; - this.b_expr(0); - this.state = 2234; - this.match(n1qlParser.AND); - this.state = 2235; - this.b_expr(0); - break; - - case 31: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2237; - if (!this.precpred(this._ctx, 14)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 14)'); - } - this.state = 2238; - this.match(n1qlParser.NOT); - this.state = 2239; - this.match(n1qlParser.BETWEEN); - this.state = 2240; - this.b_expr(0); - this.state = 2241; - this.match(n1qlParser.AND); - this.state = 2242; - this.b_expr(0); - break; - - case 32: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2244; - if (!this.precpred(this._ctx, 7)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 7)'); - } - this.state = 2245; - this.match(n1qlParser.IS); - this.state = 2246; - this.match(n1qlParser.NULL); - break; - - case 33: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2247; - if (!this.precpred(this._ctx, 6)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 6)'); - } - this.state = 2248; - this.match(n1qlParser.IS); - this.state = 2249; - this.match(n1qlParser.NOT); - this.state = 2250; - this.match(n1qlParser.NULL); - break; - - case 34: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2251; - if (!this.precpred(this._ctx, 5)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 5)'); - } - this.state = 2252; - this.match(n1qlParser.IS); - this.state = 2253; - this.match(n1qlParser.MISSING); - break; - - case 35: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2254; - if (!this.precpred(this._ctx, 4)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 4)'); - } - this.state = 2255; - this.match(n1qlParser.IS); - this.state = 2256; - this.match(n1qlParser.NOT); - this.state = 2257; - this.match(n1qlParser.MISSING); - break; - - case 36: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2258; - if (!this.precpred(this._ctx, 3)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 3)'); - } - this.state = 2259; - this.match(n1qlParser.IS); - this.state = 2260; - this.valued(); - break; - - case 37: - localctx = new ExprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_expr); - this.state = 2261; - if (!this.precpred(this._ctx, 2)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 2)'); - } - this.state = 2262; - this.match(n1qlParser.IS); - this.state = 2263; - this.match(n1qlParser.NOT); - this.state = 2264; - this.valued(); - break; - } - } - this.state = 2269; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 128, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - valued() { - let localctx = new ValuedContext(this, this._ctx, this.state); - this.enterRule(localctx, 392, n1qlParser.RULE_valued); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 2270; - _la = this._input.LA(1); - if (!(_la === n1qlParser.KNOWN || _la === n1qlParser.VALUED)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - c_expr() { - let localctx = new C_exprContext(this, this._ctx, this.state); - this.enterRule(localctx, 394, n1qlParser.RULE_c_expr); - try { - this.state = 2288; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 129, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 2272; - this.literal(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 2273; - this.construction_expr(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 2274; - this.match(n1qlParser.IDENT); - break; - - case 4: - this.enterOuterAlt(localctx, 4); - this.state = 2275; - this.match(n1qlParser.IDENT_ICASE); - break; - - case 5: - this.enterOuterAlt(localctx, 5); - this.state = 2276; - this.match(n1qlParser.SELF); - break; - - case 6: - this.enterOuterAlt(localctx, 6); - this.state = 2277; - this.param_expr(); - break; - - case 7: - this.enterOuterAlt(localctx, 7); - this.state = 2278; - this.function_expr(); - break; - - case 8: - this.enterOuterAlt(localctx, 8); - this.state = 2279; - this.match(n1qlParser.MINUS); - break; - - case 9: - this.enterOuterAlt(localctx, 9); - this.state = 2280; - this.case_expr(); - break; - - case 10: - this.enterOuterAlt(localctx, 10); - this.state = 2281; - this.collection_expr(); - break; - - case 11: - this.enterOuterAlt(localctx, 11); - this.state = 2282; - this.paren_expr(); - break; - - case 12: - this.enterOuterAlt(localctx, 12); - this.state = 2283; - this.match(n1qlParser.COVER); - this.state = 2284; - this.match(n1qlParser.LPAREN); - this.state = 2285; - this.expr(0); - this.state = 2286; - this.match(n1qlParser.RPAREN); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - b_expr(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new B_exprContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 396; - this.enterRecursionRule(localctx, 396, n1qlParser.RULE_b_expr, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2291; - this.c_expr(); - this._ctx.stop = this._input.LT(-1); - this.state = 2353; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 131, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - this.state = 2351; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 130, this._ctx); - switch (la_) { - case 1: - localctx = new B_exprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_b_expr); - this.state = 2293; - if (!this.precpred(this._ctx, 6)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 6)'); - } - this.state = 2294; - this.match(n1qlParser.PLUS); - this.state = 2295; - this.b_expr(7); - break; - - case 2: - localctx = new B_exprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_b_expr); - this.state = 2296; - if (!this.precpred(this._ctx, 5)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 5)'); - } - this.state = 2297; - this.match(n1qlParser.MINUS); - this.state = 2298; - this.b_expr(6); - break; - - case 3: - localctx = new B_exprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_b_expr); - this.state = 2299; - if (!this.precpred(this._ctx, 4)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 4)'); - } - this.state = 2300; - this.match(n1qlParser.STAR); - this.state = 2301; - this.b_expr(5); - break; - - case 4: - localctx = new B_exprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_b_expr); - this.state = 2302; - if (!this.precpred(this._ctx, 3)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 3)'); - } - this.state = 2303; - this.match(n1qlParser.DIV); - this.state = 2304; - this.b_expr(4); - break; - - case 5: - localctx = new B_exprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_b_expr); - this.state = 2305; - if (!this.precpred(this._ctx, 2)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 2)'); - } - this.state = 2306; - this.match(n1qlParser.MOD); - this.state = 2307; - this.b_expr(3); - break; - - case 6: - localctx = new B_exprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_b_expr); - this.state = 2308; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 2309; - this.match(n1qlParser.CONCAT); - this.state = 2310; - this.b_expr(2); - break; - - case 7: - localctx = new B_exprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_b_expr); - this.state = 2311; - if (!this.precpred(this._ctx, 14)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 14)'); - } - this.state = 2312; - this.match(n1qlParser.DOT); - this.state = 2313; - this.match(n1qlParser.IDENT); - break; - - case 8: - localctx = new B_exprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_b_expr); - this.state = 2314; - if (!this.precpred(this._ctx, 13)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 13)'); - } - this.state = 2315; - this.match(n1qlParser.DOT); - this.state = 2316; - this.match(n1qlParser.IDENT_ICASE); - break; - - case 9: - localctx = new B_exprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_b_expr); - this.state = 2317; - if (!this.precpred(this._ctx, 12)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 12)'); - } - this.state = 2318; - this.match(n1qlParser.DOT); - this.state = 2319; - this.match(n1qlParser.LBRACKET); - this.state = 2320; - this.expr(0); - this.state = 2321; - this.match(n1qlParser.RBRACKET); - break; - - case 10: - localctx = new B_exprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_b_expr); - this.state = 2323; - if (!this.precpred(this._ctx, 11)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 11)'); - } - this.state = 2324; - this.match(n1qlParser.DOT); - this.state = 2325; - this.match(n1qlParser.LBRACKET); - this.state = 2326; - this.expr(0); - this.state = 2327; - this.match(n1qlParser.RBRACKET_ICASE); - break; - - case 11: - localctx = new B_exprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_b_expr); - this.state = 2329; - if (!this.precpred(this._ctx, 10)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 10)'); - } - this.state = 2330; - this.match(n1qlParser.LBRACKET); - this.state = 2331; - this.expr(0); - this.state = 2332; - this.match(n1qlParser.RBRACKET); - break; - - case 12: - localctx = new B_exprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_b_expr); - this.state = 2334; - if (!this.precpred(this._ctx, 9)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 9)'); - } - this.state = 2335; - this.match(n1qlParser.LBRACKET); - this.state = 2336; - this.expr(0); - this.state = 2337; - this.match(n1qlParser.COLON); - this.state = 2338; - this.match(n1qlParser.RBRACKET); - break; - - case 13: - localctx = new B_exprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_b_expr); - this.state = 2340; - if (!this.precpred(this._ctx, 8)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 8)'); - } - this.state = 2341; - this.match(n1qlParser.LBRACKET); - this.state = 2342; - this.expr(0); - this.state = 2343; - this.match(n1qlParser.COLON); - this.state = 2344; - this.expr(0); - this.state = 2345; - this.match(n1qlParser.RBRACKET); - break; - - case 14: - localctx = new B_exprContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_b_expr); - this.state = 2347; - if (!this.precpred(this._ctx, 7)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 7)'); - } - this.state = 2348; - this.match(n1qlParser.LBRACKET); - this.state = 2349; - this.match(n1qlParser.STAR); - this.state = 2350; - this.match(n1qlParser.RBRACKET); - break; - } - } - this.state = 2355; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 131, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - literal() { - let localctx = new LiteralContext(this, this._ctx, this.state); - this.enterRule(localctx, 398, n1qlParser.RULE_literal); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 2356; - _la = this._input.LA(1); - if ( - !( - ((_la & ~0x1f) == 0 && - ((1 << _la) & ((1 << n1qlParser.STR) | (1 << n1qlParser.INT) | (1 << n1qlParser.NUM))) !== 0) || - _la === n1qlParser.FALSE || - _la === n1qlParser.MISSING || - _la === n1qlParser.NULL || - _la === n1qlParser.TRUE - ) - ) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - construction_expr() { - let localctx = new Construction_exprContext(this, this._ctx, this.state); - this.enterRule(localctx, 400, n1qlParser.RULE_construction_expr); - try { - this.state = 2360; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.LBRACE: - this.enterOuterAlt(localctx, 1); - this.state = 2358; - this.object(); - break; - case n1qlParser.LBRACKET: - this.enterOuterAlt(localctx, 2); - this.state = 2359; - this.array(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - object() { - let localctx = new ObjectContext(this, this._ctx, this.state); - this.enterRule(localctx, 402, n1qlParser.RULE_object); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2362; - this.match(n1qlParser.LBRACE); - this.state = 2363; - this.opt_members(); - this.state = 2364; - this.match(n1qlParser.RBRACE); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_members() { - let localctx = new Opt_membersContext(this, this._ctx, this.state); - this.enterRule(localctx, 404, n1qlParser.RULE_opt_members); - try { - this.state = 2368; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.RBRACE: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.STR: - case n1qlParser.INT: - case n1qlParser.NUM: - case n1qlParser.MINUS: - case n1qlParser.LPAREN: - case n1qlParser.LBRACE: - case n1qlParser.LBRACKET: - case n1qlParser.ANY: - case n1qlParser.ARRAY: - case n1qlParser.CASE: - case n1qlParser.CORRELATED: - case n1qlParser.COVER: - case n1qlParser.EVERY: - case n1qlParser.EXISTS: - case n1qlParser.FALSE: - case n1qlParser.FIRST: - case n1qlParser.MISSING: - case n1qlParser.NOT: - case n1qlParser.NTH_VALUE: - case n1qlParser.NULL: - case n1qlParser.OBJECT: - case n1qlParser.REPLACE: - case n1qlParser.SELF: - case n1qlParser.SOME: - case n1qlParser.SYSTEM: - case n1qlParser.TRUE: - case n1qlParser.IDENT_ICASE: - case n1qlParser.IDENT: - case n1qlParser.NAMED_PARAM: - case n1qlParser.POSITIONAL_PARAM: - case n1qlParser.NEXT_PARAM: - this.enterOuterAlt(localctx, 2); - this.state = 2367; - this.members(0); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - members(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new MembersContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 406; - this.enterRecursionRule(localctx, 406, n1qlParser.RULE_members, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2371; - this.member(); - this._ctx.stop = this._input.LT(-1); - this.state = 2378; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 134, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new MembersContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_members); - this.state = 2373; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 2374; - this.match(n1qlParser.COMMA); - this.state = 2375; - this.member(); - } - this.state = 2380; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 134, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - member() { - let localctx = new MemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 408, n1qlParser.RULE_member); - try { - this.state = 2386; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 135, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 2381; - this.expr(0); - this.state = 2382; - this.match(n1qlParser.COLON); - this.state = 2383; - this.expr(0); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 2385; - this.expr(0); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - array() { - let localctx = new ArrayContext(this, this._ctx, this.state); - this.enterRule(localctx, 410, n1qlParser.RULE_array); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2388; - this.match(n1qlParser.LBRACKET); - this.state = 2389; - this.opt_exprs(); - this.state = 2390; - this.match(n1qlParser.RBRACKET); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_exprs() { - let localctx = new Opt_exprsContext(this, this._ctx, this.state); - this.enterRule(localctx, 412, n1qlParser.RULE_opt_exprs); - try { - this.state = 2394; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.RPAREN: - case n1qlParser.RBRACKET: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.STR: - case n1qlParser.INT: - case n1qlParser.NUM: - case n1qlParser.MINUS: - case n1qlParser.LPAREN: - case n1qlParser.LBRACE: - case n1qlParser.LBRACKET: - case n1qlParser.ANY: - case n1qlParser.ARRAY: - case n1qlParser.CASE: - case n1qlParser.CORRELATED: - case n1qlParser.COVER: - case n1qlParser.EVERY: - case n1qlParser.EXISTS: - case n1qlParser.FALSE: - case n1qlParser.FIRST: - case n1qlParser.MISSING: - case n1qlParser.NOT: - case n1qlParser.NTH_VALUE: - case n1qlParser.NULL: - case n1qlParser.OBJECT: - case n1qlParser.REPLACE: - case n1qlParser.SELF: - case n1qlParser.SOME: - case n1qlParser.SYSTEM: - case n1qlParser.TRUE: - case n1qlParser.IDENT_ICASE: - case n1qlParser.IDENT: - case n1qlParser.NAMED_PARAM: - case n1qlParser.POSITIONAL_PARAM: - case n1qlParser.NEXT_PARAM: - this.enterOuterAlt(localctx, 2); - this.state = 2393; - this.exprs(0); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - exprs(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new ExprsContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 414; - this.enterRecursionRule(localctx, 414, n1qlParser.RULE_exprs, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2397; - this.expr(0); - this._ctx.stop = this._input.LT(-1); - this.state = 2404; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 137, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new ExprsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_exprs); - this.state = 2399; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 2400; - this.match(n1qlParser.COMMA); - this.state = 2401; - this.expr(0); - } - this.state = 2406; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 137, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - param_expr() { - let localctx = new Param_exprContext(this, this._ctx, this.state); - this.enterRule(localctx, 416, n1qlParser.RULE_param_expr); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 2407; - _la = this._input.LA(1); - if ( - !( - ((_la - 238) & ~0x1f) == 0 && - ((1 << (_la - 238)) & - ((1 << (n1qlParser.NAMED_PARAM - 238)) | - (1 << (n1qlParser.POSITIONAL_PARAM - 238)) | - (1 << (n1qlParser.NEXT_PARAM - 238)))) !== - 0 - ) - ) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - case_expr() { - let localctx = new Case_exprContext(this, this._ctx, this.state); - this.enterRule(localctx, 418, n1qlParser.RULE_case_expr); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2409; - this.match(n1qlParser.CASE); - this.state = 2410; - this.simple_or_searched_case(); - this.state = 2411; - this.match(n1qlParser.END); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - simple_or_searched_case() { - let localctx = new Simple_or_searched_caseContext(this, this._ctx, this.state); - this.enterRule(localctx, 420, n1qlParser.RULE_simple_or_searched_case); - try { - this.state = 2415; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.STR: - case n1qlParser.INT: - case n1qlParser.NUM: - case n1qlParser.MINUS: - case n1qlParser.LPAREN: - case n1qlParser.LBRACE: - case n1qlParser.LBRACKET: - case n1qlParser.ANY: - case n1qlParser.ARRAY: - case n1qlParser.CASE: - case n1qlParser.CORRELATED: - case n1qlParser.COVER: - case n1qlParser.EVERY: - case n1qlParser.EXISTS: - case n1qlParser.FALSE: - case n1qlParser.FIRST: - case n1qlParser.MISSING: - case n1qlParser.NOT: - case n1qlParser.NTH_VALUE: - case n1qlParser.NULL: - case n1qlParser.OBJECT: - case n1qlParser.REPLACE: - case n1qlParser.SELF: - case n1qlParser.SOME: - case n1qlParser.SYSTEM: - case n1qlParser.TRUE: - case n1qlParser.IDENT_ICASE: - case n1qlParser.IDENT: - case n1qlParser.NAMED_PARAM: - case n1qlParser.POSITIONAL_PARAM: - case n1qlParser.NEXT_PARAM: - this.enterOuterAlt(localctx, 1); - this.state = 2413; - this.simple_case(); - break; - case n1qlParser.WHEN: - this.enterOuterAlt(localctx, 2); - this.state = 2414; - this.searched_case(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - simple_case() { - let localctx = new Simple_caseContext(this, this._ctx, this.state); - this.enterRule(localctx, 422, n1qlParser.RULE_simple_case); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2417; - this.expr(0); - this.state = 2418; - this.when_thens(0); - this.state = 2419; - this.opt_else(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - when_thens(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new When_thensContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 424; - this.enterRecursionRule(localctx, 424, n1qlParser.RULE_when_thens, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2422; - this.match(n1qlParser.WHEN); - this.state = 2423; - this.expr(0); - this.state = 2424; - this.match(n1qlParser.THEN); - this.state = 2425; - this.expr(0); - this._ctx.stop = this._input.LT(-1); - this.state = 2435; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 139, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new When_thensContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_when_thens); - this.state = 2427; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 2428; - this.match(n1qlParser.WHEN); - this.state = 2429; - this.expr(0); - this.state = 2430; - this.match(n1qlParser.THEN); - this.state = 2431; - this.expr(0); - } - this.state = 2437; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 139, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - searched_case() { - let localctx = new Searched_caseContext(this, this._ctx, this.state); - this.enterRule(localctx, 426, n1qlParser.RULE_searched_case); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2438; - this.when_thens(0); - this.state = 2439; - this.opt_else(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_else() { - let localctx = new Opt_elseContext(this, this._ctx, this.state); - this.enterRule(localctx, 428, n1qlParser.RULE_opt_else); - try { - this.state = 2444; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.END: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.ELSE: - this.enterOuterAlt(localctx, 2); - this.state = 2442; - this.match(n1qlParser.ELSE); - this.state = 2443; - this.expr(0); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - function_expr() { - let localctx = new Function_exprContext(this, this._ctx, this.state); - this.enterRule(localctx, 430, n1qlParser.RULE_function_expr); - try { - this.state = 2482; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 141, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 2446; - this.match(n1qlParser.NTH_VALUE); - this.state = 2447; - this.match(n1qlParser.LPAREN); - this.state = 2448; - this.exprs(0); - this.state = 2449; - this.match(n1qlParser.RPAREN); - this.state = 2450; - this.opt_from_first_last(); - this.state = 2451; - this.opt_nulls_treatment(); - this.state = 2452; - this.window_function_details(); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 2454; - this.function_name(); - this.state = 2455; - this.match(n1qlParser.LPAREN); - this.state = 2456; - this.opt_exprs(); - this.state = 2457; - this.match(n1qlParser.RPAREN); - this.state = 2458; - this.opt_filter(); - this.state = 2459; - this.opt_nulls_treatment(); - this.state = 2460; - this.opt_window_function(); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 2462; - this.function_name(); - this.state = 2463; - this.match(n1qlParser.LPAREN); - this.state = 2464; - this.agg_quantifier(); - this.state = 2465; - this.expr(0); - this.state = 2466; - this.match(n1qlParser.RPAREN); - this.state = 2467; - this.opt_filter(); - this.state = 2468; - this.opt_window_function(); - break; - - case 4: - this.enterOuterAlt(localctx, 4); - this.state = 2470; - this.function_name(); - this.state = 2471; - this.match(n1qlParser.LPAREN); - this.state = 2472; - this.match(n1qlParser.STAR); - this.state = 2473; - this.match(n1qlParser.RPAREN); - this.state = 2474; - this.opt_filter(); - this.state = 2475; - this.opt_window_function(); - break; - - case 5: - this.enterOuterAlt(localctx, 5); - this.state = 2477; - this.long_func_name(); - this.state = 2478; - this.match(n1qlParser.LPAREN); - this.state = 2479; - this.opt_exprs(); - this.state = 2480; - this.match(n1qlParser.RPAREN); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - function_name() { - let localctx = new Function_nameContext(this, this._ctx, this.state); - this.enterRule(localctx, 432, n1qlParser.RULE_function_name); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 2484; - _la = this._input.LA(1); - if (!(_la === n1qlParser.REPLACE || _la === n1qlParser.IDENT)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - collection_expr() { - let localctx = new Collection_exprContext(this, this._ctx, this.state); - this.enterRule(localctx, 434, n1qlParser.RULE_collection_expr); - try { - this.state = 2488; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.ANY: - case n1qlParser.EVERY: - case n1qlParser.SOME: - this.enterOuterAlt(localctx, 1); - this.state = 2486; - this.collection_cond(); - break; - case n1qlParser.ARRAY: - case n1qlParser.FIRST: - case n1qlParser.OBJECT: - this.enterOuterAlt(localctx, 2); - this.state = 2487; - this.collection_xform(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - collection_cond() { - let localctx = new Collection_condContext(this, this._ctx, this.state); - this.enterRule(localctx, 436, n1qlParser.RULE_collection_cond); - try { - this.state = 2519; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 143, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 2490; - this.match(n1qlParser.ANY); - this.state = 2491; - this.coll_bindings(0); - this.state = 2492; - this.satisfies(); - this.state = 2493; - this.match(n1qlParser.END); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 2495; - this.match(n1qlParser.SOME); - this.state = 2496; - this.coll_bindings(0); - this.state = 2497; - this.satisfies(); - this.state = 2498; - this.match(n1qlParser.END); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 2500; - this.match(n1qlParser.EVERY); - this.state = 2501; - this.coll_bindings(0); - this.state = 2502; - this.satisfies(); - this.state = 2503; - this.match(n1qlParser.END); - break; - - case 4: - this.enterOuterAlt(localctx, 4); - this.state = 2505; - this.match(n1qlParser.ANY); - this.state = 2506; - this.match(n1qlParser.AND); - this.state = 2507; - this.match(n1qlParser.EVERY); - this.state = 2508; - this.coll_bindings(0); - this.state = 2509; - this.satisfies(); - this.state = 2510; - this.match(n1qlParser.END); - break; - - case 5: - this.enterOuterAlt(localctx, 5); - this.state = 2512; - this.match(n1qlParser.SOME); - this.state = 2513; - this.match(n1qlParser.AND); - this.state = 2514; - this.match(n1qlParser.EVERY); - this.state = 2515; - this.coll_bindings(0); - this.state = 2516; - this.satisfies(); - this.state = 2517; - this.match(n1qlParser.END); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - coll_bindings(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new Coll_bindingsContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 438; - this.enterRecursionRule(localctx, 438, n1qlParser.RULE_coll_bindings, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2522; - this.coll_binding(); - this._ctx.stop = this._input.LT(-1); - this.state = 2529; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 144, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new Coll_bindingsContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_coll_bindings); - this.state = 2524; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 2525; - this.match(n1qlParser.COMMA); - this.state = 2526; - this.coll_binding(); - } - this.state = 2531; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 144, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - coll_binding() { - let localctx = new Coll_bindingContext(this, this._ctx, this.state); - this.enterRule(localctx, 440, n1qlParser.RULE_coll_binding); - try { - this.state = 2552; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 145, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 2532; - this.variable(); - this.state = 2533; - this.match(n1qlParser.IN); - this.state = 2534; - this.expr(0); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 2536; - this.variable(); - this.state = 2537; - this.match(n1qlParser.WITHIN); - this.state = 2538; - this.expr(0); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 2540; - this.variable(); - this.state = 2541; - this.match(n1qlParser.COLON); - this.state = 2542; - this.variable(); - this.state = 2543; - this.match(n1qlParser.IN); - this.state = 2544; - this.expr(0); - break; - - case 4: - this.enterOuterAlt(localctx, 4); - this.state = 2546; - this.variable(); - this.state = 2547; - this.match(n1qlParser.COLON); - this.state = 2548; - this.variable(); - this.state = 2549; - this.match(n1qlParser.WITHIN); - this.state = 2550; - this.expr(0); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - satisfies() { - let localctx = new SatisfiesContext(this, this._ctx, this.state); - this.enterRule(localctx, 442, n1qlParser.RULE_satisfies); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2554; - this.match(n1qlParser.SATISFIES); - this.state = 2555; - this.expr(0); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - collection_xform() { - let localctx = new Collection_xformContext(this, this._ctx, this.state); - this.enterRule(localctx, 444, n1qlParser.RULE_collection_xform); - try { - this.state = 2580; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.ARRAY: - this.enterOuterAlt(localctx, 1); - this.state = 2557; - this.match(n1qlParser.ARRAY); - this.state = 2558; - this.expr(0); - this.state = 2559; - this.match(n1qlParser.FOR); - this.state = 2560; - this.coll_bindings(0); - this.state = 2561; - this.opt_when(); - this.state = 2562; - this.match(n1qlParser.END); - break; - case n1qlParser.FIRST: - this.enterOuterAlt(localctx, 2); - this.state = 2564; - this.match(n1qlParser.FIRST); - this.state = 2565; - this.expr(0); - this.state = 2566; - this.match(n1qlParser.FOR); - this.state = 2567; - this.coll_bindings(0); - this.state = 2568; - this.opt_when(); - this.state = 2569; - this.match(n1qlParser.END); - break; - case n1qlParser.OBJECT: - this.enterOuterAlt(localctx, 3); - this.state = 2571; - this.match(n1qlParser.OBJECT); - this.state = 2572; - this.expr(0); - this.state = 2573; - this.match(n1qlParser.COLON); - this.state = 2574; - this.expr(0); - this.state = 2575; - this.match(n1qlParser.FOR); - this.state = 2576; - this.coll_bindings(0); - this.state = 2577; - this.opt_when(); - this.state = 2578; - this.match(n1qlParser.END); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - paren_expr() { - let localctx = new Paren_exprContext(this, this._ctx, this.state); - this.enterRule(localctx, 446, n1qlParser.RULE_paren_expr); - try { - this.state = 2591; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 147, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 2582; - this.match(n1qlParser.LPAREN); - this.state = 2583; - this.expr(0); - this.state = 2584; - this.match(n1qlParser.RPAREN); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 2586; - this.match(n1qlParser.LPAREN); - this.state = 2587; - this.all_expr(); - this.state = 2588; - this.match(n1qlParser.RPAREN); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 2590; - this.subquery_expr(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - subquery_expr() { - let localctx = new Subquery_exprContext(this, this._ctx, this.state); - this.enterRule(localctx, 448, n1qlParser.RULE_subquery_expr); - try { - this.state = 2602; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.CORRELATED: - this.enterOuterAlt(localctx, 1); - this.state = 2593; - this.match(n1qlParser.CORRELATED); - this.state = 2594; - this.match(n1qlParser.LPAREN); - this.state = 2595; - this.fullselect(); - this.state = 2596; - this.match(n1qlParser.RPAREN); - break; - case n1qlParser.LPAREN: - this.enterOuterAlt(localctx, 2); - this.state = 2598; - this.match(n1qlParser.LPAREN); - this.state = 2599; - this.fullselect(); - this.state = 2600; - this.match(n1qlParser.RPAREN); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - expr_input() { - let localctx = new Expr_inputContext(this, this._ctx, this.state); - this.enterRule(localctx, 450, n1qlParser.RULE_expr_input); - try { - this.state = 2606; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.STR: - case n1qlParser.INT: - case n1qlParser.NUM: - case n1qlParser.MINUS: - case n1qlParser.LPAREN: - case n1qlParser.LBRACE: - case n1qlParser.LBRACKET: - case n1qlParser.ANY: - case n1qlParser.ARRAY: - case n1qlParser.CASE: - case n1qlParser.CORRELATED: - case n1qlParser.COVER: - case n1qlParser.EVERY: - case n1qlParser.EXISTS: - case n1qlParser.FALSE: - case n1qlParser.FIRST: - case n1qlParser.MISSING: - case n1qlParser.NOT: - case n1qlParser.NTH_VALUE: - case n1qlParser.NULL: - case n1qlParser.OBJECT: - case n1qlParser.REPLACE: - case n1qlParser.SELF: - case n1qlParser.SOME: - case n1qlParser.SYSTEM: - case n1qlParser.TRUE: - case n1qlParser.IDENT_ICASE: - case n1qlParser.IDENT: - case n1qlParser.NAMED_PARAM: - case n1qlParser.POSITIONAL_PARAM: - case n1qlParser.NEXT_PARAM: - this.enterOuterAlt(localctx, 1); - this.state = 2604; - this.expr(0); - break; - case n1qlParser.ALL: - case n1qlParser.DISTINCT: - case n1qlParser.EACH: - this.enterOuterAlt(localctx, 2); - this.state = 2605; - this.all_expr(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - all_expr() { - let localctx = new All_exprContext(this, this._ctx, this.state); - this.enterRule(localctx, 452, n1qlParser.RULE_all_expr); - try { - this.state = 2617; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 150, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 2608; - this.all(); - this.state = 2609; - this.expr(0); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 2611; - this.all(); - this.state = 2612; - this.match(n1qlParser.DISTINCT); - this.state = 2613; - this.expr(0); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 2615; - this.match(n1qlParser.DISTINCT); - this.state = 2616; - this.expr(0); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_window_clause() { - let localctx = new Opt_window_clauseContext(this, this._ctx, this.state); - this.enterRule(localctx, 454, n1qlParser.RULE_opt_window_clause); - try { - this.state = 2622; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 151, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 2620; - this.match(n1qlParser.WINDOW); - this.state = 2621; - this.window_list(0); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - window_list(_p) { - if (_p === undefined) { - _p = 0; - } - const _parentctx = this._ctx; - const _parentState = this.state; - let localctx = new Window_listContext(this, this._ctx, _parentState); - let _prevctx = localctx; - const _startState = 456; - this.enterRecursionRule(localctx, 456, n1qlParser.RULE_window_list, _p); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2625; - this.window_term(); - this._ctx.stop = this._input.LT(-1); - this.state = 2632; - this._errHandler.sync(this); - var _alt = this._interp.adaptivePredict(this._input, 152, this._ctx); - while (_alt != 2 && _alt != antlr4.atn.ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners !== null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - localctx = new Window_listContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, n1qlParser.RULE_window_list); - this.state = 2627; - if (!this.precpred(this._ctx, 1)) { - throw new antlr4.error.FailedPredicateException(this, 'this.precpred(this._ctx, 1)'); - } - this.state = 2628; - this.match(n1qlParser.COMMA); - this.state = 2629; - this.window_term(); - } - this.state = 2634; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 152, this._ctx); - } - } catch (error) { - if (error instanceof antlr4.error.RecognitionException) { - localctx.exception = error; - this._errHandler.reportError(this, error); - this._errHandler.recover(this, error); - } else { - throw error; - } - } finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - - window_term() { - let localctx = new Window_termContext(this, this._ctx, this.state); - this.enterRule(localctx, 458, n1qlParser.RULE_window_term); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2635; - this.match(n1qlParser.IDENT); - this.state = 2636; - this.match(n1qlParser.AS); - this.state = 2637; - this.window_specification(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - window_specification() { - let localctx = new Window_specificationContext(this, this._ctx, this.state); - this.enterRule(localctx, 460, n1qlParser.RULE_window_specification); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2639; - this.match(n1qlParser.LPAREN); - this.state = 2640; - this.opt_window_name(); - this.state = 2641; - this.opt_window_partition(); - this.state = 2642; - this.opt_order_by(); - this.state = 2643; - this.opt_window_frame(); - this.state = 2644; - this.match(n1qlParser.RPAREN); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_window_name() { - let localctx = new Opt_window_nameContext(this, this._ctx, this.state); - this.enterRule(localctx, 462, n1qlParser.RULE_opt_window_name); - try { - this.state = 2648; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.RPAREN: - case n1qlParser.GROUPS: - case n1qlParser.ORDER: - case n1qlParser.PARTITION: - case n1qlParser.RANGE: - case n1qlParser.ROWS: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.IDENT: - this.enterOuterAlt(localctx, 2); - this.state = 2647; - this.match(n1qlParser.IDENT); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_window_partition() { - let localctx = new Opt_window_partitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 464, n1qlParser.RULE_opt_window_partition); - try { - this.state = 2654; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.RPAREN: - case n1qlParser.GROUPS: - case n1qlParser.ORDER: - case n1qlParser.RANGE: - case n1qlParser.ROWS: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.PARTITION: - this.enterOuterAlt(localctx, 2); - this.state = 2651; - this.match(n1qlParser.PARTITION); - this.state = 2652; - this.match(n1qlParser.BY); - this.state = 2653; - this.exprs(0); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_window_frame() { - let localctx = new Opt_window_frameContext(this, this._ctx, this.state); - this.enterRule(localctx, 466, n1qlParser.RULE_opt_window_frame); - try { - this.state = 2661; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.RPAREN: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.GROUPS: - case n1qlParser.RANGE: - case n1qlParser.ROWS: - this.enterOuterAlt(localctx, 2); - this.state = 2657; - this.window_frame_modifier(); - this.state = 2658; - this.window_frame_extents(); - this.state = 2659; - this.opt_window_frame_exclusion(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - window_frame_modifier() { - let localctx = new Window_frame_modifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 468, n1qlParser.RULE_window_frame_modifier); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 2663; - _la = this._input.LA(1); - if (!(_la === n1qlParser.GROUPS || _la === n1qlParser.RANGE || _la === n1qlParser.ROWS)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_window_frame_exclusion() { - let localctx = new Opt_window_frame_exclusionContext(this, this._ctx, this.state); - this.enterRule(localctx, 470, n1qlParser.RULE_opt_window_frame_exclusion); - try { - this.state = 2676; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 156, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 2666; - this.match(n1qlParser.EXCLUDE); - this.state = 2667; - this.match(n1qlParser.NO); - this.state = 2668; - this.match(n1qlParser.OTHERS); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 2669; - this.match(n1qlParser.EXCLUDE); - this.state = 2670; - this.match(n1qlParser.CURRENT); - this.state = 2671; - this.match(n1qlParser.ROW); - break; - - case 4: - this.enterOuterAlt(localctx, 4); - this.state = 2672; - this.match(n1qlParser.EXCLUDE); - this.state = 2673; - this.match(n1qlParser.TIES); - break; - - case 5: - this.enterOuterAlt(localctx, 5); - this.state = 2674; - this.match(n1qlParser.EXCLUDE); - this.state = 2675; - this.match(n1qlParser.GROUP); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - window_frame_extents() { - let localctx = new Window_frame_extentsContext(this, this._ctx, this.state); - this.enterRule(localctx, 472, n1qlParser.RULE_window_frame_extents); - try { - this.state = 2684; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.STR: - case n1qlParser.INT: - case n1qlParser.NUM: - case n1qlParser.MINUS: - case n1qlParser.LPAREN: - case n1qlParser.LBRACE: - case n1qlParser.LBRACKET: - case n1qlParser.ANY: - case n1qlParser.ARRAY: - case n1qlParser.CASE: - case n1qlParser.CORRELATED: - case n1qlParser.COVER: - case n1qlParser.CURRENT: - case n1qlParser.EVERY: - case n1qlParser.EXISTS: - case n1qlParser.FALSE: - case n1qlParser.FIRST: - case n1qlParser.MISSING: - case n1qlParser.NOT: - case n1qlParser.NTH_VALUE: - case n1qlParser.NULL: - case n1qlParser.OBJECT: - case n1qlParser.REPLACE: - case n1qlParser.SELF: - case n1qlParser.SOME: - case n1qlParser.SYSTEM: - case n1qlParser.TRUE: - case n1qlParser.UNBOUNDED: - case n1qlParser.IDENT_ICASE: - case n1qlParser.IDENT: - case n1qlParser.NAMED_PARAM: - case n1qlParser.POSITIONAL_PARAM: - case n1qlParser.NEXT_PARAM: - this.enterOuterAlt(localctx, 1); - this.state = 2678; - this.window_frame_extent(); - break; - case n1qlParser.BETWEEN: - this.enterOuterAlt(localctx, 2); - this.state = 2679; - this.match(n1qlParser.BETWEEN); - this.state = 2680; - this.window_frame_extent(); - this.state = 2681; - this.match(n1qlParser.AND); - this.state = 2682; - this.window_frame_extent(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - window_frame_extent() { - let localctx = new Window_frame_extentContext(this, this._ctx, this.state); - this.enterRule(localctx, 474, n1qlParser.RULE_window_frame_extent); - try { - this.state = 2695; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 158, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 2686; - this.match(n1qlParser.UNBOUNDED); - this.state = 2687; - this.match(n1qlParser.PRECEDING); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 2688; - this.match(n1qlParser.UNBOUNDED); - this.state = 2689; - this.match(n1qlParser.FOLLOWING); - break; - - case 3: - this.enterOuterAlt(localctx, 3); - this.state = 2690; - this.match(n1qlParser.CURRENT); - this.state = 2691; - this.match(n1qlParser.ROW); - break; - - case 4: - this.enterOuterAlt(localctx, 4); - this.state = 2692; - this.expr(0); - this.state = 2693; - this.window_frame_valexpr_modifier(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - window_frame_valexpr_modifier() { - let localctx = new Window_frame_valexpr_modifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 476, n1qlParser.RULE_window_frame_valexpr_modifier); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 2697; - _la = this._input.LA(1); - if (!(_la === n1qlParser.FOLLOWING || _la === n1qlParser.PRECEDING)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_nulls_treatment() { - let localctx = new Opt_nulls_treatmentContext(this, this._ctx, this.state); - this.enterRule(localctx, 478, n1qlParser.RULE_opt_nulls_treatment); - try { - this.state = 2701; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 159, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 2700; - this.nulls_treatment(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - nulls_treatment() { - let localctx = new Nulls_treatmentContext(this, this._ctx, this.state); - this.enterRule(localctx, 480, n1qlParser.RULE_nulls_treatment); - try { - this.state = 2707; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.RESPECT: - this.enterOuterAlt(localctx, 1); - this.state = 2703; - this.match(n1qlParser.RESPECT); - this.state = 2704; - this.match(n1qlParser.NULLS); - break; - case n1qlParser.IGNORE: - this.enterOuterAlt(localctx, 2); - this.state = 2705; - this.match(n1qlParser.IGNORE); - this.state = 2706; - this.match(n1qlParser.NULLS); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_from_first_last() { - let localctx = new Opt_from_first_lastContext(this, this._ctx, this.state); - this.enterRule(localctx, 482, n1qlParser.RULE_opt_from_first_last); - try { - this.state = 2712; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case n1qlParser.IGNORE: - case n1qlParser.OVER: - case n1qlParser.RESPECT: - this.enterOuterAlt(localctx, 1); - - break; - case n1qlParser.FROM: - this.enterOuterAlt(localctx, 2); - this.state = 2710; - this.match(n1qlParser.FROM); - this.state = 2711; - this.first_last(); - break; - default: - throw new antlr4.error.NoViableAltException(this); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - agg_quantifier() { - let localctx = new Agg_quantifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 484, n1qlParser.RULE_agg_quantifier); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 2714; - _la = this._input.LA(1); - if (!(_la === n1qlParser.ALL || _la === n1qlParser.DISTINCT)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_filter() { - let localctx = new Opt_filterContext(this, this._ctx, this.state); - this.enterRule(localctx, 486, n1qlParser.RULE_opt_filter); - try { - this.state = 2722; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 162, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 2717; - this.match(n1qlParser.FILTER); - this.state = 2718; - this.match(n1qlParser.LPAREN); - this.state = 2719; - this.where(); - this.state = 2720; - this.match(n1qlParser.RPAREN); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_window_function() { - let localctx = new Opt_window_functionContext(this, this._ctx, this.state); - this.enterRule(localctx, 488, n1qlParser.RULE_opt_window_function); - try { - this.state = 2726; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 163, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 2725; - this.window_function_details(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - window_function_details() { - let localctx = new Window_function_detailsContext(this, this._ctx, this.state); - this.enterRule(localctx, 490, n1qlParser.RULE_window_function_details); - try { - this.state = 2732; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 164, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - this.state = 2728; - this.match(n1qlParser.OVER); - this.state = 2729; - this.match(n1qlParser.IDENT); - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 2730; - this.match(n1qlParser.OVER); - this.state = 2731; - this.window_specification(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - start_transaction() { - let localctx = new Start_transactionContext(this, this._ctx, this.state); - this.enterRule(localctx, 492, n1qlParser.RULE_start_transaction); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2734; - this.start_or_begin(); - this.state = 2735; - this.transaction(); - this.state = 2736; - this.opt_isolation_level(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - commit_transaction() { - let localctx = new Commit_transactionContext(this, this._ctx, this.state); - this.enterRule(localctx, 494, n1qlParser.RULE_commit_transaction); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2738; - this.match(n1qlParser.COMMIT); - this.state = 2739; - this.opt_transaction(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - rollback_transaction() { - let localctx = new Rollback_transactionContext(this, this._ctx, this.state); - this.enterRule(localctx, 496, n1qlParser.RULE_rollback_transaction); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2741; - this.match(n1qlParser.ROLLBACK); - this.state = 2742; - this.opt_transaction(); - this.state = 2743; - this.opt_savepoint(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - start_or_begin() { - let localctx = new Start_or_beginContext(this, this._ctx, this.state); - this.enterRule(localctx, 498, n1qlParser.RULE_start_or_begin); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 2745; - _la = this._input.LA(1); - if (!(_la === n1qlParser.BEGIN || _la === n1qlParser.START)) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_transaction() { - let localctx = new Opt_transactionContext(this, this._ctx, this.state); - this.enterRule(localctx, 500, n1qlParser.RULE_opt_transaction); - try { - this.state = 2749; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 165, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 2748; - this.transaction(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - transaction() { - let localctx = new TransactionContext(this, this._ctx, this.state); - this.enterRule(localctx, 502, n1qlParser.RULE_transaction); - var _la = 0; // Token type - try { - this.enterOuterAlt(localctx, 1); - this.state = 2751; - _la = this._input.LA(1); - if ( - !( - ((_la - 205) & ~0x1f) == 0 && - ((1 << (_la - 205)) & - ((1 << (n1qlParser.TRAN - 205)) | - (1 << (n1qlParser.TRANSACTION - 205)) | - (1 << (n1qlParser.WORK - 205)))) !== - 0 - ) - ) { - this._errHandler.recoverInline(this); - } else { - this._errHandler.reportMatch(this); - this.consume(); - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_savepoint() { - let localctx = new Opt_savepointContext(this, this._ctx, this.state); - this.enterRule(localctx, 504, n1qlParser.RULE_opt_savepoint); - try { - this.state = 2757; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 166, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 2754; - this.match(n1qlParser.TO); - this.state = 2755; - this.match(n1qlParser.SAVEPOINT); - this.state = 2756; - this.savepoint_name(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - savepoint_name() { - let localctx = new Savepoint_nameContext(this, this._ctx, this.state); - this.enterRule(localctx, 506, n1qlParser.RULE_savepoint_name); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2759; - this.match(n1qlParser.IDENT); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - opt_isolation_level() { - let localctx = new Opt_isolation_levelContext(this, this._ctx, this.state); - this.enterRule(localctx, 508, n1qlParser.RULE_opt_isolation_level); - try { - this.state = 2763; - this._errHandler.sync(this); - var la_ = this._interp.adaptivePredict(this._input, 167, this._ctx); - switch (la_) { - case 1: - this.enterOuterAlt(localctx, 1); - - break; - - case 2: - this.enterOuterAlt(localctx, 2); - this.state = 2762; - this.isolation_level(); - break; - } - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - isolation_level() { - let localctx = new Isolation_levelContext(this, this._ctx, this.state); - this.enterRule(localctx, 510, n1qlParser.RULE_isolation_level); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2765; - this.match(n1qlParser.ISOLATION); - this.state = 2766; - this.match(n1qlParser.LEVEL); - this.state = 2767; - this.isolation_val(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - isolation_val() { - let localctx = new Isolation_valContext(this, this._ctx, this.state); - this.enterRule(localctx, 512, n1qlParser.RULE_isolation_val); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2769; - this.match(n1qlParser.READ); - this.state = 2770; - this.match(n1qlParser.COMMITTED); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - set_transaction_isolation() { - let localctx = new Set_transaction_isolationContext(this, this._ctx, this.state); - this.enterRule(localctx, 514, n1qlParser.RULE_set_transaction_isolation); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2772; - this.match(n1qlParser.SET); - this.state = 2773; - this.match(n1qlParser.TRANSACTION); - this.state = 2774; - this.isolation_level(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - savepoint() { - let localctx = new SavepointContext(this, this._ctx, this.state); - this.enterRule(localctx, 516, n1qlParser.RULE_savepoint); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2776; - this.match(n1qlParser.SAVEPOINT); - this.state = 2777; - this.savepoint_name(); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - if_exists() { - let localctx = new If_existsContext(this, this._ctx, this.state); - this.enterRule(localctx, 518, n1qlParser.RULE_if_exists); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2779; - this.match(n1qlParser.IF); - this.state = 2780; - this.match(n1qlParser.EXISTS); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } - - if_not_exists() { - let localctx = new If_not_existsContext(this, this._ctx, this.state); - this.enterRule(localctx, 520, n1qlParser.RULE_if_not_exists); - try { - this.enterOuterAlt(localctx, 1); - this.state = 2782; - this.match(n1qlParser.IF); - this.state = 2783; - this.match(n1qlParser.NOT); - this.state = 2784; - this.match(n1qlParser.EXISTS); - } catch (re) { - if (re instanceof antlr4.error.RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } finally { - this.exitRule(); - } - return localctx; - } -} - -n1qlParser.EOF = antlr4.Token.EOF; -n1qlParser.STR = 1; -n1qlParser.INT = 2; -n1qlParser.NUM = 3; -n1qlParser.BLOCK_COMMENT = 4; -n1qlParser.LINE_COMMENT = 5; -n1qlParser.WHITESPACE = 6; -n1qlParser.DOT = 7; -n1qlParser.PLUS = 8; -n1qlParser.MINUS = 9; -n1qlParser.STAR = 10; -n1qlParser.DIV = 11; -n1qlParser.MOD = 12; -n1qlParser.DEQ = 13; -n1qlParser.EQ = 14; -n1qlParser.NE = 15; -n1qlParser.LT = 16; -n1qlParser.LE = 17; -n1qlParser.GT = 18; -n1qlParser.GE = 19; -n1qlParser.CONCAT = 20; -n1qlParser.LPAREN = 21; -n1qlParser.RPAREN = 22; -n1qlParser.LBRACE = 23; -n1qlParser.RBRACE = 24; -n1qlParser.COMMA = 25; -n1qlParser.COLON = 26; -n1qlParser.LBRACKET = 27; -n1qlParser.RBRACKET = 28; -n1qlParser.RBRACKET_ICASE = 29; -n1qlParser.SEMI = 30; -n1qlParser.NOT_A_TOKEN = 31; -n1qlParser.ADVISE = 32; -n1qlParser.ALL = 33; -n1qlParser.ALTER = 34; -n1qlParser.ANALYZE = 35; -n1qlParser.AND = 36; -n1qlParser.ANY = 37; -n1qlParser.ARRAY = 38; -n1qlParser.AS = 39; -n1qlParser.ASC = 40; -n1qlParser.AT = 41; -n1qlParser.BEGIN = 42; -n1qlParser.BETWEEN = 43; -n1qlParser.BINARY = 44; -n1qlParser.BOOLEAN = 45; -n1qlParser.BREAK = 46; -n1qlParser.BUCKET = 47; -n1qlParser.BUILD = 48; -n1qlParser.BY = 49; -n1qlParser.CALL = 50; -n1qlParser.CASE = 51; -n1qlParser.CAST = 52; -n1qlParser.CLUSTER = 53; -n1qlParser.COLLATE = 54; -n1qlParser.COLLECTION = 55; -n1qlParser.COMMIT = 56; -n1qlParser.COMMITTED = 57; -n1qlParser.CONNECT = 58; -n1qlParser.CONTINUE = 59; -n1qlParser.CORRELATED = 60; -n1qlParser.COVER = 61; -n1qlParser.CREATE = 62; -n1qlParser.CURRENT = 63; -n1qlParser.DATABASE = 64; -n1qlParser.DATASET = 65; -n1qlParser.DATASTORE = 66; -n1qlParser.DECLARE = 67; -n1qlParser.DECREMENT = 68; -n1qlParser.DELETE_ = 69; -n1qlParser.DERIVED = 70; -n1qlParser.DESC = 71; -n1qlParser.DESCRIBE = 72; -n1qlParser.DISTINCT = 73; -n1qlParser.DO = 74; -n1qlParser.DROP = 75; -n1qlParser.EACH = 76; -n1qlParser.ELEMENT = 77; -n1qlParser.ELSE = 78; -n1qlParser.END = 79; -n1qlParser.EVERY = 80; -n1qlParser.EXCEPT = 81; -n1qlParser.EXCLUDE = 82; -n1qlParser.EXECUTE = 83; -n1qlParser.EXISTS = 84; -n1qlParser.EXPLAIN = 85; -n1qlParser.FALSE = 86; -n1qlParser.FETCH = 87; -n1qlParser.FILTER = 88; -n1qlParser.FIRST = 89; -n1qlParser.FLATTEN = 90; -n1qlParser.FLUSH = 91; -n1qlParser.FOLLOWING = 92; -n1qlParser.FOR = 93; -n1qlParser.FORCE = 94; -n1qlParser.FROM = 95; -n1qlParser.FTS = 96; -n1qlParser.FUNCTION = 97; -n1qlParser.GOLANG = 98; -n1qlParser.GRANT = 99; -n1qlParser.GROUP = 100; -n1qlParser.GROUPS = 101; -n1qlParser.GSI = 102; -n1qlParser.HASH = 103; -n1qlParser.HAVING = 104; -n1qlParser.IF = 105; -n1qlParser.IGNORE = 106; -n1qlParser.ILIKE = 107; -n1qlParser.IN = 108; -n1qlParser.INCLUDE = 109; -n1qlParser.INCREMENT = 110; -n1qlParser.INDEX = 111; -n1qlParser.INFER = 112; -n1qlParser.INLINE = 113; -n1qlParser.INNER = 114; -n1qlParser.INSERT = 115; -n1qlParser.INTERSECT = 116; -n1qlParser.INTO = 117; -n1qlParser.IS = 118; -n1qlParser.ISOLATION = 119; -n1qlParser.JAVASCRIPT = 120; -n1qlParser.JOIN = 121; -n1qlParser.KEY = 122; -n1qlParser.KEYS = 123; -n1qlParser.KEYSPACE = 124; -n1qlParser.KNOWN = 125; -n1qlParser.LANGUAGE = 126; -n1qlParser.LAST = 127; -n1qlParser.LEFT = 128; -n1qlParser.LET_ = 129; -n1qlParser.LETTING = 130; -n1qlParser.LEVEL = 131; -n1qlParser.LIKE = 132; -n1qlParser.LIMIT = 133; -n1qlParser.LSM = 134; -n1qlParser.MAP = 135; -n1qlParser.MAPPING = 136; -n1qlParser.MATCHED = 137; -n1qlParser.MATERIALIZED = 138; -n1qlParser.MERGE = 139; -n1qlParser.MISSING = 140; -n1qlParser.NAMESPACE = 141; -n1qlParser.NEST = 142; -n1qlParser.NL = 143; -n1qlParser.NO = 144; -n1qlParser.NOT = 145; -n1qlParser.NTH_VALUE = 146; -n1qlParser.NULL = 147; -n1qlParser.NULLS = 148; -n1qlParser.NUMBER = 149; -n1qlParser.OBJECT = 150; -n1qlParser.OFFSET = 151; -n1qlParser.ON = 152; -n1qlParser.OPTION = 153; -n1qlParser.OPTIONS = 154; -n1qlParser.OR = 155; -n1qlParser.ORDER = 156; -n1qlParser.OTHERS = 157; -n1qlParser.OUTER = 158; -n1qlParser.OVER = 159; -n1qlParser.PARSE = 160; -n1qlParser.PARTITION = 161; -n1qlParser.PASSWORD = 162; -n1qlParser.PATH = 163; -n1qlParser.POOL = 164; -n1qlParser.PRECEDING = 165; -n1qlParser.PREPARE = 166; -n1qlParser.PRIMARY = 167; -n1qlParser.PRIVATE = 168; -n1qlParser.PRIVILEGE = 169; -n1qlParser.PROCEDURE = 170; -n1qlParser.PROBE = 171; -n1qlParser.PUBLIC = 172; -n1qlParser.RANGE = 173; -n1qlParser.RAW = 174; -n1qlParser.READ = 175; -n1qlParser.REALM = 176; -n1qlParser.REDUCE = 177; -n1qlParser.RENAME = 178; -n1qlParser.REPLACE = 179; -n1qlParser.RESPECT = 180; -n1qlParser.RETURN = 181; -n1qlParser.RETURNING = 182; -n1qlParser.REVOKE = 183; -n1qlParser.RIGHT = 184; -n1qlParser.ROLE = 185; -n1qlParser.ROLLBACK = 186; -n1qlParser.ROW = 187; -n1qlParser.ROWS = 188; -n1qlParser.SATISFIES = 189; -n1qlParser.SAVEPOINT = 190; -n1qlParser.SCHEMA = 191; -n1qlParser.SCOPE = 192; -n1qlParser.SELECT = 193; -n1qlParser.SELF = 194; -n1qlParser.SET = 195; -n1qlParser.SHOW = 196; -n1qlParser.SOME = 197; -n1qlParser.START = 198; -n1qlParser.STATISTICS = 199; -n1qlParser.STRING = 200; -n1qlParser.SYSTEM = 201; -n1qlParser.THEN = 202; -n1qlParser.TIES = 203; -n1qlParser.TO = 204; -n1qlParser.TRAN = 205; -n1qlParser.TRANSACTION = 206; -n1qlParser.TRIGGER = 207; -n1qlParser.TRUE = 208; -n1qlParser.TRUNCATE = 209; -n1qlParser.UNBOUNDED = 210; -n1qlParser.UNDER = 211; -n1qlParser.UNION = 212; -n1qlParser.UNIQUE = 213; -n1qlParser.UNKNOWN = 214; -n1qlParser.UNNEST = 215; -n1qlParser.UNSET = 216; -n1qlParser.UPDATE = 217; -n1qlParser.UPSERT = 218; -n1qlParser.USE = 219; -n1qlParser.USER = 220; -n1qlParser.USING = 221; -n1qlParser.VALIDATE = 222; -n1qlParser.VALUE = 223; -n1qlParser.VALUED = 224; -n1qlParser.VALUES = 225; -n1qlParser.VIA = 226; -n1qlParser.VIEW = 227; -n1qlParser.WHEN = 228; -n1qlParser.WHERE = 229; -n1qlParser.WHILE = 230; -n1qlParser.WINDOW = 231; -n1qlParser.WITH = 232; -n1qlParser.WITHIN = 233; -n1qlParser.WORK = 234; -n1qlParser.XOR = 235; -n1qlParser.IDENT_ICASE = 236; -n1qlParser.IDENT = 237; -n1qlParser.NAMED_PARAM = 238; -n1qlParser.POSITIONAL_PARAM = 239; -n1qlParser.NEXT_PARAM = 240; - -n1qlParser.RULE_statements = 0; -n1qlParser.RULE_input = 1; -n1qlParser.RULE_opt_trailer = 2; -n1qlParser.RULE_stmt_body = 3; -n1qlParser.RULE_stmt = 4; -n1qlParser.RULE_advise = 5; -n1qlParser.RULE_opt_index = 6; -n1qlParser.RULE_explain = 7; -n1qlParser.RULE_prepare = 8; -n1qlParser.RULE_opt_force = 9; -n1qlParser.RULE_opt_name = 10; -n1qlParser.RULE_from_or_as = 11; -n1qlParser.RULE_execute = 12; -n1qlParser.RULE_execute_using = 13; -n1qlParser.RULE_infer = 14; -n1qlParser.RULE_opt_keyspace_collection = 15; -n1qlParser.RULE_opt_infer_using = 16; -n1qlParser.RULE_opt_infer_ustat_with = 17; -n1qlParser.RULE_infer_ustat_with = 18; -n1qlParser.RULE_select_stmt = 19; -n1qlParser.RULE_dml_stmt = 20; -n1qlParser.RULE_ddl_stmt = 21; -n1qlParser.RULE_role_stmt = 22; -n1qlParser.RULE_index_stmt = 23; -n1qlParser.RULE_scope_stmt = 24; -n1qlParser.RULE_collection_stmt = 25; -n1qlParser.RULE_function_stmt = 26; -n1qlParser.RULE_transaction_stmt = 27; -n1qlParser.RULE_fullselect = 28; -n1qlParser.RULE_select_terms = 29; -n1qlParser.RULE_select_term = 30; -n1qlParser.RULE_subselect = 31; -n1qlParser.RULE_from_select = 32; -n1qlParser.RULE_select_from = 33; -n1qlParser.RULE_select_clause = 34; -n1qlParser.RULE_projection = 35; -n1qlParser.RULE_opt_quantifier = 36; -n1qlParser.RULE_raw = 37; -n1qlParser.RULE_projects = 38; -n1qlParser.RULE_project = 39; -n1qlParser.RULE_opt_as_alias = 40; -n1qlParser.RULE_as_alias = 41; -n1qlParser.RULE_alias = 42; -n1qlParser.RULE_opt_from = 43; -n1qlParser.RULE_from = 44; -n1qlParser.RULE_from_term = 45; -n1qlParser.RULE_simple_from_term = 46; -n1qlParser.RULE_unnest = 47; -n1qlParser.RULE_keyspace_term = 48; -n1qlParser.RULE_keyspace_path = 49; -n1qlParser.RULE_namespace_term = 50; -n1qlParser.RULE_namespace_name = 51; -n1qlParser.RULE_bucket_name = 52; -n1qlParser.RULE_scope_name = 53; -n1qlParser.RULE_keyspace_name = 54; -n1qlParser.RULE_opt_use = 55; -n1qlParser.RULE_use_options = 56; -n1qlParser.RULE_use_keys = 57; -n1qlParser.RULE_use_index = 58; -n1qlParser.RULE_join_hint = 59; -n1qlParser.RULE_opt_primary = 60; -n1qlParser.RULE_index_refs = 61; -n1qlParser.RULE_index_ref = 62; -n1qlParser.RULE_use_hash_option = 63; -n1qlParser.RULE_opt_use_del_upd = 64; -n1qlParser.RULE_opt_join_type = 65; -n1qlParser.RULE_opt_outer = 66; -n1qlParser.RULE_on_keys = 67; -n1qlParser.RULE_on_key = 68; -n1qlParser.RULE_opt_let = 69; -n1qlParser.RULE_let_ = 70; -n1qlParser.RULE_bindings = 71; -n1qlParser.RULE_binding = 72; -n1qlParser.RULE_opt_with = 73; -n1qlParser.RULE_with_list = 74; -n1qlParser.RULE_with_term = 75; -n1qlParser.RULE_opt_where = 76; -n1qlParser.RULE_where = 77; -n1qlParser.RULE_opt_group = 78; -n1qlParser.RULE_group = 79; -n1qlParser.RULE_group_terms = 80; -n1qlParser.RULE_group_term = 81; -n1qlParser.RULE_opt_letting = 82; -n1qlParser.RULE_letting = 83; -n1qlParser.RULE_opt_having = 84; -n1qlParser.RULE_having = 85; -n1qlParser.RULE_opt_order_by = 86; -n1qlParser.RULE_order_by = 87; -n1qlParser.RULE_sort_terms = 88; -n1qlParser.RULE_sort_term = 89; -n1qlParser.RULE_opt_dir = 90; -n1qlParser.RULE_dir = 91; -n1qlParser.RULE_opt_order_nulls = 92; -n1qlParser.RULE_first_last = 93; -n1qlParser.RULE_nulls = 94; -n1qlParser.RULE_opt_limit = 95; -n1qlParser.RULE_limit = 96; -n1qlParser.RULE_opt_offset = 97; -n1qlParser.RULE_offset = 98; -n1qlParser.RULE_insert = 99; -n1qlParser.RULE_simple_keyspace_ref = 100; -n1qlParser.RULE_keyspace_ref = 101; -n1qlParser.RULE_opt_values_header = 102; -n1qlParser.RULE_key = 103; -n1qlParser.RULE_values_list = 104; -n1qlParser.RULE_values = 105; -n1qlParser.RULE_next_values = 106; -n1qlParser.RULE_key_val_expr = 107; -n1qlParser.RULE_key_val_options_expr = 108; -n1qlParser.RULE_opt_returning = 109; -n1qlParser.RULE_returning = 110; -n1qlParser.RULE_returns_ = 111; -n1qlParser.RULE_key_expr_header = 112; -n1qlParser.RULE_value_expr_header = 113; -n1qlParser.RULE_options_expr_header = 114; -n1qlParser.RULE_key_val_options_expr_header = 115; -n1qlParser.RULE_upsert = 116; -n1qlParser.RULE_delete_ = 117; -n1qlParser.RULE_update = 118; -n1qlParser.RULE_set = 119; -n1qlParser.RULE_set_terms = 120; -n1qlParser.RULE_set_term = 121; -n1qlParser.RULE_function_meta_expr = 122; -n1qlParser.RULE_opt_update_for = 123; -n1qlParser.RULE_update_for = 124; -n1qlParser.RULE_update_dimensions = 125; -n1qlParser.RULE_update_dimension = 126; -n1qlParser.RULE_update_binding = 127; -n1qlParser.RULE_variable = 128; -n1qlParser.RULE_opt_when = 129; -n1qlParser.RULE_unset = 130; -n1qlParser.RULE_unset_terms = 131; -n1qlParser.RULE_unset_term = 132; -n1qlParser.RULE_merge = 133; -n1qlParser.RULE_opt_use_merge = 134; -n1qlParser.RULE_opt_key = 135; -n1qlParser.RULE_merge_actions = 136; -n1qlParser.RULE_opt_merge_delete_insert = 137; -n1qlParser.RULE_opt_merge_insert = 138; -n1qlParser.RULE_merge_update = 139; -n1qlParser.RULE_merge_delete = 140; -n1qlParser.RULE_merge_insert = 141; -n1qlParser.RULE_grant_role = 142; -n1qlParser.RULE_role_list = 143; -n1qlParser.RULE_role_name = 144; -n1qlParser.RULE_keyspace_scope_list = 145; -n1qlParser.RULE_keyspace_scope = 146; -n1qlParser.RULE_user_list = 147; -n1qlParser.RULE_user = 148; -n1qlParser.RULE_revoke_role = 149; -n1qlParser.RULE_create_scope = 150; -n1qlParser.RULE_drop_scope = 151; -n1qlParser.RULE_create_collection = 152; -n1qlParser.RULE_drop_collection = 153; -n1qlParser.RULE_flush_collection = 154; -n1qlParser.RULE_flush_or_truncate = 155; -n1qlParser.RULE_create_index = 156; -n1qlParser.RULE_create_primary_index = 157; -n1qlParser.RULE_opt_primary_name = 158; -n1qlParser.RULE_index_name = 159; -n1qlParser.RULE_opt_index_name = 160; -n1qlParser.RULE_named_keyspace_ref = 161; -n1qlParser.RULE_simple_named_keyspace_ref = 162; -n1qlParser.RULE_named_scope_ref = 163; -n1qlParser.RULE_index_partition = 164; -n1qlParser.RULE_opt_index_using = 165; -n1qlParser.RULE_index_using = 166; -n1qlParser.RULE_opt_index_with = 167; -n1qlParser.RULE_index_with = 168; -n1qlParser.RULE_index_terms = 169; -n1qlParser.RULE_index_term = 170; -n1qlParser.RULE_index_term_expr = 171; -n1qlParser.RULE_index_expr = 172; -n1qlParser.RULE_all = 173; -n1qlParser.RULE_index_where = 174; -n1qlParser.RULE_opt_ikattr = 175; -n1qlParser.RULE_ikattr = 176; -n1qlParser.RULE_drop_index = 177; -n1qlParser.RULE_alter_index = 178; -n1qlParser.RULE_build_index = 179; -n1qlParser.RULE_create_function = 180; -n1qlParser.RULE_opt_replace = 181; -n1qlParser.RULE_func_name = 182; -n1qlParser.RULE_short_func_name = 183; -n1qlParser.RULE_long_func_name = 184; -n1qlParser.RULE_parm_list = 185; -n1qlParser.RULE_parameter_terms = 186; -n1qlParser.RULE_func_body = 187; -n1qlParser.RULE_drop_function = 188; -n1qlParser.RULE_execute_function = 189; -n1qlParser.RULE_update_statistics = 190; -n1qlParser.RULE_opt_for = 191; -n1qlParser.RULE_update_stat_terms = 192; -n1qlParser.RULE_update_stat_term = 193; -n1qlParser.RULE_path = 194; -n1qlParser.RULE_expr = 195; -n1qlParser.RULE_valued = 196; -n1qlParser.RULE_c_expr = 197; -n1qlParser.RULE_b_expr = 198; -n1qlParser.RULE_literal = 199; -n1qlParser.RULE_construction_expr = 200; -n1qlParser.RULE_object = 201; -n1qlParser.RULE_opt_members = 202; -n1qlParser.RULE_members = 203; -n1qlParser.RULE_member = 204; -n1qlParser.RULE_array = 205; -n1qlParser.RULE_opt_exprs = 206; -n1qlParser.RULE_exprs = 207; -n1qlParser.RULE_param_expr = 208; -n1qlParser.RULE_case_expr = 209; -n1qlParser.RULE_simple_or_searched_case = 210; -n1qlParser.RULE_simple_case = 211; -n1qlParser.RULE_when_thens = 212; -n1qlParser.RULE_searched_case = 213; -n1qlParser.RULE_opt_else = 214; -n1qlParser.RULE_function_expr = 215; -n1qlParser.RULE_function_name = 216; -n1qlParser.RULE_collection_expr = 217; -n1qlParser.RULE_collection_cond = 218; -n1qlParser.RULE_coll_bindings = 219; -n1qlParser.RULE_coll_binding = 220; -n1qlParser.RULE_satisfies = 221; -n1qlParser.RULE_collection_xform = 222; -n1qlParser.RULE_paren_expr = 223; -n1qlParser.RULE_subquery_expr = 224; -n1qlParser.RULE_expr_input = 225; -n1qlParser.RULE_all_expr = 226; -n1qlParser.RULE_opt_window_clause = 227; -n1qlParser.RULE_window_list = 228; -n1qlParser.RULE_window_term = 229; -n1qlParser.RULE_window_specification = 230; -n1qlParser.RULE_opt_window_name = 231; -n1qlParser.RULE_opt_window_partition = 232; -n1qlParser.RULE_opt_window_frame = 233; -n1qlParser.RULE_window_frame_modifier = 234; -n1qlParser.RULE_opt_window_frame_exclusion = 235; -n1qlParser.RULE_window_frame_extents = 236; -n1qlParser.RULE_window_frame_extent = 237; -n1qlParser.RULE_window_frame_valexpr_modifier = 238; -n1qlParser.RULE_opt_nulls_treatment = 239; -n1qlParser.RULE_nulls_treatment = 240; -n1qlParser.RULE_opt_from_first_last = 241; -n1qlParser.RULE_agg_quantifier = 242; -n1qlParser.RULE_opt_filter = 243; -n1qlParser.RULE_opt_window_function = 244; -n1qlParser.RULE_window_function_details = 245; -n1qlParser.RULE_start_transaction = 246; -n1qlParser.RULE_commit_transaction = 247; -n1qlParser.RULE_rollback_transaction = 248; -n1qlParser.RULE_start_or_begin = 249; -n1qlParser.RULE_opt_transaction = 250; -n1qlParser.RULE_transaction = 251; -n1qlParser.RULE_opt_savepoint = 252; -n1qlParser.RULE_savepoint_name = 253; -n1qlParser.RULE_opt_isolation_level = 254; -n1qlParser.RULE_isolation_level = 255; -n1qlParser.RULE_isolation_val = 256; -n1qlParser.RULE_set_transaction_isolation = 257; -n1qlParser.RULE_savepoint = 258; -n1qlParser.RULE_if_exists = 259; -n1qlParser.RULE_if_not_exists = 260; - -class StatementsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_statements; - } - - input = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTypedRuleContexts(InputContext); - } else { - return this.getTypedRuleContext(InputContext, i); - } - }; - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitStatements(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class InputContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_input; - } - - stmt_body() { - return this.getTypedRuleContext(Stmt_bodyContext, 0); - } - - opt_trailer() { - return this.getTypedRuleContext(Opt_trailerContext, 0); - } - - expr_input() { - return this.getTypedRuleContext(Expr_inputContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitInput(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_trailerContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_trailer; - } - - opt_trailer() { - return this.getTypedRuleContext(Opt_trailerContext, 0); - } - - SEMI() { - return this.getToken(n1qlParser.SEMI, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_trailer(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Stmt_bodyContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_stmt_body; - } - - advise() { - return this.getTypedRuleContext(AdviseContext, 0); - } - - explain() { - return this.getTypedRuleContext(ExplainContext, 0); - } - - prepare() { - return this.getTypedRuleContext(PrepareContext, 0); - } - - execute() { - return this.getTypedRuleContext(ExecuteContext, 0); - } - - stmt() { - return this.getTypedRuleContext(StmtContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitStmt_body(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class StmtContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_stmt; - } - - select_stmt() { - return this.getTypedRuleContext(Select_stmtContext, 0); - } - - dml_stmt() { - return this.getTypedRuleContext(Dml_stmtContext, 0); - } - - ddl_stmt() { - return this.getTypedRuleContext(Ddl_stmtContext, 0); - } - - infer() { - return this.getTypedRuleContext(InferContext, 0); - } - - update_statistics() { - return this.getTypedRuleContext(Update_statisticsContext, 0); - } - - role_stmt() { - return this.getTypedRuleContext(Role_stmtContext, 0); - } - - function_stmt() { - return this.getTypedRuleContext(Function_stmtContext, 0); - } - - transaction_stmt() { - return this.getTypedRuleContext(Transaction_stmtContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitStmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class AdviseContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_advise; - } - - ADVISE() { - return this.getToken(n1qlParser.ADVISE, 0); - } - - opt_index() { - return this.getTypedRuleContext(Opt_indexContext, 0); - } - - stmt() { - return this.getTypedRuleContext(StmtContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitAdvise(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_indexContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_index; - } - - INDEX() { - return this.getToken(n1qlParser.INDEX, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_index(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class ExplainContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_explain; - } - - EXPLAIN() { - return this.getToken(n1qlParser.EXPLAIN, 0); - } - - stmt() { - return this.getTypedRuleContext(StmtContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitExplain(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class PrepareContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_prepare; - } - - PREPARE() { - return this.getToken(n1qlParser.PREPARE, 0); - } - - opt_force() { - return this.getTypedRuleContext(Opt_forceContext, 0); - } - - opt_name() { - return this.getTypedRuleContext(Opt_nameContext, 0); - } - - stmt() { - return this.getTypedRuleContext(StmtContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitPrepare(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_forceContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_force; - } - - FORCE() { - return this.getToken(n1qlParser.FORCE, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_force(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_nameContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_name; - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - from_or_as() { - return this.getTypedRuleContext(From_or_asContext, 0); - } - - STR() { - return this.getToken(n1qlParser.STR, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class From_or_asContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_from_or_as; - } - - FROM() { - return this.getToken(n1qlParser.FROM, 0); - } - - AS() { - return this.getToken(n1qlParser.AS, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitFrom_or_as(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class ExecuteContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_execute; - } - - EXECUTE() { - return this.getToken(n1qlParser.EXECUTE, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - execute_using() { - return this.getTypedRuleContext(Execute_usingContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitExecute(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Execute_usingContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_execute_using; - } - - USING() { - return this.getToken(n1qlParser.USING, 0); - } - - construction_expr() { - return this.getTypedRuleContext(Construction_exprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitExecute_using(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class InferContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_infer; - } - - INFER() { - return this.getToken(n1qlParser.INFER, 0); - } - - opt_keyspace_collection() { - return this.getTypedRuleContext(Opt_keyspace_collectionContext, 0); - } - - simple_keyspace_ref() { - return this.getTypedRuleContext(Simple_keyspace_refContext, 0); - } - - opt_infer_using() { - return this.getTypedRuleContext(Opt_infer_usingContext, 0); - } - - opt_infer_ustat_with() { - return this.getTypedRuleContext(Opt_infer_ustat_withContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitInfer(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_keyspace_collectionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_keyspace_collection; - } - - KEYSPACE() { - return this.getToken(n1qlParser.KEYSPACE, 0); - } - - COLLECTION() { - return this.getToken(n1qlParser.COLLECTION, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_keyspace_collection(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_infer_usingContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_infer_using; - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_infer_using(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_infer_ustat_withContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_infer_ustat_with; - } - - infer_ustat_with() { - return this.getTypedRuleContext(Infer_ustat_withContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_infer_ustat_with(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Infer_ustat_withContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_infer_ustat_with; - } - - WITH() { - return this.getToken(n1qlParser.WITH, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitInfer_ustat_with(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Select_stmtContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_select_stmt; - } - - fullselect() { - return this.getTypedRuleContext(FullselectContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSelect_stmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Dml_stmtContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_dml_stmt; - } - - insert() { - return this.getTypedRuleContext(InsertContext, 0); - } - - upsert() { - return this.getTypedRuleContext(UpsertContext, 0); - } - - delete_() { - return this.getTypedRuleContext(Delete_Context, 0); - } - - update() { - return this.getTypedRuleContext(UpdateContext, 0); - } - - merge() { - return this.getTypedRuleContext(MergeContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitDml_stmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Ddl_stmtContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_ddl_stmt; - } - - index_stmt() { - return this.getTypedRuleContext(Index_stmtContext, 0); - } - - scope_stmt() { - return this.getTypedRuleContext(Scope_stmtContext, 0); - } - - collection_stmt() { - return this.getTypedRuleContext(Collection_stmtContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitDdl_stmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Role_stmtContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_role_stmt; - } - - grant_role() { - return this.getTypedRuleContext(Grant_roleContext, 0); - } - - revoke_role() { - return this.getTypedRuleContext(Revoke_roleContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitRole_stmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Index_stmtContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_index_stmt; - } - - create_index() { - return this.getTypedRuleContext(Create_indexContext, 0); - } - - create_primary_index() { - return this.getTypedRuleContext(Create_primary_indexContext, 0); - } - - drop_index() { - return this.getTypedRuleContext(Drop_indexContext, 0); - } - - alter_index() { - return this.getTypedRuleContext(Alter_indexContext, 0); - } - - build_index() { - return this.getTypedRuleContext(Build_indexContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitIndex_stmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Scope_stmtContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_scope_stmt; - } - - create_scope() { - return this.getTypedRuleContext(Create_scopeContext, 0); - } - - drop_scope() { - return this.getTypedRuleContext(Drop_scopeContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitScope_stmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Collection_stmtContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_collection_stmt; - } - - create_collection() { - return this.getTypedRuleContext(Create_collectionContext, 0); - } - - drop_collection() { - return this.getTypedRuleContext(Drop_collectionContext, 0); - } - - flush_collection() { - return this.getTypedRuleContext(Flush_collectionContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitCollection_stmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Function_stmtContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_function_stmt; - } - - create_function() { - return this.getTypedRuleContext(Create_functionContext, 0); - } - - drop_function() { - return this.getTypedRuleContext(Drop_functionContext, 0); - } - - execute_function() { - return this.getTypedRuleContext(Execute_functionContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitFunction_stmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Transaction_stmtContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_transaction_stmt; - } - - start_transaction() { - return this.getTypedRuleContext(Start_transactionContext, 0); - } - - commit_transaction() { - return this.getTypedRuleContext(Commit_transactionContext, 0); - } - - rollback_transaction() { - return this.getTypedRuleContext(Rollback_transactionContext, 0); - } - - savepoint() { - return this.getTypedRuleContext(SavepointContext, 0); - } - - set_transaction_isolation() { - return this.getTypedRuleContext(Set_transaction_isolationContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitTransaction_stmt(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class FullselectContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_fullselect; - } - - select_terms() { - return this.getTypedRuleContext(Select_termsContext, 0); - } - - opt_order_by() { - return this.getTypedRuleContext(Opt_order_byContext, 0); - } - - limit() { - return this.getTypedRuleContext(LimitContext, 0); - } - - opt_offset() { - return this.getTypedRuleContext(Opt_offsetContext, 0); - } - - offset() { - return this.getTypedRuleContext(OffsetContext, 0); - } - - opt_limit() { - return this.getTypedRuleContext(Opt_limitContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitFullselect(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Select_termsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_select_terms; - } - - subselect() { - return this.getTypedRuleContext(SubselectContext, 0); - } - - subquery_expr() { - return this.getTypedRuleContext(Subquery_exprContext, 0); - } - - UNION() { - return this.getToken(n1qlParser.UNION, 0); - } - - select_term() { - return this.getTypedRuleContext(Select_termContext, 0); - } - - ALL() { - return this.getToken(n1qlParser.ALL, 0); - } - - INTERSECT() { - return this.getToken(n1qlParser.INTERSECT, 0); - } - - EXCEPT() { - return this.getToken(n1qlParser.EXCEPT, 0); - } - - select_terms() { - return this.getTypedRuleContext(Select_termsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSelect_terms(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Select_termContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_select_term; - } - - subselect() { - return this.getTypedRuleContext(SubselectContext, 0); - } - - subquery_expr() { - return this.getTypedRuleContext(Subquery_exprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSelect_term(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class SubselectContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_subselect; - } - - from_select() { - return this.getTypedRuleContext(From_selectContext, 0); - } - - select_from() { - return this.getTypedRuleContext(Select_fromContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSubselect(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class From_selectContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_from_select; - } - - opt_with() { - return this.getTypedRuleContext(Opt_withContext, 0); - } - - from() { - return this.getTypedRuleContext(FromContext, 0); - } - - opt_let() { - return this.getTypedRuleContext(Opt_letContext, 0); - } - - opt_where() { - return this.getTypedRuleContext(Opt_whereContext, 0); - } - - opt_group() { - return this.getTypedRuleContext(Opt_groupContext, 0); - } - - opt_window_clause() { - return this.getTypedRuleContext(Opt_window_clauseContext, 0); - } - - select_clause() { - return this.getTypedRuleContext(Select_clauseContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitFrom_select(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Select_fromContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_select_from; - } - - opt_with() { - return this.getTypedRuleContext(Opt_withContext, 0); - } - - select_clause() { - return this.getTypedRuleContext(Select_clauseContext, 0); - } - - opt_from() { - return this.getTypedRuleContext(Opt_fromContext, 0); - } - - opt_let() { - return this.getTypedRuleContext(Opt_letContext, 0); - } - - opt_where() { - return this.getTypedRuleContext(Opt_whereContext, 0); - } - - opt_group() { - return this.getTypedRuleContext(Opt_groupContext, 0); - } - - opt_window_clause() { - return this.getTypedRuleContext(Opt_window_clauseContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSelect_from(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Select_clauseContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_select_clause; - } - - SELECT() { - return this.getToken(n1qlParser.SELECT, 0); - } - - projection() { - return this.getTypedRuleContext(ProjectionContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSelect_clause(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class ProjectionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_projection; - } - - opt_quantifier() { - return this.getTypedRuleContext(Opt_quantifierContext, 0); - } - - projects() { - return this.getTypedRuleContext(ProjectsContext, 0); - } - - raw() { - return this.getTypedRuleContext(RawContext, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - opt_as_alias() { - return this.getTypedRuleContext(Opt_as_aliasContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitProjection(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_quantifierContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_quantifier; - } - - ALL() { - return this.getToken(n1qlParser.ALL, 0); - } - - DISTINCT() { - return this.getToken(n1qlParser.DISTINCT, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_quantifier(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class RawContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_raw; - } - - RAW() { - return this.getToken(n1qlParser.RAW, 0); - } - - ELEMENT() { - return this.getToken(n1qlParser.ELEMENT, 0); - } - - VALUE() { - return this.getToken(n1qlParser.VALUE, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitRaw(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class ProjectsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_projects; - } - - project() { - return this.getTypedRuleContext(ProjectContext, 0); - } - - projects() { - return this.getTypedRuleContext(ProjectsContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitProjects(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class ProjectContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_project; - } - - STAR() { - return this.getToken(n1qlParser.STAR, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - DOT() { - return this.getToken(n1qlParser.DOT, 0); - } - - opt_as_alias() { - return this.getTypedRuleContext(Opt_as_aliasContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitProject(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_as_aliasContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_as_alias; - } - - as_alias() { - return this.getTypedRuleContext(As_aliasContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_as_alias(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class As_aliasContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_as_alias; - } - - alias() { - return this.getTypedRuleContext(AliasContext, 0); - } - - AS() { - return this.getToken(n1qlParser.AS, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitAs_alias(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class AliasContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_alias; - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitAlias(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_fromContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_from; - } - - from() { - return this.getTypedRuleContext(FromContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_from(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class FromContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_from; - } - - FROM() { - return this.getToken(n1qlParser.FROM, 0); - } - - from_term() { - return this.getTypedRuleContext(From_termContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitFrom(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class From_termContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_from_term; - } - - simple_from_term = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTypedRuleContexts(Simple_from_termContext); - } else { - return this.getTypedRuleContext(Simple_from_termContext, i); - } - }; - - RIGHT() { - return this.getToken(n1qlParser.RIGHT, 0); - } - - opt_outer() { - return this.getTypedRuleContext(Opt_outerContext, 0); - } - - JOIN() { - return this.getToken(n1qlParser.JOIN, 0); - } - - ON() { - return this.getToken(n1qlParser.ON, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - from_term() { - return this.getTypedRuleContext(From_termContext, 0); - } - - opt_join_type() { - return this.getTypedRuleContext(Opt_join_typeContext, 0); - } - - on_keys() { - return this.getTypedRuleContext(On_keysContext, 0); - } - - on_key() { - return this.getTypedRuleContext(On_keyContext, 0); - } - - FOR() { - return this.getToken(n1qlParser.FOR, 0); - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - NEST() { - return this.getToken(n1qlParser.NEST, 0); - } - - unnest() { - return this.getTypedRuleContext(UnnestContext, 0); - } - - opt_as_alias() { - return this.getTypedRuleContext(Opt_as_aliasContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitFrom_term(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Simple_from_termContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_simple_from_term; - } - - keyspace_term() { - return this.getTypedRuleContext(Keyspace_termContext, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - opt_as_alias() { - return this.getTypedRuleContext(Opt_as_aliasContext, 0); - } - - opt_use() { - return this.getTypedRuleContext(Opt_useContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSimple_from_term(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class UnnestContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_unnest; - } - - UNNEST() { - return this.getToken(n1qlParser.UNNEST, 0); - } - - FLATTEN() { - return this.getToken(n1qlParser.FLATTEN, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUnnest(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Keyspace_termContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_keyspace_term; - } - - keyspace_path() { - return this.getTypedRuleContext(Keyspace_pathContext, 0); - } - - opt_as_alias() { - return this.getTypedRuleContext(Opt_as_aliasContext, 0); - } - - opt_use() { - return this.getTypedRuleContext(Opt_useContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitKeyspace_term(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Keyspace_pathContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_keyspace_path; - } - - namespace_term() { - return this.getTypedRuleContext(Namespace_termContext, 0); - } - - keyspace_name() { - return this.getTypedRuleContext(Keyspace_nameContext, 0); - } - - bucket_name() { - return this.getTypedRuleContext(Bucket_nameContext, 0); - } - - DOT = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTokens(n1qlParser.DOT); - } else { - return this.getToken(n1qlParser.DOT, i); - } - }; - - scope_name() { - return this.getTypedRuleContext(Scope_nameContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitKeyspace_path(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Namespace_termContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_namespace_term; - } - - namespace_name() { - return this.getTypedRuleContext(Namespace_nameContext, 0); - } - - SYSTEM() { - return this.getToken(n1qlParser.SYSTEM, 0); - } - - COLON() { - return this.getToken(n1qlParser.COLON, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitNamespace_term(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Namespace_nameContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_namespace_name; - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - COLON() { - return this.getToken(n1qlParser.COLON, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitNamespace_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Bucket_nameContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_bucket_name; - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitBucket_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Scope_nameContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_scope_name; - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitScope_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Keyspace_nameContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_keyspace_name; - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitKeyspace_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_useContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_use; - } - - USE() { - return this.getToken(n1qlParser.USE, 0); - } - - use_options() { - return this.getTypedRuleContext(Use_optionsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_use(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Use_optionsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_use_options; - } - - use_keys() { - return this.getTypedRuleContext(Use_keysContext, 0); - } - - use_index() { - return this.getTypedRuleContext(Use_indexContext, 0); - } - - join_hint() { - return this.getTypedRuleContext(Join_hintContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUse_options(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Use_keysContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_use_keys; - } - - opt_primary() { - return this.getTypedRuleContext(Opt_primaryContext, 0); - } - - KEYS() { - return this.getToken(n1qlParser.KEYS, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUse_keys(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Use_indexContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_use_index; - } - - INDEX() { - return this.getToken(n1qlParser.INDEX, 0); - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - index_refs() { - return this.getTypedRuleContext(Index_refsContext, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUse_index(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Join_hintContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_join_hint; - } - - HASH() { - return this.getToken(n1qlParser.HASH, 0); - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - use_hash_option() { - return this.getTypedRuleContext(Use_hash_optionContext, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - NL() { - return this.getToken(n1qlParser.NL, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitJoin_hint(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_primaryContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_primary; - } - - PRIMARY() { - return this.getToken(n1qlParser.PRIMARY, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_primary(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Index_refsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_index_refs; - } - - index_ref() { - return this.getTypedRuleContext(Index_refContext, 0); - } - - index_refs() { - return this.getTypedRuleContext(Index_refsContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitIndex_refs(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Index_refContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_index_ref; - } - - opt_index_name() { - return this.getTypedRuleContext(Opt_index_nameContext, 0); - } - - opt_index_using() { - return this.getTypedRuleContext(Opt_index_usingContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitIndex_ref(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Use_hash_optionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_use_hash_option; - } - - BUILD() { - return this.getToken(n1qlParser.BUILD, 0); - } - - PROBE() { - return this.getToken(n1qlParser.PROBE, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUse_hash_option(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_use_del_updContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_use_del_upd; - } - - opt_use() { - return this.getTypedRuleContext(Opt_useContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_use_del_upd(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_join_typeContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_join_type; - } - - INNER() { - return this.getToken(n1qlParser.INNER, 0); - } - - LEFT() { - return this.getToken(n1qlParser.LEFT, 0); - } - - opt_outer() { - return this.getTypedRuleContext(Opt_outerContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_join_type(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_outerContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_outer; - } - - OUTER() { - return this.getToken(n1qlParser.OUTER, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_outer(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class On_keysContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_on_keys; - } - - ON() { - return this.getToken(n1qlParser.ON, 0); - } - - opt_primary() { - return this.getTypedRuleContext(Opt_primaryContext, 0); - } - - KEYS() { - return this.getToken(n1qlParser.KEYS, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOn_keys(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class On_keyContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_on_key; - } - - ON() { - return this.getToken(n1qlParser.ON, 0); - } - - opt_primary() { - return this.getTypedRuleContext(Opt_primaryContext, 0); - } - - KEY() { - return this.getToken(n1qlParser.KEY, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOn_key(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_letContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_let; - } - - let_() { - return this.getTypedRuleContext(Let_Context, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_let(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Let_Context extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_let_; - } - - LET_() { - return this.getToken(n1qlParser.LET_, 0); - } - - bindings() { - return this.getTypedRuleContext(BindingsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitLet_(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class BindingsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_bindings; - } - - binding() { - return this.getTypedRuleContext(BindingContext, 0); - } - - bindings() { - return this.getTypedRuleContext(BindingsContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitBindings(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class BindingContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_binding; - } - - alias() { - return this.getTypedRuleContext(AliasContext, 0); - } - - EQ() { - return this.getToken(n1qlParser.EQ, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitBinding(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_withContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_with; - } - - WITH() { - return this.getToken(n1qlParser.WITH, 0); - } - - with_list() { - return this.getTypedRuleContext(With_listContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_with(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class With_listContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_with_list; - } - - with_term() { - return this.getTypedRuleContext(With_termContext, 0); - } - - with_list() { - return this.getTypedRuleContext(With_listContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitWith_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class With_termContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_with_term; - } - - alias() { - return this.getTypedRuleContext(AliasContext, 0); - } - - AS() { - return this.getToken(n1qlParser.AS, 0); - } - - paren_expr() { - return this.getTypedRuleContext(Paren_exprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitWith_term(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_whereContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_where; - } - - where() { - return this.getTypedRuleContext(WhereContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_where(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class WhereContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_where; - } - - WHERE() { - return this.getToken(n1qlParser.WHERE, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitWhere(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_groupContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_group; - } - - group() { - return this.getTypedRuleContext(GroupContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_group(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class GroupContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_group; - } - - GROUP() { - return this.getToken(n1qlParser.GROUP, 0); - } - - BY() { - return this.getToken(n1qlParser.BY, 0); - } - - group_terms() { - return this.getTypedRuleContext(Group_termsContext, 0); - } - - opt_letting() { - return this.getTypedRuleContext(Opt_lettingContext, 0); - } - - opt_having() { - return this.getTypedRuleContext(Opt_havingContext, 0); - } - - letting() { - return this.getTypedRuleContext(LettingContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitGroup(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Group_termsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_group_terms; - } - - group_term() { - return this.getTypedRuleContext(Group_termContext, 0); - } - - group_terms() { - return this.getTypedRuleContext(Group_termsContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitGroup_terms(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Group_termContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_group_term; - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - opt_as_alias() { - return this.getTypedRuleContext(Opt_as_aliasContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitGroup_term(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_lettingContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_letting; - } - - letting() { - return this.getTypedRuleContext(LettingContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_letting(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class LettingContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_letting; - } - - LETTING() { - return this.getToken(n1qlParser.LETTING, 0); - } - - bindings() { - return this.getTypedRuleContext(BindingsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitLetting(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_havingContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_having; - } - - having() { - return this.getTypedRuleContext(HavingContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_having(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class HavingContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_having; - } - - HAVING() { - return this.getToken(n1qlParser.HAVING, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitHaving(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_order_byContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_order_by; - } - - order_by() { - return this.getTypedRuleContext(Order_byContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_order_by(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Order_byContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_order_by; - } - - ORDER() { - return this.getToken(n1qlParser.ORDER, 0); - } - - BY() { - return this.getToken(n1qlParser.BY, 0); - } - - sort_terms() { - return this.getTypedRuleContext(Sort_termsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOrder_by(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Sort_termsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_sort_terms; - } - - sort_term() { - return this.getTypedRuleContext(Sort_termContext, 0); - } - - sort_terms() { - return this.getTypedRuleContext(Sort_termsContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSort_terms(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Sort_termContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_sort_term; - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - opt_dir() { - return this.getTypedRuleContext(Opt_dirContext, 0); - } - - opt_order_nulls() { - return this.getTypedRuleContext(Opt_order_nullsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSort_term(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_dirContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_dir; - } - - dir() { - return this.getTypedRuleContext(DirContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_dir(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class DirContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_dir; - } - - ASC() { - return this.getToken(n1qlParser.ASC, 0); - } - - DESC() { - return this.getToken(n1qlParser.DESC, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitDir(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_order_nullsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_order_nulls; - } - - nulls() { - return this.getTypedRuleContext(NullsContext, 0); - } - - first_last() { - return this.getTypedRuleContext(First_lastContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_order_nulls(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class First_lastContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_first_last; - } - - FIRST() { - return this.getToken(n1qlParser.FIRST, 0); - } - - LAST() { - return this.getToken(n1qlParser.LAST, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitFirst_last(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class NullsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_nulls; - } - - NULLS() { - return this.getToken(n1qlParser.NULLS, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitNulls(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_limitContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_limit; - } - - limit() { - return this.getTypedRuleContext(LimitContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_limit(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class LimitContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_limit; - } - - LIMIT() { - return this.getToken(n1qlParser.LIMIT, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitLimit(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_offsetContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_offset; - } - - offset() { - return this.getTypedRuleContext(OffsetContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_offset(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class OffsetContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_offset; - } - - OFFSET() { - return this.getToken(n1qlParser.OFFSET, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOffset(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class InsertContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_insert; - } - - INSERT() { - return this.getToken(n1qlParser.INSERT, 0); - } - - INTO() { - return this.getToken(n1qlParser.INTO, 0); - } - - keyspace_ref() { - return this.getTypedRuleContext(Keyspace_refContext, 0); - } - - opt_values_header() { - return this.getTypedRuleContext(Opt_values_headerContext, 0); - } - - values_list() { - return this.getTypedRuleContext(Values_listContext, 0); - } - - opt_returning() { - return this.getTypedRuleContext(Opt_returningContext, 0); - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - key_val_options_expr_header() { - return this.getTypedRuleContext(Key_val_options_expr_headerContext, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - fullselect() { - return this.getTypedRuleContext(FullselectContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitInsert(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Simple_keyspace_refContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_simple_keyspace_ref; - } - - keyspace_name() { - return this.getTypedRuleContext(Keyspace_nameContext, 0); - } - - opt_as_alias() { - return this.getTypedRuleContext(Opt_as_aliasContext, 0); - } - - keyspace_path() { - return this.getTypedRuleContext(Keyspace_pathContext, 0); - } - - bucket_name() { - return this.getTypedRuleContext(Bucket_nameContext, 0); - } - - DOT = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTokens(n1qlParser.DOT); - } else { - return this.getToken(n1qlParser.DOT, i); - } - }; - - scope_name() { - return this.getTypedRuleContext(Scope_nameContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSimple_keyspace_ref(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Keyspace_refContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_keyspace_ref; - } - - simple_keyspace_ref() { - return this.getTypedRuleContext(Simple_keyspace_refContext, 0); - } - - param_expr() { - return this.getTypedRuleContext(Param_exprContext, 0); - } - - opt_as_alias() { - return this.getTypedRuleContext(Opt_as_aliasContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitKeyspace_ref(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_values_headerContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_values_header; - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - opt_primary() { - return this.getTypedRuleContext(Opt_primaryContext, 0); - } - - KEY() { - return this.getToken(n1qlParser.KEY, 0); - } - - COMMA = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTokens(n1qlParser.COMMA); - } else { - return this.getToken(n1qlParser.COMMA, i); - } - }; - - VALUE() { - return this.getToken(n1qlParser.VALUE, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - OPTIONS() { - return this.getToken(n1qlParser.OPTIONS, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_values_header(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class KeyContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_key; - } - - opt_primary() { - return this.getTypedRuleContext(Opt_primaryContext, 0); - } - - KEY() { - return this.getToken(n1qlParser.KEY, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitKey(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Values_listContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_values_list; - } - - values() { - return this.getTypedRuleContext(ValuesContext, 0); - } - - values_list() { - return this.getTypedRuleContext(Values_listContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - next_values() { - return this.getTypedRuleContext(Next_valuesContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitValues_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class ValuesContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_values; - } - - VALUES() { - return this.getToken(n1qlParser.VALUES, 0); - } - - key_val_expr() { - return this.getTypedRuleContext(Key_val_exprContext, 0); - } - - key_val_options_expr() { - return this.getTypedRuleContext(Key_val_options_exprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitValues(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Next_valuesContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_next_values; - } - - values() { - return this.getTypedRuleContext(ValuesContext, 0); - } - - key_val_expr() { - return this.getTypedRuleContext(Key_val_exprContext, 0); - } - - key_val_options_expr() { - return this.getTypedRuleContext(Key_val_options_exprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitNext_values(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Key_val_exprContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_key_val_expr; - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - expr = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTypedRuleContexts(ExprContext); - } else { - return this.getTypedRuleContext(ExprContext, i); - } - }; - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitKey_val_expr(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Key_val_options_exprContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_key_val_options_expr; - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - expr = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTypedRuleContexts(ExprContext); - } else { - return this.getTypedRuleContext(ExprContext, i); - } - }; - - COMMA = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTokens(n1qlParser.COMMA); - } else { - return this.getToken(n1qlParser.COMMA, i); - } - }; - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitKey_val_options_expr(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_returningContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_returning; - } - - returning() { - return this.getTypedRuleContext(ReturningContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_returning(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class ReturningContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_returning; - } - - RETURNING() { - return this.getToken(n1qlParser.RETURNING, 0); - } - - returns_() { - return this.getTypedRuleContext(Returns_Context, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitReturning(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Returns_Context extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_returns_; - } - - projects() { - return this.getTypedRuleContext(ProjectsContext, 0); - } - - raw() { - return this.getTypedRuleContext(RawContext, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitReturns_(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Key_expr_headerContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_key_expr_header; - } - - key() { - return this.getTypedRuleContext(KeyContext, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitKey_expr_header(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Value_expr_headerContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_value_expr_header; - } - - VALUE() { - return this.getToken(n1qlParser.VALUE, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitValue_expr_header(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Options_expr_headerContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_options_expr_header; - } - - OPTIONS() { - return this.getToken(n1qlParser.OPTIONS, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOptions_expr_header(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Key_val_options_expr_headerContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_key_val_options_expr_header; - } - - key_expr_header() { - return this.getTypedRuleContext(Key_expr_headerContext, 0); - } - - COMMA = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTokens(n1qlParser.COMMA); - } else { - return this.getToken(n1qlParser.COMMA, i); - } - }; - - value_expr_header() { - return this.getTypedRuleContext(Value_expr_headerContext, 0); - } - - options_expr_header() { - return this.getTypedRuleContext(Options_expr_headerContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitKey_val_options_expr_header(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class UpsertContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_upsert; - } - - UPSERT() { - return this.getToken(n1qlParser.UPSERT, 0); - } - - INTO() { - return this.getToken(n1qlParser.INTO, 0); - } - - keyspace_ref() { - return this.getTypedRuleContext(Keyspace_refContext, 0); - } - - opt_values_header() { - return this.getTypedRuleContext(Opt_values_headerContext, 0); - } - - values_list() { - return this.getTypedRuleContext(Values_listContext, 0); - } - - opt_returning() { - return this.getTypedRuleContext(Opt_returningContext, 0); - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - key_val_options_expr_header() { - return this.getTypedRuleContext(Key_val_options_expr_headerContext, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - fullselect() { - return this.getTypedRuleContext(FullselectContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUpsert(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Delete_Context extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_delete_; - } - - DELETE_() { - return this.getToken(n1qlParser.DELETE_, 0); - } - - FROM() { - return this.getToken(n1qlParser.FROM, 0); - } - - keyspace_ref() { - return this.getTypedRuleContext(Keyspace_refContext, 0); - } - - opt_use_del_upd() { - return this.getTypedRuleContext(Opt_use_del_updContext, 0); - } - - opt_where() { - return this.getTypedRuleContext(Opt_whereContext, 0); - } - - opt_limit() { - return this.getTypedRuleContext(Opt_limitContext, 0); - } - - opt_returning() { - return this.getTypedRuleContext(Opt_returningContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitDelete_(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class UpdateContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_update; - } - - UPDATE() { - return this.getToken(n1qlParser.UPDATE, 0); - } - - keyspace_ref() { - return this.getTypedRuleContext(Keyspace_refContext, 0); - } - - opt_use_del_upd() { - return this.getTypedRuleContext(Opt_use_del_updContext, 0); - } - - set() { - return this.getTypedRuleContext(SetContext, 0); - } - - unset() { - return this.getTypedRuleContext(UnsetContext, 0); - } - - opt_where() { - return this.getTypedRuleContext(Opt_whereContext, 0); - } - - opt_limit() { - return this.getTypedRuleContext(Opt_limitContext, 0); - } - - opt_returning() { - return this.getTypedRuleContext(Opt_returningContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUpdate(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class SetContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_set; - } - - SET() { - return this.getToken(n1qlParser.SET, 0); - } - - set_terms() { - return this.getTypedRuleContext(Set_termsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSet(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Set_termsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_set_terms; - } - - set_term() { - return this.getTypedRuleContext(Set_termContext, 0); - } - - set_terms() { - return this.getTypedRuleContext(Set_termsContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSet_terms(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Set_termContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_set_term; - } - - path() { - return this.getTypedRuleContext(PathContext, 0); - } - - EQ() { - return this.getToken(n1qlParser.EQ, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - opt_update_for() { - return this.getTypedRuleContext(Opt_update_forContext, 0); - } - - function_meta_expr() { - return this.getTypedRuleContext(Function_meta_exprContext, 0); - } - - DOT() { - return this.getToken(n1qlParser.DOT, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSet_term(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Function_meta_exprContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_function_meta_expr; - } - - function_name() { - return this.getTypedRuleContext(Function_nameContext, 0); - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - opt_exprs() { - return this.getTypedRuleContext(Opt_exprsContext, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitFunction_meta_expr(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_update_forContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_update_for; - } - - update_for() { - return this.getTypedRuleContext(Update_forContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_update_for(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Update_forContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_update_for; - } - - update_dimensions() { - return this.getTypedRuleContext(Update_dimensionsContext, 0); - } - - opt_when() { - return this.getTypedRuleContext(Opt_whenContext, 0); - } - - END() { - return this.getToken(n1qlParser.END, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUpdate_for(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Update_dimensionsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_update_dimensions; - } - - FOR() { - return this.getToken(n1qlParser.FOR, 0); - } - - update_dimension() { - return this.getTypedRuleContext(Update_dimensionContext, 0); - } - - update_dimensions() { - return this.getTypedRuleContext(Update_dimensionsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUpdate_dimensions(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Update_dimensionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_update_dimension; - } - - update_binding() { - return this.getTypedRuleContext(Update_bindingContext, 0); - } - - update_dimension() { - return this.getTypedRuleContext(Update_dimensionContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUpdate_dimension(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Update_bindingContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_update_binding; - } - - variable = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTypedRuleContexts(VariableContext); - } else { - return this.getTypedRuleContext(VariableContext, i); - } - }; - - IN() { - return this.getToken(n1qlParser.IN, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - WITHIN() { - return this.getToken(n1qlParser.WITHIN, 0); - } - - COLON() { - return this.getToken(n1qlParser.COLON, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUpdate_binding(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class VariableContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_variable; - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitVariable(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_whenContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_when; - } - - WHEN() { - return this.getToken(n1qlParser.WHEN, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_when(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class UnsetContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_unset; - } - - UNSET() { - return this.getToken(n1qlParser.UNSET, 0); - } - - unset_terms() { - return this.getTypedRuleContext(Unset_termsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUnset(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Unset_termsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_unset_terms; - } - - unset_term() { - return this.getTypedRuleContext(Unset_termContext, 0); - } - - unset_terms() { - return this.getTypedRuleContext(Unset_termsContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUnset_terms(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Unset_termContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_unset_term; - } - - path() { - return this.getTypedRuleContext(PathContext, 0); - } - - opt_update_for() { - return this.getTypedRuleContext(Opt_update_forContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUnset_term(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class MergeContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_merge; - } - - MERGE() { - return this.getToken(n1qlParser.MERGE, 0); - } - - INTO() { - return this.getToken(n1qlParser.INTO, 0); - } - - simple_keyspace_ref() { - return this.getTypedRuleContext(Simple_keyspace_refContext, 0); - } - - opt_use_merge() { - return this.getTypedRuleContext(Opt_use_mergeContext, 0); - } - - USING() { - return this.getToken(n1qlParser.USING, 0); - } - - simple_from_term() { - return this.getTypedRuleContext(Simple_from_termContext, 0); - } - - ON() { - return this.getToken(n1qlParser.ON, 0); - } - - opt_key() { - return this.getTypedRuleContext(Opt_keyContext, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - merge_actions() { - return this.getTypedRuleContext(Merge_actionsContext, 0); - } - - opt_limit() { - return this.getTypedRuleContext(Opt_limitContext, 0); - } - - opt_returning() { - return this.getTypedRuleContext(Opt_returningContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitMerge(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_use_mergeContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_use_merge; - } - - opt_use() { - return this.getTypedRuleContext(Opt_useContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_use_merge(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_keyContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_key; - } - - key() { - return this.getTypedRuleContext(KeyContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_key(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Merge_actionsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_merge_actions; - } - - WHEN() { - return this.getToken(n1qlParser.WHEN, 0); - } - - MATCHED() { - return this.getToken(n1qlParser.MATCHED, 0); - } - - THEN() { - return this.getToken(n1qlParser.THEN, 0); - } - - UPDATE() { - return this.getToken(n1qlParser.UPDATE, 0); - } - - merge_update() { - return this.getTypedRuleContext(Merge_updateContext, 0); - } - - opt_merge_delete_insert() { - return this.getTypedRuleContext(Opt_merge_delete_insertContext, 0); - } - - DELETE_() { - return this.getToken(n1qlParser.DELETE_, 0); - } - - merge_delete() { - return this.getTypedRuleContext(Merge_deleteContext, 0); - } - - opt_merge_insert() { - return this.getTypedRuleContext(Opt_merge_insertContext, 0); - } - - NOT() { - return this.getToken(n1qlParser.NOT, 0); - } - - INSERT() { - return this.getToken(n1qlParser.INSERT, 0); - } - - merge_insert() { - return this.getTypedRuleContext(Merge_insertContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitMerge_actions(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_merge_delete_insertContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_merge_delete_insert; - } - - WHEN() { - return this.getToken(n1qlParser.WHEN, 0); - } - - MATCHED() { - return this.getToken(n1qlParser.MATCHED, 0); - } - - THEN() { - return this.getToken(n1qlParser.THEN, 0); - } - - DELETE_() { - return this.getToken(n1qlParser.DELETE_, 0); - } - - merge_delete() { - return this.getTypedRuleContext(Merge_deleteContext, 0); - } - - opt_merge_insert() { - return this.getTypedRuleContext(Opt_merge_insertContext, 0); - } - - NOT() { - return this.getToken(n1qlParser.NOT, 0); - } - - INSERT() { - return this.getToken(n1qlParser.INSERT, 0); - } - - merge_insert() { - return this.getTypedRuleContext(Merge_insertContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_merge_delete_insert(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_merge_insertContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_merge_insert; - } - - WHEN() { - return this.getToken(n1qlParser.WHEN, 0); - } - - NOT() { - return this.getToken(n1qlParser.NOT, 0); - } - - MATCHED() { - return this.getToken(n1qlParser.MATCHED, 0); - } - - THEN() { - return this.getToken(n1qlParser.THEN, 0); - } - - INSERT() { - return this.getToken(n1qlParser.INSERT, 0); - } - - merge_insert() { - return this.getTypedRuleContext(Merge_insertContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_merge_insert(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Merge_updateContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_merge_update; - } - - set() { - return this.getTypedRuleContext(SetContext, 0); - } - - opt_where() { - return this.getTypedRuleContext(Opt_whereContext, 0); - } - - unset() { - return this.getTypedRuleContext(UnsetContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitMerge_update(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Merge_deleteContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_merge_delete; - } - - opt_where() { - return this.getTypedRuleContext(Opt_whereContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitMerge_delete(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Merge_insertContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_merge_insert; - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - opt_where() { - return this.getTypedRuleContext(Opt_whereContext, 0); - } - - key_val_expr() { - return this.getTypedRuleContext(Key_val_exprContext, 0); - } - - key_val_options_expr() { - return this.getTypedRuleContext(Key_val_options_exprContext, 0); - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - key_val_options_expr_header() { - return this.getTypedRuleContext(Key_val_options_expr_headerContext, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitMerge_insert(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Grant_roleContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_grant_role; - } - - GRANT() { - return this.getToken(n1qlParser.GRANT, 0); - } - - role_list() { - return this.getTypedRuleContext(Role_listContext, 0); - } - - TO() { - return this.getToken(n1qlParser.TO, 0); - } - - user_list() { - return this.getTypedRuleContext(User_listContext, 0); - } - - ON() { - return this.getToken(n1qlParser.ON, 0); - } - - keyspace_scope_list() { - return this.getTypedRuleContext(Keyspace_scope_listContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitGrant_role(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Role_listContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_role_list; - } - - role_name() { - return this.getTypedRuleContext(Role_nameContext, 0); - } - - role_list() { - return this.getTypedRuleContext(Role_listContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitRole_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Role_nameContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_role_name; - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - SELECT() { - return this.getToken(n1qlParser.SELECT, 0); - } - - INSERT() { - return this.getToken(n1qlParser.INSERT, 0); - } - - UPDATE() { - return this.getToken(n1qlParser.UPDATE, 0); - } - - DELETE_() { - return this.getToken(n1qlParser.DELETE_, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitRole_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Keyspace_scope_listContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_keyspace_scope_list; - } - - keyspace_scope() { - return this.getTypedRuleContext(Keyspace_scopeContext, 0); - } - - keyspace_scope_list() { - return this.getTypedRuleContext(Keyspace_scope_listContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitKeyspace_scope_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Keyspace_scopeContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_keyspace_scope; - } - - keyspace_name() { - return this.getTypedRuleContext(Keyspace_nameContext, 0); - } - - namespace_name() { - return this.getTypedRuleContext(Namespace_nameContext, 0); - } - - bucket_name() { - return this.getTypedRuleContext(Bucket_nameContext, 0); - } - - DOT = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTokens(n1qlParser.DOT); - } else { - return this.getToken(n1qlParser.DOT, i); - } - }; - - scope_name() { - return this.getTypedRuleContext(Scope_nameContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitKeyspace_scope(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class User_listContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_user_list; - } - - user() { - return this.getTypedRuleContext(UserContext, 0); - } - - user_list() { - return this.getTypedRuleContext(User_listContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUser_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class UserContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_user; - } - - IDENT = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTokens(n1qlParser.IDENT); - } else { - return this.getToken(n1qlParser.IDENT, i); - } - }; - - COLON() { - return this.getToken(n1qlParser.COLON, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUser(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Revoke_roleContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_revoke_role; - } - - REVOKE() { - return this.getToken(n1qlParser.REVOKE, 0); - } - - role_list() { - return this.getTypedRuleContext(Role_listContext, 0); - } - - FROM() { - return this.getToken(n1qlParser.FROM, 0); - } - - user_list() { - return this.getTypedRuleContext(User_listContext, 0); - } - - ON() { - return this.getToken(n1qlParser.ON, 0); - } - - keyspace_scope_list() { - return this.getTypedRuleContext(Keyspace_scope_listContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitRevoke_role(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Create_scopeContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_create_scope; - } - - CREATE() { - return this.getToken(n1qlParser.CREATE, 0); - } - - SCOPE() { - return this.getToken(n1qlParser.SCOPE, 0); - } - - named_scope_ref() { - return this.getTypedRuleContext(Named_scope_refContext, 0); - } - - if_not_exists() { - return this.getTypedRuleContext(If_not_existsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitCreate_scope(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Drop_scopeContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_drop_scope; - } - - DROP() { - return this.getToken(n1qlParser.DROP, 0); - } - - SCOPE() { - return this.getToken(n1qlParser.SCOPE, 0); - } - - named_scope_ref() { - return this.getTypedRuleContext(Named_scope_refContext, 0); - } - - if_exists() { - return this.getTypedRuleContext(If_existsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitDrop_scope(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Create_collectionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_create_collection; - } - - CREATE() { - return this.getToken(n1qlParser.CREATE, 0); - } - - COLLECTION() { - return this.getToken(n1qlParser.COLLECTION, 0); - } - - named_keyspace_ref() { - return this.getTypedRuleContext(Named_keyspace_refContext, 0); - } - - if_not_exists() { - return this.getTypedRuleContext(If_not_existsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitCreate_collection(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Drop_collectionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_drop_collection; - } - - DROP() { - return this.getToken(n1qlParser.DROP, 0); - } - - COLLECTION() { - return this.getToken(n1qlParser.COLLECTION, 0); - } - - named_keyspace_ref() { - return this.getTypedRuleContext(Named_keyspace_refContext, 0); - } - - if_exists() { - return this.getTypedRuleContext(If_existsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitDrop_collection(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Flush_collectionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_flush_collection; - } - - flush_or_truncate() { - return this.getTypedRuleContext(Flush_or_truncateContext, 0); - } - - COLLECTION() { - return this.getToken(n1qlParser.COLLECTION, 0); - } - - named_keyspace_ref() { - return this.getTypedRuleContext(Named_keyspace_refContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitFlush_collection(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Flush_or_truncateContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_flush_or_truncate; - } - - FLUSH() { - return this.getToken(n1qlParser.FLUSH, 0); - } - - TRUNCATE() { - return this.getToken(n1qlParser.TRUNCATE, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitFlush_or_truncate(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Create_indexContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_create_index; - } - - CREATE() { - return this.getToken(n1qlParser.CREATE, 0); - } - - INDEX() { - return this.getToken(n1qlParser.INDEX, 0); - } - - index_name() { - return this.getTypedRuleContext(Index_nameContext, 0); - } - - ON() { - return this.getToken(n1qlParser.ON, 0); - } - - named_keyspace_ref() { - return this.getTypedRuleContext(Named_keyspace_refContext, 0); - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - index_terms() { - return this.getTypedRuleContext(Index_termsContext, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - index_partition() { - return this.getTypedRuleContext(Index_partitionContext, 0); - } - - index_where() { - return this.getTypedRuleContext(Index_whereContext, 0); - } - - opt_index_using() { - return this.getTypedRuleContext(Opt_index_usingContext, 0); - } - - opt_index_with() { - return this.getTypedRuleContext(Opt_index_withContext, 0); - } - - if_not_exists() { - return this.getTypedRuleContext(If_not_existsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitCreate_index(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Create_primary_indexContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_create_primary_index; - } - - CREATE() { - return this.getToken(n1qlParser.CREATE, 0); - } - - PRIMARY() { - return this.getToken(n1qlParser.PRIMARY, 0); - } - - INDEX() { - return this.getToken(n1qlParser.INDEX, 0); - } - - opt_primary_name() { - return this.getTypedRuleContext(Opt_primary_nameContext, 0); - } - - ON() { - return this.getToken(n1qlParser.ON, 0); - } - - named_keyspace_ref() { - return this.getTypedRuleContext(Named_keyspace_refContext, 0); - } - - index_partition() { - return this.getTypedRuleContext(Index_partitionContext, 0); - } - - opt_index_using() { - return this.getTypedRuleContext(Opt_index_usingContext, 0); - } - - opt_index_with() { - return this.getTypedRuleContext(Opt_index_withContext, 0); - } - - if_not_exists() { - return this.getTypedRuleContext(If_not_existsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitCreate_primary_index(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_primary_nameContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_primary_name; - } - - index_name() { - return this.getTypedRuleContext(Index_nameContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_primary_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Index_nameContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_index_name; - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitIndex_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_index_nameContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_index_name; - } - - index_name() { - return this.getTypedRuleContext(Index_nameContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_index_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Named_keyspace_refContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_named_keyspace_ref; - } - - simple_named_keyspace_ref() { - return this.getTypedRuleContext(Simple_named_keyspace_refContext, 0); - } - - namespace_name() { - return this.getTypedRuleContext(Namespace_nameContext, 0); - } - - bucket_name() { - return this.getTypedRuleContext(Bucket_nameContext, 0); - } - - DOT = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTokens(n1qlParser.DOT); - } else { - return this.getToken(n1qlParser.DOT, i); - } - }; - - scope_name() { - return this.getTypedRuleContext(Scope_nameContext, 0); - } - - keyspace_name() { - return this.getTypedRuleContext(Keyspace_nameContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitNamed_keyspace_ref(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Simple_named_keyspace_refContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_simple_named_keyspace_ref; - } - - keyspace_name() { - return this.getTypedRuleContext(Keyspace_nameContext, 0); - } - - namespace_name() { - return this.getTypedRuleContext(Namespace_nameContext, 0); - } - - bucket_name() { - return this.getTypedRuleContext(Bucket_nameContext, 0); - } - - DOT = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTokens(n1qlParser.DOT); - } else { - return this.getToken(n1qlParser.DOT, i); - } - }; - - scope_name() { - return this.getTypedRuleContext(Scope_nameContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSimple_named_keyspace_ref(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Named_scope_refContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_named_scope_ref; - } - - namespace_name() { - return this.getTypedRuleContext(Namespace_nameContext, 0); - } - - bucket_name() { - return this.getTypedRuleContext(Bucket_nameContext, 0); - } - - DOT() { - return this.getToken(n1qlParser.DOT, 0); - } - - scope_name() { - return this.getTypedRuleContext(Scope_nameContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitNamed_scope_ref(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Index_partitionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_index_partition; - } - - PARTITION() { - return this.getToken(n1qlParser.PARTITION, 0); - } - - BY() { - return this.getToken(n1qlParser.BY, 0); - } - - HASH() { - return this.getToken(n1qlParser.HASH, 0); - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - exprs() { - return this.getTypedRuleContext(ExprsContext, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitIndex_partition(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_index_usingContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_index_using; - } - - index_using() { - return this.getTypedRuleContext(Index_usingContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_index_using(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Index_usingContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_index_using; - } - - USING() { - return this.getToken(n1qlParser.USING, 0); - } - - VIEW() { - return this.getToken(n1qlParser.VIEW, 0); - } - - GSI() { - return this.getToken(n1qlParser.GSI, 0); - } - - FTS() { - return this.getToken(n1qlParser.FTS, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitIndex_using(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_index_withContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_index_with; - } - - index_with() { - return this.getTypedRuleContext(Index_withContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_index_with(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Index_withContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_index_with; - } - - WITH() { - return this.getToken(n1qlParser.WITH, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitIndex_with(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Index_termsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_index_terms; - } - - index_term() { - return this.getTypedRuleContext(Index_termContext, 0); - } - - index_terms() { - return this.getTypedRuleContext(Index_termsContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitIndex_terms(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Index_termContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_index_term; - } - - index_term_expr() { - return this.getTypedRuleContext(Index_term_exprContext, 0); - } - - opt_ikattr() { - return this.getTypedRuleContext(Opt_ikattrContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitIndex_term(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Index_term_exprContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_index_term_expr; - } - - index_expr() { - return this.getTypedRuleContext(Index_exprContext, 0); - } - - all() { - return this.getTypedRuleContext(AllContext, 0); - } - - DISTINCT() { - return this.getToken(n1qlParser.DISTINCT, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitIndex_term_expr(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Index_exprContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_index_expr; - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitIndex_expr(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class AllContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_all; - } - - ALL() { - return this.getToken(n1qlParser.ALL, 0); - } - - EACH() { - return this.getToken(n1qlParser.EACH, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitAll(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Index_whereContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_index_where; - } - - WHERE() { - return this.getToken(n1qlParser.WHERE, 0); - } - - index_expr() { - return this.getTypedRuleContext(Index_exprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitIndex_where(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_ikattrContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_ikattr; - } - - ikattr = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTypedRuleContexts(IkattrContext); - } else { - return this.getTypedRuleContext(IkattrContext, i); - } - }; - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_ikattr(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class IkattrContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_ikattr; - } - - ASC() { - return this.getToken(n1qlParser.ASC, 0); - } - - DESC() { - return this.getToken(n1qlParser.DESC, 0); - } - - MISSING() { - return this.getToken(n1qlParser.MISSING, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitIkattr(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Drop_indexContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_drop_index; - } - - DROP() { - return this.getToken(n1qlParser.DROP, 0); - } - - PRIMARY() { - return this.getToken(n1qlParser.PRIMARY, 0); - } - - INDEX() { - return this.getToken(n1qlParser.INDEX, 0); - } - - ON() { - return this.getToken(n1qlParser.ON, 0); - } - - named_keyspace_ref() { - return this.getTypedRuleContext(Named_keyspace_refContext, 0); - } - - opt_index_using() { - return this.getTypedRuleContext(Opt_index_usingContext, 0); - } - - simple_named_keyspace_ref() { - return this.getTypedRuleContext(Simple_named_keyspace_refContext, 0); - } - - DOT() { - return this.getToken(n1qlParser.DOT, 0); - } - - index_name() { - return this.getTypedRuleContext(Index_nameContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitDrop_index(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Alter_indexContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_alter_index; - } - - ALTER() { - return this.getToken(n1qlParser.ALTER, 0); - } - - INDEX() { - return this.getToken(n1qlParser.INDEX, 0); - } - - simple_named_keyspace_ref() { - return this.getTypedRuleContext(Simple_named_keyspace_refContext, 0); - } - - DOT() { - return this.getToken(n1qlParser.DOT, 0); - } - - index_name() { - return this.getTypedRuleContext(Index_nameContext, 0); - } - - opt_index_using() { - return this.getTypedRuleContext(Opt_index_usingContext, 0); - } - - index_with() { - return this.getTypedRuleContext(Index_withContext, 0); - } - - ON() { - return this.getToken(n1qlParser.ON, 0); - } - - named_keyspace_ref() { - return this.getTypedRuleContext(Named_keyspace_refContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitAlter_index(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Build_indexContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_build_index; - } - - BUILD() { - return this.getToken(n1qlParser.BUILD, 0); - } - - INDEX() { - return this.getToken(n1qlParser.INDEX, 0); - } - - ON() { - return this.getToken(n1qlParser.ON, 0); - } - - named_keyspace_ref() { - return this.getTypedRuleContext(Named_keyspace_refContext, 0); - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - exprs() { - return this.getTypedRuleContext(ExprsContext, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - opt_index_using() { - return this.getTypedRuleContext(Opt_index_usingContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitBuild_index(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Create_functionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_create_function; - } - - CREATE() { - return this.getToken(n1qlParser.CREATE, 0); - } - - opt_replace() { - return this.getTypedRuleContext(Opt_replaceContext, 0); - } - - FUNCTION() { - return this.getToken(n1qlParser.FUNCTION, 0); - } - - func_name() { - return this.getTypedRuleContext(Func_nameContext, 0); - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - parm_list() { - return this.getTypedRuleContext(Parm_listContext, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - func_body() { - return this.getTypedRuleContext(Func_bodyContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitCreate_function(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_replaceContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_replace; - } - - OR() { - return this.getToken(n1qlParser.OR, 0); - } - - REPLACE() { - return this.getToken(n1qlParser.REPLACE, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_replace(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Func_nameContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_func_name; - } - - short_func_name() { - return this.getTypedRuleContext(Short_func_nameContext, 0); - } - - long_func_name() { - return this.getTypedRuleContext(Long_func_nameContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitFunc_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Short_func_nameContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_short_func_name; - } - - keyspace_name() { - return this.getTypedRuleContext(Keyspace_nameContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitShort_func_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Long_func_nameContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_long_func_name; - } - - namespace_term() { - return this.getTypedRuleContext(Namespace_termContext, 0); - } - - keyspace_name() { - return this.getTypedRuleContext(Keyspace_nameContext, 0); - } - - bucket_name() { - return this.getTypedRuleContext(Bucket_nameContext, 0); - } - - DOT = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTokens(n1qlParser.DOT); - } else { - return this.getToken(n1qlParser.DOT, i); - } - }; - - scope_name() { - return this.getTypedRuleContext(Scope_nameContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitLong_func_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Parm_listContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_parm_list; - } - - DOT = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTokens(n1qlParser.DOT); - } else { - return this.getToken(n1qlParser.DOT, i); - } - }; - - parameter_terms() { - return this.getTypedRuleContext(Parameter_termsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitParm_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Parameter_termsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_parameter_terms; - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - parameter_terms() { - return this.getTypedRuleContext(Parameter_termsContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitParameter_terms(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Func_bodyContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_func_body; - } - - LBRACE() { - return this.getToken(n1qlParser.LBRACE, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - RBRACE() { - return this.getToken(n1qlParser.RBRACE, 0); - } - - LANGUAGE() { - return this.getToken(n1qlParser.LANGUAGE, 0); - } - - INLINE() { - return this.getToken(n1qlParser.INLINE, 0); - } - - AS() { - return this.getToken(n1qlParser.AS, 0); - } - - GOLANG() { - return this.getToken(n1qlParser.GOLANG, 0); - } - - STR = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTokens(n1qlParser.STR); - } else { - return this.getToken(n1qlParser.STR, i); - } - }; - - AT() { - return this.getToken(n1qlParser.AT, 0); - } - - JAVASCRIPT() { - return this.getToken(n1qlParser.JAVASCRIPT, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitFunc_body(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Drop_functionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_drop_function; - } - - DROP() { - return this.getToken(n1qlParser.DROP, 0); - } - - FUNCTION() { - return this.getToken(n1qlParser.FUNCTION, 0); - } - - func_name() { - return this.getTypedRuleContext(Func_nameContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitDrop_function(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Execute_functionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_execute_function; - } - - EXECUTE() { - return this.getToken(n1qlParser.EXECUTE, 0); - } - - FUNCTION() { - return this.getToken(n1qlParser.FUNCTION, 0); - } - - func_name() { - return this.getTypedRuleContext(Func_nameContext, 0); - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - opt_exprs() { - return this.getTypedRuleContext(Opt_exprsContext, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitExecute_function(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Update_statisticsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_update_statistics; - } - - UPDATE() { - return this.getToken(n1qlParser.UPDATE, 0); - } - - STATISTICS() { - return this.getToken(n1qlParser.STATISTICS, 0); - } - - opt_for() { - return this.getTypedRuleContext(Opt_forContext, 0); - } - - named_keyspace_ref() { - return this.getTypedRuleContext(Named_keyspace_refContext, 0); - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - update_stat_terms() { - return this.getTypedRuleContext(Update_stat_termsContext, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - opt_infer_ustat_with() { - return this.getTypedRuleContext(Opt_infer_ustat_withContext, 0); - } - - DELETE_() { - return this.getToken(n1qlParser.DELETE_, 0); - } - - ALL() { - return this.getToken(n1qlParser.ALL, 0); - } - - INDEX() { - return this.getToken(n1qlParser.INDEX, 0); - } - - exprs() { - return this.getTypedRuleContext(ExprsContext, 0); - } - - opt_index_using() { - return this.getTypedRuleContext(Opt_index_usingContext, 0); - } - - FOR() { - return this.getToken(n1qlParser.FOR, 0); - } - - simple_named_keyspace_ref() { - return this.getTypedRuleContext(Simple_named_keyspace_refContext, 0); - } - - DOT() { - return this.getToken(n1qlParser.DOT, 0); - } - - index_name() { - return this.getTypedRuleContext(Index_nameContext, 0); - } - - ON() { - return this.getToken(n1qlParser.ON, 0); - } - - ANALYZE() { - return this.getToken(n1qlParser.ANALYZE, 0); - } - - opt_keyspace_collection() { - return this.getTypedRuleContext(Opt_keyspace_collectionContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUpdate_statistics(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_forContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_for; - } - - FOR() { - return this.getToken(n1qlParser.FOR, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_for(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Update_stat_termsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_update_stat_terms; - } - - update_stat_term() { - return this.getTypedRuleContext(Update_stat_termContext, 0); - } - - update_stat_terms() { - return this.getTypedRuleContext(Update_stat_termsContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUpdate_stat_terms(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Update_stat_termContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_update_stat_term; - } - - index_term_expr() { - return this.getTypedRuleContext(Index_term_exprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitUpdate_stat_term(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class PathContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_path; - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - path() { - return this.getTypedRuleContext(PathContext, 0); - } - - DOT() { - return this.getToken(n1qlParser.DOT, 0); - } - - IDENT_ICASE() { - return this.getToken(n1qlParser.IDENT_ICASE, 0); - } - - LBRACKET() { - return this.getToken(n1qlParser.LBRACKET, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - RBRACKET() { - return this.getToken(n1qlParser.RBRACKET, 0); - } - - RBRACKET_ICASE() { - return this.getToken(n1qlParser.RBRACKET_ICASE, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitPath(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class ExprContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_expr; - } - - c_expr() { - return this.getTypedRuleContext(C_exprContext, 0); - } - - NOT() { - return this.getToken(n1qlParser.NOT, 0); - } - - expr = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTypedRuleContexts(ExprContext); - } else { - return this.getTypedRuleContext(ExprContext, i); - } - }; - - EXISTS() { - return this.getToken(n1qlParser.EXISTS, 0); - } - - PLUS() { - return this.getToken(n1qlParser.PLUS, 0); - } - - MINUS() { - return this.getToken(n1qlParser.MINUS, 0); - } - - STAR() { - return this.getToken(n1qlParser.STAR, 0); - } - - DIV() { - return this.getToken(n1qlParser.DIV, 0); - } - - MOD() { - return this.getToken(n1qlParser.MOD, 0); - } - - CONCAT() { - return this.getToken(n1qlParser.CONCAT, 0); - } - - AND() { - return this.getToken(n1qlParser.AND, 0); - } - - OR() { - return this.getToken(n1qlParser.OR, 0); - } - - EQ() { - return this.getToken(n1qlParser.EQ, 0); - } - - DEQ() { - return this.getToken(n1qlParser.DEQ, 0); - } - - NE() { - return this.getToken(n1qlParser.NE, 0); - } - - LT() { - return this.getToken(n1qlParser.LT, 0); - } - - GT() { - return this.getToken(n1qlParser.GT, 0); - } - - LE() { - return this.getToken(n1qlParser.LE, 0); - } - - GE() { - return this.getToken(n1qlParser.GE, 0); - } - - LIKE() { - return this.getToken(n1qlParser.LIKE, 0); - } - - IN() { - return this.getToken(n1qlParser.IN, 0); - } - - WITHIN() { - return this.getToken(n1qlParser.WITHIN, 0); - } - - DOT() { - return this.getToken(n1qlParser.DOT, 0); - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - IDENT_ICASE() { - return this.getToken(n1qlParser.IDENT_ICASE, 0); - } - - LBRACKET() { - return this.getToken(n1qlParser.LBRACKET, 0); - } - - RBRACKET() { - return this.getToken(n1qlParser.RBRACKET, 0); - } - - RBRACKET_ICASE() { - return this.getToken(n1qlParser.RBRACKET_ICASE, 0); - } - - COLON() { - return this.getToken(n1qlParser.COLON, 0); - } - - BETWEEN() { - return this.getToken(n1qlParser.BETWEEN, 0); - } - - b_expr = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTypedRuleContexts(B_exprContext); - } else { - return this.getTypedRuleContext(B_exprContext, i); - } - }; - - IS() { - return this.getToken(n1qlParser.IS, 0); - } - - NULL() { - return this.getToken(n1qlParser.NULL, 0); - } - - MISSING() { - return this.getToken(n1qlParser.MISSING, 0); - } - - valued() { - return this.getTypedRuleContext(ValuedContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitExpr(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class ValuedContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_valued; - } - - VALUED() { - return this.getToken(n1qlParser.VALUED, 0); - } - - KNOWN() { - return this.getToken(n1qlParser.KNOWN, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitValued(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class C_exprContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_c_expr; - } - - literal() { - return this.getTypedRuleContext(LiteralContext, 0); - } - - construction_expr() { - return this.getTypedRuleContext(Construction_exprContext, 0); - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - IDENT_ICASE() { - return this.getToken(n1qlParser.IDENT_ICASE, 0); - } - - SELF() { - return this.getToken(n1qlParser.SELF, 0); - } - - param_expr() { - return this.getTypedRuleContext(Param_exprContext, 0); - } - - function_expr() { - return this.getTypedRuleContext(Function_exprContext, 0); - } - - MINUS() { - return this.getToken(n1qlParser.MINUS, 0); - } - - case_expr() { - return this.getTypedRuleContext(Case_exprContext, 0); - } - - collection_expr() { - return this.getTypedRuleContext(Collection_exprContext, 0); - } - - paren_expr() { - return this.getTypedRuleContext(Paren_exprContext, 0); - } - - COVER() { - return this.getToken(n1qlParser.COVER, 0); - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitC_expr(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class B_exprContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_b_expr; - } - - c_expr() { - return this.getTypedRuleContext(C_exprContext, 0); - } - - b_expr = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTypedRuleContexts(B_exprContext); - } else { - return this.getTypedRuleContext(B_exprContext, i); - } - }; - - PLUS() { - return this.getToken(n1qlParser.PLUS, 0); - } - - MINUS() { - return this.getToken(n1qlParser.MINUS, 0); - } - - STAR() { - return this.getToken(n1qlParser.STAR, 0); - } - - DIV() { - return this.getToken(n1qlParser.DIV, 0); - } - - MOD() { - return this.getToken(n1qlParser.MOD, 0); - } - - CONCAT() { - return this.getToken(n1qlParser.CONCAT, 0); - } - - DOT() { - return this.getToken(n1qlParser.DOT, 0); - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - IDENT_ICASE() { - return this.getToken(n1qlParser.IDENT_ICASE, 0); - } - - LBRACKET() { - return this.getToken(n1qlParser.LBRACKET, 0); - } - - expr = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTypedRuleContexts(ExprContext); - } else { - return this.getTypedRuleContext(ExprContext, i); - } - }; - - RBRACKET() { - return this.getToken(n1qlParser.RBRACKET, 0); - } - - RBRACKET_ICASE() { - return this.getToken(n1qlParser.RBRACKET_ICASE, 0); - } - - COLON() { - return this.getToken(n1qlParser.COLON, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitB_expr(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class LiteralContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_literal; - } - - NULL() { - return this.getToken(n1qlParser.NULL, 0); - } - - MISSING() { - return this.getToken(n1qlParser.MISSING, 0); - } - - FALSE() { - return this.getToken(n1qlParser.FALSE, 0); - } - - TRUE() { - return this.getToken(n1qlParser.TRUE, 0); - } - - NUM() { - return this.getToken(n1qlParser.NUM, 0); - } - - INT() { - return this.getToken(n1qlParser.INT, 0); - } - - STR() { - return this.getToken(n1qlParser.STR, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitLiteral(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Construction_exprContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_construction_expr; - } - - object() { - return this.getTypedRuleContext(ObjectContext, 0); - } - - array() { - return this.getTypedRuleContext(ArrayContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitConstruction_expr(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class ObjectContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_object; - } - - LBRACE() { - return this.getToken(n1qlParser.LBRACE, 0); - } - - opt_members() { - return this.getTypedRuleContext(Opt_membersContext, 0); - } - - RBRACE() { - return this.getToken(n1qlParser.RBRACE, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitObject(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_membersContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_members; - } - - members() { - return this.getTypedRuleContext(MembersContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_members(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class MembersContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_members; - } - - member() { - return this.getTypedRuleContext(MemberContext, 0); - } - - members() { - return this.getTypedRuleContext(MembersContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitMembers(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class MemberContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_member; - } - - expr = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTypedRuleContexts(ExprContext); - } else { - return this.getTypedRuleContext(ExprContext, i); - } - }; - - COLON() { - return this.getToken(n1qlParser.COLON, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class ArrayContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_array; - } - - LBRACKET() { - return this.getToken(n1qlParser.LBRACKET, 0); - } - - opt_exprs() { - return this.getTypedRuleContext(Opt_exprsContext, 0); - } - - RBRACKET() { - return this.getToken(n1qlParser.RBRACKET, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitArray(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_exprsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_exprs; - } - - exprs() { - return this.getTypedRuleContext(ExprsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_exprs(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class ExprsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_exprs; - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - exprs() { - return this.getTypedRuleContext(ExprsContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitExprs(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Param_exprContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_param_expr; - } - - NAMED_PARAM() { - return this.getToken(n1qlParser.NAMED_PARAM, 0); - } - - POSITIONAL_PARAM() { - return this.getToken(n1qlParser.POSITIONAL_PARAM, 0); - } - - NEXT_PARAM() { - return this.getToken(n1qlParser.NEXT_PARAM, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitParam_expr(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Case_exprContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_case_expr; - } - - CASE() { - return this.getToken(n1qlParser.CASE, 0); - } - - simple_or_searched_case() { - return this.getTypedRuleContext(Simple_or_searched_caseContext, 0); - } - - END() { - return this.getToken(n1qlParser.END, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitCase_expr(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Simple_or_searched_caseContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_simple_or_searched_case; - } - - simple_case() { - return this.getTypedRuleContext(Simple_caseContext, 0); - } - - searched_case() { - return this.getTypedRuleContext(Searched_caseContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSimple_or_searched_case(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Simple_caseContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_simple_case; - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - when_thens() { - return this.getTypedRuleContext(When_thensContext, 0); - } - - opt_else() { - return this.getTypedRuleContext(Opt_elseContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSimple_case(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class When_thensContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_when_thens; - } - - WHEN() { - return this.getToken(n1qlParser.WHEN, 0); - } - - expr = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTypedRuleContexts(ExprContext); - } else { - return this.getTypedRuleContext(ExprContext, i); - } - }; - - THEN() { - return this.getToken(n1qlParser.THEN, 0); - } - - when_thens() { - return this.getTypedRuleContext(When_thensContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitWhen_thens(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Searched_caseContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_searched_case; - } - - when_thens() { - return this.getTypedRuleContext(When_thensContext, 0); - } - - opt_else() { - return this.getTypedRuleContext(Opt_elseContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSearched_case(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_elseContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_else; - } - - ELSE() { - return this.getToken(n1qlParser.ELSE, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_else(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Function_exprContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_function_expr; - } - - NTH_VALUE() { - return this.getToken(n1qlParser.NTH_VALUE, 0); - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - exprs() { - return this.getTypedRuleContext(ExprsContext, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - opt_from_first_last() { - return this.getTypedRuleContext(Opt_from_first_lastContext, 0); - } - - opt_nulls_treatment() { - return this.getTypedRuleContext(Opt_nulls_treatmentContext, 0); - } - - window_function_details() { - return this.getTypedRuleContext(Window_function_detailsContext, 0); - } - - function_name() { - return this.getTypedRuleContext(Function_nameContext, 0); - } - - opt_exprs() { - return this.getTypedRuleContext(Opt_exprsContext, 0); - } - - opt_filter() { - return this.getTypedRuleContext(Opt_filterContext, 0); - } - - opt_window_function() { - return this.getTypedRuleContext(Opt_window_functionContext, 0); - } - - agg_quantifier() { - return this.getTypedRuleContext(Agg_quantifierContext, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - STAR() { - return this.getToken(n1qlParser.STAR, 0); - } - - long_func_name() { - return this.getTypedRuleContext(Long_func_nameContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitFunction_expr(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Function_nameContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_function_name; - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - REPLACE() { - return this.getToken(n1qlParser.REPLACE, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitFunction_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Collection_exprContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_collection_expr; - } - - collection_cond() { - return this.getTypedRuleContext(Collection_condContext, 0); - } - - collection_xform() { - return this.getTypedRuleContext(Collection_xformContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitCollection_expr(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Collection_condContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_collection_cond; - } - - ANY() { - return this.getToken(n1qlParser.ANY, 0); - } - - coll_bindings() { - return this.getTypedRuleContext(Coll_bindingsContext, 0); - } - - satisfies() { - return this.getTypedRuleContext(SatisfiesContext, 0); - } - - END() { - return this.getToken(n1qlParser.END, 0); - } - - SOME() { - return this.getToken(n1qlParser.SOME, 0); - } - - EVERY() { - return this.getToken(n1qlParser.EVERY, 0); - } - - AND() { - return this.getToken(n1qlParser.AND, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitCollection_cond(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Coll_bindingsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_coll_bindings; - } - - coll_binding() { - return this.getTypedRuleContext(Coll_bindingContext, 0); - } - - coll_bindings() { - return this.getTypedRuleContext(Coll_bindingsContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitColl_bindings(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Coll_bindingContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_coll_binding; - } - - variable = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTypedRuleContexts(VariableContext); - } else { - return this.getTypedRuleContext(VariableContext, i); - } - }; - - IN() { - return this.getToken(n1qlParser.IN, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - WITHIN() { - return this.getToken(n1qlParser.WITHIN, 0); - } - - COLON() { - return this.getToken(n1qlParser.COLON, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitColl_binding(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class SatisfiesContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_satisfies; - } - - SATISFIES() { - return this.getToken(n1qlParser.SATISFIES, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSatisfies(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Collection_xformContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_collection_xform; - } - - ARRAY() { - return this.getToken(n1qlParser.ARRAY, 0); - } - - expr = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTypedRuleContexts(ExprContext); - } else { - return this.getTypedRuleContext(ExprContext, i); - } - }; - - FOR() { - return this.getToken(n1qlParser.FOR, 0); - } - - coll_bindings() { - return this.getTypedRuleContext(Coll_bindingsContext, 0); - } - - opt_when() { - return this.getTypedRuleContext(Opt_whenContext, 0); - } - - END() { - return this.getToken(n1qlParser.END, 0); - } - - FIRST() { - return this.getToken(n1qlParser.FIRST, 0); - } - - OBJECT() { - return this.getToken(n1qlParser.OBJECT, 0); - } - - COLON() { - return this.getToken(n1qlParser.COLON, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitCollection_xform(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Paren_exprContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_paren_expr; - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - all_expr() { - return this.getTypedRuleContext(All_exprContext, 0); - } - - subquery_expr() { - return this.getTypedRuleContext(Subquery_exprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitParen_expr(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Subquery_exprContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_subquery_expr; - } - - CORRELATED() { - return this.getToken(n1qlParser.CORRELATED, 0); - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - fullselect() { - return this.getTypedRuleContext(FullselectContext, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSubquery_expr(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Expr_inputContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_expr_input; - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - all_expr() { - return this.getTypedRuleContext(All_exprContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitExpr_input(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class All_exprContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_all_expr; - } - - all() { - return this.getTypedRuleContext(AllContext, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - DISTINCT() { - return this.getToken(n1qlParser.DISTINCT, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitAll_expr(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_window_clauseContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_window_clause; - } - - WINDOW() { - return this.getToken(n1qlParser.WINDOW, 0); - } - - window_list() { - return this.getTypedRuleContext(Window_listContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_window_clause(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Window_listContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_window_list; - } - - window_term() { - return this.getTypedRuleContext(Window_termContext, 0); - } - - window_list() { - return this.getTypedRuleContext(Window_listContext, 0); - } - - COMMA() { - return this.getToken(n1qlParser.COMMA, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitWindow_list(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Window_termContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_window_term; - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - AS() { - return this.getToken(n1qlParser.AS, 0); - } - - window_specification() { - return this.getTypedRuleContext(Window_specificationContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitWindow_term(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Window_specificationContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_window_specification; - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - opt_window_name() { - return this.getTypedRuleContext(Opt_window_nameContext, 0); - } - - opt_window_partition() { - return this.getTypedRuleContext(Opt_window_partitionContext, 0); - } - - opt_order_by() { - return this.getTypedRuleContext(Opt_order_byContext, 0); - } - - opt_window_frame() { - return this.getTypedRuleContext(Opt_window_frameContext, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitWindow_specification(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_window_nameContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_window_name; - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_window_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_window_partitionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_window_partition; - } - - PARTITION() { - return this.getToken(n1qlParser.PARTITION, 0); - } - - BY() { - return this.getToken(n1qlParser.BY, 0); - } - - exprs() { - return this.getTypedRuleContext(ExprsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_window_partition(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_window_frameContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_window_frame; - } - - window_frame_modifier() { - return this.getTypedRuleContext(Window_frame_modifierContext, 0); - } - - window_frame_extents() { - return this.getTypedRuleContext(Window_frame_extentsContext, 0); - } - - opt_window_frame_exclusion() { - return this.getTypedRuleContext(Opt_window_frame_exclusionContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_window_frame(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Window_frame_modifierContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_window_frame_modifier; - } - - ROWS() { - return this.getToken(n1qlParser.ROWS, 0); - } - - RANGE() { - return this.getToken(n1qlParser.RANGE, 0); - } - - GROUPS() { - return this.getToken(n1qlParser.GROUPS, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitWindow_frame_modifier(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_window_frame_exclusionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_window_frame_exclusion; - } - - EXCLUDE() { - return this.getToken(n1qlParser.EXCLUDE, 0); - } - - NO() { - return this.getToken(n1qlParser.NO, 0); - } - - OTHERS() { - return this.getToken(n1qlParser.OTHERS, 0); - } - - CURRENT() { - return this.getToken(n1qlParser.CURRENT, 0); - } - - ROW() { - return this.getToken(n1qlParser.ROW, 0); - } - - TIES() { - return this.getToken(n1qlParser.TIES, 0); - } - - GROUP() { - return this.getToken(n1qlParser.GROUP, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_window_frame_exclusion(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Window_frame_extentsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_window_frame_extents; - } - - window_frame_extent = function (i) { - if (i === undefined) { - i = null; - } - if (i === null) { - return this.getTypedRuleContexts(Window_frame_extentContext); - } else { - return this.getTypedRuleContext(Window_frame_extentContext, i); - } - }; - - BETWEEN() { - return this.getToken(n1qlParser.BETWEEN, 0); - } - - AND() { - return this.getToken(n1qlParser.AND, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitWindow_frame_extents(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Window_frame_extentContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_window_frame_extent; - } - - UNBOUNDED() { - return this.getToken(n1qlParser.UNBOUNDED, 0); - } - - PRECEDING() { - return this.getToken(n1qlParser.PRECEDING, 0); - } - - FOLLOWING() { - return this.getToken(n1qlParser.FOLLOWING, 0); - } - - CURRENT() { - return this.getToken(n1qlParser.CURRENT, 0); - } - - ROW() { - return this.getToken(n1qlParser.ROW, 0); - } - - expr() { - return this.getTypedRuleContext(ExprContext, 0); - } - - window_frame_valexpr_modifier() { - return this.getTypedRuleContext(Window_frame_valexpr_modifierContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitWindow_frame_extent(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Window_frame_valexpr_modifierContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_window_frame_valexpr_modifier; - } - - PRECEDING() { - return this.getToken(n1qlParser.PRECEDING, 0); - } - - FOLLOWING() { - return this.getToken(n1qlParser.FOLLOWING, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitWindow_frame_valexpr_modifier(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_nulls_treatmentContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_nulls_treatment; - } - - nulls_treatment() { - return this.getTypedRuleContext(Nulls_treatmentContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_nulls_treatment(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Nulls_treatmentContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_nulls_treatment; - } - - RESPECT() { - return this.getToken(n1qlParser.RESPECT, 0); - } - - NULLS() { - return this.getToken(n1qlParser.NULLS, 0); - } - - IGNORE() { - return this.getToken(n1qlParser.IGNORE, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitNulls_treatment(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_from_first_lastContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_from_first_last; - } - - FROM() { - return this.getToken(n1qlParser.FROM, 0); - } - - first_last() { - return this.getTypedRuleContext(First_lastContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_from_first_last(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Agg_quantifierContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_agg_quantifier; - } - - ALL() { - return this.getToken(n1qlParser.ALL, 0); - } - - DISTINCT() { - return this.getToken(n1qlParser.DISTINCT, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitAgg_quantifier(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_filterContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_filter; - } - - FILTER() { - return this.getToken(n1qlParser.FILTER, 0); - } - - LPAREN() { - return this.getToken(n1qlParser.LPAREN, 0); - } - - where() { - return this.getTypedRuleContext(WhereContext, 0); - } - - RPAREN() { - return this.getToken(n1qlParser.RPAREN, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_filter(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_window_functionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_window_function; - } - - window_function_details() { - return this.getTypedRuleContext(Window_function_detailsContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_window_function(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Window_function_detailsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_window_function_details; - } - - OVER() { - return this.getToken(n1qlParser.OVER, 0); - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - window_specification() { - return this.getTypedRuleContext(Window_specificationContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitWindow_function_details(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Start_transactionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_start_transaction; - } - - start_or_begin() { - return this.getTypedRuleContext(Start_or_beginContext, 0); - } - - transaction() { - return this.getTypedRuleContext(TransactionContext, 0); - } - - opt_isolation_level() { - return this.getTypedRuleContext(Opt_isolation_levelContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitStart_transaction(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Commit_transactionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_commit_transaction; - } - - COMMIT() { - return this.getToken(n1qlParser.COMMIT, 0); - } - - opt_transaction() { - return this.getTypedRuleContext(Opt_transactionContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitCommit_transaction(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Rollback_transactionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_rollback_transaction; - } - - ROLLBACK() { - return this.getToken(n1qlParser.ROLLBACK, 0); - } - - opt_transaction() { - return this.getTypedRuleContext(Opt_transactionContext, 0); - } - - opt_savepoint() { - return this.getTypedRuleContext(Opt_savepointContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitRollback_transaction(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Start_or_beginContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_start_or_begin; - } - - START() { - return this.getToken(n1qlParser.START, 0); - } - - BEGIN() { - return this.getToken(n1qlParser.BEGIN, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitStart_or_begin(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_transactionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_transaction; - } - - transaction() { - return this.getTypedRuleContext(TransactionContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_transaction(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class TransactionContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_transaction; - } - - TRAN() { - return this.getToken(n1qlParser.TRAN, 0); - } - - TRANSACTION() { - return this.getToken(n1qlParser.TRANSACTION, 0); - } - - WORK() { - return this.getToken(n1qlParser.WORK, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitTransaction(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_savepointContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_savepoint; - } - - TO() { - return this.getToken(n1qlParser.TO, 0); - } - - SAVEPOINT() { - return this.getToken(n1qlParser.SAVEPOINT, 0); - } - - savepoint_name() { - return this.getTypedRuleContext(Savepoint_nameContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_savepoint(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Savepoint_nameContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_savepoint_name; - } - - IDENT() { - return this.getToken(n1qlParser.IDENT, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSavepoint_name(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Opt_isolation_levelContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_opt_isolation_level; - } - - isolation_level() { - return this.getTypedRuleContext(Isolation_levelContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitOpt_isolation_level(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Isolation_levelContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_isolation_level; - } - - ISOLATION() { - return this.getToken(n1qlParser.ISOLATION, 0); - } - - LEVEL() { - return this.getToken(n1qlParser.LEVEL, 0); - } - - isolation_val() { - return this.getTypedRuleContext(Isolation_valContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitIsolation_level(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Isolation_valContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_isolation_val; - } - - READ() { - return this.getToken(n1qlParser.READ, 0); - } - - COMMITTED() { - return this.getToken(n1qlParser.COMMITTED, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitIsolation_val(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class Set_transaction_isolationContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_set_transaction_isolation; - } - - SET() { - return this.getToken(n1qlParser.SET, 0); - } - - TRANSACTION() { - return this.getToken(n1qlParser.TRANSACTION, 0); - } - - isolation_level() { - return this.getTypedRuleContext(Isolation_levelContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSet_transaction_isolation(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class SavepointContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_savepoint; - } - - SAVEPOINT() { - return this.getToken(n1qlParser.SAVEPOINT, 0); - } - - savepoint_name() { - return this.getTypedRuleContext(Savepoint_nameContext, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitSavepoint(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class If_existsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_if_exists; - } - - IF() { - return this.getToken(n1qlParser.IF, 0); - } - - EXISTS() { - return this.getToken(n1qlParser.EXISTS, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitIf_exists(this); - } else { - return visitor.visitChildren(this); - } - } -} - -class If_not_existsContext extends antlr4.ParserRuleContext { - constructor(parser, parent, invokingState) { - if (parent === undefined) { - parent = null; - } - if (invokingState === undefined || invokingState === null) { - invokingState = -1; - } - super(parent, invokingState); - this.parser = parser; - this.ruleIndex = n1qlParser.RULE_if_not_exists; - } - - IF() { - return this.getToken(n1qlParser.IF, 0); - } - - NOT() { - return this.getToken(n1qlParser.NOT, 0); - } - - EXISTS() { - return this.getToken(n1qlParser.EXISTS, 0); - } - - accept(visitor) { - if (visitor instanceof n1qlVisitor) { - return visitor.visitIf_not_exists(this); - } else { - return visitor.visitChildren(this); - } - } -} - -n1qlParser.StatementsContext = StatementsContext; -n1qlParser.InputContext = InputContext; -n1qlParser.Opt_trailerContext = Opt_trailerContext; -n1qlParser.Stmt_bodyContext = Stmt_bodyContext; -n1qlParser.StmtContext = StmtContext; -n1qlParser.AdviseContext = AdviseContext; -n1qlParser.Opt_indexContext = Opt_indexContext; -n1qlParser.ExplainContext = ExplainContext; -n1qlParser.PrepareContext = PrepareContext; -n1qlParser.Opt_forceContext = Opt_forceContext; -n1qlParser.Opt_nameContext = Opt_nameContext; -n1qlParser.From_or_asContext = From_or_asContext; -n1qlParser.ExecuteContext = ExecuteContext; -n1qlParser.Execute_usingContext = Execute_usingContext; -n1qlParser.InferContext = InferContext; -n1qlParser.Opt_keyspace_collectionContext = Opt_keyspace_collectionContext; -n1qlParser.Opt_infer_usingContext = Opt_infer_usingContext; -n1qlParser.Opt_infer_ustat_withContext = Opt_infer_ustat_withContext; -n1qlParser.Infer_ustat_withContext = Infer_ustat_withContext; -n1qlParser.Select_stmtContext = Select_stmtContext; -n1qlParser.Dml_stmtContext = Dml_stmtContext; -n1qlParser.Ddl_stmtContext = Ddl_stmtContext; -n1qlParser.Role_stmtContext = Role_stmtContext; -n1qlParser.Index_stmtContext = Index_stmtContext; -n1qlParser.Scope_stmtContext = Scope_stmtContext; -n1qlParser.Collection_stmtContext = Collection_stmtContext; -n1qlParser.Function_stmtContext = Function_stmtContext; -n1qlParser.Transaction_stmtContext = Transaction_stmtContext; -n1qlParser.FullselectContext = FullselectContext; -n1qlParser.Select_termsContext = Select_termsContext; -n1qlParser.Select_termContext = Select_termContext; -n1qlParser.SubselectContext = SubselectContext; -n1qlParser.From_selectContext = From_selectContext; -n1qlParser.Select_fromContext = Select_fromContext; -n1qlParser.Select_clauseContext = Select_clauseContext; -n1qlParser.ProjectionContext = ProjectionContext; -n1qlParser.Opt_quantifierContext = Opt_quantifierContext; -n1qlParser.RawContext = RawContext; -n1qlParser.ProjectsContext = ProjectsContext; -n1qlParser.ProjectContext = ProjectContext; -n1qlParser.Opt_as_aliasContext = Opt_as_aliasContext; -n1qlParser.As_aliasContext = As_aliasContext; -n1qlParser.AliasContext = AliasContext; -n1qlParser.Opt_fromContext = Opt_fromContext; -n1qlParser.FromContext = FromContext; -n1qlParser.From_termContext = From_termContext; -n1qlParser.Simple_from_termContext = Simple_from_termContext; -n1qlParser.UnnestContext = UnnestContext; -n1qlParser.Keyspace_termContext = Keyspace_termContext; -n1qlParser.Keyspace_pathContext = Keyspace_pathContext; -n1qlParser.Namespace_termContext = Namespace_termContext; -n1qlParser.Namespace_nameContext = Namespace_nameContext; -n1qlParser.Bucket_nameContext = Bucket_nameContext; -n1qlParser.Scope_nameContext = Scope_nameContext; -n1qlParser.Keyspace_nameContext = Keyspace_nameContext; -n1qlParser.Opt_useContext = Opt_useContext; -n1qlParser.Use_optionsContext = Use_optionsContext; -n1qlParser.Use_keysContext = Use_keysContext; -n1qlParser.Use_indexContext = Use_indexContext; -n1qlParser.Join_hintContext = Join_hintContext; -n1qlParser.Opt_primaryContext = Opt_primaryContext; -n1qlParser.Index_refsContext = Index_refsContext; -n1qlParser.Index_refContext = Index_refContext; -n1qlParser.Use_hash_optionContext = Use_hash_optionContext; -n1qlParser.Opt_use_del_updContext = Opt_use_del_updContext; -n1qlParser.Opt_join_typeContext = Opt_join_typeContext; -n1qlParser.Opt_outerContext = Opt_outerContext; -n1qlParser.On_keysContext = On_keysContext; -n1qlParser.On_keyContext = On_keyContext; -n1qlParser.Opt_letContext = Opt_letContext; -n1qlParser.Let_Context = Let_Context; -n1qlParser.BindingsContext = BindingsContext; -n1qlParser.BindingContext = BindingContext; -n1qlParser.Opt_withContext = Opt_withContext; -n1qlParser.With_listContext = With_listContext; -n1qlParser.With_termContext = With_termContext; -n1qlParser.Opt_whereContext = Opt_whereContext; -n1qlParser.WhereContext = WhereContext; -n1qlParser.Opt_groupContext = Opt_groupContext; -n1qlParser.GroupContext = GroupContext; -n1qlParser.Group_termsContext = Group_termsContext; -n1qlParser.Group_termContext = Group_termContext; -n1qlParser.Opt_lettingContext = Opt_lettingContext; -n1qlParser.LettingContext = LettingContext; -n1qlParser.Opt_havingContext = Opt_havingContext; -n1qlParser.HavingContext = HavingContext; -n1qlParser.Opt_order_byContext = Opt_order_byContext; -n1qlParser.Order_byContext = Order_byContext; -n1qlParser.Sort_termsContext = Sort_termsContext; -n1qlParser.Sort_termContext = Sort_termContext; -n1qlParser.Opt_dirContext = Opt_dirContext; -n1qlParser.DirContext = DirContext; -n1qlParser.Opt_order_nullsContext = Opt_order_nullsContext; -n1qlParser.First_lastContext = First_lastContext; -n1qlParser.NullsContext = NullsContext; -n1qlParser.Opt_limitContext = Opt_limitContext; -n1qlParser.LimitContext = LimitContext; -n1qlParser.Opt_offsetContext = Opt_offsetContext; -n1qlParser.OffsetContext = OffsetContext; -n1qlParser.InsertContext = InsertContext; -n1qlParser.Simple_keyspace_refContext = Simple_keyspace_refContext; -n1qlParser.Keyspace_refContext = Keyspace_refContext; -n1qlParser.Opt_values_headerContext = Opt_values_headerContext; -n1qlParser.KeyContext = KeyContext; -n1qlParser.Values_listContext = Values_listContext; -n1qlParser.ValuesContext = ValuesContext; -n1qlParser.Next_valuesContext = Next_valuesContext; -n1qlParser.Key_val_exprContext = Key_val_exprContext; -n1qlParser.Key_val_options_exprContext = Key_val_options_exprContext; -n1qlParser.Opt_returningContext = Opt_returningContext; -n1qlParser.ReturningContext = ReturningContext; -n1qlParser.Returns_Context = Returns_Context; -n1qlParser.Key_expr_headerContext = Key_expr_headerContext; -n1qlParser.Value_expr_headerContext = Value_expr_headerContext; -n1qlParser.Options_expr_headerContext = Options_expr_headerContext; -n1qlParser.Key_val_options_expr_headerContext = Key_val_options_expr_headerContext; -n1qlParser.UpsertContext = UpsertContext; -n1qlParser.Delete_Context = Delete_Context; -n1qlParser.UpdateContext = UpdateContext; -n1qlParser.SetContext = SetContext; -n1qlParser.Set_termsContext = Set_termsContext; -n1qlParser.Set_termContext = Set_termContext; -n1qlParser.Function_meta_exprContext = Function_meta_exprContext; -n1qlParser.Opt_update_forContext = Opt_update_forContext; -n1qlParser.Update_forContext = Update_forContext; -n1qlParser.Update_dimensionsContext = Update_dimensionsContext; -n1qlParser.Update_dimensionContext = Update_dimensionContext; -n1qlParser.Update_bindingContext = Update_bindingContext; -n1qlParser.VariableContext = VariableContext; -n1qlParser.Opt_whenContext = Opt_whenContext; -n1qlParser.UnsetContext = UnsetContext; -n1qlParser.Unset_termsContext = Unset_termsContext; -n1qlParser.Unset_termContext = Unset_termContext; -n1qlParser.MergeContext = MergeContext; -n1qlParser.Opt_use_mergeContext = Opt_use_mergeContext; -n1qlParser.Opt_keyContext = Opt_keyContext; -n1qlParser.Merge_actionsContext = Merge_actionsContext; -n1qlParser.Opt_merge_delete_insertContext = Opt_merge_delete_insertContext; -n1qlParser.Opt_merge_insertContext = Opt_merge_insertContext; -n1qlParser.Merge_updateContext = Merge_updateContext; -n1qlParser.Merge_deleteContext = Merge_deleteContext; -n1qlParser.Merge_insertContext = Merge_insertContext; -n1qlParser.Grant_roleContext = Grant_roleContext; -n1qlParser.Role_listContext = Role_listContext; -n1qlParser.Role_nameContext = Role_nameContext; -n1qlParser.Keyspace_scope_listContext = Keyspace_scope_listContext; -n1qlParser.Keyspace_scopeContext = Keyspace_scopeContext; -n1qlParser.User_listContext = User_listContext; -n1qlParser.UserContext = UserContext; -n1qlParser.Revoke_roleContext = Revoke_roleContext; -n1qlParser.Create_scopeContext = Create_scopeContext; -n1qlParser.Drop_scopeContext = Drop_scopeContext; -n1qlParser.Create_collectionContext = Create_collectionContext; -n1qlParser.Drop_collectionContext = Drop_collectionContext; -n1qlParser.Flush_collectionContext = Flush_collectionContext; -n1qlParser.Flush_or_truncateContext = Flush_or_truncateContext; -n1qlParser.Create_indexContext = Create_indexContext; -n1qlParser.Create_primary_indexContext = Create_primary_indexContext; -n1qlParser.Opt_primary_nameContext = Opt_primary_nameContext; -n1qlParser.Index_nameContext = Index_nameContext; -n1qlParser.Opt_index_nameContext = Opt_index_nameContext; -n1qlParser.Named_keyspace_refContext = Named_keyspace_refContext; -n1qlParser.Simple_named_keyspace_refContext = Simple_named_keyspace_refContext; -n1qlParser.Named_scope_refContext = Named_scope_refContext; -n1qlParser.Index_partitionContext = Index_partitionContext; -n1qlParser.Opt_index_usingContext = Opt_index_usingContext; -n1qlParser.Index_usingContext = Index_usingContext; -n1qlParser.Opt_index_withContext = Opt_index_withContext; -n1qlParser.Index_withContext = Index_withContext; -n1qlParser.Index_termsContext = Index_termsContext; -n1qlParser.Index_termContext = Index_termContext; -n1qlParser.Index_term_exprContext = Index_term_exprContext; -n1qlParser.Index_exprContext = Index_exprContext; -n1qlParser.AllContext = AllContext; -n1qlParser.Index_whereContext = Index_whereContext; -n1qlParser.Opt_ikattrContext = Opt_ikattrContext; -n1qlParser.IkattrContext = IkattrContext; -n1qlParser.Drop_indexContext = Drop_indexContext; -n1qlParser.Alter_indexContext = Alter_indexContext; -n1qlParser.Build_indexContext = Build_indexContext; -n1qlParser.Create_functionContext = Create_functionContext; -n1qlParser.Opt_replaceContext = Opt_replaceContext; -n1qlParser.Func_nameContext = Func_nameContext; -n1qlParser.Short_func_nameContext = Short_func_nameContext; -n1qlParser.Long_func_nameContext = Long_func_nameContext; -n1qlParser.Parm_listContext = Parm_listContext; -n1qlParser.Parameter_termsContext = Parameter_termsContext; -n1qlParser.Func_bodyContext = Func_bodyContext; -n1qlParser.Drop_functionContext = Drop_functionContext; -n1qlParser.Execute_functionContext = Execute_functionContext; -n1qlParser.Update_statisticsContext = Update_statisticsContext; -n1qlParser.Opt_forContext = Opt_forContext; -n1qlParser.Update_stat_termsContext = Update_stat_termsContext; -n1qlParser.Update_stat_termContext = Update_stat_termContext; -n1qlParser.PathContext = PathContext; -n1qlParser.ExprContext = ExprContext; -n1qlParser.ValuedContext = ValuedContext; -n1qlParser.C_exprContext = C_exprContext; -n1qlParser.B_exprContext = B_exprContext; -n1qlParser.LiteralContext = LiteralContext; -n1qlParser.Construction_exprContext = Construction_exprContext; -n1qlParser.ObjectContext = ObjectContext; -n1qlParser.Opt_membersContext = Opt_membersContext; -n1qlParser.MembersContext = MembersContext; -n1qlParser.MemberContext = MemberContext; -n1qlParser.ArrayContext = ArrayContext; -n1qlParser.Opt_exprsContext = Opt_exprsContext; -n1qlParser.ExprsContext = ExprsContext; -n1qlParser.Param_exprContext = Param_exprContext; -n1qlParser.Case_exprContext = Case_exprContext; -n1qlParser.Simple_or_searched_caseContext = Simple_or_searched_caseContext; -n1qlParser.Simple_caseContext = Simple_caseContext; -n1qlParser.When_thensContext = When_thensContext; -n1qlParser.Searched_caseContext = Searched_caseContext; -n1qlParser.Opt_elseContext = Opt_elseContext; -n1qlParser.Function_exprContext = Function_exprContext; -n1qlParser.Function_nameContext = Function_nameContext; -n1qlParser.Collection_exprContext = Collection_exprContext; -n1qlParser.Collection_condContext = Collection_condContext; -n1qlParser.Coll_bindingsContext = Coll_bindingsContext; -n1qlParser.Coll_bindingContext = Coll_bindingContext; -n1qlParser.SatisfiesContext = SatisfiesContext; -n1qlParser.Collection_xformContext = Collection_xformContext; -n1qlParser.Paren_exprContext = Paren_exprContext; -n1qlParser.Subquery_exprContext = Subquery_exprContext; -n1qlParser.Expr_inputContext = Expr_inputContext; -n1qlParser.All_exprContext = All_exprContext; -n1qlParser.Opt_window_clauseContext = Opt_window_clauseContext; -n1qlParser.Window_listContext = Window_listContext; -n1qlParser.Window_termContext = Window_termContext; -n1qlParser.Window_specificationContext = Window_specificationContext; -n1qlParser.Opt_window_nameContext = Opt_window_nameContext; -n1qlParser.Opt_window_partitionContext = Opt_window_partitionContext; -n1qlParser.Opt_window_frameContext = Opt_window_frameContext; -n1qlParser.Window_frame_modifierContext = Window_frame_modifierContext; -n1qlParser.Opt_window_frame_exclusionContext = Opt_window_frame_exclusionContext; -n1qlParser.Window_frame_extentsContext = Window_frame_extentsContext; -n1qlParser.Window_frame_extentContext = Window_frame_extentContext; -n1qlParser.Window_frame_valexpr_modifierContext = Window_frame_valexpr_modifierContext; -n1qlParser.Opt_nulls_treatmentContext = Opt_nulls_treatmentContext; -n1qlParser.Nulls_treatmentContext = Nulls_treatmentContext; -n1qlParser.Opt_from_first_lastContext = Opt_from_first_lastContext; -n1qlParser.Agg_quantifierContext = Agg_quantifierContext; -n1qlParser.Opt_filterContext = Opt_filterContext; -n1qlParser.Opt_window_functionContext = Opt_window_functionContext; -n1qlParser.Window_function_detailsContext = Window_function_detailsContext; -n1qlParser.Start_transactionContext = Start_transactionContext; -n1qlParser.Commit_transactionContext = Commit_transactionContext; -n1qlParser.Rollback_transactionContext = Rollback_transactionContext; -n1qlParser.Start_or_beginContext = Start_or_beginContext; -n1qlParser.Opt_transactionContext = Opt_transactionContext; -n1qlParser.TransactionContext = TransactionContext; -n1qlParser.Opt_savepointContext = Opt_savepointContext; -n1qlParser.Savepoint_nameContext = Savepoint_nameContext; -n1qlParser.Opt_isolation_levelContext = Opt_isolation_levelContext; -n1qlParser.Isolation_levelContext = Isolation_levelContext; -n1qlParser.Isolation_valContext = Isolation_valContext; -n1qlParser.Set_transaction_isolationContext = Set_transaction_isolationContext; -n1qlParser.SavepointContext = SavepointContext; -n1qlParser.If_existsContext = If_existsContext; -n1qlParser.If_not_existsContext = If_not_existsContext; - -module.exports = n1qlParser; diff --git a/reverse_engineering/antlr/parser/n1qlVisitor.js b/reverse_engineering/antlr/parser/n1qlVisitor.js deleted file mode 100644 index b93b077..0000000 --- a/reverse_engineering/antlr/parser/n1qlVisitor.js +++ /dev/null @@ -1,1314 +0,0 @@ -// Generated from grammars/n1ql.g4 by ANTLR 4.9.2 -// jshint ignore: start -const antlr4 = require('antlr4'); - -// This class defines a complete generic visitor for a parse tree produced by n1qlParser. - -class n1qlVisitor extends antlr4.tree.ParseTreeVisitor { - // Visit a parse tree produced by n1qlParser#statements. - visitStatements(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#input. - visitInput(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_trailer. - visitOpt_trailer(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#stmt_body. - visitStmt_body(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#stmt. - visitStmt(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#advise. - visitAdvise(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_index. - visitOpt_index(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#explain. - visitExplain(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#prepare. - visitPrepare(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_force. - visitOpt_force(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_name. - visitOpt_name(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#from_or_as. - visitFrom_or_as(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#execute. - visitExecute(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#execute_using. - visitExecute_using(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#infer. - visitInfer(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_keyspace_collection. - visitOpt_keyspace_collection(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_infer_using. - visitOpt_infer_using(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_infer_ustat_with. - visitOpt_infer_ustat_with(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#infer_ustat_with. - visitInfer_ustat_with(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#select_stmt. - visitSelect_stmt(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#dml_stmt. - visitDml_stmt(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#ddl_stmt. - visitDdl_stmt(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#role_stmt. - visitRole_stmt(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#index_stmt. - visitIndex_stmt(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#scope_stmt. - visitScope_stmt(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#collection_stmt. - visitCollection_stmt(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#function_stmt. - visitFunction_stmt(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#transaction_stmt. - visitTransaction_stmt(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#fullselect. - visitFullselect(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#select_terms. - visitSelect_terms(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#select_term. - visitSelect_term(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#subselect. - visitSubselect(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#from_select. - visitFrom_select(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#select_from. - visitSelect_from(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#select_clause. - visitSelect_clause(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#projection. - visitProjection(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_quantifier. - visitOpt_quantifier(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#raw. - visitRaw(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#projects. - visitProjects(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#project. - visitProject(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_as_alias. - visitOpt_as_alias(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#as_alias. - visitAs_alias(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#alias. - visitAlias(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_from. - visitOpt_from(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#from. - visitFrom(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#from_term. - visitFrom_term(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#simple_from_term. - visitSimple_from_term(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#unnest. - visitUnnest(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#keyspace_term. - visitKeyspace_term(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#keyspace_path. - visitKeyspace_path(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#namespace_term. - visitNamespace_term(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#namespace_name. - visitNamespace_name(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#bucket_name. - visitBucket_name(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#scope_name. - visitScope_name(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#keyspace_name. - visitKeyspace_name(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_use. - visitOpt_use(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#use_options. - visitUse_options(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#use_keys. - visitUse_keys(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#use_index. - visitUse_index(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#join_hint. - visitJoin_hint(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_primary. - visitOpt_primary(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#index_refs. - visitIndex_refs(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#index_ref. - visitIndex_ref(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#use_hash_option. - visitUse_hash_option(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_use_del_upd. - visitOpt_use_del_upd(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_join_type. - visitOpt_join_type(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_outer. - visitOpt_outer(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#on_keys. - visitOn_keys(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#on_key. - visitOn_key(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_let. - visitOpt_let(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#let_. - visitLet_(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#bindings. - visitBindings(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#binding. - visitBinding(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_with. - visitOpt_with(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#with_list. - visitWith_list(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#with_term. - visitWith_term(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_where. - visitOpt_where(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#where. - visitWhere(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_group. - visitOpt_group(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#group. - visitGroup(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#group_terms. - visitGroup_terms(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#group_term. - visitGroup_term(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_letting. - visitOpt_letting(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#letting. - visitLetting(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_having. - visitOpt_having(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#having. - visitHaving(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_order_by. - visitOpt_order_by(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#order_by. - visitOrder_by(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#sort_terms. - visitSort_terms(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#sort_term. - visitSort_term(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_dir. - visitOpt_dir(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#dir. - visitDir(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_order_nulls. - visitOpt_order_nulls(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#first_last. - visitFirst_last(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#nulls. - visitNulls(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_limit. - visitOpt_limit(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#limit. - visitLimit(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_offset. - visitOpt_offset(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#offset. - visitOffset(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#insert. - visitInsert(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#simple_keyspace_ref. - visitSimple_keyspace_ref(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#keyspace_ref. - visitKeyspace_ref(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_values_header. - visitOpt_values_header(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#key. - visitKey(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#values_list. - visitValues_list(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#values. - visitValues(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#next_values. - visitNext_values(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#key_val_expr. - visitKey_val_expr(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#key_val_options_expr. - visitKey_val_options_expr(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_returning. - visitOpt_returning(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#returning. - visitReturning(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#returns_. - visitReturns_(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#key_expr_header. - visitKey_expr_header(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#value_expr_header. - visitValue_expr_header(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#options_expr_header. - visitOptions_expr_header(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#key_val_options_expr_header. - visitKey_val_options_expr_header(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#upsert. - visitUpsert(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#delete_. - visitDelete_(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#update. - visitUpdate(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#set. - visitSet(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#set_terms. - visitSet_terms(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#set_term. - visitSet_term(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#function_meta_expr. - visitFunction_meta_expr(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_update_for. - visitOpt_update_for(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#update_for. - visitUpdate_for(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#update_dimensions. - visitUpdate_dimensions(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#update_dimension. - visitUpdate_dimension(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#update_binding. - visitUpdate_binding(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#variable. - visitVariable(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_when. - visitOpt_when(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#unset. - visitUnset(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#unset_terms. - visitUnset_terms(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#unset_term. - visitUnset_term(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#merge. - visitMerge(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_use_merge. - visitOpt_use_merge(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_key. - visitOpt_key(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#merge_actions. - visitMerge_actions(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_merge_delete_insert. - visitOpt_merge_delete_insert(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_merge_insert. - visitOpt_merge_insert(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#merge_update. - visitMerge_update(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#merge_delete. - visitMerge_delete(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#merge_insert. - visitMerge_insert(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#grant_role. - visitGrant_role(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#role_list. - visitRole_list(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#role_name. - visitRole_name(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#keyspace_scope_list. - visitKeyspace_scope_list(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#keyspace_scope. - visitKeyspace_scope(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#user_list. - visitUser_list(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#user. - visitUser(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#revoke_role. - visitRevoke_role(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#create_scope. - visitCreate_scope(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#drop_scope. - visitDrop_scope(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#create_collection. - visitCreate_collection(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#drop_collection. - visitDrop_collection(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#flush_collection. - visitFlush_collection(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#flush_or_truncate. - visitFlush_or_truncate(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#create_index. - visitCreate_index(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#create_primary_index. - visitCreate_primary_index(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_primary_name. - visitOpt_primary_name(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#index_name. - visitIndex_name(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_index_name. - visitOpt_index_name(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#named_keyspace_ref. - visitNamed_keyspace_ref(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#simple_named_keyspace_ref. - visitSimple_named_keyspace_ref(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#named_scope_ref. - visitNamed_scope_ref(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#index_partition. - visitIndex_partition(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_index_using. - visitOpt_index_using(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#index_using. - visitIndex_using(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_index_with. - visitOpt_index_with(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#index_with. - visitIndex_with(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#index_terms. - visitIndex_terms(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#index_term. - visitIndex_term(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#index_term_expr. - visitIndex_term_expr(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#index_expr. - visitIndex_expr(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#all. - visitAll(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#index_where. - visitIndex_where(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_ikattr. - visitOpt_ikattr(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#ikattr. - visitIkattr(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#drop_index. - visitDrop_index(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#alter_index. - visitAlter_index(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#build_index. - visitBuild_index(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#create_function. - visitCreate_function(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_replace. - visitOpt_replace(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#func_name. - visitFunc_name(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#short_func_name. - visitShort_func_name(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#long_func_name. - visitLong_func_name(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#parm_list. - visitParm_list(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#parameter_terms. - visitParameter_terms(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#func_body. - visitFunc_body(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#drop_function. - visitDrop_function(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#execute_function. - visitExecute_function(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#update_statistics. - visitUpdate_statistics(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_for. - visitOpt_for(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#update_stat_terms. - visitUpdate_stat_terms(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#update_stat_term. - visitUpdate_stat_term(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#path. - visitPath(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#expr. - visitExpr(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#valued. - visitValued(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#c_expr. - visitC_expr(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#b_expr. - visitB_expr(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#literal. - visitLiteral(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#construction_expr. - visitConstruction_expr(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#object. - visitObject(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_members. - visitOpt_members(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#members. - visitMembers(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#member. - visitMember(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#array. - visitArray(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_exprs. - visitOpt_exprs(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#exprs. - visitExprs(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#param_expr. - visitParam_expr(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#case_expr. - visitCase_expr(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#simple_or_searched_case. - visitSimple_or_searched_case(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#simple_case. - visitSimple_case(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#when_thens. - visitWhen_thens(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#searched_case. - visitSearched_case(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_else. - visitOpt_else(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#function_expr. - visitFunction_expr(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#function_name. - visitFunction_name(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#collection_expr. - visitCollection_expr(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#collection_cond. - visitCollection_cond(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#coll_bindings. - visitColl_bindings(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#coll_binding. - visitColl_binding(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#satisfies. - visitSatisfies(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#collection_xform. - visitCollection_xform(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#paren_expr. - visitParen_expr(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#subquery_expr. - visitSubquery_expr(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#expr_input. - visitExpr_input(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#all_expr. - visitAll_expr(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_window_clause. - visitOpt_window_clause(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#window_list. - visitWindow_list(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#window_term. - visitWindow_term(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#window_specification. - visitWindow_specification(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_window_name. - visitOpt_window_name(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_window_partition. - visitOpt_window_partition(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_window_frame. - visitOpt_window_frame(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#window_frame_modifier. - visitWindow_frame_modifier(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_window_frame_exclusion. - visitOpt_window_frame_exclusion(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#window_frame_extents. - visitWindow_frame_extents(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#window_frame_extent. - visitWindow_frame_extent(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#window_frame_valexpr_modifier. - visitWindow_frame_valexpr_modifier(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_nulls_treatment. - visitOpt_nulls_treatment(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#nulls_treatment. - visitNulls_treatment(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_from_first_last. - visitOpt_from_first_last(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#agg_quantifier. - visitAgg_quantifier(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_filter. - visitOpt_filter(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_window_function. - visitOpt_window_function(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#window_function_details. - visitWindow_function_details(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#start_transaction. - visitStart_transaction(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#commit_transaction. - visitCommit_transaction(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#rollback_transaction. - visitRollback_transaction(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#start_or_begin. - visitStart_or_begin(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_transaction. - visitOpt_transaction(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#transaction. - visitTransaction(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_savepoint. - visitOpt_savepoint(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#savepoint_name. - visitSavepoint_name(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#opt_isolation_level. - visitOpt_isolation_level(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#isolation_level. - visitIsolation_level(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#isolation_val. - visitIsolation_val(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#set_transaction_isolation. - visitSet_transaction_isolation(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#savepoint. - visitSavepoint(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#if_exists. - visitIf_exists(ctx) { - return this.visitChildren(ctx); - } - - // Visit a parse tree produced by n1qlParser#if_not_exists. - visitIf_not_exists(ctx) { - return this.visitChildren(ctx); - } -} - -module.exports = n1qlVisitor; diff --git a/reverse_engineering/api.js b/reverse_engineering/api.js index cb3de2d..27aa76e 100644 --- a/reverse_engineering/api.js +++ b/reverse_engineering/api.js @@ -1,237 +1,35 @@ 'use strict'; -/** - * @typedef {import('../shared/types').App} App - * @typedef {import('../shared/types').AppLogger} AppLogger - * @typedef {import('../shared/types').ConnectionInfo} ConnectionInfo - * @typedef {import('../shared/types').Logger} Logger - * @typedef {import('../shared/types').Callback} Callback - */ - -const fs = require('fs'); -const _ = require('lodash'); const connectionHelper = require('./helpers/connectionHelper'); -const clusterHelper = require('./helpers/clusterHelper'); -const documentKindHelper = require('./helpers/documentKindHelper'); -const indexHelper = require('./helpers/indexHelper'); -const logHelper = require('./helpers/logHelper'); -const parserHelper = require('./helpers/parserHelper'); -const schemaHelper = require('./helpers/schemaHelper'); +const { createLogger } = require('./helpers/logHelper'); -/** - * @param {string} filePath - * @returns {Promise} - */ -const handleFileData = filePath => { - return new Promise((resolve, reject) => { - fs.readFile(filePath, 'utf-8', (err, content) => { - if (err) { - reject(err); - } else { - resolve(content); - } +module.exports = { + disconnect: function (connectionInfo, logger, cb) { + connectionHelper.close(); + cb(); + }, + + async testConnection(connectionInfo, logger, cb) { + const log = createLogger({ + title: 'Test connection', + hiddenKeys: connectionInfo.hiddenKeys, + logger, }); - }); -}; + }, -/** - * @param {ConnectionInfo} __connectionInfo - * @param {AppLogger} __appLogger - * @param {Callback} callback - */ -const disconnect = async (__connectionInfo, __appLogger, callback) => { - await connectionHelper.disconnect(); - callback(); -}; - -/** - * @param {ConnectionInfo} connectionInfo - * @param {AppLogger} appLogger - * @param {Callback} callback - * @param {App} app - */ -const testConnection = async (connectionInfo, appLogger, callback, app) => { - const logger = logHelper.createLogger({ - title: 'Test database connection', - hiddenKeys: connectionInfo.hiddenKeys, - logger: appLogger, - }); - try { - await connectionHelper.disconnect(); - await connectionHelper.connect({ connectionInfo, app }); - await connectionHelper.disconnect(); - callback(); - } catch (error) { - logger.error(error); - callback(error); - } -}; - -/** - * @param {ConnectionInfo} connectionInfo - * @param {AppLogger} appLogger - * @param {Callback} callback - * @param {App} app - */ -const getDocumentKinds = async (connectionInfo, appLogger, callback, app) => { - const logger = logHelper.createLogger({ - title: 'Retrieving bucket default collection document kinds', - hiddenKeys: connectionInfo.hiddenKeys, - logger: appLogger, - }); - try { - const cluster = await connectionHelper.connect({ connectionInfo, app }); - const bucketsDocumentKindList = await documentKindHelper.getBucketsDocumentKindList({ - cluster, - connectionInfo, + async getDbCollectionsNames(connectionInfo, logger, cb, app) { + const log = createLogger({ + title: 'Retrieving databases and collections information', + hiddenKeys: connectionInfo.hiddenKeys, logger, - app, }); - callback(null, bucketsDocumentKindList); - } catch (error) { - logger.error(error); - await connectionHelper.disconnect(); - callback(error, []); - } -}; - -/** - * @param {ConnectionInfo} connectionInfo - * @param {AppLogger} appLogger - * @param {Callback} callback - * @param {App} app - */ -const getDbCollectionsNames = async (connectionInfo, appLogger, callback, app) => { - const logger = logHelper.createLogger({ - title: 'Retrieving databases and collections information', - hiddenKeys: connectionInfo.hiddenKeys, - logger: appLogger, - }); - - try { - const cluster = await connectionHelper.connect({ connectionInfo, app }); - const documents = await clusterHelper.getDbCollectionsNames({ connectionInfo, cluster, logger, app }); - - callback(null, documents); - } catch (error) { - logger.error(error); - await connectionHelper.disconnect(); - callback(error); - } -}; + }, -/** - * @param {object} data - * @param {AppLogger} appLogger - * @param {Callback} callback - * @param {App} app - */ -const getDbCollectionsData = async (data, appLogger, callback, app) => { - const logger = logHelper.createLogger({ - title: 'Retrieving databases and collections', - hiddenKeys: data.hiddenKeys, - logger: appLogger, - }); - - try { - const connectionInfo = data.connectionInfo; - const includeEmptyCollection = data.includeEmptyCollection; - const cluster = await connectionHelper.connect({ connectionInfo, app }); - const indexes = await indexHelper.getIndexes({ cluster, connectionInfo, logger, app }); - const selectedCollections = await clusterHelper.getSelectedCollections({ cluster, data, logger, app }); - const indexesByCollectionMap = indexHelper.getIndexesByCollectionMap({ indexes }); - const dbCollectionsData = []; - - for (const bucketName in selectedCollections) { - for (const scopeName in selectedCollections[bucketName]) { - for (const collectionName of selectedCollections[bucketName][scopeName]) { - const collectionIndexes = indexesByCollectionMap[bucketName]?.[scopeName]?.[collectionName]; - const dbCollectionData = await clusterHelper.getDbCollectionData({ - cluster, - data, - bucketName, - scopeName, - collectionName, - collectionIndexes, - includeEmptyCollection, - logger, - app, - }); - - dbCollectionsData.push(dbCollectionData); - } - } - } - - const updatedDbCollectionsData = schemaHelper.updateDefaultDbNames({ dbCollectionsData }); - await connectionHelper.disconnect(); - callback(null, updatedDbCollectionsData); - } catch (error) { - await connectionHelper.disconnect(); - callback(error); - } -}; - -/** - * @param {object} data - * @param {AppLogger} appLogger - * @param {Callback} callback - */ -const reFromFile = async (data, appLogger, callback) => { - const logger = logHelper.createLogger({ - title: 'Retrieving data from file', - hiddenKeys: data.hiddenKeys, - logger: appLogger, - }); - try { - const statements = await handleFileData(data.filePath); - const { scopes, collections, indexes } = parserHelper.parseN1qlStatements({ statements }); - const indexesByCollectionMap = indexHelper.getIndexesByCollectionMap({ indexes }); - const scopeBucketNameMap = scopes.reduce( - (result, scope) => _.set(result, [scope.bucketName, scope.scopeName], scope), - {}, - ); - const emptyScopes = scopes.filter(scope => - collections.every( - collection => collection.bucketName !== scope.bucketName || collection.scopeName !== scope.scopeName, - ), - ); - const bucketIndexes = indexes.filter(index => - collections.every( - collection => - collection.bucketName !== index.bucketName && - collection.scopeName !== index.scopeName && - collection.collectionName !== index.collectionName, - ), - ); - const schemas = schemaHelper.mapParsedResultToMultipleSchema({ - entitiesData: collections, - indexesByCollectionMap, - scopeBucketNameMap, - }); - const emptySchemas = schemaHelper.mapParsedResultToMultipleSchema({ - entitiesData: emptyScopes, - indexesByCollectionMap, - scopeBucketNameMap, - }); - const defaultSchemas = schemaHelper.mapParsedResultToMultipleSchema({ - entitiesData: _.uniqBy(bucketIndexes, 'bucketName'), - indexesByCollectionMap, - scopeBucketNameMap, + async getDbCollectionsData(data, logger, cb, app) { + const log = createLogger({ + title: 'Retrieving data for inferring schema', + hiddenKeys: data.hiddenKeys, + logger, }); - - return callback(null, [...schemas, ...emptySchemas, ...defaultSchemas], {}, [], 'multipleSchema'); - } catch (error) { - logger.error(error); - return callback(error); - } -}; - -module.exports = { - disconnect, - getDbCollectionsNames, - getDbCollectionsData, - getDocumentKinds, - testConnection, - reFromFile, + }, }; diff --git a/reverse_engineering/config.json b/reverse_engineering/config.json index 13e467b..46838f5 100644 --- a/reverse_engineering/config.json +++ b/reverse_engineering/config.json @@ -5,10 +5,11 @@ */ { "errors": { - "NO_DATABASES": "There are no clusters in the Couchbase instance", - "WRONG_CONNECTION": "Can not connect to the Couchbase instance" + "NO_DATABASES": "There are no clusters in the DocumentDB instance", + "WRONG_CONNECTION": "Can not connect to the DocumentDB instance" }, "excludeDocKind": ["id"], - "scenario": "getDocumentKind", - "helpUrl": "https://hackolade.com/help/ConnecttoaCouchbaseinstance.html" + "scenario": "connectToDB", + "typeOfSerializer": "bson", + "helpUrl": "https://hackolade.com/help/ConnecttoaDocumentDBinstance.html" } diff --git a/reverse_engineering/connection_settings_modal/connectionSettingsModalConfig.json b/reverse_engineering/connection_settings_modal/connectionSettingsModalConfig.json index 25f7386..c33abf0 100644 --- a/reverse_engineering/connection_settings_modal/connectionSettingsModalConfig.json +++ b/reverse_engineering/connection_settings_modal/connectionSettingsModalConfig.json @@ -6,108 +6,190 @@ "inputLabel": "Name", "inputKeyword": "name", "inputType": "text", - "inputPlaceholder": "Name", - "description": "Choose a friendly connection name" + "inputPlaceholder": "Name" }, { - "inputLabel": "Address", + "inputLabel": "Host", "inputKeyword": "host", "inputType": "text", - "inputPlaceholder": "Address", - "description": "Specify host IP address or DNS name of Couchbase server", - "validation": { - "regex": "([^\\s])" - } + "inputPlaceholder": ".cluster-..docdb.amazonaws.com", + "defaultValue": "" }, { "inputLabel": "Port", "inputKeyword": "port", - "inputType": "text", - "inputPlaceholder": "8091", - "description": "Specify port number of Couchbase server" - }, + "inputType": "numeric", + "inputPlaceholder": "27017", + "defaultValue": "" + } + ] + }, + { + "tab": "Authentication", + "structure": [ { - "inputLabel": "Key Value Port", - "inputKeyword": "kv_port", + "inputLabel": "User Name", + "inputKeyword": "username", "inputType": "text", - "inputPlaceholder": "11210", - "description": "Specify port number of Couchbase Key Value service" - }, - { - "inputLabel": "Specific bucket", - "inputType": "label" + "inputPlaceholder": "User Name" }, { - "inputLabel": "Name", - "inputKeyword": "couchbase_bucket", - "inputType": "text", - "inputPlaceholder": "Bucket", - "description": "Specify bucket name if it has a password" + "inputLabel": "Password", + "inputKeyword": "password", + "inputType": "password", + "inputTooltip": "Password", + "isHiddenKey": true, + "defaultValue": "" } ] }, { - "tab": "Auth", + "tab": "SSL", "structure": [ { - "inputLabel": "Authentication", - "inputKeyword": "authType", + "inputLabel": "SSL", + "inputKeyword": "sslType", "inputType": "select", - "defaultValue": "username_password", "options": [ { - "value": "username_password", - "label": "Username / Password" + "value": "Off", + "label": "Off" }, { - "value": "security_certificate", - "label": "Security certificate" + "value": "UNVALIDATED_SSL", + "label": "Unvalidated" + }, + { + "value": "TRUST_CUSTOM_CA_SIGNED_CERTIFICATES", + "label": "Server validation" } ] }, { - "inputLabel": "User Name", - "inputKeyword": "couchbase_username", - "inputType": "text", - "inputPlaceholder": "User Name", - "inputTooltip": "Provide username/password of either Full Couchbase administrator or Read-Only user (pre-5.x), or of user with proper role (5.0 and up)", + "inputLabel": "Certificate Authority", + "inputKeyword": "certAuthority", + "inputType": "file", + "inputPlaceholder": "Certificate Authority", + "extensions": ["pem", "crt", "key"], "dependency": { - "key": "authType", - "value": "username_password" + "key": "sslType", + "value": ["TRUST_CUSTOM_CA_SIGNED_CERTIFICATES"] } + } + ] + }, + { + "tab": "SSH", + "structure": [ + { + "inputLabel": "Use SSH Tunnel", + "inputKeyword": "ssh", + "inputType": "checkbox", + "defaultValue": false }, { - "inputLabel": "Password", - "inputKeyword": "couchbase_password", - "inputType": "password", - "inputPlaceholder": "Password", - "dependency": { - "key": "authType", - "value": "username_password" + "inputLabel": "SSH Address", + "inputKeyword": "ssh_host", + "inputType": "text", + "inputPlaceholder": "SSH Address", + "disable": { + "key": "ssh", + "value": false } }, { - "inputLabel": "Security certificate", - "inputKeyword": "security_certificate", - "inputType": "certificate-file", - "inputPlaceholder": "Security certificate", - "description": "Specify path to the certificate which should be used for certificate authentication", + "inputLabel": "Port", + "inputKeyword": "ssh_port", + "inputType": "numeric", + "inputPlaceholder": "Port", + "defaultValue": 22, + "disable": { + "key": "ssh", + "value": false + } + }, + { + "inputLabel": "SSH User Name", + "inputKeyword": "ssh_user", + "inputType": "text", + "inputPlaceholder": "ec2-user", + "defaultValue": "ec2-user", + "disable": { + "key": "ssh", + "value": false + } + }, + { + "inputLabel": "SSH Auth Method", + "inputKeyword": "ssh_method", + "inputType": "select", + "defaultValue": "privateKey", + "options": [ + { + "value": "privateKey", + "label": "Private Key" + } + ], + "disable": { + "key": "ssh", + "value": false + } + }, + { + "inputLabel": "Private Key", + "inputKeyword": "ssh_key_file", + "inputType": "file", + "inputPlaceholder": "Private Key", + "extensions": ["*"], "dependency": { - "key": "authType", - "value": "security_certificate" + "key": "ssh_method", + "value": ["privateKey", ""] + }, + "disable": { + "key": "ssh", + "value": false } }, { - "inputLabel": "Key", - "inputKeyword": "security_certificate_key", - "inputType": "certificate-file", - "inputPlaceholder": "Key", - "description": "Specify path to the key which should be used for certificate authentication", + "inputLabel": "Passphrase", + "inputKeyword": "ssh_key_passphrase", + "inputType": "password", + "inputPlaceholder": "Passphrase", + "isHiddenKey": true, "dependency": { - "key": "authType", - "value": "security_certificate" + "key": "ssh_method", + "value": ["privateKey", ""] + }, + "disable": { + "key": "ssh", + "value": false } } ] + }, + { + "lowerTab": "AWS Access", + "structure": [ + { + "inputLabel": "Access Key ID", + "inputKeyword": "accessKeyId", + "inputType": "text", + "inputPlaceholder": "Access Key ID" + }, + { + "inputLabel": "Secret Access Key", + "inputKeyword": "secretAccessKey", + "inputType": "password", + "inputPlaceholder": "Secret Access Key", + "isHiddenKey": true + }, + { + "inputLabel": "Session token", + "inputKeyword": "sessionToken", + "inputType": "text", + "inputPlaceholder": "Optional session token", + "isHiddenKey": true + } + ] } ] diff --git a/reverse_engineering/helpers/clusterHelper.js b/reverse_engineering/helpers/clusterHelper.js deleted file mode 100644 index 3e8537b..0000000 --- a/reverse_engineering/helpers/clusterHelper.js +++ /dev/null @@ -1,539 +0,0 @@ -/** - * @typedef {import('../../shared/types').DbCollectionData} DbCollectionData - * @typedef {import('../../shared/types').Document} Document - * @typedef {import('../../shared/types').Cluster} Cluster - * @typedef {import('../../shared/types').Bucket} Bucket - * @typedef {import('../../shared/types').Scope} Scope - * @typedef {import('../../shared/types').NameMap} NameMap - * @typedef {import('../../shared/types').BucketCollectionNamesData} BucketCollectionNamesData - * @typedef {import('../../shared/types').ConnectionInfo} ConnectionInfo - * @typedef {import('../../shared/types').Logger} Logger - * @typedef {import('../../shared/types').RecordSamplingSettings} RecordSamplingSettings - */ -const async = require('async'); -const _ = require('lodash'); -const restApiHelper = require('./restApiHelper'); -const schemaHelper = require('./schemaHelper'); -const { - COUCHBASE_ERROR_CODE, - DEFAULT_DOCUMENT_KIND, - DEFAULT_NAME, - DISABLED_TOOLTIP, - STATUS, - DEFAULT_LIMIT, - DEFAULT_SCOPE, -} = require('../../shared/constants'); -const queryHelper = require('./queryHelper'); - -/** - * @param {{ cluster: Cluster }} param0 - * @returns {Promise} - */ -const getAllBuckets = async ({ cluster }) => { - return await cluster.buckets().getAllBuckets(); -}; - -/** - * @param {{ cluster: Cluster; selectedBucket: string }} selectedBucket - * @returns {Promise} - */ -const getBucketsForReverse = async ({ cluster, selectedBucket }) => { - if (selectedBucket) { - return [{ name: selectedBucket }]; - } - - return getAllBuckets({ cluster }); -}; - -/** - * @param {{ cluster: Cluster; bucketName: string; logger: Logger }} param0 - * @returns {Promise} - */ -const getBucketScopes = async ({ cluster, bucketName, logger }) => { - try { - const bucketInstance = await cluster.bucket(bucketName); - const collectionManager = await bucketInstance.collections(); - const bucketScopes = await collectionManager.getAllScopes(); - - return bucketScopes; - } catch (error) { - logger.error(error); - return [DEFAULT_SCOPE]; - } -}; - -/** - * @param {{cluster: Cluster; selectedBucket: string; logger: Logger }} param0 - * @returns {Promise} - */ -const getBucketScopeNameMap = async ({ cluster, selectedBucket, logger }) => { - const buckets = await getBucketsForReverse({ cluster, selectedBucket }); - - return await async.reduce(buckets, {}, async (result, bucket) => { - const scopes = await getBucketScopes({ cluster, bucketName: bucket.name, logger }); - - return { - ...result, - [bucket.name]: scopes, - }; - }); -}; - -/** - * @param {{ scopes: Scope[] }} param0 - * @returns {boolean} - */ -const isBucketHasDefaultCollection = ({ scopes }) => { - const defaultScope = scopes.find(scope => scope.name === DEFAULT_NAME); - return !!defaultScope && defaultScope.collections.some(collection => collection.name === DEFAULT_NAME); -}; - -/** - * @param {{ cluster: Cluster;connectionInfo: ConnectionInfo; logger: Logger; app: App }} param0 - * @returns {Promise} - */ -const getDbCollectionsNames = async ({ cluster, connectionInfo, logger, app }) => { - const bucketScopeMap = await getBucketScopeNameMap({ - cluster, - selectedBucket: connectionInfo.couchbase_bucket, - logger, - }); - - return await async.reduce(Object.entries(bucketScopeMap), [], async (result, [bucketName, scopes]) => { - const documentKind = connectionInfo.documentKinds?.[bucketName]?.documentKindName || DEFAULT_DOCUMENT_KIND; - const dbCollectionsNames = await async.map(scopes, async scope => { - const collectionNames = await getScopeCollectionNames({ - cluster, - connectionInfo, - bucketName, - documentKind, - scope, - logger, - app, - }); - - return prepareBucketCollectionNamesData({ bucketName, scopeName: scope.name, collectionNames }); - }); - - return [...result, ...dbCollectionsNames]; - }); -}; - -/** - * @param {{ - * cluster: Cluster; - * connectionInfo: ConnectionInfo; - * bucketName: string; - * documentKind: string; - * scope: Scope; - * logger: Logger; - * app: App - * }} param0 - * @returns {Promise} - */ -const getScopeCollectionNames = async ({ cluster, connectionInfo, bucketName, documentKind, scope, logger, app }) => { - const scopeCollectionNames = scope.collections.map(collection => collection.name); - const notDefaultScopeCollectionNames = scopeCollectionNames.filter(name => name !== DEFAULT_NAME); - const hasDefaultCollection = isBucketHasDefaultCollection({ scopes: [scope] }); - - if (!hasDefaultCollection) { - return notDefaultScopeCollectionNames; - } - - const documentKindCollectionNames = await getDocumentKindCollectionNames({ - cluster, - connectionInfo, - bucketName, - documentKind, - logger, - app, - }); - - return [...documentKindCollectionNames, ...notDefaultScopeCollectionNames]; -}; - -/** - * - * @param {{ cluster: Cluster; connectionInfo: ConnectionInfo; bucketName: string; documentKind: string; logger: Logger; app: App }} param0 - * @returns {Promise} - */ -const getDocumentKindCollectionNames = async ({ cluster, connectionInfo, bucketName, documentKind, logger, app }) => { - try { - if (documentKind === DEFAULT_DOCUMENT_KIND) { - return []; - } - - const selectQuery = queryHelper.getSelectBucketDocumentKindQuery({ bucketName, documentKind }); - const { rows: documents } = await cluster.query(selectQuery); - const collectionNames = documents.map(doc => doc[documentKind]).filter(Boolean); - - return collectionNames; - } catch (error) { - const errorCode = getErrorCode({ error }); - if ( - errorCode === COUCHBASE_ERROR_CODE.primaryIndexDoesNotExist || - errorCode === COUCHBASE_ERROR_CODE.n1qlMethodsAreNotSupported - ) { - const documents = await restApiHelper.getBucketDocuments({ connectionInfo, bucketName, logger, app }); - const collectionNames = documents.reduce((result, doc) => { - const collectionName = doc[bucketName]?.[documentKind]; - - if (!collectionName || result.includes(collectionName)) { - return result; - } - - return [...result, collectionName]; - }, []); - - return collectionNames; - } - - logger.error(error); - return []; - } -}; -/** - * @param {{ cluster: Cluster; bucketName: string; }} param0 - * @throws - * @returns {Promise} - */ -const getBucketDocumentsByInfer = async ({ cluster, bucketName }) => { - const inferBucketDocumentsQuery = queryHelper.getInferBucketDocumentsQuery({ bucketName, limit: DEFAULT_LIMIT }); - const { rows: documents, meta } = await cluster.query(inferBucketDocumentsQuery); - const metaError = _.get(meta, 'errors.[0]'); - const isDocumentEmpty = _.get(documents, '[0].properties'); - - if (metaError) { - throw metaError; - } - - if (isDocumentEmpty) { - throw { code: COUCHBASE_ERROR_CODE.bucketIsEmpty }; - } - - return documents; -}; - -/** - * @param {{ cluster: Cluster; bucketName: string; limit: number }} param0 - * @returns {Promise} - */ -const getDocumentsBySelectStatement = async ({ cluster, bucketName, limit = DEFAULT_LIMIT }) => { - const selectBucketDocumentsQuery = queryHelper.getSelectBucketDocumentsQuery({ bucketName, limit }); - const { rows: documents } = await cluster.query(selectBucketDocumentsQuery); - - return documents; -}; - -/** - * @param {{ error: Error }} param0 - * @returns {number | undefined} - */ -const getErrorCode = ({ error }) => { - return error?.cause?.first_error_code ?? error?.code; -}; - -/** - * @param {{ error: Error }} param0 - * @returns {string} - */ -const getErrorMessage = ({ error }) => { - const errorCode = getErrorCode({ error }); - switch (errorCode) { - case COUCHBASE_ERROR_CODE.bucketIsEmpty: - return 'Collection is empty.'; - case COUCHBASE_ERROR_CODE.n1qlMethodsAreNotSupported: - return 'N1QL methods are not supported.'; - case COUCHBASE_ERROR_CODE.parseSyntaxError: - case COUCHBASE_ERROR_CODE.inferMethodIsNotSupport: - return 'Infer method is not supported.'; - case COUCHBASE_ERROR_CODE.userDoesNotHaveAccessToPrivilegeCluster: - return 'User doesn`t have credentials for privileged cluster.'; - default: - return error?.cause?.first_error_message || error?.message || ''; - } -}; - -/** - * @param {{ bucketName: string; scopeName: string; collectionNames?: string[]; status?: STATUS; }} param0 - * @returns {BucketCollectionNamesData} - */ -const prepareBucketCollectionNamesData = ({ bucketName, scopeName, collectionNames, status }) => { - const hasError = status === STATUS.hasError; - const dbCollections = hasError ? [] : _.uniq(collectionNames); - return { - scopeName, - dbCollections, - dbName: bucketName, - ...(status && { status }), - ...(hasError && { disabledTooltip: DISABLED_TOOLTIP }), - }; -}; - -/** - * @typedef {(args: object) => string} getQuery - * @param {{ cluster: Cluster; options: object; getQuery: getQuery; logger: Logger }} param0 - * @returns {Promise} - */ -const getPaginatedQuery = async ({ cluster, options, query, logger }) => { - const { bucketName, scopeName, collectionName, pagination, limit } = options; - logger.progress('Get data from database', bucketName + '.' + scopeName, collectionName); - - if (!pagination?.enabled) { - const queryWithOptions = queryHelper.getQueryOptions({ query, limit }); - const { rows } = await cluster.query(queryWithOptions); - return rows; - } - - const pageSize = Number(options.pagination.value) || DEFAULT_LIMIT; - const pages = Math.ceil(options.limit / pageSize); - const rowsByPages = []; - - let counter = 0; - - for (const page of pages) { - const offset = pageSize * page; - const limit = options.limit - offset < pageSize ? options.limit - offset : pageSize; - const queryWithOptions = queryHelper.getQueryOptions({ query, limit, offset }); - const { rows } = await cluster.query(queryWithOptions); - - counter += rows.length; - rowsByPages.push(...rows); - - logger.progress( - `Collection sampling: ${counter} / ${options.limit}`, - bucketName + '.' + scopeName, - collectionName, - ); - } - - return rowsByPages; -}; - -/** - * @param {{size: number; recordSamplingSettings: RecordSamplingSettings }} param0 - * @returns {number} - */ -const getDocSamplingSize = ({ size, recordSamplingSettings }) => { - if (recordSamplingSettings.active === 'absolute') { - return Number(recordSamplingSettings.absolute.value); - } - - const limit = Math.ceil((size * recordSamplingSettings.relative.value) / 100); - - return Math.min(limit, recordSamplingSettings.maxValue); -}; - -/** - * @param {{ cluster: Cluster; bucketName: string; scopeName: string; collectionName: string; recordSamplingSettings: RecordSamplingSettings; logger: Logger }} param0 - * @returns {Promise} - */ -const getCollectionSamplingSize = async ({ - cluster, - bucketName, - scopeName, - collectionName, - recordSamplingSettings, - logger, -}) => { - try { - const query = queryHelper.getCountCollectionDocumentsQuery({ bucketName, scopeName, collectionName }); - const { rows } = await cluster.query(query); - const size = rows?.[0]?.size; - - return getDocSamplingSize({ size, recordSamplingSettings }) || DEFAULT_LIMIT; - } catch (error) { - logger.error(error); - return DEFAULT_LIMIT; - } -}; - -/** - * @param {{ cluster: Cluster; bucketName: string; scopeName: string; collectionName: string; limit: number }} param0 - * @returns {Promise} - */ -const getCollectionDocumentsByInfer = async ({ cluster, bucketName, scopeName, collectionName, limit }) => { - const query = queryHelper.getInferCollectionDocumentsQuery({ bucketName, scopeName, collectionName, limit }); - const { rows, meta } = await cluster.query(query); - const metaError = _.get(meta, 'errors.[0]'); - - if (metaError) { - throw metaError; - } - - const [[inference]] = rows; - - return schemaHelper.convertInferSchemaToDocuments({ inference, bucketName }); -}; - -/** - * @param {{ - * cluster: Cluster; - * data: object; - * bucketName: string; - * scopeName: string; - * collectionName: string; - * collectionIndexes: object[]; - * includeEmptyCollection: boolean; - * logger: Logger; - * app: App; - * }} param0 - * @returns {Promise} - */ -const getDbCollectionData = async ({ - cluster, - data, - bucketName, - scopeName, - collectionName, - collectionIndexes, - includeEmptyCollection, - logger, - app, -}) => { - const limit = await getCollectionSamplingSize({ - cluster, - bucketName, - scopeName, - collectionName, - recordSamplingSettings: data.recordSamplingSettings, - logger, - }); - const documentKind = data.documentKinds?.[bucketName]?.documentKindName || ''; - const options = { limit, pagination: data.pagination, bucketName, scopeName, collectionName }; - - let documents = []; - let query = queryHelper.getSelectCollectionDocumentsQuery({ bucketName, scopeName, collectionName }); - - try { - documents = await getPaginatedQuery({ cluster, options, query, logger }); - - return schemaHelper.getDbCollectionData({ - bucketName, - scopeName, - collectionName, - documentKind, - documents, - collectionIndexes, - includeEmptyCollection, - }); - } catch (error) { - try { - const errorCode = getErrorCode({ error }); - switch (errorCode) { - case COUCHBASE_ERROR_CODE.parseSyntaxError: - case COUCHBASE_ERROR_CODE.collectionDoesNotExist: - query = queryHelper.getSelectBucketDocumentsByDocumentKindQuery({ - bucketName, - documentKind, - collectionName, - }); - documents = await getPaginatedQuery({ cluster, options, query, logger }); - break; - case COUCHBASE_ERROR_CODE.primaryIndexDoesNotExist: - documents = await getCollectionDocumentsByInfer({ - cluster, - bucketName, - scopeName, - collectionName, - limit, - }); - break; - case COUCHBASE_ERROR_CODE.inferMethodIsNotSupport: - case COUCHBASE_ERROR_CODE.n1qlMethodsAreNotSupported: - documents = await restApiHelper.getBucketDocuments({ - connectionInfo: data.connectionInfo, - bucketName, - logger, - app, - }); - break; - } - } catch (error) { - const errorCode = getErrorCode({ error }); - if (errorCode === COUCHBASE_ERROR_CODE.n1qlMethodsAreNotSupported) { - documents = await restApiHelper.getBucketDocuments({ - connectionInfo: data.connectionInfo, - bucketName, - logger, - app, - }); - } - logger.error(error); - } - - logger.error(error); - - return schemaHelper.getDbCollectionData({ - bucketName, - scopeName, - collectionName, - documentKind, - documents, - collectionIndexes, - includeEmptyCollection, - }); - } -}; - -/** - * @param {{ cluster: Cluster; logger: Logger }} param0 - * @returns {Promise} - */ -const getIndexes = async ({ cluster, logger }) => { - try { - const query = queryHelper.getSelectIndexesQuery(); - const { rows } = await cluster.query(query); - - return rows.map(row => row.indexes); - } catch (error) { - logger.error(error); - return []; - } -}; - -/** - * @param { cluster: Cluster; data: object; logger: Logger; app: App } param0 - * @returns {Promise} - */ -const getSelectedCollections = async ({ cluster, data, logger, app }) => { - const collectionVersion = data.collectionData.collectionVersion; - const dataBaseNames = data.collectionData.dataBaseNames; - - if (!_.isEmpty(collectionVersion)) { - return collectionVersion; - } - - const dbCollectionData = await async.flatMap(dataBaseNames, async bucketName => { - return getDbCollectionsNames({ - connectionInfo: { - ...data, - couchbase_bucket: bucketName, - }, - cluster, - logger, - app, - }); - }); - - return dbCollectionData.reduce((result, collectionData) => { - const { dbName, scopeName, dbCollections } = collectionData; - return _.set(result, [dbName, scopeName], dbCollections); - }, {}); -}; - -module.exports = { - isBucketHasDefaultCollection, - getAllBuckets, - getBucketsForReverse, - getBucketScopeNameMap, - getDbCollectionsNames, - getDbCollectionData, - getDocumentsBySelectStatement, - getBucketDocumentsByInfer, - getErrorCode, - getErrorMessage, - getIndexes, - getPaginatedQuery, - getSelectedCollections, -}; diff --git a/reverse_engineering/helpers/connectionHelper.js b/reverse_engineering/helpers/connectionHelper.js index cc17e0c..8d61709 100644 --- a/reverse_engineering/helpers/connectionHelper.js +++ b/reverse_engineering/helpers/connectionHelper.js @@ -1,95 +1,10 @@ -/** - * @typedef {import('../../shared/types').App} App - * @typedef {import('../../shared/types').Cluster} Cluster - * @typedef {import('../../shared/types').ConnectionInfo} ConnectionInfo - * @typedef {import('../../shared/types').ConnectionParams} ConnectionParams - */ +function generateConnectionParams(connectionInfo) {} -const clusterHelper = require('./clusterHelper'); -const { AUTH_TYPE, COUCHBASE_HOST_PREFIX, COUCHBASE_DEFAULT_KV_CONNECTION_PORT } = require('../../shared/constants'); +async function connect(connectionInfo) {} -let cluster = null; - -/** - * @param {{ connectionInfo: ConnectionInfo }} param0 - * @returns {boolean} - */ -const isCloudStorage = ({ connectionInfo }) => { - return connectionInfo.host.startsWith(COUCHBASE_HOST_PREFIX.cloud); -}; - -/** - * @param {{ connectionInfo: ConnectionInfo }} param0 - * @returns {string} - */ -const generateUrl = ({ connectionInfo }) => { - if (isCloudStorage({ connectionInfo })) { - return connectionInfo.host; - } - - const keyValuePort = connectionInfo.kv_port || COUCHBASE_DEFAULT_KV_CONNECTION_PORT; - - return `${COUCHBASE_HOST_PREFIX.selfHosted}${connectionInfo.host}:${keyValuePort}`; -}; - -/** - * @param {{ connectionInfo: ConnectionInfo }} - * @returns {ConnectionParams} - */ -const generateConnectionParams = ({ connectionInfo }) => { - if (connectionInfo.authType === AUTH_TYPE.securityCertificate) { - return { - url: generateUrl({ connectionInfo }), - options: { - authenticator: { - certificatePath: connectionInfo.security_certificate, - keyPath: connectionInfo.security_certificate_key, - }, - }, - }; - } - - return { - url: generateUrl({ connectionInfo }), - options: { - username: connectionInfo.couchbase_username, - password: connectionInfo.couchbase_password, - }, - }; -}; - -/** - * @param {{ connectionInfo: ConnectionInfo, app: App }} param0 - * @throws {Error} - * @returns {Promise} - */ -const connect = async ({ connectionInfo, app }) => { - if (cluster) { - return cluster; - } - - const couchbase = await app.require('couchbase'); - const { url, options } = generateConnectionParams({ connectionInfo }); - cluster = await couchbase.connect(url, options); - const buckets = await clusterHelper.getAllBuckets({ cluster }); - const selectedBucket = connectionInfo.couchbase_bucket; - - if (selectedBucket && !buckets.includes(selectedBucket)) { - throw new Error(`Bucket ${selectedBucket} doesn't exist`); - } - - return cluster; -}; - -/** - * @returns {Promise} - */ -const disconnect = async () => { - await cluster?.close(); - cluster = null; -}; +function close() {} module.exports = { connect, - disconnect, + close, }; diff --git a/reverse_engineering/helpers/documentKindHelper.js b/reverse_engineering/helpers/documentKindHelper.js deleted file mode 100644 index 641bffd..0000000 --- a/reverse_engineering/helpers/documentKindHelper.js +++ /dev/null @@ -1,333 +0,0 @@ -/** - * @typedef {import('../../shared/types').App} App - * @typedef {import('../../shared/types').Document} Document - * @typedef {import('../../shared/types').DocumentKindData} DocumentKindData - * @typedef {import('../../shared/types').Cluster} Cluster - * @typedef {import('../../shared/types').ConnectionInfo} ConnectionInfo - * @typedef {import('../../shared/types').BucketCollectionNamesData} BucketCollectionNamesData - * @typedef {import('../../shared/types').Logger} Logger - */ -const async = require('async'); -const _ = require('lodash'); -const clusterHelper = require('./clusterHelper'); -const restApiHelper = require('./restApiHelper'); -const schemaHelper = require('./schemaHelper'); -const { COUCHBASE_ERROR_CODE, DEFAULT_NAME, FLAVOR_REGEX, STATUS } = require('../../shared/constants'); - -/** - * @param {{ bucketName: string; status?: STATUS; }} param0 - * @returns {DocumentKindData} - */ -const getDefaultDocumentKindData = ({ bucketName, status }) => { - return { bucketName, documentList: [], documentKind: '', status }; -}; - -/** - * @param {{ cluster: Cluster; connectionInfo: ConnectionInfo; logger: Logger; app: App }} param0 - * @returns {Promise} - */ -const getBucketsDocumentKindList = async ({ cluster, connectionInfo, logger, app }) => { - const selectedBucket = connectionInfo.couchbase_bucket; - const bucketScopeNameMap = await clusterHelper.getBucketScopeNameMap({ cluster, selectedBucket, logger }); - - return await async.reduce(Object.entries(bucketScopeNameMap), [], async (result, [bucketName, scopes]) => { - const hasDefaultCollection = clusterHelper.isBucketHasDefaultCollection({ scopes }); - - if (!hasDefaultCollection) { - return result; - } - - const documentKindData = await getBucketDocumentKindData({ - cluster, - connectionInfo, - bucketName, - logger, - app, - }); - - return [...result, documentKindData]; - }); -}; - -/** - * @param {{ cluster: Cluster; connectionInfo: ConnectionInfo; bucketName: string; logger: Logger; app: App }} param0 - * @returns {Promise} - */ -const getBucketDocumentKindData = async ({ cluster, connectionInfo, bucketName, logger, app }) => { - const keySpaceName = `${bucketName}.${DEFAULT_NAME}.${DEFAULT_NAME}: `; - - return getDocumentKindDataByInference({ cluster, bucketName }) - .catch(error => { - const errorMessage = clusterHelper.getErrorMessage({ error }); - logger.info(keySpaceName + errorMessage); - return getDocumentKindDataByErrorHandling({ cluster, connectionInfo, bucketName, error, logger, app }); - }) - .catch(error => { - const errorMessage = clusterHelper.getErrorMessage({ error }); - logger.info(keySpaceName + errorMessage); - return getDefaultDocumentKindData({ bucketName, status: STATUS.hasError }); - }); -}; - -/** - * @param {{ bucketName: string; documents: Document[]; }} param0 - * @returns {object} - */ -const generateCustomInferSchema = ({ bucketName, documents }) => { - documents = documents.map(item => { - if (typeof item[bucketName] === 'object') { - return item[bucketName]; - } else { - return { 'unknown': item[bucketName] }; - } - }); - - let inferSchema = { - '#docs': 0, - '$schema': 'http://json-schema.org/schema#', - 'properties': {}, - }; - - documents.forEach(item => { - inferSchema['#docs']++; - - for (const prop in item) { - if (inferSchema.properties.hasOwnProperty(prop)) { - const minimumNumberOfSamples = 20; - const samples = inferSchema.properties[prop]['samples']; - const propDoesNotExists = samples.indexOf(item[prop]) === -1; - const shouldAddSample = samples.length < minimumNumberOfSamples; - - inferSchema.properties[prop]['#docs']++; - - if (propDoesNotExists && shouldAddSample) { - inferSchema.properties[prop]['samples'].push(item[prop]); - } - - inferSchema.properties[prop]['type'] = schemaHelper.typeOf(item[prop]); - } else { - inferSchema.properties[prop] = { - '#docs': 1, - '%docs': 100, - 'samples': [item[prop]], - 'type': schemaHelper.typeOf(item[prop]), - }; - } - } - }); - - for (const prop in inferSchema.properties) { - inferSchema.properties[prop]['%docs'] = _.round( - (inferSchema.properties[prop]['#docs'] / inferSchema['#docs']) * 100, - 2, - ); - } - return inferSchema; -}; - -/** - * @param {Document} property - * @returns {boolean} - */ -const isSuggestedDocKind = property => { - return property['%docs'] >= 70 && property.samples?.length && typeof property.samples[0] !== 'object'; -}; - -/** - * @param {string} string - * @returns {string} - */ -const replaceQuotes = string => { - const inQuotes = _.first(string) === '`' && _.last(string) === '`'; - - return inQuotes ? string.slice(1, -1) : string; -}; - -const rejectPropertiesWithLowAppearancePercentage = properties => { - return _.chain(properties) - .toPairs() - .filter(([, propertyData]) => isSuggestedDocKind(propertyData)) - .fromPairs() - .value(); -}; - -/** - * @param {Document[]} inferences - * @returns {string[]} - */ -const getSuggestedDocKindsFromInference = inferences => { - return _.uniq( - inferences.flatMap(inference => Object.keys(rejectPropertiesWithLowAppearancePercentage(inference.properties))), - ); -}; - -/** - * @param {{ bucketName: string; inference: Document; flavorValue: string; }} param0 - * @returns {DocumentKindData} - */ -const getDocumentKindDataFromInfer = ({ bucketName, inference, flavorValue }) => { - const flavor = flavorValue ? flavorValue.split(',') : inference[0].Flavor.split(','); - - if (flavor.length !== 1) { - return { - bucketName, - documentKind: '', - documentList: [], - otherDocKinds: [], - }; - } - - const suggestedDocKinds = getSuggestedDocKindsFromInference(inference); - const flavorRegex = new RegExp(FLAVOR_REGEX); - const matchedDocKind = flavor[0].match(flavorRegex); - const documentKindKey = matchedDocKind.length ? matchedDocKind[1] : ''; - const documentKind = replaceQuotes(documentKindKey); - - return { - bucketName, - documentKind, - documentList: suggestedDocKinds, - otherDocKinds: [], - }; -}; - -/** - * @param {{ bucketName: string; inference: Document; }} param0 - * @returns {DocumentKindData} - */ -const getDocumentKindDataFromManualInfer = ({ bucketName, inference }) => { - let minCount = Infinity; - let probability = 0; - - return Object.entries(inference.properties).reduce( - (result, [propertyName, property]) => { - const isSuggestedDocumentKind = isSuggestedDocKind(property); - const isOtherDocumentKind = property.type === 'string'; - - if (!isSuggestedDocumentKind && !isOtherDocumentKind) { - return result; - } - - if (!isSuggestedDocumentKind && isOtherDocumentKind) { - return { - ...result, - otherDocKinds: [...result.otherDocKinds, propertyName], - }; - } - - const propertyProbability = property['%docs']; - const propertySamplesCount = property.samples.length; - - if (propertyProbability >= probability && propertySamplesCount < minCount) { - minCount = propertySamplesCount; - probability = propertyProbability; - - return { - ...result, - documentList: [...result.documentList, propertyName], - documentKind: replaceQuotes(propertyName), - }; - } - - return { - ...result, - documentList: [...result.documentList, propertyName], - }; - }, - { - bucketName, - documentKind: '', - documentList: [], - otherDocKinds: [], - }, - ); -}; - -/** - * @param {{ bucketName: string; documents: Document[] }} param0 - * @returns {DocumentKindData} - */ -const manualInfer = ({ bucketName, documents }) => { - const inference = generateCustomInferSchema({ bucketName, documents }); - return getDocumentKindDataFromManualInfer({ bucketName, inference }); -}; - -/** - * @param {{ bucketName: string; connectionInfo: ConnectionInfo; logger: Logger; app: App }} param0 - * @returns {Promise} - */ -const getDocumentKindDataUsingRestApi = async ({ bucketName, connectionInfo, logger, app }) => { - try { - const documents = await restApiHelper.getDocuments({ bucketName, connectionInfo, logger, app }); - return manualInfer({ bucketName, documents }); - } catch (error) { - logger.error(error); - return getDefaultDocumentKindData({ bucketName, status: STATUS.hasError }); - } -}; - -/** - * @param {{ cluster: Cluster; bucketName: string; }} param0 - * @returns {Promise} - */ -const getDocumentKindDataUsingN1ql = async ({ cluster, bucketName }) => { - const documents = await clusterHelper.getDocumentsBySelectStatement({ cluster, bucketName }); - return manualInfer({ bucketName, documents }); -}; - -/** - * @param {Document} data - * @returns {string | undefined} - */ -const getNonEmptyFlavorValue = data => { - return data?.find(item => item.Flavor)?.Flavor; -}; - -/** - * @param {{cluster: Cluster; bucketName: string; }} param0 - * @throws - * @returns {Promise} - */ -const getDocumentKindDataByInference = async ({ cluster, bucketName }) => { - const documents = await clusterHelper.getBucketDocumentsByInfer({ cluster, bucketName }); - const [inference] = documents; - const flavorValue = getNonEmptyFlavorValue(inference); - const isFlavourString = _.isString(flavorValue); - const flavours = isFlavourString ? flavorValue.split(',') : []; - const isMultipleFlavours = flavours.length > 1; - const flavor = flavorValue?.match(new RegExp(FLAVOR_REGEX)); - const documentKindName = flavor?.[2]; - const shouldCreateManually = !isFlavourString || isMultipleFlavours || !documentKindName; - - if (shouldCreateManually) { - throw { code: COUCHBASE_ERROR_CODE.inferMethodIsNotSupport }; - } - - return getDocumentKindDataFromInfer({ bucketName, inference, flavorValue }); -}; - -/** - * @param {{ cluster: Cluster; connectionInfo: ConnectionInfo; bucketName: string; error: Error; logger: Logger; app: App }} param0 - * @throws {Error} - * @returns {Promise} - */ -const getDocumentKindDataByErrorHandling = async ({ cluster, connectionInfo, bucketName, error, logger, app }) => { - const errorCode = clusterHelper.getErrorCode({ error }); - switch (errorCode) { - case COUCHBASE_ERROR_CODE.bucketIsEmpty: - return getDefaultDocumentKindData({ bucketName }); - case COUCHBASE_ERROR_CODE.primaryIndexDoesNotExist: - case COUCHBASE_ERROR_CODE.n1qlMethodsAreNotSupported: - case COUCHBASE_ERROR_CODE.userDoesNotHaveAccessToPrivilegeCluster: - return getDocumentKindDataUsingRestApi({ bucketName, connectionInfo, logger, app }); - case COUCHBASE_ERROR_CODE.parseSyntaxError: - case COUCHBASE_ERROR_CODE.inferMethodIsNotSupport: - return getDocumentKindDataUsingN1ql({ cluster, bucketName }); - default: - throw error; - } -}; - -module.exports = { - getBucketsDocumentKindList, -}; diff --git a/reverse_engineering/helpers/indexHelper.js b/reverse_engineering/helpers/indexHelper.js deleted file mode 100644 index 18d87a2..0000000 --- a/reverse_engineering/helpers/indexHelper.js +++ /dev/null @@ -1,165 +0,0 @@ -const _ = require('lodash'); -const restApiHelper = require('./restApiHelper'); -const clusterHelper = require('./clusterHelper'); -const parserHelper = require('./parserHelper'); -const { GET_META_REGEXP, GET_PARTITION_HASH_REGEXP, DEFAULT_NAME } = require('../../shared/constants'); - -const handleIndex = index => { - const indexData = getHackoladeCompatibleIndex(index); - return _.pickBy(indexData, value => !_.isUndefined(value)); -}; - -const getHackoladeCompatibleIndex = index => { - if (index.is_primary) { - return { - indxName: index.name, - indxType: 'Primary', - usingGSI: index.using === 'gsi', - }; - } else if (checkArrayIndex(index)) { - return { - indxName: index.name, - indxType: 'Array', - usingGSI: index.using === 'gsi', - arrayExpr: index.index_key.map(getExpression).join(','), - whereClause: getWhereCondition(index), - }; - } else if (checkMetaIndex(index)) { - return { - indxName: index.name, - indxType: 'Metadata', - metadataExpr: index.index_key.map(getExpression).join(','), - }; - } else { - const partitionByHash = getPartition(index); - const { expression, keys } = getKeysAndExpression(index); - - return { - indxName: index.name, - indxType: 'Secondary', - usingGSI: index.using === 'gsi', - indxKey: keys, - functionExpr: expression, - whereClause: getWhereCondition(index), - partitionByHash: partitionByHash.type, - partitionByHashExpr: partitionByHash.expression, - }; - } -}; - -const checkMetaIndex = index => { - return Boolean(_.get(index, 'index_key', []).find(key => GET_META_REGEXP.test(key))); -}; - -const checkArrayIndex = index => { - return Boolean( - _.get(index, 'index_key', []).find( - key => key.startsWith('(distinct') || key.startsWith('(all') || key.startsWith('array'), - ), - ); -}; - -const getKeysAndExpression = index => { - const indexKeys = _.get(index, 'index_key', []); - const keys = indexKeys.filter(checkKeySimple).map(getSimpleKey); - const expression = indexKeys.filter(key => !checkKeySimple(key)).join(','); - - if (expression) { - return { keys, expression }; - } - - return { keys }; -}; - -const checkKeySimple = key => { - return /^\`.*?\`$/.test(key) || /^\(\`.*?\`\)$/.test(key); -}; - -const getExpression = key => { - if (GET_META_REGEXP.test(key)) { - return `META().` + GET_META_REGEXP.exec(key)[1]; - } - - return key; -}; - -const getSimpleKey = key => { - const isDescending = key.endsWith('DESC'); - const keyName = key - .replace(/\`/gi, '') - .replace(' DESC', '') - .replace(/^\s+/, '') - .replace(/\s+$/, '') - .replace(/^\((.*?)\)$/, '$1'); - - return { name: keyName, type: isDescending ? 'descending' : 'ascending' }; -}; - -const getPartition = index => { - if (index.partition && GET_PARTITION_HASH_REGEXP.test(index.partition)) { - return { expression: _.get(GET_PARTITION_HASH_REGEXP.exec(index.partition), '[2]'), type: 'Expression' }; - } - - return { type: '' }; -}; - -const getWhereCondition = index => { - if (index.condition) { - return index.condition; - } -}; - -const getIndexes = async ({ cluster, connectionInfo, logger, app }) => { - try { - const indexData = await restApiHelper.getIndexes({ connectionInfo, logger, app }); - const statements = indexData.map(indx => indx.definition).join(';\n'); - - if (!statements) { - return []; - } - - const { indexes } = parserHelper.parseN1qlStatements({ statements }); - - return indexes; - } catch (error) { - try { - logger.error(error); - - const indexes = await clusterHelper.getIndexes({ cluster, logger }); - - return indexes - .sort((a, b) => a.name.localeCompare(b.name)) - .map(index => { - const isDefaultCollectionIndex = !index.bucket_id; - const bucketName = isDefaultCollectionIndex ? index.keyspace_id : index.bucket_id; - const scopeName = isDefaultCollectionIndex ? DEFAULT_NAME : index.scope_id; - const collectionName = isDefaultCollectionIndex ? DEFAULT_NAME : index.keyspace_id; - - return { - index: handleIndex(index), - bucketName, - scopeName, - collectionName, - }; - }); - } catch (err) { - logger.error(err); - return []; - } - } -}; - -const getIndexesByCollectionMap = ({ indexes }) => { - return indexes.reduce((result, indexData) => { - const { bucketName, scopeName, collectionName, index } = indexData; - const namePath = [bucketName, scopeName, collectionName]; - const collectionIndexes = _.get(result, namePath, []); - - return _.set(result, namePath, [...collectionIndexes, index]); - }, {}); -}; - -module.exports = { - getIndexes, - getIndexesByCollectionMap, -}; diff --git a/reverse_engineering/helpers/logHelper.js b/reverse_engineering/helpers/logHelper.js index f68f9bf..cc65ba3 100644 --- a/reverse_engineering/helpers/logHelper.js +++ b/reverse_engineering/helpers/logHelper.js @@ -1,8 +1,3 @@ -/** - * @typedef {import('../../shared/types').AppLogger} AppLogger - * @typedef {import('../../shared/types').Logger} Logger - */ - const os = require('os'); const packageFile = require('../../package.json'); @@ -48,18 +43,14 @@ const toTime = number => { return Math.floor(number / 3600) + ':' + prefixZero(parseInt((number / 3600 - Math.floor(number / 3600)) * 60)); }; -/** - * @param {{ title: string; logger: AppLogger; hiddenKeys: string[] }} param0 - * @returns {Logger} - */ const createLogger = ({ title, logger, hiddenKeys }) => { return { info(message) { logger.log('info', { message }, title, hiddenKeys); }, - progress(message, containerName = '', entityName = '') { - logger.progress({ message, containerName, entityName }); + progress(message, dbName = '', tableName = '') { + logger.progress({ message, containerName: dbName, entityName: tableName }); }, error(error) { @@ -68,11 +59,7 @@ const createLogger = ({ title, logger, hiddenKeys }) => { }; }; -const createError = error => { - return { - message: error.cause?.first_error_message || error.message, - }; -}; +const createError = error => {}; const logHelper = { getSystemInfo, diff --git a/reverse_engineering/helpers/parserHelper.js b/reverse_engineering/helpers/parserHelper.js deleted file mode 100644 index bd7ca68..0000000 --- a/reverse_engineering/helpers/parserHelper.js +++ /dev/null @@ -1,94 +0,0 @@ -/** - * @typedef {{ scopes: Scope[]; collections: Collection[]; indexes: object[] }} ParsedResult - */ - -const _ = require('lodash'); -const antlr4 = require('antlr4'); -const n1qlLexer = require('../antlr/parser/n1qlLexer'); -const n1qlParser = require('../antlr/parser/n1qlParser'); -const n1qlToCollectionVisitor = require('../antlr/n1qlToCollectionVisitor'); -const ExprErrorListener = require('../antlr/antlrErrorListener'); - -/** - * @param {{ statements: string }} param0 - * @returns {ParsedResult} - */ -const parseN1qlStatements = ({ statements }) => { - const chars = new antlr4.InputStream(statements); - const lexer = new n1qlLexer(chars); - - const tokens = new antlr4.CommonTokenStream(lexer); - const parser = new n1qlParser(tokens); - - parser.removeErrorListeners(); - parser.addErrorListener(new ExprErrorListener()); - - const tree = parser.statements(); - - const n1qlToCollectionsGenerator = new n1qlToCollectionVisitor(); - const result = tree.accept(n1qlToCollectionsGenerator); - - return mapParsedResult({ result, statements }); -}; - -/** - * @param {{ result: ParsedResult[]; statements: string; }} param0 - * @returns {ParsedResult} - */ -const mapParsedResult = ({ result, statements }) => { - const scopes = result.flatMap(({ scopes }) => scopes); - const collections = result.flatMap(({ collections }) => collections); - const indexes = result.flatMap(({ indexes }) => indexes); - - return { - scopes, - collections, - indexes: mapIndexes({ indexes, statements }), - }; -}; - -const mapIndexes = ({ indexes, statements }) => { - return indexes.reduce((result, indexData) => { - if (_.isEmpty(indexData)) { - return result; - } - - let indexWithKeys = indexData.index; - - if (indexWithKeys.indxType !== 'Primary') { - const indexKeys = _.get(indexData, 'indexKeys.indexKeysIntervals').reduce((indexKeys, key) => { - const select = key.select; - const name = removeParentheses(statements.substring(select.start, select.stop)); - return [...indexKeys, { name, type: key.type }]; - }, []); - - if (indexWithKeys.indxType === 'Secondary') { - indexWithKeys = { - ...indexWithKeys, - [_.get(indexData, 'indexKeys.indexKeysPropertyKeyword')]: indexKeys, - }; - } else { - indexWithKeys = { - ...indexWithKeys, - [_.get(indexData, 'indexKeys.indexKeysPropertyKeyword')]: indexKeys - .map(index => index.name) - .join(', '), - }; - } - } - - return [...result, { ...indexData, index: indexWithKeys }]; - }, []); -}; - -const removeParentheses = string => { - if (/^[(`'"].*[)`'"]$/i.test(string)) { - return string.slice(1, string.length - 1); - } - - return string; -}; - -module.exports = { - parseN1qlStatements, -}; diff --git a/reverse_engineering/helpers/queryHelper.js b/reverse_engineering/helpers/queryHelper.js deleted file mode 100644 index 4304663..0000000 --- a/reverse_engineering/helpers/queryHelper.js +++ /dev/null @@ -1,81 +0,0 @@ -/** - * @param {{ bucketName: string; documentKind: string; }} param0 - * @returns {string} - */ -const getSelectBucketDocumentKindQuery = ({ bucketName, documentKind }) => { - return `SELECT ${documentKind} FROM \`${bucketName}\` WHERE ${documentKind} IS NOT MISSING GROUP BY ${documentKind}`; -}; - -/** - * @param {{ bucketName: string; limit: number; }} param0 - * @returns {string} - */ -const getInferBucketDocumentsQuery = ({ bucketName, limit }) => { - return `INFER \`${bucketName}\` WITH {"sample_size": ${limit},"num_sample_values":3};`; -}; - -/** - * @param {{ bucketName: string; scopeName: string; collectionName: string; limit: number }} param0 - * @returns - */ -const getInferCollectionDocumentsQuery = ({ bucketName, scopeName, collectionName, limit }) => { - return `INFER \`${bucketName}\`.\`${scopeName}\`.\`${collectionName}\` WITH {"sample_size":${limit}, "num_sample_values":3};`; -}; - -/** - * @param {{ bucketName: string; limit?: number; offset: number; }} param0 - * @returns {string} - */ -const getSelectBucketDocumentsQuery = ({ bucketName, limit, offset }) => { - const query = `SELECT * FROM \`${bucketName}\``; - return getQueryOptions({ query, limit, offset }); -}; - -/** - * @param {{ bucketName: string; scopeName: string; collectionName: string; limit: number; offset: number }} param0 - * @returns {string} - */ -const getSelectCollectionDocumentsQuery = ({ bucketName, scopeName, collectionName, limit, offset }) => { - const query = `SELECT *, META().id AS docid FROM \`${bucketName}\`.\`${scopeName}\`.\`${collectionName}\` AS \`${bucketName}\``; - return getQueryOptions({ query, limit, offset }); -}; - -/** - * @param {{ bucketName: string; scopeName: string; collectionName: string; }} param0 - * @returns {string} - */ -const getCountCollectionDocumentsQuery = ({ bucketName, scopeName, collectionName }) => { - return `SELECT COUNT(*) AS size FROM \`${bucketName}\`.\`${scopeName}\`.\`${collectionName}\``; -}; - -const getSelectBucketDocumentsByDocumentKindQuery = ({ bucketName, documentKind, collectionName, limit, offset }) => { - const query = `SELECT *, META().id as docid FROM \`${bucketName}\` WHERE \`${documentKind}\` = "${collectionName}"`; - return getQueryOptions({ query, limit, offset }); -}; - -/** - * @returns {string} - */ -const getSelectIndexesQuery = () => { - return `SELECT * FROM system:indexes`; -}; - -/** - * @param {{ query: string; limit: number; offset: number; }} param0 - * @returns {string} - */ -const getQueryOptions = ({ query, limit, offset }) => { - return query + (limit ? ` LIMIT ${limit}` : '') + (offset ? ` OFFSET ${offset}` : ''); -}; - -module.exports = { - getCountCollectionDocumentsQuery, - getInferBucketDocumentsQuery, - getInferCollectionDocumentsQuery, - getSelectBucketDocumentKindQuery, - getSelectBucketDocumentsByDocumentKindQuery, - getSelectBucketDocumentsQuery, - getSelectCollectionDocumentsQuery, - getSelectIndexesQuery, - getQueryOptions, -}; diff --git a/reverse_engineering/helpers/restApiHelper.js b/reverse_engineering/helpers/restApiHelper.js deleted file mode 100644 index 85d89dc..0000000 --- a/reverse_engineering/helpers/restApiHelper.js +++ /dev/null @@ -1,196 +0,0 @@ -const _ = require('lodash'); -const async = require('async'); -const { DEFAULT_LIMIT } = require('../../shared/constants'); - -class CustomError extends Error { - constructor({ code, message }) { - super(); - this.code = code; - this.message = message; - } -} - -class CouchbaseRestApiService { - constructor(connectionInfo, httpService) { - this.host = connectionInfo.host; - this.port = connectionInfo.port; - - if (connectionInfo.couchbase_username && connectionInfo.couchbase_password) { - this.password = connectionInfo.couchbase_password; - this.username = connectionInfo.couchbase_username; - } - - this.httpService = httpService; - } - - async fetch(endpoint, options = {}) { - const uri = `http://${this.host}:${this.port}${endpoint}`; - - if (this.username && this.password) { - let encodedCredentials = Buffer.from(`${this.username}:${this.password}`).toString('base64'); - options = { - ...options, - headers: { - ...(options.headers || {}), - Authorization: `Basic ${encodedCredentials}`, - }, - useElectronNet: false, - }; - } - - try { - return await this.httpService.get(uri, options); - } catch (error) { - throw new CustomError({ - message: error.statusText || error.message, - code: error.status || error.code, - }); - } - } - - async count(bucketName) { - const body = await this.fetch(`/pools/default/buckets/${bucketName}`); - - return body?.basicStats?.itemCount; - } - - async getDocuments(bucketName, size) { - let docsUri = `/pools/default/buckets/${bucketName}/docs?include_docs=true&limit=${size}&skip=0`; - - const body = await this.fetch(docsUri); - - return body?.rows?.map(item => { - return { - json: safeParse(item?.doc?.json), - meta: { - id: item?.id, - }, - }; - }); - } - - async getDocumentByKey(bucketName, key) { - let docsUri = `/pools/default/buckets/${bucketName}/docs/${encodeURIComponent(key.replace(/\u0000/g, ''))}`; - const body = await this.fetch(docsUri); - - return { - ...body, - json: safeParse(body.json), - }; - } - - async getRandomKey(bucketName) { - const randomKeyUri = `/pools/default/buckets/${bucketName}/localRandomKey`; - - return this.fetch(randomKeyUri); - } - - async getVersion() { - const body = await this.fetch('/pools'); - - return body.implementationVersion; - } - - async getIndexes() { - const body = await this.fetch('/indexStatus'); - - return body.indexes; - } -} - -const safeParse = value => { - try { - if (typeof value !== 'string') { - return value; - } - return JSON.parse(value); - } catch (error) { - return value; - } -}; -const isBinaryFile = obj => _.isObject(obj) && !!obj.base64 && !!obj.meta; - -const createRestApiService = ({ connectionInfo, app }) => { - const httpService = app.require('httpService'); - const httpServiceInstance = httpService.createInstance(connectionInfo); - const apiService = new CouchbaseRestApiService(connectionInfo, httpServiceInstance); - - return apiService; -}; - -const getBucketDocuments = async ({ connectionInfo, bucketName, logger, app }) => { - logger.info(`${bucketName}: Start getting documents using REST API`); - - const apiService = createRestApiService({ connectionInfo, app }); - const count = await apiService.count(bucketName); - const body = await apiService.getRandomKey(bucketName); - const size = count ?? DEFAULT_LIMIT; - - if (body.error === 'fallback_to_all_docs') { - logger.error({ message: `"localRandomKey" in not available or bucket ${bucketName} is empty` }); - - return await apiService.getDocuments(bucketName, size); - } - - logger.info(`REST API: fetching documents by random key`); - - const maxNumberOfAttempts = 5; - - let numberOfAttempts = 0; - - return new Promise((resolve, reject) => { - async.timesLimit( - size, - 50, - async index => { - if (numberOfAttempts > maxNumberOfAttempts) { - return; - } - - const keyBody = await apiService.getRandomKey(bucketName).catch(error => { - logger.error({ message: `Error fetching random key from bucket "${bucketName}" (${index})` }); - return Promise.reject(error); - }); - - return await apiService.getDocumentByKey(bucketName, keyBody.key).catch(error => { - if (numberOfAttempts >= maxNumberOfAttempts) { - throw error; - } - - logger.error({ - message: `Error fetching document by random key from bucket "${bucketName}" (${index})`, - }); - - numberOfAttempts++; - }); - }, - (error, result) => { - if (error) { - logger.error(error); - return reject(error); - } - - logger.info(`Successfully read ${result.length} document(s)`); - - const documents = (result || []) - .filter(item => Boolean(item) && !isBinaryFile(item)) - .map(item => ({ [bucketName]: item.json })); - - return resolve(documents); - }, - ); - }); -}; - -const getIndexes = async ({ connectionInfo, logger, app }) => { - logger.info(`Start getting indexes using REST API`); - - const apiService = createRestApiService({ connectionInfo, app }); - - return await apiService.getIndexes(); -}; - -module.exports = { - getBucketDocuments, - getIndexes, -}; diff --git a/reverse_engineering/helpers/schemaHelper.js b/reverse_engineering/helpers/schemaHelper.js deleted file mode 100644 index 2e9ebaf..0000000 --- a/reverse_engineering/helpers/schemaHelper.js +++ /dev/null @@ -1,161 +0,0 @@ -/** - * @typedef {import('../../shared/types').DbCollectionData} DbCollectionData - * @typedef {import('../../shared/types').Document} Document - * @typedef {import('../../shared/types').NameMap} NameMap - */ -const _ = require('lodash'); -const { DEFAULT_KEY_NAME, DEFAULT_NAME } = require('../../shared/constants'); - -/** - * @param {{ - * documents: Document[]; - * bucketName: string; - * scopeName: string; - * collectionName: string; - * documentKind: string; - * collectionIndexes: object[]; - * includeEmptyCollection: boolean }} param0 - * @returns {DbCollectionData} - */ -const getDbCollectionData = ({ - documents, - bucketName, - scopeName, - collectionName, - documentKind, - collectionIndexes, - includeEmptyCollection, -}) => { - const jsonDocuments = documents - .filter(item => _.isPlainObject(item[bucketName])) - .map(item => ({ - [DEFAULT_KEY_NAME]: item.docid, - ...item[bucketName], - })); - const standardDoc = _.first(jsonDocuments); - const emptyBucket = !includeEmptyCollection && _.isEmpty(jsonDocuments); - - return { - dbName: scopeName, - collectionName, - documentKind, - collectionDocs: {}, - standardDoc, - bucketInfo: { - bucket: bucketName, - }, - emptyBucket, - documents: jsonDocuments, - containerLevelKeys: { - key: DEFAULT_KEY_NAME, - }, - entityLevel: { - indexes: collectionIndexes, - }, - }; -}; - -/** - * @param {{ inference: object; bucketName: string; }} param0 - * @returns {Document[]} - */ -const convertInferSchemaToDocuments = ({ inference, bucketName }) => { - if (_.isEmpty(inference?.properties)) { - return []; - } - - const documents = Object.keys(inference.properties).reduce((result, propertyName) => { - const samples = inference.properties[propertyName]?.samples || []; - - return samples.reduce((acc, sample, index) => { - const document = acc[index] || {}; - acc[index] = { ...document, [propertyName]: sample }; - return acc; - }, result); - }, []); - - return documents.map(document => ({ - docid: '', - [bucketName]: document, - })); -}; - -/** - * @param {{ entitiesData: object[]; indexesByCollectionMap: NameMap; scopeBucketNameMap: NameMap }} param0 - * @returns {DbCollectionData[]} - */ -const mapParsedResultToMultipleSchema = ({ entitiesData, indexesByCollectionMap, scopeBucketNameMap }) => { - return entitiesData.map(({ bucketName, scopeName, collectionName, ifNotExists }) => { - return { - doc: { - bucketInfo: { - bucket: bucketName, - ifNotExists: scopeBucketNameMap[bucketName]?.[scopeName]?.ifNotExists, - }, - emptyBucket: !collectionName, - dbName: scopeName, - collectionName: collectionName, - entityLevel: { - ifNotExists, - indexes: indexesByCollectionMap?.[bucketName]?.[scopeName]?.[collectionName], - }, - }, - objectNames: { - collectionName, - }, - collectionDocs: {}, - jsonSchema: { - type: 'object', - }, - }; - }); -}; - -/** - * @param {{ dbCollectionsData: DbCollectionData[] }} param0 - * @returns {DbCollectionData[]} - */ -const updateDefaultDbNames = ({ dbCollectionsData }) => { - const bucketNames = dbCollectionsData - .filter(data => data.dbName === DEFAULT_NAME) - .map(data => data.bucketInfo.bucket); - const uniqueBucketNames = _.uniq(bucketNames); - const shouldUpdateDefaultNames = _.uniq(bucketNames).length > 1; - - if (!shouldUpdateDefaultNames) { - return dbCollectionsData; - } - - return dbCollectionsData.map(data => { - if (data.dbName !== DEFAULT_NAME) { - return data; - } - - const bucketIndex = uniqueBucketNames.indexOf(data.bucketInfo.bucket); - - if (bucketIndex < 1) { - return data; - } - - return { - ...data, - dbName: data.dbName + `(${bucketIndex})`, - }; - }); -}; - -/** - * @param {any} obj - * @returns {string} - */ -const typeOf = obj => { - return {}.toString.call(obj).split(' ')[1].slice(0, -1).toLowerCase(); -}; - -module.exports = { - getDbCollectionData, - convertInferSchemaToDocuments, - mapParsedResultToMultipleSchema, - typeOf, - updateDefaultDbNames, -}; diff --git a/shared/constants.js b/shared/constants.js deleted file mode 100644 index 5ee159d..0000000 --- a/shared/constants.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * @enum {string} - */ -const AUTH_TYPE = { - usernamePassword: 'username_password', - securityCertificate: 'security_certificate', -}; - -/** - * @enum {string} - */ -const COUCHBASE_HOST_PREFIX = { - selfHosted: 'couchbase://', - cloud: 'couchbases://', -}; - -/** - * @enum {number} - */ -const COUCHBASE_ERROR_CODE = { - bucketIsEmpty: 0, - primaryIndexDoesNotExist: 4000, - n1qlMethodsAreNotSupported: 19, - userDoesNotHaveAccessToPrivilegeCluster: 13014, - parseSyntaxError: 3000, - inferMethodIsNotSupport: 16003, - collectionDoesNotExist: 12003, -}; - -/** - * @enum {string} - */ -const STATUS = { - hasError: 'hasError', -}; - -const DEFAULT_DOCUMENT_KIND = '*'; -const DEFAULT_KEY_NAME = 'KEY'; -const DEFAULT_LIMIT = 1000; -const DEFAULT_NAME = '_default'; -const DEFAULT_SCOPE = { - name: DEFAULT_NAME, - collections: [ - { - name: DEFAULT_NAME, - scopeName: DEFAULT_NAME, - }, - ], -}; - -const COUCHBASE_DEFAULT_KV_CONNECTION_PORT = 11210; - -const DISABLED_TOOLTIP = 'Something went wrong. Please, check logs for more details'; - -const FLAVOR_REGEX = /([\s\S]*?) = "?([\s\S]*?)"?$/; -const GET_META_REGEXP = /\(meta\(\)\.(.*?)\)/; -const GET_NODES_REGEXP = /"nodes":(\[.*?\])/; -const GET_PARTITION_HASH_REGEXP = /(HASH|hash)\((.*?)\)$/; - -module.exports = { - AUTH_TYPE, - COUCHBASE_ERROR_CODE, - COUCHBASE_HOST_PREFIX, - COUCHBASE_DEFAULT_KV_CONNECTION_PORT, - DEFAULT_DOCUMENT_KIND, - DEFAULT_KEY_NAME, - DEFAULT_LIMIT, - DEFAULT_NAME, - DEFAULT_SCOPE, - DISABLED_TOOLTIP, - FLAVOR_REGEX, - GET_META_REGEXP, - GET_NODES_REGEXP, - GET_PARTITION_HASH_REGEXP, - STATUS, -}; diff --git a/shared/types.d.ts b/shared/types.d.ts deleted file mode 100644 index 0ccdba2..0000000 --- a/shared/types.d.ts +++ /dev/null @@ -1,136 +0,0 @@ -import { Cluster, Scope, Bucket } from 'couchbase'; -import { STATUS } from './constants'; - -type UUID = string; - -type FilePath = string; - -type AppTarget = 'COUCHBASEV7PLUS'; - -type App = { - require: (packageName: string) => any; -}; - -type AppLogger = { - log: (logType: string, logData: { message: string }, title: string, hiddenKeys: string[]) => void; -}; - -type Pagination = { - enabled: boolean; - value: number; -}; - -type RecordSamplingType = 'relative' | 'absolute'; - -type RecordSamplingSettings = { - [key: RecordSamplingType]: { - value: number; - }; - active: RecordSamplingType; - maxValue: number; -}; - -enum AuthTypeEnum { - usernamePassword = 'username_password', - securityCertificate = 'security_certificate', -} - -type AuthType = `${AuthTypeEnum}`; - -type ConnectionInfo = { - name: string; - host: string; - authType: AuthType; - couchbase_bucket: string; - couchbase_username: string; - couchbase_password: string; - security_certificate: FilePath; - security_certificate_key: FilePath; - kv_port?: number; - target: AppTarget; - id: UUID; - appVersion: string; - tempFolder: FilePath; - pluginVersion?: string; - includeSystemCollection: boolean; - includeEmptyCollection: boolean; - pagination: Pagination; - recordSamplingSettings: RecordSamplingSettings; - queryRequestTimeout: number; - applyToInstanceQueryRequestTimeout: number; - activeProxyPool: string[]; - hiddenKeys: string[]; - options: any; -}; - -type ConnectionParams = { - url: string; - options: CouchbaseTypes.ClassicAuthenticator; -}; - -type Logger = { - error: (error: Error) => void; - info: (message: string) => void; - progress: (message: string, containerName: string, entityName: string) => void; -}; - -type Callback = (error: Error, result: any[], info?: { version?: string }, relationships?: any[]) => void; - -type NameMap = { - [key: string]: NameMap | string[]; -}; - -type BucketCollectionNamesData = { - dbName: string; - scopeName?: string; - dbCollections?: string[]; - status?: string; - disabledTooltip?: string; -}; - -type Document = { - [key: string]: any; -}; - -type DocumentKindData = { - bucketName: string; - documentList: string[]; - otherDocKinds: string[]; - documentKind: string; - status?: STATUS; -}; - -type DbCollectionData = { - dbName: string; - collectionName: string; - documentKind: string; - standardDoc: object; - collectionDocs: object; - bucketInfo: object; - emptyBucket: boolean; - indexes: object[]; - documents: Document[]; - entityLevel: object; -} - -export { - App, - AppLogger, - AppTarget, - Bucket, - BucketCollectionNamesData, - Callback, - Cluster, - ConnectionInfo, - ConnectionParams, - DbCollectionData, - Document, - DocumentKindData, - FilePath, - NameMap, - Logger, - Pagination, - RecordSamplingSettings, - Scope, - UUID, -};